โ† Articles

๐Ÿฆ• ๊ณต๋ฃก์ฑ…์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ์šด์˜์ฒด์ œ Ch.1

Overview

Table of Contents

Abraham Silberschatz์˜ Operating System Concepts๋Š” ์šด์˜์ฒด์ œ์˜ ๋ฐ”์ด๋ธ”๋กœ ๋ถˆ๋ฆฐ๋‹ค. ์ด๋ฒˆ์— ์šด์˜์ฒด์ œ ์ˆ˜์—…์„ ๋“ค์œผ๋ฉด์„œ Operating System Concepts 9th Edition์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

Ch.1์€ ์ฑ… ์ „์ฒด ๋‚ด์šฉ์ด ๋‹ด๊ฒจ์žˆ๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ฑ•ํ„ฐ๋‹ค. ์ด ๋ถ€๋ถ„์„ ์ œ๋Œ€๋กœ ์ •๋…ํ•˜๊ณ  ์ฑ…์„ ์ฝ์œผ๋ฉด ํ›จ์”ฌ ์ฝ๊ธฐ ์ˆ˜์›”ํ•˜๋‹ค.

What Operating Systems Do

์šด์˜์ฒด์ œ(Operating System)๋Š” ์ปดํ“จํ„ฐ์˜ ํ•˜๋“œ์›จ์–ด๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ํ•˜๋“œ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด, ์‚ฌ์šฉ์ž๋ฅผ ๋งค๊ฐœํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ์ปค๋„(Kernel)์€ ์šด์˜์ฒด์ œ์˜ ํ•ต์‹ฌ์ด๋ฉฐ, ์‹ค์ฒด๋‹ค. ์šด์˜์ฒด์ œ๋Š” ์ปค๋„๊ณผ ์ปค๋„ ๋ชจ๋“ˆ(Kernel module)๋“ค๋กœ ๊ตฌ์„ฑ๋˜๋Š”๋ฐ, ์ปค๋„์ด ์šด์˜์ฒด์ œ์˜ ํ•ต์‹ฌ์ด๋‹ค๋ณด๋‹ˆ ์ผ๋ฐ˜์ ์œผ๋กœ ์šด์˜์ฒด์ œ์™€ ์ปค๋„์€ ๋™์ผ์‹œ ๋œ๋‹ค. ์ปค๋„์ด ๊ฐ™๋‹ค๋ฉด ๊ฐ™์€ ์šด์˜์ฒด์ œ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.

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

User View

์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž๋Š” ์ปดํ“จํ„ฐ ์•ž์— ์•‰์•„ ํ‚ค๋ณด๋“œ์™€ ๋งˆ์šฐ์Šค๋ฅผ ์กฐ์ž‘ํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ ์šด์˜์ฒด์ œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ปดํ“จํ„ฐ ์ž์› ์‚ฌ์šฉ(Resource utilization)์„ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ฒŒ ๋„์šฐ๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ์ปดํ“จํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž๋Š” ๋ฉ”์ธํ”„๋ ˆ์ž„(Mainframe)์— ์—ฐ๊ฒฐ๋œ ํ„ฐ๋ฏธ๋„์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋ฏธ๋‹ˆ์ปดํ“จํ„ฐ(Minicomputer)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ์ƒํ™ฉ์—์„œ๋Š” ์ปดํ“จํ„ฐ์˜ ์ž์›์„ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋‚˜๋ˆ ์“ฐ๊ฒŒ ๋˜๋Š”๋ฐ, ์šด์˜์ฒด์ œ๋Š” ์‚ฌ์šฉ์ž๋“ค์ด ์ž์›์„ ๊ณตํ‰ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š”๋‹ค.

System View

์‹œ์Šคํ…œ์—๊ฒŒ ์šด์˜์ฒด์ œ๋Š” ์ž์› ํ• ๋‹น์ž(Resource allocator)๋‹ค. ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์€ CPU ์‹œ๊ฐ„, ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„, ํŒŒ์ผ ์ €์žฅ์†Œ ๊ณต๊ฐ„, ์ž…์ถœ๋ ฅ ์žฅ์น˜ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค. ์šด์˜์ฒด์ œ๋Š” ์ด๋Ÿฌํ•œ ์ปดํ“จํ„ฐ ์ž์›๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ์ œ์–ด ํ”„๋กœ๊ทธ๋žจ(Control program)์œผ๋กœ์„œ ๋™์ž‘ํ•œ๋‹ค.

Computer-System Organization

ํ˜„๋Œ€์˜ ์ผ๋ฐ˜์ ์ธ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ CPU์™€ ์žฅ์น˜ ์ปจํŠธ๋กค๋Ÿฌ(Device controllers)๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋“ค์€ ๊ณตํ†ต๋ฒ„์Šค(Commmon bus)๋กœ ์ด์–ด์ ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•œ๋‹ค.

               disks     mouse, keyborad, printer     monitor
                 |                   |                   |
+-----+ +--------+--------+ +--------+-------+ +---------+--------+
| CPU | | disk controller | | USB controller | | graphics adapter |
+--+--+ +--------+--------+ +--------+-------+ +---------+--------+
   |             |                   |                   |
   +-------------+---------+---------+-------------------+
                           |
                       +---+----+
                       | memory |
                       +--------+

Computer Startup

์ปดํ“จํ„ฐ๋ฅผ ์ผœ๋ฉด ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ํ”„๋กœ๊ทธ๋žจ(Bootstrap program)์ด๋ผ๋Š” ์ดˆ๊ธฐํ™” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋œ๋‹ค. ์ด ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํ“จํ„ฐ์˜ ROM(Read-Only Memory)์ด๋‚˜ EEPROM(Electrically Erasable Programmable Read-Only Memory)์— ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ฃผ๋กœ ํŽŒ์›จ์–ด(Firmware)๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ํ”„๋กœ๊ทธ๋žจ์€ ์‹œ์Šคํ…œ์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ๋ถ€ํŠธ๋กœ๋”(Boot loader)๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. (๋ฉ€ํ‹ฐ๋ถ€ํŒ… ์ปดํ“จํ„ฐ์˜ ๊ฒฝ์šฐ ๋ถ€ํŠธ๋กœ๋”๊ฐ€ ์—ฌ๋Ÿฌ ์šด์˜์ฒด์ œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š”๋ฐ, ์ด ๊ฒฝ์šฐ์—” ์–ด๋–ค ์šด์˜์ฒด์ œ๋ฅผ ์‹คํ–‰ํ• ์ง€ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค.) ๊ทธ๋ฆฌ๊ณ  ๋ถ€ํŠธ๋กœ๋”๋Š” ์ตœ์ข…์ ์œผ๋กœ ์šด์˜์ฒด์ œ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

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

