๐Ÿ“š STUDY

240213 CS ์Šคํ„ฐ๋”” - ์šด์˜์ฒด์ œ

ming412 2024. 2. 13. 17:44

 

์šด์˜์ฒด์ œ ๋ชฉ์ 

- ์ฒ˜๋ฆฌ ๋น ๋ฅด๊ฒŒ

- ๋ฐ˜ํ™˜ ์‹œ๊ฐ„ ๋‹จ์ถ•

 

์šด์˜์ฒด์ œ์˜ ์—ญํ• 

- ํ•˜๋“œ์›จ์–ด ์ œ์–ด

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

- ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

 

์œ ์ €๋ชจ๋“œ์™€ ์ปค๋„๋ชจ๋“œ

CPU๋Š” ์‚ฌ์šฉ์ž ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์Šคํ…œ์„ ์†์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด 2๊ฐ€์ง€ ๋ชจ๋“œ๋ฅผ ์ œ๊ณต.

CPU์— ์žˆ๋Š” Mode bit๋กœ ๋ชจ๋“œ๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ 0์€ ์ปค๋„๋ชจ๋“œ, 1์€ ์‚ฌ์šฉ์ž๋ชจ๋“œ๋กœ ๋‚˜๋‰˜์–ด์„œ ๊ตฌ๋™.

 

์œ ์ €๋ชจ๋“œ

- ์‚ฌ์šฉ์ž ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋ชจ๋“œ

- ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ œํ•œ๋œ ์ž์›๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ. ์‹œ์Šคํ…œ ์ž์›์ด๋‚˜ ํ•˜๋“œ์›จ์–ด์— ์ง์ ‘์ ์ธ ์ ‘๊ทผ ๋ถˆ๊ฐ€

 

์ปค๋„๋ชจ๋“œ

- ์ปค๋„์ด ์‹คํ–‰๋˜๋Š” ๋ชจ๋“œ

- ์‹œ์Šคํ…œ ์ž์› ๋ฐ ํ•˜๋“œ์›จ์–ด์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ํ—ˆ์šฉ

 

์‹œ์Šคํ…œ ์ฝœ (System Call, ์‹œ์Šคํ…œ ํ˜ธ์ถœ)

์‚ฌ์šฉ์ž ๋ชจ๋“œ์— ์žˆ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ(user process)์ด ์‹œ์Šคํ…œ ์ž์›์„ ์‚ฌ์šฉํ•ด์•ผํ•  ๋•Œ ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•ด์„œ ์ปค๋„ ๋ชจ๋“œ๋กœ ์ „ํ™˜๋˜์–ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ์™„๋ฃŒ ์‹œ ๋‹ค์‹œ ์‚ฌ์šฉ์ž ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•œ๋‹ค.

 

์‹œ์Šคํ…œ์ฝœ์€ ์ปค๋„ ์˜์—ญ์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉ์ž ๋ชจ๋“œ๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ, ์ฆ‰, ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋“œ์›จ์–ด์— ์ง์ ‘ ์ ‘๊ทผํ•ด์„œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ๊ณผ ๊ด€๋ฆฌ, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ํŒŒ์ผ์‹œ์Šคํ…œ ์ ‘๊ทผ, I/O ๋””๋ฐ”์ด์Šค ์ ‘๊ทผ, ๋„คํŠธ์›Œํฌ์™€ ๊ด€๋ จ๋œ ์ž‘์—…์ด ํ•„์š”ํ•  ๋•Œ ์š”์ฒญ๋œ๋‹ค.

 

์šด์˜์ฒด์ œ๊ฐ€ ์ปดํ“จํ„ฐ์— ์žฅ์ฐฉ๋œ ์žฅ์น˜๋‚˜ ํ•˜๋“œ์›จ์–ด๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ 2๊ฐ€์ง€ ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  1. ํด๋ง ๋ฐฉ์‹ : ์ƒํƒœ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ฒ€์‚ฌํ•˜์—ฌ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๋ฐฉ์‹
  2. ์ธํ„ฐ๋ŸฝํŠธ ๋ฐฉ์‹ : ํŠน์ • ์‹ ํ˜ธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ์šด์˜์ฒด์ œ์— ์ฒ˜๋ฆฌ๋ฅผ ์š”๊ตฌํ•˜๋Š” ๋ฐฉ์‹

 

