Skip to content

Latest commit

ย 

History

History
109 lines (89 loc) ยท 7.43 KB

2020-12-03-OS-kernel-user-interrupt-system_call.md

File metadata and controls

109 lines (89 loc) ยท 7.43 KB

Operating System(์šด์˜์ฒด์ œ)

๋Œ€ํ•™๊ต ์ˆ˜์—… ๋•Œ ์šด์˜์ฒด์ œ๋ฅผ ์•Œ๋ ค์ฃผ๋˜ ๊ต์ˆ˜๋‹˜์ด ํ•ด์ฃผ์‹œ๋˜ ๋ง์ด ์ƒ๊ฐ๋‚œ๋‹ค.
"์šด์˜์ฒด์ œ๋Š” ์ปดํ“จํ„ฐ ์„ธ๊ณ„์˜ ์ ˆ๋Œ€์‹ ์ด๋‹ค. ์ปดํ“จํ„ฐ์•ˆ์—์„œ ์ผ์–ด๋‚˜๋Š” ๋ชจ๋“ ์ผ์€ ์šด์˜์ฒด์ œ๋ฅผ ํ†ตํ•˜๊ฒŒ ๋˜์žˆ๋‹ค"
๋ผ๋Š” ๋ง์ด์—ˆ๋‹ค. ์ปดํ“จํ„ฐ๋Š” 4๊ฐ€์ง€ ๊ตฌ์„ฑ์œผ๋กœ ๋ฐ”๋ผ๋ณผ์ˆ˜ ์žˆ๋‹ค

  • Hardware
    • ๊ธฐ๋ณธ์ ์ธ ์ปดํ“จํ„ฐ์˜ ๋ฆฌ์†Œ์Šค ๊ณต๊ธ‰
    • CPU, memory, I/O devices
  • Operating System
    • ๋‹ค์–‘ํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์‚ฌ์šฉ์ž ๊ฐ„์˜ ํ•˜๋“œ์›จ์–ด ์‚ฌ์šฉ์ œ์–ด ๋ฐ ์กฐ์ •
  • Application Programs
    • Complier, Word Processors, Web Browses
  • Users
    • People, machines, other computers

์—ฌ๊ธฐ์„œ ์šด์˜์ฒด์ œ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค.

์šด์˜์ฒด์ œ

์šด์˜์ฒด์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค๋ช… ํ•  ์ˆ˜ ์žˆ๋‹ค.

"์ปดํ“จํ„ฐ ์œ ์ €์™€ ํ•˜๋“œ์›จ์–ด ๊ฐ„์˜ ๋งค๊ฐœ์ฒด ์—ญํ• ์„ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ"

์—ฌ๊ธฐ์„œ ํ”„๋กœ๊ทธ๋žจ์ด๋ž€ CPU์—์„œ ์‹คํ–‰๋˜๋Š” ์ผ๋ จ์˜ ์ž‘์—…(Instructions)๋ฅผ ๋งํ•œ๋‹ค.

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

  • ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๋ฐ ์‚ฌ์šฉ์ž ๋ฌธ์ œ ํ•ด๊ฒฐ
  • Computer System์„ ์‚ฌ์šฉํ•˜๊ธฐ ํŽธํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค, ๊ทธ๋ฆฌ๊ณ  ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ปดํ“จํ„ฐ์˜ ํ•˜๋“œ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

Dual mode = Kernel Mode & User Mode

์šด์˜์ฒด์ œ๋Š” ๋‘๊ฐ€์ง€์˜ ๋ชจ๋“œ๊ฐ€ ์กด์žฌ ํ•œ๋‹ค Kernel mode์™€ User mode ๋‘๊ฐ€์ง€๊ฐ€ ์กด์žฌ ํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ด ๋‘˜์„ ํ•ฉ์ณ Dual mode๋ผ๊ณ  ํ•œ๋‹ค.
์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์ „์— Kernel mode์™€ User mode๋ฅผ ์„ค๋ช…ํ•˜๋ฉด,

  • Kernel mode = CPU, memory๋“ฑ๋“ฑ ๋ชจ๋“  ์ž์›์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋Š” mode
  • User mode = ํ”„๋กœ์„ธ์Šค ํ˜น์€ ์ฝ”๋“œ ์ž‘์„ฑ์„ ํ•  ์ˆ˜ ์žˆ๋Š” mode ( ํ”„๋กœ๊ทธ๋žจ์˜ ์ž์›์—๋Š” ์ ‘๊ทผ ํ•˜์ง€ ๋ชปํ•œ๋‹ค. )

