반응형
SMALL

학습목표

1. 세마포어를 이용하여 생산자/소비자 문제를 해결할 수 있다.

2. 세마포어를 이용하여 판독기/기록기 문제를 해결할 수 있다.

3. 프로세스 사이의 통신을 위한 논리적 구조에 대해 설명할 수 있다.

4.3 프로세스의 상호협력

: 병행 프로세스들의 상호협력 

  - 공통작업을 수행하기 위해 서로 협동하는 경우

  - 예 : 생산자/ 소비자문제, 판독기/기록기 문제

 

4.3.1 생산자/ 소비자 producers and consumers 문제

- 유한 버퍼 문제라고도 함

- 고정된 크기를 가진 버퍼를 생산자와 소비자 사이에 둠

- 버퍼가 비어 있다면 소비자가 기다리게 되고

   버퍼가 가득차면 생산자가 기다리게 됨

- 상호배제와 동기화가 필요

 

 

* 세마 포어 이용 - mutex, empty, full

- 세마포어 : 정수형 공용 변수

 

 

 

 

 

4.3.2 판독기/기록기 문제

데이터 객체 data object (파일이나 레코드 같은 것)는 여러 병행 프로세스 간에 공유될 수 있다.

이런 프로세스 중에 일부는 다른 것이 공유객체의 내용을 읽기를 원할 때,

공유객체의 갱신(읽거나 쓰기)을 원할 수 있다. 읽고자 하는 프로세스는 판독기 reader,

쓰고자 하는  프로세스는 기록기 writer라고 구분한다.

 

 

> 우선순위에 따른 문제의 변형

(1) 판독기/ 기록기 문제 

- 여러 개의 판독기가 동시에 공유 데이터 객체에 접근하는 것은 문제가 없음

- 기록기가 판독기나 다른 기록기와 동시에 공유 데이터 객체에 접근하는 경우 배타적 접근을 해야 함

(2) 제1 판독기/ 기록기 문제 (판독기 우선)

- 기록기가 이미 공유객체의 사용을 허가되지 않았다면  판독기는 대기 하지 안흠

- 기록기의 기아상태 유발 가능

 

(3) 제 2 판독기/ 기록기 문제 (기록기 우선)

- 일단 기록기가 준비되었다면 기록을 가능한 한 빨리 수행할 수 있도록 함

- 판독기의 기아상태 유발 가능

 

 

4.4 프로세스 간의 통신

프로세스 간의 통신 (IPC, Interprocess Communication)

> 병행 프로세스 사이의 통신을 위한 방법

 - 공유기억장치 shared memory 기법

 - 메시지 시스템 message system 기법

 

> 두 방법은 상호 배타적이 아님

 - 단일 운영체제 내에서 동시에 사용 가능

 

4.4.1 공유기억장치 기법

- 프로세스 간에 공유변수를 두어 프로세스가 이를 이용하여 정보 교환

- 고속의 통신을 할 수 있음

- 통신기능 제공의 책은은 응용 프로그래머에게 있음

- 운영체제는 공유 기억장소만을 제공

 

- 예 : 유한버퍼

 

 

 

반응형
LIST

+ Recent posts