์šด์˜์ฒด์ œ

2023. 10. 3. 12:45ยทCS/์šด์˜์ฒด์ œ

 

์šด์˜์ฒด์ œ 

- ์ปดํ“จํ„ฐ์™€ ์‚ฌ์šฉ์ž ์‚ฌ์ด์—์„œ ์‹œ์Šคํ…œ์„ ํšจ์œจ์ ์œผ๋กœ ์šด์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ•  

- ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ๊ธฐ์–ต์žฅ์น˜ ๊ด€๋ฆฌ, ํŒŒ์ผ ๊ด€๋ฆฌ, ์ž…์ถœ๋ ฅ ๊ด€๋ฆฌ, ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ ๋“ฑ

 

๋ง์ปค(Linker)

- ๋ฃจํ‹ด์„ ๋ชจ์•„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ•˜๋‚˜์˜ ๋ฃจํ‹ด์œผ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๊ธฐ๋Šฅ

- ์—ฐ๊ฒฐ ๊ธฐ๋Šฅ๋งŒ ์ˆ˜ํ–‰

 

๋กœ๋”(Loader)

- ํ• ๋‹น, ์—ฐ๊ฒฐ, ์žฌ๋น„์น˜, ์ ์žฌ

- ์ปดํ“จํ„ฐ ๋‚ด๋ถ€๋กœ ์ •๋ณด๋ฅผ ๋“ค์—ฌ์˜ค๊ธฐ

- ์ฃผ๊ธฐ์–ต์žฅ์น˜์— ์ ์žฌํ•˜๊ธฐ

 

 

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

  • new : ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ์ƒํƒœ
  • ready : ํ”„๋กœ์„ธ์Šค ํ• ๋‹น ๋Œ€๊ธฐ ์ƒํƒœ
  • running : ํ”„๋กœ์„ธ์Šค์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ
  • waiting : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋– ํ•œ ์ด๋ฒคํŠธ๊ฐ€ ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ
  • terminated : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋œ ์ƒํƒœ

 

Admitted [์ƒ์„ฑ -> ์ค€๋น„] : ์ค€๋น„ ํ๊ฐ€ ๋น„์–ด์žˆ์„ ๋•Œ ์ž‘์—… ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ์‹คํ–‰

Dispatch [์ค€๋น„ -> ์‹คํ–‰] : ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ์ค€๋น„ ํ ๋งจ ์•ž์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹น

Blocked [์‹คํ–‰ -> ๋Œ€๊ธฐ] : CPU๋ฅผ ํ• ๋‹น๋ฐ›์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž…์ถœ๋ ฅ ์ž‘์—…๋“ฑ์œผ๋กœ ์ธํ•ด ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ

Wake up [๋Œ€๊ธฐ -> ์ค€๋น„] : block์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž…์ถœ๋ ฅ ์ž‘์—…์ด ๋๋‚˜๋ฉด ๋Œ€๊ธฐ ์ƒํƒœ์—์„œ ์ค€๋น„ ์ƒํƒœ๊ฐ€ ๋จ

Interrupt [์‹คํ–‰ -> ์ค€๋น„] : Timer run out, CPU๋ฅผ ์ ์œ  ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋œ ์‹œ๊ฐ„์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜์—ฌ ํƒ€์ž„ ์•„์›ƒ๋˜๊ฑฐ๋‚˜,

CPU ์Šค์ผ€์ค„๋ง ์ •์ฑ…์— ๋”ฐ๋ผ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋กœ CPU ๋””์Šค ํŒจ์น˜๋œ ์ƒํƒœ

Exit [์‹คํ–‰ -> ์ข…๋ฃŒ] : ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์ž‘์—…์„ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•œ ์ƒํƒœ

 

 

 

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

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

CPU ์ด์šฉ๋ฅ ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•จ

 

๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง : ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ด๋ฅผ ๋บ์„ ์ˆ˜ ์—†๋Š” ๋ฐฉ์‹

์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง : ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰ ์ค‘์ด๋”๋ผ๋„ ์šด์˜์ฒด์ œ๊ฐ€ ์ด๋ฅผ ๊ฐ•์ œ๋กœ ๋บ์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹

 

CPU ์„ฑ๋Šฅ ํ‰๊ฐ€ ๊ธฐ์ค€ 

CPU ์‚ฌ์šฉ๋ฅ  (CPU Utilization) CPU ํ™œ์šฉ ์ •๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋น„์œจ
์ฒ˜๋ฆฌ์œจ (Throughput) ๋‹จ์œ„ ์‹œ๊ฐ„๋‹น ์™„๋ฃŒ๋˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜
๋ฐ˜ํ™˜ ์‹œ๊ฐ„ (Turnaround Time) ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์ž‘์—…์„ ๋งˆ์น˜๊ณ  ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€์˜ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„
๋Œ€๊ธฐ ์‹œ๊ฐ„ (Waiting Time) ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์ž‘์—…์„ ๋งˆ์น˜๊ณ  ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ํ์—์„œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„
๋ฐ˜์‘ ์‹œ๊ฐ„ (Response Time) ๋Œ€ํ™”ํ˜• ์‹œ์Šคํ…œ์—์„œ ์ž„์˜ ์š”๊ตฌ(์˜ˆ: ํ‚ค๋ณด๋“œ ์ž…๋ ฅ)์— ๋Œ€ํ•˜์—ฌ ์‹œ์Šคํ…œ์ด ๋ฐ˜์‘์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„

 

CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋น„์„ ์  FCFS ๋จผ์ € ๋“ค์–ด์˜จ ํ”„๋กœ์„ธ์Šค ๋จผ์ € ์ฒ˜๋ฆฌ
SJF ์ฒ˜๋ฆฌ์‹œ๊ฐ„์ด ์งง์€ ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ ์ฒ˜๋ฆฌ
HRN ์งง์€ ์ž‘์—…์‹œ๊ฐ„์ด๋ฉด์„œ ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ ์ฒ˜๋ฆฌ
์„ ์  RR ๋จผ์ € ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ผ์ • ์‹œ๊ฐ„๋งŒํผ๋งŒ ์ฒ˜๋ฆฌ
SRT ๋‚จ์€ ์‹œ๊ฐ„์ด ์งง์€ ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ ์ฒ˜๋ฆฌ
MLQ ์šฐ์„ ์ˆœ์œ„๋ณ„๋กœ ํ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์Šค์ผ€์ค„๋ง ์ ์šฉ

 

FCFS(First-Come-First-Served)

์šฐ์„ ์ˆœ์œ„, ์‹คํ–‰์‹œ๊ฐ„ ๋“ฑ์˜ ๋‹ค๋ฅธ ์š”์†Œ๋Š” ์ „ํ˜€ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ๋ฌด์กฐ๊ฑด ๋จผ์ € ์ค€๋น„๋˜๋ฉด ๋จผ์ € ์‹คํ–‰์‹œ์ผœ์ค€๋‹ค.

 

SJF(Shortest Job Fisrt)

์ค€๋น„์ƒํƒœ์— ๋Œ€๊ธฐ ์ค‘์ธ ์ž‘์—… ์ค‘ CPU ์‚ฌ์šฉ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์ ์€ ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

 

๋”๋ณด๊ธฐ
๋”๋ณด๊ธฐ

 

 

HRN(Highest Response ratio Next) 

์‘๋‹ต ๋น„์œจ(response ratio)์„ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ณ„์‚ฐ

์‘๋‹ต ๋น„์œจ = (๋Œ€๊ธฐ ์‹œ๊ฐ„ + ์„œ๋น„์Šค ์‹œ๊ฐ„) / ์„œ๋น„์Šค ์‹œ๊ฐ„

 

RR(Round Robin)

ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๊ฐ๊ฐ ๋™์ผํ•œ CPU ํ• ๋‹น ์‹œ๊ฐ„์„ ๋ถ€์—ฌํ•ด์„œ ๊ทธ ์‹œ๊ฐ„ ๋™์•ˆ๋งŒ CPU๋ฅผ ์ด์šฉํ•˜๊ฒŒ ํ•œ๋‹ค.

CPU๋ฅผ ๋…์ ํ•˜์ง€ ์•Š๊ณ  ๊ณตํ‰ํ•˜๊ฒŒ ์ด์šฉ

 

 

SRT(Shortest Remaining Time) 
์ตœ๋‹จ ์ž”์—ฌ์‹œ๊ฐ„์„ ์šฐ์„ ์œผ๋กœ ํ•˜๋Š” ์Šค์ผ€์ค„๋ง

 

 

MLQ(Multi-Level Queue)

๋‹ค๋‹จ๊ณ„ ํ

ํ•ญ์ƒ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ํ์˜ ํ”„๋กœ์„ธ์Šค์— CPU๋ฅผ ํ• ๋‹น 

(์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ์—์„œ ์ž‘์—… ์‹คํ–‰ ์ค‘์ด๋”๋ผ๋„ ์ƒ์œ„ ๋‹จ๊ณ„์˜ ํ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜๋ฉด CPU๋ฅผ ๋นผ์•—๋Š” ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง)

 

 

 

๋ฐ๋“œ๋ฝ(Deadlock, ๊ต์ฐฉ ์ƒํƒœ)

์‹œ์Šคํ…œ ์ž์›์— ๋Œ€ํ•œ ์š”๊ตฌ๊ฐ€ ๋’ค์—‰ํ‚จ ์ƒํƒœ

๋‘ ๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์ ์œ ํ•œ ์ƒํƒœ์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ž์›์„ ์š”๊ตฌํ•˜๋ฉฐ,