์ธํ„ฐ๋ŸฝํŠธ

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

์‹œ์Šคํ…œ ์ฝœ ๋˜ํ•œ ์ธํ„ฐ๋ŸฝํŠธ์˜ ์ผ์ข…์ด๋‹ค.

 

์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ & ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ

SW ์ธํ„ฐ๋ŸฝํŠธ: ์†Œํ”„ํŠธ์›จ์–ด์— ์˜ํ•ด ๋ฐœ์ƒํ•˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ

HW ์ธํ„ฐ๋ŸฝํŠธ: timer, I/O, ์ „์› ์ด์ƒ

 

์ธํ„ฐ๋ŸฝํŠธ ๋™์ž‘ ๊ณผ์ •

- ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘๋‹จ

- ํ˜„์žฌ ํ”„๋กœ๊ทธ๋žจ ์ƒํƒœ ๋ณด์กด: PC(Program Counter)์˜ ๊ฐ’์„ ์Šคํƒ์— ์ €์žฅํ•œ๋‹ค. (์ธํ„ฐ๋ŸฝํŠธ ์ข…๋ฃŒ ํ›„ ๋ณต๊ท€๋ฅผ ์œ„ํ•ด)

- ISR์„ ์ฐพ๊ธฐ ์œ„ํ•ด IVT ์ฐธ์กฐ (์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์š”์ฒญํ•œ ์žฅ์น˜ ์‹๋ณ„)

- ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด(ISR) ์‹คํ–‰ : ์‹ค์งˆ์ ์ธ ์ž‘์—… ์ˆ˜ํ–‰

- ์ƒํƒœ ๋ณต๊ตฌ

- ์ค‘๋‹จ๋œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์žฌ๊ฐœ : PC์˜ ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ์ด์ „์— ์ˆ˜ํ–‰์ค‘์ด๋˜ ํ”„๋กœ๊ทธ๋žจ ์žฌ๊ฐœ

 

์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ๋ž€ ๋ฌด์—‡์ผ๊นŒ?

์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ๋Š” ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ๊ทธ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค ๋ฃจํ‹ด๋“ค์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ณต๊ฐ„์ด๋‹ค.

 

ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ

ํ”„๋กœ์„ธ์Šค: ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์ž์›์„ ํ• ๋‹น๋ฐ›์€ ์ž‘์—…์˜ ๋‹จ์œ„

์Šค๋ ˆ๋“œ: ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋ฐ›์€ ์ž์›์„ ์ด์šฉํ•˜๋Š” ์‹คํ–‰ ํ๋ฆ„์˜ ๋‹จ์œ„

 

ํ”„๋กœ์„ธ์Šค
์Šค๋ ˆ๋“œ

 

ํ”„๋กœ์„ธ์Šค์˜ ์ž์› ๊ตฌ์กฐ

"ํ”„๋กœ๊ทธ๋žจ"์ด ์‹คํ–‰๋˜์–ด "ํ”„๋กœ์„ธ์Šค"๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด ์•„๋ž˜ 4๊ฐ€์ง€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ํ• ๋‹น๋ฐ›๊ฒŒ ๋œ๋‹ค.

 

์ฝ”๋“œ ์˜์—ญ(Code / Text) : ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ ํ•จ์ˆ˜๋“ค์˜ ์ฝ”๋“œ๊ฐ€ ๊ธฐ๊ณ„์–ด ํ˜•ํƒœ๋กœ ์ €์žฅ

