๐Ÿšง

์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ๊ตฌ์กฐ์™€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰(System Structure & Program Execution)

purpplee 2021. 12. 19. 17:45

ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ํ•˜๋“œ์›จ์–ด ์œ„์—์„œ ์–ด๋–ป๊ฒŒ ๋Œ์•„๊ฐ€๋Š”์ง€...

 

์ปดํ“จํ„ฐ์‹œ์Šคํ…œ์˜ ๊ตฌ์กฐ

์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์€ ๋‘ ๊ฐ€์ง€ ๋ถ€๋ถ„์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๋ณดํ†ต ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ๋ผ๊ณ  ๋งํ•˜๋Š” CPU ์™€ Memory ๋กœ ๊ตฌ์„ฑ๋œ ์žฅ์น˜์™€ Disk, ๋ชจ๋‹ˆํ„ฐ, ํ‚ค๋ณด๋“œ ๋“ฑ ๋ฐ์ดํ„ฐ์˜ ์ž…์ถœ๋ ฅ์ด ์ด๋ฃจ์–ด์ง€๋Š” I/O device ์ด๋‹ค.

 

 

Memory

Memory ๋Š” CPU์˜ ์ž‘์—… ๊ณต๊ฐ„์ด๋‹ค. CPU๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋งค clock time ๋งˆ๋‹ค ๊ธฐ๊ณ„์–ด(๋ช…๋ น์–ด)๋ฅผ ์ฝ์–ด์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์‚ฌ์‹ค CPU๊ฐ€ ํ•˜๋Š” ์ผ์€ ์ด๋ ‡๊ฒŒ Memory ์—์„œ ๋ช…๋ น์–ด๋ฅผ ์ฝ๊ณ  ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ ๋ฟ์ด๋‹ค. ์ด ์ž‘์—… ๊ฒฐ๊ณผ๋Š” Output device ์ธ ๋ชจ๋‹ˆํ„ฐ, ํ”„๋ฆฐํ„ฐ๋กœ ์ถœ๋ ฅ๋˜๊ณ  ๋ช…๋ น ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” Disk, ํ‚ค๋ณด๋“œ ๋“ฑ์—์„œ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. Disk ๋Š” ์ž‘์—… ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ด€ํ•˜๋Š” Output device ์—ญํ• ๋„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

์ฐธ๊ณ ๋กœ CPU ๋‚ด๋ถ€์—๋Š” Memory ๊ณต๊ฐ„์˜ ์ฃผ์†Œ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” PC(Program counter) ๊ฐ€ ์žˆ๊ณ , ์—ฌ๊ธฐ์„œ ๋‹ค์Œ ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๋ฅผ ์ฝ๋Š”๋‹ค.

 

I/O device

๊ฐ๊ฐ์˜ I/O device ๋Š” ๊ทธ๊ฒƒ๋“ค์„ ๊ด€๋ฆฌ/ํ†ต์ œํ•˜๋Š” ์ž‘์€ CPU ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋ถ™์–ด์žˆ๋Š”๋ฐ, ์ด๊ฒƒ์„ device controller ๋ผ๊ณ  ํ•œ๋‹ค. ์ฆ‰, I/O device๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์ปดํ“จํ„ฐ์˜ CPU๊ฐ€ ์•„๋‹ˆ๋ผ ์ด device controller ๊ฐ€ ๋‹ด๋‹นํ•œ๋‹ค. ๋˜ ์ปดํ“จํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ์ฒ˜๋Ÿผ ์ด device contoller ๊ฐ€ ์ž‘์—…ํ•˜๋Š” ๊ณต๊ฐ„์ธ local buffer ๋„ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ณ„๋„๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์ด์œ ๋Š” CPU์™€ I/O device ์‚ฌ์ด ์†๋„ ์ฐจ์ด๊ฐ€ ๋งŽ์ด ๋‚˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.(CPU๋Š” ๋นจ๋ฆฌ๋นจ๋ฆฌ ์ผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ€์•ผ ํ•˜๋Š”๋ฐ ๊ณ„์† I/O device ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š”๊ฑด ๋น„ํšจ์œจ์ ์ด๋ฏ€๋กœ..)

 

