Deadlock 3

[운영체제] Deadlock 처리

오늘은 앞선 글에서 다룬 Deadlock에 대해서 OS는 어떻게 처리하는지 알아봅시다. Deadlock을 처리하는 방법 Deadlock을 처리하는 방법에는 3가지가 있습니다. Deadlock이 발생되지 않도록 예방하는 방법 Deadlock이 발생되었다면 이를 감지하고 해결하는 방법 Deadlock이 발생되어도 아무것도 하지 않는 방법 Deadlock 예방하기 우리는 이전 글에서 Deadlock이 발생하는 조건에 대해서 알아봤습니다. Mutual Exclusion, Hold-and-Wait, No Preemption, Circular wait. 이 네가지 조건을 모두 만족해야 Deadlock이 발생했었죠. 그렇다면 우리는 이 네 가지 조건 중 하나만 성립하지 않게 한다면 Deadlock이 발생되는 것을 막..

CS/OS 2023.10.21

[운영체제] Deadlock

오늘은 이전 포스팅들에서 간단히 언급되었던 Deadlock에 대해 다뤄보겠습니다. Deadlock 데드락. 우리는 이 개념을 설명하기 위해 Starvation이라는 개념을 먼저 소개했었습니다. Starvation은 프로세스가 critical section을 실행하려고 하는데, 다른 프로세스가 이미 critical section을 실행 중이여서 이를 위해 평소보다 오래 기다리는 상태를 의미합니다. 이에 확장 개념인 Deadlock은 Starvation이 영원히 지속되는 것을 의미합니다. 아래의 그림은 Deadlock을 아주 잘 나타내는 그림입니다. 데드락이 발생하는 경우 Reusable Resource 중 하나인 메모리의 할당량이 200Kb라고 해봅시다. P1, P2는 특정 용량만큼의 메모리를 요구하는 프..

CS/OS 2023.10.21

[운영체제] 5-1. 프로세스 동기화

오늘은 프로세스 동기화에 대해서 다뤄봅니다. 5장에서 다루는 내용들은 운영체제 분야에서 다소 중요한 개념이므로, 꼭 그리고 자세하고 정확하게 짚고 넘어갑시다. 동시성 제어(Concurrency Control) 프로세스 동기화에 대한 설명을 하기 전, 동시성 제어에 대해 짚고 넘어가봅시다. 단일 프로세서를 기준으로 사실 컴퓨터는 하나의 일만 처리하므로 동시라는 말이 어울리지 않을 수 있습니다. 하지만, 매우 빠른 속도로 여러가지 일을 동시에 처리하는 컴퓨터는 마치 사람이 보기에는 동시에 처리되는 것처럼 보일 수 있죠. 동시성을 제어한다는 것은, 프로세스(또는 쓰레드)가 매우 빠른 속도로 변화함에 따라 데이터에 혼란이 있을 수 있는 사태를 방지해야한다는 것을 의미합니다. 따라서, 우리는 이러한 컴퓨터 자원을..

CS/OS 2023.10.02