ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”

2020. 4. 23. 14:34ยท๐Ÿ“ Computer Science/โœ OS

ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”

1. ์Šค๋ ˆ๋“œ ์„ธ์ดํ”„(Thread Safe)

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์–ด๋–ค ํ•จ์ˆ˜๋‚˜ ๋ณ€์ˆ˜, ํ˜น์€ ๊ฐ์ฒด๊ฐ€ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋กœ๋ถ€ํ„ฐ ๋™์‹œ์— ์ ‘๊ทผ์ด ์ด๋ฃจ์–ด์ ธ๋„ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์— ๋ฌธ์ œ๊ฐ€ ์—†์Œ์„ ๋œปํ•œ๋‹ค. ๋ณด๋‹ค ์—„๋ฐ€ํ•˜๊ฒŒ๋Š” ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๊ฐ€ ํ•œ ์Šค๋ ˆ๋“œ๋กœ๋ถ€ํ„ฐ ํ˜ธ์ถœ๋˜์–ด ์‹คํ–‰ ์ค‘์ผ ๋•Œ, ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ทธ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋™์‹œ์— ํ•จ๊ป˜ ์‹คํ–‰๋˜๋”๋ผ๋„ ๊ฐ ์Šค๋ ˆ๋“œ์—์„œ์˜ ํ•จ์ˆ˜์˜ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ์˜ฌ๋ฐ”๋กœ ๋‚˜์˜ค๋Š” ๊ฒƒ์œผ๋กœ ์ •์˜ํ•œ๋‹ค.

 

2. ์ž„๊ณ„ ์˜์—ญ(Critical Section)

์ž„๊ณ„ ์˜์—ญ์ด๋ž€ ๋™์ผํ•œ ์ž์›(๊ณต์œ  ์ž์›)์„ ๋™์‹œ์— ์ ‘๊ทผํ•˜๋Š” ์ž‘์—…(๊ณต์œ  ๋ณ€์ˆ˜ ์‚ฌ์šฉ, ๋™์ผ ํŒŒ์ผ ์‚ฌ์šฉ ๋“ฑ)์„ ์‹คํ–‰ํ•˜๋Š” ์ฝ”๋“œ ์˜์—ญ์ด๋‹ค. ์ด๋Ÿฌํ•œ ์ž„๊ณ„ ์˜์—ญ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 3๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค.

 

  • ์ƒํ˜ธ ๋ฐฐ์ œ(Mutual Exclusion): ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„ ์˜์—ญ์—์„œ ์‹คํ–‰ ์ค‘์ด๋ผ๋ฉด, ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์€ ์ž„๊ณ„ ์˜์—ญ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์—†๋‹ค.
  • ์ง„ํ–‰(Progress): ์ž„๊ณ„ ์˜์—ญ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†๊ณ  ๋ณ„๋„์˜ ๋™์ž‘์ด ์—†๋Š” ํ”„๋กœ์„ธ์Šค๋“ค๋งŒ ์ž„๊ณ„ ์˜์—ญ์˜ ์ง„์ž… ํ›„๋ณด๋กœ์„œ ์ฐธ์—ฌ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•œ์ •๋œ ๋Œ€๊ธฐ(Bounded Waiting): ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„ ์˜์—ญ์— ์ง„์ž… ์‹ ์ฒญ ํ›„๋ถ€ํ„ฐ ๋ฐ›์•„๋“ค์—ฌ์งˆ ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ž„๊ณ„ ์˜์—ญ์— ์ง„์ž…ํ•˜๋Š” ํšŸ์ˆ˜๋Š” ์ œํ•œ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

3. ๋™๊ธฐํ™” ๊ธฐ๋ฒ•

1) LOCK

ํ•˜๋“œ์›จ์–ด ๊ธฐ๋ฐ˜ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ๋™์‹œ์— ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์ž„๊ณ„ ์˜์—ญ์— ์ง„์ž…ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” Lock์„ ํš๋“ํ•˜๊ณ  ๋น ์ ธ๋‚˜์˜ฌ ๋•Œ Lock์„ ๋ฐฉ์ถœํ•จ์œผ๋กœ์จ ๋™์‹œ์— ์ ‘๊ทผ์ด ๋˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

 

2) ์„ธ๋งˆํฌ์–ด(Semaphore)

์†Œํ”„ํŠธ์›จ์–ด ๊ธฐ๋ฐ˜ ํ•ด๊ฒฐ์ฑ…์ด๋‹ค.

  • ์นด์šดํŒ…(Counting) ์„ธ๋งˆํฌ์–ด: ๊ฐ€์šฉํ•œ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ€์ง„ ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ ์ œ์–ด์šฉ์œผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ์„ธ๋งˆํฌ์–ด๋ฅผ ๊ฐ€์šฉํ•œ ์ž์›์˜ ๊ฐœ์ˆ˜๋กœ ์ดˆ๊ธฐํ™”ํ•œ ํ›„ ์ž์›์„ ์‚ฌ์šฉํ•˜๋ฉด ์„ธ๋งˆํฌ์–ด ๊ฐ์†Œ, ๋ฐฉ์ถœํ•˜๋ฉด ์„ธ๋งˆํฌ์–ด๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค. ์„ธ๋งˆํฌ์–ด๊ฐ€ 0์ด๋ฉด ๋ชจ๋‘ ์‚ฌ์šฉ ์ค‘์ธ ๊ฒฝ์šฐ๋กœ ๋‹ค์Œ ์ž‘์—…์€ ๋Œ€๊ธฐํ•ด์•ผ ํ•œ๋‹ค.