์„œ๋กœ์˜ ์ž‘์—…์„ ๋๋‚˜๊ธฐ๋งŒ์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ๋‘˜ ๋‹ค ์˜์›ํžˆ ๋๋‚˜์ง€ ์•Š๋Š” ์ƒํ™ฉ

 

๊ต์ฐฉ์ƒํƒœ์˜ ๋ฐœ์ƒ ์กฐ๊ฑด 4๊ฐ€์ง€

๊ต์ฐฉ์ƒํƒœ๋Š” ์•„๋ž˜์˜ 4๊ฐ€์ง€ ์กฐ๊ฑด์ด ๋ชจ๋‘ ๋งŒ์กฑ๋˜๋Š” ๊ฒฝ์šฐ(ํ•„์š”์ถฉ๋ถ„์กฐ๊ฑด)์— ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฉฐ,
ํ•˜๋‚˜๋ผ๋„ ๋งŒ์กฑํ•˜์ง€ ์•Š์œผ๋ฉด ๊ต์ฐฉ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

1. ์ƒํ˜ธ ๋ฐฐ์ œ(Mutual Exclusion)

ํ•œ ๋ฒˆ์— ํ•œ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋งŒ์ด ๊ณต์œ ์ž์›์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

2. ์ ์œ  ๋Œ€๊ธฐ(Hold and Wait)

ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋œ ์ž์›์„ ๊ฐ€์ง„ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ์ž์›์„ ๊ธฐ๋‹ค๋ฆผ

3. ๋น„์„ ์ (No Preemption)

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž‘์—…์„ ๋งˆ์นœ ํ›„ ์ž์›์„ ์ž๋ฐœ์ ์œผ๋กœ ๋ฐ˜ํ™˜ํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆผ
(์ด๋ฏธ ํ• ๋‹น๋œ ์ž์›์„ ๊ฐ•์ œ์ ์œผ๋กœ ๋นผ์•—์„ ์ˆ˜ ์—†์Œ)

4. ์ˆœํ™˜ ๋Œ€๊ธฐ(Circular Wait)

ํ”„๋กœ์„ธ์Šค์˜ ์ž์› ์ ์œ  ๋ฐ ์ ์œ ๋œ ์ž์›์˜ ์š”๊ตฌ ๊ด€๊ณ„๊ฐ€ ์›ํ˜•์„ ์ด๋ฃจ๋ฉด์„œ ๋Œ€๊ธฐํ•˜๋Š” ์กฐ๊ฑด.
๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์ˆœํ™˜์ ์œผ๋กœ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์š”๊ตฌํ•˜๋Š” ์ž์›์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'CS > ์šด์˜์ฒด์ œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Centos7 ๋ฆฌ๋ˆ…์Šค ์˜ค๋ผํด ๋””๋น„ ์„ค์น˜  (0) 2023.10.24
[CS - ์šด์˜์ฒด์ œ] Chapter 01. ์šด์˜์ฒด์ œ ๊ฐœ์š”  (0) 2023.08.12
'CS/์šด์˜์ฒด์ œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • Centos7 ๋ฆฌ๋ˆ…์Šค ์˜ค๋ผํด ๋””๋น„ ์„ค์น˜
  • [CS - ์šด์˜์ฒด์ œ] Chapter 01. ์šด์˜์ฒด์ œ ๊ฐœ์š”
hello_u
hello_u
  • hello_u
    ๐Ÿ˜œ
    hello_u
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐Ÿ˜œ (345)
      • Hardware (2)
        • BMC (2)
      • Spring (109)
        • Spring ์ž…๋ฌธ (20)
        • Spring ๊ธฐ๋ณธ (27)
        • Spring MVC (18)
        • Spring DB (22)
        • Spring JPA ๊ธฐ๋ณธ (16)
        • Spring JPA ํ™œ์šฉ (6)
      • Develop (27)
        • DB (8)
        • JAVA (4)
        • Web (2)
        • Python (7)
        • OSS (2)
        • Git (2)
        • API (2)
      • Algorithm (155)
        • CodeUp ๊ธฐ์ดˆ (44)
        • ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (64)
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (4)
        • SWEA (30)
        • Softeer (10)
        • BOJ (2)
      • CS (9)
        • ์ปดํ“จํ„ฐ์ผ๋ฐ˜ (3)
        • ์šด์˜์ฒด์ œ (3)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (0)
        • ์ •๋ณดํ†ต์‹  (1)
        • ์ž๋ฃŒ๊ตฌ์กฐ (1)
        • ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ (1)
        • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (0)
        • ์ตœ์‹  ๋””์ง€ํ„ธ, ์ผ๋ฐ˜์ƒ์‹ (0)
      • ์ž๊ฒฉ์ฆ (41)
        • ์ •๋ณด๋ณด์•ˆ๊ธฐ์‚ฌ (9)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (22)
        • ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 1๊ธ‰ (3)
        • SQLD (7)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
hello_u
์šด์˜์ฒด์ œ
์ƒ๋‹จ์œผ๋กœ

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