TechY
Process Synchronization 3 본문
kocw 강의 : 이화여자대학교 반효경 교수님의 운영 체제 강의,14강 process syncrhonization
Bounded-Buffer Problem (producer-consumer problem)
- syncrhonization issue
- multiple producer가 buffer의 특정 위치에 동시에 데이터를 집어넣으면? -> lock 이 필요해 보임
- multiple consumer가 같은 데이터를 꺼내려고 한다면? -> lock 이 필요해 보임
-> mutual exclustion -> need binary semaphore
- finite buffer issue
- buffer가 다 찼는데, producer가 계속 데이터를 밀어넣으면? -> consumer가 꺼내가서 buffer가 빌 때까지 기다려야 함
- consumer가 뭘 가져가려 하는데, buffer에 있는 데이터가 0인 경우 -> producer가 넣어줄 때까지 기다려야 함
-> resource count -> need integer semaphore
Readers-Writers Problem
- 한 Processrk DB에 write 중일 때 다른 Process가 접근하면 안됨
- read는 동시에 여럿이 해도 됨
- solution
- writer가 DB에 접근 허가를 아직 얻지 못한 상태에서는 모든 대기 중인 reader들을 다 db에 접근하게 해준다
- writer는 대기 중인 reader가 하나도 없을 때 db 접근이 가능하다
- 일단 writer가 db 접근 중이면 reader들은 접근이 금지된다
- issue
- writer에 대한 starvation 발생 가능
- writer가 어느 정도 기다리게 되면, reader가 더 들어와도 받아주지 않는 등의 대안이 필요하다. 수업에서 다루지는 않음
- writer에 대한 starvation 발생 가능
Dining-Philosophers Problem
철학자들이 간헐적으로 밥을 먹는데, 양쪽에 있는 젓가락을 필요로 한다.
- deadlock 가능성이 있다
- 모든 철학자가 동시에 배가 고파져서 왼쪽 젓가락을 집어버린 경우
- solution
- 4명의 철학자만이 테이블에 동시에 앉게 한다
- 젓가락을 두 개 집을 수 있을 때에만 젓가락을 집을 수 있게 함
- 비대칭
- 짝수 (홀수) 철학자는 왼쪽 (오른쪽) 젓가락부터 집도록
Monitor
- semaphore의 문제점
- 코딩하기 힘들다
- 정확성의 입증이 어렵다
- 자발적 협력이 필요하다
- 한번의 실수가 모든 시스템에 치명적 영향
- ex)
- V(mutex) -> P(mutex) : mutual exclusion 깨짐
- P(mutex) -> P(mutex) : deadlock
- monitor
- 동시 수행 중인 프로세스 사이에서 abstract data type의 안전한 공유를 보장하기 위한 high-level syncrhonization construct
- 모니터 내에서는 한번에 하나의 프로세스만 활동 가능
- 프로그래머가 동기화 제약 조건을 명시적으로 코딩할 필요없음
- condition variable 사용 (condition x)
- wait : 해당 프로세스는 다른 프로세스가 signal을 invoke 하기 전까지 suspend
- signal : 정확하게 하나의 suspend 된 프로세스를 resume, 없으면 아무 일도 일어나지 않음
점점 하다보니깐 어려워져서 길을 잃을 것만 같아서 mutex, semaphore, monitor 이렇게 세 가지 개념을 좀 정리하고 가려 한다.
Mutex (Mutual Exclusion)
- 목적 : 한 번에 하나의 스레드만 공유 자원에 접근할 수 있게 함
- 작동 방식 : 한 스레드가 mutex를 얻으면 다른 스레드는 mutex가 풀릴 때까지 기다림
- 특징 :
- mutex는 자원을 잠근 프로세스만이 잠금을 해제할 수 있다
- binary 상태를 가진다. (locked, unlocked)
- mutex는 binary semaphore이자 lock 에 대한 소유권을 갖고 있는 semaphore의 한 형태
- 주로 단일 자원에만 사용
Semaphore
- 목적 : 여러 스레드가 제한된 수의 자원에 동시에 접근할 수 있도록 조율
- 작동 방식 : semaphore는 counter를 갖고 있고, 스레드가 자원에 접근할 때마다 counter를 줄이며, 자원이 부족하면 대기시킴
- 특징 :
- semaphore는 0이상의 값을 가지며, 이 값은 자원의 사용 가능 수를 나타냄
- binary semaphore : mutex처럼 작동 but 소유권이 없음
- counting semaphore: 여러 자원을 제어할 수 있음
- 소유권이 없음 : 어떤 스레드든 lock 해제 가능
설계 철학에서, Mutex는 "이 자원은 한 번에 딱 하나의 주체만 사용할 수 있어야 한다"는 강한 제약이 필요할 때 사용.
Semaphore는 "이 자원을 여러 개 사용 가능하지만, 제한된 개수 내에서만"이라는 유연성이 필요할 때 사용.
'[개발 정리] > [OS]' 카테고리의 다른 글
Process Synchronization 2 (2) | 2024.12.11 |
---|---|
Process Synchronization 1 (1) | 2024.12.05 |
CPU Scheduling 3 (0) | 2024.12.05 |
CPU Scheduling 2 (0) | 2024.12.03 |
CPU Scheduling 1 (0) | 2024.11.27 |