dining philosopher problem
![[전공생이 설명하는 OS] 동기화 - (6) 식사하는 철학자 문제 (코드 포함)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FInK0b%2FbtrDxoXUYTt%2FAAAAAAAAAAAAAAAAAAAAAEGiIxQoguo3UR-L024soN60tPWfOW0Y4rp_udj7kITa%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3D2yGcgPsGnqabDHmaD3LkmlIRIao%253D)
[전공생이 설명하는 OS] 동기화 - (6) 식사하는 철학자 문제 (코드 포함)
Dining Philosopher Problem 식사하는 철학자 문제는 다익스트라 선생님께서 논문을 통해 제시하신 대표적인 데드락 상황이다. 위와 같이 원형의 탁자에 5개의 포크가 놓여있다. 스파게티를 먹기 위해서는 2개의 포크를 사용해야한다는 규칙이 있다. 이 상황에서 5명의 철학자가 포크를 한 개씩 잡고 데드락에 빠지면 모두가 굶어 죽는 starvation 이 발생한다..! 철학자가 다 굶어죽는 c++ 코드는 다음과 같다. 더보기 #include #include #include #include #define NUM 5 sem_t forks[NUM]; // forks void *philosopher(void*); int main(){ pthread_t threads[NUM]; for(int i=0; i
![[전공생이 설명하는 OS] 동기화 - (5) Deadlock](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbIkYW2%2FbtrDzleinLB%2FAAAAAAAAAAAAAAAAAAAAAIBLLK7G0PIGO1BCufDrCTA1340-hj7BDrOaa1Gixy74%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DxqFrKBqoq7RkgJoV3BHEfuKTjnI%253D)
[전공생이 설명하는 OS] 동기화 - (5) Deadlock
Review 쓰레드(Thread)와 동기화 문제 동기화 - (1) 용어 및 개념정리 동기화 - (2) 상호배제 전략(Mutex) 동기화 - (3) 조건동기화 (pthread 예시) 동기화 - (4) 생산자 소비자 문제 지금까지 race condition 이 발생하는 이유와, 이를 해결하기 위해 다양한 동기화 기법이 필요하다는 점을 설명했다. 특히 이전 포스팅에서는 할당 가능한 자원의 개수를 (0~MAX)개로 제한하는 web server request buffer 를 살펴보면서 `생산자-소비자 문제`(bounded buffer problem) 를 해결해보았다. 이번에는 동기화로 인해 발생할 수 있는 심각한 문제인 교착상태(deadlock)을 알아보도록 한다. 1. Deadlock 이란? 다수의 스레드 또는..