๋ฐ์ดํ„ฐ ์˜์—ญ : ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉด์„œ ์‚ฌ์šฉํ•˜๋Š” ์ „์—ญ ๋ณ€์ˆ˜๋‚˜ ๊ฐ์ข… ๋ฐ์ดํ„ฐ๋“ค์ด ๋ชจ์—ฌ์žˆ๋‹ค

์Šคํƒ ์˜์—ญ : ์ง€์—ญ ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ์ž„์‹œ์ ์ธ ์ž๋ฃŒ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„

ํž™ ์˜์—ญ : ์ƒ์„ฑ์ž, ์ธ์Šคํ„ด์Šค์™€ ๊ฐ™์€ ๋™์ ์œผ๋กœ ํ• ๋‹น๋˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„

 

์ด๋•Œ ํ”„๋กœ์„ธ์Šค์˜ 4๊ฐ€์ง€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์ค‘ "์Šค๋ ˆ๋“œ"๋Š” Stack๋งŒ ํ• ๋‹น๋ฐ›์•„ ๋ณต์‚ฌํ•˜๊ณ , Code, Data, Heap์€ ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋“ค๊ณผ ๊ณต์œ ๋œ๋‹ค. ๊ฐ๊ฐ์˜ ์Šค๋ ˆ๋“œ๋Š” ๋ณ„๋„์˜ ์Šคํƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, ํž™์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ๊ฐ€์ ธ์™€ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (IPC, Inter-Process Communication)

๋ฐ˜๋ฉด, ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ณ€์ˆ˜๋‚˜ ์ž๋ฃŒ๊ตฌ์กฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. ์ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ๋ณ„๋„์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์—์„œ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (IPC)์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. (์˜ˆ. ํŒŒ์ดํ”„, ํŒŒ์ผ, ์†Œ์ผ“ ๋“ฑ..)

IPC์˜ ์ข…๋ฅ˜๋Š” ํฌ๊ฒŒ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ(Message Passing), ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ(Shared Memory)๋กœ ๋‚˜๋‰œ๋‹ค.

 

Pipe์™€ Message Queue์˜ ์ฐจ์ด?

 

ํ”„๋กœ์„ธ์Šค์˜ ์ƒ์„ฑ ๊ณผ์ •

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฒ˜์Œ ๋งŒ๋“ค์–ด์ง€๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ํ• ๋‹น๋ฐ›๋‚˜?

fork -> ์šด์˜์ฒด์ œ๊ฐ€ ๋ถ€๋ชจ์™€ ID๊ฐ€ ๋‹ค๋ฆ„์„ ํŒ๋‹จ -> ์šด์˜์ฒด์ œ๊ฐ€ ๋ฎ์–ด์”Œ์šด๋‹ค

ํ”„๋กœ์„ธ์Šค๋Š” ํŠธ๋ฆฌํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ๋˜๊ณ  ์žˆ๋‹ค

 

๋ณ‘ํ–‰๊ณผ ๋ณ‘๋ ฌ์˜ ์ฐจ์ด

๋ณ‘๋ ฌ์€ ๋™์‹œ์— ์ผ์–ด๋‚˜๋Š” ๊ฒƒ

๋ณ‘ํ–‰(concurrency)์€ ์ž˜๊ฒŒ ์ชผ๊ฐœ์„œ ๋™์‹œ์— ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•˜๋Š” ๊ฒƒ

 

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์™€ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค

๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ๊ฒฐํ•จ์ด ์—ฐ์‡„์ ์œผ๋กœ ํผ์ง€์ง€ ์•Š์„ ํ™•๋ฅ ์ด ๋†’๋‹ค.

์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์˜ ์˜ค๋ฒ„ํ—ค๋“œ ๋ฌธ์ œ ์กด์žฌ. ์ ์ ˆํ•œ ๋™๊ธฐํ™” ์กฐ์น˜ ํ•„์š”.

์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ธฐํ™” ๋•Œ๋ฌธ์— ์บ์‹œ ๋ฏธ์Šค๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒ.

 

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ

์Šคํƒ์„ ์ œ์™ธํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ณต์œ ํ•˜๊ณ  ์žˆ์–ด์„œ ์˜ค๋ฒ„ํ—ค๋“œ ๋น„์šฉ์ด ์ƒ๋Œ€์ ์œผ๋กœ ์ž‘๋‹ค. (IPC ์—†์ด ๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋น ๋ฅด๋‹ค)

 

+) IO์ž‘์—…์ด ๋งŽ์œผ๋ฉด ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค์™€ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ์ค‘ ์–ด๋–ค๊ฒŒ ์ ํ•ฉํ• ๊นŒ?

IO ์ž‘์—…์ด ๋งŽ์œผ๋ฉด ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ - ๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ ๋•Œ๋ฌธ

 

CPU ์ž‘์—…์ด ๋งŽ์œผ๋ฉด ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ๋งŽ์ด ์ผ์–ด๋‚˜๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์Šค๋ ˆ๋“œ๊ฐ€ ์ ์€๊ฒŒ ์ข‹๋‹ค

 

Context Switching

CPU๊ฐ€ ํ˜„์žฌ ์ง„ํ–‰์ค‘์ธ Task(Process, Thread)์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋‹ค์Œ Task๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๊ณผ์ •.

ํ˜„์žฌ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” Task์˜ PCB (Process Control Block)  ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ , ๋‹ค์Œ ์‹คํ–‰ํ•  Task์˜ PCB ์ •๋ณด๋ฅผ ์ฝ์–ด Register์— ์ ์žฌํ•˜๊ณ  CPU๊ฐ€ ์ด์ „์— ์ง„ํ–‰ํ–ˆ๋˜ ๊ณผ์ •์„ ์—ฐ์†์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

PCB์˜ ๊ตฌ์กฐ

- process state: ํ”„๋กœ์„ธ์Šค ์ƒํƒœ (create, ready, running, waiting, terminated)

- process counter: ๋‹ค์Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๊ฐ’

 

 

PCB๋ฅผ ๋ฌด์—‡์œผ๋กœ ๊ตฌํ˜„ํ•˜๋‚˜?

์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ - ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ

 

context switching์ด ๋ฐœ์ƒํ•  ๋•Œ์˜ ๋น„์šฉ(cost)

- cache ์ดˆ๊ธฐํ™”

- memory mapping ์ดˆ๊ธฐํ™”

- ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง ๋น„์šฉ (๋‹ค์Œ ํ”„๋กœ์„ธ์Šค ์ •ํ•˜๊ธฐ)

 

context switching ๋น„์šฉ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์Šค๋ ˆ๋“œ๋ณด๋‹ค ๋งŽ์ด ๋“ ๋‹ค.

์Šค๋ ˆ๋“œ๋Š” ์Šคํƒ ์˜์—ญ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— context switching ๋ฐœ์ƒ ์‹œ stack ์˜์—ญ๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ๊ณผ ์ธํ„ฐ๋ŸฝํŠธ

์‹œ์Šคํ…œ์ฝœ์ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค -> ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒ๋˜๋ฉด ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ์ผ์–ด๋‚œ๋‹ค

 

์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ์™œ ๋ฐœ์ƒํ•˜๋‚˜์š”?

- ํ•˜๋‚˜์˜ CPU๋ฅผ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ ํ•˜๋Š” ๊ฒฝ์šฐ, CPU๊ฐ€ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค(๋˜๋Š” ์Šค๋ ˆ๋“œ)๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค. ์ด ๋•Œ ๋ฐœ์ƒ.

- ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค(๋˜๋Š” ์Šค๋ ˆ๋“œ)๊ฐ€ ์ค€๋น„ ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ, ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค(๋˜๋Š” ์Šค๋ ˆ๋“œ)๋กœ์˜ ์ „ํ™˜์„ ์œ„ํ•ด ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ํ•„์š”.

 

์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๊ณผ์ •

- PCB์— ํ˜„์žฌ ์ปจํ…์ŠคํŠธ ์ €์žฅ

