본문 바로가기
컴퓨터공학

26. 동기화

by 이면지91 2024. 10. 30.

 

동시다발적으로 실행되는 프로세스와 스레드들은 서로 협력하며 영향을 주고받는다. 이 과정에서 자원의 일관성을 보장해야 한다.

그러기 위해서는 프로세스들의 동기화를 고려해야 한다.

1.  동기화의 의미

프로세스 동기화란 프로세스들의 수행 시기를 맞추는 것

  • 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하는 것
  • 상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하는 것

1) 실행 순서 제어를 위한 동기화 : reader writer problem

  • Writer : Book.txt 파일에 값을 저장하는 프로세스
  • Reader : Book.txt 파일에 저장된 값을 읽어 들이는 프로세스

 Reader와 Writer 프로세스는 실행의 순서가 있다.

 Reader 프로세스는 'Book.txt 안에 값이 존재한다'는 특정 조건이 만족되어야만 실행이 가능하다.

 

2) 상호 배제를 위한 동기화 : Bank account problem

 한번에 하나의 프로세스만 접근해야 하는 자원에 동시 접근을 피하기 위한 동기화

2. 동기화 예제

Producer & Consumer problem

 

- 물건을 계속해서 생산하는 생산자

- 물건을 계속해서 소비하는 소비자

 

'총합' 변수 공유

총합 = 10
생산자 () {
      버퍼에 데이터 삽입
      '총합'변수 1 증가
}
소비자 () {
      버퍼에서 데이터 빼내기
      '총합'변수 1 감소
}

 

이 상태에서 생산자를 100,000번 소비자를 100,000번 실행하면 '총합'은? 0과 다른 값이 되거나 오류가 발생하기도 한다.

이러한 문제는 동기화가 되지 않았기 때문에 발생한다.

동시에 접근해서는 안 되는 자원( 총합 )에 동시에 접근해서 발생한 문제다.

3. 공유 자원과 임계 구역

공유 자원 : 여러 프로세스 혹은 스레드가 공유하는 자원 ( 전역 변수, 파일, 입출력장치, 보조기억장치 등 )

 

임계 구역 : 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역 ( 앞선 예시의 '총합'변수 )

 

임계 구역에 진입하고자 하면 진입한 프로세스 이외에는 대기해야 한다.  

 

임계 구역에 동시에 접근하면 자원의 일관성이 깨질 수 있는데 이를 레이스 컨디션_race condition이라고 한다.

 

 

 

 

운영체제가 임계구역 문제를 해결하는 세 가지 원칙
상호 배제와 동기화를 위한 세가지 원칙

 

  1. 상호 배제 mutual exclusion : 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 들어올 수 없다.
  2. 진행 progress : 임계 구역에 어떤 프로세스도 진입하지 않았다면 진입하고자 하는 프로세스는 들어갈 수 있어야 한다.
  3. 유한 대기 bounded waiting : 한 프로세스가 임계 구역에 진입하고 싶다면 언젠가는 임계 구역에 들어올 수 있어야 한다.

'컴퓨터공학' 카테고리의 다른 글

28. 교착상태_데드락  (0) 2024.10.31
27. 동기화 기법  (0) 2024.10.30
25. CPU 스케줄링 알고리즘  (0) 2024.10.28
24. CPU 스케줄링  (0) 2024.10.26
23. 스레드  (0) 2024.10.25