Computer-System Operation

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

CPU     user          |                |                |          |
        process       |                |                |          |
        executing ----|----------------|--+  +----------|----------|--+    +-----
                      |                |  |  |          |          |  |    |
        I/O interrupt |                |  +--+          |          |  +----+
        processing    |                |                |          |
                      |                |                |          |
I/O     idle      ----|---+            +----------------|--+       +-------------
device                |   |            |                |  |       |
        transferring  |   +------------+                |  +-------+
                      |                |                |          |
======================+================+================+==========+=============
                      I/O              transfer         I/O        transfer
                      request          done             request    done

์ธํ„ฐ๋ŸฝํŠธ๋Š” ํ•˜๋“œ์›จ์–ด๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด์— ์˜ํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์†Œํ”„ํŠธ์›จ์–ด์— ์˜ํ•ด ๋ฐœ์ƒํ•˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ๋Š” ํŠธ๋žฉ(Trap)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํ•˜๋“œ์›จ์–ด์˜ ๊ฒฝ์šฐ ์‹œ์Šคํ…œ ๋ฒ„์Šค(System bus)๋ฅผ ํ†ตํ•ด CPU์— ์‹ ํ˜ธ๋ฅผ ๋ณด๋ƒ„์œผ๋กœ์จ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ณ , ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์‹œ์Šคํ…œ ์ฝœ(System call)์ด๋ผ๋Š” ํŠน๋ณ„ํ•œ ๋ช…๋ น์œผ๋กœ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

Common Functions of Interrupts

๋ณดํ†ต ์ปดํ“จํ„ฐ๋Š” ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ, ๋งŒ์•ฝ CPU๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ ์‹ ํ˜ธ๋ฅผ ๋ฐ›์œผ๋ฉด, ์•ž์„œ ๋งํ–ˆ๋“ฏ์ด ํ•˜๋˜ ์ผ์„ ์ž ์‹œ ๋ฉˆ์ถ”๊ณ  ๋ฉ”๋ชจ๋ฆฌ์˜ ์–ด๋–ค ๊ณ ์ •๋œ ์œ„์น˜(Fixed location)๋ฅผ ์ฐพ๋Š”๋‹ค. ์ด ์œ„์น˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ(Interrupt vector)์— ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ๋Š” ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค ๋ฃจํ‹ด(Service routine)๋“ค์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ณต๊ฐ„์œผ๋กœ, ํŒŒ์ผ ์ฝ๊ธฐ/์“ฐ๊ธฐ์™€ ๊ฐ™์€ ์ค‘์š”ํ•œ ๋™์ž‘๋“ค์ด ํ•˜๋“œ์ฝ”๋”ฉ๋˜์–ด ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ ๋‚˜๋ฉด CPU๋Š” ๋‹ค์‹œ ์›๋ž˜ ์ž‘์—…์œผ๋กœ ๋Œ์•„์˜จ๋‹ค. ์ด ๊ณผ์ •์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆˆ์น˜์ฑ„์ง€ ๋ชปํ•  ์ •๋„๋กœ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ผ์–ด๋‚  ์ˆ˜๋„ ์žˆ๊ณ , ๋„ˆ๋ฌด ๋Š๋ ค์„œ ์˜ค๋žœ ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ฐธ๊ณ ๋กœ ์–ด๋–ค ๊ฐ’์„ 0์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ(Division by zero)๋„ ์ธํ„ฐ๋ŸฝํŠธ์ด๋ฉฐ, ์ด๋Ÿฌํ•œ ๋‚ด๋ถ€ ์ธํ„ฐ๋ŸฝํŠธ(Internal interrupt)๋Š” ์˜ˆ์™ธ(Exception)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

Interrupt Handling

ํ˜„๋Œ€ ์šด์˜์ฒด์ œ๋“ค์€ ๋Œ€๋ถ€๋ถ„ ์ธํ„ฐ๋ŸฝํŠธ ์ฃผ๋„์ (Interrupt driven)์ด๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์ „๊นŒ์ง€ CPU๋Š” ๋Œ€๊ธฐ์ƒํƒœ์— ๋จธ๋ฌธ๋‹ค. ๋ฐ˜๋ฉด ํด๋ง(Polling)์˜ ๊ฒฝ์šฐ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ด๋ฒคํŠธ๋ฅผ ๊ฐ์‹œํ•ด ์ฒ˜๋ฆฌ ๋ฃจํ‹ด์„ ์‹คํ–‰ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ปดํ“จํŒ… ์ž์›์„ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ธํ„ฐ๋ŸฝํŠธ ์ฃผ๋„์ ์œผ๋กœ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

Storage Structure

์ปค๋„์€ ์‹คํ–‰๊ธฐ(Executor)๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚จ๋‹ค. ์‹คํ–‰๊ธฐ๋Š” ๊ธฐ์–ต์žฅ์น˜(Storage)์—์„œ exeํŒŒ์ผ(Windows์˜ ๊ฒฝ์šฐ)์„ ๊ฐ€์ ธ์˜ค๊ณ , ์ปค๋„์ด ์ด๊ฒƒ์„ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹นํ•ด ์‹คํ–‰์‹œํ‚จ๋‹ค. ์ด์ฒ˜๋Ÿผ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋˜์–ด ์‹คํ–‰๋˜๋ฉฐ, ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ณดํ†ต RAM(Random-Access Memory)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํ•˜์ง€๋งŒ RAM์€ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ด๊ธฐ์—” ๋„ˆ๋ฌด ์ž‘๊ณ  ๋น„์‹ธ๋‹ค. ๋˜ํ•œ ์ „์›์ด ๋‚˜๊ฐ€๋ฉด ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์‚ฌ๋ผ์ง€๋Š” ํœ˜๋ฐœ์„ฑ(Volatile) ์žฅ์น˜๋‹ค. ๊ทธ๋ž˜์„œ ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜(Secondary storage)๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ž๊ธฐํ…Œ์ดํ”„(Magnetic tapes), ๊ด‘ํ•™๋””์Šคํฌ(Optical disk), ์ž๊ธฐ๋””์Šคํฌ(Magnetic disk), SSD(Soli-State Disk)๋Š” ๋น„ํœ˜๋ฐœ์„ฑ(Non-volatile) ๊ธฐ์–ต์žฅ์น˜๋‹ค. ๋ฐ˜๋ฉด ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ, ์บ์‹œ(Cache), ๋ ˆ์ง€์Šคํ„ฐ(Registers)๋Š” ํœ˜๋ฐœ์„ฑ ๊ธฐ์–ต์žฅ์น˜๋‹ค. ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜๋Š” ์šฉ๋Ÿ‰์ด ํฌ๊ณ  ์ €๋ ดํ•œ ๋ฐ˜๋ฉด, ์บ์‹œ๋‚˜ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์šฉ๋Ÿ‰์ด ์ž‘๊ณ  ๋น„์‹ธ๋‹ค. (๊ณตํ•™๋„์—๊ฒ ๊ฐ€๊ฒฉ์ด ์ค‘์š”ํ•˜๋‹ค.)

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