์ด๋ ‡๊ฒŒ ๋‘๊ฐ€์ง€ mode๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์ž์› ์ ‘๊ทผ์˜ ์ œํ•œ์„ ๋‘์ง€ ์•Š์œผ๋ฉด ์ž˜๋ชป๋œ ํ”„๋กœ๊ทธ๋žจ, ํ˜น์€ ์œ ์ €์˜ ์ž˜๋ชป๋œ ํ–‰๋™์ด ํ”„๋กœ๊ทธ๋žจ์˜ ์ž์›์„ ํ›ผ์†ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
๊ทธ๋ž˜์„œ OS๋Š” ๋‘๊ฐ€์ง€ mode๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์˜ ์ž์›์— ์˜ํ–ฅ์„ ์ฃผ๋Š”์ง€ ์•ˆ์ฃผ๋Š”์ง€ ํŒŒ์•…ํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณดํ˜ธ ๋ฐ ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋„๋ก Kernel mode์™€ User mode๋กœ ๋‚˜๋ˆ„์–ด ์šด์˜๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ด ๋‘ ๋ชจ๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”์ง€ ์•Œ์•„๋ณด์ž

System call

์šฐ๋ฆฌ๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.
์ฝ”๋“œ์˜ ๋กœ์ง์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. .txt ํŒŒ์ผ์„ ์—ด์–ด ํ•™์ƒ์˜ ์ •๋ณด๋ฅผ ์–ป์–ด์˜จ๋‹ค.
  2. ์–ป์–ด์˜จ ์ •๋ณด์ค‘ 25์‚ด ์ด์ƒ์˜ ์‚ฌ๋žŒ์ˆ˜๋ฅผ ํ™•์ธํ•œ๋‹ค.

๋ผ๋Š” ๋กœ์ง์˜ ์ฝ”๋“œ๊ฐ€ ์žˆ๊ณ  ์ด๋ฅผ ์‹คํ–‰ ํ–ˆ์„ ๋•Œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰๋˜๋Š”์ง€ ๋ณด๋ฉด

  1. ์ผ๋‹จ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉด User mode์—์„œ ์‹คํ–‰์ด ๋œ๋‹ค.
  2. .txtํŒŒ์ผ์„ ์—ฌ๋Š” ์ˆ˜ํ–‰์„ ํ•ด์•ผํ•œ๋‹ค. ์ด๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” .txtํŒŒ์ผ์„ ์—ด์–ด์•ผ ํ•˜๋Š”๋ฐ ์ด๋Š” ํ”„๋กœ๊ทธ๋žจ ์ž์›์— ์ ‘๊ทผํ•ด์•ผ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
    ๊ทธ๋ž˜์„œ User Mode -> Kernel mode ๋กœ ์ „ํ™˜์ด ์ผ์–ด๋‚˜๊ณ  Kernel mode์—์„œ .txtํŒŒ์ผ์„ ์—ฌ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  3. ๊ทธ๋ฆฌ๊ณ  ์ž‘์—…์ด ๋งˆ๋ฌด๋ฆฌ๊ฐ€๋˜๋ฉด User mode๋กœ ์ „ํ™˜๋˜์–ด ๋‚˜๋จธ์ง€ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด ์œ„ ๊ณผ์ •๊ณผ ๊ฐ™๋‹ค.

