2. ์‹œ์Šคํ…œ ๊ตฌ์กฐ

  • ์šด์˜์ฒด์ œ๊ฐ€ ์‚ฌ์šฉ์ž, ํ”„๋กœ์„ธ์Šค ๋ฐ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์—๊ฒŒ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค๊ฐ€ ๋ฌด์—‡์ธ์ง€
  • ์šด์˜์ฒด์ œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•
  • OS ์„ค์น˜ ๋ฐฉ๋ฒ•, ๋งž์ถคํ™” ๊ณผ์ • ๋ฐ ๋ถ€ํŒ…๊ณผ์ •


2.1 ์šด์˜์ฒด์ œ ์„œ๋น„์Šค


์šด์˜์ฒด์ œ๋Š” ์‚ฌ์šฉ์ž์™€ ์‹œ์Šคํ…œ์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. image

  • ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI)

    • ๋ช…๋ น์–ด ๋ผ์ธ ์ธํ„ฐํŽ˜์ด์Šค(CLI): ํ”„๋กœ๊ทธ๋žจ ์…ธ์„ ํ†ตํ•ด ๋ฌธ์ž์—ด ๋ช…๋ น์„ ๋‚ด๋ฆผ
    • ๋ฐฐ์น˜ ์ธํ„ฐํŽ˜์ด์Šค: ๋ช…๋ น์–ด์™€ ๋ช…๋ น์–ด๋ฅผ ์ œ์–ดํ•˜๋Š” ๋””๋ ‰ํ‹ฐ๋ธŒ๊ฐ€ ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์ž…๋ ฅ๋˜๊ณ  ๊ทธ ํŒŒ์ผ์ด ์‹คํ–‰๋จ
    • ๊ทธ๋ž˜ํ”ผ์ปฌ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(GUI): ์ž…์ถœ๋ ฅ์„ ์ง€์‹œํ•˜๊ณ , ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•˜์—ฌ ํ‚ค๋ณด๋“œ๋กœ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜ ๊ฒฐ์ • ์žฅ์น˜๋ฅผ ๊ฐ€์ง€๋Š” ์‹œ์Šคํ…œ
  • ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰(Program execution)

    • ์‹œ์Šคํ…œ์€ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•ด ์‹คํ–‰
    • ํ”„๋กœ๊ทธ๋žจ์€ ์ •์ƒ์ ์ด๋“ , ๋น„์ •์ƒ์ ์ด๋“  ์‹คํ–‰์„ ๋๋‚ผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ
  • ์ž…์ถœ๋ ฅ ์—ฐ์‚ฐ(I/O Operation)

    • ์ˆ˜ํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์€ ์ž…์ถœ๋ ฅ์„ ์š”๊ตฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ํšจ์œจ๊ณผ ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ์ž๋“ค์€ ์ž…์ถœ๋ ฅ ์žฅ์น˜๋ฅผ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Œ
    • ๋”ฐ๋ผ์„œ OS๊ฐ€ ์ž…์ถœ๋ ฅ ์ˆ˜ํ–‰์˜ ์ˆ˜๋‹จ์„ ์ œ๊ณต
  • ํŒŒ์ผ ์‹œ์Šคํ…œ ์กฐ์ž‘(File System Manipulation)

    • ํ”„๋กœ๊ทธ๋žจ์€ ํŒŒ์ผ ์ƒ์„ฑ, ์‚ญ์ œ ๋ฐ ํƒ์ƒ‰, ์ฝ๊ณ  ์“ฐ๊ธฐ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Œ.
    • ๋˜ํ•œ ํŒŒ์ผ ์†Œ์œ ๊ถŒ์— ๊ธฐ๋ฐ˜์„ ๋‘” ๊ถŒํ•œ ๊ด€๋ฆฌ๋ฅผ ์ด์šฉํ•ด ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ ‘๊ทผ์„ ํ—ˆ๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ์Œ
  • ํ†ต์‹ (Communication)

    • ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•ด์•ผํ•  ๋•Œ, OS๋Š” ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ(Shared Memory)๋‚˜ ๋ฉ”์‹œ์ง€ ํŒจ์‹ฑ(Message Passing)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
    • ํ›„์ž์˜ ๊ฒฝ์šฐ ์ •๋ณด์˜ ํŒจํ‚ท๋“ค์ด ์šด์˜์ฒด์ œ์— ์˜ํ•ด ํ”„๋กœ์„ธ์Šค ์‚ฌ์ด๋ฅผ ์ด๋™
  • ์˜ค๋ฅ˜ ํƒ์ง€(Error detection)

    • OS๋Š” CPU, ๋ฉ”๋ชจ๋ฆฌ ํ•˜๋“œ์›จ์–ด, ์ž…์ถœ๋ ฅ ์žฅ์น˜ ๋˜๋Š” ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ผ์–ด๋‚˜๋Š” ์˜ค๋ฅ˜๋ฅผ ํƒ์ง€ํ•˜๊ณ  ์ ๋‹นํ•œ ์กฐ์น˜๋ฅผ ์ทจํ•ด์•ผ ํ•จ

