본문 바로가기
혼공단

[혼공단 10기] 혼자 공부하는 컴퓨터 구조+운영체제 5주차

by ra388 2023. 8. 12.

12장 내용 정리

12-1 동기화

동기화: 동시다발적으로 실행되는 프로세스들이 실행 순서와 자원의 일관성을 보장받기 위해 프로세스들 사이의 수행 시기를 맞추는 것.

  • 실행 순서 제어를 위한 동기화: 동시에 실행되는 프로세스를 올바른 순서대로 실행한다.
  • 상호 배제를 위한 동기화: 공유가 불가능 한 자원의 동시 사용을 피하기 위한 알고리즘
    • 공유 자원: 공동으로 이용하는 변수, 파일, 장치 등의 자원
    • 임계 구역: 공유 자원에 접근하는 코드 중 동시에 실행하면 문제가 발생하는 코드 영역
    • 레이스 컨디션: 잘못된 실행으로 인해 여러 프로세스가 동시 다발적으로 임계 구역의 코드를 실행하여 문제가 발생하는 경우로 데이터의 일관성이 깨지는 문제가 발생한다.

임계 구역 문제를 해결하는 원칙

  • 상호 배제: 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 임계 구역에 들어올 수 없다.
  • 진행: 임계 구역에 어떤 프로세스도 진입하지 않았다면 임계 구역에 진입하고자 하는 프로세스는 들어갈 수 있어야 한다.
  • 유한 대기: 한 프로세스가 임계 구역에 진입하고 싶다면 그 프로세스는 언젠가는 임계 구역에 들어올 수 있어햐 한다.

12-2 동기화 기법

뮤텍스 락(MUTual EXclusion lock): 동시에 접근해서는 안 되는 자원에 동시에 접근하지 않도록 만드는 도구로 상호 배제를 위한 동기화 도구, 하나의 전역 변수와 두 개의 함수로 구현할 수 있다.

  • 전역 변수 lock: 프로세스들이 공유하는 변수로 자물쇠 역할을 한다.
  • acquire 함수: 임계 구역이 잠겨 있을 경우 열릴 때까지 반복적으로 확인하고, 열릴 경우 임계 구역을 잠그는 역할을 한다.
  • release 함수:임계 구역에서 작업이 끝나고 호출하는 함수, 임계 구역을 열어주는 역할을 한다.

🔺단점: 쉴 새 없이 반복하며 상태를 확인해 보는 대기 방식인 바쁜 대기 한다. CPU 주기를 낭비하기 때문에 손해다.

 

세마포(semaphore): 조금 더 일반화된 방식의 동기화 도구로 여러 개의 공유 자원이 있는 경우 여러 개의 프로세스가 각각 공유 자원에 접근이 가능한 동기화 도구다. 이진 세마포와 카운팅 세마포가 있는데, 이진 세마포는 뮤텍스 락과 비슷한 개념이다. 뮤텍스 락과 비슷하게 하나의 전역 변수와 두 개의 함수로 구현할 수 있다.

  • 전역 변수 S: 임계 구역에 진입할 수 있는 프로세스의 개수를 나타낸다.
  • wait 함수: 임계 구역에 들어가도 좋은지, 기다려야 할지를 알려주는 함수, 프로세스 순서를 제어하기 위해 먼저 실행할 프로세스 뒤에 wait 함수를 붙인다.
    • acquire 함수와 다른 점: 사용할 수 있는 자원이 없을 경우 해당 프로세스 상태를 대기 상태로 만들고, 그 프로세스의 프로세스 제어 블록(PCB)을 세마포를 위한 대기 큐에 집어넣는다. 다른 프로세스가 임계 구역에서 작업이 끝나면 signal 함수를 호출하여 대기 중인 프로세스를 대기 큐에서 제거하고 프로세스 상태를 준비 상태로 변경한 뒤 준비 큐로 옮겨준다.
  • signal 함수: 임계 구역 앞에서 기다리는 프로세스에게 신호를 주는 함수, 프로세스 순서를 제어하기 위해 다음에 실행할 프로세스 앞에 wait 함수를 붙인다.

🔺단점매번 임계 구역 앞뒤로 일일이 함수를 명시해야 하므로 번거롭고, 세마포를 누락하거나 두 함수의 순서를 헷갈리거나 중복한 경우 오류가 난다.

 

모니터: 공유 자원과 공유 자원에 접근하기 위한 인터페이스를 묶어서 관리하고 프로세스를 반드시 인터페이스를 통해서만 공유 자원에 접근하도록 한다.

  • 상호배제를 위한 모니터: 공유 자원을 다루는 인터페이스에 접근하기 위한 큐를 만들고, 모니터 안에 항상 하나의 프로세스만 들어오도록 한다.
  • 실행 순서 제어를 위한 모니터: 조건 변수를 사용하여 특정 프로세스가 아직 실행될 조건이 되지 않으면 wait 함수를 통해 실행을 중단하고, 특정 프로세스가 실행될 조건을 충족되었을 경우 signal 함수를 통해 실행을 재개한다.
    • 조건 변수: 프로세스나 스레드의 실행 순서를 제어하기 위해 사용하는 특별한 변수

