교착상태 3

[ 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 ] 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 하드웨어 기반 해결책으로써, 동시에 공유 자원에 접근하는 것을 막기 위해 ..