Table of Contents
μ±ν°1μμ λ€λ£¬ μμ€ν μ λν΄ λ³΄λ€ μμΈν λ€λ£¨λ μ±ν°μΈλ°, κ·Έλ κ² μ΄λ ΅μ§λ μλ€. 볡μ‘ν λ΄μ©μ΄ λ³λ‘ μμ΄μ μ½κ² μ½μ μ μλ€.
Operating-System Services
μ΄μ체μ λ μ¬μ©μμ μμ€ν μκ² λ€μν μλΉμ€λ₯Ό μ 곡νλ€.
+-----------------------------------------------------------------------------------------------------------------------+
| user and other system programs |
+-----------------------------------------------------------------------------------------------------------------------+
| +-----+-------+-------------+ |
| | GUI | batch | commandline | |
| +-----+-------+-------------+ |
| | user interfaces | |
| +---------------------------+ |
+-----------------------------------------------------------------------------------------------------------------------+
| system calls |
+-----------------------------------------------------------------------------------------------------------------------+
| +-------------------------------------------------------------------------------------------------------------------+ |
| | +-------------------+ +----------------+ +-------------+ +---------------+ +---------------------+ +------------+ | |
| | | program execution | | I/O operations | | file systems| | communication | | resource allocation | | accounting | | |
| | +-------------------+ +----------------+ +-------------+ +---------------+ +---------------------+ +------------+ | |
| | +-----------------+ +-------------------------+ | |
| | | error detection | | protection and security | | |
| | +-----------------+ +-------------------------+ | |
| +------------------------------------------------------services-----------------------------------------------------+ |
+----------------------------------------------------operating system---------------------------------------------------+
| hardware |
+-----------------------------------------------------------------------------------------------------------------------+
- UI(User Interface): UIλ λ§κ·Έλλ‘ μ¬μ©μμ μ»΄ν¨ν° μμ€ν μ΄ λ§λλ μ§μ μ λ§νλ€. ν€λ³΄λ νμ΄νμ΄λ λ§μ°μ€ ν΄λ¦κ³Ό κ°μ νλμΌλ‘ μ¬μ©μλ μ»΄ν¨ν°λ₯Ό μ‘°μν μ μλ€. μΈν°νμ΄μ€λ ν¬κ² CLI(Command-Line Interface)μ λ°°μΉ μΈν°νμ΄μ€(Batch interface), κ·Έλ¦¬κ³ GUI(Graphical User Interface)λ‘ λλ μ μλ€. CLIλ μ¬μ©μκ° ν μ€νΈ λͺ λ Ήμ ν΅ν΄ λͺ λ Ήμ λ΄λ¦¬λ μΈν°νμ΄μ€λ€. κ·Έλ¦¬κ³ μ΄λ¬ν μΈν°νμ΄μ€λ₯Ό μ 곡νλ νλ‘κ·Έλ¨μ μ Έ(Shell)μ΄λΌκ³ λΆλ₯Έλ€.κ³Όκ±° MS-DOSλ μ νμννΈ λ² μ΄μ§μ΄ CLIλ₯Ό κΈ°λ°μΌλ‘ νλ€. λ°°μΉ μΈν°νμ΄μ€λ λͺ λ Ήμ νμΌμ λ£μ΄λκ³ , νμΌμ΄ μ€νλλ©΄μ λͺ λ Ήμ μ€ννλ μΈν°νμ΄μ€λ€. CLIκ° λ리 μ°μ΄κΈ° μ΄μ , 40~60λ λ μ»΄ν¨ν°λ μ΄λ¬ν λ°©μμ μ¬μ©νλ€. GUIλ νμ¬ κ°μ₯ ννκ² μ°Ύμλ³Ό μ μλ μΈν°νμ΄μ€λ€. GUI νκ²½μμ μ¬μ©μλ ν€λ³΄λ νμ΄ν, λ§μ°μ€ ν΄λ¦, μκ°λ½ ν°μΉ λ± λ€μν λ°©λ²μΌλ‘ νλ©΄μ λμμ§ κ·Έλν½μ μ‘°μνλ©°, μ΄λ₯Ό ν΅ν΄ μ»΄ν¨ν°μκ² λͺ λ Ήμ λ΄λ¦°λ€.
- νλ‘κ·Έλ¨ μ€ν(Program execution): μμ€ν μ νλ‘κ·Έλ¨μ λ©λͺ¨λ¦¬μ λ‘λνκ³ , μ΄λ₯Ό μ€νν μ μμ΄μΌ νλ€. λν νλ‘κ·Έλ¨μ μ μμ μΌλ‘λ κ·Έλ μ§ μλ μ€νμ λλΌ μ μμ΄μΌ νλ€.
- μ μΆλ ₯ λͺ λ Ή(I/O operations): λ§μ½ νλ‘κ·Έλ¨μ΄ μ μΆλ ₯μ νμλ‘νλ€λ©΄, μ΄μ체μ λ μ μΆλ Ή λͺ λ Ήμ μνν΄μΌ νλ€. μ΄λ ν¨μ¨κ³Ό 보μμ μν΄ μ΄μ체μ λ μ¬μ©μκ° μ§μ μ μΆλ ₯ μ₯μΉλ₯Ό μ‘°μνμ§ μκ³ , μμ μ κ±°μΉλλ‘νλ€.
- νμΌ μμ€ν μ‘°μ(File-system manipulation): νμΌμ μ°κ³ , μ½κ³ , λ§λ€κ³ , μ§μ΄λ€. λν μ¬μ©μκ° νμΌμ μ κ·Όνμ§ λͺ»νλλ‘ λ§κΈ°λ νλ€.
- ν΅μ (Communications): μ΄λ€ νλ‘μΈμ€κ° λ€λ₯Έ νλ‘μΈμ€μ μ 보λ₯Ό κ΅νν΄μΌ νλ μν©μμ μ΄μ체μ λ 곡μ λ©λͺ¨λ¦¬(Shared memory)λ λ©μΈμ§ ν¨μ±(Message passing)μ΄λΌλ λ°©λ²μ μ¬μ©νλ€. 곡μ λ©λͺ¨λ¦¬λ μ¬λ¬κ°μ νλ‘μΈμ€κ° λ©λͺ¨λ¦¬μ ν λΆλΆμ 곡μ νλλ‘ νλ κ²μ΄κ³ , λ©μΈμ§ ν¨μ±μ νλ‘μΈμ€ κ°μ μ 보 ν¨ν·(Packets)μ μ£Όκ³ λ°λ κ²μ λ§νλ€. (곡μ λ©λͺ¨λ¦¬ λ°©μλ³΄λ€ λ©μΈμ§ ν¨μ± λ°©μμ μλκ° λ λ리λ€.)
- μλ¬ νμ§(Error detection): μ΄μ체μ λ CPUλ λ©λͺ¨λ¦¬μ κ°μ νλμ¨μ΄, μ μΆλ ₯μ₯μΉ, κ·Έλ¦¬κ³ μ¬μ©μ νλ‘κ·Έλ¨ λ±μμ μΌμ΄λλ μλ¬λ₯Ό νμ§νκ³ , λ°λ‘ μ‘μμΌ νλ€.
μ΄μ체μ λ μ¬μ©μμκ² μ§μ μ μΈ λμμ μ λμ§λ§, μμ€ν μ μν μμ λ μννλ€.
- μμ ν λΉ(Resource allocation): μ¬λ¬ μ¬μ©μλ μ¬λ¬ μμ μ λμμ μ²λ¦¬ν΄μΌ νλ€λ©΄, μ»΄ν¨ν μμμ κ°κ° μ λ°°λΆλμ΄μΌ νλ€. μ΄λ¬ν μν©μμ μ΄μ체μ λ λ€μν μ’ λ₯μ μμμ κ΄λ¦¬νλ€.
- νκ³(Accounting): μμ€ν μ μ΄λ€ μ μ κ° μ΄λ€ μ’ λ₯μ μμμ μΌλ§λ μ¬μ©νκ³ μλμ§ κ³μ μΆμ ν΄μΌ νλ€. μ΄ κΈ°λ‘μ νκ³λ μ¬μ©λ ν΅κ³λ₯Ό μν΄ μ¬μ©λ μ μλ€. μ§μνλ©΄ νκ³μ§λ§, λλ΅ κ΄λ¦¬, ν΅κ³ μ λλ‘ λ°μλ€μ΄λ©΄ λ κ² κ°λ€.
- 보νΈμ 보μ(Protection and security): λͺ λ²μ λ§ν΄λ λͺ¨μλ μ λλ‘ μ€μν λΆλΆμ΄λ€. μΈν CPUμ λ©νΈλ€μ΄, μ€νν° μ·¨μ½μ μ¬νλ₯Ό μκ°ν΄λ³΄μβ¦
System Calls
μμ€ν μ½μ 컀λκ³Ό μ¬μ©μ νλ‘κ·Έλ¨μ μ΄μ΄μ£Όλ μΈν°νμ΄μ€ μν μ νλ€. μ’ μμνκ² λκ»΄μ§ μλ μκ² μ§λ§, κ·Έλ₯ λ‘μ° λ 벨 μμ μ νλ μ½λλΌκ³ μκ°νλ©΄ λλ€.
+------------------+
+----+ user application |<----+
open() | +------------------+ |
user v |
mode +-------------------------------------------+--------------+
--------+ system call interface |
kernel +---+------------------------------------------------------+
mode | +-----+ ^
+---->| ... | open() |
+-----+ implementation |
i | +------------------> of open() |
+-----+ system call |
| ... | ... |
+-----+ return -----------+
μ¬μ©μ νλ‘κ·Έλ¨μ΄ λμ€ν¬μ μλ νμΌμ μ°λ€λ κ²μ νμΌ μμ€ν
μ μ κ·Όνλ€λ μλ―Έλ€. μμ€ν
μ μ κ·ΌνκΈ° μν΄μλ 컀λ λͺ¨λλ‘ μ νλμ΄μΌ νλλ°, μ΄λ μμ€ν
μ½μ μ¬μ©νλ€. λ©λͺ¨λ¦¬μ νΉμ μ£Όμ λ²μμλ μ΄λ€ λμλ€μ΄ ν λΉλμ΄ μλ€. μ΄κ²μ μμ€ν
μ½ ν
μ΄λΈ(System call table)μ΄λΌκ³ λΆλ₯΄λ©°, μΈν°λ½νΈ 벑ν°(Interrupt vector)λΌκ³ λ λΆλ₯Έλ€. μλ₯Ό λ€μ΄ fopen()
ν¨μλ₯Ό νΈμΆνλ€λ©΄, μ΄μ체μ λ νμΌμ μ¬λ ν¨μλ₯Ό μ°ΎκΈ° μν΄ μμ€ν
μ½ ν
μ΄λΈμ μ°Έμ‘°νλ€. μμ€ν
μ½ ν
μ΄λΈμ λ©λͺ¨λ¦¬ μ£Όμμ λͺ¨μμΈλ°, ν΄λΉ λ©λͺ¨λ¦¬ μ£Όμλ μΈν°λ½νΈ μλΉμ€ 루ν΄(Interrupt service routine)μ κ°λ¦¬ν€κ³ μλ€. μΈν°λ½νΈ μλΉμ€ 루ν΄μ μΌλ°μ μΌλ‘ Cλ‘ μ§μ¬μ§ μ½λμ΄λ©°, μμ€ν
μ½ ν
μ΄λΈμ΄ κ°λ¦¬ν€λ νΉμ λ©λͺ¨λ¦¬ μ£Όμκ° κ΅¬μ²΄μ μΌλ‘ μ΄λ€ λμμν μ§ μ μν΄λμ κ²μ΄λ€.
μμ€ν
μ½μλ fork()
, exit()
, read()
, write()
μ κ°μ ν¨μλ€μ΄ μλ€. νμ§λ§ κ°λ°μκ° μ΄κ²μ μ§μ μ‘°μνλ κ²μ λΆνΈνκ³ μνν μΌμ΄λ―λ‘, νμ€ λΌμ΄λΈλ¬λ¦¬(Standard library)λ₯Ό μ¬μ©νλ€. stdio.h
κ° κ·Έ μΌμ’
μ΄λ€.
μ¬μ©μ νλ‘κ·Έλ¨μ΄ μ΄μ체μ μκ² λ§€κ°λ³μλ₯Ό λκΈ°λ λ°©λ²μ 3κ°μ§κ° μλ€.
- Call by value: 맀κ°λ³μμ κ° μ체λ₯Ό 볡μ¬ν΄μ CPU λ μ§μ€ν°μ μ λ¬νλ€.
- Call by reference: κ°μ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό μ λ¬νλ€. λ§μ κ°μ μ λ¬νλ€λ©΄ μ΄λ κ² νλ κ²μ΄ ν¨μ¨μ μ΄λ€.
- νλ‘κ·Έλ¨μμ ν΅ν΄ μ€ν(Stack)μ 맀κ°λ³μλ₯Ό μΆκ°νκ³ , μ΄μ체μ λ₯Ό ν΅ν΄ κ°μ λΊλ€.
Types of System Calls
μμ€ν μ½μ ν¬κ² 6κ°μ§λ‘ λΆλ₯ν μ μλ€.
- νλ‘μΈμ€ μ μ΄: end, abort, load, execute
- νμΌ κ΄λ¦¬: create, delete, open, close, read, write
- μ₯μΉ κ΄λ¦¬: read, write, request, release
- μ 보 μ μ§: get/set time or date
- ν΅μ : send/receive messages, transfer status
- 보νΈ
Operating System Structure
νλ μ΄μ체μ λ κ³μΈ΅μ λλ μ μμ€ν μ κ΄λ¦¬νλ€.
Simple Structure
+-------------------------------------+
| application program |
+--+-------------------------------+--+
| |
v |
+------------------------------+ |
| resident system program | |
+--+------------------------+--+ |
| | |
v | |
+-----------------------+ | |
| MS-DOS device drivers | | |
+--+--------------------+ | |
| | |
v v v
+-------------------------------------+
| ROM BIOS device drivers |
+-------------------------------------+
κ³Όκ±°μλ μ¬μ€μ κ³μΈ΅μ΄ ꡬλΆλμ΄ μμ§ μμλ€. MS-DOSμμλ μ¬μ©μ νλ‘κ·Έλ¨μ΄ μ μΆλ ₯ 루ν΄μ μ κ·Όν΄ λμ€νλ μ΄μ λμ€ν¬ λλΌμ΄λΈμ μ§μ μ°κΈ°λ₯Ό ν μ μμλ€. λ°λΌμ λ§μ½ μ¬μ©μ νλ‘κ·Έλ¨μ λ¬Έμ κ° μκΈ°λ©΄ μ 체 μμ€ν μ λ¬Έμ κ° μκ²Όλ€. UNIX μμ€ν μ μ΄κ²μ κ°μ νλ€.
+------------------------------------------------------------------+
| (the users) |
+------------------------------------------------------------------+
| shells and commands |
| compilers and interpreters |
| system libraries |
+------------------------------------------------------------------+ -+
| system-call interface to the kernel | |
+------------------------------------------------------------------+ |
| signals terminal file system CPU scheduling | |
| handling swapping block I/O page replacement | | kernel
| character I/O system system demand paging | |
| terminal drivers disk and tape drivers virtual memory | |
+------------------------------------------------------------------+ |
| kernel interface to the hardware | |
+----------------------+--------------------+----------------------+ -+
| terminal controllers | device controllers | memory controllers |
| terminals | disks and tapes | physical memory |
+----------------------+--------------------+----------------------+
μ ν΅μ μΈ UNIX μμ€ν ꡬ쑰λ MS-DOSμ λΉν΄ κΈ°λ₯μ΄ λΆλ¦¬λμμ§λ§, μ¬μ ν νλμ κ³μΈ΅μ΄ λ무 λ§μ μΌμ νλ€. νλμ¨μ΄ κ³μΈ΅ μ, μ¬μ©μ κ³μΈ΅ μλμ μλ 컀λμ΄ λͺ¨λ κΈ°λ₯μ μ 곡νλ€. μ΄λ¬ν λͺ¨λ리λ(Monolithic) ꡬ쑰λ ꡬνκ³Ό μ μ§λ³΄μκ° μ½μ§ μμλ€.
Layered Approach
+-------------------------------+
| layer N: user interface |
| +---------------------------+ |
| | ... | |
| | +-----------------------+ | |
| | | layer 1 | | |
| | | +-------------------+ | | |
| | | | layer 0: hardware | | | |
| | | +-------------------+ | | |
| | +-----------------------+ | |
| +---------------------------+ |
+-------------------------------+
μ΄μ체μ λ₯Ό λ μΈλΆνν΄ κ³μΈ΅μ λΆλ¦¬ν κ²μ΄ κ³μΈ΅μ μ κ·Ό(Layered approach) λ°©μμ΄λ€. κ°μ₯ μλμ μλ κ³μΈ΅(λ μ΄μ΄ 0)μ νλμ¨μ΄κ³ , κ°μ₯ λμ κ³μΈ΅(λ μ΄μ΄ N)μ μ¬μ©μ μΈν°νμ΄μ€λ€. μ΄ λ°©μμ μ μ§λ³΄μκ° μμ£Ό νΈνλ°, νλμ κ³μΈ΅μλ§ μ κ²½μ°λ©΄ λ€λ₯Έ κ³μΈ΅μλ μλ¬΄λ° μ κ²½μ μ°μ§ μμλ λκΈ° λλ¬Έμ΄λ€.
Microkernels
λ§μ΄ν¬λ‘컀λ(Microkernel)μ 컀λμμ ν΅μ¬μ μΈ μμλ§ λ¨κΈ΄ κ°λ²Όμ΄ 컀λμ λ§νλ€. 컀λμ΄ μ»€μ§μλ‘ λ¬Έμ κ° μκΈΈ κ°λ₯μ±μ΄ λμμ§κ³ , μ μ§λ³΄μκ° νλ€μ΄μ§κΈ° λλ¬Έμ 컀λμ λ κ°λ³κ² λ§λ€ νμκ° μμλ€. λ§μ΄ν¬λ‘컀λμ μ½λ μμ΄ ν¨μ¬ μ μ΄ μ»΄νμΌ, ν μ€νΈ μκ°μ΄ λΉκ΅μ μ§§κ³ , λ€λ₯Έ μμ€ν μ μ΄μ(Porting)νκΈ°λ μ½λ€. λ€λ§ μμ€ν νλ‘κ·Έλ¨μ μΆκ°ν΄ κΈ°λ₯μ λλ¦¬λ €νλ©΄ μλκ° λλ €μ§λ€.
OS Xμ 컀λ(Darwin)μ μΌλΆκ° λ§μ΄ν¬λ‘컀λ Machλ₯Ό κΈ°λ°μΌλ‘ λ§λ€μ΄μ‘μΌλ©°, IoTμλ λ§μ΄ν¬λ‘컀λμ΄ μ¬μ©λλ€.
Modules
λͺ¨λμ 컀λμ νμ₯νκΈ° μν κΈ°μ λ‘, OOPμμ λ§νλ κ·Έ λͺ¨λνμ κ°μ κ°λ μ΄λ€. νλ‘μΈμ€μ μ€μκ°μΌλ‘ λͺ¨λμ λΆμ¬ μλμν¬ μ μκ³ , κ° κΈ°λ₯λ€μ λ 립μ μΌλ‘ κ΄λ¦¬ν μ μμ΄ ν¨κ³Όμ μΌλ‘ μμ€ν μ μ μ§ν μ μλ€. μ₯μΉ λλΌμ΄λ²λ λͺ¨λ λͺ¨λλ‘ κ΅¬νλμ΄ μμΌλ©°, μλμ°μμ .dllνμΌμ΄ λ°λ‘ λͺ¨λμ΄λ€.
Hybrid Systems
μ€λ§νΈν°μ OS ꡬ쑰μ μ΅μ νμ΄λΌκ³ ν μ μλ€. νμ΄λΈλ¦¬λ μμ€ν μ 컀λμ ν΅μ¬λ§ λ¨κΈ°κ³ λλ¨Έμ§λ λ°λ‘ ꡬνν μμ€ν μ΄λ€. OS Xμ κ²½μ° BSDκ° ν΅μ¬μ΄μ§λ§ λλ¨Έμ§λ λͺ¨λ μ νμ΄ μ체 ꡬννλ€. μλλ‘μ΄λλ 리λ μ€ μ»€λμμ μ체 ꡬνν λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬λ¦° μμ€ν μ΄λ€.