13장 내용 정리

13-1 교착 상태

교착 상태: 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상, 교착 상태를 해결하기 위해서는 교착 상태가 발생했을 때의 상황을 정확하게 표현해보고 교착 상태가 일어나는 근본적인 이유를 알아야한다. 이를 한 눈에 보기 쉽게 그래프로 표현하는 방법이 자원 할당 그래프를 그려보는 것이다.

  • 자원 할당 그래프: 어떤 프로세스가 어떤 자원을 사용하고 어떤 프로세스가 어떤 자원을 기다리고 있는지 표현하는 그래프로 교착상태인 경우 자원 할당 그래프가 원의 형태를 띄고 있다. 단, 원의 형태를 띄고 있는 자원 할당 그래프가 반드시 교착 상태인 것은 아니다.

자원 할당 그래프를 그리는 법

  1. 프로세스는 원, 자원의 종류는 사각형으로 표현
  2. 사용할 수 있는 자원의 개수는 자원 사각형 내에 점으로 표현
  3. 프로세스가 어떤 자원을 할당받아 사용 중이라면 자원 -> 프로세스로 화살표 표시
  4. 프로세스가 어떤 자원을 기다리는 중이면 프로세스 -> 자원으로 화살표 표시

 

교착 상태 발생 조건: 아래 조건을 모두 만족할 경우 교착 상태가 발생할 가능성이 생긴다.

  • 상호 배제: 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 경우
  • 점유와 대기: 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다릴 경우
  • 비선점: 다른 프로세스의 자원을 강제로 빼앗지 못하는 경우
  • 원형 대기: 자원 할당 그래프가 원의 형태로 그려지는 경우

13-2 교착 상태 해결 방법

교착 상태 예방: 교착 상태 발생 필요 조건 네 가지 중 하나를 충족하지 못하게 한다.

교착 상태 발생 조건 예방 방법 단점
상호 배제 없애기 모든 자원을 공유 가능하게 한다 현실적으로는 다소 무리다.
점유와 대기 없애기 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는다. 당장 자원이 필요해도 기다릴 수밖에 없는 프로세스와 사용되지 않으면서 오랫동안 할당되는 자원을 다수 양산하기 때문에 자원의 활용률이 낮아진다.
비선점 조건 없애기 자원을 이용 중인 프로세스로부터 해당 자원을 빼앗을 수 있게 한다. 일부 자원에 대해서는 효과적이지만, 한 프로세스의 작업이 끝날 때까지 기다려야하는 자원의 경우(프린터) 사용하기  어렵기 때문에 범용성이 다소 떨어진다.
원형 대기 조건 없애기 모든 자원에 번호를 붙이고 오름차순으로 자원을 할당한다. 모든 컴퓨터 시스템에 번호를 붙이는 것은 간단한 작업이 아니기도 하고 어떤 번호를 붙이는지에 따라 특정 자원의 활용률이 떨어질 수 있다.

 

교착 상태 회피: 교착 상태를 한정된 자원의 무분별한 할당으로 인해 발생하는 문제로 간주하여 교착상태가 발생하지 않을 정도로만 자원을 할당하는 방식

 

교착 상태 검출 후 회복: 교착 상태 발생을 인정하고 사후에 조치하는 방식

  • 선점을 통한 회복: 교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식
  • 프로세스 강제 종료를 통한 회복: 가장 단순하면서 확실항 방식. 교착 상태에 놓인 프로세스를 모두 강제 종료하거나 교착 상태가 없어질 때까지 한 프로세스씩 강제 종료하는 방식. 전자의 경우 작업 내역을 잃게 될 수 있고 후자의 경우 교착 상태가 없어졌는지 여부를 확인하는 과정에서 오버헤드를 야기한다.
  • 교착 상태를 아예 무시하는 방법: 잠재적 문재를 무시로 대처하는 방식으로 타조 알고리즘이라고도 한다.

 


기본 미션

p.363의 확인 문제 1번 풀고 인증하기

뮤텍스 락과 세마포에 대한 설명으로 옳지 않은 것을 고르세요

  1. 뮤텍스 락은 임계 구역을 잠근 뒤 임계 구역에 진입함으로써 상호 배제를 위한 동기화를 이룹니다.
  2. 세마포공유 자원이 여러 개 있는 상황에서도 이용할 수 있습니다.
  3. 세마포를 이용해 프로세스 실행 순서 제어를 위한 동기화도 이룰 수 있습니다.
  4. 세마포를 이용하면 반드시 바쁜 대기를 해야 합니다.

선택 미션

ch.12(12-1) 임계 구역, 상호 배제 개념을 정리하기

>>> 내용 정리 12-1에 정리