Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 자바스크립트
- 구조 분해 할당
- javacript
- MongoDB
- 객체
- nodemailer
- AGGREGATE
- nest
- 이메일 전송
- 로그스태시
- 위크맵
- 참조에 의한 객체 복사
- 화살표 함수
- nestjs
- JSON.stringify
- Map
- 중첩 구조 분해
- JavaScript
- TypeScript
- 캐러셀
- JSON.parse
- 위크셋
- react-slick
- DB
- 카카오로그인
- nextjs
- 카카오 소셜로그인
- Mongoose
- logstash
- context switch
Archives
- Today
- Total
뚜sh뚜sh
Process Synchronization3 본문
Classical Problems of Synchronization
- Bounded-Buffer Problem(Producer-Consumer Problem)
- Readers and Writers Problem
- Dining-Philosophers Problem
Bounded-Buffer Problem(Producer-Consumer Problem)
Readers-Writers Problem
- 한 process가 DB에 write 중일 때 다른 process가 접근하면 안 됨
- read는 동시에 여럿이 해도 됨
- solution
- Writer가 DB에 접근 허가를 아직 얻지 못한 상태에서는 모든 대기 중인 Reader들을 다 DB에 접근하게 해 준다
- Writer는 대기 중인 Reader가 하나도 없을 때 DB접근이 허용된다
- 일단 Writer가 DB에 접근 중이면 Reader들은 접근이 금지된다
- Writer가 DB에서 빠져나가야만 Reader의 접근이 허용된다
Dining-Philosophers Problem
- 앞의 solution의 문제점
- Deadlock 가능성이 있다
- 모든 철학자가 동시에 배가 고파져 왼쪽 젓가락을 집어버린 경우
- 해결 방안
- 4명의 철학자만이 테이블에 동시에 앉을 수 있도록 한다
- 젓가락을 두 개 모두 집을 수 있을 때에만 젓가락을 집을 수 있게 한다
- 비대칭 : 짝수(홀수) 철학자는 왼쪽(오른쪽) 젓가락부터 집도록
Monitor
- Semaphore의 문제점
- 코딩하기 힘들다
- 정확성(correctness)의 입증이 어렵다
- 자발적 협력(voluntary cooperation)이 필요하다
- 한번의 실수가 모든 시스템에 치명적 영향
- 예
- 동시 수행중인 프로세스 사이에서 abstract data type의 안전한 공유를 보장하기 위한 high-level synchronization construct
- 모니터 내에서는 한번에 하나의 프로세스만이 활동 가능
- 프로그래머가 동기화 제약 조건을 명시적으로 코딩할 필요없음
- 프로세스가 모니터 안에서 기다릴 수 있도록 하기 위해 condition variable 사용
'운영체제' 카테고리의 다른 글
Deadlock2 (0) | 2023.07.10 |
---|---|
Deadlock1 (0) | 2023.06.22 |
Process Synchronization2 (0) | 2023.06.19 |
Process Synchronization1 (0) | 2023.06.14 |
CPU Scheduling2 (0) | 2023.06.14 |
Comments