병행 프로세스
- 병행성 : 여러 개의 프로세스 또는 쓰레드가 동시 수행되는 시스템 특성
- 병행 프로세스 : 동시 수행되는 여러 개의 프로세스 또는 쓰레드
- 하나의 CPU 일 경우 인터리빙 형식으로 처리한다.
- 한 시점에 하나의 프로세스만을 처리하지만 우리는 동시에 처리하는 것처럼 보인다.
- 여러 개의 CPU 일 경우 병렬처리 방식으로 처리한다.
- 하나의 CPU 가 하나의 프로세스를 담당한다.
- 한 시점에 여러 개의 프로세스가 처리된다.
- 병행 프로세스는 프로세스 간의 관계에 따라 독립 프로세스 또는 협력 프로세스가 있다.
독립 프로세스
- 수행 중인 다른 프로세스에 영향을 주지 않음
- 데이터 및 상태를 다른 프로세스와 공유하지 않음
- 프로세스의 실행
- 결정적: 실행 결과는 입력에 의해서만 결정
- 재생 가능: 같은 입력에 대해 항상 실행 결과를 보장함
협력 프로세스
- 수행 중인 다른 프로세스와 영향을 주고받음
- 데이터 및 상태를 다른 프로세스와 공유함
- 프로세스의 실행
- 비결정적: 실행 결과는 실행 순서에 좌우됨
- 재생 불가능 : 같음 입력에 대해 항상 동일한 실행 결과를 보장하지 못함
- 발생할 수 있는 문제
- 협력 프로세스는 병행성과 관련하여 다양한 문제가 발생할 수 있다.
- 상호배제 : 두 개 이상의 프로세스가 동시에 임계 영역을 수행하지 못하도록 하는 것
- 임계영역은 여러 프로세스가 동시에 사용하면 안 되는 공유 자원을 액세스하는 프로그램 코드 영역을 의미한다.
- 문제가 발생하지 않도록 한 번에 하나의 프로세스만 이용하게 끔 보장해야 한다.
- 임계 영역의 동시 접근을 해결하기 위한 방법으로 락(Lock), 세마포어, 모니터 등이 있다.
- 동기화 : 두 개 이상의 프로세스에 대한 처리 순서를 결정 하는 것
- 통신 : 변수나 메시지를 통해서 프로세스 간 통신(IPC)을 하는 것
세마포어
- 상호배제와 동기화 문제를 해결하기 위한 도구
- 경쟁 관계에 있는 자원(프로세스)들을 문제(충돌) 없이 잘 수행하기 위함