Ader.log
로그인
Ader.log
로그인
[운영체제 스터디] - 6. 병행 제어Ⅱ
Ader(아더)
·
2022년 3월 12일
팔로우
0
병행제어
스터디
운영체제
코드스쿼드
0
OS
목록 보기
6/11
[6주차] - 병행 제어Ⅱ
1. Deadlock and Starvation
Deadlock
둘 이상의 프로세스가 서로 상대방에 의해 충족될 수 있는 event를 무한히 기다리는 현상
자원을 획득하는 순서를 조정해주면 Deadlock 해결 가능
Starvation
특정 프로세스들만 자원을 공유하는 경우 다른 프로세스를 깨우지 않고 자기들끼리만 작업을 진행하는 현상
2. 동기화와 관련된 문제 3가지
Bounded-Buffer Problem
Readers-Writers Problem
Dining-Philosophers Problem
3. 모니터
세마포어의 문제점
코딩하기 힘들다
정확성의 입증이 어렵다
자발적 협력이 필요하다
한 번의 실수가 모든 시스템에 치명적 영향을 미친다
모니터
동시 수행중인 프로세스 사이에서 abstract data type의
안전한 공유를 보장
하기 위한 high-level synchronization construct
모니터는
공유자원을 내부적으로 숨기고 공유 자원에 접근하기 위한 인터페이스만 제공
함으로써
자원을 보호하고 프로세스 간에 동기화
를 시킨다.
모니터의 작동원리
임계구역으로 지정된 변수나 자원에 접근하고자 하는 프로세스는 직접 P()나 V()를 사용하지 않고 모니터에 작업 요청을 한다
모니터는 요청받은 작업을 모니터 큐에 저장한 후 순서대로 처리하고 그 결과만 해당 프로세스에 알려준다
객체지향 느낌과 비슷하다
4. 교착상태(Deadlock)
2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태를
교착상태
라고 함
Deadlock 발생의 4가지 조건
Mutual Exclusion
매 순간 하나의 프로세스만이 자원을 사용할 수 있음
No Preemption
프로세스는 자원을 스스로 내어놓을 뿐 강제로 빼앗기지 않음
Hold and wait
자원을 가진 프로세스가 다른 자원을 기다릴 때 보유 자원을 놓지 않고 계속 가지고 있음
Circular wait
자원을 기다리는 프로세스간에 사이클이 형성되어야 함
5. 자원할당 그래프
자원할당 그래프는 프로세스가 어떤 자원을 사용 중이고 어떤 자원을 기다리고 있는지를 방향성이 있는 그래프로 표현한 것이다
자원할당 그래프를 사용하면 어떤 프로세스에 자원이 할당되어 있는지 혹은 어떤 프로세스가 자원을 기다리고 있는지를 한눈에 파악할 수 있다
그래프에 싸이클이 없으면 데드락이 아니다
6. Deadlock의 처리 방법
Deadlock Prevention
자원 할당 시 Deadlock의 4가지 필요 조건 중 어느 하나가 만족되지 않도록 하는 것
Deadlock Avoidance
-자원 요청에 대한 부가적인 정보를 이용해서 deadlock의 가능성이 없는 경우에만 자원을 할당
시스템 state가 원래 state로 돌아올 수 있는 경우에만 자원 할당
Deadlock Detection and recovery
Deadlock 발생은 허용하되 그에 대한 detection 루틴을 두어 deadlock 발견 시 recover
Deadlock Ignorance
Deadlock을 시스템이 책임지지 않음
UNIX를 포함한 대부분의 OS가 재택
본 포스팅은 반효경 교수님의 2017 운영체제 강의를 바탕으로 제작되었습니다.
Ader(아더)
하루하루 성장하는 개발자
팔로우
이전 포스트
[운영체제 스터디] - 5. 병행 제어
다음 포스트
[운영체제 스터디] - 7. 데드락과 메모리관리
0개의 댓글
댓글 작성