동기화
- 동기화 : 특정 자원에 접근할 때 한 개의 프로세스만 접근하게 하거나 프로세스를 올바른 순서대로 실행하게 하는 것
- 프로세스 동기화 : 프로세스들 사이의 수행 시기를 맞추는 것
- 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기
- 상호 배제 : 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근하게 하기
- 공유 자원 : 공동으로 사용하는 자원 ex) 전역 변수, 파일, 입출력장치, 보조기억장치
- 임계 구역 : 공유 자원에 접근하는 코드 중 동시에 실행하면 문제가 발생하는 코드 영역 -> 임계 구역에 진입한 프로세스가 있다면 다른 프로세스는 임계 구역 밖에서 기다려야 함
- 상호 배제 : 한 프로세스가 임계 구역에서 작업 중이면 다른 프로세스가 임계 구역에 들어갈 수 없도록 제어하는 것
- 진행 : 임계 구역에 어떤 프로세스도 진입하지 않았다면 임계 구역에 진입하고자 하는 프로세스는 들어갈 수 있어야함
- 유한 대기 : 한 프로세스가 임계 구역에 진입하고 싶다면 그 프로세스는 언젠가 임계 구역
동기화 기법
- 뮤텍스 락 : 임계 구역을 잠금으로써 프로세스 간의 상호 배제를 이룸
- 자물쇠 역할 : 프로세스들이 공유하는 전역 변수 lock
- 임계 구역을 잠그는 역할 : acquire 함수
- 임계 구역의 잠금을 해제하는 역할 : release 함수
- 바쁜 대기 : lock이 false가 될때까지 반복적으로 확인
- 세마포 : 공유 자원이 여러 개 있는 임계 구역
- 임계 구역에 진입할 수 있는 프로세스의 개수를 나타내는 전역변수 S
- 임계 구역에 들어가도 좋은지 기다려야 할지를 알려주는 wait 함수
- 임계 구역 앞에서 기다리는 프로세스에 이제 가도 좋다고 신호를 주는 signal 함수
- 모니터 : 세마포에 비해 사용자가 사용하기 편리학 동기화 도구로 조건 변수를 사용
교착 상태
- 교착 상태 : 일어나지 않을 사건을 기다리며 무한히 대기하는 현상
- 식사하는 철학자 문제 : 교착 상태의 발생을 보여 주는 예시
- 한 두명 식사 할 때는 상관없음 하지만 모든 철학자가 동시에 식사를 하려면 아무도 식사를 할 수 없게 됨
- 자원 할당 그래프 : 교착 상태 표현할 수 있음
- 프로세스는 원으로, 자원의 종류는 사각형으로 표현
- 사용할 수 있는 자원의 개수는 자원 사격형 내에 점으로 표현
- 프로세스가 어떤 자원을 할당받아 사용 중이라면 자원에서 프로세스를 향해 화살표를 표시
- 프로세스가 어떤 자원을 기다리고 있다면 프로세스에서 자원으로 화살표를 표시
- 교착 상태 발생 조건 : 네가지 조건 중 하나라도 만족하지 않으면 교착상태가 발생하지 않음
- 상호 배제 : 한 프로세스가 사용하는 자원을 다른 프로세스가 사용 불가
- 점유와 대기 : 자원을 할당 받은 상태에서 다른 자원을 할당 받기를 기다림
- 비선점 : 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못함
- 원형 대기 : 프로세스들이 원의 형태로 자원을 대기
교착 상태 예방
- 교착 상태 예방 : 교착상태가 발생하지 않도록 교착상태발생조건 중 하나를 없앰
- 자원의 상호 배제를 없애면? : 모든 자원 공유 가능하게 만든다 -> 현실적인 방법은 아님
- 점유와 대기를 없애면? : 특정 프로세스에 자원을 모두 할당 또는 아예 할당하지 않음 -> 자원 활용률을 낮출 수 있음
- 비선점 조건을 없애면? : 선점이 가능한 자원에 한해 효과적 -> 모든 자원이 선점 가능한 것은 아님
- 원형 대기 조건을 없애면? : 자원에 번호를 붙이고 오름차순으로 할당하면 원형 대기는 발생하지 않음
- 교착 상태 회피 : 안전 상태를 유지할 수 있는 경우에만 자원을 할당하는 방법
- 안전 순서열 : 교착상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서
- 안전 상태 : 교착상태 없이 모든 프로세스가 자원을 할당받고 종료 될 수 있는 상태
- 불안전 상태 : 교착상태가 발생할 수도 있는 상태
- 교착 상태 검출 후 회복 : 교착 상태 발생 여부를 주기적으로 검사하고, 교착 상태가 발생하면 그때그때 회복하는 방식
- 선점을 통한 회복 : 교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식
- 프로세스 강제 종료를 통한 회복 : 가장 단순하면서 확실한 방식, 운영체제는 교착 상태에 놓인 프로세스를 모두 강제 종료할 수 있고, 교착 상태가 없어질 때까지 한 프로세스씩 강제 종료할 수 있음
기본미션 p.363 1번
정답 : 4번
항상 바쁜 대기를 하는 것은 아님 대기 상태로 될 수도 있음
선택 미션 임계 구역, 상호 배제 개념을 정리하기
- 임계 구역 : 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역
- 상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기