유성이의 공부일지(13) - 혼자공부하는 컴퓨터 구조 + 운영체제 13장

2024. 7. 13. 14:51·공부 기록일지

13-1. 교착 상태란

 

식사하는 철학자 문제

 

출처 : 혼자 공부하는 컴퓨터 구조 + 운영체제 Section 13. 교착 상태 jihyelee - velog

 

- 교착 상태를 설명하기 위한 아주 고전적이고 재미있는 문제 상황

- 교착 상태가 어떤 상황에서 발생하는지, 어떻게 해결할 수 있을지를 엿볼 수 있는 가상의 문제 시나리오

- 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상을 교착상태라고 함

 

자원 할당 그래프

- 교착상태는 자원 할당 그래프를 통해 단순하게 표현할 수 있음

- 자원 할당 그래프는 어떤 프로세스가 어떤 자원을 사용하고 있고, 어떤 자원을 기다리고 있는지를 표현하는 간단한 그래프

 

1. 프로세스는 원으로 자원의 종류는 사각형으로 표현

출처 : 혼자 공부하는 컴퓨터 구조 + 운영체제 Section 13. 교착 상태 jihyelee - velog

 

2. 사용할 수 있는 자원의 개수는 자원 사각형 내에 점으로 표현함

- 같은 자원이라 할지라도 사용 가능한 자원의 개수는 여러 개 있을 수 있음

- 예를 들어 하드 디스크가 세 개 있을 경우 자원의 종류는 하드 디스크 하나이지만, 디스크 개수는 세 개임

 

3. 프로세스가 어떤 자원을 할당받아 사용 중이라면 자원에서 프로세스를 향해 화살표를 표시함

- 예를 들어 하드 디스크 자원 하나는 프로세스 A에 할당, CPU는 프로세스 B,C에 할당되었음을 표시한 할당 그래프임

- 프로세스에 자원 이용을 끝내고 운영체제에 자원을 반납하면 화살표는 삭제됨

 

4. 프로세스가 어떤 자원을 기다리고 있다면 프로세스에서 자원으로 화살표를 표시함

 

교착 상태 발생 조건

 

상호 배제

- 교착 상태가 발생한 근본적인 원인은 해당 자원을 한 번에 하나의 프로세스만 이용 가능했기 때문임

- 프로세스도 마찬가지로 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없을 때, 즉 상호배제 상황에서 교착 상태 발생가능

 

점유와 대기

- 자원을 보유한 채 다른 자원을 기다렸기 때문에 문제가 발생함

- 프로세스도 마찬가지로 어떠한 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다림 -> 교착 상태 발생

- 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태를 점유와 대기라고 함

 

비선점

- 교착 상태가 발생하게 된 또 하나의 근본적인 문제는 프로세스가 자원을 비선점하고 있었기 때문

- 비선점 자원을 이용하는 프로세스의 작업이 끝나야만 비로소 이용할 수 있음

- 즉 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못했기 때문에 교착상태가 발생함

 

원형 대기

- 자원 할당 그래프가 원의 형태로 그려지면 교착 상태가 발생 할 수 있음

- 프로세스들이 원의 형태로 자원을 대기하는 것을 원형 대기라고 함

 

13-2. 교착 상태 해결 방법

 

교착 상태 예방

- 13-1에서 설명한 교착 상태 발생 조건 네 가지 중 하나를 충족하지 못하게 하는 것과 같음

- 즉 상호 배제, 점유와 대기, 비선점, 원형 중에 하나의 조건이라도 만족시키지 않게 할당하면 교착 상태 발생x

 

우선 자원의 상호 배제를 없애 볼까요?

- 자원의 상호 배제를 없애는 말은 모든 자원을 공유한다는 의미임

- 다만 이 방식대로면 이론적으로는 교착 상태를 없앨 수 있지만, 현실적으로 모든 자원의 상호 배제를 없애기는 어려움

- 이 방식을 현실에서 사용하기에는 무리가 있음

 

그렇다면 점유와 대기를 없애 봅시다.

- 점유와 대기를 없앤다면 운영체제는 특정 프로세스에 자원을 모두 할당하거나 할당하지 않는 방식으로 배분함

- 이 방식은 이론적으로는 해결할 수 있지만 단점도 있음

- 자원의 활용률이 낮아질 우려가 있음

- 한 프로세스에 필요한 자원들을 몰아주고, 그 다음에 다른 프로세스에 필요한 자원을 몰아주어야 함

- 이는 당장 자원이 필요해도 기다릴 수 밖에 없는 프로세스와 사용되지 않음

- 오랫동안 할당되는 자원을 다수 양산하기 때문에 자원의 활용률이 낮아짐

- 많은 자원을 활용하는 프로세스가 불리해짐

- 이는 결국 많은 자원을 필요로 하는 프로세스가 무한정 기다려야 하는 기아 현상의 우려가 생김

 

이번에는 비선점 조건을 없애 보겠습니다.

- 자원을 이용중인 프로세스로 부터 해당 자원을 빼앗을 수 있음

- 한 프로세스가 CPU를 이용하다가 일정 시간이 지나면 아직 작업이 모두 끝나지 않았다고 할지라도 다른 프로세스가 CPU를 할당받아 사용 가능