์‚ฌ์šฉ์ž์— ๋„์›€์„ ์ฃผ๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด ์•„๋‹ˆ๋ผ ์‹œ์Šคํ…œ ์ž์ฒด์˜ ํšจ์œจ์ ์ธ ๋™์ž‘์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์šด์˜์ฒด์ œ ๊ธฐ๋Šฅ๋“ค๋„ ์กด์žฌํ•œ๋‹ค.

  • ์ž์› ํ• ๋‹น(Resource Allocation)

    • ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๋‚˜ ๋‹ค์ˆ˜์˜ ์ž‘์—…๋“ค์ด ๋™์‹œ์— ์‹คํ–‰๋  ๋•Œ, ๊ฐ๊ฐ์— ์ž์›์„ ํ• ๋‹นํ•ด์ฃผ์–ด์•ผ ํ•จ
  • ํšŒ๊ณ„(Accounting)

    • ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ปดํ“จํ„ฐ ์ž์›์„ ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”์ง€ ์ถ”์ , ์‚ฌ์šฉ ํ†ต๊ณ„๋Š” ์ปดํ“จํŒ… ์„œ๋น„์Šค๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
  • ๋ณดํ˜ธ(Protection)์™€ ๋ณด์•ˆ(Security)

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


2.3 System Calls


System Call์€ ์šด์˜์ฒด์ œ์— ์˜ํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ๋œ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ํŠน์ • ์ €์ˆ˜์ค€ ์ž‘์—…์€ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑ๋˜์–ด์•ผ ํ•˜๋”๋ผ๋„ ์ด๋Ÿฌํ•œ ํ˜ธ์ถœ์€ ์ผ๋ฐ˜์ ์œผ๋กœ C์™€ C++ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ๋ฃจํ‹ด ํ˜•ํƒœ๋กœ ์ œ๊ณต๋œ๋‹ค.

image

๊ฐ„๋‹จํ•œ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๋„ ์šด์˜์ฒด์ œ์˜ ๊ธฐ๋Šฅ์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ๋Œ€๋ถ€๋ถ„์˜ ์‘์šฉ ๊ฐœ๋ฐœ์ž๋“ค์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค (API)์— ๋”ฐ๋ผ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค๊ณ„ํ•œ๋‹ค. API๋Š” ๊ฐ ํ•จ์ˆ˜์— ์ „๋‹ฌ๋˜์–ด์•ผ ํ•  ๋งค๊ฐœ๋ณ€์ˆ˜๋“ค๊ณผ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜ํ™˜ ๊ฐ’์„ ํฌํ•จํ•˜์—ฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜์˜ ์ง‘ํ•ฉ์„ ๋ช…์‹œํ•œ๋‹ค.

image

System call Interface๋Š” API ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์„ ๊ฐ€๋กœ์ฑ„ ํ•„์š”ํ•œ ์šด์˜์ฒด์ œ System call์„ ๋ถ€๋ฅธ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ System call์—๋Š” ๋ฒˆํ˜ธ๊ฐ€ ํ• ๋‹น๋˜๊ณ  System call Interface๋Š” ์ด ๋ฒˆํ˜ธ์— ๋”ฐ๋ผ ์ƒ‰์ธ๋˜๋Š” ํ…Œ์ด๋ธ”์„ ์œ ์ง€ํ•œ๋‹ค. ์ด๊ฒƒ์„ System call table์ด๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์˜ ๋ชจ์Œ์ด๋ฉฐ ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด์„ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ๋‹ค. System call Interface๋Š” ์˜๋„ํ•œ System call์„ ๋ถ€๋ฅด๊ณ  System call์˜ ์ƒํƒœ์™€ ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋Œ๋ ค์ค€๋‹ค.