I/O Structure

๊ธฐ์–ต์žฅ์น˜๋Š” ์—ฌ๋Ÿฌ ์ž…์ถœ๋ ฅ์žฅ์น˜(I/O devices) ์ค‘ ํ•˜๋‚˜์ผ ๋ฟ์ด๋‹ค. ์ปดํ“จํ„ฐ๋Š” ๋‹ค์–‘ํ•œ ์ž…์ถœ๋ ฅ ์žฅ์น˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ž…์ถœ๋ ฅ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๊ฐ๊ฐ ๋‹ค๋ฅธ ์žฅ์น˜๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค. ์ปดํ“จํ„ฐ๋Š” ์ด ์ปจํŠธ๋กค๋Ÿฌ ๋•๋ถ„์— ๋‹ค์–‘ํ•œ ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์šด์˜์ฒด์ œ๋Š” ๊ฐ ์žฅ์น˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ์žฅ์น˜ ๋“œ๋ผ์ด๋ฒ„(Device driver)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

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

์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์€ ์ปค๋„๊ณผ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์„ ๋งค๊ฐœํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ธ ์‹œ์Šคํ…œ ์ฝœ(System call)์„ ํ†ตํ•ด ์ž…์ถœ๋ ฅ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค.

Direct Memory Access Structure

๊ณผ๊ฑฐ์—๋Š” ์žฅ์น˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด CPU๋ฅผ ๊ฑฐ์ณ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ์œผ๋‚˜, CPU ์ž์›์ด ๋„ˆ๋ฌด ๋งŽ์ด ์†Œ๋ชจ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์   DMA(Direct Memory Access)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. DMA๋Š” ์žฅ์น˜์™€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ง์ ‘ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ๋ฒ„์Šค๊ฐ€ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์˜ ์ผ์ • ๋ถ€๋ถ„์€ DMA์— ์‚ฌ์šฉ๋  ์˜์—ญ์œผ๋กœ ์ง€์ •๋˜๋ฉฐ, DMA๋ฅผ ์ œ์–ดํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋Š” DMA ์ปจํŠธ๋กค๋Ÿฌ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ฐธ๊ณ ๋กœ CPU๋ฅผ ๊ฑฐ์น˜๋Š” ๋ฐฉ์‹์€ PIO(Programmed I/O)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์žฅ์น˜์˜ ๋ฐ์ดํ„ฐ๋Š” ์žฅ์น˜ ์ปจํŠธ๋กค๋Ÿฌ์— ์˜ํ•ด ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ์— ์ „๋‹ฌ๋˜๋ฉฐ, CPU์—์„œ๋Š” ๋ฐ์ดํ„ฐ ์ด๋™์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ์ธํ„ฐ๋ŸฝํŠธ๋งŒ ํ•œ ๋ฒˆ ์ผ์–ด๋‚œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฒฐ๊ณผ์ ์œผ๋กœ CPU๊ฐ€ ํ•˜๋Š” ์ผ์ด ์ค„์–ด๋“œ๋‹ˆ๊นŒ ์„ฑ๋Šฅ์ด ์ข‹์•„์ง„๋‹ค.

Computer-System Architecture

ํ˜„๋Œ€ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํฐ ๋…ธ์ด๋งŒ ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฅธ๋‹ค.

CPU (*N)                                                                        Memory
+------------------------------+-------+<-instruction execution cycle->+--------------+
| thread of execution          | cache |                              |              |
+---+--------------------------+-------+<--------data movement------->|              |
    |           ^        ^                                            |              |
    | I/O       | data   | interrupt                                  | instructions |
    | request   |        |                                            | and data     |
    v           v        |                                            |              |
+------------------------+-------------+                              |              |
| device (*M)                          |<-------------DMA------------>|              |
+--------------------------------------+                              +--------------+

Single-Processor Systems

๊ณผ๊ฑฐ ๋Œ€๋ถ€๋ถ„์˜ ์ปดํ“จํ„ฐ๋Š” ์‹ฑ๊ธ€ ํ”„๋กœ์„ธ์„œ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ์‹ฑ๊ธ€ ํ”„๋กœ์„ธ์„œ ์ปดํ“จํ„ฐ์—๋Š” ํ•˜๋‚˜์˜ ๋ฉ”์ธ CPU๋งŒ ํƒ‘์žฌ๋˜๋ฉฐ, ์žฅ์น˜์— ๋”ฐ๋ผ ํŠน๋ณ„ํ•œ ๋ชฉ์ ์„ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์„œ๊ฐ€ ๋“ค์–ด๊ฐ”๋‹ค. ๊ฐ€๋ น ๋””์Šคํฌ ํ”„๋กœ์„ธ์„œ๋Š” ๋””์Šคํฌ ์—ฐ์‚ฐ๋งŒ ์ˆ˜ํ–‰ํ•˜๊ณ , ํ‚ค๋ณด๋“œ ํ”„๋กœ์„ธ์„œ๋Š” ํ‚ค๋ณด๋“œ ์—ฐ์‚ฐ๋งŒ ์ˆ˜ํ–‰ํ•˜๋Š” ์‹์ด๋‹ค.

