[์šด์˜์ฒด์ œ] ์ปดํ“จํ„ฐ ๊ตฌ์กฐ ๋ฐ ์šด์˜์ฒด์ œ ๊ฐœ์š” / Kernel / System Call

2023. 3. 25. 15:07ใ†ComputerScience/OperatingSystem

 

 

 

์šด์˜์ฒด์ œ(Operating System)๋ž€?

- ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด(CPU, IO์žฅ์น˜, ๋ฉ”๋ชจ๋ฆฌ) ์œ„์— ์ปดํ“จํ„ฐ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ˆ˜ํ–‰๋˜๋„๋ก ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด

- ํ”„๋กœ๊ทธ๋žจ์ด ํ•˜๋“œ์›จ์–ด๋ฅผ ๋ชฐ๋ผ๋„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต -> ์‹œ์Šคํ…œ ์ฝœ

- CPU์™€ ๊ฐ™์€ ํ•˜๋“œ์›จ์–ด๊ฐ€ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋„๋ก ๊ด€๋ฆฌ

- ํ•˜๋“œ์›จ์–ด ๋‚ด๋ถ€์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ํ†ต๋กœ - BUS 

 

1) System controller (north Bridge)

- CPU, ๋ฉ”๋ชจ๋ฆฌ(DRAM), ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ(AGP)

- memory controller hub (MCH)

- ๋งค์šฐ ๋น ๋ฅธ ์†๋„๊ฐ€ ์š”๊ตฌ๋จ

- AGP Bus, Memory Bus

 

2) Pheripheral Bus (South Bridge)

- I/O Controller Hub

- LAN, USB, ํ‚ค๋ณด๋“œ ๋“ฑ๋“ฑ ๋น„๊ต์  ๋Š๋ฆฐ ์†๋„

 

 

 

System Call

1. System call์˜ ๊ฐœ๋…

https://fjvbn2003.tistory.com/306

์‹œ์Šคํ…œ ํ˜ธ์ถœ(system call)์€ ์šด์˜ ์ฒด์ œ์˜ ์ปค๋„์ด ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค์— ๋Œ€ํ•ด, 

์‘์šฉ ํ”„๋กœ๊ทธ๋žจ(=application)์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ์ปค๋„์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค

C๋‚˜ C++๊ณผ ๊ฐ™์ด ๊ณ ๊ธ‰ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ๋“ค์€ ์ง์ ‘ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•  ์ˆ˜ X

-> ๊ณ ๊ธ‰ API๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ ํ˜ธ์ถœ์— ์ ‘๊ทผํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•

 

์œ ์ € ๋ ˆ๋ฒจ์˜ ํ”„๋กœ๊ทธ๋žจ์€ ์œ ์ € ๋ ˆ๋ฒจ์˜ ํ•จ์ˆ˜๋“ค ๋งŒ์œผ๋กœ๋Š” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ํž˜๋“ค๊ธฐ ๋•Œ๋ฌธ์—,

์ปค๋„(kernel)์˜ ๋„์›€์„ ๋ฐ˜๋“œ์‹œ ๋ฐ›์•„์•ผ ํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋Œ€ํ‘œ๋˜๋Š” ์œ ์ € ํ”„๋กœ์„ธ์Šค(User Process)์—์„œ ์œ ์ €๋ชจ๋“œ์—์„œ๋Š” ์ปค๋„์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค.

kernel์— ๊ด€๋ จ๋œ ๊ฒƒ์€ ์ปค๋„ ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•œ ํ›„ํ•ด๋‹น ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๊ถŒํ•œ์ด ์ฃผ์–ด์ง

์ด๋•Œ, ์ปค๋„ ๋ชจ๋“œ๋ฅผ ํ†ตํ•œ ์ž‘์—…์€ ๋ฐ˜๋“œ์‹œ ์‹œ์Šคํ…œ ์ฝœ์„ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•˜๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ๊ถŒํ•œ์€ ์™œ ํ•„์š”ํ•œ ๊ฒƒ์ผ๊นŒ?

