KOCW에서 제공하는 경성대학교 양희재 교수 운영체제 강의를 듣고 정리한 글 입니다.
1. 전통적 동기화 문제
- 1) 생산자-소비자 문제 Bounded Buffer Problem
- 2) 공유 데이터베이스 접근 Readers-Writers Problem
- 3) 식사하는 철학자 문제 Dining Philosopher Problem
1) 생산자-소비자 문제 Bounded Buffer Problem
(1) 생산자-소비자 문제
- 생산자 프로세스가 데이터를 생산하면 소비자 프로세스는 그것을 소비한다.
- -> 버퍼는 생산자와 소비자가 모두 접근하는 임계 구역인 셈이다.
- -> 세마포어를 사용해서 상호 배제로 문제를 해결할 수 있다.
- 예) 컴파일러(생산) > 어셈블러(소비), 파일 서버(생산) > 클라이언트(소비), 웹 서버(생산) > 웹 클라이언트(서버)
[운영체제] 동기화 예제 1) 생산자-소비자 문제
1. 생산자-소비자 문제 Bounded Buffer Problem1) 생산자-소비자 문제생산자 프로세스가 데이터를 생산하면 소비자 프로세스는 그것을 소비한다.-> 버퍼는 생산자와 소비자가 모두 접근하는 임계 구역
almighty-denver.tistory.com
세마포어를 사용해 임계구역 문제를 해결했고,
세마포어 2개를 추가해 busy wait 문제를 해결했다.
2) 공유 데이터베이스 접근 Readers-Writers Problem
[운영체제] 동기화 예제 2) 공유 데이터베이스 접근 문제
1. 공유 데이터베이스 접근 문제 Readers-Writers Problem1) 공유 데이터베이스 접근 문제Reader : 데이터 읽기만. 수정 안함Writer : 데이터 읽고, 수정DB를 임계구역으로 다수 사용자 상호 배타적으로 접
almighty-denver.tistory.com
3) 식사하는 철학자 문제 Dining Philosopher Problem
(1) 식사하는 철학자 문제
동기화 문제 해결하다보니 교착 상태 발생했다.
(2) 교착 상태
교착 상태란?
: 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태
교착상태 필요 조건
- Mutual exclusion (상호배타)
- Hold and wait (보유 및 대기)
- No Preemption (비선점) : 자원 할당 받으면 스스로 반납할 때 까지 자원 사용하도록 허용 (뺏지 않음)
- Circular wait (환형대기) (자원 할당도 상에 원이 만들어짐)
- -> 이 네 조건을 다 만족하면 교착상태가 발생할 수도있다.
자원 할당도란?
- 아래 두가지를 나타낼 수 있는 방법
- 어떤 자원이 어떤 프로세스에게 할당되었는가?
- 어떤 프로세스가 어떤 자원을 할당 받으려고 기다리고 있는가?
- 자원: 사각형, 프로세스: 원, 할당: 화살표
- 자원할당도에서 알 수 있는것
- R1에 점 : 리소스 1개이다.
- R1->P2 : P2가 R1 사용중이다.
- P2가 R1 사용하려고 요청중이다.
데드락이 일어났을 때 자원 할당도
데드락이 일어나지 않게 하는 방법
: 교착상태 필요조건 중 하나라도 만족시키지 않으면 된다.
환형 대기를 깨는 방법
짝수번 프로세스는 왼, 오른쪽 들기,
홀수번 프로세스는 오, 왼쪽 들기
이렇게 바꾸면 환형 대기가 생기지 않는다.
'CS > OS' 카테고리의 다른 글
[운영체제] 동기화 예제 2) 공유 데이터베이스 접근 문제 (0) | 2024.12.11 |
---|---|
[운영체제] 동기화 예제 1) 생산자-소비자 문제 (0) | 2024.12.11 |
[운영체제] 6. 프로세스 동기화 도구 : 세마포어 Semaphore (0) | 2024.12.11 |
[운영체제] 5. 은행 계좌 문제 (임계 구역 문제, 세마포어) (0) | 2024.12.11 |
[운영체제] 3-5주차. 프로세스 관리(스케줄링, 동기화) (1) | 2024.12.10 |