20.04.20 (์›”)

Updated:

์˜ค๋Š˜ ํ•  ์ผ (๊ณ„ํš)

  • ์ทจ์—…์—ญ๋Ÿ‰๊ฐœ๋ฐœ๋ก  6์ฃผ์ฐจ ๋“ฃ๊ธฐ
  • ์„œ์–‘๊ณ ์ „๊ฐ•๋… 7์ฃผ์ฐจ ๋“ฃ๊ธฐ
  • ์•Œ๊ธฐ์‰ฌ์šด์ฝ”๋”ฉ 8์ฃผ์ฐจ ๋“ฃ๊ธฐ
  • ์šด์˜์ฒด์ œ 5์ฃผ์ฐจ ๋“ฃ๊ธฐ

์˜ค๋Š˜ ํ•œ ์ผ

  • ์šด์˜์ฒด์ œ

    ์ƒ๊ฐํ•ด ๋ณด์•„์•ผ ํ•  ๊ฒƒ

    1. semaphore ์—์„œ s ๊ฐ’์„ ์ ˆ๋Œ€๋กœ ์Œ์ˆ˜๋กœ ์ดˆ๊ธฐํ™” ํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ด์œ 

    2. s ๊ฐ’์„ 1์ด ์•„๋‹Œ 3์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒํ•˜๋Š” ์ผ

    3. s ๊ฐ’์ด ์Œ์ˆ˜์ผ๋•Œ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋Š” ๋ฌด์—‡์ผ๊นŒ?


    MultiProgramming ๊ณผ MultiProcessing ์€ ์ „ํ˜€ ๋‹ค๋ฅธ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„๋‹ค.

    ์ „์ž๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์‹œ์— ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€์„œ ๋ฒˆ๊ฐˆ์•„ ๊ฐ€๋ฉฐ ์‹คํ–‰ ํ•˜๋Š” ๊ฒƒ์ด๊ณ 

    ํ›„์ž๋Š” ์‹ค์ œ๋กœ CPU๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์ด๋ฉฐ ๊ฐ๊ฐ์˜ CPU์—์„œ ํ”„๋กœ๊ทธ๋žจ์ด ํ•œ ๊ฐœ์”ฉ ์‹คํ–‰ ๋œ๋‹ค.


    ์ผ๋‹จ 5์žฅ์—์„œ ๋ฐฐ์šฐ๋Š” ์ค‘์š”ํ•œ ๋‚ด์šฉ์€ ์ž์›์„ ๋‹ค๋ฃฐ๋•Œ ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ๋Š” ์„ธ๊ฐ€์ง€ ์˜ค๋ฅ˜์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ณ 

    ๊ทธ ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋ฐฐ์šด๋‹ค. ์„ธ๊ฐ€์ง€ ์˜ค๋ฅ˜๋กœ๋Š” ์ƒํ˜ธ๋ฐฐ์ œ์˜ ํ•„์š”์„ฑ, deadlock, starvation์ด ์žˆ๋‹ค.

    ๊ทธ ์ค‘ ๋จผ์ € ์ƒํ˜ธ๋ฐฐ์ œ (Multual Exclusion) ์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค.

    ์ƒํ˜ธ๋ฐฐ์ œ๋Š” Critical Section์— ์žˆ๋Š” ์ฝ”๋“œ๋Š” ํ•œ ๋ฒˆ์— ํ•œ ๊ฐœ ์”ฉ ์‹คํ–‰์„ ํ•ด์•ผํ•œ๋‹ค.


    ์ƒํ˜ธ๋ฐฐ์ œ๋ฅผ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์š”๊ตฌ๊ฐ€ 6๊ฐ€์ง€ ์žˆ๋‹ค.

    1. Critical Section์—๋Š” ํ•œ ๋ฒˆ์— ํ•œ ํ”„๋กœ์„ธ์Šค๋งŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
    2. Critical Section์ด ์•„๋‹Œ ์ง€์—ญ์—์„œ ๋ฉˆ์ถฐ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐฉํ•ดํ•ด์„  ์•ˆ๋œ๋‹ค.
    3. Deadlock๊ณผ starvation์ด ์—†์–ด์•ผ ํ•œ๋‹ค.
    4. Critical Section์ด ๋น„์–ด์žˆ๋Š”๋ฐ ๋ชป ๋“ค์–ด๊ฐ€๋ฉด ์•ˆ๋œ๋‹ค.
    5. ํ”„๋กœ์„ธ์Šค ๊ฐœ์ˆ˜๋‚˜ ์†๋„์— ๋”ฐ๋ผ์„œ ์ž‘๋™์„ ํ•˜๊ธฐ๋„ ํ•˜๊ณ  ์•ˆํ•˜๊ธฐ๋„ ํ•˜๋ฉด ์•ˆ๋œ๋‹ค.
    6. Critical Section(์ดํ•˜ C.S) ์— ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฌดํ•œํžˆ ์žˆ์œผ๋ฉด ์•ˆ๋œ๋‹ค.


    ์ƒํ˜ธ๋ฐฐ์ œ๋ฅผ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด H.W ๋‹จ๊ณ„, O/S ๋‹จ๊ณ„, Application ๋‹จ๊ณ„๊ฐ€ ์žˆ๋‹ค.

    ์šฐ์„  H.W ๋‹จ๊ณ„๋ฅผ ์•Œ์•„๋ณด์ž ์•„์ฃผ ์•„์ฃผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช… ํ•  ๊ฒƒ์ด๋‹ค.

    1. Compare and Swap Instruction

      bolt ๊ฐ’์„ ํ†ตํ•ด C.S ์ง„์ž… ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จ ํ•œ๋‹ค.

    2. Exchange Instrcution

      bolt ๊ฐ’๊ณผ ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ key ๊ฐ’์„ ๋น„๊ตํ•ด C.S ์ง„์ž… ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จ ํ•œ๋‹ค.


    ์ด H.W ๋‹จ๊ณ„๋ฅผ ์‚ฌ์šฉ ํ•จ์œผ๋กœ์จ ์žฅ์ ๊ณผ ๋‹จ์ ์ด ์žˆ๋‹ค.

    ์žฅ์ ์„ ๋จผ์ € ์•Œ์•„๋ณด์ž

    1. ํ”„๋กœ์„ธ์Šค ๊ฐœ์ˆ˜ ์ƒ๊ด€ ์—†์ด ๊ตฌํ˜„ ๊ฐ€๋Šฅ
    2. ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
    3. ๋ฉ€ํ‹ฐ C.S ๊ตฌํ˜„ ๊ฐ€๋Šฅ

    ํ•˜์ง€๋งŒ ๋‹จ์ ์ด ๋งค์šฐ๋งค์šฐ ์ปค ์ž์ฃผ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.

    ๋‹จ์ ์œผ๋กœ๋Š”

    1. Busy-Waiting

      ์—ฌ๊ธฐ์—” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์•˜์ง€๋งŒ H.W๋ฅผ ํ†ตํ•ด ์ƒํ˜ธ๋ฐฐ์ œ๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ

      bolt ๊ฐ’์„ ๋น„๊ตํ•˜๊ฑฐ๋‚˜ key ๊ฐ’์„ ๋น„๊ตํ•  ๋•Œ while๋ฌธ์„ ์˜๋ฏธ์—†์ด ๊ณ„์† ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

      ์ด ๊ฒฝ์šฐ CPU๋Š” ์žก์•„๋จน์œผ๋ฉด์„œ ์•„๋ฌด์ผ๋„ ํ•˜์ง€ ์•Š๊ธฐ๋•Œ๋ฌธ์— Busy-Waiting ์ด๋ผ๊ณ  ํ•œ๋‹ค.

    2. Starvation

      ๋ง ๊ทธ๋Œ€๋กœ ๊ตถ๋Š” ๊ฒƒ์ด๋‹ค. ํŠน์ • ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ˆœ์„œ๋ฅผ ์•ˆ์ค˜ ์˜์›ํžˆ ์‹คํ–‰๋˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

    3. Deadlock

      ๋ฉ€ํ‹ฐ C.S๋ฅผ ๊ตฌํ˜„ํ–ˆ์„ ๊ฒฝ์šฐ ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ๋‹ค.


    ๊ทธ๋ž˜์„œ Busy-Waiting๊ณผ Starvation์„ ์—†์• ๋Š” ๋ฐฉ์•ˆ์œผ๋กœ O/S์—์„œ ์ œ๊ณตํ•˜๋Š” Semaphore๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    Semaphore์€ ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ •์ˆ˜ ํ•œ ๊ฐœ์™€ ํ ํ•œ ๊ฐœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

    Semaphore์„ ์—ฌ๊ธฐ์— ๋‹ค ์ •๋ฆฌํ•˜๊ธด ์–ด๋ ค์šธ ๊ฒƒ ๊ฐ™์•„์„œ ๋‚˜์ค‘์— ๋”ฐ๋กœ ํฌ์ŠคํŒ…์„ ํ•ด์•ผ๊ฒ ๋‹ค.

    ๊ทธ๋ฆฌ๊ณ  ๋งจ~ ์ฒ˜์Œ์— ๋งํ–ˆ๋˜ ์ƒ๊ฐํ•ด ๋ณด์•„์•ผ ํ•  ๊ฒƒ


    4์›” 22์ผ ์ˆ˜์š”์ผ ์„ ๋ฐฐ์˜ ๋„์›€์„ ๋ฐ›์•„ ํ•ด๊ฒฐํ–ˆ๋‹ค.

    1. semaphore ์—์„œ s ๊ฐ’์„ ์ ˆ๋Œ€๋กœ ์Œ์ˆ˜๋กœ ์ดˆ๊ธฐํ™” ํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ด์œ 

      ๋งŒ์•ฝ ๋™์ผ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง„ ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ๋“œ๋ฝ์— ๊ฑธ๋ฆฐ๋‹ค.

      ์—ฌ๊ธฐ์„œ ์ถ”๊ฐ€๋กœ 0์ธ ๊ฒฝ์šฐ๋„ ์•ˆ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์ฐฉ๊ฐ์ด์˜€๋‹ค.

      ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ wait โ†’ย C.S โ†’ย signal ์ˆœ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋‹ค.

      ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋Š” signal ๋งŒ ์—ฌ๋Ÿฌ๋ฒˆ ์žˆ์„์ˆ˜๋„ ์žˆ๋‹ค.

      ๋”ฐ๋ผ์„œ 0 ์ด์–ด๋„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฒ˜์Œ ๋“ค์–ด๊ฐ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ์—์„œ ๋นผ์ค„ ์ˆ˜ ์žˆ๋‹ค.


    2. s ๊ฐ’์„ 1์ด ์•„๋‹Œ 3์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒํ•˜๋Š” ์ผ

      C.S ๋ฐฉ์˜ ํฌ๊ธฐ๊ฐ€ 3์œผ๋กœ ๋ฐ”๋€Œ์–ด ์„ธ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด์™€ ๋™์ž‘ํ•œ๋‹ค.

      ๋‹จ์ง€ ์ด ์„ธ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ Race condition๋งŒ ์—†์œผ๋ฉด ๋œ๋‹ค.

      ์žˆ๋‹ค๋ฉด ์ฝ”๋”ฉ์„ ์ž˜๋ชปํ•œ๊ฒƒ์ด๋‹ค.


    3. s ๊ฐ’์ด ์Œ์ˆ˜์ผ๋•Œ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋Š” ๋ฌด์—‡์ผ๊นŒ?

      โ†’ย s ๊ฐ’์˜ ์ ˆ๋Œ€ ๊ฐ’์ด ํ์— ๋‚จ์•„์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

    ๋‚ด๊ฐ€ ๋‹น์‹œ ์ด ๋ฌธ์ œ๋ฅผ ํ’€๋•Œ ๊ณ ์ •๊ด€๋…์— ์‚ฌ๋กœ์žกํ˜€ ์žˆ์—ˆ๋‹ค. ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ wait โ†’ C.S โ†’ signal ์ˆœ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋‹ค.

    ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋Š” signal๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ์„ ์ˆ˜ ๋„์žˆ๊ณ  ๊ทธ๋ ‡๋‹ค ! ์ˆœ์„œ๋Œ€๋กœ ๋™์ž‘ํ•œ๋‹ค๋Š” ์ƒ๊ฐ์„ ๋ฒ„๋ฆฌ์ž

    ์ € ์ˆœ์„œ๋Š” ์ƒํ˜ธ๋ฐฐ์ œ๋ฅผ ๋„์™€์ฃผ๋Š” ์ˆœ์„œ์ผ ๋ฟ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šด์˜์ฒด์ œ 6์ฃผ์ฐจ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉด ๋” ์ดํ•ด๊ฐ€ ์ž˜ ๊ฐ„๋‹ค๊ณ  ํ•˜๋‹ˆ๊นŒ

    ์ด๋ฒˆ์ฃผ ์ฃผ๋ง์— ์ž˜ ๋“ค์–ด๋ณด์ž !

