쉽게 배우는 운영체제_ch6_교차 상태

shon4bw·2021년 11월 1일
0

📝Quick Study

목록 보기
12/12
post-thumbnail

연습문제

01

2개 이상의 프로세스가 서로의 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태는?
교착 상태(dead lock)

02

프로세스가 어떤 자원을 사용 중이고 어떤 자원을 기다리고 있는지를 나타내는 방향성이 있는 그래프는?
자원 할당 그래프(resource allocation graph)
자원 할당 그래프를 사용하면 어떤 프로세스에 자원이 할당되어 있는지 혹은 어떤 프로세스가 자원을 기다리고 있는지를 한눈에 파악할 수 있다.

03

네 가지 교착 상태 필요조건에 대해 설명하시오

교착 상태는 상호 배제, 비선점, 점유와 대기, 원형 대기를 모두 충족해야 발생하고, 이 중 단하나라도 충족하지 않으면 발생하지 않는다. 띠라서 이 4 가지 조건을 교착 상태 필요조건이라고 한다.

  1. 상호 배제(mutual exclusion)
    한 프로세스가 사용하는 자원은 다른 프로세스와 공유할 수 없는 배타적인 자원이어야 한다. 배타적인 자원은 임계구역으로 보호되기 때문에 다른 프로세스가 동시에 사용할 수 없다. 다라서 배타적인 자원을 사용하면 교착 상태가 발생한다.
  2. 비선점(non-preemption)
    한 프로세스가 사용 중인 자원은 중간에 다른 프로세스가 빼앗을 수 없는 비선점 자원이어야 한다. 어떤 자원을 빼앗을 수 있다면 시간 간격을 두고 자원을 공유할 수 있다. 하지만 자원을 빼앗을 수 없으면 공유할 수도 없으므로 교착 상태가 발생한다.
  3. 점유와 대기(hold and wait)
    프로세스가 어떤 자원을 할당받은 상태에서 다른 자원을 기다리는 상태여야 한다. 다른 프로세스의 작업 진행을 방해하는 교착 상태가 발생하려면 다른 프로세스가 필요로 하는 자원을 점유하고 있으면서 또 다른 자원을 기다리는 상태가 되어야 한다.
  4. 원형 대기(circular wait)
    점유와 대기를 하는 프로세스 간의 관계가 원을 이루어야 한다. 프로세스가 특정 자원에 대해 점유와 대기를 한다고 해서 모두 교착 상태에 빠지는 것은 아니다. 점유와 대기를 하는 프로세스들이 서로 방해하는 방향이 원을 이루면 프로세스들이 서로 양보하지 않기 대문에 교착 상태에 빠진다.

04

교착 상태 해결 방법 중, 교착 상태를 유발하는 4 가지 조건을 무력화하는 방법은?
교착 상태 예방

05

교착 상태 해결 방법 중, 교착 상태가 발생하지 않는 수준으로 자원을 할당하는 방법은?
교착 상태 회피
자원을 할당하다가 교착 상태를 유발할 가능성이 있다고 판단되면 자원 할당을 중단하고 지켜보는 것. 그러나 자원을 얼마만큼 할당해야 교착 상태가 발생하지 않는다는 보장이 없기 때문에 실효성이 적다.

06

교착 상태 해결 방법 중, 자원 할당 그래프를 사용하여 교착 상태를 발견하는 방법은?
무거운 교착 상태 검출

07

교착 상태 해결 방법 중, 타임아웃을 이용하여 해결하는 방법은?
가벼운 교착 상태 검출

08

교착 상태 해결 방법 중, 은행원 알고리즘을 사용하여 해결하는 방법은?
교착 상태 회피

09

교착 상태 해결 방법 중, 모든 자원에 번호를 부여하고 낮은 번호의 자원을 사용할 수 없도록 하는 방법은?
원형 대기 예방
점유와 대기를 하는 프로세스들이 원형을 이루지 못하도록 막는 방법

10

교착 상태 해결 방법 중, 프로세스가 시작 초기에 자신이 사용하려는 모든 자원을 한꺼번에 점유하거나 그렇지 못할 경우 자원을 모두 반납하는 방법은?
점유와 대기 예방

11

교착 상태 해결 방법 중, 교착 상태가 검출되면 교착 상태를 일으킨 모든 프로세스를 종료하는 방법은?
교착 상태 회복

12

자원 할당 그래프에서 무엇이 발견되면 교착 상태라고 판단할 수 있는가?
사이클

심화문제

01

**교착 상태 해결 방법 중 프로세스가 시작 초직에 자신이 사용라녀는 모든 자원을 한꺼번에 점유하거나, 그렇지 못할 경우 자원을 모두 반납하는 방법이 있다. 이 방법의 단점을 설명하시오.

점유와 대기 예방의 단점

  • 프로세스가 자신이 사용하는 모든 자원을 자세히 알기 어렵다.
    프로세스가 필요한 자원을 모두 확봐한 후 실행했는데 추가로 필요한 자원이 생기면 이를 다시 확보하기가 어렵다.
  • 자원의 활용성이 떨어진다.
    프로세스가 앞으로 사용할 자원까지 미리 선점해버리기 대문에 그 자원을 필요로 하는 다른 프로세스의 작업이 진행되지 않는다. 당장 사용하지도 않을 자원을 미리 선점하여 자원 낭비가 심하다.
  • 많은 자원을 사용하는 프로세스가 적은 자원을 사용하는 프로세스보다 불리하다.
    자원을 많이 사용하는 프로세스는 자원을 적게 사용하는 프로세스보다 자원을 동시에 확보하기가 어렵다. 그래서 작업이 지연되는 아사 현상이 발생한다.
  • 결국 일괄 작업 방식으로 동작한다.
    점유와 대기 예방을 실제로 구현하면 거의 모든 프로세스가 일괄 작업 방식으로 처리된다. 시스템의 효율성이 떨어진다.

02

교착 상태 회피 방법인 은행원 알고리즘의 단점은?
1. 모든프로세스가 자신이 사용할 자원을 미리 선언해야 한다.
하지만 이는 쉽지 않다. 또한 미리 선언한 자원이 정확하지 않으면 교착 상태가 발생할 수 있다.
2. 안정 상태나 불안정 상태를 파악하려면 시스템의 전체 자원 수가 고정적이어야 한다.
3. 자원이 낭비된다.
실제로 교착 상태가 발생하지 않아도 발생할 것이라 예상함으로써 프로세스에 자원을 할당하는데 제약을 둔다.

03

교착 상태 검출 시 타임아웃을 이용하는 방법의 장단점은?
👍🏻 : 교착 상태가 발생하지 않을 것이라는 가정 하에 사용하는 것으로 특별한 알고리즘이 없이 쉽게 구현할 수 있다.
👎🏻 :
1. 교착 상태 외의 다른 이유로 작업이 진행되지 못하는 모든 프로세스가 강제종료될 수 있다.
2. 모든 시스템에 적용할 수 없다. 분산 데이터베이스는 데이터가 여러 시스템에 나뉘어 있고 각 시스템이 네트워크로 연결되어 있는데, 해당 시스템에서는 원격지에 있는 프로세스가 응답이 없는 것이 교착 상태 때문인지 네트워크 문제 때문인지 단순히 처리가 늦어지는 것인지 정확히 알 수 없다.

profile
cut_the_mustard

0개의 댓글