일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 혼자공부하는
- 138477
- 코딩테스트
- DirectX
- dfs
- 풀이
- 프로그래머스
- 장치컨트롤러
- BFS
- static
- 입출력장치
- C++
- 인터럽트
- Transform
- 컴퓨터 구조
- 프로세스
- 지역변수
- 컴퓨터구조
- 한빛미디어
- 운영체제
- DDR SDRAM
- 보조기억장치
- 멀티스레드
- 스레드
- 혼자 공부하는
- CPU 스케줄링
- 독학
- 그래프
- 렌더링 파이프라인
- 131701
- Today
- Total
빼미의 개발일기
[운영체제] - 32강. 교착상태 본문
이 글은 한빛미디어 '혼자 공부하는 컴퓨터 구조 + 운영체제'를 공부하고, 추가적인 부분을 찾아 정리한 내용입니다.
교착상태는 무엇이며, 발생 원인은 무엇인가?
● 고전적 동기화 문제 (철학자의 만찬 문제)
- 각 좌석에 앉은 철학자들이 아래의 과정을 거치고 식사를 한다고 가정한다.
- 계속 생각하다 왼쪽 포크가 사용 가능하면 집어든다.
- 계속 생각하다 오른쪽 포크가 사용 가능하면 집어든다.
- 왼쪽과 오른쪽 포크를 모두 집어들면 정해진 시간동안 식사를 한다.
- 식사 시간이 끝나면 오른쪽 포크를 내려놓는다
- 오른쪽 포크를 내려놓으면 왼쪽 포크를 내려놓는다.
- 위 과정을 반복한다.
- 위 과정에서 모든 철학자가 왼쪽 포크를 집었거나, 서로 눈치보며 기다리기만 하게 된다면 그 누구도 식사를 할 수 없고 그 이상 진행할 수 없는 상황이 발생한다. 이런 현상을 교착상태(데드락 - Dead Lock) 이라고 한다.
※ 데드락 : 둘 이상의 프로세스 또는 스레드들이 아무것도 진행하지 않고 서로 영원히 대기하는 상황.
● 데드락의 발생조건
- 1971년 코프만 교수가 코프만 조건(Coffman Conditions)을 기준으로 4가지 조건이 모두 만족하는 상태를 데드락으로 정의했다.
- 상호배제 (Mutual Exclusion) : 자원은 한번에 한 프로세스만 사용할 수 있다.
- 점유 상태로 대기 (Hold and Wait) : 최소한 하나 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재한다.
- 선점 불가 (No Preemption) : 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 뺏을 수 없다.
- 순환성 대기 (Circular Wait) : 프로세스의 집합에서 순환 형태로 자원을 대기하고 있다.
※ 참고자료
https://gyoogle.dev/blog/computer-science/operating-system/DeadLock.html
데드락 (DeadLock, 교착 상태) | 👨🏻💻 Tech Interview
데드락 (DeadLock, 교착 상태) 두 개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태 무한히 다음 자원을 기다리게 되는 상태를 말한다. 시스템적으로 한정된
gyoogle.dev
https://namu.wiki/w/%EB%8D%B0%EB%93%9C%EB%9D%BD
데드락 - 나무위키
여기 사람1, 사람2 와 종이1, 종이2가 있다. 두 종이에는 숫자가 적혀 있는데, 여기서 사람 두명이 종이1의 숫자에 종이2의 숫자를 더한 것을 계산한다고 생각해 보자. 사람 둘은 접촉할 수 없고,
namu.wiki
https://chanhuiseok.github.io/posts/cs-2/
[운영체제] 데드락(Deadlock, 교착 상태)이란?
컴퓨터/IT/알고리즘 정리 블로그
chanhuiseok.github.io
'프로그래밍 > 운영체제' 카테고리의 다른 글
[운영체제] - 33강. 교착 상태 해결 방법 (1) | 2023.11.28 |
---|---|
[운영체제] - 31강. 동기화 기법 (0) | 2023.11.21 |
[운영체제] - 30강. 프로세스 동기화 (2) | 2023.11.19 |
[운영체제] - 29강. CPU 스케줄링 알고리즘 (0) | 2023.11.16 |
[운영체제] - 28강. CPU 스케줄링 개요 (1) | 2023.11.14 |