마지막챕터 : 컴퓨터
[ 소통을 원하지는 않습니다 ]
임계구역 (1)
[혼공컴운] 5주차_컴퓨터 구조+운영체제 12장~13장

 

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): 어떤 프로세스가 임계 구역에 접근하려고 한다면, 그 프로세스는 언젠가는 임계 구역 안으로 들어올 수 있어야 합니다. 

 

 

[결론] 말이야 쉽지요. ㅋㅋㅋ

  Comments,     Trackbacks