๋‚ด์ผ ํ•  ์ผ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 6์ฃผ์ฐจ ๋“ฃ๊ธฐ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณด์ถฉ ๊ฐ•์˜ ๋“ฃ๊ธฐ
  • ์„œ์–‘๊ณ ์ „๊ฐ•๋… ๊ณผ์ œ ์ œ์ถœ Window OS๋กœ ์ œ์ถœ

์ด๋ฒˆ์ฃผ ํ•  ์ผ

  • ์ทจ์—…์—ญ๋Ÿ‰๊ฐœ๋ฐœ๋ก  6์ฃผ์ฐจ ๋“ฃ๊ธฐ (์›”)
  • ์„œ์–‘๊ณ ์ „๊ฐ•๋… 7์ฃผ์ฐจ ๋“ฃ๊ธฐ (์›”)
  • ์•Œ๊ธฐ์‰ฌ์šด์ฝ”๋”ฉ 8์ฃผ์ฐจ ๋“ฃ๊ธฐ (์›”)
  • ์šด์˜์ฒด์ œ 5์ฃผ์ฐจ ๋“ฃ๊ธฐ (์›”)
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 6์ฃผ์ฐจ ๋“ฃ๊ธฐ (ํ™”)
  • ์„œ์–‘๊ณ ์ „๊ฐ•๋… ๊ณผ์ œ ์ œ์ถœ (ํ™”)
  • ๋Œ€ํ•™์ƒ์„์œ„ํ•œ์‹ค์šฉ๊ธˆ์œต 5์ฃผ์ฐจ, 6์ฃผ์ฐจ ๋“ฃ๊ธฐ (์ˆ˜)
  • ๋Œ€ํ•™์ƒ์„์œ„ํ•œ์‹ค์šฉ๊ธˆ์œต ๊ณผ์ œ ์ œ์ถœ (์ˆ˜)
  • ํ™•๋ฅ ๊ณผ ํ†ต๊ณ„ 6์ฃผ์ฐจ ๋“ฃ๊ธฐ (๋ชฉ)
  • ์šด์˜์ฒด์ œ 3, 4๊ฐ• ํ€ด์ฆˆ ์ค€๋น„ (๋ชฉ)
  • ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ 6์ฃผ์ฐจ ๋“ฃ๊ธฐ (๊ธˆ)
  • ์šด์˜์ฒด์ œ 6์ฃผ์ฐจ ๋“ฃ๊ธฐ (ํ† )

Leave a comment