CS/OS

[운영체제/OS] 데드락(Deadlock) 핸들링하기

0. 들어가면서 지난 시간에 데드락이란 무엇이며, 어떤 상황에서 발생할 수 있는지에 대한 필요조건에 대해 공부했습니다. 데드락이 발생하기 위한 필요조건 네 가지는 다음과 같았는데요. 1. 상호배제(Mutual Exclusion): Non-sharable한 resource가 존재해야 한다. 2. 점유대기(Hold and Wait): 프로세스는 Resource를 점유하고 있는 동시에 다른 프로세스가 들고 있는 Resource를 Wait하고 있다. 3. 비선점(No preemption): Resource는 자신을 점유하고있는 프로세스에 의해서만 release될 수 있다. 4. 순환대기(Circular wait): 2번 내용을 포함하고 있는데, 그래프에 Cycle이 있어야 한다는 것이다. 이 조건들을 설명하면서..

2021.06.14 게시됨

CS/OS

[운영체제/OS] 데드락(Deadlock)의 개념과 발생조건

🧐 0. 들어가면서 이전 포스팅까지 동기화(Synchronization) 이슈에 대해 공부했습니다. 동기화 이슈는 단일프로세서나 멀티프로세서 모두 일어날 수 있는 이슈였는데, 유저모드와 커널모드에서 System call의 리소스에 대한 중복 호출이나, Interrupt Handler가 접근하는 리소스가 중복되는 등의 문제로부터 야기될 수 있었습니다. 이번 시간부터 공부 할 데드락(Deadlock) 문제는 Multiple Process에서의 교착 상태 문제를 다루는 것입니다. 동기화 이슈와 약간 비슷한 느낌으로 사용할 수 있는 자원은 정해져있는데, 이 자원을 사용하고 싶은 다수의 프로세스가 존재할 때 발생하죠. 1. 데드락의 발생 상황 A set of blocked processes each holding..

2021.06.14 게시됨