운영체제

프로세스 자원 동기화 전략

iksadnorth 2023. 7. 23. 16:18

👣 공유 자원

프로세스, 스레드가 함께 접근 가능한 자원.
2개 이상의 프로세스가 동시에 읽거나 쓰는 상황을 경쟁 상태(race condition)라고 한다.

👣 임계 자원

프로세스, 스레드의 접근 순서로 결과가 달라질 수 있는 코드 영역.
이를 해결하기 위한 방법은 뮤테그, 세마포어, 모니터 3가지가 있다.
위 방법들은 모두 Lock이라는 메커니즘을 이용하고 있다.

👣 뮤텍스

특정 공유 자원을 1 개의 프로세스가 점유하고 있다면 Lock을 설정해
점유하고 있는 와중엔 다른 프로세스가 접근하지 못하도록 한다.

👣 세마포어

뮤텍스가 1개의 프로세스 점유만 허용했다면 
세마포어는 n개의 프로세스 점유를 허용한다. (단, n >= 1)
구성 요소는 '정수 값', 'wait 함수', 'signal 함수'로 이뤄져 있고
'wait 함수'는 '정수 값'을 0 이상이면 -1하고 작업을 수행. 0 이라면 Block 상태로 대기.
'signal함수'는 '정수 값'을 +1하고 Block 상태의 스레드를 깨운다.

👣 바이너리 세마포어

세마포어 정수 값이 0, 1 값만 가지는 세마포어.
뮤텍스와 비슷한 기능을 수행한다고 보면 된다.

👣 모니터

공유 자원을 숨기고 해당 점근에 대한 인터페이스만 제공.
내부적으론 모니터 Queue가 존재해 작업요청이 들어오면 
작업을 큐 내부에 추가하고 FIFO로 작업을 처리함.

'운영체제' 카테고리의 다른 글

CPU 스케줄링 알고리즘  (0) 2023.07.23
IPC - Inter Process Communication  (0) 2023.07.23
은행원 알고리즘  (0) 2023.07.23
C언어 컴파일 과정  (0) 2023.07.23
프로세스  (0) 2023.07.23