์šด์˜์ฒด์ œ์˜ ์‚ฌ์šฉ์ž๋ชจ๋“œ์™€ ๊ด€๋ฆฌ์ž๋ชจ๋“œ, ํ•˜๋“œ์›จ์–ด ๋ณดํ˜ธ ๊ด€ํ•ด์„œ ์•Œ์•„๋ณธ๋‹ค.

1. ์ด์ค‘ ๋ชจ๋“œ (Dual mode)

ํ˜„์žฌ ์ปดํ“จํ„ฐ ํ™˜๊ฒฝ์€ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๋™์‹œ์— ํ•œ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.(์„œ๋ฒ„ ์ปดํ“จํ„ฐ) ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์™ธ์—๋„ ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค. ์ด ๋•Œ ํŠน์ • ์ปดํ“จํ„ฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ž˜๋ชป๋œ ๋™์ž‘์œผ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ(ํ”„๋กœ๊ทธ๋žจ)๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค๋ฉด ์ด๋Š” ๋งค์šฐ ์œ„ํ—˜ํ•˜๋‹ค.

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

์ด๋Ÿฐ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๊ฐ€ ์œ„์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋“ค์„ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ํ•„์š”๊ฐ€ ์ƒ๊ฒผ๋‹ค. ์—ฌ๊ธฐ์„œ ์ด์ค‘ ๋ชจ๋“œ ๋ผ๋Š” ๊ฒƒ์ด ๋‚˜์™”๋‹ค.

์„ค๋ช…

์ด์ค‘ ๋ชจ๋“œ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๋ชจ๋“œ๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‘˜๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด๋‹ค.

  • ์‚ฌ์šฉ์ž(User) ๋ชจ๋“œ
  • ๊ด€๋ฆฌ์ž(Supervisor) ๋ชจ๋“œ
    • = ์‹œ์Šคํ…œ(system) ๋ชจ๋“œ
    • = ๋ชจ๋‹ˆํ„ฐ(monitor) ๋ชจ๋“œ
    • = ํŠน๊ถŒ(privileged) ๋ชจ๋“œ

ํŠน๊ถŒ ๋ชจ๋“œ์—์„œ๋งŒ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์„ ํŠน๊ถŒ ๋ช…๋ น(privileged instruction) ์ด๋ผ๊ณ  ํ•˜๋ฉฐ, STOP, HALT, RESET, SET_TIMER ๋“ฑ์ด ์žˆ๋‹ค. ๋งŒ์•ฝ ์‚ฌ์šฉ์ž ๋ชจ๋“œ์—์„œ ํŠน๊ถŒ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด CPU์—์„œ ๋‚ด๋ถ€ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ์š”์ฒญํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒ์‹œํ‚จ๋‹ค.

์ด์ค‘ ๋ชจ๋“œ๋Š” CPU ๋‚ด๋ถ€์˜ ๋ ˆ์ง€์Šคํ„ฐ(register)์˜ ๋น„ํŠธ(bit)๋ฅผ ํ™œ์šฉํ•˜์—ฌ **ํ”Œ๋ž˜๊ทธ(flag)**๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํŠน๊ถŒ ๋ชจ๋“œ์ผ ๋•Œ๋Š” ๋น„ํŠธ ๊ฐ’์ด 0 ์ด๊ณ , ์‚ฌ์šฉ์ž ๋ชจ๋“œ์ผ ๋•Œ๋Š” ๋น„ํŠธ ๊ฐ’์„ 1 ๋กœ ์„ค์ •ํ•˜์—ฌ ๊ตฌ๋ถ„ํ•œ๋‹ค.

์ƒํƒœ ๋ ˆ์ง€์Šคํ„ฐ (ํ”Œ๋ ˆ๊ทธ ๋ ˆ์ง€์Šคํ„ฐ)

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

Mode์˜ ๋ณ€๊ฒฝ ๊ณผ์ •

์ปดํ“จํ„ฐ๊ฐ€ ์ผœ์ง„ ๋’ค์— ํ•œ ์‚ฌ์šฉ์ž ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰์‹œํ‚ค๋Š” ๋™์•ˆ ๋ชจ๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

  1. ์ปดํ“จํ„ฐ ๋ถ€ํŒ… ๊ณผ์ • - ๊ด€๋ฆฌ์ž ๋ชจ๋“œ
  2. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ๊ณผ์ • - ๊ด€๋ฆฌ์ž ๋ชจ๋“œ
  3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์ค‘ - ์‚ฌ์šฉ์ž ๋ชจ๋“œ
  4. ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ ํ›„ ์ฒ˜๋ฆฌ ๊ณผ์ • - ๊ด€๋ฆฌ์ž ๋ชจ๋“œ
  5. ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ํ›„ - ์‚ฌ์šฉ์ž ๋ชจ๋“œ

