본문 바로가기
Computer Science/Operating System

Synchronization

by Gofo 2021. 6. 19.

Synchronization

cooperating process나 thread의 목적은

  • resource를 공유하고,
  • 더 빠르게 작동하고,
  • modular 방식에서 시스템을 동작하는 것이다.

 

Shared resource에 동시에 접근하는 것은 non-deterministic 하거나 incorrect result를 초래할 수 있다.

프로세스나 스레드의 실행 순서에 따라서 프로그램 state나 output이 달라질 수 있다.

 

이를 방지하기 위해서 synchronization을 해야 한다.

 


Critical Section Problem

Race Condition

여러 프로세스가 동시에 shared resource에 접근해서 값을 바꾸려는 상황을 말한다.

최종적인 결과는 프로세스의 실행 순서에 따라서 달라진다.

 

Race condition을 방지하기 위해서 concurrent process들은 반드시 synchronize 되야 한다.

 

Race condition이 일어나는 code의 영역을 critical section이라 한다.

여러 프로세스/스레드들이 critical section에 동시에 접근하기 때문에 race condition이 발생하는 것이다.

 

Synchronization의 조건

Synchronization을 위해서 다음과 같은 조건을 만족해야 한다.

  • mutual exclusion
    • critical section에서 작업하는 것은 유일해야 한다.
    • 한 프로세스나 스레드가 접근해서 실행 중이라면 다른 프레세스/스레드는 접근하면 안된다.
  • progress
    • 어떤 경우에도 progress를 만들어 내야 한다.
    • 어떠한 프로세스/스레드도 critical section에 들어가지 못하고 무한루프에 빠져버리는 문제가 발생하기도 한다.
  • bounded waiting
    • 프로세스/스레드가 critical section에 들어가기 위해서 기다리는 시간이 제한되어야 한다.
    • 무한정 기다리는 것은 올바르지 않다.

 

Typical Approach

Critical section의 앞/뒤에 코드를 추가해서 synchronization을 수행한다.

 

'Computer Science > Operating System' 카테고리의 다른 글

Synchronization with Hardware Support  (0) 2021.06.19
Synchronization Algorithm  (0) 2021.06.19
CPU Scheduling Algorithm  (0) 2021.06.19
CPU Scheduling  (0) 2021.06.19
Multi-threading  (0) 2021.06.18

댓글