일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 아트매가
- 아트매가128
- 우분투
- 임베디드 테트리스
- IC 74595
- 라즈베리파이 os 설치
- avr 공부
- avr 강좌
- atmega128 강좌
- 자작 3d 프린터 corexy
- atmega테트리스
- 상호배제
- avr 키트
- 우분투 ssh 루트
- avr 테트리스
- 아두이노 테트리스
- lcd 테트리스
- avr spi
- 라즈베리파이 라즈비안
- lcd12864
- 세마포어
- atmega 128 강좌
- 운영체제
- 아두이노 spi
- AVR
- 74595
- 우분투 ssh root 접근
- 우분투 ssh 설치
- arm 테트리스
- core xy
- Today
- Total
김원빈 개발 블로그
교착상태 본문
교착상태
교착상태 조건
1. 상호 배제 조건 : 한 프로세스에 의해 점유된 자원을 다른 프로세스들이 접근할 수는 없다.
2. 점유 대기 : 이미 자원을 보유한 프로세스가 다른 자원을 요청하며 기다리고 있다.
3. 비선점 : 프로세스에 의해 점유된 자원을 다른 프로세스가 강제적으로 빼앗을 수 없다.
4. 환영 대기 : 프로세스들 간에 닫힌 연결이 존재한다. 즉 자원 할당 그래프가 환영 상태 이다.
교착상태 예방
- 상호 배제
- 점유 대기
- 자신이 사용할 자원을 미리 다 할당받는다.
- 이 또한 문제가 있다.
- 첫째 : 모든 자원 할당받기 위해 오랜 시간 기다릴 수 있다.
- 둘째 : 할당 받은 자원중 마지막에 사용될 수 도 있다.
- 샛째 : 미래에 사용될 모든 자원을 미리 알기는 어렵다.
- 비선점
- 첫째 : 자원을 점유한 프로세스가 다른 자원을 요청했을 때 할당받을 수 없다면
자원을 반납하고 이후 원래자원과 새 자원을 다시 요청한다.
- 둘째 : 한 프로세스에서 다른 프로세스가 점유한 자원을 원하면, 운영체제는 다른 프로세스가 점유한 자원을 강제적으로 반납시키고 그 것을 원하는 프로세스에게 할당할 수 있다.
- 환영대기
- 자원 할당 순서를 정한다.
교착상태 회피
회피는 위에 나온 예방 조건 1~3 가지는 허용한다.
또한 자원 할당 순서를 미리 정하지도 않는다.
그 대신 자원을 할당할 때 교착상태가 발생 가능한 상황으로 진행하지 않도록 고려한다.
따라서 회피 방법은 예방 방법에 대해 더 많은 병행성을 제공한다.
이를 위한 방법으로는
프로세스가 시작할 때 요구하는 자원 할당이 교착상태 발생의 가능성이 있으면 프로세스를 시작시키지 않는것.
또다른 방법으로는 수행 중인 프로세스가 요구하는 추가적인 자원 할당이 교착상태 발생의 가능성이 있으면, 자원을 할당하지 않는다.
이 방법들은 동적으로 조사하는데 이때 가용 개수와 프로세스 자원 요구량을 미리 알아야 한다.
교착상태 발견
1. 할당 행렬에서 행의 값이 모두 0인 프로세스를 우선 표시한다.
2. 임시 벡터 W를 만든다. 그리고 현제 가용 벡터의 값을 백터 W의 초기 값으로 설정한다.
3. 표시되지 않은 프로세스들 중에서 요청 행렬 Q의 특정 행의 값이 모두 W보다 작은 프로세스를 찾는다. 그리고 프로세스 i를 표시한다. 이러한 프로세스가 없으면 종료한다.
4. 단계 3의 조건을 만족하는 행을 q에서 찾으면, 할당 행렬에서 그 행에 대응도는 값으로 w를 갱신한다. 그리고 다시 단계 3을 수행한다.