운영체제 8판 6~7장 연습문제 답
- 최초 등록일
- 2016.03.25
- 최종 저작일
- 2015.04
- 8페이지/ 한컴오피스
- 가격 1,500원
소개글
6장 연습문제
6.1, 6.3, 6.14
7장 연습문제
7.4, 7.10, 7.13
목차
없음
본문내용
문제 6.1
두 개의 프로세스를 위한 임계 영역 문제에 대한 최초의 올바른 소프트웨어 해결 방안을 제시한 사람은 Dekker였다. 두 개의 프로세스 P0와 P1은 다음 변수들을 공유한다.
boolean flag[2]; /* 초기 값은 FALSE */
int turn;프로세스 Pi(i==0 또는 1)와 Pj(j==1 또는 0)의 구조는 그림 6.25와 같다. 이 알고리즘이 임계 영역 문제의 세 가지 조건을 모두 충족시킴을 증명하시오.
do {
flag[i] = TRUE;
while(flag[j]) {
flag[i] = FALSE;
while(turn == j)
; // do nothing
flag[i] = TRUE;
<중 략>
풀이
Derker의 알고르짐은 두 개의 변수에 의해 이루어진다. 첫 번째가 임계영역에 프로세스가 들어가 있는지를 알려주는 flag[]이고, 두 번째가 임계영역에 들어갈 프로세스의 순서를 알려주는 turn이다. 두 개의 프로세스가 동시에 임게영역에 들어가려면 flag[i]=flag[j]=turn, turn =i =j 이어야 한다. 하지만 flag[i]=flag[j]=turn는 어느 한 수간에 이루어질 수 있지만 turn의 수정은 임게영역을 빠져 나올때만 수정이 가능하므로 turn이 동시에 I와 j의 값을 가질수 없다. 따라서 상호배제 조건을 만족한다. Pi가 임계영역에 들어갈 수 없는 상황을 생각해보면 flag[j] = turn이고 turn=j라면 Pi는 임계영역에 들어갈 수 없게 된다. 이때 Pi는 Pj의 진행을 방해하지 않기위해 자신의 요구를 포기하고(flag[i] = false), Pi가 임계영역에서의 수행을 마치기를 기다리게 된다. 그런다음 Pj가 수행을 마치면 (turn =i) Pi는 임계영역에 들어가게 된다. ᄄᆞ라서 Pi,와 Pj는 서로의 진행을 막지 않도록 되어있으며 이미 다른 프로세스가 임계영역 안에 있더라도 그 프로세스가 작업을 마치면 바로 임계영역에 들어갈 수 있게 되어 진행과 한계대기조건을 만족한다.
참고 자료
없음