병행 프로세스란?
- 하나의 프로세서는 한 번에 하나의 프로세스만 실행할 수 있다.
- 그러나, 운영체제가 프로세서를 빠르게 전환하여, 마치 프로세스를 동시에 여러 개 실행하는 것처럼 보이게 하는 것을 병행 프로세스라고 한다.
병행 프로세스를 구현하기 위해 고려해야 할 사항
- 공유 자원은 상호 배타적으로 사용해야 한다.
- 병행 프로세스 간에는 동기화가 되어야 한다. (순서가 정해져있어야 한다).
- 두 프로세스 사이에서는 데이터 교환이 가능하도록 통신이 되어야 한다.
- 항상 일정한 실행 결과를 보장하도록 결정성(determinacy)을 확보해야한다.
- 교착 상태를 해결해야 한다.
- 상호 배제를 보장해야 한다.
임계 영역이란?
- 임계 자원: 공유 자원으로 둘 이상의 프로세스들이 동시에 공유할 수 없다.
- 임계 영역: 프로그램에서 임계 자원을 이용하는 부분 또는 상태
- 프로세스가 공유 자원을 사용하고 있을 때, 이 프로세스는 임계 영역 내에 있다.
- 임계 영역 내에서는 반드시 빠른 속도로 수행되어야 한다.
- 프로세스는 임계 영역 내에서 보류(block)되어서는 안 되며, 무한 루프에 빠지지 않아야 한다.
- 상호 배제: 한 프로세스가 임계 영역 내에 있을 때 다른 프로세스의 임계 영역 진입을 허용하지 않는다.
- 세마포어(Semaphore): 열쇠 의미의 변수로, 상호 배제 또는 동기화 도구로 사용된다.
세마포어(Semaphore)란?
- 다익스트라(Dijkstra)에 의해 제안되어, 상호 배제를 해결하기 위한 도구이다.
- 플래그로 사용된다.