Multiprocessor Systems

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ ์‹œ์Šคํ…œ์€ ์ด์   ์ผ๋ฐ˜์ ์ธ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์ด ๋˜์—ˆ๋‹ค. ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ ์ปดํ“จํ„ฐ๋Š” 2๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์„œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ์„œ๋ฒ„ ์ปดํ“จํ„ฐ์— ์ฒ˜์Œ ์ ์šฉ๋๋Š”๋ฐ, ์ง€๊ธˆ์€ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ๋„ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ ์‹œ์Šคํ…œ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค. ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ ์‹œ์Šคํ…œ์€ ๋ช‡๊ฐ€์ง€ ์žฅ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

  1. ์ฒ˜๋ฆฌ๋Ÿ‰(Throughput)์˜ ์ฆ๊ฐ€: ๋‹น์—ฐํ•˜๊ฒ ์ง€๋งŒ ํ”„๋กœ์„ธ์„œ๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด ๋” ๋น ๋ฅธ ์‹œ๊ฐ„ ์•ˆ์— ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌผ๋ก  ํ”„๋กœ์„ธ์„œ๋ฅผ ๊ณ„์† ๋Š˜๋ฆฐ๋‹ค๊ณ  ์„ฑ๋Šฅ์ด ํ•œ์—†์ด ์ข‹์•„์ง€๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ, ์ฆ๊ฐ€ ๋น„์œจ์ด 1:1์ธ ๊ฒƒ๋„ ์•„๋‹ˆ๋‹ค.
  2. ๊ทœ๋ชจ์˜ ๊ฒฝ์ œ: ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ ์‹œ์Šคํ…œ์€ ์—ฌ๋Ÿฌ ๋Œ€์˜ ์‹ฑ๊ธ€ ํ”„๋กœ์„ธ์„œ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ˆ์ด ์ ๊ฒŒ ๋“ ๋‹ค. ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ ์‹œ์Šคํ…œ์€ ์ฃผ๋ณ€์žฅ์น˜(Peripherals)๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  3. ์‹ ๋ขฐ์„ฑ์˜ ์ฆ๊ฐ€: ๋งŒ์•ฝ ๊ธฐ๋Šฅ์ด ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์„œ์— ๋ถ„์‚ฐ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์„œ๊ฐ€ ์ž‘๋™์„ ๋ฉˆ์ถฐ๋„ ์ „์ฒด ์‹œ์Šคํ…œ์€ ๋Š๋ ค์งˆ ๋ฟ ๋ฉˆ์ถ”์ง€ ์•Š๋Š”๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ์„ฑ๋Šฅ์ด ๋‚˜๋น ์ง€์ง€๋งŒ ์ž‘๋™์€ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ์šฐ์•„ํ•œ ์„ฑ๋Šฅ์ €ํ•˜(Graceful degradation)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ ์„ฑ๋Šฅ์„ ์ €ํ•˜ํ•จ์œผ๋กœ์จ ์ž‘์—…์„ ๊ณ„์† ์œ ์ง€ํ•˜๋Š” ์‹œ์Šคํ…œ์„ ์žฅ์•  ํ—ˆ์šฉ ์‹œ์Šคํ…œ(Fault tolerant)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ ์ปดํ“จํ„ฐ๋Š” 2๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์„œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ ์‹œ์Šคํ…œ์€ ๋น„๋Œ€์นญ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ(Asymmetric multiprocessing)๊ณผ ๋Œ€์นญ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ(Symmetric multiprocessing) ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค. ๋น„๋Œ€์นญ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์€ ๊ด€๋ฃŒ์ฃผ์˜์ ์ธ ํšŒ์‚ฌ๋‹ค. ๋ณด์Šค ํ”„๋กœ์„ธ์„œ(Boss processor)๊ฐ€ ์‹œ์Šคํ…œ์„ ์ œ์–ดํ•˜๊ณ , ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์„œ๋“ค์€ ๋ณด์Šค์˜ ์ง€์‹œ๋ฅผ ๋ฐ›๊ฒŒ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ถ€ํ•˜ ๋ถ„์‚ฐ(Load balancing)์„ ํšจ์œจ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋Œ€์‹  ๋ณด์Šค ํ”„๋กœ์„ธ์„œ๊ฐ€ ์ž‘๋™์„ ๋ฉˆ์ถ”๋ฉด ์ผ๊พผ ํ”„๋กœ์„ธ์„œ๋“ค๋„ ๋ฉˆ์ถ”๊ฒŒ ๋œ๋‹ค. ๋Œ€์นญ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์€ ๋ณด์Šค๊ฐ€ ์—†๋Š” ์ž์œ ๋กœ์šด ํšŒ์‚ฌ๋‹ค. ๋ชจ๋“  ํ”„๋กœ์„ธ์„œ๋“ค์€ ํ•˜๋‚˜์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๊ณ , ๋™์ผํ•œ ์ž‘์—…์„ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋งŒ์•ฝ ํ”„๋กœ์„ธ์„œ์— ์ด์ƒ์ด ์ƒ๊ฒจ ์ž‘๋™์„ ๋ฉˆ์ถฐ์•ผ ํ•œ๋‹ค๋ฉด ์ž์‹ ์ด ์ˆ˜ํ–‰ํ•˜๋˜ ์ž‘์—…์„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์„œ๋“ค์—๊ฒŒ ๋‚˜๋ˆ ์ฃผ๊ณ  ์ž์‹ ๋งŒ ์žฌ๋ถ€ํŒ…ํ•œ๋‹ค. ์žฌ๋ถ€ํŒ… ํ›„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค๋ฉด ๋‹ค์‹œ ์ž‘์—…์„ ๋‚˜๋ˆ  ๋ฐ›๋Š”๋‹ค. ๋น„๋Œ€์นญ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ ์‹œ์Šคํ…œ์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ๋Š” ์•„ํ‚คํ…์ฒ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์€ ๋Œ€์นญ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ ์‹œ์Šคํ…œ์˜ CPU๋“ค์€ ๊ฐ์ž์˜ ๋ ˆ์ง€์Šคํ„ฐ์™€ ์บ์‹œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค. ๋งŒ์•ฝ CPU๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋ผ๋ฉด ๋Œ์•„๊ฐ€๋ฉด์„œ ์ž‘์—…์„ ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๊ทธ๋Ÿฌ๋ฉด ๋‹ค๋ฅธ CPU๊ฐ€ ์ž‘์—…์„ ํ•˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ CPU๋“ค์€ ๋†€๊ฒŒ ๋œ๋‹ค.

+---------------+  +---------------+  +---------------+
| CPU 0         |  | CPU 1         |  | CPU 2         |
| +-----------+ |  | +-----------+ |  | +-----------+ |
| | registers | |  | | registers | |  | | registers | |
| +-----+-----+ |  | +-----+-----+ |  | +-----+-----+ |
|       |       |  |       |       |  |       |       |
| +-----+-----+ |  | +-----+-----+ |  | +-----+-----+ |
| |   cache   | |  | |   cache   | |  | |   cache   | |
| +-----+-----+ |  | +-----+-----+ |  | +-----+-----+ |
|       |       |  |       |       |  |       |       |
+-------+-------+  +-------+-------+  +-------+-------+
        |                  |                  |
        +------------------+------------------+
                           |
                       +---+----+
                       | memory |
                       +--------+

A Dual-Core Design

