IT
[OS] 프로세스 동기화 (Process Synchronization))
최단비(Sweet_Rain)
2021. 6. 13. 19:26
SMALL
0. 프로세스 동기화
- 협력하는 프로세스 사이에서 실행 순서 규칙을 정하여 공유 자원의 일관성을 보장하는 것
- 경쟁 조건(Race condition)이 발생하지 않게, 프로세스들이 공유 자원을 사용할 때 특별한 규칙을 만드는 것
1. 경쟁 조건(Race condition)
- 여러 프로세스(스레드)가 공유 자원에 동시에 접근할 때, 공유 자원에 대한 접근 순서에 따라 실행 결과가 달라질 수 있는 상황
- 경쟁 상태를 방지하기 위해 병행 프로세스를 동기화해야 하며, 임계 영역(Critical section)을 이용한 상호배제를 통해 해결할 수 있음
2. 임계 영역(Critical section)
- 여러 프로세스가 자원을 공유하는 상황에서 하나의 프로세스만 접근할 수 있도록 제한해 둔 코드 영역
2-1 임계 영역 문제 해결 조건
- 상호배제 (Mutual exclution)
- 하나의 프로세스가 임계 영역에 들어가 있다면, 다른 프로세스는 들어갈 수 없어야 함
- 진행 (Progress)
- 임계 영역에 들어간 프로세스가 없는 상태에서 들어가려 하는 프로세스가 여러 개라면 어느 것이 들어갈 것인지 결정해야 함
- 한정 대기(Bounded waiting)
- 다른 프로세스의 기아를 방지하기 위해, 한번 임계구역에 들어간 프로세스는 다음번 임계구역에 들어갈 때 제한을 두어야 함
3. 교착 상태(Deadlock)
- 둘 이상의 프로세스들이 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기 상태에 빠지는 상황
3.0 교착 상태 대표 예제
0. 식사하는 철학자 문제
process - 철학자 / 자원 - 젓가락 - 원형 테이블에 철학자(process)들이 앉아 있고 철학자의 수만큼 젓가락(자원)이 철학자 사이에 하나씩 놓여 있음 - 철학자들이 식사를 하기 위해서는 양쪽에 하나씩 놓여 있는 젓가락을 둘 다 들어서 사용해야 함.
만약 모든 철학자가 배가 고파서 왼쪽 젓가락을 든다면, 모두 무한 대기 상태의 교착 상태에 빠지게 될 것임 식사하는 철학자 문제는 교착상태의 4가지 조건을 모두 만족함 |
4. 교착상태 4가지 필요 조건
- 상호배제(Mutual Exclusion)
- 한 자원에 대한 여러 프로세스는 동시 접근이 불가함
- (예) 젓가락은 한번에 한 철학자만 사용할 수 있음
- 보유 및 대기(Hold and Wait)
- 자원을 가지고 있는 상태에서 다른 프로세스가 사용하고 있는 자원의 반납을 기다리는 것
- (예) 집어든 젓가락은 계속 들은 채로 사용중인 반대쪽 젓가락을 기다림
- 비선점 (No Preemption)
- 다른 프로세스의 자원을 강제로 뺏어올 수 없음
- (예) 다른 철학자의 젓가락을 강제로 빼앗을 수 없음
- 환형 대기(Circular Wait)
- 각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있는 것
- (예) 모든 철학자들이 자신의 오른쪽에 앉은 철학자가 젓가락을 놓기를 기다림
5. 교착상태 해결 방법
- 예방 (Prevention)
- 교착상태 발생 조건은 위 네가지 경우를 모두 만족시켜야 함
- 교착상태를 해결하기 위해서는 네 가지 조건 중 하나만 해결을 하면 됨
- 교착상태 발생 조건은 위 네가지 경우를 모두 만족시켜야 함
- 회피 (Avoidance)
- 교착상태의 발생 조건을 없애기보다 발생하지 않도록 알고리즘을 적용하는 방법
- 예) 자원할당 그래프 알고리즘, 은행원 알고리즘
- 교착상태의 발생 조건을 없애기보다 발생하지 않도록 알고리즘을 적용하는 방법
- 회복 (Recovery)
- 교착상태가 발생하는 것을 아예 막지 않고, 만약 교착 상태가 발생하면 발생 이후에 문제를 해결하는 방법
- 무시 (Ignore)
- 교착상태를 해결할 때에도 문맥 교환에 의한 오버 헤드로 성능 저하가 생김
- 교착상태에 의한 성능 저하 < 해결 시 성능 저하 -> 그냥 무시하는 게 더 효과적임
- 교착상태를 해결할 때에도 문맥 교환에 의한 오버 헤드로 성능 저하가 생김
LIST