1. 공유 자원의 접근
공유자원은 여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등을 말한다.
공유 자원은 공동으로 이용되기 때문에 누가 언제 데이터를 읽거나 쓰느냐에 따라 그 결과가 달라질 수 있다.
따라서 프로세스 들의 공유 자원 접근 순서를 정하여 예상치 못한 문제가 발생하지 않도록 해야한다.
다수의 프로세스가 공유 자원을 병행적으로 읽거나 쓰는 상황을 경쟁 조건(race condition) 이라고 한다.
경쟁 상태가 발생하면 최종 수행 결과는 프로세스들의 수행 순서에 따라 달라진다.
경쟁 관계에 있는 프로세스들이 존재하는 경우
상호 배제(mutual exclution), 교착상태(dead lock), 기아(starvation) 세가지 문제가 발생한다.
상호배제 : 한 시점에 단 하나의 프로세스만이 임계영역에 들어갈 수 있다.
교착상태 : 두 프로세스가 서로 대기하면서 수행을 진행하지 못하는 상황
기아: 특정 프로세스가 오랜 기간 동안 자원을 사용하지 못하는 상태
2. 임계구역(critical section)
공유 자원 접근 순서에 따라 실행 결과가 달라지는 프로그램의 영역을 임계구역이라고 한다.
임계구역에서는 프로세스들이 동시에 작업하면 안된다.
한 프로세스가 임계구역에 들어가면 다른 프로세스는 밖에서 기다려야 한다.
3. 생산자-소비자 문제(producer - consumer problem)
임계구역과 관련된 전통적인 문제이다.
생산자 프로세스와 소비자 프로세스가 서로 독립적으로 작업
생산자 : 계속 물건을 생산해서 버퍼에 넣음
소비자 : 계속 버퍼에서 물건을 가져옴.
버퍼는 작업을 계속하기 위해 원형 버퍼를 사용하고, 전역변수 sum에는 현재 버퍼에 있는 상품 총 수 저장
-----> 생산자 코드와 소비자 코드가 동시에 실행되면 문제 발생
생산자와 소비자가 전역 변수 sum에 접근하는 타이밍을 맞추지 않았기 때문에 문제가 생김.
4. 임계구역 해결 조건
- 상호 배제(mutual exclusion)
: 임계구역 내에는 한 번에 하나의 프로세스만 있어야 함. - 한정 대기(bounded waiting)
: 특정 프로세스가 임계구역에 진입하지 못하면 안된다. (= 한 프로세스가 임계자원을 독점하면 안됨) - 진행의 융퉁성(progress flexibility)
: 다른 프로세스의 진행을 방해해서는 안된다.
출처: 쉽게 배우는 운영체제
'CS 스터디 > 운영체제' 카테고리의 다른 글
[교착 상태] 1. 교착 상태의 정의와 필요조건 (0) | 2023.08.06 |
---|---|
[프로세스 동기화] 3. 임계구역 해결 방법 (0) | 2023.08.02 |
[프로세스 동기화] 1. 프로세스 간 통신 (0) | 2023.08.02 |
[스케쥴링] 3. 비선점 스케쥴링 (0) | 2023.07.29 |
[스케쥴링] 2. 선점 스케쥴링 알고리즘 (0) | 2023.07.29 |