본문 바로가기
CS/운영체제

[OS] 프로세스 동기화

by yoon_seon 2023. 9. 9.

실행에 문맥을 갖고있는 모든 것들은 동기화 대상이다.

 

동시다발적으로 실행되는 프로세스(& 스레드)는 실행 순서와 자원의 일관성을 고려해야한다.

 

운영체제가 제공하는 동기화의 의미

1. 실행 순서 제어 : 프로세스를 올바른 순서로 실행하기

2. 상호 배제 : 자원의 일관성을 위해서 동시에 접근해서는 안되는 자원에 하나만 접근하기

 

운영체제에서 이야기하는 동기화 라는 것은 동시다발적으로 실행되는 프로세스와 스레드가 고려해야하는 것 중 하나인데 크게 실행 순서제어, 상호 배제로 나눌 수 있다. 실행 순서 제어는 프로세스 혹은 스레드를 올바른 순서대로 실행하는 것을 의미하고 상호 배제는 동시에 접근하면 안되는 자원에 하나만 접근하는 것을 의미한다.

 

실행 순서 제어를 위한 동기화의 예

다음과 같이 동시에 실행되는 프로세스가 두개 있다.

  1. Book.txt가 없다면 파일을 만들고 값을 쓰고 저장하는 프로세스
  2. Book.txt를 읽어 들이는 프로세스

파일이 있어야 읽을 수 있기 때문에 1 → 2 순으로 실행해야만 올바르게 실행된다.

 

상호 배제를 위한 동기화의 예

  1. 2만원 입금 프로세스
    1. 잔액을 읽어들인다.
    2. 잔액에 2만원을 더한다.
    3. 더한 값을 잔액에 저장한다.
  2. 5만원 입금 프로세스
    1. 잔액을 읽어들인다.
    2. 잔액에 5만원을 더한다.
    3. 더한 값을 잔액에 저장한다.

컨텍스트 스위칭이 일어나면서 저장한 잔액이 아닌 기본 잔액을 읽어 들어 최종잔액에 오류가 생길 수 있다.

이 문제를 해결하기 위해서는 잔액에 접근하기 전 이전 프로세스의 잔액 수정 작업이 끝나기를 기다린 후 작업을 해야 오류를 방지할 수 있다.

문제의 근본적인 발생 원인은 동시에 접근해서는 안되는 자원에 접근하였고, 상호배제를 위한 동기화가 이루어지지 않았기 때문이다.

 

⭐ 공유 자원과 임계 구역

  • 공유 자원 : 공동의 자원(파일, 전역변수, 입출력장치)
  • 임계 구역 : 동시에 접근하면 문제가 발생할 수 있는 공유자원에 접근하는 코드
  • 레이스 컨디션 : 임계구역을 동시에 실행하여 자원의 일관성이 깨지는 현상

정리

  • 운영체제에서 이야기하는 동기화 라는 것은 동시다발적으로 실행되는 프로세스와 스레드가 고려해야하는 것 중 하나인데 크게 실행 순서제어, 상호 배제로 나눌 수 있다. 실행 순서 제어는 프로세스 혹은 스레드를 올바른 순서대로 실행하는 것을 의미하고 상호 배제는 동시에 접근하면 안되는 자원에 하나만 접근하는 것을 의미한다.
  • 공유자원은 공동의 자원을 의미한다.
  • 임계 구역은 동시에 접근하면 문제가 발생할 수 있는 공유자원에 접근하는 코드를 의미한다.
  • 레이스 컨디션은 임계구역을 동시에 실행하여 자원의 일관성이 깨지는 현상을 의미한다.

 

'CS > 운영체제' 카테고리의 다른 글

[OS] 조건 변수와 모니터  (0) 2023.09.09
[OS] 뮤텍스 락과 세마포어  (0) 2023.09.09
[OS] 리눅스 스케줄링  (0) 2023.09.08
[OS] CPU 스케줄링 알고리즘  (0) 2023.09.08
[OS] CPU 스케줄링  (0) 2023.09.08

댓글