์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์šด์˜์ฒด์ œ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  • Call by value: ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’ ์ž์ฒด๋ฅผ ๋ณต์‚ฌํ•ด ๋ ˆ์ง€์Šคํ„ฐ ๋‚ด์— ์ „๋‹ฌ
  • Call by reference: ๋ ˆ์ง€์Šคํ„ฐ๋ณด๋‹ค ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋” ๋งŽ์€ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์˜ ๋ธ”๋ก์ด๋‚˜ ํ…Œ์ด๋ธ”์— ์ €์žฅ๋˜๊ณ , ๋ธ”๋ก์˜ ์ฃผ์†Œ๊ฐ€ ๋ ˆ์ง€์Šคํ„ฐ ๋‚ด์— ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋จ
  • ํ”„๋กœ๊ทธ๋žจ์— ์˜ํ•ด ์Šคํƒ์— push, OS์— ์˜ํ•ด pop


2.4 System call ์œ ํ˜•


  • ํ”„๋กœ์„ธ์Šค ์ œ์–ด: end,abort,load,execute
  • ํŒŒ์ผ ๊ด€๋ฆฌ: create, delete, open, close, read, write
  • ์žฅ์น˜ ๊ด€๋ฆฌ: read, write, request, release
  • ์ •๋ณด ์œ ์ง€: get/set time/date
  • ํ†ต์‹ : send/recieve messages, transfer status
  • ๋ณดํ˜ธ


2.5 System Program


  • ์ปดํ“จํ„ฐ ๊ณ„์ธต ๊ตฌ์กฐ: ํ•˜๋“œ์›จ์–ด -> ์šด์˜์ฒด์ œ -> ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋žจ -> ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ

์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋žจ์€ ์‹œ์Šคํ…œ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋กœ๋„ ์•Œ๋ ค์ง„, ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ๊ณผ ์‹คํ–‰์„ ์œ„ํ•ด ๋ณด๋‹ค ํŽธ๋ฆฌํ•œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค.

  • ํŒŒ์ผ๊ด€๋ฆฌ, ์ƒํƒœ ์ •๋ณด, ํŒŒ์ผ ๋ณ€๊ฒฝ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด์ง€์›, ํ”„๋กœ๊ทธ๋žจ ์ ์žฌ์™€ ์ˆ˜ํ–‰, ํ†ต์‹ , ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค
  • ํ•ญ์ƒ ์‹คํ–‰๋˜๋Š” ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋žจ ํ”„๋กœ์„ธ์Šค-> ์„œ๋น„์Šค, ์„œ๋ธŒ์‹œ์Šคํ…œ, ๋””๋จผ(์—ฐ๊ฒฐ ๋ฐ›์„ ํ”„๋กœ์„ธ์Šค)
  • ๋ชจ๋‘ System call์„ ํ†ตํ•ด ๊ตฌํ˜„


2.6 ์šด์˜์ฒด์ œ ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„


์šด์˜์ฒด์ œ์˜ ์„ค๊ณ„ ๋ชฉํ‘œ

  • User: ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ , ๋ฐฐ์šฐ๊ธฐ ์‰ฝ๊ณ , Reliable, safe and fast
  • System: ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฝ๊ณ , ์—๋Ÿฌ๊ฐ€ ์—†์œผ๋ฉฐ ์ž์› ํšจ์œจ์ 

๊ธฐ๋ฒ•๊ณผ ์ •์ฑ…

  • ๊ธฐ๋ฒ•(Mechanism): ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€
  • ์ •์ฑ…(Policy): ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ธ๊ฐ€ -> ์žฅ์†Œ๊ฐ€ ๋ฐ”๋€Œ๊ฑฐ๋‚˜ ์‹œ๊ฐ„์ด ํ๋ฆ„์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Œ
    ์˜ˆ๋ฅผ ๋“ค๋ฉด ํƒ€์ด๋จธ ๊ตฌ์กฐ๋Š” CPU ๋ณดํ˜ธ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ•์ด์ง€๋งŒ, ํŠน์ • ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ํƒ€์ด๋จธ๋ฅผ ์–ผ๋งˆ๋‚˜ ์˜ค๋žซ๋™์•ˆ ์„ค์ •ํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ์ •์ฑ…์  ๊ฒฐ์ •์ด๋‹ค. ์ •์ฑ…๊ณผ ๊ธฐ๋ฒ•์˜ ๋ถ„๋ฆฌ๋Š” ์œตํ‰์„ฑ์„ ์œ„ํ•ด ์•„์ฃผ ์ค‘์š”ํ•˜๋‹ค. ์ •์ฑ…์˜ ๋ณ€๊ฒฝ์— ๋ฏผ๊ฐํ•˜์ง€ ์•Š์€ ์ผ๋ฐ˜์ ์ธ ๊ธฐ๋ฒ•์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.

