아래 도서 기반 정리
운영체제 | Abraham Silberschatz - 교보문고
운영체제 | ▶ 이 책은 운영체제론을 다룬 이론서입니다. 운영체제론의 기초적이고 전반적인 내용을 학습할 수 있습니다.
product.kyobobook.co.kr
목차
- 고전적인 동기화 문제들
- 커널 안에서의 동기화
- POSIX 동기화
- JAVA에서의 동기화
- 대체 방안들
고전적인 동기화 문제들
유한 버퍼 문제 (The Bounded-Buffer Problem)
- 생산자 소비자 문제
Readers-Writers Problem
- Readers : 데이터를 읽기만하는 프로세스
- Writers : 데이터를 갱신하는 프로세스
reader가 동시에 공유데이터에 접근해도 문제가 발생하지 않는다.
그러나 여러 writer나 스레드가 동시에 접근하면 문제가 발생할 수 있다.
한 번에 하나의 writer가 공유데이터에 접근하도록 할 필요가 있다.
이러한 문제를 Reader-Writers 문제라고 한다.
Starvation problem
- reader 프로세스 우선순위를 높게 한다.
-> writer 프로세스가 공유 데이터에 접근 못 할 수 있다. - writer 프로세스의 우선순위를 높게 한다.
-> reader 프로세스가 공유 데이터에 접근 못 할 수 있다.
식사하는 철학자들 문제 (The Dining-Philosophers Problem)
- 음식 : data set
- 젓가락 : 공유 자원
- 철학자는 배가 고파지면, 자신의 왼쪽, 오른쪽에 있는 두 개의 젓가락을 집으려 시도한다.
- 철학자는 한 번에 하나의 젓가락만 집을 수도 있다.
- 이미 옆 사람이 잡은 젓가락을 집을 수는 없다.
- 철학자가 동시에 두 개의 젓가락을 집으면, 놓지 않고 식사를 한다.
- 식사를 마치면, 젓가락 두 개를 모두 놓고 다시 생각하기 시작한다.
이는 많은 부류의 병행 제어 문제의 한 예다.
교착 상태와 기아를 발생시키지 않고, 여러 스레드에게 여러 자원을 할당해야 할 필요를 표현한 문제다.
- Deadlock 문제
동시에 왼쪽 젓가락을 집으면, 젓가락이 모두 lock이 걸린다.
모두 자신의 오른쪽 lock이 풀리길 기다린다.
철학자들 해결방법
- 세마포어 해결안
- 각 젓가락을 하나의 세마포로 표현한다.
semaphore chopstick[5]; - 이 방법은 인접한 두 철학자가 동시에 식사하지 않는다는 것을 보장한다.
- 하지만 교착 상태를 야기할 수 있다.
- 각 젓가락을 하나의 세마포로 표현한다.
- 위의 교착상태 해결방법
- 최대 4명의 철학자만 앉게 한다.
- 한 철학자가 젓가락 두 개를 모두 집을 수 있을때만, 집도록 허용한다.
- 비대칭 해결한을 사용한다.
홀수 번호 철학자는 왼쪽 먼저 집고 오른쪽을 집는다.
짝수 번호 철학자는 오른쪽 젓가락을 집고 왼쪽 젓가락을 집는다.
- 모니터 해결방법
- 철학자가 양쪽 젓가락 모두 잡을 수 있을 때만 젓가락을 집을 수 있도록 강제한다.
- 이 방법은 두 철학자가 동시에 식사하지 않는 것과 교착 상태가 발생하지 않는다는 것을 보장한다.
- 그러나 기아문제가 발생할 수 있다.
JAVA에서의 동기화
대체 방안들
트랜잭션 메모리
데이터베이스의 트랜잭션 개념이다.
메모리 읽기와 쓰기 연산을 원자적인 연속적 순서로 수행한다.
모든 연산이 완료되면, 메모리 트랜잭션은 확정된다. (commit)
그렇지 않으면 그 시점까지 완수된 모든 연산은 취소되고, 트랜잭션 시작 이전 상태로 되돌린다. (roll-bakc)
함수형 언어
Erlang, Scala
함수형 언어는 변경 가능 상태를 허용하지 않기 때문에, race condition이나 데드락 상태와 같은 문제에 신경 쓸 필요가 없다.
OpenMP
'학교 > 운영체제' 카테고리의 다른 글
[운영체제] 9. 메인 메모리 (0) | 2023.02.04 |
---|---|
[운영체제] 8. Deadlocks (교착 상태) (0) | 2023.01.30 |
[운영체제] 6. 동기화 도구들 (0) | 2023.01.29 |
[운영체제] 5. CPU 스케줄링 (0) | 2023.01.18 |
[운영체제] 4. 스레드와 병행성 (Threads and Concurrency) (0) | 2023.01.18 |