CS/OS
병행 프로세스
Leeseojune53
2023. 6. 19. 22:45
병행프로세스란?
병행프로세스 개념
- 프로세스들이 독립적으로 작업을 수행하거나 또는 다른 프로세스와 협력하며 특정 기능 수행
- 상호작용 필요 - 제한된 자원을 공유하지 위해서는 프로세스는 서로 동기화되어야 함
- 비동기 병행 프로세스 : (비동기) 다른 프로세스들의 진행상태를 전혀 모르고 각기 독립적으로 수행하면서 (병행) 다수의 프로세스들이 동시에 존재하며 공유자원에 접근할 수 있는 프로세스
- -> 프로세스들이 동시에 자원 및 데이터에 접근할 수 있으므로 동기화 알고리즘이 필요
병행프로세스 과제
- 공유자원을 서로 베타적으로 사용
- 병행프로세스 사이에는 협력 또는 동기화가 이루어져야 한다.
- 두 프로세스 사이에는 데이터 교환을 위한 통신이 이루어져야 한다.
- 프로세스는 동시에 실행되는 프로세스의 속도와 관계없이 일정한 실행 결과가 보장되어야 한다.
- 교착상태를 해결하고 병행프로세스의 병행능력을 극대화해야 한다.
- 병행프로세스를 수행하는 과정에서 상호배제를 보장해 주어야한다.
병행 프로세스 표현
선행 그래프
비 순환적이어야 한다. -> 순환 선행 그래프는 모순 발생
- 두 프로세스 간 존재하는 선행관계를 규칙적으로 표현한 것
- 선행그래프를 이용하여 병행성을 확인할 수 있다.
언어적 표현과 병행 문장
- fork와 join구조
- fork : 단일 연산을 2개의 독립적인 연산으로 분할
출처 : IT CookBook, 운영체제 - join : 2개의 병행 연산을 하나로 결합하는 방법 제공
출처 : IT CookBook, 운영체제 - 병행 문장
출처 : IT CookBook, 운영체제 - 병렬 프로세스를 나타내는 고급언어 구조 (예 - 다익스트라가 제안한 parbegin/parend 구조)
