ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋Ÿฌ

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

1. ์Šค์ผ€์ค„๋ง(Scheduling)

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์‹คํ–‰๋  ๋•Œ ํ•„์š”ํ•œ ์‹œ์Šคํ…œ์˜ ์—ฌ๋Ÿฌ ์ž์›์„ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ• ๋‹นํ•˜๋Š” ์ž‘์—…์ด๋‹ค.

 

์Šค์ผ€์ค„๋ง

 

1) ์žฅ๊ธฐ(์ž‘์—…) ์Šค์ผ€์ค„๋ง

๋ฉ”๋ชจ๋ฆฌ์™€ ๋””์Šคํฌ ์‚ฌ์ด์˜ ์Šค์ผ€์ค„๋ง์„ ๋‹ด๋‹นํ•œ๋‹ค. ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•œ๊บผ๋ฒˆ์— ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ฌ ๊ฒฝ์šฐ ๋””์Šคํฌ์— ์ž„์‹œ๋กœ ์ €์žฅ๋˜๋Š”๋ฐ ์ €์žฅ๋œ ํ”„๋กœ์„ธ์Šค ์ค‘ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹นํ•˜์—ฌ ์ค€๋น„ ํ๋กœ ๋ณด๋‚ผ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.

 

2) ์ค‘๊ธฐ ์Šค์ผ€์ค„๋ง

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

 

3) ๋‹จ๊ธฐ(ํ”„๋กœ์„ธ์„œ) ์Šค์ผ€์ค„๋ง

CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์˜ ์Šค์ผ€์ค„๋ง๊ณผ ๋ฌธ๋งฅ ๊ตํ™˜์„ ๋‹ด๋‹นํ•œ๋‹ค. ์ค€๋น„ ํ์— ์กด์žฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰์‹œํ‚ฌ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.

 

4) ์Šค์ผ€์ค„๋ง ํ(Queue)

  • ์ž‘์—…(Job) ํ: ํ˜„์žฌ ์‹œ์Šคํ…œ ๋‚ด์— ์žˆ๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์ง‘ํ•ฉ์ด๋‹ค.
  • ์ค€๋น„(Ready) ํ: ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ์žˆ์œผ๋ฉด์„œ CPU๋ฅผ ์žก์•„ ์‹คํ–‰๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ์ด๋‹ค.
  • ์žฅ์น˜(Device) ํ: ์ž…์ถœ๋ ฅ ์ž‘์—…์„ ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ์ด๋‹ค.

 

2. ํ”„๋กœ์„ธ์Šค ์ƒํƒœ ๋ณ€ํ™”

ํ”„๋กœ์„ธ์Šค ์ƒํƒœ์—๋Š” ์ค€๋น„(Ready), ์‹คํ–‰(Running), ๋Œ€๊ธฐ(Wait), ์ข…๋ฃŒ(Exit) 4๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค.

 

ํ”„๋กœ์„ธ์Šค ์ƒํƒœ ๋ณ€ํ™”

 

๋ณดํ†ต ํ”„๋กœ๊ทธ๋žจ์€ CPU๊ฐ€ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์–ด ํ˜•ํƒœ๋กœ ๋””์Šคํฌ์— ์ €์žฅ๋œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด ๋””์Šคํฌ์— ์žˆ๋˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด ์ค€๋น„ ์ƒํƒœ๋กœ ์‹คํ–‰์„ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋œ๋‹ค. ์ด๋•Œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋น„์‹คํ–‰ ์ƒํƒœ๊ฐ€ ๋˜๊ณ  ์ค€๋น„ ํ์˜ ์ฒซ ๋ฒˆ์งธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

 

1) Dispatch : ์ค€๋น„(Ready) → ์‹คํ–‰(Running)

์ค€๋น„ ์ƒํƒœ๋กœ ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์„œ๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰ ์ƒํƒœ๋กœ ์ „์ด๋˜๋Š” ๊ณผ์ •์ด๋‹ค.

 

2) Time Runout : ์‹คํ–‰(Running) → ์ค€๋น„(Ready)

์šด์˜์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ผ์ • ์‹œ๊ฐ„๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ์‹œ๊ฐ„์„ ์ œํ•œํ•˜๋Š”๋ฐ, ์ด ์‹œ๊ฐ„์ด ๊ฒฝ๊ณผํ•˜๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ์šด์˜์ฒด์ œ๊ฐ€ CPU ์ œ์–ด๊ถŒ์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค. ์ด๋•Œ ์‹คํ–‰ ํ”„๋กœ์„ธ์Šค๋Š” ์ค€๋น„ ์ƒํƒœ๊ฐ€ ๋˜๊ณ  ์ค€๋น„ ํ์˜ ํ”„๋กœ์„ธ์Šค ์ค‘ ํ•˜๋‚˜๊ฐ€ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

 