CPU๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด ํ”„๋กœ์„ธ์„œ๊ฐ„ ํ†ต์‹ ์„ ํ•˜๋Š” ๋ฐ ๋งŽ์€ ๋น„์šฉ์ด ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ด ๊ณ„์† ์ข‹์•„์ง€์ง€๋Š” ์•Š๋Š”๋‹ค. x์ถ•์„ CPU ์ˆ˜, y์ถ•์„ ์„ฑ๋Šฅ์ด๋ผ๊ณ  ํ•˜๋ฉด ๊ทธ๋ž˜ํ”„๋Š” ๋กœ๊ทธํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค. ์กฐ๋ณ„ ๊ณผ์ œ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž. ๋‚ด ์•„์ดํ 150, ๋„ค ์•„์ดํ 150์„ ํ•ฉ์น˜๋ฉด ์ด 300์ด์ง€๋งŒ, ๋จธ๋ฆฌ๊ฐ€ ๋งŽ๋‹ค๊ณ  ์ข‹์€ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์‚ฌ๋žŒ์ด ๋Š˜์–ด๋‚ ์ˆ˜๋ก ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์˜ ์–ด๋ ค์›€์€ ์ปค์ง„๋‹ค.

์ตœ๊ทผ CPU ์„ค๊ณ„ ํŠธ๋ Œ๋“œ๋Š” ํ•˜๋‚˜์˜ ์นฉ(Chip)์— ์ฝ”์–ด(Cores)๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์„œ ์‹œ์Šคํ…œ์„ ๋ฉ€ํ‹ฐ์ฝ”์–ด(Multicore)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ฝ”์–ด๋Š” ๋™์ผํ•œ ์„ฑ๋Šฅ์˜ CPU ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ 1๊ฐœ์˜ ์นฉ ์†์— ์ง‘์ ‘ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. ์นฉ ๋‚ด๋ถ€์˜ ํ†ต์‹ (On-chip communication)์ด ์นฉ ์‚ฌ์ด์˜ ํ†ต์‹ (Between-chip communication)๋ณด๋‹ค ๋” ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์นฉ์— ํ•˜๋‚˜์˜ ์ฝ”์–ด๋งŒ ๋‘๋Š” ์‹œ์Šคํ…œ๋ณด๋‹ค ๋” ํšจ์œจ์ ์ด๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ•˜๋‚˜์˜ ์นฉ์— ์—ฌ๋Ÿฌ ์ฝ”์–ด๋ฅผ ๋‹ด์œผ๋ฉด ์ „๋ ฅ์„ ๋” ์ ๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค.

+---------------+   +---------------+
| CPU core 0    |   | CPU core 1    |
| +-----------+ |   | +-----------+ |
| | registers | |   | | registers | |
| +-----+-----+ |   | +-----+-----+ |
|       |       |   |       |       |
| +-----+-----+ |   | +-----+-----+ |
| |   cache   | |   | |   cache   | |
| +-----+-----+ |   | +-----+-----+ |
|       |       |   |       |       |
+-------+-------+   +-------+-------+
        |                   |
        +---------+---------+
                  |
              +---+----+
              | memory |
              +--------+

์œ„ ๋‹ค์ด์–ด๊ทธ๋žจ์€ ๋“€์–ผ ์ฝ”์–ด ์‹œ์Šคํ…œ์ด๋‹ค. ๊ฐ ์ฝ”์–ด๋Š” ์ž์‹ ๋งŒ์˜ ๋ ˆ์ง€์Šคํ„ฐ์™€ ๋กœ์ปฌ ์บ์‹œ๋ฅผ ๊ฐ–๋Š”๋‹ค. (ํ•˜๋‚˜์˜ ์บ์‹œ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.)

Clustered Systems

๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์„œ ์‹œ์Šคํ…œ์˜ ์ผ์ข…์ธ ํด๋Ÿฌ์Šคํ„ฐ ์‹œ์Šคํ…œ(Clustered system)์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ CPU์„ ๋ชจ์•„ ๋†“์€ ๊ตฌ์กฐ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ์‹œ์Šคํ…œ์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐœ๋ณ„ ์‹œ์Šคํ…œ(๋˜๋Š” ๋…ธ๋“œ)๋“ค์ด ํ•˜๋‚˜๋กœ ๋ชจ์—ฌ์žˆ๋‹ค๋Š” ์ ์—์„œ ์•ž์„œ ์„ค๋ช…ํ•œ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์„œ ์‹œ์Šคํ…œ๊ณผ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค. ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์„œ ์‹œ์Šคํ…œ์€ ์—ฌ๋ŸฌCPU๊ฐ€ ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์„ ์ด๋ฃจ๋Š” ๊ฒƒ์ด์ง€๋งŒ, ํด๋Ÿฌ์Šคํ„ฐ ์‹œ์Šคํ…œ์€ ์—ฌ๋Ÿฌ ๋…๋ฆฝ์ ์ธ ์‹œ์Šคํ…œ์ด ๋ชจ์—ฌ ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์„ ์ด๋ฃจ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฐ ์‹œ์Šคํ…œ์„ ์•ฝ๊ฒฐํ•ฉ(Loosely coupled)๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ๊ฐ ๋…ธ๋“œ๋“ค์€ ์‹ฑ๊ธ€ ํ”„๋กœ์„ธ์„œ ์‹œ์Šคํ…œ์ผ์ˆ˜๋„ ์žˆ๊ณ , ๋ฉ€ํ‹ฐ์ฝ”์–ด ์‹œ์Šคํ…œ์ผ ์ˆ˜๋„ ์žˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ •์˜๊ฐ€ ๋”ฑ ๋ช…ํ™•ํžˆ ์ •ํ•ด์ ธ ์žˆ์ง€๋Š” ์•Š๋‹ค. ๋‹จ์ง€ ํด๋Ÿฌ์Šคํ„ฐ ์ปดํ“จํ„ฐ๋“ค์ด ํ•˜๋‚˜์˜ ์ €์žฅ์†Œ๋ฅผ ๊ณต์œ ํ•˜๊ณ , ์ด๋ฅผ LAN(Local-Area Network)๊ณผ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ๋กœ ์—ฐ๊ฒฐํ•œ ์‹œ์Šคํ…œ์„ ๋ณดํ†ต ํด๋Ÿฌ์Šคํ„ฐ ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ๋ง์€ ๊ณ ๊ฐ€์šฉ์„ฑ(High-availability) ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ, ๋‹จ์ผ ์ปดํ“จํ„ฐ๋ณด๋‹ค ํ›จ์”ฌ ์ €๋ ดํ•˜๊ฒŒ ๋น„์Šทํ•œ ์„ฑ๋Šฅ์„ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ ์‹œ์Šคํ…œ์€ ๋น„๋Œ€์นญ ํด๋Ÿฌ์Šคํ„ฐ๋ง(Asymmetric clustering)๊ณผ ๋Œ€์นญ ํด๋Ÿฌ์Šคํ„ฐ๋ง(Symmetric clustering)์œผ๋กœ ๋‚˜๋‰œ๋‹ค. ๋น„๋Œ€์นญ ํด๋Ÿฌ์Šคํ„ฐ๋ง์—์„œ ํ•˜๋‚˜์˜ ์žฅ๋น„๋Š” ์ƒ์‹œ ๋Œ€๊ธฐ ๋ชจ๋“œ(Hot-standby mode)๋กœ ์ž‘๋™ํ•˜๋ฉฐ, ์„œ๋ฒ„๋ฅผ ๋™์ž‘์‹œํ‚ค๊ณ  ์žˆ๋Š” ๋‹ค๋ฅธ ๋…ธ๋“œ๋“ค์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ๋ฟ ๋ณ„๋„์˜ ์ž‘์—…์€ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋งŒ์•ฝ ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ด ์ƒ์‹œ ๋Œ€๊ธฐ ๋…ธ๋“œ๊ฐ€ ์„œ๋ฒ„๋กœ์„œ ์ž‘๋™ํ•˜๊ฒŒ ๋œ๋‹ค. ๋Œ€์นญ ํด๋Ÿฌ์Šคํ„ฐ๋ง์€ ๋‘๊ฐœ ์ด์ƒ์˜ ๋…ธ๋“œ๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์‹œ์— ๋‹ค๋ฅธ ๋…ธ๋“œ๋“ค์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๊ตฌ์กฐ๋‹ค. ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋Š” ํ•˜๋“œ์›จ์–ด์˜ ์ž์›์„ ์ตœ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ๋” ํšจ์œจ์ ์ด๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ ์‹œ์Šคํ…œ์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์ด ๋„คํŠธ์›Œํฌ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ์„ฑ๋Šฅ ์ปดํ“จํŒ… ํ™˜๊ฒฝ(High-performance computing environments)์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ ๋‹จ์ผ ์‹œ์Šคํ…œ์— ๋น„ํ•ด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํž˜๋“ค๊ณ , ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์ด ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์— ๋งŽ์€ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