- ์ƒˆ๋กœ์šด ์ปจํ…์ŠคํŠธ ๋กœ๋“œ : ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์„ ํƒํ•œ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค(๋˜๋Š” ์Šค๋ ˆ๋“œ)์— ์ €์žฅ๋œ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋กœ๋“œ

- ํ”„๋กœ์„ธ์Šค(๋˜๋Š” ์Šค๋ ˆ๋“œ) ์‹คํ–‰

 

์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค์™€ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ๊ฐ„์— ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅผ๊นŒ?

๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค์˜ ๊ฒฝ์šฐ, ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ์‹œ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ์ „์ฒด์ ์ธ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ณต์›ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋น„์šฉ์ด ๋” ํฌ๋‹ค.

๋‹ค์ค‘ ์Šค๋ ˆ๋“œ์˜ ๊ฒฝ์šฐ, ์Šค๋ ˆ๋“œ๋Š” ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ์Šค์œ„์นญ๋ณด๋‹ค ์ƒ๋Œ€์ ์œผ๋กœ ๋น ๋ฅด๋‹ค.

 

์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€?

- ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ์Šค๋ ˆ๋“œ ํ’€ ์‚ฌ์šฉ : ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๋น„์šฉ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœ์„ธ์Šค ํ’€ ๋˜๋Š” ์Šค๋ ˆ๋“œ ํ’€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋ฆฌ ์ƒ์„ฑ๋œ ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

- ์Šค๋ ˆ๋“œ ์šฐ์„ ์ˆœ์œ„ ์กฐ์ •: ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์Šค๋ ˆ๋“œ๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ์ž์ฃผ preemption(์„ ์ )๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์Šค๋ ˆ๋“œ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์กฐ์ •ํ•˜์—ฌ ๋” ์ ์€ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ๋ฐœ์ƒํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.

- ๋ฝ ์‚ฌ์šฉ ์ตœ์†Œํ™” : ์Šค๋ ˆ๋“œ ๊ฐ„ ๊ฒฝํ•ฉ ์ƒํƒœ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ฝ ์ตœ์†Œํ™”. 

 

FCFS (๋น„์„ ์ ํ˜•)

First Come First Served.

์„ ์ฐฉ์ˆœ ๋ฐฉ์‹์˜ ์Šค์ผ€์ค„๋ง.

๋ ˆ๋””ํ์— ์žˆ๋Š” ์ˆœ์„œ๋Œ€๋กœ CPU ํ• ๋‹น.

๋ฐ˜ํ™˜์‹œ๊ฐ„(์™„๋ฃŒ์‹œ๊ฐ„)์€ ๊ดœ์ฐฎ์ง€๋งŒ ์‘๋‹ต์‹œ๊ฐ„(์‹œ์ž‘์‹œ๊ฐ„)์— ์•ˆ์ข‹์•„์„œ SJF๊ฐ€ ๋‚˜์˜ด

 

SJF (๋น„์„ ์ ํ˜•, ์„ ์ ํ˜• ๋ชจ๋‘ ๊ฐ€๋Šฅ)

Shortest Job First. ์ตœ๋‹จ ์ž‘์—…

CPU Burst ์‹œ๊ฐ„์ด ์งง์€ ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ CPU ํ• ๋‹น

์‹คํ–‰์‹œ๊ฐ„์„ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์—†์–ด์„œ ์‚ฌ์‹ค์ƒ ๋ถˆ๊ฐ€๋Šฅ.

 

๋น„์„ ์ ํ˜• SJF

 

์„ ์ ํ˜• SJF

 

SRT (์„ ์ )

Shortest Remaining Time. ์ž”์—ฌ ์‹œ๊ฐ„

์ž”์—ฌ ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์ž‘์€ ์ž‘์—…์ด ๋จผ์ € CPU ์‚ฌ์šฉ.