์šด์˜์ฒด์ œ์˜ ๊ตฌํ˜„

์ปค๋„์˜ ๊ฐ€์žฅ ๋‚ฎ์€ ๋‹จ๊ณ„๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ๊ณ , ๊ทธ ๋ณด๋‹ค ๋†’์€ ๋‹จ๊ณ„์˜ ๋ฃจํ‹ด์€ C์–ธ์–ด, ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋žจ์€ C, C++ Python ๋˜๋Š” ์…ธ ์Šคํฌ๋ฆฝํŠธ์™€ ๊ฐ™์€ ์–ธ์–ด๋กœ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ๋‹ค. ์šด์˜์ฒด์ œ๊ฐ€ ๊ณ ๊ธ‰ ์ˆ˜์ค€ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์—ˆ์„ ๊ฒฝ์šฐ ์ด์‹(๋‹ค๋ฅธ ํ•˜๋“œ์›จ์–ด๋กœ ์˜ฎ๊ธฐ๋Š” ์ผ)์ด ํ›จ์”ฌ ์‰ฝ๋‹ค. ํ•˜์ง€๋งŒ ์†๋„๊ฐ€ ๋Š๋ฆฌ๊ณ  ์ €์žฅ ์žฅ์น˜๊ฐ€ ๋งŽ์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ๋‹ค. OS์˜ ์ฃผ์š” ์„ฑ๋Šฅ ํ–ฅ์ƒ์€ ์šฐ์ˆ˜ํ•œ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ์ฝ”๋“œ๋ณด๋‹ค๋Š” ์ข‹์€ ์ž๋ฃŒ ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฒฐ๊ณผ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค.


2.7 ์šด์˜์ฒด์ œ ๊ตฌ์กฐ


์•ž์˜ 1์žฅ์—์„œ ๋ฐฐ์› ๋˜ ์šด์˜์ฒด์ œ ๊ตฌ์กฐ(multiprogramming, Time sharing)์€ ์ผ๋ฐ˜์ ์ธ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์„ค๋ช…ํ•œ ๊ฒƒ, ์ด๋ฒˆ ์žฅ์—์„  ์ด๋Ÿฌํ•œ ์š”์†Œ๋“ค์ด ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ ์—ฐ๊ฒฐ๋˜๊ณ  ํ•˜๋‚˜์˜ ์ปค๋„๋กœ ๊ฒฐํ•ฉ๋˜๋Š”์ง€ ๋‹ค๋ฃฌ๋‹ค.

Simple Struture

image

ํ•˜๋“œ์›จ์–ด ์ž์ฒด๊ฐ€ ์ œํ•œ์ ์ด๋ฏ€๋กœ ํ•˜๋“œ์›จ์–ด์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ๋ฐ–์— ์—†์—ˆ๋‹ค.

MS-Dos

  • ์ตœ์†Œ์˜ ๊ณต๊ฐ„์— ์ตœ๋Œ€์˜ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•˜๋„๋ก ๊ตฌํ˜„๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“ˆ๋ณ„๋กœ ๊ตฌ๋ถ„๋˜์ง€ ์•Š์Œ
  • ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ธฐ๋Šฅ ๊ณ„์ธต์ด ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์ง€ ์•Š์Œ
  • ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ๊ณ ์žฅ๋‚˜๋ฉด ์‹œ์Šคํ…œ ์ „์ฒด๊ฐ€ ๊ณ ์žฅ

