01. 동기화(synchronization)의 의미
- 필요한 이유: 실행되는 프로세스들은 실행 순서와 자원의 일관성을 보장해야 하기 때문
- 프로세스의 동기화: 프로세스 사이의 수행 시기를 맞추는 것
- 실행 순서 제어: 프로세스를 올바른 순서대로 실행
- 상호 배제: 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근하게 하기
- 실행의 흐름을 갖는 모든 것들이 동기화의 대상(스레드 포함)
- 실행 순서 제어를 위한 동기화
- 한 프로세스의 결과값을 가지고 작업을 하는 경우, 선실행되어야 함
- 상호 배제를 위한 동기화(mutual exclusion)
- 공유가 불가능한 자원의 동시 사용을 피하기 위해 사용하는 알고리즘
02. 생산자와 소비자 문제
- 생산자: 물건을 계속해서 생성하는 역할
- 소비자: 물건을 계속해서 소비하는 역할
- 생산자와 소비자는 총합이라는 데이터를 공유하고 있음
- 동기화를 제대로 하지 않으면 총합이라는 공유 정보에 오류가 발생함
03. 공유 자원과 임계 구역
- 공유 자원(shared resources): 공동으로 사용하는 자원들을 의미
- 임계 구역(critical section): 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역
- 임계 영역에서 이미 다른 프로세스가 사용중이면 대기해야함
- 레이스 컨디션(race condition): 임계 영역은 두 개 이상의 프로세스가 동시에 실행되면 안되는 영역이지만, 잘못된 실행으로 인해 여러 프로세스가 동시다발적으로 임계 구역의 코드를 실행하여 문제가 발생하는 경우
- 데이터의 일관성이 깨짐
- 발생하는 이유: 고급 언어를 저급 언어로 바뀌어 실행하는데, 여러 줄의 저급 언어로 변환된 고급 언어 한 줄을 실행하는 과정에서 문맥 교환이 일어날 수 있음
- 임계 구역 문제 해결 방안 세가지
- 상호 배제(mutual exclusion): 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 임계 구역에 들어올 수 없음
- 진행(progress): 임계 구역에 어떤 프로세스도 진입하지 않았다면 임계 구역에 진입하고자 하는 프로세스는 들어갈 수 있어야 함
- 유한 대기(bounded waiting): 한 프로세스가 임계 구역에 진입하고 싶다면 그 프로세스는 언젠가는 임계 구역에 들어올 수 있어야 함
'CS 상식 - 운영체제' 카테고리의 다른 글
[CS 상식 - 운영체제] 교착 상태 (0) | 2025.02.19 |
---|---|
[CS 상식 - 운영체제] 동기화 기법 (2) | 2025.02.19 |
[CS 상식 - 운영체제] CPU 스케줄링 알고리즘 (1) | 2025.02.14 |
[CS 상식 - 네트워크] CPU 스케줄링 (0) | 2025.02.14 |
[CS 상식 - 운영체제] 병렬과 병행 (2) | 2025.02.10 |