프로세스들은 실행 순서와 자원의 일관성을 보장해야 하기에 반드시 동기화(Synchronization)되어야 함
동기화란?
: 수행 시기를 맞추는 것을 의미한다.
프로세스 동기화
: 프로세스들 사이의 수행 시기를 맞추는 것을 의미하며, 2가지를 뜻한다.
실행 순서 제어: 프로세스를 올바른 순서대로 실행상호 배제: 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기
공유 자원 (Shared Resource)
: 공동으로 이용하는 변수, 파일 장치 등의 자원
임계 구역 (Critical Section)
: 공유 자원에 접근하는 코드 중 동시에 실행하면 문제가 발생하는 코드 영역
임계 구역에 동시에 접근하면 자원의 일관성이 깨질 수 있고, 이를레이스 컨디션(race condition)이라 함레이스 컨디션이 발생하면❓
: 데이터의 일관성이 깨지는 문제 발생
레이스 컨디션이 발생하는 이유❓
: 한 줄의 고급 언어를 여러 줄의 저급 언어로 변환하는 과정에서, 문맥 교환이 일어난다면 문제가 발생
운영체제가 임계구역 문제를 해결하는 세 가지 원칙
상호 배제 (Mutual exclusion)
: 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 들어올 수 없음진행 (Progress)
: 임계 구역에 어떤 프로세스도 진입하지 않았다면 진입하고자 하는 프로세스는 들어갈 수 있어야 함유한 대기 (Bounded waiting)
: 한 프로세스가 임계 구역에 진입하고 싶다면 언젠가는 임계 구역에 들어올 수 있어야 함
(임계 구역에 들어오기 위해 무한정 대기해서는 안됨)
<출처>
"혼자 공부하는 컴퓨터구조+운영체제".강민철.https://www.youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl (2023.05.06)
책과 강의를 통해 학습한 내용을 요약 정리했습니다.