๊ทธ ์ด์œ ๋Š” ํ•ด์ปค๊ฐ€ ํ”ผํ•ด๋ฅผ ์ž…ํžˆ๊ธฐ ์œ„ํ•ด ์•…์˜์ ์œผ๋กœ ์‹œ์Šคํ…œ ์ฝœ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

Or ์‚ฌ์šฉ์ž๊ฐ€ ์ž„์˜๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ํ–ˆ์„ ๊ฒฝ์šฐ, ์‹œ์Šคํ…œ ์ „์ฒด๋ฅผ ๋ง๊ฐ€๋œจ๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค. 

๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ๋ช…๋ น์–ด๋“ค์€ ํŠน๋ณ„ํ•˜๊ฒŒ ์ปค๋„ ๋ชจ๋“œ์—์„œ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„

๋งŒ์•ฝ ์œ ์ € ๋ชจ๋“œ์—์„œ ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•  ๊ฒฝ์šฐ -> ์šด์˜์ฒด์ œ์—์„œ ๋ถˆ๋ฒ•์ ์ธ ์ ‘๊ทผ์œผ๋กœ ํŒ๋‹จํ•˜์—ฌ trap์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. 

 

https://wpaud16.tistory.com/245

+ ์‚ฌ์šฉ์ž๊ฐ€ kernel level๋กœ ๋ฐ”๋กœ ์ ‘๊ทผํ•˜๋ฉด ์—ฌ๋Ÿฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ํ•˜๋‚˜์˜ ์•ˆ์ „์žฅ์น˜

+ ์‹œ์Šคํ…œ ์ฝœ์€ user mode์—์„œ kermel mode๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ

+ ์‹œ์Šคํ…œ ์ฝœ์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€๋ถ€๋ถ„ API๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. API๋ฅผ ์“ฐ๋Š” ์ด์œ ๋Š” ์ด์‹์„ฑ ๋•Œ๋ฌธ์ด๋‹ค.
์‚ฌ์šฉํ•˜๋Š” ๊ณณ๋งˆ๋‹ค ์‹œ์Šคํ…œ ์ฝœ์„ ํ•˜๋Š” ํ™˜๊ฒฝ์ด ๋‹ค๋ฅผ ํ…๋ฐ API๋Š” ์ธ์ž๋งŒ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋ฉด ๊ฐ„๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ

 

์‹œ์Šคํ…œ ์ฝœ์€ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋ ๊นŒ?

  • ๋จผ์ € ๊ฐ๊ฐ์˜ system call์€ ๋ฒˆํ˜ธ(index)๋ฅผ ํ• ๋‹น๋ฐ›๋Š”๋ฐ
    table์ด๋ผ๋Š” ๊ณณ์—์„œ indexed ๋˜์–ด ํ• ๋‹น๋œ๋‹ค.
  • system call interface(์‹œ์Šคํ…œ ์ฝœ ํ•ธ๋“ค๋Ÿฌ)๋Š” ํ• ๋‹น๋œ ๋ฒˆํ˜ธ์— ๋งž๋Š” index๋ฅผ ์ฐพ์•„์„œ ์‹คํ–‰ํ•˜๊ณ 
    ๋‹ค์‹œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ์‹œ์Šคํ…œ ์ฝœ๊ณผ mapping ๋˜๋Š” table์€ ์ปดํ“จํ„ฐ ๊ตฌ์กฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

2. ์‹œ์Šคํ…œ ์ฝœ์˜ ์œ ํ˜•

 

์‹œ์Šคํ…œ ํ˜ธ์ถœ์ด๋ž€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•˜์—ฌ ์šด์˜ ์ฒด์ œ์˜ ๋ฃจํ‹ด์„ ํ˜ธ์ถœํ•˜์—ฌ ์ด์šฉํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. 

 

