Chapter 12 프로세스 동기화
12-1 동기화란
- 동기화(Synchronization)는 특정 자원에 접근할 때 한 개의 프로세스만 접근하게 하거나 프로세스를 올바른 순서대로 실행하게 하는 것을 의미합니다.
- 공유 자원(Shared resource)은 공동으로 사용하는 자원으로, 전역 변수가 될 수도 있고, 파일이 될 수도 있고, 입출력장치, 보조기억장치가 될 수도 있습니다.
- 임계 구역(Critical section)은 공유 자원에 접근하는 코드 중 동시에 실행하면 문제가 발생하는 코드 영역을 의미합니다. 임계 구역에 진입한 프로세스가 있다면 다른 프로세스는 임계 구역 밖에서 기다려야 합니다.
- 상호 배제(Mutual exclusion)는 한 프로세스가 임계 구역에서 작업 중이면 다른 프로세스가 임계 구역에 들어갈 수 없도록 제어하는 것입니다.
12-2 공유 자원과 임계 구역
- 뮤텍스 락(MUTEX lock: MUTual EXclusion lock)은 임계 구역을 잠금으로써 프로세스 간의 상호 배제를 이룹니다.
- 세마포(Semaphore)는 공유 자원이 여러 개 있는 임계 구역 문제도 해결할 수 있는 동기화 도구입니다.
- 모니터(Monitor)는 세마포에 비해 사용자가 사용하기 편리한 동기화 도구로 조건 변수를 사용합니다.
Chapter 13 교착 상태
13-1 교착 상태(Deadlock)란
- 교착 상태는 일어나지 않을 사건을 기다리며 무한히 대기하는 현상을 의미합니다.
- 식사하는 철학자 문제(Dining philosophers problem)는 교착 상태의 발생을 보여 주는 예시입니다.
- 자원 할당 그래프(Resource-allocation graph)를 이용해 교착 상태를 표현할 수 있습니다.
- 교착 상태 발생 조건은 상호배제(Mutual exclusion), 점유와 대기(Hold and wait), 비선점(Nonpreemptive), 원형 대기(Circular wait)입니다.
13-2 교착 상태 해결 방법
- 교착 상태 예방은 교착 상태의 발생 조건 중 하나를 충족하지 못하게 하는 방법입니다.
- 교착 상태 회피는 안전 상태를 유지할 수 있는 경우에만 자원을 할당하는 방법입니다.
- 교착 상태 검출 후 회복은 교착 상태 발생 여부를 주기적으로 검사하고, 교착 상태가 발생하면 그때그때 회복하는 방식입니다.
[기본 숙제]
363쪽의 확인 문제 1번 풀고 인증하기.
1. 뮤텍스 락과 세마포에 대한 설명으로 옳지 않은 것을 고르세요.
① 뮤텍스 락은 임계 구역을 잠근 뒤 임계 구역에 진입함으로써 상호 배제를 위한 동기화를 이룹니다.
② 세마포는 공유 자원이 여러 개 있는 상황에서도 이용할 수 있습니다.
③ 세마포를 이용해 프로세스 실행 순서 제어를 위한 동기화도 이룰 수 있습니다.
④ 세마포를 이용하면 반드시 바쁜 대기를 해야 합니다.
[추가 숙제]
Ch.12(12-1) 임계 구역, 상호 배제 개념을 정리하기.
상호 배제(Mutual Exclusion)란 여러 프로세스나 스레드가 동시에 공유 자원(Shared resource)에 접근할 수 없도록 하는 기법이고, 임계 구역(Critical Section)은 프로세스나 스레드가 공유 자원에 접근할 때 사용하는 코드의 특정 부분을 가리키며, 임계 영역에 대한 상호 배제를 보장하는 것이 중요합니다.
상호 배제를 구현하는 다양한 동기화 기법은 다음과 같습니다.
뮤텍스(Mutex): 뮤텍스를 사용하여 서로의 접근을 제어할 수 있습니다. 하나의 스레드가 자원을 사용할 때 뮤텍스를 잠그고, 사용이 끝나면 해제하여 다른 스레드가 접근할 수 있도록 합니다.
세마포(Semaphore): 세마포는 일정 수의 스레드가 동시에 자원에 접근할 수 있도록 허용하며, 이를 통해 더 유연한 동기화가 가능합니다.
모니터(Monitor): 모니터는 객체 지향 프로그래밍에서 자원 접근을 제어하는데 유용하며, 임계 영역을 쉽게 정의하고 관리할 수 있습니다.
조건 변수(Condition Variables): 스레드가 특정 조건이 충족될 때까지 대기하도록 하고, 다른 스레드가 그 조건을 만족시키면 대기 중인 스레드가 다시 실행되도록 하는 기법입니다.
임계 영역의 효율적인 설계를 위한 주요 원칙들은 다음과 같습니다.
상호 배제(Mutual Exclusion): 한 프로세스가 임계 구역에 진입했다면, 다른 프로세스는 임계 구역 안으로 들어올 수 없습니다.
진행(Progress): 임계 구역에 진입한 프로세스가 없다면, 임계 구역에 들어가려는 프로세스는 임계 구역 안으로 들어갈 수 있어야 합니다.
유한 대기(Bounded Waiting): 어떤 프로세스가 임계 구역에 접근하려고 한다면, 그 프로세스는 언젠가는 임계 구역 안으로 들어올 수 있어야 합니다.
[결론] 말이야 쉽지요. ㅋㅋㅋ
'컴퓨터책' 카테고리의 다른 글
[혼공컴운] 혼공학습단 13기 활동 회고((1.01^365=?) (1) | 2025.02.23 |
---|---|
[혼공컴운] 6주차_컴퓨터 구조+운영체제 14장~15장 & 책리뷰 (0) | 2025.01.19 |
[혼공컴운] 4주차_컴퓨터 구조+운영체제 09장~11장 (0) | 2025.01.19 |
[혼공컴운] 3주차_컴퓨터 구조+운영체제 06장 ~ 08장 (0) | 2025.01.18 |
[혼공컴운] 2주차_컴퓨터 구조+운영체제 04장 ~ 05장 (0) | 2025.01.14 |