๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ—‚๏ธ ์Šคํ„ฐ๋”” ํ™œ๋™/๐Ÿ“— ๋ฉด์ ‘์„ ์œ„ํ•œ CS ์ „๊ณต์ง€์‹ ๋…ธํŠธ

[์šด์˜์ฒด์ œ] ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ

by ๐Ÿ’พ๊ณ ๊ตฌ๋งˆ๋ง›ํƒ•๋จน๊ณ ์‹ถ๋‹ค 2024. 9. 18.
728x90

1. ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ (Multiprocessing)

ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (IPC) ๊ธฐ๋ฒ•

  • ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ
    • ์ •์˜: ๋‘ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•˜์—ฌ ํ†ต์‹ 
    • ํ†ต์‹  ๋ฐฉ์‹: ์™ธ๋ถ€ ํ†ต์‹  ๋ถˆ๊ฐ€, ์–‘๋ฐฉํ–ฅ
  • ํŒŒ์ผ
    • ์ •์˜: ํ”„๋กœ์„ธ์Šค๋“ค์ด ํŒŒ์ผ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๊ตํ™˜
    • ํ†ต์‹  ๋ฐฉ์‹: ์™ธ๋ถ€ ํ†ต์‹  ๊ฐ€๋Šฅ, ์–‘๋ฐฉํ–ฅ
  • ์†Œ์ผ“
    • ์ •์˜: ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•œ ํ†ต์‹  ๋ฐฉ์‹
    • ํ†ต์‹  ๋ฐฉ์‹: ์™ธ๋ถ€ ํ†ต์‹  ๊ฐ€๋Šฅ, ์–‘๋ฐฉํ–ฅ
  • ์ต๋ช… ํŒŒ์ดํ”„
    • ์ •์˜: ๋ถ€๋ชจ-์ž์‹ ํ”„๋กœ์„ธ์Šค ๊ฐ„์—๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • ํ†ต์‹  ๋ฐฉ์‹: ์™ธ๋ถ€ ํ†ต์‹  ๋ถˆ๊ฐ€, ๋‹จ๋ฐฉํ–ฅ
  • ๋ช…๋ช…๋œ ํŒŒ์ดํ”„
    • ์ •์˜: ๋ช…๋ช…๋œ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ 
    • ํ†ต์‹  ๋ฐฉ์‹: ์™ธ๋ถ€ ํ†ต์‹  ๊ฐ€๋Šฅ, ์–‘๋ฐฉํ–ฅ
  • ๋ฉ”์„ธ์ง€ํ
    • ์ •์˜ : ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ๋ฉ”์„ธ์ง€๋ฅผ ์ „์†กํ•˜๊ณ  ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ํ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ†ต์‹  ๋ฐฉ์‹
    • ํ†ต์‹  ๋ฐฉ์‹ : ์™ธ๋ถ€ ํ†ต์‹  ๊ฐ€๋Šฅ, ์–‘๋ฐฉํ–ฅ
    • ์žฅ์  : 
      • ๋น„๋™๊ธฐ์‹ ํ†ต์‹  ์ง€์›: ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”์„ธ์ง€๋ฅผ ์ „์†กํ•˜๊ณ , ์ˆ˜์‹ ์ž๋Š” ๋‚˜์ค‘์— ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
      • ๋ฉ”์„ธ์ง€์˜ ์ˆœ์„œ ๋ณด์žฅ: ๋ฉ”์„ธ์ง€๋Š” FIFO(First In, First Out) ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋จ
    • ๋‹จ์  :
      • ๋ฉ”์„ธ์ง€ ํ์˜ ํฌ๊ธฐ ์ œํ•œ: ํ์˜ ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๋ฉ”์„ธ์ง€๊ฐ€ ์†์‹ค๋  ์ˆ˜ ์žˆ์Œ
      • ๋ณต์žก์„ฑ: ๋ฉ”์„ธ์ง€ ํ๋ฅผ ์„ค์ •ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์ถ”๊ฐ€์ ์ธ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
    • ์ข…๋ฅ˜ : Kafka, RabbitMQ, ActiveMQ

https://velog.io/@jayjoy05/%EB%A9%94%EC%8B%9C%EC%A7%80-%ED%81%90Message-Queue%EB%9E%80


