본문 바로가기
서평활동

혼공 컴운 - 5주차 정리

by 디지털노마더 2023. 2. 11.

12장. 프로세스 동기화

12-1. 동기화란

 

동기화 : 실행되는 프로세스의 순서와 자원의 일관성을 보장하여 수행시기를 맞추는 작업

 

  • 동기화 종류
    1) 실행 순서 제어 : 프로세스들이 올바른 순서대로 실행.
    2) 상호 배제 목적 : 동시 사용을 피하기 위해, 단일 프로세스만 접근

공유 자원과 임계구역

  • 공유자원 : 공동의 자원(전역변수, 입출력장치..)
  • 임계구역 : 문제가 발생하는 자원에 접근하는 코드영역
    두 개 이상의 프로세스가 접근 시, 하나는 대기해야함.
    • 레이디스 컨디션(race condition) : 여러 프로세스가 동시 다발적으로 코드를 실행하여 문제가 발생하는 경우.
  • 상호 배제 동기화 원칙
    • 상호배제(mutual exclusion): 하나의 프로세스가 임계 구역 내에 있다면, 다른 프로세스 접근 금지
    • 진행(progress): 임계 구역 내에 진입한 프로세스가 없다면 접근 가능
    • 유한대기(bounded waiting): 단일 프로세스가 임계 구역에 언젠가는 진입이 가능(무한정 대기는 안됨)

12-2. 동기화 방법

뮤텍스 락(Mutex lock)

  • 동시에 접근하지 않도록 만드는 도구 (상호배제를 위한 동기화 도구)
  • 구현방식
    • 자물쇠(lock) : 프로세스 공유하는 전역변수
    • 임계 구역 잠금(acquire)
    • 잠금해제(release)

세마포(semaphore)

  • 뮤텍스 락과 비슷하지만, 일반화된 방식의 동기화 도구
  • 여러 자원에서 적용이 가능
  • 구현방식
    • 전역변수 S: 임계 구역에 진입 가능한 프로세스 개수
    • wait(): 임계 구역 진입/대기여부를 확인
    • signal(): 대기 프로세스에게 진입 가능 신호를 전달

 

모니터(monitor)

  • 세마포에 비하면, 사용하기 편리한 도구
  • 공유 자원과 인터페이스를 묶어서 관리
  • 실행 순서를 제어 가능
    • 조건변수 사용(wait, signal 함수로 연산)

 

13장. 교착 상태

13-1. 교착상태란

모든 철학자가 포크를 집어 식사를 하면 누구도 식사를 할 수 없다.

  • 철학자 : 프로세스 혹은 스레드
  • 포크 : 자원
  • 생각하는 행위 : 자원을 기다리는 것
  • 교착 상태
    일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상
  • 교착 상태를 해결하기 위해서
    1. 교착 상태가 발생했을 때의 상황을 정확히 표현
    2. 교착 상태가 일어나는 근본적인 이유 이해

 

자원 할당 그래프

  • 어떤 프로세스가 어떤 자원을 사용하고 있고, 어떤 자원을 기다리고 있는지를 표현하는 그래프
    교착 상태는 자원 할당 그래프를 통해 단순하게 표현 가능하다.

자원 할당 그래프 그리는 규칙

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

 

교착 상태 발생 조건

  1. 상호 배제
    한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 상태
  2. 점유와 대기
    자원을 할당받은 상태에서 다른 자원을 할당 받기를 기다리는 상태
  3. 비선점
    어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못하는 상태
  4. 원형 대기
    프로세스들이 원의 형태로 자원을 대기하는 상태
    원의 형태를 띈다고 해서 반드시 교착 상태가 발생하는 것은 아니다.

 

교착 상태 해결 방법

교착 상태 예방

  • 애초에 교착 상태가 발생하지 않도록 하는 방법
  • 교착 상태 발생 조건 중 하나를 없애버리기

상호 배제를 없애기

  • 모든 자원을 공유하게 만든다는 말과 같다.
  • 이론적으로는 가능하지만 현실적인 방법은 아니다.

점유와 대기를 없애기

  • 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분한다.
  • 단점
    • 자원의 활용률을 낮출 수 있는 방식
    • 많은 자원을 필요로 하는 프로세스의 기아 현상 야기할 수 있음

비선점 조건을 없애기

  • 선점이 가능한 자원(CPU 등)에 한해 효과적이다.
    하지만 모든 자원이 선점 가능한 것은 아니다.

원형 대기 조건을 없애기

  • 자원에 번호를 붙이고 오름차순으로 할당하면 원형 대기 발생X
  • 철학자 예시
    낮은 포크에서 높은 포크 순으로 집도록 하면 된다.
  • 단점
    • 모든 자원에 번호를 붙이는 것은 어려운 작업
    • 어떤 자원에 어떤 번호를 붙이느냐에 따라 활용률이 달라진다.

 

교착 상태 회피

  • 교착 상태를 한정된 자원의 무분별한 할당으로 인해 발생하는 문제로 간주
  • 교착 상태가 발생하지 않을 정도로만 조심 조심 자원 할당하는 방식
  • 배분할 수 있는 자원의 양을 고려해 교착 상태가 발생하지 않을 정도의 양만큼만 자원을 배분하는 방법
  • 안전 순서열
    교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서
  • 안전 상태
    교착 상태 없이 모든 프로세스가 자원 할당 받고 종료될 수 있는 상태
    안전 순서열이 있는 상태
  • 불안전 상태
    교착 상태가 발생할 수도 있는 상태
    안전 순서열이 없는 상태

 

교착 상태 검출 후 회복

  • 교착 상태의 발생을 인정하고 사후에 조치하는 방식
  • 프로세스가 자원을 요구하면 일단 할당, 교착 상태 검출되면 회복

선점을 통한 회복

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

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

  • 교착 상태에 놓인 프로세스 모두 강제 종료
    → 작업 내역을 읽게 될 가능성이 있다.
  • 교착 상태 없어질 때까지 한 프로세스씩 강제 종료
    → 교착 상태 여부 확인 과정에서 오버헤드 야기

미션

p. 363 - 확인 문제 1번

4번) 세마포를 이용하면 반드시 바쁜 대기를 해야 합니다.
 반드시(X) 대기 상태가 되는 것도 가능하다.

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

  • 임계 구역(Critical Section)
    동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역

  • 상호 배제(Mutex: mutual exclusion)
    동시에 접근할 수 없는 영역에 하나의 프로세스만 접근 가능하도록 하는 것
 

임계 구역
상호 배제

 

'서평활동' 카테고리의 다른 글

혼공 컴운 회고  (0) 2023.02.19
혼공 컴운 - 6주차 정리  (0) 2023.02.19
혼공 컴운 - 4주차 정리  (0) 2023.02.06
혼공 컴운 - 3주차 정리  (0) 2023.01.25
혼공 컴운 - 2주차 정리  (0) 2023.01.15

댓글