- 하지만 모든 자원이 이렇게 선점 가능한 것은 아님

- 한 프로세스의 작업이 끝날 때까지 다른 프로세스가 기다려야 하는 자원도 얼마든지 있음

 

마지막으로 원형 대기 조건을 없애 봅시다

- 원형 대기를 없애는 방법은 간단함

- 모든 자원에 번호를 붙이고 오름차순으로 자원을 할당하면 원형 대기 발생 x

 

교착 상태 회피

- 교착 상태가 발생하지 않을 정도로만 조심 조심 자원을 할당하는 방식

- 교착 상태를 한정된 자원의 무분별한 할당으로 인해 발생하는 문제로 간주

- 프로세스 자원이 충분히 있는 상태에서 프로세스들이 한 두 개의 적은 자원만을 요구한다면 교착상태 발생x

- 안전 상태란 교착 상태가 발생하지 않고 모든 프로세스가 정상적으로 받고 종료될 수 있는 상태

- 불안전 상태는 교착 상태가 발생할 수도 있는 상황

- 안전 순서열은 교착 상태 없이 안전하게 프로세서 들에게 자원을 할당할 수 있는 순서

- 운영체제가 교착 상태를 회피하기 위해서는 시스템 상태가 안전 상태로 움직이는 경우에만 자원을 할당하면 됨

 

교착 상태 검출 후 회복

- 교착 상태 발생을 인정하고 사후에 조치하는 방식

- 운영체제는 프로세스들이 자원을 요구할 때마다 그때그떄 모두 할당함

- 교칙 상태 발생 여부를 주기적으로 검사함

 

선점을 통한 회복

- 교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식

- 해결될때 까지 다른 프로세스로부터 자원을 강제로 빼앗고 한 프로세스에 할당하는 방식

 

프로세스 강제 종료를 통한 회복

- 가장 단순하면서 확실한 방식

- 운영체제가 교착 상태에 놓인 프로세스를 모두 강제 종료할 수 있음

- 교착 상태가 없애질 때까지 한 프로세스씩도 종료가능

- 전자는 한 방에 교착 상태를 해결할 수 있는 가장 확실한 방법이지만 그만큼 많은 프로세스들이 작업 내역을 잃게 될 가능성이 있음

- 후자는 작업내용을 잃는 프로세스는 최대한 줄일 수 있지만 교착 상태가 없어졌는지 여부를 확인하는 과정에서 오버헤드를 야기함

- 타조 알고리즘은 드물게 발생하는 잠재적 문제를 무시로 대처하는 방식

'공부 기록일지' 카테고리의 다른 글

유성이의 공부일지(15) - 혼자공부하는 컴퓨터 구조 + 운영체제 15장  (0) 2024.07.16
유성이의 공부일지(14) - 혼자공부하는 컴퓨터 구조 + 운영체제 14장  (0) 2024.07.15
유성이의 공부일지(12) - 혼자공부하는 컴퓨터 구조 + 운영체제 12장  (0) 2024.07.12
유성이의 공부일지(11) - 혼자공부하는 컴퓨터 구조 + 운영체제 11장  (0) 2024.07.11
유성이의 공부일지(10) - 혼자공부하는 컴퓨터 구조 + 운영체제 10장  (0) 2024.07.10
'공부 기록일지' 카테고리의 다른 글
  • 유성이의 공부일지(15) - 혼자공부하는 컴퓨터 구조 + 운영체제 15장
  • 유성이의 공부일지(14) - 혼자공부하는 컴퓨터 구조 + 운영체제 14장
  • 유성이의 공부일지(12) - 혼자공부하는 컴퓨터 구조 + 운영체제 12장
  • 유성이의 공부일지(11) - 혼자공부하는 컴퓨터 구조 + 운영체제 11장
메테오유성
메테오유성
유성이가 하고 싶은 이야기를 올리는 일기장
  • 메테오유성
    유성의 이것저것
    메테오유성
  • 전체
    오늘
    어제
    • 분류 전체보기 (32)
      • IT & Tech 이야기 (3)
      • 디자인 (0)
      • 공부 기록일지 (19)
      • 책 기록일지 (0)
      • UX 연구 & 리서치 노트 (9)
      • 알고리즘 스터디 기록 (0)
      • 음악 추천🎧 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    변화 무시
    자동인지 처리
    apple
    우선순위 스케줄링
    메일 침프
    타조 알고리즘
    포스텔의 법칙
    여정 지도
    도허티의 임계
    테스트 세트
    교착 상태 예방
    폰 레스토프 효과
    디자인 회복 탄성력
    rr 스케줄링
    ferret-ui
    샘플 레이아웃 패턴
    심미적 사용성 효과
    it
    대기 큐
    운영체제
    테슬러의 법칙
    train_test_split()
    유비쿼스트 결제 프로세스
    선택적 주의력
    kneighbors()
    배너 무시
    디자인 작업 프로세스
    WWDC
    스레드
    Google
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
메테오유성
유성이의 공부일지(13) - 혼자공부하는 컴퓨터 구조 + 운영체제 13장
상단으로

티스토리툴바