UNIX

  • ์ปค๋„๊ณผ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๊ตฌ์„ฑ
  • Monolitihc ๊ตฌ์กฐ: ์‹œ์Šคํ…œ ํ˜ธ์ถœ ์ธํ„ฐํŽ˜์ด์Šค ์•„๋ž˜์™€ ๋ฌผ๋ฆฌ์  ํ•˜๋“œ์›จ์–ด ์œ„์˜ ๋ชจ๋“  ๊ฒƒ์ด ์ปค๋„์ด๋ฏ€๋กœ ํ•˜๋‚˜์˜ ๊ณ„์ธต์œผ๋กœ ๊ฒฐํ•ฉํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ๊ธฐ๋Šฅ, ์™„๋ฒฝํ•˜๊ฒŒ ๊ณ„์ธตํ™”๋˜์ง€ ์•Š์Œ
  • ๊ตฌํ˜„, ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต์ง€๋งŒ, ์‹œ์Šคํ…œ ํ˜ธ์ถœ ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ์ปค๋„ ์•ˆ์—์„œ ํ†ต์‹ ํ•˜๋Š” ๊ฒฝ์šฐ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๊ฑฐ์˜ ์—†์œผ๋ฏ€๋กœ ์„ฑ๋Šฅ์ด ๋†’์Œ
  • UNIX, Linux, Window ์šด์˜์ฒด์ œ์—์„œ ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋Š” ์—ฌ์ „ํžˆ ๋‚จ์•„์žˆ์Œ

๊ณ„์ธต์  ์ ‘๊ทผ(Layered Approach)

image

  • ์‹œ์Šคํ…œ์„ ๋ชจ๋“ˆํ™”
  • ์šด์˜์ฒด์ œ ์ธต์€ ์ž๋ฃŒ ๊ตฌ์กฐ์™€ ์ƒ์œ„ ์ธต์—์„œ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋ฃจํ‹ด์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋จ
  • ๊ฐ€์žฅ ์•„๋ž˜ ๊ณ„์ธต์€ ํ•˜๋“œ์›จ์–ด, ๊ฐ€์žฅ ๋†’์€ ๊ณ„์ธต์€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค
  • ๊ฐ ์ธต์€ ์ž์‹ ๋ณด๋‹ค ํ•˜์œ„ ์ˆ˜์ค€์˜ ์ธต์— ์˜ํ•ด ์ œ๊ณต๋œ ์—ฐ์‚ฐ๋“ค๋งŒ ์‚ฌ์šฉํ•ด ๊ตฌํ˜„ํ•จ
  • ์žฅ์ : ํ•˜๋‚˜์˜ ๊ณ„์ธต๋งŒ ์‹ ๊ฒฝ์“ฐ๋ฉด ๋˜๋ฏ€๋กœ ๊ตฌํ˜„, ๋””๋ฒ„๊น…์ด ๊ฐ„๋‹จํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํŽธํ•จ
  • ๋‹จ์ : ์ธต์„ ์ ์ ˆํžˆ ์ •์˜ํ•˜๋Š” ๊ฒƒ์˜ ์–ด๋ ค์›€, ํšจ์œจ์„ฑ ๋‚ฎ์Œ. ๊ฐ ์ธต์€ System call์— ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉฐ System call์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ฒŒ ๋จ

๋งˆ์ดํฌ๋กœ ์ปค๋„(MicroKernal)

image

  • Mac OS์˜ ์ปค๋„(darwin)
  • ๋ณด๋‹ค ์ž‘์€ ์ปค๋„: ๋ชจ๋“  ์ค‘์š”์น˜ ์•Š์€ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ปค๋„๋กœ๋ถ€ํ„ฐ ์ œ๊ฑฐํ•˜๊ณ , ๊ทธ๊ฒƒ๋“ค์„ ์‹œ์Šคํ…œ ๋ฐ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๊ตฌํ˜„ํ•ด ์šด์˜์ฒด์ œ๋ฅผ ๊ตฌ์„ฑํ•จ
  • Message passing์— ์˜ํ•ด ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค ๊ฐ„์— ํ†ต์‹ ์„ ์ œ๊ณต
  • ์žฅ์ : ์šด์˜์ฒด์ œ์˜ ํ™•์žฅ์— ์šฉ์ดํ•จ. ์ƒˆ๋กœ์šด ์„œ๋น„์Šค๋Š” ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์— ์ถ”๊ฐ€๋˜๊ณ  ์ปค๋„์˜ ๋ณ€๊ฒฝ์ด ํ•„์š” ์—†์Œ -> ๋ณด๋‹ค ๋†’์€ ๋ณด์•ˆ์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ
  • ๋‹จ์ : ๊ฐ€์ค‘๋œ ์‹œ์Šคํ…œ ๊ธฐ๋Šฅ ์˜ค๋ฒ„ํ—ค๋“œ ๋•Œ๋ฌธ์— ์ข‹์ง€ ์•Š์€ ์„ฑ๋Šฅ