// P: ์ž„๊ณ„ ์˜์—ญ์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ์ˆ˜ํ–‰(ํ”„๋กœ์„ธ์Šค ์ง„์ž… ์—ฌ๋ถ€๋ฅผ ์ž์›์˜ ๊ฐœ์ˆ˜(S)๋ฅผ ํ†ตํ•ด ๊ฒฐ์ •)
// V : ์ž„๊ณ„ ์˜์—ญ์—์„œ ๋‚˜์˜ฌ ๋•Œ ์ˆ˜ํ–‰(์ž์› ๋ฐ˜๋‚ฉ ์•Œ๋ฆผ, ๋Œ€๊ธฐ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊นจ์šฐ๋Š” ์‹ ํ˜ธ)

procedure P(S) // ์ตœ์ดˆ S๊ฐ’์€ 1์ž„
    while S=0 do wait // S๊ฐ€ 0๋ฉด 1์ด ๋ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•จ
    S := S-1 // S๋ฅผ 0๋กœ ๋งŒ๋“ค์–ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด ์˜ค์ง€ ๋ชปํ•˜๋„๋ก ํ•จ
end P

// ์ž„๊ณ„ ์˜์—ญ

procedure V(S) // ํ˜„์žฌ์ƒํƒœ๋Š” S๊ฐ€ 0์ž„
    S := S+1 // S๋ฅผ 1๋กœ ์›์œ„์น˜์‹œ์ผœ ํ•ด์ œํ•˜๋Š” ๊ณผ์ •
end V
  • ์ด์ง„(Binary) ์„ธ๋งˆํฌ์–ด: Mutex๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ 0๊ณผ 1 ์‚ฌ์ด์˜ ๊ฐ’๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ผ์ข…์˜ ์ž๋ฌผ์‡  ์—ญํ• ๋กœ ๋ฎคํ…์Šค๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด์•ผ ์ž„๊ณ„ ์˜์—ญ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐ”์œ ๋Œ€๊ธฐ: ์ž„๊ณ„ ์˜์—ญ์— ์ง„์ž…ํ•ด์•ผ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ์ง„์ž… ์ฝ”๋“œ๋ฅผ ๊ณ„์† ๋ฐ˜๋ณต ์‹คํ–‰ํ•ด์•ผ ํ•˜๋ฉฐ CPU ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋œ๋‹ค.

 

3) ๋ชจ๋‹ˆํ„ฐ

๊ณ ๊ธ‰ ์–ธ์–ด์˜ ์„ค๊ณ„ ๊ตฌ์กฐ๋ฌผ๋กœ์จ ๊ฐœ๋ฐœ์ž์˜ ์ฝ”๋“œ๋ฅผ ์ƒํ˜ธ ๋ฐฐ์ œํ•˜๊ฒŒ๋” ๋งŒ๋“  ์ถ”์ƒํ™”๋œ ๋ฐ์ดํ„ฐ ํ˜•ํƒœ์ด๋‹ค. ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ํ‚ค ํš๋“๊ณผ ์ž์› ์‚ฌ์šฉ ํ›„ ํ•ด์ œ๋ฅผ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

4) ํ•ด๊ฒฐ์ฑ…๋“ค์˜ ์ฐจ์ด์ 

  • ๋ฎคํ…์Šค์™€ ๋ชจ๋‹ˆํ„ฐ๋Š” ํ•˜๋‚˜์˜ ๋Œ€์ƒ๋งŒ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๊ณ  ์„ธ๋งˆํฌ์–ด๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ๋Œ€์ƒ์„ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์„ธ๋งˆํฌ์–ด๋Š” ์†Œ์œ ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋ฎคํ…์Šค๋Š” ์†Œ์œ ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ฎคํ…์Šค๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋ชจ๋‹ˆํ„ฐ๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ ๊ฐ„ ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.
'๐Ÿ“ Computer Science/โœ OS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋™์‹œ์„ฑ(Concurrency)๊ณผ ๋ณ‘๋ ฌ์„ฑ(Parallelism)
  • ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ & Blocking๊ณผ Non-Blocking
  • ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋Ÿฌ
  • ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ ๊ณต๊ฐ„๊ณผ ๊ธฐ์–ต ํด๋ž˜์Šค
Blxxming
Blxxming
CS ์ง€์‹๊ณผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ฐฐ์šด ๊ฒƒ, ๊ฒฝํ—˜ํ•œ ๊ฒƒ ๋“ฑ์„ ๊ธฐ๋กํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
  • Blxxming
    ๐Ÿ’ก๋ฒˆ๋œฉ๐Ÿ’ก
    Blxxming
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๊ณต์ง€์‚ฌํ•ญ

    • Tech Interview
    • ๐Ÿ“š Tech (246)
      • ๐Ÿ“ Computer Science (96)
        • โœ OS (12)
        • โœ Network & Web (10)
        • โœ Database (11)
        • โœ Data Structure (6)
        • โœ Algorithm (40)
        • โœ Design Pattern (9)
        • โœ Cloud Computing (3)
        • โœ (5)
      • ๐Ÿ“ Language (73)
        • โœ Language (6)
        • โœ C & C++ (11)
        • โœ C# (19)
        • โœ JAVA (37)
      • ๐Ÿ“ Game (43)
        • โœ Computer Graphics (2)
        • โœ Unity (14)
        • โœ Unreal (26)
        • โœ (1)
      • ๐Ÿ“ Book (34)
        • โœ Effective (3)
        • โœ Game Server (16)
        • โœ Clean Code (14)
        • โœ (1)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Blxxming
ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”