์‹œ์Šคํ…œ ํ˜ธ์ถœ์˜ ์„ธ ๊ฐ€์ง€ ๊ธฐ๋Šฅ

  1. ์‚ฌ์šฉ์ž ๋ชจ๋“œ์— ์žˆ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์ปค๋„์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. == ์ธํ„ฐํŽ˜์ด์Šค
  2. ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ํ•˜๋ฉด ์‚ฌ์šฉ์ž ๋ชจ๋“œ์—์„œ ์ปค๋„ ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•œ๋‹ค.
  3. ์ปค๋„์—์„œ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์ฒ˜๋ฆฌํ•˜๋ฉด, ์ปค๋„ ๋ชจ๋“œ์—์„œ ์‚ฌ์šฉ์ž ๋ชจ๋“œ๋กœ ๋Œ์•„๊ฐ€ ์ž‘์—…์„ ๊ณ„์†ํ•œ๋‹ค.

 

์‹œ์Šคํ…œ ํ˜ธ์ถœ์˜ ์œ ํ˜•

  1. ํ”„๋กœ์„ธ์Šค ์ œ์–ด(process control)
  2. ํŒŒ์ผ ์กฐ์ž‘(file manipulation)
  3. ์žฅ์น˜ ๊ด€๋ฆฌ(device management)
  4. ์ •๋ณด ์œ ์ง€(information maintenance)
  5. ํ†ต์‹ (communication)

 

 

https://luckyyowu.tistory.com/133

์‹œ์Šคํ…œ ์ฝœ์€ ๋‹ค์„ฏ ๊ฐ€์ง€์˜ ์ค‘์š”ํ•œ ๋ฒ”์ฃผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.
ํ”„๋กœ์„ธ์Šค ์ œ์–ด, ํŒŒ์ผ ์กฐ์ž‘, ์žฅ์น˜ ์กฐ์ž‘, ์ •๋ณด ์œ ์ง€๋ณด์ˆ˜, ํ†ต์‹ ๊ณผ ๋ณดํ˜ธ.
์—ฌ๊ธฐ์„œ๋Š” ๊ฐ ๋ฒ”์ฃผ๋“ค์— ์–ด๋– ํ•œ ๊ธฐ๋Šฅ๋“ค์ด ์žˆ๋Š”์ง€๋งŒ ๊ฐ„๋žตํ•˜๊ฒŒ ์‚ดํŽด๋ณธ๋‹ค. 

 

2.4.1 ํ”„๋กœ์„ธ์Šค ์ œ์–ด(Process Control)

  • ๋๋‚ด๊ธฐ(end), ์ค‘์ง€(abort)
  • ์ ์žฌ(load), ์‹คํ–‰(execute)
  • ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ(create process)
  • ํ”„๋กœ์„ธ์Šค ์†์„ฑ ํš๋“๊ณผ ์„ค์ •(get process attribute and set process attribute)
  • ์‹œ๊ฐ„ ๋Œ€๊ธฐ(wait time)
  • ์‚ฌ๊ฑด ๋Œ€๊ธฐ(wait event)
  • ์‚ฌ๊ฑด์„ ์•Œ๋ฆผ(signal event)
  • ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐ ํ•ด์ œ : malloc, free

 

2.4.2 ํŒŒ์ผ ์กฐ์ž‘(File Manipulation)

  • ํŒŒ์ผ ์ƒ์„ฑ(create file), ํŒŒ์ผ ์‚ญ์ œ(delete file)
  • ์—ด๊ธฐ(open), ๋‹ซ๊ธฐ(close)
  • ์ฝ๊ธฐ(read), ์“ฐ๊ธฐ(write), ์œ„์น˜ ๋ณ€๊ฒฝ(reposition)
  • ํŒŒ์ผ ์†์„ฑ ํš๋“ ๋ฐ ์„ค์ •(get file attribute and set file attribute)

 