Interrupt

CPU ๋Š” ๋ฉ”๋ชจ๋ฆฌํ•˜๊ณ ๋งŒ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ๊ณ„์† ์ผํ•œ๋‹ค. ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์„ ๋Œ๋ฆฌ๋‹ค๊ฐ€ I/O ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค๊ฑฐ๋‚˜, time sharing ์„ ์œ„ํ•ด ์ฃผ์–ด์ง„ timer๊ฐ€ ๋๋‚œ ํ›„ ๋‹ค์Œ ํ”„๋กœ๊ทธ๋žจ์„ ๋Œ๋ฆฐ๋‹ค๊ฑฐ๋‚˜ ํ•˜๋Š” ์ž‘์—…์„ ํ•˜๋ ค๋ฉด ์ž ๊น ๋ฉˆ์ถฐ๋ณด๋ผ๊ณ  Interrupt ๋ฅผ ๊ฑธ์–ด์ค˜์•ผ ํ•œ๋‹ค. ์ด Interrupt ๋ฅผ ๊ฑฐ๋Š” ํ†ต๋กœ๋ฅผ Interrupt line ์ด๋ผ๊ณ  ํ•œ๋‹ค. CPU๋Š” ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์ด Interrupt line ์„ ์ฒดํฌํ•œ๋‹ค.

 

์ด Interrupt ๊ฐ€ ๊ฑธ๋ ธ์„ ๋•Œ I/O ์žฅ์น˜์˜ device controller ์—๊ฒŒ ๋ช…๋ น์„ ์ „๋‹ฌํ•˜๊ณ , I/O ์žฅ์น˜์˜ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ copyํ•ด์ฃผ๊ณ , timer ๊ฐ€ ๋๋‚˜ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์„ ๋Œ๋ฆฌ๋Š” ์ž‘์—…์„ ํ•˜๋ผ๊ณ  CPU์—๊ฒŒ ์š”์ฒญํ•˜๋Š” ์ฃผ์ฒด๊ฐ€ ๋ฐ”๋กœ ์šด์˜์ฒด์ œ๋‹ค. 

 

์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๊ฑธ๋ฆฌ๋ฉด ์ธํ„ฐ๋ŸฝํŠธ ๋‹นํ•œ ์‹œ์ ์˜ PC(๋‹ค์Œ์— ์‹คํ–‰ํ•  ๋ช…๋ น์–ด) ๋ฅผ saveํ•˜๊ณ  CPU์˜ ์ œ์–ด๋ฅผ ์ธํ„ฐ๋ŸฝํŠธ ๋ฃจํ‹ด์—๊ฒŒ ๋„˜๊ธด๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด(Interrupt Service Routine) ์€ ํ•ด๋‹น ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์‹ค์ œ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์ปค๋„ ํ•จ์ˆ˜๋‹ค. ์ด ์ปค๋„ ํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋Š” ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

Mode bit

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ๊ณผ ์šด์˜์ฒด์ œ๊ฐ€ ํ•˜๋Š” ์ผ์ด ๋‹ค๋ฅด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, I/O ์ž‘์—…์€ ๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ ์šด์˜์ฒด์ œ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•ด๋†จ์œผ๋‹ˆ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์ฒ˜๋ฆฌํ•ด์„  ์•ˆ ๋œ๋‹ค. ๋˜ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์šด์˜์ฒด์ œ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ ‘๊ทผํ•˜๋ฉด ์•ˆ ๋œ๋‹ค. ์Œ๋ฐฉ ๊ฐ„ ์ž‘์—…์— ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์ง€๊ธˆ CPU๊ฐ€ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์šด์˜์ฒด์ œ์ธ์ง€ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ธ์ง€ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค. ์ด๊ฒŒ ๋ฐ”๋กœ Mode bit ์ด๋‹ค.

 

