1. 배경 : 병행 프로세스의 문제
1) 결정성 : 상대적인 실행 속도와 관계없이 항상 같은 결과를 도출하는지
-> 입력이 같으면 같은 결과가 나와야 한다. 병행 프로세스에서 순서가 꼬이면 다른 결과를 도출할 수도 있다.
2) 상호 배제와 동기화
- 상호 배제 : 어떤 자원에 대해 한 번에 한 프로세스만이 접근가능
- 동기화 : 프로세스의 진행이 다른 프로세스에 의존
3) 교착 : 프로세스들이 서로 다른 프로세스가 점유한 자원을 요구하며, 아무도 진행되지 못하는 상태
2. 결정성
: 프로세스들 간의 실행 순서는 독립적 또는 선행 관계이다.
: 선행 관계의 경우, 선행 그래프로 표현 가능하다.
-> 프로세스별로 순서가 있으므로 그에 따라 진행하여야 한다.
3. 상호배제
: 특정 공유 자원을 한 순간에 한 개의 프로세스만이 사용할 수 있는 경우에
: 프로세스 하나가 공유 데이터에 접근해 있는 동안, 다른 프로세스가 접근할 수 없도록 하는 것
-> 교착 상태와 기아 상태가 발생하게하는 원인이다.
4. 동기화
: 빨리 끝나는 프로세스가 늦게 끝나는 프로세스를 어떻게 기다려줄지가 문제이다.
: 비동기 프로세스의 대기 시점을 결정한다.
5. 상호배제 및 동기화의 예시
- 제한 버퍼의 생산자/소비자 문제
6. 경쟁 상태 : 여러 프로세스가 공유 데이터에 동시에 접근할 때, 접근 순서에 따라 결과가 달라지는 상황
< 경쟁 상태를 위한 병행 프로세스들의 동기화 방법 >
1) 임계 영역 : 공유 변수를 어느 한 순간에 한 프로세스만 조작할 수 있도록 한다.
2) 상호 배제 : counter를 조작하는 부분을 임계영역으로 설정하여 상호 배제한다.
'Computer Science > Operating System' 카테고리의 다른 글
이론 4) - 3 세마포 : 상호배제, 동기화 (0) | 2020.10.21 |
---|---|
이론 4) - 2 임계구역 문제 / SW, HW 해결법 (0) | 2020.10.21 |
이론 3) - 2 스케줄링 알고리즘 (0) | 2020.10.18 |
이론 3) - 1 CPU 스케줄링 (0) | 2020.10.18 |
이론 2) 쓰레드(thread) (0) | 2020.10.17 |