Operating System Structure

์šด์˜์ฒด์ œ์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฉ€ํ‹ฐํ”„๋กœ๊ทธ๋žจ(Multiprogram) ๋Šฅ๋ ฅ์ด๋‹ค. ๋ฉ€ํ‹ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ(Multiprogramming)์€ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•ด ๋‘๊ณ  ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐ ์ƒํƒœ๊ฐ€ ๋˜๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์‹œ์Šคํ…œ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด CPU์˜ ์‚ฌ์šฉ ํšจ์œจ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋” ํ™•์žฅ๋œ ์‹œ์Šคํ…œ์ด ์‹œ๋ถ„ํ• (Time sharing) ์‹œ์Šคํ…œ์ด๋‹ค. ๋‹ค๋ฅธ ๋ง๋กœ๋Š” ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น(Multitasking)์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค. ์ด๋Š” ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์ž‘์—… ์‹œ๊ฐ„์„ ์ •ํ•ด๋‘๊ณ  ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ์ž‘์—…ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋น ๋ฅด๊ฒŒ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” ๋งˆ์น˜ ๋™์‹œ์— ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ๋œ๋‹ค. ์ด๋•Œ๋Š” ๋ฐ˜์‘ ์‹œ๊ฐ„(Response time)์„ ์ค„์ด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ๊ณผ ๋ฉ€ํ‹ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹œ์Šคํ…œ์€ ์—ฌ๋Ÿฌ ์ž‘์—…๋“ค์„ ๋™์‹œ์— ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋•Œ๋ฌธ์— ์šด์˜์ฒด์ œ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ž๋ฆฌ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•ด ์–ด๋–ค ์ž‘์—…์„ ๋จผ์ € ์ฒ˜๋ฆฌํ• ์ง€ ์ •ํ•ด์•ผํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ์ž‘์—… ์Šค์ผ€์ค„๋ง(Job scheduling), CPU ์Šค์ผ€์ค„๋ง(CPU Scheduling)์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ด๊ฑด 5์žฅ์—์„œ ๋‹ค๋ฃฌ๋‹ค. ๋งŒ์•ฝ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ, ๋ฐ˜์‘ ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ(Virtual memory)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜์˜ ์ผ๋ถ€๋ฅผ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ ๋กœ, ์‹ค์ œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ(Physical memory)๋ณด๋‹ค ๋” ํฐ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

Operating-System Operations

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

Dual-Mode and Multimode Operation

์šด์˜์ฒด์ œ๋Š” ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ํ•จ๋ถ€๋กœ ์‹œ์Šคํ…œ์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ชจ๋“œ(Mode)๋ฅผ ๋‚˜๋ˆ ๋‘”๋‹ค. ์œ ์ € ๋ชจ๋“œ(User mode)์™€ ์ปค๋„ ๋ชจ๋“œ(Kernel mode)๊ฐ€ ๊ทธ๊ฒƒ์ด๋ฉฐ, ํ•˜๋“œ์›จ์–ด์˜ ๋ชจ๋“œ ๋น„ํŠธ(Mode bit)๊ฐ€ 0์€ ์ปค๋„ ๋ชจ๋“œ, 1์€ ์œ ์ € ๋ชจ๋“œ์ž„์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

user process
+-----------------------------------------------------------------------------------------+
| +------------------------+   +-------------------+          +-------------------------+ |
| | user process executing +-->| calls system call |          | return from system call | | user mode
| +------------------------+   +--------------+----+          +-------------------------+ | (mode bit = 1)
+---------------------------------------------|--------------------^----------------------+
==============================================|====================|======================================
+---------------------------------------------|--------------------|----------------------+
|                                             | trap               | trap                 |
|                                             v mode bit = 0       | mode bit = 1         | kernel mode
|                                         +------------------------+----+                 | (mode bit = 0)
|                                         |      calls system call      |                 |
|                                         +-----------------------------+                 |
+-----------------------------------------------------------------------------------------+
kernel

