일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Linked List
- core data
- 가상 메모리
- struct
- 비동기
- 운영체제
- scrollview
- 데드락
- IOS
- Swift
- 인프런
- 오브젝트
- forEach
- Algorithm
- 100 days of SwiftUI
- 상호배제
- 프로세스 스케줄링
- 동기화
- deadlock
- 앨런
- Codable
- 동시성
- decode
- SwiftUI
- UserDefaults
- COLOR
- 알고리즘
- async
- Apple Developer Academy
- @state
Archives
- Today
- Total
기어가더라도 제대로
[운영체제-김덕수 교수님] Deadlock (2/5) - 발생의 예 본문
- 서로 프로세스가 서로가 보유하고 있는 자원을 요청하는 경우
- 그래프 모델과 상태 전이 모델로 나타낼수 있다.
- 그래프 모델은 자료구조 보듯이 보면 된다.
- 서로 자원 할당과 요청 사이에서 Cycle 이 돌고 있다면 데드락이다.
- 자원에서 프로세스로 에지가 간다면 자원 할당
- 프로세스에서 자원으로 에지가 간다면 자원 요청
- 프로세스의 상태를 표로 나타낸 모델
- 예를 들어, 하나의 프로세스가 자원 두개를 요청할 수 있는 상태를 5가지로 나타낼 수 있다.
- 프로세스가 2개인 모습을 그리기엔 조금 복잡해질 수 있다.
- 두개의 프로세스가 자원 두개를 요청할 수 있는 경우의 상태를 나타낸 표이다.
- 간선에 지나가는 숫자는 해당 프로세스 id 이다.
- 정점을 하나씩 지나가는 경우는 자원을 요청하거나, 유지하는 경우이다.
- 정점을 두개씩 지나가는 경우는 자원을 Release하는 경우이다.
- "S33" 처럼 빨간색으로 되어있는 정점이 데드락이다.
- 각 프로세스가 자원 하나를 잡고 상대가 잡고 있는 자원을 요청
- 둘 프로세스가 각자 서로의 자원 하나를 보유하고 다른 하나를 요청하는 부분을 막으면 데드락을 예방할 수 있다.
- 말은 쉽다만, 프로세스가 2개만 있는 경우도 드물고, N 개 있는 상황이 일반적이다.
- N차원에서의 경우의 수를 고려하는 건 복잡한 일이 될 것이다.
Deadlock 발생 필요 조건
- 자원의 특성
- Exclusive use of resources
- 한 순간에 한 프로세스만 사용 가능한 자원일 때
- 메모리, CPU, Disk drive
- Non-preemptible resources
- 선점 당하면 이후 진행에서 문제가 발생 가능한 자원일 때
- disk drive
- Exclusive use of resources
- 프로세스의 특성
- Hold and wait(Partial allocation)
- 자원을 하나 hold 하고 다른 자원 요청
- Circular wait
- Hold and wait(Partial allocation)
'CS > 운영체제' 카테고리의 다른 글
[운영체제-김덕수교수님] 교착상태(4/5) - Deadlock avoidance (0) | 2022.08.08 |
---|---|
[운영체제-김덕수 교수님] 교착상태(3/5)- Deadlock Prevention (0) | 2022.08.08 |
[운영체제-김덕수 교수님] Deadlock (1/5) (0) | 2022.08.06 |
[운영체제-김덕수교수님] 프로세스 상호배제, 동기화(7/7) - Monitor (0) | 2022.08.06 |
[운영체제- 김덕수 교수님] 프로세스 상호배제, 동기화(6/7) - Eventcount/Sequencer (0) | 2022.08.06 |
Comments