Table of Contents
- What Operating Systems Do
- Computer-System Organization
- Storage Structure
- I/O Structure
- Direct Memory Access Structure
- Computer-System Architecture
- Operating System Structure
- Operating-System Operations
- Dual-Mode and Multimode Operation
- Timer
- Process Management
- Memory Management
- Storage Management
- Protection and Security
- Kernel Data Structures
- Computing Environments
- Open-Source Operating Systems
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๊ฐ ์ด์์ ํ๋ก์ธ์๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ฒ์์๋ ์๋ฒ ์ปดํจํฐ์ ์ฒ์ ์ ์ฉ๋๋๋ฐ, ์ง๊ธ์ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ๋ ๋ฉํฐ ํ๋ก์ธ์ ์์คํ ์ผ๋ก ๋ง๋ค์ด์ง๋ค. ๋ฉํฐ ํ๋ก์ธ์ ์์คํ ์ ๋ช๊ฐ์ง ์ฅ์ ์ ๊ฐ์ง๊ณ ์๋ค.
- ์ฒ๋ฆฌ๋(Throughput)์ ์ฆ๊ฐ: ๋น์ฐํ๊ฒ ์ง๋ง ํ๋ก์ธ์๊ฐ ๋์ด๋๋ฉด ๋ ๋น ๋ฅธ ์๊ฐ ์์ ์ฐ์ฐ์ ์ํํ ์ ์๋ค. ๋ฌผ๋ก ํ๋ก์ธ์๋ฅผ ๊ณ์ ๋๋ฆฐ๋ค๊ณ ์ฑ๋ฅ์ด ํ์์ด ์ข์์ง๋ ๊ฒ์ ์๋๋ฉฐ, ์ฆ๊ฐ ๋น์จ์ด 1:1์ธ ๊ฒ๋ ์๋๋ค.
- ๊ท๋ชจ์ ๊ฒฝ์ : ๋ฉํฐ ํ๋ก์ธ์ ์์คํ ์ ์ฌ๋ฌ ๋์ ์ฑ๊ธ ํ๋ก์ธ์ ์์คํ ์ ๊ตฌ์ถํ๋ ๊ฒ๋ณด๋ค ๋์ด ์ ๊ฒ ๋ ๋ค. ๋ฉํฐ ํ๋ก์ธ์ ์์คํ ์ ์ฃผ๋ณ์ฅ์น(Peripherals)๋ฅผ ๊ณต์ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- ์ ๋ขฐ์ฑ์ ์ฆ๊ฐ: ๋ง์ฝ ๊ธฐ๋ฅ์ด ์ฌ๋ฌ ํ๋ก์ธ์์ ๋ถ์ฐ๋ ์ ์๋ค๋ฉด, ํ๋์ ํ๋ก์ธ์๊ฐ ์๋์ ๋ฉ์ถฐ๋ ์ ์ฒด ์์คํ ์ ๋๋ ค์ง ๋ฟ ๋ฉ์ถ์ง ์๋๋ค. ์ด๋ฐ ์์ผ๋ก ์ฑ๋ฅ์ด ๋๋น ์ง์ง๋ง ์๋์ ๊ฐ๋ฅํ๋๋ก ํ๋ ๊ฒ์ ์ฐ์ํ ์ฑ๋ฅ์ ํ(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)๋ ์๋นํ ํจ์จ์ ์ธ
Computing Environments
๋ชจ๋ฐ์ผ ์ปดํจํ (Mobile computing) ํ๊ฒฝ์ ์ปดํจํฐ์ ์ ๊ทผ์ฑ์ ๋์๊ณ , ๋ค์ํ ์ผ์๋ฅผ ํตํด ์ฌ์ฉ์์์ ์ธํฐํ์ด์ค๋ฅผ ํ์ฅ์์ผฐ๋ค. ๋ํ ๋ถ์ฐํ ์ปดํจํ (Distributed computing), ํด๋ผ์ด์ธํธ-์๋ฒ ์ปดํจํ (Client-Server computing), P2P ์ปดํจํ (Peer-to-Peer computing) ๋ฑ ๋ค์ํ ์ปดํจํ ํ๊ฒฝ์ด ์๋ค. ํนํ ํด๋ผ์ฐ๋ ์ปดํจํ (Cloud computing)์ AWS(Amazon Web Service)๋ฅผ ํตํด ์๋นํ ์ ์๋ ค์ก๋ค. ํ๋ ์ปดํจํ ํ๊ฒฝ์ ๊ฐ์ฅ ํฐ ํน์ง์ ๊ผฝ์๋ฉด ํด๋์ฑ, ๊ฐ์ํ, ๋ฉํฐ์ฝ์ด๊ฐ ์๋ค.
Open-Source Operating Systems
์ธ์์๋ ๋ง์ ์คํ์์ค ์ด์์ฒด์ ๋ค์ด ์๋ค. ๋น์ฅ ๊นํ๋ธ์์๋ ๋ฆฌ๋ ์ค์ ์ฝ๋๋ฅผ ์ฐพ์๋ณผ ์ ์๋ค. ์คํ์์ค ์ด์์ฒด์ ๊ฐ๋ฐ์๋ ๋๊ตฌ๋ ์ฐธ์ฌํ ์ ์๊ณ , ์ด๋ฅผ ์ด์ฉํด ์๋ก์ด ์ด์์ฒด์ ๋ฅผ ๋ง๋ค ์๋ ์๋ค.