μ΄μ체μ κ³΅λ£‘μ± : Ch2. Operating System Structures | μ΄μ체μ ꡬ쑰
π λ€μ΄κ°λ©°
μ΄μ체μ λ₯Ό μ΄ν΄λ³΄κΈ° μν λͺκ°μ§ κ΄μ μ΄ μλ€.
1. μ΄μ체μ κ° μ 곡νλ μλΉμ€μ μ΄μ μ λ§μΆλ€.
2. μ΄μ체μ κ° μ¬μ©μμ νλ‘κ·Έλλ¨Έμκ² μ 곡νλ μΈν°νμ΄μ€μ μ΄μ μ λ§μΆλ€.
3. μμ€ν μ ꡬμ±μμμ κ·Έλ€μ μνΈ μ°κ²°μ μ΄μ μ λ§μΆλ€.
μ΄ μΈκ°μ§ μΈ‘λ©΄μ κΈ°μ€μΌλ‘ μ¬μ©μ, νλ‘κ·Έλλ¨Έ, μ΄μ체μ μ€κ³μμ κ΄μ μμ λͺ¨λ μ΄ν΄λ³΄μ.
π 2.1 μ΄μ체μ μλΉμ€
μ΄μ체μ λ νλ‘κ·Έλ¨ μ€ν νκ²½μ μ 곡νλ€. μ¦, νλ‘κ·Έλ¨κ³Ό κ·Έ νλ‘κ·Έλ¨μ μ¬μ©μμκ² νΉμ μλΉμ€λ₯Ό μ 곡νλ€.
μ΄λ¬ν μλΉμ€λ νλ‘κ·Έλλ¨Έκ° νλ‘κ·Έλλ° μμ μ λ μ½κ² μνν μ μλλ‘ νλ€.
[ μ¬μ©μμκ² λμμ μ£Όλ κ²μ λͺ©μ μΌλ‘ νλ μλΉμ€ ]
βοΈ μ¬μ©μ μΈν°νμ΄μ€(user interface)
* κ±°μ λͺ¨λ OSκ° μ 곡νλ©°, μ¬λ¬ ννλ‘ μ 곡λ μ μμ§λ§ μΌλ°μ μΌλ‘ κ·Έλν½ μ¬μ©μ μΈν°νμ΄μ€(GUI)κ° μ¬μ©λλ€.
* μ¬κΈ°μ μΈν°νμ΄μ€λ μλμ° μμ€ν μΌλ‘, λ§μ°μ€μ ν€λ³΄λλ₯Ό κ°μ§κ³ μλ€.
* ν΄λμ ν λ° νλΈλ¦Ώκ³Ό κ°μ λͺ¨λ°μΌ μμ€ν μ ν°μΉ μ€ν¬λ¦° μΈν°νμ΄μ€λ₯Ό μ 곡νλ€
* λͺ λ Ήμ΄ λΌμΈ μΈν°νμ΄μ€(CLI) (λͺ λ Ή μ¬μ©, λͺ λ Ή μ λ ₯ν ν€λ³΄λ μ¬μ©)λ μ 곡νλ€.
βοΈ νλ‘κ·Έλ¨ μν(program execution)
* μμ€ν μ νλ‘κ·Έλ¨μ λ©λͺ¨λ¦¬μ μ μ¬ν΄ μ€νν μ μμ΄μΌ νλ©°, μ μμ΄λ λΉμ μμ΄λ μ€νμ λλΌ μ μμ΄μΌ νλ€.
βοΈ μ μΆλ ₯ μ°μ°(I/O operation)
* μν μ€μΈ νλ‘κ·Έλ¨μ μ μΆλ ₯μ μꡬν μ μκ³ , μ΄λ¬ν μ μΆλ ₯μλ νμΌμ΄λ μ μΆλ ₯ μ₯μΉκ° μ°κ΄λ μ μλ€.
* ν¨μ¨κ³Ό 보νΈλ₯Ό μν΄, μ¬μ©μλ€μ ν΅μ μ μΆλ ₯ μ₯μΉλ₯Ό μ§μ μ μ΄ν μ μκΈ°μ μ΄μ체μ κ° μ μΆλ ₯ μνμ μλ¨μ μ 곡ν΄μΌ νλ€.
βοΈ νμΌ μμ€ν μ‘°μ(file system manipulation)
* νλ‘κ·Έλ¨μ νμΌμ μ¬λ¬ λ°©λ²μΌλ‘ μ‘°μν νμκ° μλ€.
* λ§μ μ΄μ체μ λ€μ κ°μΈμ μ νμ λ°λΌ νΉμ νΉμ νΉμ±κ³Ό μ±λ₯ νΉμ±μ μ 곡νκΈ° μν΄ λ€μν νμΌ μμ€ν μ μ 곡νλ€.
βοΈ ν΅μ (communication)
* ν νλ‘μΈμ€κ° λ€λ₯Έ νλ‘μΈμ€μ μ 보λ₯Ό κ΅νν΄μΌ ν νμκ° μλ μ¬λ¬ μν©μ, ν΅μ μ μννλ λκ°μ§ λ°©λ²μ΄ μλ€.
* λμΌν μ»΄ν¨ν°μμ μνλκ³ μλ νλ‘μΈμ€λ€ μ¬μ΄μμ μΌμ΄λλ ν΅μ μ 곡μ λ©λͺ¨λ¦¬λ₯Ό ν΅ν΄ ꡬνλλ€.
* λ€νΈμν¬μ μν΄ ν¨κ» λ¬Άμ¬μλ μλ‘ λ€λ₯Έ μ»΄ν¨ν° μμ€ν μμμ μνλλ νλ‘μΈμ€λ€ μ¬μ΄μμ μΌμ΄λλ ν΅μ μ λ©μμ§ μ λ¬ κΈ°λ²μ μ¬μ©νμ¬ κ΅¬νλ μ μλλ°, μ΄ κ²½μ° μ 보μ ν¨ν·λ€μ΄ μ΄μ체μ μ μν΄ νλ‘μΈμ€λ€ μ¬μ΄λ₯Ό μ΄λνλ€.
βοΈ μ€λ₯ νμ§(error detection)
* μ΄μ체μ λ λͺ¨λ κ°λ₯ν μ€λ₯λ₯Ό νμ μμνκ³ μμ΄μΌ νλ©°, μ¬λ°λ₯΄κ³ μΌκ΄μ± μλ κ³μ°μ 보μ₯νκΈ° μν΄ κ° μ νμ μ€λ₯μ λν΄ μ λΉν μ‘°μ²λ₯Ό ν΄μΌ νλ€.
[ μμ€ν μ체μ ν¨μ¨μ μΈ λμμ 보μ₯νκΈ° μν μλΉμ€ ]
βοΈ μμν λΉ(resource allocation)
* λ€μμ νλ‘μΈμ€λ λ€μμ μμ μ΄ λμμ μ§νλ λλ κ·Έλ€ κ°κ°μ μμμ ν λΉν΄μ£Όμ΄μΌ νλ€.
βοΈ κΈ°λ‘ μμ±(logging)
* μ΄λ€ νλ‘κ·Έλ¨μ΄ μ΄λ€ μ’ λ₯μ μ»΄ν¨ν° μμμ μΌλ§λ λ§μ΄ μ¬μ©νλμ§λ₯Ό μΆμ νλ€.
* μ΄λ¬ν κΈ°λ‘ κ΄λ¦¬λ μ»΄ν¨ν μλΉμ€λ₯Ό κ°μ νκΈ° μν΄ μμ€ν μ μ¬κ΅¬μ±νκ³ μ νλ μμ€ν κ΄λ¦¬μμκ² κ·μ€ν μλ£μ΄λ€.
βοΈ λ³΄νΈ(protection)μ 보μ(security)
* μλ‘ λ€λ₯Έ μ¬λ¬ νλ‘μΈμ€κ° λ³ννκ² μνλ λ, ν νλ‘μΈμ€κ° λ€λ₯Έ νλ‘μΈμ€λ μ΄μ체μ μ체λ₯Ό λ°©ν΄ν΄μλ μλλ€.
* 보νΈλ μμ€ν μμμ λν λͺ¨λ μ κ·Όμ΄ ν΅μ λλλ‘ λ³΄μ₯νλ κ²μ νμλ‘ νλ©°, κ° μ¬μ©μκ° μμμ λν μ κ·Όμ μν λ ν΅μ ν¨μ€μλλ₯Ό μ¬μ©ν΄μ μμ€ν μκ² μκΈ° μμ μ μΈμ¦νλ κ²μΌλ‘λΆν° μμλλ€.
* 보μμ λ€νΈμν¬ μ΄λν° λ±κ³Ό κ°μ μΈλΆ μ μΆλ ₯ μ₯μΉλ€μ λΆμ ν©ν μ κ·Ό μλλ‘λΆν° μ§ν€κ³ , μΉ¨μ μ νμ§λ₯Ό μν΄ λͺ¨λ μ μμ κΈ°λ‘νλ κ²μΌλ‘ λ²μλ₯Ό λνλ€.
π 2.2 μ¬μ©μμ μ΄μ체μ μΈν°νμ΄μ€
μ¬μ©μκ° OSμ μΈν°νμ΄μ€νκΈ° μν΄ μ¬μ©νλ μΈ κ°μ§ λ°©λ²μ λν΄ μ‘°κΈ λ μμΈνκ² μμ보μ.
2.2.1 λͺ λ Ή μΈν°νλ¦¬ν° Command-Interpreter
λ¨Όμ , λͺ λ Ή μΈν°ν리ν°μ΄λ€. shellμΌλ‘ μ λͺ νλ€.
λ§κ·Έλλ‘ lsμ κ°μ λͺ λ Ήμ΄λ₯Ό μ΄μ©νμ¬ μΈν°νμ΄μ€ νλ€. (μΈν°νμ΄μ€: λκ°μ μμ€ν μ΄ μλ‘ μνΈμμ©)
λͺ λ Ή μΈν°ν리ν°μ μ£Όμν μν μ μ¬μ©μκ° νΉμ ν λ€μ λͺ λ Ήμ΄λ₯Ό λ°μμ μ€νμν€λ κ²μ΄λ€.
μ΄λ₯Ό μν΄ λͺ λ Ή μΈν°ν리ν°λ κ·Έμμ²΄λ‘ λͺ λ Ήμ΄λ₯Ό μ€νμν¬ μ½λλ₯Ό κ°μ§κ³ μλ€. μλ₯Ό λ€μ΄, νμΌμ μ§μ°λΌλ λͺ λ Ήμ΄λ λͺ λ Ή μΈν°ν리ν°κ° κ·Έμ λ§λ μ μ ν μμ€ν μ½μ νΈμΆνλ μ½λμ λΆλΆμΌλ‘ μ ννλλ‘ νλ€.
νΉμ λͺ λ Ή μΈν°ν리ν°κ° λͺ λ Ήμ΄λ₯Ό μ΄ν΄νμ§ λͺ»ν κ²½μ°, ν΄λΉ λͺ λ Ήμ΄μ νμΌμ μλ³νμ¬ λ©λͺ¨λ¦¬μ λ‘λλ°κ³ μ€ννλλ‘ νλ€. μλ₯Ό λ€μ΄, "rm file.txt"λΌλ λͺ λ Ήμ΄λ₯Ό μ λ ₯νμ κ²½μ°, rmμ΄λΌλ νμΌμ μ°Ύμμ, λ©λͺ¨λ¦¬μ λ‘λνκ³ , file.txt.λΌλ νλΌλ―Έν°μ ν¨κ» μ€νμν¨λ€. μ΄ λ°©μμ νλ‘κ·Έλλ¨Έκ° μλ‘μ΄ λͺ λ μ΄λ₯Ό μμ€ν μ μ½κ² μΆκ°ν μ μλ€λ μ₯μ μ΄ μλ€.
2.2.2 κ·Έλν½ μ¬μ©μ μΈν°νμ΄μ€ Graphical User Interface
GUIλΌκ³ λ μλ €μ§ κ·Έλν½ μ¬μ©μ μΈν°νμ΄μ€μ΄λ€.
μ¬μ©μμκ² μΉμν λ°©μμΌλ‘, λ§μ°μ€λ₯Ό μμ§μ¬ λ°μ€ν¬ν νλ©΄ μμ μ΄λ―Έμ§λ μμ΄μ½μ κ°λ¦¬ν¬ μ μμΌλ©° λ§μ°μ€λ₯Ό ν΄λ¦ν¨μΌλ‘μ¨ νλ‘κ·Έλ¨μ μ€νμν€κ±°λ νμΌ νΉμ λλ ν 리λ₯Ό μ νν μ μλ€.
2.2.3 ν°μΉ μ€ν¬λ¦° μΈν°νμ΄μ€ Touch-Screen Interface
μ€λ§νΈν°μΈ νλΈλ¦Ώ κ°μ λͺ¨λ°μΌ μμ€ν μμλ λͺ λ Ή μΈν°νμ΄μ€λ λ§μ°μ€μ ν€λ³΄λλ₯Ό μ΄μ©νλ κ·Έλν½ μ¬μ©μ μΈν°νμ΄μ€ λ°©μμ΄ μ€μ©μ μ΄μ§ μκΈ°μ, ν°μΉ μν¬λ¦° μΈν°νμ΄μ€λ₯Ό μ£Όλ‘ μ¬μ©νλ€.
μ°λ¦¬κ° νμμ νλ―, μκ°λ½μ μμ§μ¬ ν°μΉ μ€ν¬λ¦°μ λλ₯΄κ±°λ λ°μ΄μ μ¬μ©ν μ μλ€.
π 2.3 System Calls
μμ€ν μ½μ μ»΄ν¨ν° μμ©νλ‘κ·Έλ¨κ³Ό μ΄μ체μ λ₯Ό μ°κ²°μν€λ μν μ νλ€.
μκΉ μΈκΈνλ μ΄μ체μ κ° μ 곡νλ μλΉμ€λ€μ μμ€ν μ½μ ν΅ν΄ νΈμΆν μ μλ€.
2.3.2 μμ© νλ‘κ·Έλλ° μΈν°νμ΄μ€ Application Programming Interface
μμ κ·Έλ¦Όμμ λ³Ό μ μλ―μ΄, κ°λ¨ν νλ‘κ·Έλ¨μ΄λΌλ λ§μ μμ€ν μ½μ΄ μ¬μ©λλ€. μ¦, μ΄μ체μ λ₯Ό λ§μ΄λ§μ΄ μ¬μ©ν΄μΌ νλ€.
λ³΄ν΅ λλΆλΆμ νλ‘κ·Έλλ¨Έλ μ΄ μ λμ μΈλΆμ¬νμ λ³Ό μΌμ΄ μμ§λ§, μμ© νλ‘κ·Έλ¨ κ°λ°μλ€μ API(application programming interface)μ λ°λΌ νλ‘κ·Έλ¨μ κ°λ°νλ€. μ¬κΈ°μ APIλ 무μμΌκΉ?
APIλ κ° ν¨μμ μ λ¬λλ νλΌλ―Έν°λ€κ³Ό 리ν΄κ°μ ν¬ν¨νμ¬ μμ© νλ‘κ·Έλ¨ κ°λ°μκ° μ¬μ©ν μ μλ ν¨μ μ§ν©μ λ΄κ³ μλ€. μ΄μ체μ μ APIκ° μμ€ν μ½λ€μ΄λΌκ³ μ΄ν΄νλ©΄ μ’λ€.
κ·ΈλΌ APIλ μ΄λ»κ² μκ²ΌμκΉ?
λ§μ½ μ¬μ©μκ° "man read"λΌλ λͺ λ Ήμ΄λ₯Ό μ λ ₯νμ¬ read() ν¨μμ APIλ₯Ό μ»μ΄λ³΄μ. μλμ κ°μ΄ λνλ μμ κ²μ΄λ€.
λλΆλΆμ νλ‘κ·Έλλ¨Έλ APIλ₯Ό ν΅ν΄ μμ€ν μ½μ νΈμΆνλ©°,
API μ¬μ©μλ κ° ν¨μκ° μ΄λ»κ² μκ²Όλμ§, μ΄λ€ λ°©μμΌλ‘ λμκ°λμ§ λͺ°λΌλ λλ€. κ·Έμ APIλ₯Ό μ€μνκ³ νΈμΆ κ²°κ³Όλ‘μ μ΄μ체μ κ° λ¬΄μμ ν μ§λ§ νλ¨νλ©΄ λλ€.
+ μ μ§μ νΈμΆνμ§ μκ³ APIλ₯Ό μ¬μ©ν κΉ?
1. νΈμμ±μ μν΄ - μ§μ νΈμΆνλ κ²μ λ§€μ° νλ€λ€. νμ§λ§ λΆνμ€μ±μ μ κ±°νκΈ° μν΄ μ§μ μ μΌλ‘ μ¬μ©νκΈ°λ νλ€.
2. ν΄λμ±μ μν΄ - μ΄λμλ μ μ©ν μ μλ€.
κ·ΈλΌ μ¬μ©μ μμ© νλ‘κ·Έλ¨μμ μμ€ν μ½μ νΈμΆνλ©΄ μ΄λ»κ² μ²λ¦¬λ κΉ?
μμ€ν μ½ μΈν°νμ΄μ€λ μμ€ν μ½μ λν λ§ν¬ μν μ νλ€. μμ κ·Έλ¦Όμμλ open() ν¨μλ₯Ό ν΅ν΄ μ΄μ체μ κ° νμν μμ€ν μ½μ νΈμΆνλ€. μΌλ°μ μΌλ‘ λ²νΈλ κ° μμ€ν μ½κ³Ό μ°κ²°λμ΄ μμΌλ©°, μμ€ν μ½ μΈν°νμ΄μ€κ° λ²νΈλ€μ λ°λΌ μΈλ±μ±λ ν μ΄λΈ(μμ€ν μ½ ν μ΄λΈ)μ μ μ§νλ€.
2.3.3 μμ€ν μ½μ μ ν Types of System Calls
μμ€ν μ½μ λλ΅ 6κ°μ μΉ΄ν κ³ λ¦¬λ‘ λλ μ μλ€.
- νλ‘μΈμ€ μ μ΄ process control
- λλ΄κΈ° end, μ€μ§ abort
- μ€ν μ€μΈ νλ‘κ·Έλ¨μ μνμ μ μμ μΌλ‘λ λΉμ μμ μΌλ‘ μ’ λ£(μλ¬λ₯Ό λ°ν)ν μ μμ΄μΌ νλ€.
- μ μ¬ load, μν execute
- ν νλ‘κ·Έλ¨μ μ€ννκ³ μλ νλ‘μΈμ€λ μμ μ΄ λ€λ₯Έ νλ‘κ·Έλ¨μ λ‘λνκ³ μ€ννκΈ°λ₯Ό μν μ μλ€.
- λ‘λλ νλ‘κ·Έλ¨μ΄ μ’ λ£λμμ λ, μ΄λλ‘ controlμ λ°νν΄μΌ νλκ°μ λν μ§λ¬Έμ΄ μκΈΈ μ μλ€.
- λ§μ½ controlμ΄ κΈ°μ‘΄ νλ‘κ·Έλ¨μΌλ‘ λμκ°λ€λ©΄, κΈ°μ‘΄ νλ‘κ·Έλ¨μ memory imageλ₯Ό μ μ₯ν΄λμ΄μΌ νλ€.
- λ§μ½ λ νλ‘κ·Έλ¨μ΄ λ³ννκ² μνλλ€λ©΄, multi-programming λ μλ‘μ΄ μμ μ΄λ νλ‘μΈμ€λ₯Ό μμ±νλ€.
- νλ‘μΈμ€ μμ±, νλ‘μΈμ€ μ’
λ£
- μλ‘μ΄ μμ μ΄λ νλ‘μΈμ€μ μμ±νλ€λ©΄, μ΄λ€μ μ€νμ μ μ΄ν μ μμ΄μΌ νλ€.
- νλ‘μΈμ€ μμ± νλ, μμ± κ²°μ
- μμ μ μ°μ μμ, μ΅λ ν λΉκ°λ₯ν μ€νμκ° λ±μ ν¬ν¨νμ¬ μμ±μ κ²°μ ν μ μμ΄μΌ νλ€.
- μκ° κΈ°λ€λ¦¬κΈ° wait for time
- μλ‘μ΄ μμ μ΄λ νλ‘μΈμ€λ₯Ό μμ±ν νμλ μ΄λ€μ μ€νμ΄ λλκΈ°λ₯Ό κΈ°λ€λ¦΄ νμκ° μμ μ μλ€.
- μ΄λ²€νΈ
- wait event : νΉμ μ¬κ±΄μ΄ μΌμ΄λ λκΉμ§ κΈ°λ€λ¦΄ μ μμ΄μΌ νλ€.
- signal event : κ·Έ μ¬κ±΄μ΄ μΌμ΄λλ©΄ μ νΈλ₯Ό λ³΄λΌ μ μμ΄μΌ νλ€.
- ν λΉκ³Ό free λ©λͺ¨λ¦¬ allocate and free memory
- λ μ΄μμ νλ‘μΈμ€λ€μ΄ 곡μ νλ λ°μ΄ν°λ€μ λν΄ μΌκ΄μ±μ 보μ₯ν΄μΌ ν νμμ±μ΄ μμ μ μλ€.
- μ΄μ μ΄μ체μ λ μ’ μ’ νλ‘μΈμ€κ° 곡μ λ°μ΄ν°λ₯Ό lock ν μ μλ μμ€ν μ½μ μ 곡νλ€.
- λλ΄κΈ° end, μ€μ§ abort
- νμΌ μ‘°μ file management
- μμ± create, μμ delete
- μ΄κΈ° open, λ«κΈ° close
- μ½κΈ° read, μ°κΈ° write, μμΉ λ³κ²½ reposition
- μμΉ λ³κ²½μ μ) νμΌ λμΌλ‘ 건λλ°κΈ°
- μμ± νλ λ° κ²°μ get file attributes, set file attributes
- νμΌ μμ±μ λν μ 보λ₯Ό μ»μ μ μκ³ , λ³κ²½ν μ μλ€.
- μ₯μΉ μ‘°μ device management
- νλ‘μΈμ€λ μμ μ κ³μ μννκΈ° μν΄ λ©μΈ λ©λͺ¨λ¦¬λ λμ€ν¬ λλΌμ΄λΈ λ±μ μΆκ° μμμ νμλ‘ ν μ μλ€.
- μ₯μΉλ₯Ό μꡬ request devices, μ₯μΉ λ°©μΆ release devices
- λ€μμ μ¬μ©μκ° λμμ μ¬μ©νλ μμ€ν μ λ μ μ μΈ λλ°μ΄μ€ μ¬μ©μ 보μ₯λ°κΈ° μν΄ request ν΄μΌ νλ€.
- λλ°μ΄μ€ μ¬μ©μ΄ λλλ©΄ λ°λμ release ν΄μΌ νλ€.
- μ½κΈ° read, μ°κΈ° write, μμΉ λ³κ²½ reposition
- μΌλ¨ λλ°μ΄μ€λ₯Ό requestνμ¬ ν λΉλλ©΄, ν΄λΉ λλ°μ΄μ€λ₯Ό μ½κ³ , μ°κ³ , μμΉ λ³κ²½ ν μ μλ€.
- I/O μ₯μΉμ νμΌλ€ κ°μλ μ μ¬μ±μ΄ λ§κΈ° λλ¬Έμ, UNIXλ₯Ό ν¬ν¨ν λ§μ μ΄μ체μ κ° μ΄λ€ λμ ν΅ν©ν νμΌ-μ₯μΉ κ΅¬μ‘° file-device structureλ‘ κ²°ν©νλ€.
- μ₯μΉ μμ± νλ λ° κ²°μ get device attributes, set device attributes
- μ₯μΉμ λ Όλ¦¬μ λΆμ°© λλ λΆλ¦¬ logically attach or detach devices
- μ 보 μ μ§λ³΄μ information maintenance
- μκ°κ³Ό λ μ§μ μ€μ κ³Ό νλ get/set time or date
- μμ€ν λ°μ΄ν°μ μ€μ κ³Ό νλ get/set system data
- νλ‘μΈμ€, νμΌ, μ₯μΉ μμ±μ νλ get process, file, or device attributes
- νλ‘μΈμ€, νμΌ, μ₯μΉ μμ±μ μ€μ set process, file, or device attributes
- ν΅μ communications
- Messaging Passing Model
- ν΅μ νλ λ νλ‘μΈμ€κ° μ 보λ₯Ό κ΅ννκΈ° μν΄ μλ‘ λ©μμ§λ₯Ό μ£Όκ³ λ°λλ€.
- λ©μμ§λ λ νλ‘μΈμ€ μ¬μ΄μμ μ§μ κ΅νλκ±°λ, λ©μΌλ°μ€λ₯Ό ν΅ν΄ κ°μ μ μΌλ‘ κ΅νλ μ μλ€.
- μΆ©λμ΄ μκΈ° λλ¬Έμ μλμ λ°μ΄ν°λ₯Ό κ΅ννλλ° μ’λ€.
- Shared Memory Model
- νλ‘μΈμ€λ λ€λ₯Έ νλ‘μΈμ€κ° μμ ν λ©λͺ¨λ¦¬ μμμ λν΄ μ κ·ΌνκΈ° μν΄ μμ€ν μ½μ μ¬μ©νλ€.
- μ μμ μΌλ‘, μ΄μ체μ λ ν νλ‘μΈμ€κ° λ€λ₯Έ νλ‘μΈμ€μ λ©λͺ¨λ¦¬λ₯Ό μ κ·Όνλ κ²μ λ§μΌλ €κ³ νλ€.
- μ΄μ, Shared Memory Modelμμλ μ΄λ° μ νμ μ κ±°ν΄μΌ ν νμμ±μ΄ μλ€.
- μ΅λ μλμ νΈλ¦¬ν ν΅μ μ ν μ μμ§λ§, λκΈ°νμ λν λ¬Έμ κ° μλ€.
- Messaging Passing Model
- λ³΄νΈ protection
- κ³Όκ±°μλ λ€μμ μ¬μ©μλ₯Ό κ°μ§λ λ€μ€ νλ‘κ·Έλ¨ μμ€ν μμλ§ κ³ λ €λλ λ¬Έμ μμΌλ, λ€νΈμνΉκ³Ό μΈν°λ·μ μΆνμΌλ‘, μλ²μμ ν΄λμ© μ»΄ν¨ν°κΉμ§ λͺ¨λ μ»΄ν¨ν° μμ€ν μμ κ³ λ €ν΄μΌ νλ€.
π 2.4 μμ€ν μλΉμ€ System Services
μμ€ν μ νΈλ¦¬ν° system utilitiesλ‘λ μλ €μ Έ μμΌλ©°, νλ‘κ·Έλ¨ κ°λ°κ³Ό μ€νμ μν νΈλ¦¬ν νκ²½μ μ 곡νλ€.
λ€μκ³Ό κ°μ μΉ΄ν κ³ λ¦¬λ‘ λΆλ₯ν μ μλ€.
- νμΌ κ΄λ¦¬ file management
- μν μ 보 status information
- νμΌ λ³κ²½ file modificatio
- νλ‘κ·Έλλ° μΈμ΄ μ§μ programming-language support
- νλ‘κ·Έλ¨ μ μ¬μ μν program loading and execution
- ν΅μ communications
- λ°±κ·ΈλΌμ΄λ μλΉ background services
λλΆλΆμ μ΄μ체μ λ μμ€ν μλΉμ€μ ν¨κ» μΌλ°μ μΈ λ¬Έμ μ μ ν΄κ²°νκ±°λ, μΌλ°μ μΈ μ°μ°μ μννλλ° μ μ©ν νλ‘κ·Έλ¨μ μ 곡νλ€.
π 2.5 λ§μ»€μ λ‘λ Linkers and Loaders
λ³΄ν΅ νλ‘κ·Έλ¨μ λ°μ΄λ리 μ€ν νμΌλ‘ λμ€ν¬μ μ‘΄μ¬νλλ°, CPUμμ μ€ννκΈ° μν΄μλ λ©λͺ¨λ¦¬λ‘ κ°μ Έμμ νλ‘μΈμ€μ λ¬Έλ§₯μ λμμΌ νλ€. μ΄ κ³Όμ μ μμ κ·Έλ¦ΌμΌλ‘ λνλ΄μλ€.
μ°μ , source programμ μ»΄νμΌλ¬ compilerλ₯Ό ν΅ν΄ object fileλ‘ λ³νλλ€.
κ·ΈλΌ λ§μ»€ linkerκ° object fileκ³Ό λ€λ₯Έ object fileλ€μ κ²°ν©νμ¬ νλμ μ€ν κ°λ₯ν μ΄μ§ νμΌλ‘ λ§λ λ€.
λ‘λ loaderλ μ΄μ§ μ€ν νμΌ binary executable fileμ λ©λͺ¨λ¦¬λ‘ λΆλ¬μ νλ‘κ·Έλ¨μ μ€νμν¬ μ μλ€.
dynamically linked libraries(DLLs)λ₯Ό ν΅ν΄ κ°μ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ νμΌλ€μ΄ λΆλ¬μ¨ λΌμ΄λΈλ¬λ¦¬λ₯Ό 곡μ νμ¬ μ¬μ©ν μ μλ€. μλ₯Ό λ€μ΄, μλμ°λ DLLsλ₯Ό μ§μνμ¬ μ€ν νμΌλ‘ μ¬μ©λμ§ μμ μ μλ λΌμ΄λΈλ¬λ¦¬λ€μ λ§ν¬νκ±°λ λ‘λνλ κ²μ λ§λλ€. (λ·λ¨μμμ μμΈν λ€λ£° μμ )
π 2.7 μ΄μ체μ μ€κ³κ³Ό ꡬν Operating-System Design and Implementation
μ΄μ체μ λ₯Ό μ€κ³νκ³ κ΅¬ννλ κ²μλ μ λ΅μ΄ μμ§λ§ μ±κ³΅μ μΌλ‘ μ μ¦λ μ κ·Όλ²μ λν΄ μ΄ν΄λ³΄μ.
2.7.1 μ€κ³ λͺ©ν design goals
μ€κ³ μ κ³ λ €ν΄μΌ ν μꡬμ¬νμ μ¬μ©μ λͺ©μ κ³Ό μμ€ν λͺ©μ μΌλ‘ ꡬλΆμ§μ μ μλ€.
μ¬μ©μ μ μ₯μμ μμ€ν μ μ¬μ©νκΈ° νΈλ¦¬ν΄μΌ νκ³ , λ°°μ°κΈ° μ¬μμΌ νλ©°, μ λ’°μ± μκ³ , μμ νκ³ , λΉ¨λΌμΌνλ€.
(convenient to use, easy to learn and use, reliable, safe, fast)
μμ€ν μ μ₯μμ μ΄μ체μ λ μ€κ³, ꡬν, μ μ§ λ³΄μκ° μ¬μμΌ νλ©°, μ μμ±, μ λ’°μ±, ν¨μ¨μ± λ±μ κ°μ ΈμΌ νλ€.
(easy to design, implement, and maintain, flexible, reliable, error free, efficient)
2.7.2 κΈ°λ²κ³Ό μ μ± mechanisms and policies
κΈ°λ² mechanismμ μ΄λ»κ² ν κ²μΈκ°(how to do something)μ κ²°μ νλ κ²μ΄λ€.
μ μ± policiesλ 무μμ ν κ²μΈκ°(what will be done)λ₯Ό κ²°μ νλ κ²μ΄λ€.
μλ₯Ό λ€μ΄, timer mechanismκ³Ό scheduing policyλ μ μ± μ΄κ³ 30μΌλ§λ€ λΉλ°λ²νΈλ₯Ό λ§λ£μν€λ κ²μ κΈ°λ²μ΄λ€.
κΈ°λ²κ³Ό μ μ± μ λΆλ¦¬λ flexibilityμ μν΄ μ€μνλ€.
μ μ± μ μΈμ μ΄λμλ λ³κ²½λ μ μκΈ°μ, κΈ°λ²κ³Ό μ μ± μ λΆλ¦¬νμ§ μμ κ²½μ°μλ κΈ°λ²μ λ°κΏμΌ ν μλ μκ³ μ΄κ²μ λ°λμ§νμ§ μλ€.
2.7.3 ꡬν implementation
μ΄μ°½κΈ° μ΄μ체μ λ μ΄μ λΈλ¦¬μ΄λ‘ ꡬνλμμΌλ©°, νμ¬ λλΆλΆμ μ΄μ체μ λ Cλ C++κ³Ό κ°μ κ³ κΈμΈμ΄λ‘ ꡬνλμ΄ μλ€.
κ³ κΈμΈμ΄λ‘ ꡬνν κ²½μ°μ μ₯μ μ λ€μκ³Ό κ°λ€.
- λ λΉ¨λΌμ§ μ€ν μκ° faster implementation time
- μ€μ΄λ μ½λ λΌμΈ μ compact and easier to understand/debug
- μ»΄νμΌλ¬μ λ°μ μΌλ‘ 컀λ μ½λ μ체λ λ κ°μ λ νν improved compiler will improve the generated code
- λ€λ₯Έ νκ²½μΌλ‘ μ½λλ₯Ό λ³κ²½νκΈ° μ¬μμ§ easier to port
κ³ κΈμΈμ΄λ‘ ꡬνν κ²½μ°μ λ¨μ μ λ€μκ³Ό κ°λ€.
- (μΈλΆμ μΌλ‘ 컨νΈλ‘€νκΈ° μ΄λ €μμ Έμ) μλκ° λλ €μ§κ³ μ μ₯ μ₯μΉκ° λ§μ΄ μμλλ€.
- νμ§λ§ μ’μ μλ£κ΅¬μ‘°μ μκ³ λ¦¬μ¦μ μ¬μ©ν¨μΌλ‘μ¨ μμ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ€.
π 2.8 μ΄μ체μ ꡬ쑰 Operating-System Structure
2.8.1 λͺ¨λλ¦¬ν± κ΅¬μ‘° Monolithic Structure
Monolithic ꡬ쑰μμλ system call interfaceμ kernel interface μ¬μ΄μ λͺ¨λ κ²μ΄ kernelμ΄λ€.
μλ§μ κΈ°λ₯λ€μ΄ ν λ©μ΄λ¦¬μ λ€μ΄κ° μκΈ°μ μμ€ν ν λΆλΆμ λ³νκ° λ€λ₯Έ λΆλΆλ€μ μν₯μ μ€ μ μμ΄μ ꡬννκ±°λ μ μ§ λ³΄μνκΈ° μ΄λ ΅λ€λ λ¨μ μ΄ μλ€.
νμ§λ§ μ±λ₯ μΈ‘λ©΄μμ μμ€ν μ½ μΈν°νμ΄μ€μμ ν΅μ νλ κ²½μ° μ€λ²ν€λκ° κ±°μ μκ³ μ»€λ λ΄μ ν΅μ μλκ° λΉ λ₯΄λ€λ μ₯μ μ΄ μλ€. μ΄λ¬ν μ₯μ λλ¬Έμ Linux, Windowsλ μ¬μ ν μ΄ κ΅¬μ‘°λ₯Ό μ¬μ©νκ³ μλ€.'
2.8.2 κ³μΈ΅μ ꡬ쑰 Layered Approach
κ³μΈ΅μ ꡬ쑰λ μ΄μ체μ λ₯Ό μΈλΆνν΄ κ³μΈ΅μ λΆλ¦¬ν λ°©μμ΄λ€.
layerκ° 0μΈ κ°μ₯ μλμ μλ κ³μΈ΅μ νλμ¨μ΄μ΄λ©°, layerκ° NμΈ κ°μ₯ μμ μλ κ³μΈ΅μ μ¬μ©μ μΈν°νμ΄μ€μ΄λ€.
μμμ mμΈ΅μ μμ λ³΄λ€ μλμ μλ νμμΈ΅λ€μ μλΉμ€λ€λ§ μ¬μ©ν μ μλ€.
λ¬Έμ κ° μκ²Όμ κ²½μ° κ³μΈ΅λ³λ‘ μμ ν μ μκΈ°μ μ μ§ λ³΄μκ° νΈλ¦¬νλ€λ μ₯μ μ΄ μλ€.
νμ§λ§ κ³μΈ΅μ μ μνκΈ°κ° μ΄λ ΅κ³ , ν¨μ νΈμΆ μ λ¨κ³λ₯Ό λ§μ΄ κ±°μ³μΌ νλ κ²½μ° λΉν¨μ¨μ μΌ μ μλ€λ λ¨μ μ΄ μλ€.
2.8.3 λ§μ΄ν¬λ‘컀λ Microkernels
λ§μ΄ν¬λ‘컀λμ 컀λμμ ν΅μ¬μ μΈ μμλ§ λ¨κ²¨λ, μ΄λ₯Έλ° κ°λ²Όμ΄ 컀λμ΄λ€.
컀λμ΄ μ»€μ§μλ‘ λ¬Έμ κ° μκΈΈ κ°λ₯μ±μ΄ λμμ§κ³ , μ μ§ λ³΄μκ° νλ€μ΄μ§κΈ° λλ¬Έμ μ λ§ νμν μ΅μ κΈ°λ₯λ§μ λ¨κ²¨λμ΄ μ»€λμ λ κ°λ³κ² λ§λ€ νμκ° μμλ€.
λ§μ΄ν¬λ‘컀λμ μ£Όμ κΈ°λ₯μ λ€μκ³Ό κ°λ€.
- νλ‘μΈμ€κ° ν΅μ interprocess communication
- λ©λͺ¨λ¦¬ κ΄λ¦¬ memory management
- CPU μ€μΌμ€λ§ CPU scheduling
λ§μ΄ν¬λ‘컀λμ μ₯μ μ λ€μκ³Ό κ°λ€.
- λͺ¨λ μλ‘μ΄ μλΉμ€λ μ¬μ©μ 곡κ°μ μΆκ°λκΈ° λλ¬Έμ κ²°κ³Όμ μΌλ‘ 컀λμ μμ μ΄ λ°μνμ§ μμμ μ΄μ체μ λ₯Ό νμ₯νκΈ° λ μ½λ€. highly extensible OS kernel
- νλμ νλμ¨μ΄ μ€κ³μμ λ€λ₯Έ κ²μΌλ‘ μ΄μνκΈ° μ½λ€. easy to port kernels
- 보μμ±, μμ μ±μ΄ λλ€ more secure and reliable
λ§μ΄ν¬λ‘컀λμ λ¨μ μ λ€μκ³Ό κ°λ€.
- λμ΄λ μ€λ²ν€λ λλ¬Έμ μ±λ₯μ μν₯μ΄ μμ μ μλ€. impact on performance
2.8.4 λͺ¨λ modules
μ΄ λ°©λ²μμ 컀λμ ν΅μ¬μ μΈ κ΅¬μ±μμμ μ§ν©μ κ°μ§κ³ μκ³ , λΆν μμ λλ μ€ν μ€μ λΆκ°μ μΈ μλΉμ€λ€μ λͺ¨λμ ν΅ν΄ μ°κ²°νλ€. μ€κ³ μ μ€μν μ μ ν΅μ¬ μλΉμ€λ₯Ό μ 곡νκ³ λ€λ₯Έ μλΉμ€λ€μ 컀λμ΄ μ€νλλ λμ λμ μΌλ‘ ꡬννλ κ²μ΄λ€.
μ 체μ μΈ κ²°κ³Όλ κ° λΆλΆμ΄ μ μλκ³ λ³΄νΈλ μΈν°νμ΄μ€λ₯Ό κ°μ§λ€λ μ μμ κ³μΈ΅μ ꡬ쑰μ λΉμ·νμ§λ§ λͺ¨λμμ μμμ λ€λ₯Έ λͺ¨λμ νΈμΆν μ μλ€λ μ μμ κ³μΈ΅μ κ΅¬μ‘°λ³΄λ€ μ μ°νλ€κ³ ν μ μλ€.
2.8.5 νμ΄λΈλ¦¬λ μμ€ν hybrid systems
νλμ κ΅¬μ‘°λ§ μ¬μ©νλ μ΄μ체μ λ κ±°μ μλ€. μλ‘ λ€λ₯Έ ꡬ쑰λ₯Ό κ²°ν©νμ¬ μ¬μ©νλ€.
μλ₯Ό λ€μ΄, Linux, Windowsλ monolithic ꡬ쑰λ₯Ό μ¬μ©νλ©΄μ moduleμ μ§μνλ€.
π 2.9 μ΄μ체μ λΉλ©κ³Ό λΆν building and booting an operation system
2.9.1 μ΄μ체μ μμ± operating-system generation
μ΄μ체μ λ λ€μν μ£Όλ³ κ΅¬μ±μ κ°μ§, μ¬λ¬ λΆλ₯μ κΈ°κ³μμ μνλλλ‘ μ€κ³λλ κ²μ΄ μΌλ°μ μ΄λ€.
μ΄ κ²½μ°, μμ€ν μ κ° specific computer siteλ₯Ό μν΄ κ΅¬μ±λκ±°λ λλ μμ±λμ΄μΌ νλ€.
μ΄ μ μ°¨λ₯Ό μμ€ν μμ± SYSGENμ΄λΌκ³ νλ€.
2.9.2 μμ€ν λΆνΈ system boot
μ»΄ν¨ν°κ° μ μμ μΌκ±°λ μ¬λΆν λ±μ μ¬κ±΄μ λ°μΌλ©΄ λͺ λ Ή λ μ§μ€ν°λ 미리 μ§μ λ λ©λͺ¨λ¦¬ μμΉλ₯Ό κ°λ¦¬ν€κ³ , κ·Έκ³³μμλΆν° μ€νμ μμνλ€. ν΄λΉ μμΉμλ μ΅μ΄μ bootstrap programμ΄ μ‘΄μ¬νλ€. RAMμ μμ€ν μμ μμλ μ μ μλ μνκ° λκΈ° λλ¬Έμ bootstrap programμ ROM μμ μ μ₯λλ€.
bootstrap programμ λ¨Όμ κΈ°κ³μ μνλ₯Ό μ§λ¨νμ¬ μ΄μμ΄ μλμ§ νμΈνλ€. μ΄νμ CPU Register, device controller, main memory λ± μμ€ν μ λ°μ κ±Έμ³ μ΄κΈ°ννλ€. μ΄ μμ μ΄ λλλ©΄, bootstrap programμ μ΄μ체μ λ₯Ό μμνλ€.
π 2.10 μ΄μ체μ λλ²κΉ operation-system debugging
λλ²κΉ μ νλμ¨μ΄μ μννΈμ¨μ΄μμμ μμ€ν μ€λ₯λ₯Ό λ°κ²¬νκ³ μμ νλ κ²μ λ§νλ€.
2.10.1 μ₯μ λΆμ failure analysis
β‘οΈ νλ‘μΈμ€κ° μ€ν¨νμ λ, μ΄μ체μ λ νλ‘μΈμ€κ° μ¬μ©νλ λ©λͺ¨λ¦¬λ₯Ό μΊ‘μ²ν λ€ 'core dump'λ₯Ό μ·¨νκ³ μ΄νμ λΆμμ νμΌλ‘ μ μ₯νλ€.
β‘οΈ μ»€λ μ₯μ λ crashλΌκ³ λΆλ¦°λ€. ν΄λΉ μ€λ₯ μ 보λ λ‘κ·Έ νμΌλ‘ μ μ₯λκ³ , λ©λͺ¨λ¦¬μ μνκ° 'crash dump'μ μ μ₯λλ€.
2.10.2 μ±λ₯ λͺ¨λν°λ§κ³Ό μ‘°μ performance monitoring and tuning
λ³λͺ© μ§μ bottlenecksμ μ κ±°ν¨μΌλ‘μ¨ μ±λ₯μ ν₯μμν€λ €κ³ νλ κ²λ λλ²κΉ μ΄λΌκ³ ν μ μλ€.
μ΄μ λ³λͺ© μ§μ μ λ°κ²¬νκΈ° μν΄ μμ€ν μ±λ₯μ κ°μν μ μμ΄μΌ νλ©°, μμ€ν λμμ μΈ‘μ νκ³ νμν μ μλ λ°©λ²μ κ°μ§κ³ μμ΄μΌ νλ€. (ex. μλμ° μμ κ΄λ¦¬μ)
2.10.3 μΆμ tracing
μΆμ λꡬλ μμ€ν μ½ νΈμΆ κ³Όμ κ³Ό κ°μ ꡬ체μ μΈ μ΄λ²€νΈμ λν μ 보λ₯Ό λͺ¨μλ€. μ΄λ¬ν μ 보λ μ΄μ체μ λ₯Ό λ λμ λ°©ν₯μΌλ‘ κ°μ ν μ μλλ‘ νλ€.
