일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 정보처리기사
- 자바
- OS
- CS
- 깃
- 신입
- 우리카드
- 스프링
- Public
- 메모리
- 컴퓨터과학
- 운영체제
- 신입사원
- java
- 이펙티브 자바
- 컴퓨터공학
- 디지털
- 프로그래밍
- spring
- 알고리즘
- 개발
- github
- package-private
- 뮤텍스
- 스터디
- IT
- 깃허브
- 세마포어
- Effective Java
- 공채
Archives
- Today
- Total
목록식사하는 철학자 (1)
주니어 개발자 성장기
Process Synchronization - Dining-Philosophers Problem
개요 '식사하는 철학자 문제'라고 하며 철학자는 1. 밥먹기 2. 생각하기 2가지 일을 할 수 있다. 반면 젓가락의 갯수(공유자원)는 제한되어 있다. 이 문제의 해결법을 코드로 살펴보자. Solution A Initialization /* 최초 값은 모두 1이다. */ semaphore chopstick[5]; 철학자는 5명으로 가정하고 젓가락은 5개가 있다고 가정하자. Philosopher i(i번째 철학자) do { //왼쪽, 오른쪽 젓가락을 잡는 연산 P(chopstick[i]); P(chopstick[(i + 1) % 5]); //식사 eat(); //왼쪽, 오른쪽 젓가락 놓는 연산 V(chopstick[i]); V(chopstick[(i + 1) % 5]); think(); } while(1);..
CS스터디/운영체제
2024. 4. 1. 22:41