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

유튜브 링크

진구

OS가 도와주는 기법 소개, 스핀락
비지웨이팅은 아직 해결 안됨
소프트웨어로 하다 자주 일어나고 os가 비교적 쉽게 풀어줄 수 있는 문제는 os단으로 넣어 버리는 듯..?ㅎㅎ


세영

Spinlock

  • 정수 변수 S
  • 초기화, P(), V() 연산으로만 접근 가능
    • 이 연산들은 원자성이 OS의 지원으로 보장됨
    • 전체 과정이 하나의 명령어 사이클로 수행됨
  • P: 대기 및 획득 (S = S - 1), V: 반환 (S = S + 1)
// P
void P(S) {
  while (S >= 0);
  S = S - 1;
}

// V
void V(S) {
  S = S + 1;
}
  • 단점:
    • Busy waiting
    • 멀티프로세서 시스템에서만 사용 가능 (선점형이기 때문에 OS가 while 을 돌고 있는 프로세스를 쫓아내지 못해서 무한 루프가 발생할 가능성이 존재)

Semaphore

  • 드디어 Busy waiting을 해결
  • 다음 영상..