๋ชจ๋“ˆ(Modules)

image

  • ์ปค๋„์€ ํ•ต์‹ฌ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๋‹ค๋ฅธ ์„œ๋น„์Šค๋“ค์€ ์ปค๋„์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๋™์ ์œผ๋กœ ๊ตฌํ˜„, ์„œ๋น„์Šค๋ฅผ ๋™์ ์œผ๋กœ ๋งํฌํ•จ
  • ์ปค๋„์˜ ๊ฐ ๋ถ€๋ถ„์ด ์ •์˜๋˜๊ณ  ๋ณดํ˜ธ๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ง€๋Š” ์ ์€ ๊ณ„์ธต ๊ตฌ์กฐ์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๋ชจ๋“ˆ์—์„œ ์ž„์˜์˜ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋” ์œ ์—ฐํ•จ
  • ์ค‘์‹ฌ ๋ชจ๋“ˆ์€ ํ•ต์‹ฌ ๊ธฐ๋Šฅ๋งŒ ๊ฐ€์ง€๊ณ , ๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ ์ ์žฌ ๋ฐฉ๋ฒ•๊ณผ ํ†ต์‹  ๋ฐฉ๋ฒ•์„ ์•ˆ๋‹ค๋Š” ์ ์€ ๋งˆ์ดํฌ๋กœ ์ปค๋„๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ํ†ต์‹ ์„ ์œ„ํ•ด Message passing์ด ํ•„์š”์—†์œผ๋ฏ€๋กœ ๋” ํšจ์œจ์ ์ž„
  • ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•, ์œˆ๋„์šฐ์˜ .dll ํŒŒ์ผ

Hybrid System

  • ๋Œ€๋ถ€๋ถ„์˜ OS๋Š” ๋‹ค์–‘ํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฒฐํ•ฉํ•œ ๊ตฌ์กฐ
  • Linux, Solaris: ์šด์˜์ฒด์ œ๊ฐ€ ์ „๋ถ€ ํ•˜๋‚˜์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์— ์กด์žฌํ•˜๋Š” ๋ชจ๋†€๋ฆฌ์‹ ๊ตฌ์กฐ์ด์ง€๋งŒ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ๋™์ ์œผ๋กœ ์ปค๋„์— ์ถ”๊ฐ€
  • Window: ์„ฑ๋Šฅ ์ƒ ์ด์œ ๋กœ ๋Œ€์ฒด๋กœ ๋ชจ๋†€๋ฆฌ์‹ ๊ตฌ์กฐ์ด์ง€๋งŒ ์„œ๋ธŒ์‹œ์Šคํ…œ์„ ๋งˆ์ดํฌ๋กœ์ปค๋„ ํ˜•ํƒœ๋กœ ์œ ์ง€, ๋ชจ๋“ˆ๋„ ์ง€์›
  • MacOS: Hybrid System, ์ปค๋„์˜ ํ•ต์‹ฌ๋งŒ ๋‚จ๊ธฐ๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋”ฐ๋กœ ๊ตฌํ˜„


2.8 ์šด์˜์ฒด์ œ ๋””๋ฒ„๊น…


๋””๋ฒ„๊น…

  • ํ•˜๋“œ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ์˜ ์‹œ์Šคํ…œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ์ˆ˜์ •
  • ์‹œ์Šคํ…œ ์ฒ˜๋ฆฌ ์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์ œ๊ฑฐ ํ•ด ์„ฑ๋Šฅ ํ–ฅ์ƒ์‹œํ‚ค๋ ค๋Š” ์„ฑ๋Šฅ ์กฐ์ •๋„ ํฌํ•จ

์žฅ์•  ๋ถ„์„

  • OS๋Š” ์—๋Ÿฌ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด logfile ์ƒ์„ฑ
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์บก์ณํ•œ ์ฝ”์–ด ๋คํ”„ ํŒŒ์ผ๋กœ ์ €์žฅ -> ๋””๋ฒ„๊ฑฐ์— ์˜ํ•ด ๊ฒ€์‚ฌ
  • Crush dump: ์ปค๋„ ์žฅ์• (Crash) ๋˜ํ•œ ๊ธฐ๋ก๋˜๊ณ  ์ €์žฅ
  • Core dump์™€ Crush dump๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋„๊ตฌ์™€ ๊ธฐ๋ฒ•์œผ๋กœ ๋””๋ฒ„๊น…