2.4.3 ์žฅ์น˜ ๊ด€๋ฆฌ(Devide Management)

  • ์žฅ์น˜๋ฅผ ์š”๊ตฌ(request devices), ์žฅ์น˜๋ฅผ ๋ฐฉ์ถœrelease device)
  • ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์œ„์น˜ ๋ณ€๊ฒฝ
  • ์žฅ์น˜ ์†์„ฑ ํš๋“, ์žฅ์น˜ ์†์„ฑ ์„ค์ •
  • ์žฅ์น˜์˜ ๋…ผ๋ฆฌ์  ๋ถ€์ฐฉ(attach) ๋˜๋Š” ๋ถ„๋ฆฌ(detach)

 

2.4.4 ์ •๋ณด ์œ ์ง€(Information Maintenance)

  • ์‹œ๊ฐ„๊ณผ ๋‚ ์งœ์˜ ์„ค์ •๊ณผ ํš๋“(time)
  • ์‹œ์Šคํ…œ ๋ฐ์ดํ„ฐ์˜ ์„ค์ •๊ณผ ํš๋“(date)
  • ํ”„๋กœ์„ธ์Šค ํŒŒ์ผ, ์žฅ์น˜ ์†์„ฑ์˜ ํš๋“ ๋ฐ ์„ค์ •

 

2.4.5 ํ†ต์‹ (Communication)

  • ํ†ต์‹  ์—ฐ๊ฒฐ์˜ ์ƒ์„ฑ, ์ œ๊ฑฐ
  • ๋ฉ”์‹œ์ง€์˜ ์†ก์‹ , ์ˆ˜์‹ 
  • ์ƒํƒœ ์ •๋ณด ์ „๋‹ฌ
  • ์›๊ฒฉ ์žฅ์น˜์˜ ๋ถ€์ฐฉ ๋ฐ ๋ถ„๋ฆฌ

 

 

 

3. ๊ตฌ์ฒด์ ์ธ ์‹œ์Šคํ…œ ์ฝœ์˜ ๊ณผ์ •

https://ko.wikipedia.org/wiki/์‹œ์Šคํ…œ_ํ˜ธ์ถœ

+ ์‚ฌ์ง„ ์ž๋ฃŒ - ๊ตฌ์ฒด์ ์ธ ์‹œ์Šคํ…œ ์ฝœ์˜ ๊ณผ์ •

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ ˆ์ฐจ๋กœ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํ•จ์ˆ˜๊ฐ€ ์ปค๋„์˜ ํ•จ์ˆ˜์™€ ์—ฐ๊ฒฐ๋œ๋‹ค:

  1. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ open(...) ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด
    libc์—์„œ ์ œ๊ณตํ•œ open ํ•จ์ˆ˜ ์†์—์„œ ์ธ์ˆ˜ ๋ฐ์ดํ„ฐ๋ฅผ register์— ๋„ฃ๊ณ ,
    software interrupt(trap) ์‹คํ–‰
  2. trap์— ์˜ํ•ด ISR(Interrupt Service Routine: ์ธํ„ฐ๋Ÿฌ)์ด ์žˆ๋Š” ์ปค๋„์˜ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ์œ„์น˜๋ฅผ ์ฐพ์•„ ํ•ด๋‹น ์ฃผ์†Œ๋กœ ์‹คํ–‰์„ ์˜ฎ๊ธด๋‹ค.
    ์ด๋•Œ CPU๋Š” ๊ถŒํ•œ์ˆ˜์ค€์ด ์ตœ๊ณ  ์ˆ˜์ค€์ธ ์‹คํ–‰ ๋ชจ๋“œ(kernel mode)๊ฐ€ ๋œ๋‹ค.
    CPU์˜ ์ธํ„ฐ๋ŸฝํŠธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ์˜ํ•ด ์ž๋™ ๋ณ€ํ™˜๋œ๋‹ค.
  3. ๋งŽ์€ ์‹œ์Šคํ…œ ํ˜ธ์ถœ ํ•จ์ˆ˜ ์ค‘์— ํ•ด๋‹น ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ ์ˆซ์ž(์ธํ„ฐ๋ŸฝํŠธ ๋„˜๋ฒ„)๋ฅผ ์ด์šฉํ•ด ํ•จ์ˆ˜์˜ ์œ„์น˜๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ํ•ด๋‹น ์ฃผ์†Œ๋กœ ์ ํ”„
    ์ปค๋„ ์†์˜ ์žฅ์น˜ ๋ชฉ๋ก์—์„œ ํ•ด๋‹น ์žฅ์น˜๋ฅผ ์ฐพ๊ณ , ๋“œ๋ผ์ด๋ฒ„์˜ ํ•จ์ˆ˜ .open์—์„œ ์ •์˜๋œ mydrv_open(...)๊ฐ€ ํ˜ธ์ถœ๋จ.
  4. mydrv_open()ํ•จ์ˆ˜์˜ return์— ๋”ฐ๋ผ ์ปค๋„์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์™„๋ฃŒ๋˜๊ณ ,
    ์ปค๋„์€ ๋‹ค์‹œ ํ•ด๋‹น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์Šค์ผ€์ค„๋ง์— ์˜ํ•ด ํ™œ์„ฑํ™”ํ•˜๊ณ  ํ•ด๋‹น ํ”„๋กœ์„ธ์„œ๋กœ ์ „ํ™˜ํ•œ๋‹ค.
    ์ด๋•Œ CPU์˜ ๊ถŒํ•œ์ˆ˜์ค€์€ ๋‹ค์‹œ ์‚ฌ์šฉ์ž ๋ชจ๋“œ๋กœ ์ „ํ™˜๋œ๋‹ค.

 

