일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- #심플즈
- leetcode
- #abex크랙미
- springframework
- #크랙미4번
- #보안이슈
- #abex크랙미4번
- GraphQL
- #심플즈 크랙미
- #크랙미 10번
- Spring
- #크랙미3번
- Easy
- #크랙미2번
- #크랙미
- #파밍
- #abex
- java8
- #보안뉴스
- #크랙미 5번
- #리버싱
- #고클린
- java
- #크랙미 9번
- 리버싱
- Today
- Total
Halo World
교착상태(Deadlock) 본문
| 교착상태(Deadlock)
- 다중 프로그래밍 시스템에서 아무리 기다려도 결코 일어나지 않을 사건을 기다리고 있는 하나 또는 그 이상의 프로세스들이 있는 상태
- 둘 이상의 서로 다른 프로세스가 자신이 요구한 자원을 할당받아 점유하고 있으면서 상호간에 상대방 프로세스에 할당되어 있는 자원을 요구하는 경우에 발생
| 교착상태의 4가지 필요조건
1) 상호 배제(Mutual Exclusion)
: 프로세스들이 자원을 배타적으로 점유하고 있어, 다른 프로세스들이 자원을 사용할 수 없게 만듦 (자원의 배타적인 제어권)
2) 점유와 대기(Hold & Wait)
: 최소한 하나의 자원을 점유하고 있는 프로세스가 존재해야하며, 이 프로세스는 다른 프로세스에 할당된 자원을 추가로 점유하기 위해 대기함
3) 비선점(Non-preemption)
: 비선점 자원들은 그들을 점유하는 프로세스로부터 벗어나지 못한다.(도중에 해지될 수 없음) 점유한 프로세스만이 자원을 해재할 수 있다.
4) 환형 대기(Circular Wait)
: 프로세스와 자원들이 원형을 이루며, 각 프로세스가 자신에게 할당된 자원을 가지면서 상대방 프로세스의 자원을 상호 요청하는 경우
| 교착상태 해결방법
1) 교착상태 예방(Prevention)
- 교착상태를 유발하는 4가지 조건 중 최소한 하나가 성립하지 않도록 보장
- 자원의 낭비가 심함
상호 배제 부정 |
여러 개의 프로세스가 공유 자원을 사용할 수 있도록 함 |
점유 대기 부정 |
프로세스가 실행되기 전 필요한 모든 자원을 할당 |
비선점 부정 |
자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납하고, 요구한 자원을 사용하기 위해 기다리게 함 |
순환 대기 부정 |
자원에 고유한 번호를 할당하고, 번호 순서대로 자원을 요구하도록 함 |
2) 교착상태 회피(Avoidance)
- 교착상태가 발생하면 피하는 방법
- 은행원 알고리즘(Banker's Algorithm)
> Dijkstra가 제안한 방법으로 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는 데에서 유래된 기법
> 프로세스가 자원을 요구할 때, 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는지를 사전에 검사하여 교착상태를 회피하는 기법
> 안정상태면 자원을 할당하고, 그렇지 않으면 다른 프로세스들이 자원을 해지할 때까지 대기함
3) 교착상태 탐지
- 자원할당 그래프를 통해서 교착상태 탐지
- 자원을 요청할 때마다 탐지알고리즘을 실행하면 오버헤드가 발생
4) 교착상태 회복
- 교착상태를 일으킨 프로세스를 종료하거나, 할당된 자원을 해제함으로써 회복하는 것
- 프로세스 종료 방법
> 1. 교착 상태의 프로세스를 모두 중지
> 2. 교착 상태가 제거될 때까지 한 프로세스씩 중지
- 자원 선점 방법
> 1. 교착 상태의 프로세스가 점유하고 있는 자원을 선점하여 다른 프로세스에게 할당하며, 해당 프로세스를 일시정지
> 2. 우선순위가 낮은 프로세스, 수행된 횟수가 적은 프로세스 등을 위주로 프로세스의 자원을 선점
[참고]
http://cs.sch.ac.kr/lecture/os/2013/7-OS-Dedlock.pdf
http://developerhenrycho.tistory.com/20
http://includestdio.tistory.com/12
알기쉬운 정보보안기사&산업기사 / 탑스팟 / 조상진
'개발 지식 > OS' 카테고리의 다른 글
시스템 소프트웨어와 응용 소프트웨어 (0) | 2017.07.30 |
---|---|
디스크 스케줄링 (0) | 2017.07.26 |
프로세스 간 동기화 (공유 자원에 대한 접근 문제) (0) | 2017.07.11 |
CPU 스케줄링 (0) | 2017.07.10 |
프로세스의 개념과 PCB (0) | 2017.07.09 |