5-2.[os] 공유자원과 임계구역
- 프로세스는 독립적으로 작업을 할 수도 있고 공유된 자원을 가지고 공동 작업을 할 수도 있음
- 한정된 자원을 가지고 공동 작업을 할 때 문제가 발생함
공유 자원의 접근
- 공유자원 (shared resource)
- 여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일
- 공동으로 이용되기 때문에 누가 언제 데이터를 읽거나 쓰느냐에 따라 그 결과가 달라질 수 있다
- 프로세스들의 공유 자원 접근 순서를 정함
- 두 프로세스가 예금 10만 원을 동시에 읽은 후 다른 프로세스의 작업을 무시하고 덮어쓰는 상황
- 경쟁 조건 (race condition): 2개 이상의 프로세스가 공유 자원을 병행적으로 읽거나 쓰는 상황
- '경쟁 조건이 발생했다'
임계구역
임계구역 (critical section): 공유 자원 접근 순서에 따라 실행 결과가 달라지는 프로그램의 영역
- 각 프로세스가 전역 변수를 사용하는 부분
- ‘critical' - ‘(앞으로의 상황에 영향을 미친다는 점에서) 대단히 중요한’
- 프로세스 실행 상황에서는 공유할 수 없는 자원이 중요한 자원
- 임계구역에서는 프로세스들이 동시에 작업하면 안 된다
- 어떤 프로세스가 임계구역에 들어가면 다른 프로세스는 임계구역 밖에서 기다려야하며 임계구역의 프로세스가 나와야 들어갈수 있다
생산자-소비자 문제
생산자-소비자 문제(Producer-consumer problem)
생산자는 계속 물건을 생산해서 버퍼에 넣고 소비자는 계속 버퍼에서 물건을 가져온다
- 원형 버퍼 (circular buffer): 계속 작업하는 버퍼
- 생산자 코드와 소비자 코드가 동시에 실행되면 문제
임계구역 해결 조건
상호 배제(mutual exclusion)
- 한 프로세스가 임계구역에 들어가면 다른 프로세스는 임계구역에 들어갈 수 없다
- 임계구역 내에는한 번에 하나의 프로세스만 있어야한다
한정 대기(bounded waiting)
- 어떤 프로세스도 무한 대기(infinite postpone)하지 않아야 한다
- 특정 프로세스가 임계구역에 진입하지 못하면 안된다
진행의 융통성(progress flexibility)
- 한 프로세스가 다른 프로세스의 진행을 방해해서는 안 된다는 것을 의미한다
- ex) 요리사 B는 요리사 A의 작업 속도와 관계없이 믹서가 비어 있으면 언제든 사용할 수 있어야 한다