2. ์Šค๋ ˆ๋“œ์™€ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ (Threads & Multithreading)

  • ์Šค๋ ˆ๋“œ
    • ์ •์˜ : ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์ž‘์—… ๋‹จ์œ„
  • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ
    • ์ •์˜ : ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹
    • ์žฅ์  : ์ž์› ํšจ์œจ์„ฑ ์ฆ๊ฐ€, ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋กœ ์„ฑ๋Šฅ ํ–ฅ์ƒ
    • ์˜ˆ์‹œ : ์›น ์„œ๋ฒ„์˜ ๋™์‹œ ์š”์ฒญ ์ฒ˜๋ฆฌ

https://velog.io/@hkh1213/%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%94%A9%EC%9D%98-%EC%9E%A5%EC%A0%90-%EB%8B%A8%EC%A0%90


3. ๊ณต์œ  ์ž์›๊ณผ ์ž„๊ณ„ ์˜์—ญ (Shared Resources & Critical Section)

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

 

** ์ž„๊ณ„ ์˜์—ญ ํ•ด๊ฒฐ ๊ธฐ๋ฒ• 

  • ๋ฎคํ…์Šค(Mutex) : ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ์ž„๊ณ„ ์˜์—ญ์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ž ๊ธˆ์„ ์ œ๊ณตํ•˜๋Š” ๋™๊ธฐํ™” ๊ธฐ๋ฒ•

https://hudi.blog/race-condition-critical-section-mutual-exclusion/

 

  • ์„ธ๋งˆํฌ์–ด(Semaphore) : ์นด์šดํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์›์— ์ ‘๊ทผํ•˜๋Š” ํšŸ์ˆ˜๋ฅผ ์ œ์–ด
    • ๋ฐ”์ด๋„ˆ๋ฆฌ ์„ธ๋งˆํฌ์–ด: ๋‘ ์ƒํƒœ(0, 1)๋งŒ ๊ฐ€์ง, ๋ฎคํ…์Šค์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์‚ฌ์šฉ
    • ์นด์šดํŒ… ์„ธ๋งˆํฌ์–ด: ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž„๊ณ„ ์˜์—ญ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ

https://hudi.blog/race-condition-critical-section-mutual-exclusion/

  • ๋ชจ๋‹ˆํ„ฐ(Monitor) : ๊ฐ์ฒด ๋‹จ์œ„๋กœ ์ ‘๊ทผ์„ ์ œ์–ดํ•˜์—ฌ ์Šค๋ ˆ๋“œ์˜ ์ž„๊ณ„ ์˜์—ญ ์ง„์ž…์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹

https://hudi.blog/race-condition-critical-section-mutual-exclusion/


4. ๊ต์ฐฉ ์ƒํƒœ (Deadlock)

  • ๊ต์ฐฉ ์ƒํƒœ ์ •์˜
    • ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์„œ๋กœ ์ž์›์„ ์ ์œ ํ•œ ์ƒํƒœ์—์„œ ์•„๋ฌด๋„ ์ง„ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ
  • ๊ต์ฐฉ ์ƒํƒœ์˜ 4๊ฐ€์ง€ ํ•„์š” ์กฐ๊ฑด:
    • ์ƒํ˜ธ ๋ฐฐ์ œ : ์ž์›์€ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • ์ ์œ  ๋Œ€๊ธฐ : ์ž์›์„ ์ ์œ ํ•œ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ์ž์›์„ ๋Œ€๊ธฐ
    • ๋น„์„ ์  : ์ ์œ ํ•œ ์ž์›์„ ๊ฐ•์ œ๋กœ ๋บ์„ ์ˆ˜ ์—†์Œ
    • ์ˆœํ™˜ ๋Œ€๊ธฐ : ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ์ˆœํ™˜ ๋Œ€๊ธฐ๊ฐ€ ์กด์žฌ
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:
    • ๊ต์ฐฉ ์ƒํƒœ ์˜ˆ๋ฐฉ : ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ฅผ ์—†์• ๊ธฐ
    • ๊ต์ฐฉ ์ƒํƒœ ํšŒํ”ผ : ์ž์› ํ• ๋‹น ์‹œ ๋ฏธ๋ฆฌ ๊ฒ€ํ† 
    • ๊ต์ฐฉ ์ƒํƒœ ํƒ์ง€ ๋ฐ ๋ณต๊ตฌ : ๋ฐœ์ƒ ์‹œ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ ๋งˆ๋ จ

https://tech.wonderwall.kr/articles/deadlock/

 

728x90