본문 바로가기
기술면접

[기술면접] 프로세스와 스레드, 세마포어와 뮤텍스 차이

by 붕어사랑 티스토리 2021. 4. 17.
반응형

프로세스

  • 컴퓨터내에서 연속적으로 실행되고 있는 컴퓨터 프로그램 의미
  • 운영체제로부터 시스템 자원을 할당받는다

스레드

  • 프로세스내에서 실행되는 여러 흐름들의 단위
  • 영어 의미로 실. 그냥 간단히 비유하면 실 하나가 갑자기 여러갈래로 나뉘어짐
  • 나뉘어진 실마다 일을 따로 한다고 생각하면 됨

 

프로세스는 운영체제에서 나오는 실가닥이라고 생각하고 스레드는 프로세스에서 나오는 실가닥이라 생각하면 된다.

 

세마포어

프로세스간 공유된 자원의 동시접근을 막아주는 기술

 

뮤텍스

스레드간 공유된 자원의 동시접근을 막아주는 기술

 

 

크리티컬 섹션

공유자원을 접근하는 코드영역

 

 

 

멀티프로세스보다 멀티스레드를 쓰는 이유?

이 말의 뜻은 여러 프로그램을 만들어 여러작업을 수행하는것보다 하나의 프로그램에서 여러개의 스레드를 생성시켜 작업하는게 더 좋다는 얘기이다.

 

멀티프로세스대비 멀티 스레드의 장점

  • 자원 효율성이 증가한다. 프로세스의 경우 자원을 할당받는 시스템콜이 줄어들어 자원을 효율적으로 관리한다.
  • context switching 이 없어 오버헤드가 적다
  • context switching이란 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태를 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다. 이 과정에서 캐시메모리와 RAM 초기화까지 일어나 오버헤드가 크다.
  • 스레드는 프로세스 내 메모리를 공유하기 때문에 스레드간 데이터를 주고받는것이 훨씬 간편하다.
  • 멀티프로세스는 IPC(프로세스간 통신)을 이용하는데 이는 스레드간 통신보다 비용이 많이들어 효율적이지 못하다

 

 

데드락 이란?

프로세스가 자원을 얻지 못해 다음단계로 넘어가지 못하는 현상

 

프로세스 A가 a라는 자원을 lock 한 상태

프로세스 B가 b라는 자원을 lock 한 상태

 

프로세스 A가 프로세스 B에게 b의 자원을 요구하고

프로세스 B는 프로세스 A에게 a의 자원을 요구한다 하자

 

상대방이 원하는건 lock한상태로 건네주지 않고, 스스로가 원하는건 건네받지 못해 영원히 waiting만 하게 된다.

 

 

 

반응형

댓글