
<aside>
💡
한빛미디어의 <혼자 공부하는 컴퓨터 구조+운영체제>를 요약 정리했습니다.
</aside>
Chapter 12 | 프로세스 동기화
- 동기화 : 특정 자원에 접근할 때 하의 프로세스만 접근하게 하거나 프로세스를 올바른 순서대로 실행하게 하는 것
- 공유 자원 : 공동으로 사용하는 자원 (변수, 파일, 장치 등)
- 임계 구역 : 공유 자원에 접근하는 코드 중 동시에 실행하면 문제가 발생하는 코드 영역
- 상호 배제 : 한 프로세스가 임계 구역에서 작업 중이면 다른 프로세스가 임계 구역에 들어갈 수 없도록 제어하는 것
- 생산자 소비자 문제 : 상호 배제를 위한 동기화 문제
- 확인 문제 (p.349)
- 뮤텍스 락
- 상호 배제를 위한 동기화 도구
acquire()
: 프로세스가 임계 구역에 진입하기 전에 호출하는 함수 (임계 구역을 잠구고 진입)
- 바쁜 대기 : 임계 구역이 잠겨 있을 경우 프로세스는 반복적으로 lock을 확인하게 되는데 이를 바쁜 대기라고 함
release()
: 임계 구역에서의 작업이 끝나고 호출하는 함수 (잠긴 임계 구역을 열어줌)
- 세마포
- 공유 자원이 여러 개 있는 상황에서도 적용이 가능한 동기화 도구
- 이진 세마포 : 뮤텍스 락과 비슷한 개념
- 카운팅 세마포 : 임계 구역에 진입할 수 있는 프로세스의 개수를 정해두고, 해당 개수만큼은 접근 가능
- 임계 구역 전에
wait()
를 두고 임계 구역을 다 사용한 후에 signal()
호출
- 모니터
- 세마포에 비해 사용자가 사용하기 편리한 동기화 도구로 조 변수를 사용함
- 조건 변수를 이용하여 특정 프로세스의 실행 순서 제어를 위한 동기화를 제공함
- 확인 문제(p.363)
Chapter 13 | 교착 상태
- 교착 상태 : 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상
- 자원 할당 그래프 : 교착 상태를 단순하게 표현하는 방법
- 프로세스는 원으로, 자원의 종류는 사각형으로 표시한다.
- 사용할 수 있는 자원의 개수는 자원 사각형 내의 점으로 표시한다.
- 프로세스가 어떤 자원을 할당받아 사용 중이라면 자원에서 프로세스를 향해 화살표를 표시한다.
- 프로세스가 어떤 자원을 기다리고 있다면 프로세스에서 자원으로 화살표를 표시한다.
- 발생 조건
- 상호 배제 : 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 경우
- 점유와 대기 : 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태
- 비선점 : 자원을 이용하는 프로세스의 작업이 끝나야만 이용할 수 있는 경우
- 원형 대기 : 프로세스들의 원의 형태로 자원을 대기하는 것
- 확인 문제 (p.374)
- 교착 상태 해결 방법
- 예방 : 교착 상태 발생 필요 조건 네 가지 중 하나를 충족하지 못하게 하는 방법
- 상호 배제 : 모든 자원을 공유하게 되므로 프린트 같이 상호 배제가 필요한 경우에는 사용할 수 없음
- 점유와 대기 : 특정 프로세스에 자원을 모두 할당하거나 할당하지 않는 방식으로 교착 상태를 예방할 수 있지만 자원의 활용률이 낮아짐
- 비선점 : 자원을 이용 중인 프로세스로부터 해당 자원을 뺏을 수 있게 되기 때문에 교착 상태는 발생하지 않지만 프린트와 같이 비선점이 필요한 경우에는 사용할 수 없음
- 원형 대기 : 모든 자원에 번호를 붙이고, 오름차순으로 자원을 할당하는 방식으로 교착 상태를 회피할 수 있지만 각 자원에 어떤 번호를 붙이즌지에 따라 특정 자원의 활용률이 떨어질 수 있음
- 회피 : 교착 상태가 발생하지 않을 정도로만 자원을 할당하는 방식
- 안전 순서열 : 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서
- 안전 상태 : 교착 상태가 발생하지 않고 모든 프로세스가 정상적으로 자원을 할당받고 종료될 수 있는 상태 (안전 순서열이 존재하는 상태)
- 불안전 상태 : 교착 상태가 발생할 수도 있는 상태 (안전 순서열이 존재하지 않는 상태)
- 회복 : 교착 상태 발생을 인정하고 사후에 조치하는 방식
- 선점을 통한 회복 : 교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식
- 프로세스 강제 종료를 통한 회복 : 교착 상태가 없어질 때까지 한 프로세스씩 강제 종료
- 타조 알고리즘 : 교착 상태를 무시하는 방법으로 문제 발생의 빈도나 심각성에 따라 최대 효율을 추구하는 경우 적합할 때가 있음
- 확인 문제 (p.386)