Skip to content

devlee77/Philosophers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

57 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Philosophers

Concepts

The basics of threading a process (ํ”„๋กœ์„ธ์Šค ์Šค๋ ˆ๋”ฉ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ฐœ๋…)

How to work on the same memory space (๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์–ด๋–ป๊ฒŒ ์ž‘์—…ํ•˜๋Š”์ง€)

How to make threads (์Šค๋ ˆ๋“œ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•)

Mutex / semaphore / shared memory (๋ฎคํ…์Šค / ์„ธ๋งˆํฌ์–ด / ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ)

๊ธฐ๋ณธ ๊ฐœ๋…๋“ค์„ ์ˆ™์ง€ํ•œ ์ฑ„๋กœ, ๋™์ผํ•œ ๊ธฐ๋ณธ ๊ทœ์น™์„ ๊ฐ€์ง„ ์„ธ ๊ฐœ์˜ ๊ฐœ๋ณ„ ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑํ•˜๊ธฐ

Basic Rules

Norm (42์˜ ์ž์ฒด ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜)์„ ๋”ฐ๋ผ, C๋กœ ์ž‘์„ฑํ•  ๊ฒƒ.

์–ด๋–ค ๋ˆ„์ˆ˜, ์ถฉ๋Œ, ์ •์˜๋˜์ง€ ์•Š์€ ํ–‰๋™ ํ˜น์€ ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜ ์—๋Ÿฌ ์‹œ ํ”„๋กœ์ ํŠธ๋Š” 0์ .

์›ํ˜• ํ…Œ์ด๋ธ”์— ๋‘˜๋Ÿฌ ์•‰์€ ๋ช‡ ๋ช…์˜ ์ฒ ํ•™์ž๋“ค์€ ์‹์‚ฌ๋ฅผ ํ•˜๊ฑฐ๋‚˜, ์ƒ๊ฐํ•˜๊ฑฐ๋‚˜, ์ž๊ณ  ์žˆ๋‹ค.

์ฒ ํ•™์ž๋“ค์€ ๋™์‹œ์— ํ•˜๋‚˜์˜ ํ–‰๋™๋งŒ ํ•œ๋‹ค. ์ด๋ฅผ ํ…Œ๋ฉด ์‹์‚ฌ๋ฅผ ํ•˜๊ณ  ์žˆ์„ ๋•Œ๋Š” ์ƒ๊ฐํ•˜๊ฑฐ๋‚˜, ์ž์ง€ ์•Š๋Š”๋‹ค.

์›ํ˜• ํ…Œ์ด๋ธ” ์ค‘์•™์—๋Š” ์ŠคํŒŒ๊ฒŒํ‹ฐ๊ฐ€ ๋“  ํฐ ์ ‘์‹œ๊ฐ€ ์žˆ๋‹ค.

์ŠคํŒŒ๊ฒŒํ‹ฐ๊ฐ€ ํฌํฌ ํ•˜๋‚˜๋กœ ๋จน๊ธฐ ์–ด๋ ค์›Œ์„œ, ์ฒ ํ•™์ž๋“ค์€ ์–‘ ์†์— ํฌํฌ๋ฅผ ๋“ค๊ณ  ์ŠคํŒŒ๊ฒŒํ‹ฐ๋ฅผ ๋จน๋Š”๋‹ค.

์ฒ ํ•™์ž๋“ค์€ ๊ตถ์–ด ์ฃฝ์œผ๋ฉด ์•ˆ ๋œ๋‹ค.

๋ชจ๋“  ์ฒ ํ•™์ž๋“ค์€ ์ŠคํŒŒ๊ฒŒํ‹ฐ๋ฅผ ๋จน๊ณ  ์‹ถ๋‹ค.

์ฒ ํ•™์ž๋“ค์€ ์„œ๋กœ ๋งํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ฒ ํ•™์ž๋“ค์€ ๋‹ค๋ฅธ ์ฒ ํ•™์ž๊ฐ€ ์–ธ์ œ (๊ตถ์–ด) ์ฃฝ์„์ง€ ๋ชจ๋ฅธ๋‹ค.

ํ•œ ๋ช…์˜ ์ฒ ํ•™์ž๊ฐ€ ์‹์‚ฌ๋ฅผ ๋๋‚ด๋ฉด, ๊ทธ๋Š” ํฌํฌ๋ฅผ ๋‚ด๋ ค๋†“๊ณ  ์ž ์ž๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

์ฒ ํ•™์ž๊ฐ€ ์ž ์ž๊ธฐ๋ฅผ ๋๋‚ด๋ฉด, ์ƒ๊ฐํ•˜๊ธฐ๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค.

ํ•œ ์ฒ ํ•™์ž๊ฐ€ ์ฃฝ์œผ๋ฉด ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ๋๋‚œ๋‹ค.