์œ„ ์„ค๋ช…์—์„œ๋Š” ์–ด๋–ป๊ฒŒ User mode์—์„œ Kernel mode๋กœ ๋ณ€ํ™˜ํ•˜๋Š”์ง€ ์„ค๋ช…์ด ์•ˆ๋˜์–ด ์žˆ๋‹ค.
์ปดํ“จํ„ฐ๊ฐ€ ์‚ฌ๋žŒ๋„ ์•„๋‹ˆ๊ณ  ์–ด๋–ป๊ฒŒ User mode์—์„œ Kernel mode๋กœ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์„๊นŒ?
์ปดํ“จํ„ฐ๊ฐ€ mode๋ฅผ ๋ฐ”๊ฟ”์•ผ ํ•˜๋Š”๊ฒƒ์„ ์•Œ๊ฒŒ ํ•ด์ฃผ๋Š”๊ฒƒ์ด System call์˜ ์—ญํ• ์ด๋‹ค.

์œ„ ๊ณผ์ •์„ ๊ทธ๋ฆผ์„ ํ†ตํ•ด ์ข€ ๋” ์ƒ์„ธํžˆ ๋งํ•˜์ž๋ฉด
systemcallprocess

  1. ์ผ๋‹จ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉด User mode์—์„œ ์‹คํ–‰์ด ๋œ๋‹ค.
  2. .txtํŒŒ์ผ์„ ์—ฌ๋Š” ์ˆ˜ํ–‰์„ ํ•ด์•ผํ•œ๋‹ค. ์ด๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” .txtํŒŒ์ผ์„ ์—ด์–ด์•ผ ํ•˜๋Š”๋ฐ ์ด๋Š” ํ”„๋กœ๊ทธ๋žจ ์ž์›์— ์ ‘๊ทผํ•ด์•ผ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
    ๊ทธ๋ž˜์„œ User Mode์—์„œ ํŒŒ์ผ์„ ์—ฌ๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ System call์„ ์š”์ฒญํ•œ๋‹ค.
  3. ์š”์ฒญ์„ ๋ฐ›๊ฒŒ๋˜๋ฉด user application ์ƒํƒœ๋Š” ์ €์žฅ์ด๋˜๊ณ  kernel mode๋กœ ๋ณ€๊ฒฝ๋œํ›„ ์š”์ฒญ๋œ ์ž‘์—…์„ OS๊ฐ€ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  4. mode๊ฐ€ ๋ณ€๊ฒฝ๋ ๋•Œ mode์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์ธ Mode Bit์˜ ๊ฐ’์ด 1(user mode) -> 0(kernel mode)๋กœ ๋ฐ”๋€๋‹ค.
  5. ๊ทธ๋ฆฌ๊ณ  ์ž‘์—…์ด ๋งˆ๋ฌด๋ฆฌ๊ฐ€๋˜๋ฉด ์š”์ฒญํ•œ ์ž‘์—…์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•œ System call ์ด return ๋˜๋ฉฐ Mode Bit์˜ ๊ฐ’์ด 0(kernel mode) -> 1(user mode) ๋กœ ์ „ํ™˜๋˜๋ฉด์„œ user mode๋กœ ์ „ํ™˜๋œ๋‹ค.

Interrupt

Interrupt๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค๋ช… ํ•  ์ˆ˜ ์žˆ๋‹ค.

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

Interrupt๋Š” hardware interrupt, software interrupt๊ฐ€ ์žˆ๋‹ค.

  • hardware interrupt
    • ํ•˜๋“œ์›จ์–ด๊ฐ€ ๋ฐœ์ƒ์‹œํ‚ค๋Š” interrupt๋กœ, CPU๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๊ฐ€ cpu์— ์•Œ๋ ค์ฃผ๊ฑฐ๋‚˜ cpu ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•  ๋•Œ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
  • software interrupt
    • ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๋ฐœ์ƒ์‹œํ‚ค๋Š” interrupt์ด๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด(์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ)๊ฐ€ ์Šค์Šค๋กœ interrupt ๋ผ์ธ์„ ์„ค์ •ํ•œ๋‹ค. ์˜ˆ์™ธ ์ƒํ™ฉ, system call๋“ฑ์ด software interrupt์ด๋‹ค.