์ด๋Ÿฌํ•œ ์ด์ค‘ ๋ชจ๋“œ(Dual-mode) ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‚˜์œ ์˜๋„๋ฅผ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์šด์˜์ฒด์ œ, ํ•˜๋“œ์›จ์–ด๋ฅผ ๋น„๋กฏํ•œ ์‹œ์Šคํ…œ๊ณผ ์‚ฌ์šฉ์ž๋ฅผ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜๋“œ์›จ์–ด๋Š” ์ปค๋„ ๋ชจ๋“œ์ผ ๋•Œ๋งŒ ํŠน๊ถŒ ๋ช…๋ น(Privileged instructions)๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ๋งŒ์•ฝ ์œ ์ € ๋ชจ๋“œ์—์„œ ํŠน๊ถŒ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ ค ํ•œ๋‹ค๋ฉด ํ•˜๋“œ์›จ์–ด๋Š” ์ด ๋™์ž‘์„ ๋ง‰๊ณ  ์šด์˜์ฒด์ œ์—๊ฒŒ ํŠธ๋žฉ์„ ๋ณด๋‚ผ ๊ฒƒ์ด๋‹ค. ์œ ์ € ๋ชจ๋“œ์—์„œ ํ•ฉ๋ฒ•์ ์œผ๋กœ(?) ์ปค๋„ ๋ชจ๋“œ์˜ ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์‹œ์Šคํ…œ ์ฝœ(System call)์ด๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด์•ผ ํ•œ๋‹ค.

Timer

์šด์˜์ฒด์ œ๋Š” ์‚ฌ์šฉ์ž์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์ œ์–ด๊ถŒ์„ ์šด์˜์ฒด์ œ์—๊ฒŒ ๋„˜๊ฒจ์ฃผ์ง€ ์•Š๋Š” ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํƒ€์ด๋จธ(Timer)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํƒ€์ด๋จธ๋Š” ์šด์˜์ฒด์ œ์—๊ฒŒ ์ œ์–ด๊ถŒ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ์ฃผ๊ธฐ์— ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ์šด์˜์ฒด์ œ๋Š” ์นด์šดํ„ฐ๋ฅผ ์„ค์ •ํ•˜๊ณ , ๋งค ํ‹ฑ(Ticks)๋งˆ๋‹ค ๊ฐ์†Œ์‹œํ‚จ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์นด์šดํ„ฐ๊ฐ€ 0์— ๋„๋‹ฌํ•˜๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

Process Management

๋””์Šคํฌ์— ์žˆ์œผ๋ฉด ํ”„๋กœ๊ทธ๋žจ, ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋˜๋ฉด ํ”„๋กœ์„ธ์Šค๋‹ค. ํ”„๋กœ๊ทธ๋žจ์€ ํ•˜๋‚˜์ง€๋งŒ ํ”„๋กœ์„ธ์Šค๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์ผ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ•์กฐํ•  ์ ์€, ํ”„๋กœ๊ทธ๋žจ์€ ๋””์Šคํฌ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์ˆ˜๋™์ (Passive) ์กด์žฌ์ธ ๋ฐ˜๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ๋Šฅ๋™์ (Active) ์กด์žฌ๋‹ค. ๋˜ํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋””๊นŒ์ง€ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ๋ถ๋งˆํฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(Program counter)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์‹ฑ๊ธ€์“ฐ๋ ˆ๋“œ(Single-thread) ํ”„๋กœ์„ธ์Šค๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ(Multi-threads) ํ”„๋กœ์„ธ์Šค๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์šด์˜์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด CPU์—๊ฒŒ ํ”„๋กœ์„ธ์Šค์™€ ์“ฐ๋ ˆ๋“œ๋ฅผ ์Šค์ผ€์ค„๋งํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋Š” ํ™œ๋™์„ ํ•œ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ผ์‹œ์ •์ง€ํ•˜๊ฑฐ๋‚˜ ์žฌ์‹คํ–‰ํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค์˜ ๋™๊ธฐํ™”(Synchronization)์™€ ํ†ต์‹ ๋„ ์ œ๊ณตํ•œ๋‹ค.

Memory Management

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

์šด์˜์ฒด์ œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ์˜ ์–ด๋–ค ๋ถ€๋ถ„์ด ์–ด๋””์— ์“ฐ์ด๋Š”์ง€, ๋ˆ„๊ฐ€ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์ถ”์ ํ•˜๊ณ , ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์™€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์•ˆํŒŽ์œผ๋กœ ์˜ฎ๊ฒจ์งˆ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. ๋˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๊ณ  ํ•ด์ œํ•˜๋Š” ๊ฒƒ๋„ ์šด์˜์ฒด์ œ๊ฐ€ ํ•˜๋Š” ์ผ์ด๋‹ค.

Storage Management

์šด์˜์ฒด์ œ๋Š” ์ €์žฅ์žฅ์น˜์˜ ๋ฌผ๋ฆฌ์  ์†์„ฑ์„ ์ถ”์ƒํ™”ํ•ด ํŒŒ์ผ(File)์ด๋ผ๋Š” ๋…ผ๋ฆฌ์  ์ €์žฅ ๋‹จ์œ„๋กœ ์ •์˜ํ•˜๋ฉฐ, ํŒŒ์ผ์„ ๋ฌผ๋ฆฌ์  ๋งค์ฒด(Physical media)์— ๋‹ด๊ฑฐ๋‚˜ ์ €์žฅ์žฅ์น˜์˜ ํŒŒ์ผ์— ์ ‘๊ทผํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

File-System Management

ํŒŒ์ผ ๊ด€๋ฆฌ๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ํ•˜๋Š” ์ผ ์ค‘ ๊ฐ€์žฅ ๋ˆˆ์— ์ž˜ ๋ณด์ด๋Š” ์š”์†Œ๋‹ค. ์šด์˜์ฒด์ œ๋Š”ํŒŒ์ผ์„ ์ƒ์„ฑ, ์ œ๊ฑฐํ•˜๋ฉฐ, ๋‹น์—ฐํžˆ ์ฝ๊ธฐ, ์“ฐ๊ธฐ๋„ ํ•œ๋‹ค.

Mass-Storage Management

ํ”„๋กœ๊ทธ๋žจ์€ ๋””์Šคํฌ์— ๋‹ด๊ฒจ ์žˆ์œผ๋ฉฐ, ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋˜์–ด ์‹คํ–‰๋œ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ œ3์˜ ์ €์žฅ ์žฅ์น˜(Tertiary storage devices)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ €์žฅ ์žฅ์น˜๋“ค์€ WORM(Write-Once, Read-Many-Times)๊ณผ RW(Read-Write) ํ˜•์‹์— ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. ํ•œ๋ฒˆ์ฏค ๋ดค์„ NTFS, FAT๊ฐ€ ํŒŒ์ผ ์ €์žฅ ํ˜•์‹์ด๋ฉฐ, ์ด๋ฅผ ํŒŒ์ผ ์‹œ์Šคํ…œ(File system)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ๋‹ค๋ฅด๋ฉด ์ฝ๊ธฐ๋Š” ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์“ฐ๊ธฐ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

Caching

