Skip to content

Implement "Dining philosophers" by multi process and thread with C99

Notifications You must be signed in to change notification settings

dudcks0994/Philosoper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Philosoper

๊ณผ์ œ ๋ชฉํ‘œ : C98์˜ ์ œํ•œ๋œ ํ•จ์ˆ˜๋“ค์„ ์ด์šฉํ•ด ์‹์‚ฌํ•˜๋Š” ์ฒ ํ•™์ž ๋ฌธ์ œ ๊ตฌํ˜„

์„ธ๋ถ€ ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ ์ œํ•œ์‚ฌํ•ญ์€ ์—ฌ๊ธฐ

์šด์˜์ฒด์ œ

  • ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์Šค์ผ€์ค„๋ง์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ์ดํ•ด
  • ์ฝ”์–ด์™€ ์Šค๋ ˆ๋“œ, ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค์™€ ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ์˜ ์ฐจ์ด ์ดํ•ด

๋ณ‘ํ–‰์„ฑ

  • ์—ฌ๋Ÿฌ๋ช…์˜ ์ฒ ํ•™์ž๋“ค์ด ๊ฐ์ž ํฌํฌ๋ฅผ ๋“ค๊ฑฐ๋‚˜ ๋จน๊ณ  ์ž๋Š”๊ฒƒ์ด ๋™์‹œ์— ์ด๋ฃจ์–ด์ง€๊ธฐ ์œ„ํ•ด์„œ ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ์™€ ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„
  • ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š๊ธฐ์— ๋ฐ์ดํ„ฐ๋ ˆ์ด์Šค๊ฐ€ ์ผ์–ด๋‚ ์ˆ˜ ์žˆ์–ด ๋ฎคํ…์Šค๋ฅผ ์‚ฌ์šฉํ•ด ์ž„๊ณ„๊ตฌ์—ญ์„ ๋งŒ๋“ค์–ด ์›์ž์  ์‹คํ–‰ ๋ณด์žฅ(ํ˜น์€ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค ์‹œ ์„ธ๋งˆํฌ์–ด)
  • ์‹œ๊ฐ„์ˆœ์œผ๋กœ ๊ฐ ์ฒ ํ•™์ž์˜ ํ–‰๋™์„ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๋ˆ„๊ตฐ๊ฐ€ ์ฃฝ์—ˆ์„ ๋•Œ ์ถœ๋ ฅ์ด ๋ฉˆ์ถฐ์•ผํ•˜๊ณ , ์‹œ๊ฐ„์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅ์ด ๋‚˜์™€์•ผํ•˜๋ฏ€๋กœ ๋ชจ๋“  ์ถœ๋ ฅ๋ถ€๋„ ๋ฎคํ…์Šค๋กœ ์›์ž์„ฑ ๋ณด์žฅ
  • ์ฒ ํ•™์ž๋“ค์˜ ์ฃฝ์Œ์„ ํ”ผํ•ด์•ผํ•˜๋ฏ€๋กœ ๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ์„ ๋ง‰์•„์•ผํ•จ
    • ๊ฐ ํฌํฌ์˜ ์‚ฌ์šฉ์ƒํƒœ๋ฅผ ๋ณ€์ˆ˜๋กœ ๋‘๊ณ  ๊ฐ๊ฐ ๋ฎคํ…์Šค๋ฅผ ๋งŒ๋“ค์–ด ํ™•์ธํ• ๋•Œ ๋ฐ˜๋“œ์‹œ ์ž„๊ณ„๊ตฌ์—ญ์„ ๋งŒ๋“ค์–ด์„œ ํ™•์ธํ›„ ์ง‘๊ฑฐ๋‚˜ ํฌ๊ธฐํ•˜๋ฉฐ, ํ•œ๊ฐœ๋ฅผ ๋“ค๋”๋ผ๋„ ๋‘๊ฐœ๋ฅผ ๋“ค์ˆ˜์—†๋‹ค๋ฉด ๋‚ด๋ ค๋†“๊ฒŒ๋” ์ฒ˜๋ฆฌ
    • ๋ฐ˜๋“œ์‹œ ์™ผ์ชฝ ํฌํฌ๋ถ€ํ„ฐ ์ง‘๊ฒŒ๋” ํ•˜๊ณ , ์ฒ˜์Œ ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์‹œ, ํ™€์ˆ˜๋ฒˆ์งธ ์ฒ ํ•™์ž๋“ค์„ ์ง์ˆ˜๋ฒˆ์งธ ์ฒ ํ•™์ž๋“ค์ด ๋จผ์ € ๋จน์„ ์ˆ˜ ์žˆ๊ฒŒ๋” ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ์ฒ˜๋ฆฌ
  • ์ฒ ํ•™์ž ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด์„œ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ํšŸ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก ์‹œ๊ฐ„ ๋ฐ€๋ฆผํ˜„์ƒ์ด ์ฆ๊ฐ€ํ•˜๋ฏ€๋กœ, ์ด๋ฅผ ์œ„ํ•ด ๋ฐฅ๋จน๋Š” ์‹œ๊ฐ„, ์ž๋Š”์‹œ๊ฐ„ ๋“ฑ์˜ ์ง€์—ฐ์ฒ˜๋ฆฌ ์‹œ ํ•ด๋‹น ์Šค๋ ˆ๋“œ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š๊ฒŒ usleep์— ์ ๋‹นํ•œ ๊ธด ์‹œ๊ฐ„์„ ์คŒ
  • ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค๋Š” ํž™๊ณผ ๋ฐ์ดํ„ฐ์˜์—ญ์ด ๊ณต์œ ๋˜์ง€ ์•Š์•„์„œ ๋น„๊ต์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์‰ฌ์›€ -> ์ด ๊ณผ์ œ์—์„œ ๋จน๋Š” ํšŸ์ˆ˜๋ฅผ ๋งŒ์กฑ์‹œ ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•œ IPCํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋ถˆ๊ฐ€๋Šฅ์œผ๋กœ ์„ธ๋งˆํฌ์–ด๋ฅผ ์‹ธ์ดํด๋งˆ๋‹ค postํ•˜๋ฉฐ ์นด์šดํŠธ๋ฅผ ์„ธ๊ฒŒ๋” ์ฒ˜๋ฆฌ