Mode bit ์ด 0์ด๋ฉด ์šด์˜์ฒด์ œ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  1์ด๋ฉด ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. Interrupt ๋‚˜ Exception ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ด Mode bit ์„ 0์œผ๋กœ ๋ฐ”๊พธ๊ณ , OS ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‚œ ํ›„ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ CPU๋ฅผ ๋„˜๊ธธ ๋•Œ Mode bit ์„ 1๋กœ ๋ฐ”๊พผ๋‹ค. ์ฐธ๊ณ ๋กœ OS ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋ชจ๋‹ˆํ„ฐ ๋ชจ๋“œ(=์ปค๋„ ๋ชจ๋“œ, ์‹œ์Šคํ…œ ๋ชจ๋“œ)๋ผ๊ณ  ํ•˜๊ณ  ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์‚ฌ์šฉ์ž ๋ชจ๋“œ๋ผ๊ณ  ํ•œ๋‹ค.

 

DMA(Direct Memory Access)

๋„ˆ๋ฌด ์žฆ์€ Interrupt ๊ฐ€ ๊ฑธ๋ฆฌ๋ฉด CPU ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ๊ฒƒ์ด๋‹ค. I/O ์ž‘์—… ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋๋‚˜์ž๋งˆ์ž byte ๋‹จ์œ„๋กœ ๋งค๋ฒˆ ์˜ฌ๋ฆฌ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, DMA ๋ผ๋Š” ๋ถ€๋ถ„์ด CPU์˜ ์ค‘์žฌ ์—†์ด I/O device ์˜ local buffer ๋‚ด์šฉ์„ ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ์— block ๋‹จ์œ„๋กœ ์ „์†กํ•˜๊ณ  ๋”ฑ ํ•œ๋ฒˆ๋งŒ Interrupt ๋ฅผ ๊ฑด๋‹ค. memory controller ๋Š” CPU์™€ DMA Contoller ๊ฐ€ ๋™์‹œ์— ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๊ฒŒ๋” ๊ด€๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

 

์ž…์ถœ๋ ฅ(I/O) ์˜ ์ˆ˜ํ–‰

์ž…์ถœ๋ ฅ ์ž‘์—…์€ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์šด์˜์ฒด์ œ๊ฐ€ ํ•˜๋Š” ํŠน๊ถŒ ๋ช…๋ น์ด๋‹ค. ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด I/O๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์šด์˜์ฒด์ œ์—๊ฒŒ ์š”์ฒญํ•˜๋Š”๋ฐ, ์ด๊ฒƒ์„ ์‹œ์Šคํ…œ ์ฝœ(system call) ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ •ํ™•ํ•˜๊ฒŒ ๋งํ•˜๋ฉด ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์šด์˜์ฒด์ œ์˜ ์ปค๋„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์€ ์ผ๋ฐ˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ฒ˜๋Ÿผ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒƒ์ด ์•„๋‹Œ, Interrupt ๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง„๋‹ค.

 

Interrupt ๋Š” ๋ณดํ†ต ํ•˜๋“œ์›จ์–ด์˜ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋งํ•˜๊ณ , ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๊ฑด Interrupt ๋Š” Trap ์ด๋ผ๊ณ  ํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ์˜ค๋ฅ˜(Exceoption) ์ด๋‚˜ System call ์ด Trap ์ด๋‹ค.

 

๋™๊ธฐ์‹ ์ž…์ถœ๋ ฅ(Synchronous I/O)

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

 

์ด๋•Œ I/O ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋ฉด CPU๊ฐ€ ๋‚ญ๋น„๋˜๊ณ  ๋งค ์‹œ์  ํ•˜๋‚˜์˜ I/O ๋งŒ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ I/O device ๋„ ๋‚ญ๋น„๋œ๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ณดํ†ต์€ ๋งˆ๋ƒฅ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ ๋„˜๊ฒจ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋œ๋‹ค.

 

