1.4 μ΄μ체μ μ ꡬ쑰
Multiprogramming
λ©ν° νλ‘κ·Έλλ°μ CPUκ° μνν μμ (μ½λμ λ°μ΄ν°)μ νμ νλ κ°μ§λλ‘ μμ μ ꡬμ±νμ¬ CPU μ΄μ©λ₯ μ μ¦κ°μν¨λ€. μ¦, μ¬λ¬ νλ‘κ·Έλ¨μ λ©λͺ¨λ¦¬μ λ‘λνκ³ ν νλ‘μΈμ€(ex.IO)λ₯Ό κΈ°λ€λ¦¬λ λμ λ€λ₯Έ νλ‘μΈμ€μ μμ μ μννλ μμ€ν μ΄λ€.
λ©ν° νλ‘κ·Έλλ°μ μμ΄λμ΄λ λ€μκ³Ό κ°λ€. OSλ ν λ²μ μ¬λ¬ μμ μ λ©λͺ¨λ¦¬μ μ μ¬νλ€. μ΄ μμ μ μ²μμ λμ€ν¬μ μμ ν(pool)μ μ μ§λμ΄ λ©μΈ λ©λͺ¨λ¦¬μ ν λΉμ κΈ°λ€λ¦°λ€. Job schedulingμ μν΄ νλμ μμ μ΄ μ νλκ³ μ€νλλ€. μ νλ μμ μ μ μΆλ ₯μ μ’ λ£λ₯Ό κΈ°λ€λ¦¬λ λ±κ³Ό κ°μ΄ μ΄λ€ μΌμ κΈ°λ€λ €μΌ ν λ λ€λ₯Έ μμ μΌλ‘ μ νν΄ μμ μ μνν¨μΌλ‘μ¨ CPUκ° μ¬μ§ μκ² νλ€.
- Multiprogramming: OS ꡬ쑰
- Multiprocessing: μ»΄ν¨ν° ꡬ쑰
TimeSharing(multitasking)
μλΆν μμ€ν μ λ©ν° νλ‘κ·Έλλ°μ νμ₯μΌλ‘, νλ‘μΈμ€λ§λ€ μμ μκ°μ μ ν΄λκ³ λ²κ°μκ°λ©΄μ μμ νλ λ°©μμ΄λ€. CPUκ° λ€μμ μμ μ κ΅λλ‘ μννμ§λ§, λ§€μ° λΉλ²νκ² κ΅λκ° μΌμ΄λ νλ‘κ·Έλ¨μ΄ μ€νλλ λμ μ¬μ©μλ λμμ μμ©νλ κ²μ²λΌ λλλ€. νλ‘μΈμ€λ λ©λͺ¨λ¦¬μ μ μ¬λμ΄ μκ³ , μ€νλκ³ μλ νλ‘κ·Έλ¨μ λ»νλ©° μμ μ΄ μ’ λ£λκ±°λ μ μΆλ ₯μ μνν νμκ° μμ λκΉμ§ μμ£Ό 짧μ μκ° λμλ§ μ€νλλ€.
μ¬μ©μλ ν€λ³΄λλ λ§μ°μ€ κ°μ μ λ ₯μ₯μΉλ₯Ό μ΄μ©ν΄ λͺ λ Ήνκ³ μΆλ ₯ μ₯μΉμ μ¦κ°μ μΈ μλ΅μ κΈ°λ€λ¦¬κΈ° λλ¬Έμ μλ΅μκ°(Response Time)μ΄ μ§§μμΌ νλ€. μλΆν μμ€ν μμ λμκ³Ό λͺ λ Ήμ λμ²΄λ‘ μ§§κΈ° λλ¬Έμ 짧μ μκ°λμλ§ CPU μκ°μ΄ νμνλ€. μ μ ν μλ΅μκ°μ μ€μνμ μν΄ λ¬μ±λλλ°, μ€μνμ μ£Ό λ©λͺ¨λ¦¬μμ λμ€ν¬λ‘ μ μ νκ² μ€μμΈ, μ€μμμ μν¨λ€. μλ΅μκ°μ λ ν©λ¦¬μ μΌλ‘ 보μ₯νκΈ° μν΄ κ°μλ©λͺ¨λ¦¬(Virtual Memory) λ₯Ό μ¬μ©νλ€. νλ‘κ·Έλ¨μ΄ μ€μ λ©λͺ¨λ¦¬(Physical Mememory)λ³΄λ€ ν¬κΈ°κ° λ 컀λ λλ©° 9μ₯μμ λ€λ£¬λ€.
- μλΆν μμ€ν μμ νμΌ μμ€ν μ λ€μμ λμ€ν¬ μμ μ‘΄μ¬νλ―λ‘, λμ€ν¬ κ΄λ¦¬ κΈ°λ²μ΄ λ°λμ μ 곡λμ΄μΌν¨(12μ₯)
- μμμ 보νΈνλ κΈ°λ²μ μ 곡ν΄μΌ ν¨(14μ₯)
- μμ μ΄ μ§μμ μ°νκ² μ€νλκΈ° μν΄ μλΆν μμ€ν μ μμ λκΈ°νμ ν΅μ κΈ°λ²μ μ 곡ν΄μΌ ν¨(6μ₯)
- μμ μ΄ λ°λλ½μ κ±Έλ¦¬μ§ μκ² ν΄μΌ ν¨(7μ₯)
Scheduling
μλΆν κ³Ό λ©ν°νλ‘κ·Έλλ° λͺ¨λ μ¬λ¬ μμ μ λμμ λ©λͺ¨λ¦¬μ μ¬λ¦¬λ λ°©μμ΄λ€.
- Job Scheduling(μμ μ€μΌμ₯΄λ§, 5μ₯):OSλ λ©λͺ¨λ¦¬μ μλ¦¬κ° μλ κ²½μ°λ₯Ό κ³ λ €ν΄ μ΄λ€ κ²μ μ€νν μ§ μ νν΄μΌ ν¨
- CPU Scduling(5μ₯): μ¬λ¬ κ°μ μμ μ΄ λμμ μ€ν μ€λΉκ° λμ΄ μμΌλ©΄ μμ€ν μ κ·Έλ€ μ€ νλλ₯Ό μ νν΄μΌ ν¨
λ©λͺ¨λ¦¬μ μ¬λ¬ κ°μ νλ‘κ·Έλ¨μ΄ λμμ μλ κ²½μ° λ©λͺ¨λ¦¬ κ΄λ¦¬κ° νμν λ° μ΄λ 8μ₯,9μ₯μμ λ€λ£¬λ€.
1.5 μ΄μ체μ μ°μ°
νλμ μ΄μ체μ λ μΈν°λ½νΈ ꡬλμ(Interrupt Driven)μ΄λ€. Eventλ νμ μΈν°λ½νΈλ νΈλ©μ λ°μμμΌ μ νΈλ₯Ό 보λΈλ€. νΈλ©(λλ μμΈ)μ μ€λ₯(0μΌλ‘ λλκΈ°, out of index λ±) λλ μ¬μ©μ νλ‘κ·Έλ¨μ΄ OS μλΉμ€ μν μμ²μ μν΄ μ λ°λλ μννΈμ¨μ΄μ μν΄ μμ±λ μΈν°λ½νΈμ΄λ€.
1.5.1 Dual-mode operation
OSμ μ μ ν λμμ 보μ₯νκ³ OSμ½λμ μ€νκ³Ό μ¬μ©μ μ μ μ½λμ μ€νμ ꡬλΆνκΈ° μν΄ μ¬μ©μ λͺ¨λμ 컀λ λͺ¨λ, λ κ°μ λ 립λ μ°μ° λͺ¨λλ₯Ό νμλ‘ νλ€.
- 컀λ λͺ¨λμ νλμ¨μ΄ λͺ¨λ λΉνΈ: 0
- μ¬μ©μ λͺ¨λμ νλμ¨μ΄ λͺ¨λ λΉνΈ: 1
μμ€ν λΆνΈ μ, νλμ¨μ΄λ 컀λ λͺ¨λμμ μμνλ€. κ·Έ ν OSκ° μ μ¬λκ³ , μ¬μ©μ λͺ¨λμμ μ¬μ©μ νλ‘μΈμ€κ° μμλλ€. νΈλ©μ΄λ μΈν°λ½νΈκ° λ°μν λλ§λ€ νλμ¨μ΄λ μ¬μ©μ λͺ¨λμμ 컀λ λͺ¨λλ‘ μ ννλ€. νλμ¨μ΄λ 컀λ λͺ¨λμΌ λλ§λ¨ νΉκΆ λͺ λ Ή(priviledged instruction)μ μ€ννλ€. μ¬μ©μ λͺ¨λμμ μ΄λ₯Ό μννλ €κ³ μλνλ©΄ νλμ¨μ΄λ OSλ‘ νΈλ©μ 건λ€. νΉκΆ λͺ λ Ήμλ 컀λ λͺ¨λμ μ ν, IO μ μ΄, νμ΄λ¨Έ κ΄λ¦¬, μΈν°λ½νΈ κ΄λ¦¬λ₯Ό μν λͺ λ Ήμ΄λ€μ΄λ€.
μμ€ν
νΈμΆ(System call)
μ¬μ©μκ° μ»€λ λͺ¨λμ κΈ°λ₯μ νΈμΆνκΈ° μν λ°©λ²μΌλ‘, μ¬μ©μ νλ‘κ·Έλ¨μ΄ μμ μ λμ ν΄ OSκ° μννλλ‘ μ§μ λ μμ
μ OSμκ² μμ²ν μ μλ λ°©λ²μ μ 곡νλ€. νΈμΆμ Trap, Syscall λͺ
λ Ήμ΄λ₯Ό ν΅ν΄ μΈν°λ νΈ λ²‘ν°μ νΉμ μμΉλ‘ νΈλ©μ κ±°λ ννλ‘ μ΄λ£¨μ΄μ§λ€. μμ€ν
νΈμΆμ΄ μνλλ©΄ μμ€ν
νΈμΆμ νλμ¨μ΄μ μν΄ νλμ μννΈμ¨μ΄ μΈν°λ½νΈλ‘ μ·¨κΈλλ©°, μ μ΄κ° μΈν°λ½νΈ 벑ν°λ₯Ό ν΅ν΄ OSλ΄μ μλΉμ€ 루ν΄μΌλ‘ μ λ¬λκ³ λͺ¨λ λΉνΈκ° 컀λ λΉνΈλ‘ μ€μ λλ€.
1.5.2 Timer
μ¬μ©μ νλ‘κ·Έλ¨μ΄ 무ν루νμ λΉ μ§κ±°λ μμ€ν μλΉμ€ νΈμΆμ μ€ν¨ν΄ μ μ΄κ° OSλ‘ λ³΅κ·νμ§ μλ κ²½μ° λ± νλ‘μΈμμ μμ μλͺ¨ λ°©μ§λ₯Ό μν΄ CPUμ λν μ μ΄ μ μ§λ₯Ό 보μ₯ν λ μ¬μ©λλ€. νμ΄λ¨Έλ μ§μ λ μκ° ν μ»΄ν¨ν°λ₯Ό μΈν°λ‘νΈνλλ‘ μ€μ νλ€. νμ΄λ¨Έκ° μΈν°λ½νΈλ₯Ό λ°μνλ©΄, μ μ΄λ μλμ μΌλ‘ OSμκ² λμ΄κ°λ€.
1.6 νλ‘μΈμ€ κ΄λ¦¬
- νλ‘κ·Έλ¨: λμ€ν¬μ μ μ₯λ νμΌμ λ΄μ©κ³Ό κ°μ΄ μλμ (passive) κ°μ²΄
- νλ‘μΈμ€: λ©λͺ¨λ¦¬μ λ‘λλ μ€ν μ€μΈ νλ‘κ·Έλ¨. λ€μ μνν λͺ λ Ήμ μ§μ νλ νλ‘κ·Έλ¨ μΉ΄μ΄ν°λ₯Ό κ°μ§ λ₯λμ μΈ(active) κ°μ²΄
- μ€λ λ: νλ‘κ·Έλ¨μ νλ¦μ μ¬λ¬ κ°λ‘ μͺΌκ°¬. μ€λ λλ§λ€ PCλ₯Ό κ°μ§
νλ‘κ·Έλ¨μ νλμ§λ§ νλ‘μΈμ€λ μ¬λ¬ κ°μΌ μ μλ€. μ±κΈ μ€λ λ νλ‘μΈμ€λ νλμ PCλ₯Ό κ°μ§κ³ μμΌλ©° λ©ν° μ€λ λ νλ‘μΈμ€λ μ¬λ¬ κ°μ PCλ₯Ό κ°μ§ μ μλ€. ν νλ‘μΈμ€λ ν μμ€ν λ΄μ μμ μ λ¨μμ΄λ€. μ΄λ¬ν μμ€ν μ νλ‘μΈμ€μ μ§ν©μΌλ‘ ꡬμ±λλλ°, νλ‘μΈμ€λ€ μ€ μΌλΆλ OS νλ‘μΈμ€λ€μ΄λ©°, λλ¨Έμ§λ μ¬μ©μ νλ‘μΈμ€λ€μ΄λ€. μ΄ λͺ¨λ νλ‘μΈλ κ·Έλ€ κ°μ νλμ CPUλ₯Ό λ©ν°νλ μ±(multiplexing)ν¨μΌλ‘μ¨ λ³ν μνλ μ μλ€.(3μ₯, 6μ₯) μ΄μ체μ λ νλ‘μΈμ€ κ΄λ¦¬μ λν΄ λ€μκ³Ό κ°μ μ± μμ μ§λ€.
- CPU νλ‘μΈμ€μ μ€λ λλ₯Ό μ€μΌμ€νκΈ°
- μ¬μ©μ νλ‘μΈμ€μ μμ€ν νλ‘μΈμ€μ μμ±κ³Ό μ κ±°
- νλ‘μΈμ€μ μΌμ μ€μ§μ μ¬μν
- νλ‘μΈμ€ λκΈ°ν/ ν΅μ μ μν κΈ°λ² μ 곡
1.7 λ©λͺ¨λ¦¬ κ΄λ¦¬
λ©μΈ λ©λͺ¨λ¦¬λ CPUμ IOμ₯μΉμ μν΄ κ³΅μ λλ λΉ λ₯Έ μ κ·Όμ΄ κ°λ₯ν λ°μ΄ν°μ μ μ₯μμ΄λ€. ν° λ Έμ΄λ§ λ°©μμ μ»΄ν¨ν°μμλ λ€μκ³Ό κ°μ΄ λμνλ€.
- λͺ λ Ήμ΄ μΈμΆ μ£ΌκΈ°(instruction fetch-cycle): λμ λ©μΈ λ©λͺ¨λ¦¬λ‘λΆν° λͺ λ Ήμ΄λ₯Ό μ½μ
- μλ£ μΈμΆ μ£ΌκΈ°(data fetch-cycle): λμ λ©μΈ λ©λͺ¨λ¦¬λ‘λΆν° λ°μ΄ν°λ₯Ό μ½κ³ μ
νλ‘κ·Έλ¨μ΄ μνλκΈ° μν΄μ λ°λμ μ λ μ£Όμλ‘ λ§€νλκ³ , λ©λͺ¨λ¦¬μ μ μ¬λμ΄μΌ νλ€. λ©λͺ¨λ¦¬ 곡κ°μ ν λΉνκ³ ν΄μ νλ κ²μ μ΄μ체μ μ μν μ΄λ€. (8μ₯, 9μ₯)
1.8 μ μ₯μ₯μΉ κ΄λ¦¬
μ΄μ체μ λ μ μ₯ μ₯μΉμ 물리μ νΉμ±μ μΆμννμ¬ λ Όλ¦¬μ μΈ μ μ₯ λ¨μμΈ νμΌμ μ μνλ€. μ΄μ체μ λ νμΌμ 물리μ λ§€μ²΄λ‘ λ§€ννλ©°, μ μ₯ μ₯μΉλ₯Ό ν΅ν΄ μ΄λ€ νμΌμ μ κ·Όνλ€.
1.8.1 νμΌ μμ€ν κ΄λ¦¬
μ΄μ체μ λ ν μ΄νμ λμ€ν¬μ κ°μ λλ μ μ₯ 맀체μ κ·Έκ²μ μ μ΄νλ μ₯μΉλ₯Ό κ΄λ¦¬ν¨μΌλ‘μ¨ νμΌμ μΆμμ μΈ κ°λ μ ꡬννλ€. λν νμΌμ μ¬μ©μ μ½κ² νκΈ° μν΄ λλ ν 리λ€λ‘ ꡬμ±λλ€. μ΄μ체μ λ νμΌ κ΄λ¦¬λ₯Ό μν΄ λ€μκ³Ό κ°μ μΌμ λ΄λΉνλ€. (10μ₯, 11μ₯)
- νμΌ/ λλ ν 리μ μμ± λ° μ κ±°
- νμΌμ 보쑰 μ μ₯ μ₯μΉλ‘ 맀ν
- νμΌκ³Ό λλ ν 리 μ‘°μμ μν ν리미ν°λΈ μ 곡
- μμ μ μΈ λΉνλ°μ± μ μ₯ 맀체μ νμΌμ λ°±μ
1.8.2 λμ©λ μ μ₯ μ₯μΉ κ΄λ¦¬
μ»΄ν¨ν° μμ€ν μ λ°λμ λ©μΈ λ©λͺ¨λ¦¬ λ΄μ©μ μ μ₯νκΈ° μν΄ λ³΄μ‘° μ μ₯ μ₯μΉλ₯Ό μ 곡ν΄μΌ νλ€. μ΄μ체μ λ λμ€ν¬ κ΄λ¦¬λ₯΄ μν΄ λ€μκ³Ό κ°μ κΈ°λ₯μ λ΄λΉνλ€.
- μμ 곡κ°(free-space)μ κ΄λ¦¬
- μ μ₯ μ₯μ ν λΉ
- λμ€ν¬ μ€μΌμ€λ§
1.8.3 μΊμ±(caching)
μΊμλ λ§€μ° λΉ λ₯΄κ³ μμ μ μ₯μ₯μΉμ΄λ©°, μΊμ λ©λͺ¨λ¦¬λ₯Ό μ¬μ©ν΄ μ»΄ν¨ν°μ μλλ₯Ό λμΈλ€. νΉμ μ λ³΄κ° νμν κ²½μ° μΊμμ λ¨Όμ μ κ·Όν΄ μ λ³΄κ° μλμ§ μ‘°μ¬νκ³ , μμΌλ©΄ μΊμλ‘λΆν° μ§μ μ¬μ©νμ§λ§ μλ€λ©΄ λ©μΈ λ©λͺ¨λ¦¬μμ κ·Έ μ 보λ₯Ό κ°μ Έμ μ¬μ©νλ€. μ΄ μ 보λ λ λ€μ μ¬μ©λ κ°λ₯μ±μ΄ λκΈ° λλ¬Έμ μΊμμ μ μ₯λλ€. μΊμ±μ μ§μμ±μ μ리λ₯Ό μ¬μ©νλ€.
- μκ° μ§μμ±(Temporal Locality): ν λ² μ κ·Όν λ°μ΄ν°μ λ€μ μ κ·Όν νλ₯ μ΄ λμ
- κ³΅κ° μ§μμ±(Spatial Locality): νΉμ λ°μ΄ν°μ κ°κΉμ΄ λ©λͺ¨λ¦¬ μ£Όμμ μλ λ€λ₯Έ λ°μ΄ν°λ€μκ²λ μ κ·Όν κ°λ₯μ±μ΄ λμ
μΊμ μΌκ΄μ± λ¬Έμ λ CPUκ° μ¬λ¬ κ°μ νλ‘μΈμ€λ€ μ¬μ΄μμ μ΄λ¦¬ μ 리 μ νλλ λ©ν° νμ€νΉ νκ²½μμ λ°μν μ μλ€. μ¬λ¬ κ°μ νλ‘μΈμ€κ° νΉμ κ°μ μ κ·ΌνκΈ° μνλ κ²½μ°, μ΄λ€ κ° νλ‘μΈμ€κ° κ°μ₯ μ΅κ·Όμ κ°±μ λ ν΄λΉ κ°μ μ»μ μ μλ κ²μ΄ 보μ₯λμ§ μμμ λ λ°μνλ©° νλμ¨μ΄μ λ¬Έμ μ΄λ€.
1.8.4 μ μΆλ ₯ μμ€ν (I/O System)
μ μΆλ ₯ μμ€ν μ λ€μκ³Ό κ°μ΄ ꡬμ±λμ΄ μλ€. μ΄μ체μ λ μ¬μ©μμκ² νΉμ νλμ¨μ΄ μ₯μΉμ νΉμ±μ μ¨κΈ°λ©° λ¨μ§ μ₯μΉ λλΌμ΄λ²λ§μ΄ μμ μκ² μ§μ λ νΉμ μ₯μΉμ νΉμ±μ μκ³ μλ€.
- λ²νΌλ§, μΊμ±, μ€νλ§μ ν¬ν¨ν λ©λͺ¨λ¦¬ κ΄λ¦¬ κ΅¬μ± μμ
- μΌλ°μ μΈ μ₯μΉ λλΌμ΄λ² μΈν°νμ΄μ€
- νΉμ νλμ¨μ΄ μ₯μΉλ€μ μν λλΌμ΄λ²
1.9 보νΈμ 보μ
보νΈμ κΈ°λ₯μ κ°κ³ μμ΄λ 곡격μ λΉν μ μλ€. κ·Έ λ νμν κ²μ΄ 보μμ΄λ€.
- 보νΈ: μμμ μ κ·Όνλ κ²μ μ μ΄ (ex. λμΌ λͺ¨λ)
- 보μ: μμ€ν μ λ§κ°λ¨λ¦¬λ κ²μ λ§μ