본문 바로가기
CS/OS

[운영체제] 6. 동기화 문제

by DenverAlmighty 2024. 12. 11.

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 사용하려고 요청중이다.

 

 

데드락이 일어났을 때 자원 할당도 

데드락이 일어났을 때 자원 할당도

데드락이 일어나지 않게 하는 방법

: 교착상태 필요조건 중 하나라도 만족시키지 않으면 된다.

 

환형 대기를 깨는 방법

짝수번 프로세스는 왼, 오른쪽 들기,

홀수번 프로세스는 오, 왼쪽 들기

이렇게 바꾸면 환형 대기가 생기지 않는다.