FastCampus UpStage AI/운영체제

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

하오츠(해석:맛있다) 2024. 10. 21. 21:18

프로세스 동기화

: 실행 순서와 자원의 일관성을 보장해야한다.

 

실행 순서 제어 

: 프로세스를 올바른 순서로 실행하기

  -> 1,2번 프로세스가 있을때, 1번이 반드시 실행되어야 2번이 실행될 수 있는것

 

상호배제

: 동시에 접근해서 안되는 자원에 하나만 접근하기

: 공유 자원, 임계 구역

 

*공유 자원

: 파일, 입출력 장치, 전역 변수...

 

*임계 구역

: 공유자원에 접근하는 코드

 

*race condition 

: 임계구역을 동시에 실행 자원의 일관성이 깨지는 현상

 

 

교착상태

: 서로의 자원을 무한히 기다리는 상태

 

조건

- 상호 배제 : 한 프로세스가 임계구역에 진입했다면 다른 프로세스는 기다려야 함

- 점유와대기 : 자원을 할당 받고 다른 자원 할당을 대기

- 비선점 : 강제로 자원을 빼앗을 수 없는 상태

- 원형대기 : 자원을 원형으로 대기하는 상태

 

->  뮤텍스 락(mutex lock), 세마포(semaphore : 락에 카운트 부여)

 

교착상태 해결 방법

- 예방

: 네가지 조건중 하나를 없애는 방법, 실현 불가능

 

- 점유와 대기 없애기

: 아예 할당하지 않기, 자원 활용률 저하

 

- 비선점 조건 없애기

 : 선점하여 사용가능한 자원은 효과적(cpu), 모든자원에 해당하는 건 아님(프린터)

 

- 원형대기 조건 없애기

: 자원에 번호 매기기(수동으로 번호를 매기는 것은 쉽지 않음), 오름차순으로 자원 할당

 

- 회피 

 : 교착상태는 무분별하게 할당하지 않도록 자원을 할당 => 회피