๊ฐœ๋ณ„ ํ”„๋กœ๊ทธ๋žจ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋™์ผํ•œ ์˜ต์…˜๋“ค์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

  • number_of_philosophers : ์ฒ ํ•™์ž์˜ ์ˆ˜, ์ฆ‰ ํฌํฌ์˜ ๊ฐฏ์ˆ˜
  • time_to_die : ๋ฐ€๋ฆฌ์„ธ์ปจ ๋‹จ์œ„. ํ•œ ์ฒ ํ•™์ž๊ฐ€ ์‹์‚ฌ๋ฅผ ์‹œ์ž‘ํ•˜์ง€ ์•Š์œผ๋ฉด, ๊ทธ๊ฐ€ ๋งˆ์ง€๋ง‰ ์‹์‚ฌ๋ฅผ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ์‹œ์ž‘๋œ์ง€ โ€˜time_to_dieโ€™ ์ดˆ ๋‚ด์— ๊ทธ๋Š” ์ฃฝ๋Š”๋‹ค.
  • time_to_eat : ๋ฐ€๋ฆฌ์„ธ์ปจ ๋‹จ์œ„. ์ฒ ํ•™์ž๊ฐ€ ์‹์‚ฌ๋ฅผ ํ•˜๋Š” ์‹œ๊ฐ„. ์ด ์‹œ๊ฐ„๋™์•ˆ ์ฒ ํ•™์ž๋Š” ํฌํฌ ๋‘ ๊ฐœ๋ฅผ ๋“ค๊ณ  ์žˆ๋‹ค.
  • time_to_sleep: ๋ฐ€๋ฆฌ์„ธ์ปจ ๋‹จ์œ„. ์ฒ ํ•™์ž๊ฐ€ ์ž๋Š” ์‹œ๊ฐ„.
  • number_of_times_each_philosopher_must_eat: (optional argument). ๋งŒ์•ฝ ๋ชจ๋“  ์ฒ ํ•™์ž๋“ค์ด ์ตœ์†Œํ•œ ์ด ํšŸ์ˆ˜๋งŒํผ ์‹์‚ฌ๋ฅผ ํ–ˆ๋‹ค๋ฉด, ์‹œ๋ฎฌ๋ ˆ์ด์…˜์€ ๋๋‚œ๋‹ค. ๋งŒ์•ฝ ์ด ์ธ์ž๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ์ฒ ํ•™์ž๊ฐ€ ์ฃฝ์—ˆ์„ ๋•Œ๋งŒ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ๋๋‚œ๋‹ค. ๊ฐ๊ฐ์˜ ์ฒ ํ•™์ž๋Š” 1๋ถ€ํ„ฐ โ€˜number_of_philosophersโ€™ ์‚ฌ์ด์˜ ์ˆซ์ž๋“ค ์ค‘ ๊ฐ๊ฐ์˜ ์ˆซ์ž๋ฅผ ๋ถ€์—ฌ๋ฐ›๊ฒŒ ๋œ๋‹ค.

1๋ถ€ํ„ฐ โ€˜number_of_philosophersโ€™ ๊นŒ์ง€์˜ ์ˆœ์„œ๋Œ€๋กœ ์ฒ ํ•™์ž๋“ค์€ ๋‘˜๋Ÿฌ ์•‰์•„ ์žˆ๋‹ค. (์ด๋ฅผํ…Œ๋ฉด n๋ฒˆ ์ฒ ํ•™์ž ์˜†์—๋Š” n+1๋ฒˆ ์ฒ ํ•™์ž๊ฐ€ ์•‰์•„ ์žˆ๋‹ค.) ์ฒ ํ•™์ž์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถœ๋ ฅํ•œ๋‹ค.

  • timestamp_in_ms X has taken a fork
  • timestamp_in_mx X is eating
  • timestamp_in_ms X is sleeping
  • timestamp_in_ms X is thinking
  • timestamp_in_ms X died X ๋Š” ์ฒ ํ•™์ž๊ฐ€ ๋ถ€์—ฌ๋ฐ›์€ ์ˆซ์ž๋กœ, timestamp_in_ms๋Š” ๋ฐ€๋ฆฌ์„ธ์ปจ ๋‹จ์œ„์˜ ์†Œ์š”๋œ ์‹œ๊ฐ„์„ ๊ธฐ๋ก ์ถœ๋ ฅ๋  ์ƒํƒœ๋“ค์€ ๋‹ค๋ฅธ ์ฒ ํ•™์ž์˜ ์ƒํƒœ์™€ ์„ž์ด๊ฑฐ๋‚˜ ํ˜ผํ•ฉ๋˜๋ฉด ์•ˆ๋œ๋‹ค

ํ•œ ์ฒ ํ•™์ž์˜ ์ฃฝ์Œ๊ณผ ๊ทธ ์ฃฝ์Œ์— ๋Œ€ํ•œ ์ถœ๋ ฅ ์‚ฌ์ด์— 10 ๋ฐ€๋ฆฌ์„ธ์ปจ ์ด์ƒ์˜ ์‹œ๊ฐ„์ฐจ๊ฐ€ ์žˆ์œผ๋ฉด ์•ˆ๋œ๋‹ค

๊ฐ•์กฐ, ์ฒ ํ•™์ž๊ฐ€ ์ฃฝ๋Š” ์ƒํ™ฉ์„ ์ตœ๋Œ€ํ•œ ํ”ผํ•˜์ž.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors