본문 바로가기

CS/OS2

Semaphore와 Mutex? Semaphore & Mutex - 세마포어와 뮤텍스는 모두 공유 자원에 대한 프로세스/쓰레드의 접근 제어 방법이다. Semaphore - 세마포어는 특정 변수 값의 갯수만큼 프로세스가 공유된 자원에 접근할 수 있도록 허용한다. - 기본적으로 Semaphore 변수, semWait 함수, semSignal 함수가 있다. Semaphore 변수 : 양수 값 (1일 경우 Binary Semaphore, 2 이상일 경우 General/Counting Semaphore) semWait 함수 : Semaphore 변수 값을 감소시키고 변수 값이 음수가 되면 semWait을 호출한 프로세스는 queue에 넣고 블록 상태로 들어간다. 음수가 아니라면 프로세스를 계속 수행한다. semSignal 함수 : Semapho.. 2021. 3. 24.
Deadlock의 개념 / 해결 방법 Deadlock 이란? - 두 개 이상의 작업이 서로 상대의 작업이 끝나기만을 기다리고 있어 더 이상 다음 단계로의 진행이 불가한 상태. - 한정된 자원을 둘 이상의 작업이 동시에 이용하려고 할 때 발생할 수 있다. - ex) Process1이 Resource1을 사용하고 있고, Resource2를 필요로 하고 Process2는 Resource2를 사용하고 있고, Resource1을 필요로 할 때, Process1은 Resource2를 Process2에 할당되어 있기 때문에 가져올 수 없다. 또한, Process2 역시 같은 이유로 Resource1을 가져올 수 없다. 그래서, 두 프로세스는 해당 자원을 받을 때 까지 무한정 대기하는 상황이 발생하는데, 이를 Deadlock이라고 한다. Deadlock .. 2021. 3. 24.