본문 바로가기
IT 공부/운영체제(완)

운영체제 4 프로세스 동기화

by 랜턴K 2025. 2. 27.
반응형

동기화란? 

실행 순서 제어 ; 프로세스를 올바른 순서대로 실행하기  

상호 배제 ; 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근하게 하기 

 

동시에 접근해서는 안되는 자원? 

공유 자원 ; 전역변수가 될 수도, 파일, 입출력장치, 보조기억장치가 될 수도

예시) 잔액 / 총합 등 특정 프로세스가 완료되지 않았는데 

          다른 프로세스가 접근하면 값이 어긋난다 

임계 구역 ; 동시에 실행하면, 문제가 발생하는 자원에 접근하는 코드 영역 

레이스컨디션 ; 동시 다발적으로 임계구역의 코드를 실행하여 문제가 발생하는 경우 

  -> 저급언어를 실행하는 과정에서 문맥교환이 일어나는 경우 깨질 수 있다 

 

상호배제 동기화 3원칙

- 상호배제 ; 임계구역에 진입했을 때 다른 프로세스가 들어올 수 없다

- 진행 ; 임계구역에 진입한 프로세스가 없을 경우, 임계구역에 진입하고자하는 프로 

- 유한대기 ; 임계구역에 진입하고자하는 프로세스는 언젠가 진입해야 한다 

 

동기화 기법

- 뮤텐스 락 ; Mutual Exclusion Lock

- 세마포  

- 모니터

 

 뮤텐스 락 

- 자물쇠 역할의 프로세스가 공유하는 전역변수 lock

- 임계구역을 잠그는 역할 acquire 함수

- 임계구역을 해제하는 역할 release 함수

- 바쁜 대기 ; 대기중인 프로세스가 acquire 함수를 계속 호출해서 Lock 상태를 확인해야 한다

 

세마포 ; 여러 자원을 공유하는 형태 

- 임계구역 진입할 수 있는 프로세스 갯수 변수 S

- 임계구역에 들어가도 좋은지 기다려야하는지 알려주는 wait 함수

- 임계구역 앞에서 기다리는 프로세스에게 가도 좋다고 신호를 주는 signal 함수 

- 대기 중인 프로세스는 그럼 wait함수를 계속 호출하며 바쁜 대기 상태?

- S<0일때, wait함수는 PCB 대기큐에 해당 프로세스를 sleep하여 적재 

- S++ 됬을 때, signal 함수가 wake하여 실행 

 

모니터 ; 

접근하고자 하는 프로세스를 공유자원 큐에 삽입 

삽입된 순서대로 공유 자원을 이용하도록 함 -> 따라서, 공유자원 사용의 상호배제를 구현가능 

- 조건 변수 ; 프로세스나 스레드의 실행 순서를 제어

 -> wait 연산을 수행하면, wait이 호출한 프로세스가 조건변수에 대한 대기 큐로 삽입

 -> 나중에 signal 연산 수행시, 조건변수 대기 큐 프로세스가 실행

반응형

'IT 공부 > 운영체제(완)' 카테고리의 다른 글

운영체제 6 가상 메모리  (0) 2025.03.06
운영체제 5 교착 상태  (0) 2025.03.04
운영체제 3 CPU 스케줄링  (0) 2025.02.26
운영체제 2 프로세스  (0) 2025.02.25
운영체제 1  (0) 2025.02.21