Interrupt๋Š” ์œ„์—์„œ ๋ณธ๊ฒƒ์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ˜•ํƒœ์˜ Interrupt๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๋Š” Interrupt Vector๋ผ๋Š” ๊ณณ์—์„œ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ 0~255๋ฒˆ ๊นŒ์ง€ ์ด 256๊ฐœ์˜ Interrupt๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฃจํ‹ด์ธ Interrupt Handler์˜ ์ฃผ์†Œ๋“ค์„ ๊ด€๋ฆฌ ํ•œ๋‹ค.

๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์ •๋ฆฌํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•˜๋‚˜ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์™€์ค‘์— ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์œผ๋กœ Interrupt๋ฅผ ๋ฐœ์ƒ์‹œ์ผฐ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ๋ฆ„์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€๋œ๋‹ค.

  1. ํ‚ค๋ณด๋“œ ์ž…๋ ฅ ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ
  2. ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค ์ •๋ณด ์ €์žฅ
  3. Interrupt Vector์—์„œ ํ•ด๋‹น InterruptHandler ์ฃผ์†Œ๋ฅผ ์ฐพ์Œ
  4. Interrupt ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด OS memory PC๊ฐ’์„ 3๋ฒˆ์—์„œ ์ฐพ์€InterruptHandler ์ฃผ์†Œ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ
  5. Interrupt ์ฒ˜๋ฆฌ ํ›„ Interrupt ๋ฐœ์ƒ ์ด์ „ ๋กœ์ง์œผ๋กœ ๋Œ์•„๊ฐ

Context_Switching

Context Switching์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค๋ช… ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU์—์„œ ์‚ฌ์šฉ์ค‘์ผ๋•Œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์ด์ „์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณด๊ด€ํ•˜๊ณ  ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ ์žฌ ํ•˜๋Š” ์ž‘์—…
    ๊ทธ๋ฆผ์„ ๋ณด์ž
    systemcallprocess
    ์–‘์ชฝ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๊ณ  ์ค‘๊ฐ„์— system call ๋˜๋Š” Interrupt๊ฐ€ ์žˆ๋Š”๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
    ์ˆœ์„œ๋Œ€๋กœ ์„ค๋ช…ํ•˜๋ฉด
  1. P0์˜ Process๊ฐ€ ์‹คํ–‰ ๋˜๊ณ  ์žˆ๋‹ค.
  2. Interrupt ํ˜น์€ System call์ด ๋ฐœ์ƒํ•˜์—ฌ P1์˜ Process๋ฅผ ์‹คํ–‰ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.
  3. P0 Process์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด PCB0๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๋ฉด์„œ P0 Process๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  4. ๊ทธ๋ฆฌ๊ณ  P1 Process์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด PCB1์„ ๋กœ๋”ฉ ํ•œ๋‹ค.
  5. ๋กœ๋”ฉ์ด ์™„๋ฃŒ๋˜๋ฉด P1์˜ Process๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
  6. P1 Process์˜ ์ž‘์—…์ด ์™„๋ฃŒ๊ฐ€ ๋ฌ๋‹ค
  7. P1 Process์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด PCB1์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ณ , ์ €์žฅ์„ ํ•˜๋Š” ์ˆœ๊ฐ„ P1์€ ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๋Š” ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.
  8. P0 Process๊ฐ€ ๋กœ๋”ฉ๋˜๋ฉฐ ๋กœ๋”ฉ์ด ์™„๋ฃŒ๋˜๋ฉด P0 Process๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

์—ฌ๊ธฐ์„œ ํ•œ๊ฐ€์ง€ ๋ณผ๋งŒํ•œ๊ฒƒ์€ P0,P1 Process๊ฐ€ ๋‘˜๋‹ค ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๋Š” ์‹œ๊ฐ„(idle)์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
์–‘์ชฝ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๋Š” ์ˆœ๊ฐ„์„ Overhead๋ผ๊ณ  ๋งํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ €์žฅํ•˜๊ณ  ๋กœ๋”ฉํ•˜๋Š” ๊ณผ์ •์„ Context Swtiching์ด๋ผ๊ณ  ํ•˜๋ฉฐ ์œ„ ์‚ฌ์ง„์—์„œ๋Š” 2๋ฒˆ์˜ Context Switching์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.