์‚ฌ์šฉ์ž๊ฐ€ ํ•˜๋“œ์›จ์–ด์˜ ์ž์›์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์œ„ํ—˜ํ•œ ๋™์ž‘์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์—๋Š” ๋ชจ๋‘ ๊ด€๋ฆฌ์ž ๋ชจ๋“œ๋กœ ์šด์˜์ฒด์ œ์—์„œ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•œ๋‹ค. (ํ”„๋กœ๊ทธ๋žจ์—์„œ ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ์šด์˜์ฒด์ œ์— ์œ„์ž„ํ•œ๋‹ค.)

์œ„์˜ 4๋ฒˆ ๊ณผ์ •์„ ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋กœ ๊ฐ€์ •ํ•˜๊ณ  ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  1. ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ ํ›„ CPU๋กœ ์ธํ„ฐ๋ŸฝํŠธ ์‹ ํ˜ธ ์š”์ฒญ (์‚ฌ์šฉ์ž ๋ชจ๋“œ)
  2. CPU์—์„œ ๋ชจ๋“œ ํ”Œ๋ž˜๊ทธ๋ฅผ ๊ด€๋ฆฌ์ž ๋ชจ๋“œ๊ฐ’์œผ๋กœ ์„ค์ •
  3. ํ•ด๋‹น ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด(ISR)์œผ๋กœ ์ด๋™ (๊ด€๋ฆฌ์ž ๋ชจ๋“œ)
  4. ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ (๊ด€๋ฆฌ์ž ๋ชจ๋“œ)
  5. ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ์™„๋ฃŒ ํ›„ CPU์˜ ๋ชจ๋“œ ํ”Œ๋ž˜๊ทธ๋ฅผ ๋‹ค์‹œ 6. ์‚ฌ์šฉ์ž ๋ชจ๋“œ๊ฐ’์œผ๋กœ ์„ค์ •
  6. ์›๋ž˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์œ„์น˜๋กœ ๋ณต๊ท€ (์‚ฌ์šฉ์ž ๋ชจ๋“œ)

๋งŒ์•ฝ ์‚ฌ์šฉ์ž ๋ชจ๋“œ์ธ ์ƒํƒœ์—์„œ ์น˜๋ช…์ ์ธ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด Callํ–ˆ์„ ๊ฒฝ์šฐ์— CPU๋Š” ๋ชจ๋“œ ๋น„ํŠธ๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ด€๋ฆฌ์ž ๋ชจ๋“œ๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ, ๋‚ด๋ถ€ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. (์ž˜๋ชป๋œ ๋ช…๋ น์„ ๋‚ด๋ ธ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ) ๊ทธ ๊ฒฐ๊ณผ, ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€์žˆ๋Š” ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒ์‹œ์ผœ๋ฒ„๋ฆฐ๋‹ค.

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

2. ํ•˜๋“œ์›จ์–ด ๋ณดํ˜ธ

์ด์ค‘ ๋ชจ๋“œ๋Š” ์‚ฌ์šฉ์ž์˜ ์ ‘๊ทผ์„ ์ œํ•œํ•˜์—ฌ ์น˜๋ช…์ ์ธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€ํ•˜๋Š” ๋ณดํ˜ธ ๊ธฐ๋Šฅ์— ํ•ด๋‹นํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ถ”๊ฐ€์ ์œผ๋กœ ์•Œ์•„๋ณธ๋‹ค.

2.1 ์ž…์ถœ๋ ฅ ์žฅ์น˜ ๋ณดํ˜ธ