๋งŒ์•ฝ write ํ•จ์ˆ˜๋‚˜ read ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์— ์˜ํ•ด, ์ปค๋„์˜ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ ํ›„ return์— ์˜ํ•ด ์ข…๋ฃŒ๋˜์ง€ ์•Š์œผ๋ฉด

์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ์Šค์ผ€์ค„๋ง์—์„œ ๋น ์ ธ ์ปค๋„์˜ ์ƒํƒœ์—์„œ ๋จธ๋ฌผ๋ฉด์„œ ๋ธ”๋Ÿญํ‚น ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค.
ํ•ด๋‹น ๋“œ๋ผ์ด๋ฒ„์˜ ์ธํ„ฐ๋ŸฝํŠธ ๋“ฑ์œผ๋กœ ๋ธ”๋Ÿญํ‚น์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

4. System call vs Library call

https://coding-chobo.tistory.com/31

 

System Call๊ณผ Library Call์˜ ์ฃผ์š” ์ฐจ์ด์ 

System Call: ์ปค๋„์— ๋Œ€ํ•œ Resource Access ์š”์ฒญ์ด๊ณ ,

Library Call: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ •์˜๋œ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์š”์ฒญ

 

์ปค๋„์€ System Call ์ œ๊ณต, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Library Call ์ œ๊ณต

 

1. System call

์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์—๋Š” Kernel Mode์™€ User Mode์˜ ๋‘ ๊ฐ€์ง€ ๋ชจ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 

Kernel Mode์—์„œ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ํ•˜๋“œ์›จ์–ด ๋ฆฌ์†Œ์Šค์— ์ง์ ‘ ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

+ User Mode์—์„œ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ํ•˜๋“œ์›จ์–ด ๋ฆฌ์†Œ์Šค์— ์ง์ ‘ ์•ก์„ธ์Šค X

 

๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋žจ์€ User Mode์—์„œ ์‹คํ–‰๋จ

ํ”„๋กœ๊ทธ๋žจ์— ๋ฉ”๋ชจ๋ฆฌ๋‚˜ ํ•˜๋“œ์›จ์–ด ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ -> System Call์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋„์— ์š”์ฒญ

-> ๋ชจ๋“œ๊ฐ€ User Mode์—์„œ Kernel Mode๋กœ ์ „ํ™˜๋˜๊ณ , 

