반응형
SMALL
병행 프로세스란?
1. 병행 프로세스 개념
- 프로세스들이 독립적으로 작업을 수행하거나 다른 프로세스와 협력하며 특정 기능 수행.
- 상호작용 필요 (제한된 자원을 공유하기 위해 프로세스는 서로 동기화되어야 함)
- 비동기 병행 프로세스(비동기) : 다른 프로세스들의 진행상태를 전혀 모르고 독립적으로 수행하면서 다수의 프로세스들이 동시에 존재하며 공유자원에 접근할 수 있는 프로세스. => 동기화 알고리즘 필요
2. 병행 프로세스 과제
- 공유자원을 서로 배타적으로 사용
- 병행 프로세스 사이에는 협력이나 동기화가 이루어져야 한다.
- 두 프로세스 사이에는 데이터 교환을 위한 통신이 이루어져야 한다.
- 프로세스는 동시에 실행되는 프로세스의 속도와 관계없이 일정한 실행 결과가 보장되어야 한다.
- 교착상태를 해결하고 병행 프로세스의 병행 능력을 극대화해야 한다.
- 병행 프로세스를 수행하는 과정에서 상호 배제를 보장해 주어야 한다.
병행 프로세스 표현
선행 그래프
비순환적 이어야 한다. => 순환 선행 그래프는 모순 발생
- 두 프로세스 간 존재하는 선행 관계를 규칙적으로 표현한 것
- 선행그래프를 이용하여 병행성을 확인할 수 있다.
상호 배제와 동기화
상호 배제(Mutual Exclusion)
특정 공유자원을 한 순간에 한 개의 프로세스만 사용할 수 있는 경우 프로세스 하나가 데이터에 접근하는 동안 다른 프로세스가 해당 데이터를 접근할 수 없게 하는 것.
동기화(Synchronous)
- 공유자원을 동시에 사용하지 못하게 프로세스들이 상호 협력하면서 수행하는 것
- 순차적 재사용이 가능한 자원의 공유를 위해 질서 있는 실행을 보장하고 데이터 일관성 유지해 줌
- 경쟁상태(Race Condition) - 서로 다른 프로세스들이 동일한 자료에 접근, 자료를 조작하여 그 결과가 접근 순서에 따라 달라지는 상황 => 상호 배제가 안됨 => 동기화 필요
프로세스 동기화
1) 임계 영역(Critical Section, CS)
동시에 접근해서는 안 되는 공유자원을 사용하고 있는 코드 블록
2) 임계영역 문제의 해결
1. 상 호재베 Method 사용 (Mutual Exclusion Primitives, 상호 배제 기본 연산)
- 진입 영역 : 임계 영역 진입 전 검사, CS에 집입 전 다른 프로세스가 CS안에 있는지 검사
- 출구 영역 : 임계 영역 후처리 과정, CS를 벗어날 때 벗어났음을 알림
2. 임계 영역을 해결하기 위한 3가지 요구 조건
ㄱ: 상호 배제(Mutual Exclusion)
- 임계 영역에 프로세스가 있으면, 다른 프로세스의 진입 금지
ㄴ: 진행(Progress)
- 임계 영역(CS) 안에 있는 프로세스 외에는 다른 프로세스가 CS에 진입하는 것을 방해하면 안 됨
- 임계 영역 안에 프로세스가 없는 경우 다음 들어갈 프로세스 선정이 무한정 지연되서는 안 됨
ㄷ: 한정된 대기(Bounded Waiting)
- 프로세스의 CS진입은 유한 시간 내에 허용되어야 함.
3. 임계 영역의 보호 시 고려할 사항
- 교착상태가 발생해서는 안됨(회피 필요)
- 인터럽트가 발생하지 않도록 해야 함
- 무한루프가 발생하지 않도록 해야 함
반응형
'운영체제' 카테고리의 다른 글
[OS] 동기화(세마포어) (0) | 2022.08.16 |
---|---|
[OS] 교착상태(Deadlock) (0) | 2022.08.11 |
[OS] 운영체제 기본 (0) | 2022.08.10 |
댓글