Study/CS

[운영체제] Process Synchronization 1, 2

Reese 2023. 5. 24. 14:23

Initial Attempts to Solve Problem

  • 두 개의 프로세스가 있다고 가정 P0, P1
  • 프로세스들의 일반적인 구조

  • 프로세스들은 수행의 동기화(synchronize)를 위해 몇몇 변수를 공유할 수 있다 → synchronization variable

프로그램적 해결법의 충족 조건

  • Mutual Exclusion (상호 배제)
    • 프로세스 Pi가 critical section 부분을 수행 중이면 다른 모든 프로세스들은 그들의 critical section에 들어가면 안 된다
  • Progress (진행)
    • 아무도 critical section에 있지 않은 상태에서 critical section에 들어가고자 하는 프로세스가 있으면 critical section에 들어가게 해주어야 한다
  • Bounded Waiting (유한 대기)
    • 프로세스가 critical section에 들어가려고 요청한 후부터 그 요청이 허용될 때까지 다른 프로세스들이 critical section에 들어가는 횟수에 한계가 있어야 한다
  • 가정
    • 모든 프로세스의 수행 속도는 0보다 크다
    • 프로세스들 간의 상대적인 수행 속도는 가정하지 않는다

Synchronization Hardware

  • H/W적으로 Test&modify를 atomic하게 수행할 수 있도록 지원하는 경우 앞의 문제는 간단히 해결
  • Mutual Exclusion with Test & Set


Semaphores

  • 앞의 방식들을 추상화시킴
  • Semaphore S
    • integer variable
    • 아래의 두 가지 atomic 연산에 의해서만 접근 가능


프로세스의 상태


Block / Wakeup Implementation

  • Semaphore를 다음과 같이 정의
  • block과 wakeup을 다음과 같이 가정
    • block
      • 커널을 block 호출한 프로세스를 suspend시킴
      • 이 프로세스의 PCB를 semaphore에 대한 wait queue에 넣음
    • wakeup(P)
      • block된 프로세스 P를 wake 시킴
      • 이 프로세스의 PCB를 ready queue로 옮김


Two Types of Semaphores

  • Counting semaphore
    • 도메인이 0 이상인 임의의 정수값
    • 주로 resource counting에 사용
  • Binary semaphore (=mutex)
    • 0 or 1 값만 가질 수 있는 semaphore
    • 주로 mutual exclusion (lock/unlock)에 사용

'Study > CS' 카테고리의 다른 글

[운영체제] CPU Scheduling  (0) 2023.05.22
[운영체제] 프로세스 관리 1, 2  (0) 2023.05.17
[운영체제] 프로세스 2, 3  (0) 2023.05.15
[운영체제] 프로세스 1  (0) 2023.05.06
[운영체제] 컴퓨터시스템의 구조 2  (1) 2023.04.30