์„ฑ๋Šฅ ์กฐ์ •(Performance Tuning)

  • ๋ณ‘๋ชฉ ์ง€์  ์ œ๊ฑฐ
  • ์ž‘์—…๊ด€๋ฆฌ์ž: ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ๊ฐ์‹œ

DTrace

  • ์‹คํ–‰์ค‘์ธ ์‹œ์Šคํ…œ, ํ”„๋กœ์„ธ์Šค์™€ ์ปค๋„์— ๋™์ ์œผ๋กœ ํƒ์ƒ‰์  ์ถ”๊ฐ€
  • ๋™์ ์ด๊ณ  ์•ˆ์ „ํ•˜๋ฉฐ ๋‚ฎ์€ ์˜ํ–ฅ๋ ฅ์„ ๋ฏธ์น˜๋Š” ๋””๋ฒ„๊น… ํ™˜๊ฒฝ ์ œ๊ณต


2.9 ์šด์˜์ฒด์ œ ์ƒ์„ฑ


์šด์˜์ฒด์ œ๋Š” ๋ณดํ†ต ๋””์Šคํฌ๋‚˜ CD-ROM, DVD-ROM ๋˜๋Š” ISO ์ด๋ฏธ์ง€๋กœ ๋ฐฐํฌ๋œ๋‹ค. ISO ์ด๋ฏธ์ง€๋Š” CD-ROM ๋˜๋Š” DVD-ROM์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๋Š” ํŒŒ์ผ์„ ๋งํ•œ๋‹ค.

์‹œ์Šคํ…œ ์ƒ์„ฑ, SYSGEN

  • ์‹œ์Šคํ…œ์˜ ๊ฐ ํŠน์ • ์ปดํ“จํ„ฐ ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•ด ๊ตฌ์„ฑ๋˜๊ฑฐ๋‚˜ ์ƒ์„ฑ๋˜๋Š” ์ ˆ์ฐจ
  • ํ•˜๋“œ์›จ์–ด System์˜ ํŠน์ • ๊ตฌ์„ฑ์˜ ์ •๋ณด๋ฅผ ์–ป์Œ
  • ์ปค๋„ ๋˜๋Š” ์„ฑ๋Šฅ ์กฐ์ • ๋นŒ๋“œ๋ฅผ ์œ„ํ•ด ์“ฐ์ž„


2.10 ์‹œ์Šคํ…œ ๋ถ€ํŠธ


BootStrap

  • ์ž‘์€ ํฌ๊ธฐ์˜ ์ฝ”๋“œ๋กœ, ์ปค๋„์„ ์ฐพ๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•˜๊ณ  ์ˆ˜ํ–‰
  • ์šด์˜์ฒด์ œ์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘๊ฑฐ๋‚˜ ๊ฐ„๋‹จํ•œ ๊ฒฝ์šฐ ๋น„ํœ˜๋ฐœ์„ฑ์ธ ROM์— ์ €์žฅ
  • ๋ฌธ์ œ์ : ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์นฉ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•จ -> EEPROM์— ์ €์žฅํ•˜์—ฌ ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๋ช…๋ น์–ด๊ฐ€ ์ฃผ์–ด์ง€๊ธฐ ์ „๊นŒ์ง€๋Š” ์ฝ๊ธฐ ์ „์šฉ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•จ
  • Firmware: ํ•˜๋“œ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ค‘๊ฐ„์  ํŠน์„ฑ์„ ๊ฐ€์ง€๋Š” ROM์˜ ๋ชจ๋“  ํ˜•ํƒœ, RAM์—์„œ ์‹คํ–‰์‹œํ‚ฌ ๋•Œ๋ณด๋‹ค ์‹คํ–‰ ์†๋„๊ฐ€ ๋–จ์–ด์ง€๋ฏ€๋กœ OS๋ฅผ firmware์— ์ €์žฅํ•˜๊ณ  ์‹คํ–‰ ์‹œ์—” RAM์œผ๋กœ ๋ณต์‚ฌํ•˜์—ฌ ์‹คํ–‰ํ•จ
  • ๋Œ€๋ถ€๋ถ„์˜ ์‹œ์Šคํ…œ์—์„œ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ๋กœ๋”๋Š” Firmware์— ์žˆ๊ณ  ์šด์˜์ฒด์ œ๋Š” ๋””์Šคํฌ์— ์กด์žฌํ•จ