본문 바로가기
Book

[혼공컴운] 혼공학습단11기_5주차+기본미션

by suuuuunnng 2024. 2. 4.

앞의 글 (1,2,3주차 글들은 4주차 글에 링크 있습니다.)

2024.01.28 - [Book] - [혼공컴운] 혼공학습단11기_4주차+기본미션

 

 

혼공컴운 5주차

Chapter 12. 프로세스 동기화

12-1 동기화란

시작하기 전에

앞 챕터에서 스케줄링을 배웠으므로, 이번엔 동기화에 대해 학습한다.

동기화의 의미

동기화 : 특정 자원에 접근할 때 한 개의 프로세스만 접근하게 하거나, 프로세스를 올바른 순서대로 실행하게 하는 것

동기화에는 2가지가 있다. 1) 실행 순서 제어를 위한 동기화, 2) 상호 배제를 위한 동기화

 

생산자와 소비자 문제

상호 배제를 위한 동기화에 대해 조금 더 알아볼 때 관련된 고전적이고 유명한 문제.

자세한 내용은 책 참고.

공유 자원과 임계 구역

위 문제에 관련해서 계좌 잔액 문제와 생산자 소비자 문제의 예시에서 동시에 실행되는 프로세스들은 전역 변수 '잔액', '총합' 이라는 공동의 자원을 두고 작업을 했을 때, 이러한 자원을 공유 자원 이라고 한다.

공유 자원은 전역 변수가 될 수도 있고, 파일이 될 수도 있고, 입출력장치, 보조기억장치가 될 수도 있다.

임계 구역은 공유 자원에 접근하는 코드 중 동시에 실행하면 문제가 발생하는 코드 영역.

 

레이스 컨디션 : 임계 구역이 잘못된 실행으로 인해 여러 프로세스가 동시 다발적으로 임계 구역의 코드를 실행하여 문제가 발생하는 경우

 

운영체제는 임계 구역 문제를 아래 3가지 원칙 하에 해결한다. 즉 반드시 지켜져야만 하는 3가지 원칙.

상호 배제 : 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 임계 구역에 들어올 수 없다.

진행 : 임계 구역에 어떤 프로세스도 진입하지 않았다면 임계 구역에 진입하고자 하는 프로세스는 들어갈 수 있어야 한다.

유한 대기 : 한 프로세스가 임계 구역에 진입하고 싶다면 그 프로세스는 언젠가는 임계 구역에 들어올 수 있어야 한다.( 임계 구역에 들어오기 위해 무한정 대기해선 안된다는 말 )

마무리

핵심포인트

  1. 동기화는 특정 자원에 접근할 때 한 개의 프로세스만 접근하게 하거나 프로세스를 올바른 순서대로 실행하게 하는 것을 의미.
  2. 공유 자원은 공동으로 사용하는 자원으로 전역 변수가 될 수도 있고, 파일이 될 수도 있고, 입출력장치, 보조기억장치가 될 수도 있다.
  3. 임계 구역은 공유 자원에 접근하는 코드 중 동시에 실행하면 문제가 발생하는 코드 영역을 의미. 임계 구역에 진입한 프로세스가 있다면 다른 프로세스는 임계 구역 밖에서 기다려야 한다.
  4. 상호 배제는 한 프로세스가 임계 구역에서 작업 중이면 다른 프로세스가 임계 구역에 들어갈 수 없도록 제어하는 것.

12-2 동기화 기법

시작하기 전에

동기화를 위한 대표적인 도구인 뮤텍스 락, 세마포, 모니터에 대해 알아본다.

뮤텍스 락

뮤텍스 락 : 동시에 접근해서는 안 되는 자원에 동시에 접근해서는 안 되는 자원에 동시에 접근하지 않도록 만드는 도구, 다시 말해 상호 배제를 위한 동기화 도구.

 

뮤텍스 락의 매우 단순한 형태는 하나의 전역 변수와 두 개의 함수로 구현 가능.

자물쇠 역할 : 프로세스들이 공유하는 전역 변수 lock

임계 구역을 잠그는 역할 : acquire 함수

임계 구역의 잠금을 해제하는 역할 : release 함수.

- acquire 함수 : 프로세스가 임계 구역에 진입하기 전에 호출하는 함수

- release 함수 : 임계 구역에서의 작업이 끝나고 호출하는 함수.

세마포

뮤텍스 락과 비슷하지만, 조금 더 일반화된 방식의 동기화 도구.

뮤텍스 락과 달리 공유 자원이 여러 개 있는 상황에서도 적용이 가능한 동기화 도구.

비슷하게 하나의 변수, 두 개의 함수로 단순 구현이 가능하다.

전역 변수 S : 임계 구역에 진입할 수 있는 프로세스의 개수 (사용 가능한 공유 자원의 개수) 를 나타냄.