์ž‘์—…์ด ๋๋‚˜๋ฉด, ๋ชจ๋“œ๊ฐ€ Kernel Mode์—์„œ User Mode๋กœ ๋‹ค์‹œ ๋ฐ”๋€๋‹ˆ๋‹ค. 

: ์ด๋Ÿฌํ•œ ๋ชจ๋“œ ์ „ํ™˜์„ Context Switching

UNIX ์‹œ์Šคํ…œ์—์„œ ๋‘ ๊ฐ€์ง€ System Call ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
- fork() : ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์ƒˆ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

               ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ fork()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค์˜ ์‚ฌ๋ณธ์ด ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค.

               ๋”ฐ๋ผ์„œ ๋‘ ๊ฐ€์ง€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

               ํ•˜๋‚˜๋Š” Parent ํ”„๋กœ์„ธ์Šค์ด๊ณ  ์ž‘์„ฑ๋œ ์ƒˆ ํ”„๋กœ์„ธ์Šค๋Š” Child ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค.

- exec() : ์ƒˆ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ข…๋ฃŒ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒˆ ํ”„๋กœ์„ธ์Šค๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

                ๋”ฐ๋ผ์„œ exec()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ƒˆ ํ”„๋กœ์„ธ์Šค ๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

                ์ฆ‰, System Call์„ ์ˆ˜ํ–‰ ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŒŒ๊ดด๋ฉ๋‹ˆ๋‹ค.

 

2. Library Call

Library Call์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํŠน์ • Library Call์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋จผ์ € ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

C ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ํ”„๋กœ๊ทธ๋žจ์— ํ—ค๋” ํŒŒ์ผ์„ ํฌํ•จ์‹œ์ผœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ๊ณ ,

์ „์ฒ˜๋ฆฌ๊ธฐ ์ง€์‹œ๋ฌธ (#include)์„ ์‚ฌ์šฉํ•˜์—ฌ ํ—ค๋” ํŒŒ์ผ์„ ํฌํ•จ์‹œ์ผœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ—ค๋” ํŒŒ์ผ์— ์˜ˆ๋ฅผ ๋“ค๋ฉด, stdio.h ํ—ค๋” ํŒŒ์ผ์—๋Š” ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ ์กฐ์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋จ

fopen()์€ ํŒŒ์ผ์„ ์—ฌ๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ˜๋ฉด, fclose()๋Š” ํŒŒ์ผ์„ ๋‹ซ๋Š”๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

printf() ๊ธฐ๋Šฅ์€ ํ˜•์‹ํ™” ๋œ ์ถœ๋ ฅ์„ ํ‘œ์ค€ ์ถœ๋ ฅ ์žฅ์น˜๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ณ , scanf() ๊ธฐ๋Šฅ์€ ํ‘œ์ค€ ์ž…๋ ฅ ์žฅ์น˜์—์„œ ํ˜•์‹ํ™” ๋œ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ "math.h"ํ—ค๋” ํŒŒ์ผ์—๋Š” ์ˆ˜ํ•™ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. 

"time.h"ํ—ค๋” ํŒŒ์ผ์—๋Š” ์‹œ๊ฐ„ ๋ฐ ๋ฐ์ดํ„ฐ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

"string.h"ํ—ค๋” ํŒŒ์ผ์—๋Š” ๋ฌธ์ž์—ด ์กฐ์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

3. System Call๊ณผ Library Call ์ฐจ์ด
System Call์€ ์ž์›์— Accessํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ๊ทธ๋žจ์ด ์ปค๋„์— ์ปค๋„ ๋ชจ๋“œ๋ฅผ ์š”์ฒญ

Library Call์€ ํ”„๋กœ๊ทธ๋žจ์ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ •์˜ ๋œ ๊ธฐ๋Šฅ์— Access ํ•˜๊ธฐ ์œ„ํ•œ ์š”์ฒญ

- UNIX / LINUX์˜ Manul์€ ๋ช…๋ น์–ด man(manual)์„ ํ†ตํ•ด์„œ ์ œ๊ณต๋˜๊ณ  ์žˆ์œผ๋ฉฐ, 

manual์˜ ์˜์—ญ์— ๋”ฐ๋ผ Section ๋ฒˆํ˜ธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 

System Call์€ Section 2๋ฒˆ์„ ์‚ฌ์šฉํ•˜๊ณ , Library Call์€ Section 3๋ฒˆ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

+ read() / write() ๋ฐ fread() / fwrite() ๋น„๊ต
Library Call์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„, ๋‚ด๋ถ€์ ์œผ๋กœ System Call์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

fread() / fwrite()์˜ ๊ฒฝ์šฐ ๋‚ด๋ถ€์ ์œผ๋กœ Buffer์— ๋ฐ์ดํ„ฐ์„ ์Œ“์•˜๋‹ค๊ฐ€ ์ผ์ • ํฌ๊ธฐ ์ด์ƒ์ด ๋˜๋ฉด read() / write()๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. 

 

read() / write() ๊ฐ™์€ System Call์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค

 fread() / fwrite() ๊ฐ™์ด Library Call์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ,

System Call์˜ ํ˜ธ์ถœ ๋นˆ๋„๊ฐ€ ํ™•์—ฐํ•˜๊ฒŒ ์ค„์–ด๋“œ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

Kernel ์ปค๋„์ด๋ž€? 

 

- ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์ฃผํ•˜์—ฌ ํ•ญ์ƒ ์‹คํ–‰๋˜๋Š”(== ์‚ด์•„์žˆ๋Š”) ํ”„๋กœ๊ทธ๋žจ

- ์ปค๋„ + ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋žจ -> ์šด์˜์ฒด์ œ

- ์šด์˜์ฒด์ œ์—์„œ ํ•ต์‹ฌ์ด ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ, ์‹œ์Šคํ…œ์˜ ๋ชจ๋“  ๊ฒƒ์„ ํ†ต์ œํ•œ๋‹ค.

- ์šด์˜์ฒด์ œ์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„ ๋ฐ Application ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์„œ๋น„์Šค ์ œ๊ณต

- ์ปค๋„์˜ ์—ญํ•  

- 1) ๋ณด์•ˆ - ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด์™€ ํ”„๋กœ์„ธ์Šค์˜ ๋ณด์•ˆ ์ฑ…์ž„