๋น„๋™๊ธฐ์‹ ์ž…์ถœ๋ ฅ(Asynchronous I/O)

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

 

์ €์žฅ์žฅ์น˜ ๊ณ„์ธต ๊ตฌ์กฐ

CPU์™€ ๊ฐ€๊นŒ์šธ ์ˆ˜๋ก ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ๋น„์‹ธ๊ณ  ๊ณต๊ฐ„์ด ์ ๋‹ค. Secondary ๋Š” ๋ณดํ†ต ์ •๋ณด๊ฐ€ ์ปดํ“จํ„ฐ๊ฐ€ ์ข…๋ฃŒ๋˜์–ด๋„ ์œ ์ง€๋˜๋Š” ๋น„ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ชจ๋ฆฌ์ด๊ณ , Primary ๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚ ์•„๊ฐ€๋Š” ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

 

์ด๋ ‡๊ฒŒ Disk ๋Š” ์†๋„๊ฐ€ ๋Š๋ฆฌ๊ณ  CPU๋Š” ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ˆ, Main Memory์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ CPU์™€์˜ ์†๋„๋ฅผ ๋งž์ถ”๊ธฐ ์œ„ํ•ด Cache Memory ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  CPU ๋‚ด๋ถ€์— ์žˆ๋Š” ์ €์žฅ๊ณต๊ฐ„์ธ Registers ์—์„œ ์ฝ๋Š”๋‹ค. ์†๋„์ฐจ์ด ๊ทน๋ณต ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, Cache Memory ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” ์ดํ›„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋‹ค์‹œ Memory ์—์„œ ์ฝ์–ด์˜ค๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ Cache Memory ์—์„œ ์ฝ์œผ๋ฉด ๋” ๋นจ๋ฆฌ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์„ Caching ์ด๋ผ๊ณ ํ•œ๋‹ค.

 

ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰(๋ฉ”๋ชจ๋ฆฌ load)

๋ณดํ†ต ํ”„๋กœ๊ทธ๋žจ์€ ์‹คํ–‰ ํŒŒ์ผ ํ˜•ํƒœ๋กœ ํ•˜๋“œ๋””์Šคํฌ์— ์ €์žฅ๋˜์–ด ์žˆ๊ณ  ์‹คํ–‰๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์˜ฌ๋ผ๊ฐˆ ๋•Œ๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ทธ ํ”„๋กœ๊ทธ๋žจ๋งŒ์˜ ๋…์ž์ ์ธ Address space ๊ฐ€ ํ˜•์„ฑ๋œ๋‹ค. code๋Š” CPU๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๊ฐ€ ๋‹ด๊ฒจ ์žˆ๋Š” ๋ถ€๋ถ„์ด๊ณ  data ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ํ•˜๋Š” ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค. stack ์€ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ํ•˜๋‚˜ํ•˜๋‚˜ ์Œ“์œผ๋ฉฐ ํ˜ธ์ถœ ์ˆœ์„œ๋ฅผ ์ œ์–ดํ•œ๋‹ค. ์ด Address space ์ „์ฒด๋ฅผ memory ์— ์˜ฌ๋ฆฌ๋ฉด ๊ณต๊ฐ„ ๋‚ญ๋น„๊ฐ€ ๋˜๋‹ˆ ๋‹น์žฅ ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ฝ‘์•„ ์˜ฌ๋ฆฌ๊ณ  ํ•„์š”ํ•˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์—ฐ์žฅ์„ ์ธ Swap area๋กœ ๋‚ด๋ฆฐ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋ฒ•๊ณผ Address space ๋ฅผ ํ†ตํ‹€์–ด ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๋ฐฉ์‹์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ฐธ๊ณ ๋กœ Swap area ๋„ ํœ˜๋ฐœ์„ฑ์ด๋‹ค.

 