์บ์‹ฑ(Caching)์€ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์— ์žˆ์–ด ์ •๋ง ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด๋‹ค. ์บ์‹œ๋Š” ๊ต‰์žฅํžˆ ๋น ๋ฅด๊ณ  ์ž‘์€ ์ €์žฅ์žฅ์น˜์ด๋ฉฐ, ์บ์‹ฑ์€ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ์ปดํ“จํ„ฐ์˜ ์†๋„๋ฅผ ๋†’์ด๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์—์„œ ์ง์ ‘ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์บ์‹œ์— ์ž์ฃผ ์‚ฌ์šฉ๋  ๊ฒƒ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ๋‹ด์•„๋‘๊ณ , CPU๋‚˜ ๋””์Šคํฌ๊ฐ€ ์บ์‹œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ํŒŒ์ผ์˜ ์ค‘๋ณต์„ฑ์ด ์ฆ๊ฐ€ํ•˜์ง€๋งŒ, ์†๋„ ์—ญ์‹œ ์ฆ๊ฐ€ํ•œ๋‹ค. ์บ์‹ฑ์€ ์ง€์—ญ์„ฑ(Locality) ์›๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ง€์—ญ์„ฑ์€ ์‹œ๊ฐ„์ง€์—ญ์„ฑ(Temporal locality)๊ณผ ๊ณต๊ฐ„์ง€์—ญ์„ฑ(Spatial Locality)์œผ๋กœ ๋‚˜๋‰œ๋‹ค. ์‹œ๊ฐ„์ง€์—ญ์„ฑ์€ ํ•œ ๋ฒˆ ์ ‘๊ทผํ•œ ๋ฐ์ดํ„ฐ์— ๋‹ค์‹œ ์ ‘๊ทผํ•  ํ™•๋ฅ ์ด ๋†’๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ณต๊ฐ„์ง€์—ญ์„ฑ์€ ํŠน์ • ๋ฐ์ดํ„ฐ์™€ ๊ฐ€๊นŒ์šด ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์žˆ๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋“ค์—๋„ ์ ‘๊ทผํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

for (int i = 0; i < 10; i++) { ... }

์œ„ ์ฝ”๋“œ์—์„œ ๋ณ€์ˆ˜ i๊ฐ€ ๊ทธ ์˜ˆ์‹œ๋‹ค.

๊ณต๊ฐ„์ง€์—ญ์„ฑ์€ ํŠน์ • ๋ฐ์ดํ„ฐ์™€ ๊ฐ€๊นŒ์šด ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์žˆ๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋“ค์—๋„ ์ ‘๊ทผํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋ณด์ž.

for (int i = 0; i < 10; i++) {
  arr[i] += 1;
}

๋ฐฐ์—ด ๋ณ€์ˆ˜ arr์˜ 0๋ฒˆ ์š”์†Œ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ 9๋ฒˆ ์š”์†Œ๊นŒ์ง€ ์ ‘๊ทผํ•œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋ฐฐ์—ด์˜ ์š”์†Œ๋“ค์€ ๊ทธ ์ˆœ์„œ๋Œ€๋กœ ๋ถ™์–ด ํ• ๋‹น๋˜๋‹ˆ๊นŒ ์‹ค์ œ๋กœ ๊ฐ€๊นŒ์šด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์—ฐ์†์ ์œผ๋กœ ์ ‘๊ทผํ•˜๊ณ  ์žˆ๋‹ค. ์บ์‹œ๋Š” ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ ๊ทธ ์ฃผ๋ณ€์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋„ ํ•จ๊ป˜ ๊ฐ€์ ธ์˜จ๋‹ค.

์บ์‹œ์— ๋Œ€ํ•œ ๋ณด๋‹ค ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์บ์‹œ๊ฐ€ ๋™์ž‘ํ•˜๋Š” ์•„์ฃผ ๊ตฌ์ฒด์ ์ธ ์›๋ฆฌ์—์„œ ์„ค๋ช…ํ–ˆ๋‹ค.

I/O System

์šด์˜์ฒด์ œ๋Š” ๋ชจ๋“  ์ž…์ถœ๋ ฅ์žฅ์น˜๋ฅผ ํŒŒ์ผ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค. ์˜ค์ง ์žฅ์น˜๋“œ๋ผ์ด๋ฒ„(Device driver)๋งŒ์ด ์žฅ์น˜์˜ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค.

Protection and Security

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

Kernel Data Structures

์ปค๋„ ๊ตฌํ˜„์—๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฆฌ์ŠคํŠธ(List), ์Šคํƒ(Stack), ํ(Queue), ๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ(Linked list) ๋“ฑ์˜ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค. ํŠนํžˆ ํŠธ๋ฆฌ(Tree)๋Š” ์ƒ๋‹นํžˆ ํšจ์œจ์ ์ธ O(logโกn)O(\log n)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.

Computing Environments

๋ชจ๋ฐ”์ผ ์ปดํ“จํŒ…(Mobile computing) ํ™˜๊ฒฝ์€ ์ปดํ“จํ„ฐ์˜ ์ ‘๊ทผ์„ฑ์„ ๋†’์˜€๊ณ , ๋‹ค์–‘ํ•œ ์„ผ์„œ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์™€์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™•์žฅ์‹œ์ผฐ๋‹ค. ๋˜ํ•œ ๋ถ„์‚ฐํ˜• ์ปดํ“จํŒ…(Distributed computing), ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์ปดํ“จํŒ…(Client-Server computing), P2P ์ปดํ“จํŒ…(Peer-to-Peer computing) ๋“ฑ ๋‹ค์–‘ํ•œ ์ปดํ“จํŒ… ํ™˜๊ฒฝ์ด ์žˆ๋‹ค. ํŠนํžˆ ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…(Cloud computing)์€ AWS(Amazon Web Service)๋ฅผ ํ†ตํ•ด ์ƒ๋‹นํžˆ ์ž˜ ์•Œ๋ ค์กŒ๋‹ค. ํ˜„๋Œ€ ์ปดํ“จํŒ… ํ™˜๊ฒฝ์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์„ ๊ผฝ์ž๋ฉด ํœด๋Œ€์„ฑ, ๊ฐ€์ƒํ™”, ๋ฉ€ํ‹ฐ์ฝ”์–ด๊ฐ€ ์žˆ๋‹ค.

Open-Source Operating Systems

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

โ†

๐Ÿฆ• ๊ณต๋ฃก์ฑ…์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ์šด์˜์ฒด์ œ Ch.2

System Structures

โ†’

์ฐจ์ด๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์‚ดํŽด๋ณธ UI๋””์ž์ธ๊ณผ UX๋””์ž์ธ

UI๋Š” ์‹ฌ๋ฏธ์„ฑ, UX๋Š” ์‚ฌ์šฉ์„ฑ?

โ† Articles