동기화(Synchronizarion)
동시다발적으로 실행되는 프로세스들을
올바르게 수행하기 위해서는
실행 순서와 자원의 일관성을 보장할 수 있는
동기화 작업이 필요하다.
프로세스 동기화란 프로세스들 사이의
수행 시기를 맞추는 것을 의미한다.
동기화에는 실행 순서 제어를 위한 동기화와
상호 배제를 위한 동기화가 있다.
동기화 종류 | 설명 |
실행 순서 제어를 위한 동기화 | 프로세스를 올바른 순서대로 실행 |
상호 배제를 위한 동기화 | 동시 접근 불가 자원에 하나의 프로세스 씩 접근 |
실행 순서 제어를 위한 동기화
어떠한 텍스트 파일을 읽는다고 가정했을 때
읽기 프로세스와 쓰기 프로세스가 동시에
실행되더라도 이들의 순서가 뒤엉켜선 안 된다.
쓰기 프로세스가 해당 텍스트 파일에
정보를 저장하기도 전에
읽기 프로세스를 실행하는 것은
올바른 흐름이 아니기 때문이다.
이렇듯 동시에 실행되는 프로세스를
올바른 순서대로 실행하는 것을
실행 순서 제어를 위한 동기화라고 한다.
상호 배제를 위한 동기화
상호 배제(Mutual exclusion)란
공유가 불가능한 자원을
동시에 사용하지 못하게 하는 알고리즘이다.
서로 다른 프로세스가 같은 자원에
접근하여 실행될 경우 해당 자원의 값이
의도대로 계산되지 않을 수 있는
'생산자와 소비자 문제'를 피하기 위함이다.
공유 자원과 임계 구역
위에서 말한 동시에 접근해서는 안 되는 자원을
공유 자원(Shared resource)라고 하며,
이러한 공유 자원에는 전역 변수, 파일,
입출력장치, 보조기억장치가 해당될 수 있다.
그리고 이 공유 자원에 접근하는 코드 영역을
임계 구역(Critical section)이라고 한다.
두 개 이상의 프로세스가
임계 구역에 접근하고자 하면
둘 중 하나는 대기해야 한다.
반대로, 여러 프로세스가 임계 구역에
접근하고자 하여 발생하는 문제를
레이스 컨디션(Race condition)이라고 한다.
임계 구역 문제 해결
원칙 종류 | 설명 |
상호 배제(Mutual exclusion) | 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 임계 구역에 진입할 수 없다. |
진행(Progress) | 아무도 임계 구역에 진입하지 않았다면 진입을 원하는 프로세스는 들어갈 수 있어야 한다. |
유한 대기(Bounded waiting) | 한 프로세스가 임계 구역 진입을 원한다면 언젠가는 들어갈 수 있어야 한다. |
레이스 컨디션을 방지하기 위해서,
즉 상호 배제를 위한 동기화를 위해서
운영체제는 위와 같은 세 가지 원칙을 지킨다.
'개인 학습 > 운영체제' 카테고리의 다른 글
14 - 교착 상태 (0) | 2023.02.09 |
---|---|
13 - 동기화 기법의 종류 (0) | 2023.02.09 |
11 - CPU 스케줄링 알고리즘 (0) | 2023.02.09 |
10 - CPU 스케줄링 (0) | 2023.02.09 |
09 - 스레드 (0) | 2023.02.06 |