Skip to content

Latest commit

 

History

History
51 lines (27 loc) · 1.47 KB

5_2_병행제어.md

File metadata and controls

51 lines (27 loc) · 1.47 KB

병행제어 - (2)

동기화 문제 해결 방법

해결법 충족 조건

  • 상호 배제 Mutual Exclusion : 프로세스 A가 critical section을 수행중이면 다른 모든 프로세스는 그들의 critical section에 들어가면 안됨
  • 진행 Progress : 아무도 critical section에 있지 않은 상태에서 critical section에 들어가고자 하는 프로세스가 있으면 critical section에 들어가게 해주어야 한다.
  • 유한 대시 Bounded waiting : 프로세스가 critical section에 들어가려고 요청한 후부터 그 요청이 허용될 때까지 다른 프로세스들이 critical section에 들어가는 횟수에 한계가 있어야한다.

피터슨 알고리즘

  • critical section에 들어가길 원하는 상태에서 자신의 turn이면 critical section에 들어감

세마포어 - Busy/wait

  • 정수형, S는 여분의 자원의 개수를 나타냄
  • P, V 연산 두가지 있음
  • P : 자원 획득
  • V : 자원 반납
P 
while(S<=0) wait;
S--;

V
S++;

세마포어 - Block / Wakeup

  • block : 커널은 block을 호출한 프로세스를 suspend 시킴. 이 프로세스의 PCB를 세마포어에 대한 wait queue에 넣음
  • wakeup : 블럭된 프로세스 p를 wakeup시킴. 이 프로세스의 PCB를 ready queue로 옮김

Busy-wait VS Block/wakeup

  • CS 길이가 길면 Block/Wakeup 적당
  • CS 매우 짧으면 Block/Wakeup 오버헤드 커질수있음
  • 일반적으로는 Block/wakeup이 더 좋음