운영체제

4주차 과제

김시윤 2018. 9. 23. 13:32

 1) 다중 프로그래밍 운영체제에서는 한 순간에 여러 프로세스가 공유하는 데이터와 자원에 대하여 한 순간에는 반드시 프로세스 하나만 자원이나 데이터를 사용하도록 하여야 한다. 임계영역과 임계자원에 대하여 설명하세요

임계자원과 임계영역의 정의

임계자원(Critical Resource): 두 프로세스가 동시에 사용할 수 없는 공유 자원

임계영역(Critical Section): 임계자원을 사용하는 프로그램의 일부분

 

임계영역의 조건

1)    상호배제 어떤 프로세스가 임계영역에서 작업 중, 다른 프로세스 임계영역으로 진입 불가

2)    진행임계영역을 실행 중인 프로세스가 없는 상태에서 임계영역을 진입하려는 프로세스가 있다면 임계영역 진입을 할 수 있게 해야 함.

3)    한정 대기 다른 프로세스가 임계영역을 무한정 기다리는 상황을 방지하기 위해 임계영역에 한 번 들어갔던 프로세스는 다음에 임계영역에 다시 들어갈 때 제한 함

 

 

2) 경쟁상태(race condition)에 대하여 설명하고 이를 피할 수 있는 방법인 상호배제에 대하여 설명하세요.

경쟁상태(Race Condition)

1)    접근 순서에 따라 실행 결과 달라지는 상황 발생

2)    공유데이터에 마지막으로 남는 데이터의 결과 보장할 수 없는 상황

 

초기 상호배제 방법

1.     Disabling Interrupts

1)    임계영역 진입하며 인터럽트 기능 해지

2)    임계영역 나오면서 인터럽트 기능을 다시 가능하게 함

3)    문제점: 인터럽트 해지 후 복구 안할 시 시스템 자체 서비스 못하게 됌

 

2.     Lock 변수

1)    임계영역 진입하며 Lock = 1 설정

2)    임계영역 나오면서 Lock = 0 설정

3)    문제점: Lock 변수 설정하는 중 다른 프로세스에게 CPU가 양보되면

2개 프로세스가 Lock 변수 수정하는 상황도 가능하며 동시에 2개 프로세스가 임계영역에 진입하게 됌

 

3.     Turn 변수

1)    0번 프로세스는 대기하다가 turn = 0 되면 임계영역 진입

2)    0번 프로세스는 임계영역 나오며 turn = 1로 설정

3)    문제점: 항상 0 프로세스와 1 프로세스가 번갈아 임계영역에 진입하여야 함


 

 3) 상호배제를 위한 방법은 다양하면서 동시에 임계영역에 들어가 경쟁상태에 빠질 수 있는 한계를 모두 가지고 있다. 우선순위 역전 현상과 깨우기 분실 현상에 대하여 설명하세요. 세마포의 값이 음수일 때 그 의미는 무엇인가요 ?

우선순위 역전 현상(Priority Inversiton Problem)

è  바쁜 대기(Busy Waiting)를 기반으로 상호배제 하여 문제 해결

è  ) 대통령, 국무총리, 시민 한 명이 같은 KTX에 타고 있다.

1)    대통령과 시민이 갑자기 대변이 마려웠다

2)    화장실은 1칸 밖에 없고 열쇠도 1개밖에 없다.

3)    이 열쇠는 다른 이름으로 세마포어라고 부른고, 열쇠관리는 화장실 관리인인 커널의 스케줄러가 한다.

4)    시민은 비록 우선순위가 가장 낮지만 재빠르기 때문에 대통령과 국무총리가 화장실을 가고 싶어하기 전에 관리자에게 먼저 열쇠를 달라한 후 화장실에서 일을 보기 시작했다.

5)    대통령이 관리자에게 급하다며 열쇠를 달라고 한다.

6)    그러나 관리자는 열쇠가 없다며 기다리라고 한다.

7)    그래서 대통령은 열쇠가 다시 나올 때까지 기다려야 한다, 즉 대기를 타기 시작한다.

8)    갑자기 국무총리가 일이 생겼다며 커널에게 CPU를 부여해 달라고 한다.

9)    같은 공유자원인 화장실을 제외한 CPU 자원을 국무총리에게 할당한다.

10)   국무총리가 일을 다 마치고 난 후, 커널은 CPU를 대통령과 시민 중에서 다시 시민에게 준다. 왜냐하면 키가 시민에게 있었기 때문이다.

11)  신나게 대변을 보고난 후 키를 반납하면 그제서야 대통령에게 키를 전해준 후 이용하라 한다.

12)  대통령이 1순위였지만 우선순위는 3순위인 시민보다도 낮아져버렸다.

è  이것이 우선순위 역전현상이다.

 

깨우기 분실 현상(Lost Wakeup Problem)

è  Busy Waiting 기반 상호배제의 우선순위 역전 현상에 대한 해결책으로 Sleeping Wakeup 방식 도입

è  Sleeping Wakeup 방법은 wakeup 신호를 분실하여 2개 프로세스가 모두 sleep 하는 상황 발생 가능

 

세마포 음수값의 의미

è  바쁜 대기 세마포에서는 세마포 값은 절대 음수가 될 수 없지만

è  Sleep wakeup 세마포에서는 음수값이 가능하고

è  음수값의 의미는 세마포를 기다리는 프로세스 수를 나타낸다. Sleep 하고 있는 수를 나타낸다.


'운영체제' 카테고리의 다른 글

6주차 과제  (0) 2018.10.07
5주차 과제  (0) 2018.09.27
3주차 과제 제출  (0) 2018.09.13
2주차 과제 제출  (0) 2018.09.06
1주차 과제 제출  (0) 2018.08.31