데드락 4

[ OS ] 11. 프로세스 동기화 - 데드락(Deadlock)과 해결방법

Deadlock RAG Resource Allocation Graph (자원 할당 그래프) 자원할당 그래프란, 프로세스의 자원 할당 상태를 표현해주는 그래프이다. 동그라미는 프로세스, 네모는 자원, 점은 자원의 Instance를 의미한다. 프로세스 -> 자원 : 프로세스가 해당 자원을 요청하는 것을 의미한다. 자원 -> 프로세스 : 프로세스가 해당 자원을 소유하는 것을 의미한다. 위 RAG는 Deadlock이 아니다. P3가 작업을 마치고 자원 R3을 반납한다면, P2는 R3를 할당받아 잡업을 수행할 수 있다. RAG에 Cycle이 존재 하지 않으면 Deadlock이 아니다. RAG에 Cycle이 존재 한다면, Deadlock일 수도, 아닐수도 있다. 위의 두 RAG모두 Cycle이 존재하지만, 왼쪽 그..

[ OS ] 10. 프로세스 동기화 - 전통적인 동기화 문제

전통적인 동기화 문제 1. Producer-Consumer Problem 생산자-소비자 문제 데이터를 생산하는 쪽이 생산자, 소비하는 쪽이 소비자이다. 생산자-소비자 문제란 생산자가 데이터를 생성하여 버퍼에 저장하고, 소비자가 버퍼에서 데이터를 가져와 소비하는 과정에서 발생할 수 있는 문제이다. 대표적으로 공유 자원에 대한 임계구역 문제와, busy waiting문제가 있으며 프로세스 동기화로 이 문제를 해결한다. 2. Readers - Writers Problem 독자-저자 문제 독자(Reader)는 데이터를 읽기만하는 프로세스, 저자(Write)는 읽고 수정하는 프로세스이다. 따라서 이들의 차이점은 데이터를 수정할 수 있느냐, 없느냐이다. 독저-저자 문제란 다수의 독자와 다수의 저자가 하나의 공통 데..

[ OS ] 09. 프로세스 동기화 - 우선순위 역전(Priority Inversion)과 상속(Inheritance)

Priority Inversion & Priority Inheritance 우선순위 역전과 우선순위 상속 이제 한번 progress(No Deadlock)하고, bounded-waiting(No Prioity Inversion)의 문제까지 해결해보자. 데드락 : 두 개 이상의 프로세스가 영원히 기다려야 한다. 우선순위 역전 : 높은 우선순위의 프로세스가 낮은 우선순위 프로세스에게 밀리는 현상 ## 예시 예를 들어 집에서 우선순위가 가장 높은 아빠가 TV를 보기 위해 막내에게 나가라고 한다. 근데 막내가 리모컨을 들고 나가면, 자발적으로 리모컨을 내려 놓을 때까지 티비를 보지 못한다. priority가 높음에도 불구하고 waiting queue에서 계속해서 기다리게 된다. 이를 priority-Inheri..

[ OS ] 07. 프로세스 동기화 - 임계영역문제의 해결책 ? Mutex, Semaphore !

앞서 총 두 가지의 임계영역 문제의 솔루션을 알아보았다. SW 솔루션 : Peterson's Algorithm HW 솔루션 : "test-and-set" , "compare-and-swap" 을 이용한 Atomic Variable HW instruction이다. 이제 조금 더 SW에서 고급 레벨의 솔루션을 알아 볼 것이다. Mutex (Binary Semaphore) : 가장 간단한 동기화 툴 (locking : 열쇠) Semaphore(Counting Semaphore) : 더욱 편리하고 효과적 Monitor : 뮤텍스와 세마포어의 단점을 극복 --> Java에서 생각하는 locking은 모두 Monitor이다. Lock 하드웨어 기반 해결책으로써, 동시에 공유 자원에 접근하는 것을 막기 위해 ..