반응형

DEADLOCK 2

[ 운영체제 ] 교착상태

1. 교착상태 1.1 식사하는 철학자 문제 식사하는 철학자 문제는 교착상태를 설명하는 아주 유명한 문제이다. 동그란 원탁에 다섯명의 철학자가 앉아 있다. 앞에는 음식이 놓여있고 음식은 포크가 두개 있어야 먹을 수 있다. 철학자는 왼쪽포크를 집고 오른쪽 포크를 집고 두개를 집어서 일정시간 식사를 한다. 다먹으면 오른쪽을 내려놓고 왼쪽을 내려놓는다. 이때, 모든 철학자가 동시에 왼쪽 포크를 집으면 아무도 식사할 수 없다. 모두 오른쪽 포크가 생기기를 기다리기만 할 것이다. 하지만 오른쪽 포크는 영영 생기지 않는다. 이렇게 일어나지 않을 사건을 기다리며 진행이 멈춰버리는 현상을 교착상태라고 한다. 일명 deadlock!! 교착상태는 다양한 상황에서 발생한다. 예를 들어 뮤텍스락에서 프로세스A는 lock1를 잠..

공부/운영체제 2023.02.08

[ OS ] Common Concurrency Problems

1. Non-deadlock bugs 1.1 Atomicity-violation bugs 코드 영역은 원자성이지만 실행 중에는 원자성이 적용되지 않을 수도 있다. = race conditon -> mutex 로 해결 가능 1.2 Order-violation bugs 원하는대로 스레드가 실행되지 않아 오류가 생길 수 있다. -> mutex랑 cond를 이용하여 해결 가능 2. Deadlock bugs 2.1 Conditions for Deadlock - Mutual exclusion : 스레드가 lock 되어있어야 함 - Hold-and-wait : lock을 갖고 다른 lock을 갖는다 - No preemption : lock을 강제로 뺏지 못한다 - Circular wait : 각 스레드가 다른 스레드..

반응형