Memory ์—์„œ 1000๋ฒˆ์ง€๊ฐ€ Address space ์—์„œ๋Š” 100๋ฒˆ์ง€์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋‘˜์€ Mapping ๋˜์–ด์•ผ ํ•œ๋‹ค. ์ด๊ฒƒ์„ Address translation ์ด๋ผ๊ณ  ํ•˜๊ณ  ์ด๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•˜๋“œ์›จ์–ด ๋ถ€๋ถ„์ด ๋”ฐ๋กœ ์กด์žฌํ•œ๋‹ค. Address space ์˜ ์ฃผ์†Œ๋ฅผ ๋…ผ๋ฆฌ์ ์ธ ์ฃผ์†Œ๋ผ๊ณ  ํ•˜๊ณ  ๊ทธ ํ”„๋กœ๊ทธ๋žจ์˜ ํ•จ์ˆ˜, ๋ณ€์ˆ˜๋ฅผ ๋งํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ Memory ์˜ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ์ ์ธ ์ฃผ์†Œ๋ผ๊ณ  ํ•œ๋‹ค.

 

์ปค๋„ ์ฃผ์†Œ ๊ณต๊ฐ„(Kernel Address space)์˜ ๋‚ด์šฉ

์šด์˜์ฒด์ œ๋„ ์‚ฌ์‹ค์ƒ ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์ด๋ฏ€๋กœ Address space ๋ฅผ ๊ฐ€์ง„๋‹ค. code ๋ถ€๋ถ„์—๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ํ•˜๋Š” ์ฒ˜๋ฆฌ์™€ ๊ด€๋ จ๋œ code ๋“ค(์‹œ์Šคํ…œ์ฝœ, ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ์ฝ”๋“œ ๋“ฑ)์ด ๋“ค์–ด ์žˆ๋‹ค. data ์—๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š”, CPU/memory/disk ๋“ฑ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋“ค์ด ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. ๋˜ ์—ฌ๊ธฐ์—” ํ”„๋กœ์„ธ์Šค๋“ค์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด, ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU ์ œ์–ด๋ฅผ ๋„˜๊ธฐ๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ธ PCB(Process Control Block) ๋„ ์กด์žฌํ•œ๋‹ค. ์šด์˜์ฒด์ œ๋„ ํ•จ์ˆ˜ ๊ตฌ์กฐ๋กœ ์ฝ”๋“œ๊ฐ€ ์งœ์—ฌ์ ธ ์žˆ์œผ๋ฏ€๋กœ stack ๋ถ€๋ถ„์ด ์กด์žฌํ•œ๋‹ค. ์ด stack ์€ ์–ด๋–ค ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋–ค ์ปค๋„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ–ˆ๋Š”์ง€๋ฅผ ๋ด์•ผ ํ•˜๋ฏ€๋กœ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์ปค๋„ ์Šคํƒ์„ ๋”ฐ๋กœ ๋‘”๋‹ค.

 

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

์œ„ ์‚ฌ์ง„์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘๋ถ€ํ„ฐ ์ข…๋ฃŒ๊นŒ์ง€์˜ ๊ณผ์ •์„ ๋‹ด๊ณ  ์žˆ๋‹ค. user mode ์ผ ๋• ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ ์ฃผ์†Œ๊ณต๊ฐ„์˜ ์ฝ”๋“œ๋“ค์ด ์‹คํ–‰๋˜๋‹ค๊ฐ€ system call์ด ๋ฐœ์ƒํ•˜๋ฉด kernel mode ๋กœ ์ „ํ™˜๋˜๊ณ  kernel ์ฃผ์†Œ ๊ณต๊ฐ„์˜ ์ฝ”๋“œ๋“ค์ด ์‹คํ–‰๋œ๋‹ค. ์‹œ์Šคํ…œ ์ฝœ์ด ๋๋‚˜๋ฉด ๋‹ค์‹œ CPU ์ œ์–ด๊ฐ€ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋„˜์–ด๊ฐ€๊ณ  ์ด๊ฒŒ ํ”„๋กœ๊ทธ๋žจ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต๋œ๋‹ค.

๋ฐ˜์‘ํ˜•