์„ ์ ํ˜• SJF ์Šค์ผ€์ค„๋ง์ด๋ผ ๋ถˆ๋ฆฐ๋‹ค.

 

Priority Scheduling

์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ž‘์—…์ด ๋จผ์ € CPU ์‚ฌ์šฉ.

๊ธฐ์•„๋ฌธ์ œ -> aging์œผ๋กœ ์–ด๋А์ •๋„ ํ•ด๊ฒฐ.

 

RR (์„ ์ ํ˜•)

Round Robin.

์‹œ๊ฐ„ ๋‹จ์œ„(time quantum)๋กœ CPU ํ• ๋‹น.

๋ ˆ๋””ํ๋ฅผ ์‚ฌ์šฉํ•ด ๋จผ์ € ๋Œ€๊ธฐํ•œ ์ž‘์—…์ด ๋จผ์ € CPU ์‚ฌ์šฉ. ํ€€ํ…€ ์ง€๋‚˜๋ฉด ๋ ˆ๋””ํ์˜ ๋งจ ๋์œผ๋กœ ๋ฐฐ์น˜.

 

 

 

์Šค์ผ€์ค„๋Ÿฌ์˜ ์ข…๋ฅ˜

์žฅ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ : ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค€๋น„ํ์— ๋„ฃ์„๊ฒƒ์ธ๊ฐ€? - ๋””์Šคํฌ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ

๋‹จ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ : ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ•ด์ค„ ๊ฒƒ์ธ๊ฐ€? - ๋นˆ๋ฒˆํ•˜๊ฒŒ ํ˜ธ์ถœ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰ ์†๋„๊ฐ€ ๋นจ๋ผ์•ผ ํ•œ๋‹ค.

์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ (๋ฉ”๋ชจ๋ฆฌ ์Šค์ผ€์ค„๋Ÿฌ) : ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋œ ํ”„๋กœ์„ธ์Šค ์ˆ˜๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆ (๊ด€๋ฆฌ) - ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋””์Šคํฌ๋กœ ๋นผ๊ธฐ๋„ ํ•จ, ๋””์Šคํฌ io๊ฐ€ ์ˆ˜์‹œ๋กœ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

https://kosaf04pyh.tistory.com/191

 

[์šด์˜์ฒด์ œ] ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋Ÿฌ(๋‹จ๊ธฐ,์ค‘๊ธฐ,์žฅ๊ธฐ)

์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์Šค์ผ€์ค„๋Ÿฌ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์Šค์ผ€์ค„๋Ÿฌ๋ž€ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ž์›์„ ํ• ๋‹นํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์šด์˜์ฒด์ œ ์ปค๋„์˜ ๋ชจ๋“ˆ์„ ์ง€์นญํ•ฉ๋‹ˆ๋‹ค. ์Šค์ผ€์ค„๋Ÿฌ์—๋Š” ์žฅ๊ธฐ, ๋‹จ๊ธฐ, ์ค‘๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ

kosaf04pyh.tistory.com

 

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

 

์ธํ„ฐ๋ŸฝํŠธ ์˜ค๋ฉด ๋Œ€๊ธฐ

 

CPU Bound vs IO Bound

CPU Bound๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ง„ํ–‰๋  ๋•Œ, CPU ์‚ฌ์šฉ ๊ธฐ๊ฐ„์ด I/O Wating ๋ณด๋‹ค ๋งŽ์€ ๊ฒฝ์šฐ๋‹ค.

IO ๋ฐ”์šด๋“œ๊ฐ€ CPU ๋ฐ”์šด๋“œ๋ณด๋‹ค ๋” cpu ์‚ฌ์šฉ๋Ÿ‰์ด ์ ์–ด์„œ io ๋ฐ”์šด๋“œ์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋” ์ค€๋‹ค

๊ทธ๋ž˜์„œ cpu ๋ฐ”์šด๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ธฐ์•„์ƒํƒœ์— ๋น ์ง€์ง€ ์•Š๋„๋ก ์Šค์ผ€์ค„๋ง.