병행 프로세스
동시에 실행되는 여러 개의 프로세스 또는 쓰레드
CPU 개수에 따른 병행 프로세스의 실행 형태
- 한 개의 CPU
- 각 프로세스가 짧은 시간 간격으로 번갈아 실행되는 인터리빙 형식으로 진행
- 여러 개의 CPU
- 각 프로세스가 각 CPU에서 온전히 실행되는 병행 처리 형식으로 진행
메모리 구조에 따른 병행 프로세스 실행 형태
- 강결합 멀티프로세서 시스템
- 여러 CPU 간에 하나의 기억장치를 공유하며 하나의 운영체제가 모든 CPU와 시스템 하드웨어를 제어 - 공유 메모리 구조
- 약결합 멀티프로세서 시스템
- 2개 이상의 독립된 컴퓨터 시스템을 통신선을 통하여 연결 - 분산 메모리 구조
- 각 시스템은 자신의 운영체제와 기억장치를 가지고 있으며 독립적으로 운영되고 필요할 때만 통신을 한다.
병행성 문제
- 병행 프로세스들이 상호작용 하는 경우 발생
- 공유 자원 점유 문제
- 동기화 문제
- 통신 문제
단일 프로세스 내의 병행성
- 우선순위 그래프
- 각 정점이 개개의 문장에 대응하는 사이클이 없는 방향 그래프
- Fork/Join 구조
fork
: 프로그램 내에서 2개의 병행 수행을 만들어 낸다.join
: 병행하는 n개의 연산을 하나로 재결합 시키는 방법을 제공한다.
- 병행문
- 1개의 프로세스가 여러 가닥의 병렬 프로세스로 분할되었다가 다시 하나로 결합
프로세스 간의 병행성
- 비동기 병행 프로세스
- 어떤 프로세스가 실행 중인 다른 프로세스에 영향을 주는 유기적 프로세스
동기화와 임계영역
경쟁 상태 (Race Condition)
- 여러 프로세스가 동시에 공유 데이터로 접근 할 때 순서에 따라 결과가 달라지는 현상. 여러 주체가 하나의 데이터에 접근하려 할 때 서로 경쟁하는 상태를 의미한다.
임계영역
- 2개 이상의 프로세스가 동시에 액세스하면 안 되는 공유자원을 액세스하는 코드 영역
임계영역 문제 해결을 위한 요구조건
- 상호배제
- 한 프로세스가 임계영역에서 실행 중일 때 다른 어떤 프로세스도 임계영역에서 실행될 수 없음
- 진행
- 임계영역에서 실행 중인 프로세스가 없고 여러 프로세스가 임계영역에 진입하고자 할 때 그 중에서 적절히 한 프로세스를 결정해야 하며 이 결정은 무한정 미룰 수 없음
- 제한된 대기
- 한 프로세스가 임계영역 진입 요청을 한 후 수락될 때까지 다른 프로세스가 임계영역 진입을 허가 받는 횟수는 제한이 있어야 함
상호 배제 해결 방법
- SW solutions
- Dekker’s algorithm (Peterson’s algorithm)
- Dijkstra’s algorithm, Knuth’s algorithm, Eisenberg and McGuire’s algorithm, Lamport’salgorithm
- HW solution
- TestAndSet(TAS) instruction
- OS supported SW solution
- Spinlock
- Semaphore
- Eventcount/sequencer
- Language-Level solution
- Monitor