๋ฐฐ์šด์ 

  • sleep(usleep)์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์‹œ๊ฐ„์€ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค(ํ˜น์€ ์“ฐ๋ ˆ๋“œ)์˜ ์ตœ์†Œ ์‹คํ–‰์œ ์˜ˆ์‹œ๊ฐ„์„ ๋ณด์žฅํ•œ๋‹ค -> ์ •ํ™•ํžˆ ๊ทธ ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ณ ์„œ์˜ ์‹คํ–‰์ด ๋ณด์žฅ๋˜์ง€ ์•Š์Œ
  • ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ์ž์ฒด์— PC,๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’ ๋ณ€๊ฒฝ ๋“ฑ์— ๋”ฐ๋ฅธ ์ž์›(์‹œ๊ฐ„)์†Œ๋ชจ๊ฐ€ ์žˆ์–ด, ์‹œ๊ฐ„ ๋ฐ€๋ฆผํ˜„์ƒ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์˜คํžˆ๋ ค sleep(usleep)์— ์กฐ๊ธˆ๋” ๊ธด ์‹œ๊ฐ„์„ ์ฃผ์–ด์•ผ ํ•จ
  • ์šด์˜์ฒด์ œ์—์„œ CPU๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” PCB์— ๋Œ€ํ•œ ๊ฐœ๋… ์Šต๋“ ๋ฐ ์Šค์ผ€์ค„๋ง์— ๋Œ€ํ•œ ์ดํ•ด
  • ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์˜ ์ž์›์†Œ๋ชจ, ์“ฐ๋ ˆ๋“œ ํ˜น์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ ์ž์ฒด๋„ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฉฐ ๊ณต์œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ์œ„ํ•œ ๋ฐฉ๋ฒ•(๋ฎคํ…์Šค,์„ธ๋งˆํฌ์–ด๋“ฑ์„ ํ†ตํ•œ ์›์ž์ ์‹คํ–‰๊ณผ IPC)์˜ ๋‹จ์ ์ด ๋ช…ํ™•ํ•จ
  • ์•„ํŒŒ์น˜๋ณด๋‹ค nginx๊ฐ€ ๋” ์ปค๋„ฅ์…˜ ์„ฑ๋Šฅ์ด ์ข‹์€ ์ด์œ ๊ฐ€, ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค ํ˜น์€ ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์†Œ๋ชจ๋˜๋Š” ์ž์›๊ณผ ์‹œ๊ฐ„์œผ๋กœ ์ธํ•ด ์‹ฑ๊ธ€์Šค๋ ˆ๋“œ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์‹ฑ ๋ฐฉ์‹์„ ์„ ํƒํ•œ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ
  • ์›น์„œ๋ฒ„ ๊ณผ์ œ์—์„œ CGI๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ fork๋ฅผ ํ†ตํ•œ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค ๋ฐฉ์‹์„ nginx๋Š” FAST-CGI ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ ์ด์œ  ์ถ”์ธก ๊ฐ€๋Šฅ

About

Implement "Dining philosophers" by multi process and thread with C99

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published