본문 바로가기
OS(운영체제)

동기화 (Synchronization) - (1)

by 걸어가는 신사 2021. 12. 9.
동기화란 여러 프로세스가 공유하는 자원의 일관성(Consistency)을 유지하는 것이다.

1. 경쟁조건 (Race Condition)

(1) 경쟁 조건

  • 여러 프로세스들이 동일한 데이터에 동시에 접근해서 조작할 수 있다.
  • 이 경우 실행 결과 값은 접근과 갱신이 일어나는 순서에 따라 달라질 수 있다.

(2) Example

  • counter 변수 값이 현재 5이고, 생산자와 소비자가 동시에 "counter++"와 "counter--" 명령을 수행한다고 하자.
  • 이 두 명령의 실행 순서에 따라, counter 변수 값을 올바른 값인 5가 될 수 있으나, 원치 않게 4나 6이 될 수 있다.
  • counter++ 명령어
    • register1 = counter
    • register1 = register1 + 1
    • counter = register1
  • counter-- 명령어
    • register2 = counter
    • register2 = register2 - 1
    • counter = register2
  • 위 실행이 "counter = 5"에서 다음과 같이 섞여 수행되었다고 가정
    • S0: 생산자가 수행 register1 = counter {register1 = 5}
    • S1: 생산자가 수행 register1 = register1 + 1 {register1 = 6}
    • S2: 소비자가 수행 register2 = counter {register2 = 5}
    • S3: 소비자가 수행 register2 = register2 - 1 {register2 = 4}
    • S4: 생산자가 수행 counter = register1 {counter = 6}
    • S5: 소비자가 수행 counter = register2 {counter = 4}
    • counter = 4

(3) 동기화의 필요성

  • 경쟁 조건에 의해 불확실한 상태에 도달할 수 있다.
  • 두 개 이상의 프로세스가 동시에 하나의 변수를 조작하는 것을 허용했기 때문이다.
  • 경쟁 조건의 예방을 위하여
    • 한 번에 오직 하나의 프로세스만이 특정 변수를 조작하는 것을 보장할 필요가 있다.
    • 프로세스들은 동기화(Synchronization)될 필요가 있다.

 

2. 임계 구역 문제 (Critical Section Problem)

(1) 임계 구역 (Critical Section)

둘 이상의 process가 동시에 접근해서는 안 되는 공유 자원을 접근하는 코드의 일부
  • 한 프로세스가 자신의 임계구역에서 수행하는 동안에는 다른 프로세스들은 그들의 임계 구역에 들어갈 수 없다.
  • 각 프로세스는 자신의 임계구역으로 진입하려면 집입 허가를 요청해야 한다.

(2) 해결을 위한 세 가지 요구 조건

Critical-Section Problem을 해결하기 위해 3가지 조건을 모두 만족해야 한다.

(i) 상호 배제 (mutual exclusion)

  • 프로세스가 자기의 임계 구역에서 실행된다면, 다른 프로세스들은 그들 자신의 임계구역에서 실행될 수 없다.

(ii) 진행 (progress)

  • 자기의 임계 구역에서 실행되는 프로세스가 없고 그들 자신의 임계구역으로 진입하려고 하는 프로세스들이 있다면, 나머지 구역에서 실행 중이지 않은 프로세스들만 다음에 누가 그 임계구역으로 진입할 수 있는지를 결정하는 데 참여할 수 있으며, 이 선택은 무한정 연기될 수 없다.

(iii) 한정된 대기 (bounded waiting)

  • 프로세스가 자신의 임계구역에 진입하려는 요청을 한 후부터 그 요청이 허용될 때까지 다른 프로세스들이 그들 자신의 임계구역에 진입하도록 허용되는 횟수에 한계가 있어야 한다.

(3) 운영체제가 임계 구역을 다루는 두 가지 접근법

(i) 비선점형 커널

  • 실행 중인 프로세스가 하나밖에 없기 때문에 커널 자료구조에 대한 경쟁조건은 발생하지 않는다.

(ii) 선점형 커널

  • 설계하는 것이 매우 어렵지만, 선점형 커널이 응답성이 높고 실시간 프로그래밍에 적당하므로 선점형을 선호

 

 

 

반응형

'OS(운영체제)' 카테고리의 다른 글

교착 상태 (Deadlocks)  (0) 2021.12.09
동기화 (Synchronization) - (2)  (0) 2021.12.09
쓰레드 (Thread)  (0) 2021.12.09
프레임 할당 (Allocation of Frames)  (0) 2021.12.09
페이지 교체 (Page Replacement)  (0) 2021.12.09

댓글