1. 프로세스 실행 형태의 구분
※ 운영체제에서 실행되는 프로세스 형태는, 크게 다음 둘 중의 하나 임
ㅇ 독립적 프로세스 실행
- 단일처리 시스템에서, 각각 독립적으로, 여러 프로세스들이 병행 수행되는 것
. 이 경우, 실행중인 각 프로세스는 타 프로세스들에 영향을 주거나 받지 않음
. 즉, 타 프로세스들과 데이터를 공유하지 않음
- 단, 단일 프로세스 내에서 병행성 가능
. 병행문
. 우선순위 그래프(선행 그래프)
. Fork/Join 구조
ㅇ 협력적 프로세스 실행
- 다중처리 시스템에서, 프로세스들 간에, 서로 실행에 영향을 주거나 받는 경우 임
- 데이터 공유 방식 / 공유 데이터 접근 방식 에 의함
. 논리 주소 공간을 통해 공유 (스레드 등)
. 공유 변수, 공유 파일 통해 공유
. 메세지 전달을 통해 데이터를 공유 (프로세스간 통신,IPC)
- 협력적 수행 방식의 구분
. 비동기적 수행 : 프로세스들 간에 정교한 협력을 통해서 만 어떤 기능을 수행
. 동기적 수행 : 프로세스 동기화 (Process Synchronization)
. 여러 독립 프로세스 간에 처리 순서를 결정하는 것
. 즉, 여러 프로세스 간 협력시, 누가 먼저 작업할 지, 언제 끝날 지 등을 알려주는 것
. 또한, 공유 데이터에 대한 올바른 공유/접근/조작할 수 있도록 해야 함
2. 프로세스 간의 협력 이유
ㅇ 상호 정보 공유
ㅇ 계산 속도 향상
ㅇ 모듈적 구성 강화
ㅇ 편의성 증대
- 例) 한 사용자가 편집,인쇄,탐색 등 여러 태스크를 병렬로 수행
3. 병행성 / 동시성 (Concurrency), 병행 프로세스 (Concurrent Process)
ㅇ 필요한 모든 프로세스들을 동시 실행, 상호 작용이 가능토록 지원하는 것
- 다중처리 시스템, 분산처리 시스템 등의 필수 요소
. 프로세스 데이터 및 상태를 다른 프로세스와 공유할 수 있게 하는 등
※ 병렬성, 병행성(동시성) 비교
- 병렬성 : 2 이상의 작업을 동시 수행
. 여러 프로세스(스레드)가 동시 진행
- 병행성 : 2 이상의 작업을 동시 지원
. 여러 프로세스(스레드)가 진행 가능
* 만일,
. 단일 프로세서가, 시분할 처리로, 여러 프로세스들을 동시 수행하는 것 처럼 할 수 있지만,
.. 이는, 병행하게 실행하지만, 병렬로 실행하는 것은 아님
. 여러 프로세서가, 각각 분담 처리함으로써, 동시에 병렬로 수행하면,
.. 이는, 병행성과 병렬성을 동시 만족하는 것임
4. 병행성 문제
ㅇ 한정된 자원(CPU,메모리,디스크,I/O 등)의 동시 사용 상의 문제들
- (주로, 사용 순서의 문제)
ㅇ 구분
- 공유 자원(프린터,통신망 등)의 `배타적 사용 문제` (한 순간에 한 프로세스 만 사용)
- 하나의 기능(공유 데이터 조작)을 함께 수행함에 따른 `동기화 (Synchronization) 문제`
- 자료 교환을 위한 메세지 전달 방식 상의 `통신 (Communication) 문제`
- `교착상태 (Deadlock) 문제`
- 실행순서와 관계없이 항상 같은 결과를 얻어야하는 `결정성 (Determinacy) 문제`
5. 병행성 수준
ㅇ 프로그램 실행 상에서, 동시성에 대한 4가지 다른 수준
- 명령어 수준 (2 이상의 기계 명령어의 동시 실행)
- 문장 수준 (2 이상의 문장을 동시 실행)
- 단위 수준 (2 이상의 부프로그램 단위를 동시 실행)
- 프로그램 수준 (2 이상의 프로그램을 동시 실행
6. 임계 구역, 상호 배제
ㅇ 임계 구역 (Critical Section)
- 어떤 프로세스가 공유 자원에 접근하고 있는 동안 그 프로세스는 임계구역에 있다고 함
ㅇ 상호 배제 (Mutual Exclusion)
- 동시에 여러 프로세스들이 하나의 공유 자원을 사용할 수 없도록 하는 것
. 한 프로세스가 임계구역에서 수행중일 때 타 프로세스가 그 공유 자원을 사용 못하게 하는 것