3) Block : ์‹คํ–‰(Running) → ๋Œ€๊ธฐ(Wait)

์‹คํ–‰ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž…์ถœ๋ ฅ, ์ƒˆ๋กœ์šด ์ž์› ์š”์ฒญ ๋“ฑ์ด ํ•„์š”ํ•˜๋ฉด ์Šค์Šค๋กœ CPU๋ฅผ ๋ฐ˜๋‚ฉํ•˜๊ณ  ๋Œ€๊ธฐ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

 

4) Wake Up : ๋Œ€๊ธฐ(Wait) → ์ค€๋น„(Ready)

์ž…์ถœ๋ ฅ ์ž‘์—… ๋“ฑ ์กฐ๊ฑด์ด ๋งŒ์กฑ๋˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐ ์ƒํƒœ์—์„œ ์ค€๋น„ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

 

 

2. CPU ์Šค์ผ€์ค„๋ง

์ค€๋น„ ํ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์— CPU๋ฅผ ํ• ๋‹นํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์ž‘์—…์ด๋‹ค.

 

1) FCFS(First Come First Served)

  • ๋จผ์ € ์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ
  • ๋น„์„ ์ (Non-Preemptive) ์Šค์ผ€์ค„๋ง: ์ด๋ฏธ ํ• ๋‹น๋œ CPU๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ•์ œ๋กœ ๋นผ์•—์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์Šค์ผ€์ค„๋ง์œผ๋กœ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ํ• ๋‹น๋ฐ›์œผ๋ฉด ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์†Œ์š”์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ๋„๋‹ฌํ•˜์—ฌ ํšจ์œจ์„ฑ์„ ๋‚ฎ์ถ”๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค.

 

2) SJF(Shortest Job First)

  • ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ๋„์ฐฉํ–ˆ์–ด๋„ CPU burst time์ด ์งง์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋จผ์ € ํ• ๋‹น
  • ๋น„์„ ์ (Non-Preemptive) ์Šค์ผ€์ค„๋ง
  • ๊ธฐ์•„(Starvation) ์ƒํƒœ ๋ฐœ์ƒ ๊ฐ€๋Šฅ: ์‚ฌ์šฉ ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๋Š” ๊ฑฐ์˜ ์˜์›ํžˆ CPU๋ฅผ ํ• ๋‹น๋ฐ›์„ ์ˆ˜ ์—†๋‹ค.

 

3) SRT(Shortest Remaining time First)

  • ๋” ์งง์€ burst time์„ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋จผ์ € ํ• ๋‹น
  • ์„ ์ (Preemptive) ์Šค์ผ€์ค„๋ง
  • ๊ธฐ์•„(Starvation) ์ƒํƒœ ๋ฐœ์ƒ ๊ฐ€๋Šฅ

 

4) Priority Scheduling

  • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋จผ์ € ํ• ๋‹น
  • ์„ ์ (Preemptive) ์Šค์ผ€์ค„๋ง
  • ๋น„์„ ์ (Non-Preemptive) ์Šค์ผ€์ค„๋ง: ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ์ค€๋น„ ํ์˜ Head์— ๋„ฃ๋Š”๋‹ค.
  • ๊ธฐ์•„(Starvation) ์ƒํƒœ์™€ ๋ฌด๊ธฐํ•œ ๋ด‰์‡„(Indefinite blocking) ๋ฐœ์ƒ ๊ฐ€๋Šฅ
    • ๋ฌด๊ธฐํ•œ ๋ด‰์‡„: ์‹คํ–‰ ์ค€๋น„๋Š” ๋˜์–ด์žˆ์œผ๋‚˜ CPU๋ฅผ ์‚ฌ์šฉ ๋ชปํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ CPU๊ฐ€ ๋ฌด๊ธฐํ•œ ๋Œ€๊ธฐํ•˜๋Š” ์ƒํƒœ
    • Aging(์—์ด์ง•)์œผ๋กœ ํ•ด๊ฒฐ: ์•„๋ฌด๋ฆฌ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋ผ๋„ ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์—ฌ์ค€๋‹ค.

 

5) Round Robin

  • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋™์ผํ•œ ํฌ๊ธฐ์˜ ํ• ๋‹น ์‹œ๊ฐ„์„ ๊ฐ–๊ฒŒ ๋˜๊ณ  ํ• ๋‹น ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ์„ ์ ๋‹นํ•˜๊ณ  ์ค€๋น„ ํ์˜ ์ œ์ผ ๋’ค๋กœ ์˜ฎ๊ฒจ์ง„๋‹ค.
  • ์„ ์ (Preemptive) ์Šค์ผ€์ค„๋ง
'๐Ÿ“ Computer Science/โœ OS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ & 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
ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋Ÿฌ
์ƒ๋‹จ์œผ๋กœ

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