[OS] Lecture 6. Process Synchronization and Mutual Exclusion 6_7 - kibitzing/EnGrow GitHub Wiki

유튜브 링크

진구

  • 은행 번호표 비유 너무 좋음. 이해가 착 됐다.
  • busy waiting에 이어 starvation 해결
  • 교수님이 해보라고 하는데 안 해보니 점점 이해와 거리가 멀어지는 것 같다.
    • 모아서 한번 해봐야지..

세영

Sequencer

  • 은행 번호표같은 느낌
  • 0부터 계속 증가하는 값이고, 감소하지 않아서 사건의 발생 순서 유지
  • ticket() 연산으로만 접근 가능

ticket(S)

  • 현재까지 ticket() 연산이 호출된 횟수를 반환
  • One instruction cycle

Eventcount

  • 은행 번호판같은 느낌
  • 똑같이 0부터 시작하고 감소하지 않는 값
  • 특정 사건의 발생 횟수를 기록하는 값
  • read(E), advance(E), await(E, v) 연산으로만 접근 가능

read(E)

  • 현재 event count값을 반환

advance(E)

  • E += 1
  • E를 기다리고 있는 프로세스를 깨움 (다음 대기자 호출)

await(E, v)

  • v는 번호표, E는 번호판 숫자
  • E < v이면 queue[E]에 프로세스 전달 및 스케줄러 호출

Event Count / Sequencer로 세마포어의 단점이었던 Starvation을 해결