wait 함수 : 임계 구역에 들어가도 좋은지, 기다려야 할지를 알려줌.

signal 함수 : 임계 구역 앞에서 기다리는 프로세스에 '이제 가도 좋다' 고 신호를 줌.

모니터

최근에 등장한 동기화 도구. 세마포에 비하면 사용자가 사용하기엔 더 편리한 도구이다.

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

모니터는 세마포와 마찬가지로 실행 순서 제어를 위한 동기화도 제공하는데 특정 조건을 바탕으로 프로세스를 실행하고 일시 중단하기 위해 조건 변수를 사용한다.

- 조건 변수 : 프로세스나 스레드의 실행 순서를 제어하기 위해 사용하는 특별한 변수.

마무리

  1. 뮤텍스 락은 임계 구역을 잠금으로써 프로세스 간의 상호 배제를 이룬다.
  2. 세마포는 공유 자원이 여러 개 있는 임계 구역 문제도 해결할 수 있는 동기화 도구이다.
  3. 모니터는 세마포에 비해 사용자가 사용하기 편리한 동기화 도구로 조건 변수를 사용한다

Chapter 13. 교착 상태

13-1 교착 상태란

시작하기 전에

교착 상태를 해결하는 것 또한 운영체제가 맡는 중요한 임무 중 하나이니, 알아보자

식사하는 철학자 문제 (상세 내용은 책 참고)

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

다양한 상황에서 발생하며, 뮤텍스 락에서도 교착 상태는 발생할 수 있다.

자원 할당 그래프

교착 상태는 자원 할당 그래프로 단순하게 표현이 가능하다.

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

아래와 같은 규칙으로 그려진다.

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

교착 상태 발생 조건

교착 상태가 발생할 조건에는 4가지가 있다.

1. 상호 배제

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

2. 점유와 대기

자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태.

3. 비선점

프로세스가 자원을 비선점 하는 경우가 있으면 교착 상태가 발생한다.

비선점 자원은 그 자원을 이용하는 프로세스의 작업이 끝나야만 비로소 이용가능.

즉 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못했기에 교착 상태가 발생했다고 볼 수 있다.

4. 원형 대기

프로세스들과 프로세스가 요청 및 할당받은 자원이 원의 형태를 이루었기 때문인데 이 상황을 원형 대기라고 한다.

마무리

핵심 포인트

  1. 교착 상태는 일어나지 않을 사건을 기다리며 무한히 대기하는 현상을 의미
  2. 식사하는 철학자 문제는 교착 상태의 발생을 보여주는 예시
  3. 자원 할당 그래프를 이용해 교착 상태를 표현할 수 있다.
  4. 교착 상태 발생 조건은 상호 배제, 점유와 대기, 비선점, 원형 대기이다.

13-2 교착 상태 해결 방법

시작하기 전에

운영체제는 교착 상태를 회피, 예방, 검출 후 회복 등을 할 수 있다.

교착 상태 예방

앞서 교착 상태 발생 필요 조건 4가지 중 하나를 충족하지 못하게 하는 방법과 같다.

즉, 상호 배제, 점유와 대기, 비선점, 원형 대기 중 하나를 충족하지 못하게 하는 방법.

교착 상태 회피

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

안전 상태 : 교착 상태가 발생하지 않고 모든 프로세스가 정상적으로 자원을 할당다고 종료될 수 있는 상태

즉, 안전 순서열이 존재하는 상태

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

즉, 안전 순서열이 없는 상태

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

교착 상태 검출 후 회복

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

교착 상태가 검출되면 다음과 같은 방식으로 회복한다.

1. 선점을 통한 회복

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

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

가장 단순하며 확실한 방식이다.

 

여담으로 교착 상태를 아예 무시하는 방법도 있는데 타조 알고리즘 방식..이다.

마무리

핵심 포인트

  1. 교착 상태 예방은 교착 상태의 발생 조건 중 하나를 충족하기 못하게 하는 방법.
  2. 교착 상태 회피는 안전 상태를 유지할 수 있는 경우에만 자원을 할당하는 방법
  3. 교착 상태 검출 후 회복은 교착 상태 발생 여부를 주기적으로 검사하고, 교착 상태가 발생하면 그때마다 회복하는 방식.

기본 미션

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

 

5주차 마무리.

어느덧 1주일 남은 혼공학습단 일정이다. 지난 5주동안 이 두터운 책을 적게는 1회, 많게는 3회독 하면서 책을 봤는데 확실히 회독이 적은 챕터들은 기억에 남은 내용들이 몇 없고, 회독이 많은 챕터들은 아직 관련 키워드나 문장을 다른 강의나 책에서 보면 떠오른다. 이래서 공부 잘하는 애들이 회독을 높이는것 같다.. ㅋㅋㅋ

남은 6주차도 마무리 잘해야겠다.