- 2) ์ž์› ๊ด€๋ฆฌ - ํ•œ์ •๋œ ์‹œ์Šคํ…œ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค. ex) ํ”„๋กœ์„ธ์Šค์— CPU ํ• ๋‹นํ•˜๋Š” ์Šค์ผ€์ค„๋ง 

- 3) ์ถ”์ƒํ™” - ์šด์˜ ์ฒด์ œ์˜ ๋ณต์žกํ•œ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถ”๊ณ , ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ•˜๋“œ์›จ์–ด์—๊ฒŒ ์ œ๊ณต 

 

 

 

CPU์˜ ๊ตฌ์กฐ

- ALU - ์‚ฐ์ˆ  ๋…ผ๋ฆฌ ์—ฐ์‚ฐ ์žฅ์น˜ -> ์‚ฐ์ˆ  & ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž 

- CU - ์ œ์–ด์œ ๋‹›, control unit -> ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฒƒ

- MMU - memory management unit -> virtual memory ๊ด€๋ฆฌ

 

Registers

- PC - program counter -> ์‹คํ–‰์‹œํ‚ฌ ๋ช…๋ น์–ด์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ฒˆ์ง€

- IR - instruction register -> ์ˆ˜ํ–‰ํ•  ๋ช…๋ น์–ด

- SP - stack pointer -> stack's top์„ ๊ฐ€๋ฆฌํ‚ด

- PSW - program status word - ํ˜„์žฌ CPU์˜ ์ƒํƒœ

- General Purpose registers (๋”ํ•˜๊ธฐ, ๊ณฑํ•˜๊ธฐ ๋“ฑ ์ž„์‹œ์ ์œผ๋กœ ์ €์žฅ)