์—ฌ๋Ÿฌ ์ •๋ณด๋“ค์€ ์ž…์ถœ๋ ฅ ์žฅ์น˜๋ฅผ ํ†ตํ•ด ์ปดํ“จํ„ฐ๋กœ ์ž…๋ ฅ๋˜๊ณ , ์™ธ๋ถ€ ์žฅ์น˜๋กœ ์ถœ๋ ฅ์ด ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€์˜ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•œ๋‹ค.

  • ์—ฌ๋Ÿฌ ์ž…์ถœ๋ ฅ ์žฅ์น˜์˜ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•œ ํ˜ผ์„ 
  • ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ์— ์ž…์ถœ๋ ฅ์„ ํ•˜๋Š” ์ผ
    • ์œ„์™€ ๊ฐ™์ด ์ž…์ถœ๋ ฅ ์žฅ์น˜์— ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋’ค์—‰์ผœ์„œ ๋“ค์–ด์˜ค๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋ ค๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ง‰์•„์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด in, out ๊ณผ ๊ฐ™์€ ์ž…์ถœ๋ ฅ ๋ช…๋ น์„ ํŠน๊ถŒ ๋ช…๋ น์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ์‚ฌ์šฉ์ž ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ž…์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์šด์˜์ฒด์ œ๋ฅผ ํ†ตํ•ด์„œ ์ˆ˜ํ–‰ํ•ด์•ผํ•œ๋‹ค.(์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ) ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์‹œ์— ์ž…์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์šด์˜์ฒด์ œ ๋‚ด๋ถ€์—์„œ ์ˆœ์„œ๋ฅผ ์ •ํ•˜์—ฌ ํ˜ผ์„ ์„ ๋ง‰์•„์ค„ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์ปดํ“จํ„ฐ์˜ ํ•˜๋“œ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณผ์ •์—์„œ๋Š” ๋ชจ๋‘ ์šด์˜์ฒด์ œ๋ฅผ ๊ฑฐ์น˜๋„๋ก ํ•œ๋‹ค! ๋ผ๋Š” ๋Œ€์›์น™์ด ์‚ฌ์‹ค ์ˆจ์–ด์žˆ๋‹ค.

๋งŒ์•ฝ A, B ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋Š” ์ƒํ™ฉ์—์„œ A๊ฐ€ B์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ธฐ ์œ„ํ•ด ์šด์˜์ฒด์ œ์—๊ฒŒ ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒํ•˜์˜€๋‹ค๊ณ  ํ•˜์ž. ์ด ๋•Œ, A์˜ ๋ฐ์ดํ„ฐ์™€ B์˜ ๋ฐ์ดํ„ฐ๋Š” ๊ฐ๊ฐ A, B๋งŒ์ด ์ฝ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ๊ทธ๋Ÿฌ๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , CPU๋Š” RAM์— ์žˆ๋Š” ์šด์˜์ฒด์ œ ๋‚ด๋ถ€์˜ ํ•ด๋‹น ISR๋กœ ์ด๋™ํ•˜๊ฒŒ ๋œ๋‹ค. ISR์€ ํ˜„์žฌ ์‚ฌ์šฉ์ž A๊ฐ€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ B์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํ•ด๋‹น ์š”์ฒญ์„ ๊ฑฐ๋ถ€ํ•œ๋‹ค.

2.2 ๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ

๋ฉ”๋ชจ๋ฆฌ์—๋Š” ์šด์˜์ฒด์ œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‚ฌ์šฉ์ž ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์กด์žฌํ•œ๋‹ค. ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ž์‹ ์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด ์•„๋‹Œ ์šด์˜์ฒด์ œ๋‚˜ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์นจ๋ฒ”ํ•˜๋ คํ•˜๋ฉด ๋งค์šฐ ์œ„ํ—˜ํ•˜๋‹ค.

๋ฉ”๋ชจ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์œ„์™€ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ user1์ด OS๋‚˜ user2, user3์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์•„์•ผ ํ•œ๋‹ค. CPU๋Š” address bus๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์ ‘๊ทผํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, user1 ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ์—๋Š” user1์ด ํ• ๋‹น๋˜์–ด ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๋ฒ”์œ„ ์•ˆ์ธ ๊ฒฝ์šฐ์—๋งŒ ์ ‘๊ทผํ•˜๋ฉด ๋  ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ address bus์—์„œ ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํšจ์œจ์ ์ผ ๊ฒƒ์ด๋‹ค.

