개발지식

세마포어와 뮤택스

dodo1054 2022. 7. 1. 15:41
반응형

1. 임계구역

 - 여러 프로세스가 데이터를 공유하며 수행될 때, 각 프로세스에서 공유 데이터에 접근하는 프로그램 코드 부분

 

2. 세마포어 (Semaphore) ?

 - 공유자원에 여러 프로세스가 접근하는 것을 막는 것

 - 세마포어 함수는 정수 값을 인자로 갖는 객체

 - 정수 값이 양수인 경우 사용중인 쓰레드의 개수(접근할 수 있는 프로세스 개수), 

    정수 값이 음수인 경우 대기중인 쓰레드의 개수

 - 프로세스 마다 접근할 경우 -1, 작업 완료 후 세마 포어 정수 값을 +1 시킴

 - 만약 정수 값이 0보다 작거나 같을 경우 락을 실행

 

3. 뮤택스(Mutext) ?

  - 공유자원에 여러 프로세스가 접근하는 것을 막는 것

  - Locking 메커니즘

  - 1개의 스레드만이 공유 자원에 접근할 수 있음

  - 해당 자원을 사용할 프로세스가 임계영역에 접근하기 위해 먼저 자원에 대한 Lock 을 걸고,

     작업이 완료된 후 unLock 을 하여 다른 프로세스가 자원에 접근할 수 있도록 함

 

반응형