컴퓨터 과학

뮤텍스 & 세마포어(쓰레드 & 프로세스)

Sh.TK 2017. 12. 15. 15:48

http://developerandwoodworker.com/뮤텍스-세마포어-멀티쓰레드/



운영체제가 바라보는 일의 단위 프로세스


프로세스가 바라보는 일의 단위 쓰레드




쓰레드: 경량화된 프로세스, 속도(생산+처리)가 빠르다. 메모리에서 데이터와 힙 부분을 공유한다. 스택 부분은 각 각의 쓰레드에서 독립적으로 존재. 디버깅이 불리하다.


프로세스: 스택, 데이터, 힙이 독립적으로 구성되어있다. 그러다보니 쓰레드보다 속도(생산+처리)가 느리다. 디버깅은 유리하다.




뮤텍스: 뮤텍스는 값이 1인 세마포어로 0인 경우 해당 resource에 접근이 불가능하고 1인경우 접근이 가능하도록 하여, 다중 프로그래밍 환경에서 resource를 보호한다.


세마포어: 세마포어는 뮤텍스의 확장개념으로 보면되는데, 접근 가능한 자원을 1개 이상으로 설정할 수 있다. 예를 들어 4라면 4개의 쓰레드가 접근할 수 있을 것 이다.



CPU는 하나의 연산밖에 하지 못한다. 그래서 예를 들어 아래와 같은 코드를 작성하면


int x = 10;

int y = 20;


y += x;


x=10, y=20이 메모리에 들어가고 덧셈을 위해 y=20이 임시메모리에 저장되고 x변수 10을 연산한다.