์œ„์˜ ์ƒ๊ฐ์œผ๋กœ ๋‚˜์˜จ ๊ฒƒ์ด MMU(Memory Management Unit) ์ด๋‹ค. MMU๋Š” ์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ address bus ์ค‘๊ฐ„์— ์„ค์น˜๋œ ํ•˜๋“œ์›จ์–ด ์นฉ์œผ๋กœ์„œ ๋‘ ๊ฐœ์˜ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์˜ ์ฃผ์†Œ ๋ฒ”์œ„๋ฅผ ์ €์žฅํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, User1์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋Š” 1024, ๋ ์ฃผ์†Œ๋Š” 4048์ด๋ผ๊ณ  ํ•˜์ž. User1์ด ์ˆ˜ํ–‰๋˜๋Š” ๋™์•ˆ ์šด์˜์ฒด์ œ๋Š” ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์˜ ์ฃผ์†Œ ๋ฒ”์œ„๋ฅผ MMU์— ์„ค์ •(ํŠน๊ถŒ ๋ช…๋ น)ํ•˜๋Š”๋ฐ, base๋Š” 1024, limit๋Š” 4048์ด ๋  ๊ฒƒ์ด๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ user1์ด ์ˆ˜ํ–‰๋˜๋Š” ๋™์•ˆ์—๋Š” ์ด ๋ฒ”์œ„ ์•ˆ์˜ ์ฃผ์†Œ๊ฐ’์ธ ๊ฒฝ์šฐ์—๋งŒ address bus๋ฅผ ํ†ต๊ณผ์‹œํ‚จ๋‹ค.

๋งŒ์•ฝ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์˜ ์ฃผ์†Œ ๋ฒ”์œ„ ๋ฐ–์˜ ์ฃผ์†Œ๊ฐ’์ด MMU์— ๋“ค์–ด์˜จ๋‹ค๋ฉด, MMU์—์„œ ๋‚ด๋ถ€ ์ธํ„ฐ๋ŸฝํŠธ ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ CPU์— ์‹ ํ˜ธ๋ฅผ ์ค€๋‹ค. ๊ทธ๋Ÿฌ๋ฉด CPU๋Š” ๊ทธ์— ๋งž๋Š” ISR๋กœ ์ด๋™ํ•˜์—ฌ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒ์‹œํ‚จ๋‹ค. ์ด๊ณผ ๊ฐ™์€ ์ž˜๋ชป๋œ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ Segment violation ์ด๋ผ ํ•œ๋‹ค.

2.3 CPU ๋ณดํ˜ธ

CPU ๋ณดํ˜ธ๋Š” ์‚ฌ์šฉ์ž์˜ ์‹ค์ˆ˜ ๋˜๋Š” ๊ณ ์˜๋กœ ์ธํ•œ CPU ๋…์ ์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•œ๋‹ค. ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์ด CPU๋ฅผ ๋…์ ํ•˜๊ฒŒ ๋˜๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์€ ์ˆ˜ํ–‰๋˜์ง€ ๋ชปํ•œ๋‹ค.

while(true){
 
}

CPU๋ฅผ ๋…์ ํ•˜๋Š” ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋Š” ๋ฌดํ•œ ๋ฐ˜๋ณต์ด๋‹ค. ์œ„์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด while๋ฌธ์˜ ์กฐ๊ฑด๋ฌธ์ด ์ž˜๋ชป๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋น„๊ต ์—ฐ์‚ฐ์ž๊ฐ€ ์•„๋‹Œ ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ n๊ฐ’์ด 1์ด ๋˜๋ฏ€๋กœ while๋ฌธ์˜ ์กฐ๊ฑด์€ TRUE๊ฐ€ ๋œ๋‹ค. ์ด๋Š” n๊ฐ’์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ด์ƒ ๋ฌดํ•œ์œผ๋กœ ๋ฐ˜๋ณต๋œ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ Timer๋ฅผ ๋‘์–ด ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ฐ˜๋“œ์‹œ ์šด์˜์ฒด์ œ ๋‚ด์˜ ISR๋กœ ์ด๋™ํ•˜๋ฏ€๋กœ, ํ•ด๋‹น ISR์—์„œ ๊ฐ ํ”„๋กœ๊ทธ๋žจ์˜ CPU ์ ์œ  ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜์—ฌ ์ ์ ˆํžˆ ๋ถ„๋ฐฐ๋˜๋„๋ก ์กฐ์ •ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ CPU ์ ์œ  ์‹œ๊ฐ„์ด ๋น„์ •์ƒ์ ์œผ๋กœ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ, ๊ฐ•์ œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ CPU๋ฅผ ์ „ํ™˜์‹œ์ผœ ์ค„ ์ˆ˜ ์žˆ๋‹ค.

Reference