μ΄μ체μ λ?
μ΄μ체μ λ μ»΄ν¨ν° νλμ¨μ΄ λ°λ‘μμ μ€μΉλμ΄ μ¬μ©μ λ° λ€λ₯Έ μννΈμ¨μ΄μ νλμ¨μ΄λ₯Ό μ°κ²°νλ κ³μΈ΅μ΄λ€. μ»΄ν¨ν° νλμ¨μ΄λ₯Ό μ§μ μ μΌλ‘ λ€λ£¨λ©΄ λ§€μ° μ΄λ ΅κ³ 볡μ‘νκΈ° λλ¬Έμ μ΄μ체μ λΌλ μ€κ°λ€λ¦¬λ₯Ό λ§λ¦μΌλ‘μ μ»΄ν¨ν° μμ€ν μ νΈλ¦¬νκ² μ¬μ©ν μ μλ νκ²½μ μ 곡νλ€. λν μ΄μ체μ λ μ€νμ€μΈ νλ‘κ·Έλ¨μ λ©λͺ¨λ¦¬ 곡κ°μ μ μ ν λΆλ°°ν¨μΌλ‘μ μ»΄ν¨ν° μμ€ν μ μμμ ν¨μ¨μ μΌλ‘ κ΄λ¦¬νλ€.
μλ°ν λ°μ§μλ©΄ μ’μ μλ―Έμ μ΄μ체μ λ "컀λ"μ΄λΌ λΆλ₯΄λ©° νμ λ©λͺ¨λ¦¬μ μμ£Όνλ λΆλΆμ μλ―Ένλ€. λμ μλ―Έμ μ΄μ체μ λ 컀λ λΏ μλλΌ λ©λͺ¨λ¦¬ μμ£Όνμ§ μλ μ£Όλ³ μ νΈλ¦¬ν° μμ€ν μ ν¬ν¨νλ κ°λ μ΄λ€.
μ΄μ체μ λ λμμμ κ°λ₯ μ¬λΆλ‘λ λΆλ₯ν μ μλ€. ν λ²μ νλμ μμ λ§ μ²λ¦¬νλ MS-DOSμ κ°μ μ΄μ체μ μ λμμ λͺ λ Ήμ΄λ νλ‘κ·Έλ¨μ μννλ UNIX, MS Windowsκ° μλ€ (νλ μ΄μ체μ )
μ΄μ체μ λ μ²λ¦¬λ°©μμ λ°λΌμλ λΆλ₯ν μ μλ€. μΌκ΄μ²λ¦¬(batch processing) μ΄μ체μ λ μμ μμ²λ€μ λͺ¨μμ νκΊΌλ²μ μ²λ¦¬νλ€. μλΆν (Time sharing) μ΄μ체μ λ μ¬λ¬ μμ μ μΌμ ν μκ°λ¨μλ‘ λΆν ν΄μ CPUμ ν λΉνλ€. νλμ μμ μ μλ£ν λκΉμ§ κΈ°λ€λ¦¬λ μΌκ΄μ²λ¦¬ λμ μλΆν μ΄μ체μ λ λ°μν(interactive) λ°©μμ ꡬνν μ μκ² λμλ€.
μ΄μ체μ μ²λ¦¬λ°©μμ λνλμ μ’ λ₯λ‘ μ€μκ°(Realtime OS) λ°©μμ΄ μλ€. μ ν΄μ§ μκ° μμ μ΄λ ν μΌμ΄ λ°λμ μ’ λ£λ¨μ 보μ₯νλ μ΄μ²΄μ΄λ€. μ΄ λ°©μμ νΉμν λͺ©μ μΌλ‘ μλ£ μκ°μ΄ λ°λμ μ΅μ°μ μΌλ‘ λμ΄ μμλ‘, κ΅°μ¬μ© μμ€ν μ μμ£Ό μ¬μ©λλ€.
μ€μΌμ₯΄λ§
CPUλ νλμ¨μ΄λΌ μκ°μ λͺ»νλ€ κ·Έλ₯ μ½λλ₯Ό μ½μ΄μμ κ³μ°λ§ μννλ κΈ°κ³μ΄λ€. μ΄λ€ νλ‘κ·Έλ¨μ μΌλ§λ CPUλ₯Ό ν λΉν΄μ μνν κ²μΈμ§ μ νλ κ²μ λ©λͺ¨λ¦¬ μμ κ°μ₯ λ°λ¨μ μλ μ΄μ체μ κ° κ²°μ νλ€.
μ»΄ν¨ν° μμμ λΆλ°°νλλ° μμ΄ μ¬μ©μκ° ννμ & ν¨μ¨μ λΆλ°°κ° ν΅μ¬μ΄λ€. μ€μΌμ₯΄λ§μ μ΄λ»κ² μ»΄ν¨ν° μμμ ν¨μ¨μ μΌλ‘ νμ©ν μ§μ λν μ λ΅μ΄λ€. μ€μΌμ₯΄λ§μλ λνμ μΌλ‘ λμ€ν¬ μ€μΌμ₯΄λ§κ³Ό CPU μ€μΌμ₯΄λ§μ΄ μλ€.
λμ€ν¬λ CPUμ λΉν΄ λ°±λ§λ°°μ λ λ리λ€. λμ€ν¬κ° μλ λ리λ€λ³΄λ νλ‘κ·Έλ¨ Aλ‘λΆν°λ μ€κ³ νλ‘κ·Έλ¨ Bλ‘λΆν°λ μ€κ³ μμ²μ΄ λ°λ¦¬κ² λλ€. μ΄λ μμ²μ΄ μ¨ μμλλ‘ μ²λ¦¬νλ©΄ μμμ΄ κ΅μ₯ν λΉν¨μ¨μ μ΄λ€. λ°λΌμ μμλ₯Ό λ€λ°κΏμλΌλ μμμ μ΅μ ννμ¬ νμ©νκΈ° μν΄ μ΄μ체μ λ λμ€ν¬ μ€μΌμ₯΄λ§μ νλ€. μ¦ λμ€ν¬ μ€μΌμ₯΄λ§μ λμ€ν¬μ λ€μ΄μ¨ μμ²μ μ΄λ€ μμλ‘ μ²λ¦¬ν κΉ? μ λν μ λ΅μ΄λ€.
CPUλ νλμ¨μ΄λΌ μκ°μ λͺ»νλ€ κ·Έλ₯ μ½λλ₯Ό μ½μ΄μμ κ³μ°λ§ μννλ€. μ΄λ€ νλ‘κ·Έλ¨μ μΌλ§λ CPUλ₯Ό ν λΉν΄μ μνν κ²μΈμ§ μ νλ κ²μ λ©λͺ¨λ¦¬ μμ κ°μ₯ λ°λ¨μ μλ μ΄μ체μ κ° κ²°μ νλ€. CPU μ€μΌμ₯΄λ§μ λ°λ‘ μ΄μ체μ μ μν΄ μ΄λ€ νλ‘κ·Έλ¨μκ² CPU μ¬μ©κΆμ μ€κ±΄μ§ μμλ₯Ό 맀기λ κ²κ³Ό κ°λ€.
μ λμ€ (UNIX)
λνμ μΈ μ΄μ체μ μ μμλ‘λ μ λμ€κ° μλ€. κΈ°μ‘΄μ μ΄μ체μ λ₯Ό λ§λ€κΈ°μν΄μ μ΄μ λΈλ¦¬μ΄λ₯Ό μ¬μ©νλλ° μ΄λ λ무 볡μ‘νκ³ νλ μμ μ΄μλ€. μ λμ€λ₯Ό λ§λ€λλ μ΄ μμ μ κ°μννκ³ μ μλ‘μ΄ νλ‘κ·Έλλ° μΈμ΄λ₯Ό λ§λ€μλ€. μ΄λ μλ‘λ§λ μΈμ΄κ° λ°λ‘ CμΈμ΄μ΄λ€. μ λμ€κ° κ°μ₯ λνμ μΈ μ΄μ체μ κ° λ μ΄μ μ€ νλλ μμ€μ½λκ° λ¬΄λ£λ‘ 곡κ°λμ΄μλ€λ κ²κ³Ό λμ μ΄μμ±μ κ°μ§κ³ μλ€λ κ²μ΄λ€. (μλ‘λ€λ₯Έ νλμ¨μ΄(μ»΄ν¨ν°) κΈ°κΈ°λΌλ μ½κ² μ μ©μν¬ μ μλ€.) μ΄λ CμΈμ΄ λλ¬Έμ κ°λ₯νλλ° μλ‘ λ€λ₯Έ μ΄μ λΈλ¦¬μ΄λ₯Ό μ¬μ©νλλΌλ CμΈμ΄λ₯Ό ν΅ν΄ νμΉ μ μκΈ° λλ¬Έμ΄λ€. μ λμ€μ λλ€λ₯Έ μ₯μ μ 컀λ(λ©λͺ¨λ¦¬μ νμ μμ£Όνλ λ μ)μ΄ λ§€μ° μλ€. μ΅μνμ 컀λ ꡬ쑰λ₯Ό ν΅ν΄ νμμ±μ΄ λμμ§λ€.
μ©μ΄ μ 리
Multi Tasking
μλ°ν λ§νλ©΄ CPUμμλ νλμ μμ λ§ μννλ€. 짧μ μκ°μ μ¬λ¬μμ μ λλ €μνλ€ λ³΄λ λμμ νλ κ²μ²λΌ 보μ΄λ κ². μ΄λ κ² μ§§μ μκ°λμ μλΆν λ‘ CPUκ° μμ μ μ²λ¦¬νλ κ²μ Multi Taskingμ΄λΌ λΆλ₯Έλ€. (ν¬κ΄μ μΈ μ©μ΄)
Multi Programming
λ©λͺ¨λ¦¬μ μ¬λ¬νλ‘κ·Έλλ°μ΄ λμμ μ¬λΌκ°λ λ°©μμ Multi Programming μ΄λΌ λΆλ₯Έλ€. λ©ν°νμ€νΉκ³Ό κ°μ§λ§ λ©λͺ¨λ¦¬μ μΈ μΈ‘λ©΄μ κ°μ‘°ν μ©μ΄
Time Sharing
CPUμ μκ°μ λΆν νμ¬ λλμ΄μ΄λ€λ μλ―Έλ₯Ό κ°μ‘°νλ μ©μ΄
Multi Process
Multi Proecessλ μλΆν λ‘ μ¬λ¬νλ‘κ·Έλ¨μ λμμ μ²λ¦¬νλ λ―ν λͺ¨μ΅μ 보μ¬μ£Όλ μ©μ΄λ‘ Multi taskingκ³Ό κ°λ€.
Multi Processor
μ΄ μ©μ΄λ Multi tasking κ³Ό λ€λ₯Έ μλ―Έλ₯Ό μ§λλ€. λ©ν° νλ‘μΈμλ νλμ μ»΄ν¨ν°μ CPU(processor)κ° μ¬λ¬κ°κ° μμ΄ μ¬λ¬ CPUκ° νλ‘μΈμ€λ€μ μ²λ¦¬ν¨μ μλ―Ένλ€. μ΄λ»κ² 보면 μ§μ§ μΌμ λμμ μ²λ¦¬νλ κ²μ΄λΌκ³ λ³Ό μ μλ€. (νλμ¨μ΄μ μΌλ‘ λ€λ₯΄λ€)
μ»΄ν¨ν° ꡬ쑰μ μ΄μ체μ μμ μ²λ¦¬ λ°©μ
CPUλ λ©λͺ¨λ¦¬μ μ¬λΌμμλ κΈ°κ³μ΄λ₯Ό κ°μ Έμμ μμ μ μννλ€. λ©λͺ¨λ¦¬μ μ΄λ€ λͺ λ Ήμ΄λ₯Ό κ°μ Έμ¬μ§λ CPU μμ μλ νλ‘κ·Έλ¨ μΉ΄μ΄ν°(Program Counter) λ μ§μ€ν°κ° κ°λ¦¬ν€λ μ£Όμλ₯Ό ν΅ν΄ μ μ μλ€. CPUκ° λ μ§μ€ν°κ° κ°λ¦¬ν€λ μ£Όμ λͺ λ Ήμ΄λ₯Ό μ½μ΄μ μ΄μ¬ν μΌνκ³ μμ λ I/Oμμ λ± μ κΉ λ©μΆκ³ λ€λ₯Έ μμ μ ν΄μΌν λκ° μλ€. μΌνκ³ μλ CPUμ μμ μ λ©μΆλ λ°©λ²μ interrupt μ΄λ€. CPUλ κΈ°κ³μ΄λ₯Ό μ€νμν€κΈ°μ μμ interrupt μ 무λ₯Ό νμΈνλ€. interrupt line μμ interrupt μ΄ νμΈλλ©΄ μλμ μΌλ‘ CPU κΆνμ μ΄μ체μ μκ² λμ΄κ°λ€. μ΄λ CPU κΆνμ΄ μ΄μ체μ μκ² λμ΄κ°μ(컀λ λͺ¨λ)μ νμνκΈ° μν΄ mode bitμ 0 μΌλ‘ μ€μ λλ€. μ΄λ κ² μ¬μ©μ νλ‘κ·Έλ¨ μ€νμ€ I/Oμμ μ μν΄ μ΄μ체μ μκ² μμ²νλ κ²μ system call μ΄λΌκ³ λΆλ₯Έλ€.
νλ μμ
μ΄ μ κΉ λ©μΆκ³ (interrupt call) νκ³ λ€μ΄μ¨ μμ
μ μννλ€μ μλ μμ
μΌλ‘ λμμ€λ €λ©΄ μ΄μ μμ
νκ³ μλ λ©λͺ¨λ¦¬μ£Όμκ° νμνκΈ° λλ¬Έμ μΈν°λ½νΈ λΉν μμ μ λ μ§μ€ν°μ νλ‘κ·Έλ¨ μΉ΄μ΄ν°λ₯Ό μ μ₯ν ν CPUμ μ΄λ₯Ό interrupt μ²λ¦¬λ£¨ν΄μ λκΈ°κ² λλ€. μ΄λ¬ν μμ
μ 보 μ μ₯μ Context save λΌκ³ νλ€.
μ μμ μ μ 리νλ©΄ κ²°κ΅ μλμ μ¬μ©μ νλ‘κ·Έλ¨μ΄λ λ€λ₯Έ μ¬μ©μ νλ‘κ·Έλ¨μ μ€νμν€κΈ° μν κ³Όμ μ΄λΌκ³ λ³Ό μ μλ€.
- μΈν°λ½νΈ λ°μ λ° μ»€λ λͺ¨λ μ ν (λͺ¨λ λΉνΈ = 0)
- νμ¬ μ€ν μν μ μ₯ (컨ν μ€νΈ μ μ₯)
- μ΄μ체μ κ° μΈν°λ½νΈ λλ μμ€ν νΈμΆ μ²λ¦¬ (μ΄μ²΄κ° λ€λ₯Έ μ¬μ©μ νλ‘κ·Έλ¨ μ€ν or νμ¬ νλ‘κ·Έλ¨ κ³μ μ€ν κ²°μ )
- μ€ν μν 볡μ (컨ν μ€νΈ 볡μ)
- μ¬μ©μ λͺ¨λλ‘ μ ν (λͺ¨λ λΉνΈ = 1)
- μ¬μ©μ νλ‘κ·Έλ¨ μ¬κ°
λ§μ½ νλμ μ¬μ©μ νλ‘κ·Έλ¨μμ 무ν 루νκ° λμμ CPUκΆνμ΄ μ΄μ²΄μκ² νμ λμ΄κ°μ§ μμ μλ μλ€. μ΄λ₯Ό λ°©μ§νκΈ° μν΄ Timerκ° μ‘΄μ¬νλ€. timerλ₯Ό ν΅ν΄ μ΄μ체μ λ νλ‘κ·Έλ¨λ§λ€ μΌμ μκ°μ ν λΉνκ³ CPUλ₯Ό λκΈ΄λ€. νλμ νλ‘κ·Έλ¨μμ 무ν루νκ° λλλΌλ μΌμ μκ°μ΄ μ§λλ©΄ OSκ° λ€μ CPU μ£ΌλκΆμ κ°μ Έμ λ€λ₯Έ νλ‘κ·Έλ¨μκ² CPU κΆνμ μ€ μ μλ€.
I/O μμ μ²λ¦¬μ μμ΄ λκΈ°μ λΉλκΈ° μ²λ¦¬λ°©μμ΄ μλ€. λκΈ°μμ I/O μ μΆλ ₯μ μμ€ν μ½μ ν ν μ μΆλ ₯ μμ μ΄ μλ£λ μ΄νμμΌ μ»€λμ΄ μ¬μ©μ νλ‘κ·Έλ¨μκ² CPUλ₯Ό λκΈ°λ λ°©λ²μ΄λ€. μ¬κΈ°μλ I/O κ° μλ£λ λ κ°μ§ OSκ° CPUλ₯Ό μ μ νκ² λλ€. λΉλκΈ°μμ I/O μ μΆλ ₯μ μνΈν μ½μ νκ³ μ μΆλ ₯μ΄ I/O λλ°μ΄μ€μμ μ€νλλ©΄ μμ μ΄ λλκΈ° μ μ OSκ° λ€λ₯Έ μ¬μ©μ νλ‘κ·Έλ¨μκ² CPUλ₯Ό λ°λ‘ λκΈ΄λ€. λκ²½μ° λͺ¨λ I/O μμ μ΄ λλλ©΄ interruptλ₯Ό CPUμ 보λΈλ€. λλ°μ΄μ€λ‘λΆν° κ²°κ³Όκ°μ κ°μ Έμμ λ¨Όκ° ν΄μΌν λλ λκΈ°μμΌλ‘ μ²λ¦¬ν΄μΌνμ§λ§ CPUκ° λκ³ μλ κ²μ λ°©μ§νκΈ° μν΄ I/Oκ° μλ£λ λκΉμ§ ν΄λΉ νλ‘κ·Έλ¨μκ²μ CPUλ₯Ό λΊκ³ I/O μ²λ¦¬λ₯Ό κΈ°λ€λ¦¬λ μ€μ νλ‘κ·Έλ¨μ μ€ μΈμ°κ³ λ€λ₯Έ νλ‘κ·Έλ¨μκ² CPUλ₯Ό μ£Όλ λ°©μμ΄ μ¬μ©λλ€.
Interruptλ μΌμ’ μ μ€λ²ν€λμ΄λ€. νΉν κ³ μ I/O μ₯μΉμ κ²½μ° μΈν°λ½νΈκ° λ무 μμ£Ό λ°μν΄ μ±λ₯μ ν λ¬Έμ λ₯Ό μΌμΌν¬ μ μλ€. μλ₯Όλ€μ΄ μ§κΈ λ΄κ° μΉκ³ μλ νμ νλνλ μ λ ₯λ λλ§λ€ CPUμ interrupt κ° κ±Έλ¦¬λ©΄ μ±λ₯ μ νκ° μ¬νλ κ²μ΄λ€. μ΄λ° μμμΌλ€μ I/Oλ²νΌμ νΉμ ν¬κΈ°λ§νΌ μ μ₯ν΄λλ€. DMA(direct memory access)λ λ²νΌμ μ μ₯λμ΄ μλ I/O κ°μ μ§μ λ©λͺ¨λ¦¬μ λΈλ‘λ¨μλ‘ λ³΅μ¬ν΄μ λ©λͺ¨λ¦¬μ μ μ₯νλ€. λ°λΌμ λ°μ΄νΈ λ¨μκ° μλ λΈλ‘ λ¨μλ‘ μΈν°λ½νΈκ° λ°μν΄ CPU λΆνλ₯Ό κ°μμν¨λ€.
μ»΄ν¨ν° μμ€ν μμ CPUκ° I/O μμ μ μμ²ν λ, λ κ°μ§ λ°©μμΌλ‘ μ κ·Όν μ μμ΅λλ€: ν¬νΈ-κΈ°λ° I/O(Port-Mapped I/O λλ Isolated I/O)μ λ©λͺ¨λ¦¬-맀ν I/O(Memory-Mapped I/O) μ΄λ€.
ν¬νΈ-κΈ°λ° I/O(Port-Mapped I/O λλ Isolated I/O)
ν¬νΈ-κΈ°λ° I/Oλ I/O μ₯μΉμμ ν΅μ μ μν΄ λ³λμ I/O 곡κ°(μ£Όμ 곡κ°)μ μ¬μ©νλ λ°©μμ΄λ€. CPUλ I/O μ₯μΉλ₯Ό μ μ΄νκΈ° μν΄ νΉμ I/O ν¬νΈλ₯Ό μ¬μ©νλ€λ€. (λ©λͺ¨λ¦¬ μ£Όμμλ λ³κ°μ 곡κ°)
λ©λͺ¨λ¦¬-맀ν I/O(Memory-Mapped I/O)
λ©λͺ¨λ¦¬-맀ν I/Oλ I/O μ₯μΉλ₯Ό λ©λͺ¨λ¦¬ μ£Όμ κ³΅κ° λ΄μ λ°°μΉνμ¬, CPUκ° μΌλ° λ©λͺ¨λ¦¬μ μ κ·Όνλ κ²μ²λΌ I/O μ₯μΉμ μ κ·Όνλ λ°©μμ΄λ€. O μ₯μΉλ λ©λͺ¨λ¦¬μ νΉμ μ£Όμ λ²μμ 맀νλλ©°, μ΄λ₯Ό ν΅ν΄ CPUκ° νμ€ λ©λͺ¨λ¦¬ μ κ·Ό λͺ λ Ήμ΄λ₯Ό μ¬μ©ν΄ I/O μ₯μΉμ ν΅μ νλ€.
μ μ₯μ₯μΉ κ΅¬μ‘°
μ μ μ₯κ³μΈ΅ ꡬ쑰λ₯Ό 보면 맨μμλ CPUκ° μλ€κ³ λ³Ό μ μλ€. CPUλ μλ Registerκ° κ°λ¦¬ν€λ λͺ λ Ήμ λ°λΌκ°κ³ μ΄ν μλ λ°μ΄ν°λ₯Ό μ΄μ©νλ©° μμ μ΄ μ§νλλ λ°©μμ΄λ€. μ¦ μ μ₯μ₯μΉ κ³μΈ΅ ꡬ쑰μμ μλ³Έ λ°μ΄ν°λ νμ νμ κ³μΈ΅μ μκ³ μμ κ³μΈ΅μμλ νμν μ λ³΄λ§ λ½μμ°λ λ°©μμ΄λΌκ³ λ³Ό μ μλ€. νμ§λ§ μΈμ λ μ 보λ₯Ό μλμμ μκΉμ§ κ³μ λμ΄λ€ μ°λ©΄ μ€λ²ν€λ λ¬Έμ κ° μκΈ° λλ¬Έμ μμ£Ό μ¬μ©ν μ 보λ μμ κ³μΈ΅μ 곡κ°μ λ°λ‘ λ§λ€μ΄ μ μ₯ν΄μ μ¬μ¬μ©ν κ²½μ° νμ κ³μΈ΅κΉμ§ λ΄λ €κ°μ§ μκ³ λ°λ‘ κ°μ Έλ€ μ΄λ€. μ΄λ¬ν μ 보λ₯Ό 볡μ¬ν΄μ μμ κ³μΈ΅μ μ μ₯ν΄λλ μμ€ν μ Caching μ΄λΌκ³ λΆλ₯Έλ€. λ¬Όλ‘ μ©λμ μ νμ΄ μκΈ° λλ¬Έμ μ΅λν μ¬μ¬μ©μ±μ΄ λμ μ 보λ₯Ό μ μ₯ν΄μΌ νλ€. (Primaryλ excutableν λ©λͺ¨λ¦¬, Secondaryλ I/O μμ μ κ±°μ³μΌνλ λ©λͺ¨λ¦¬). - μλλ©΄μμλ μλ¨μΌλ‘ κ° μλ‘ λΉ λ₯΄κΈ° λλ¬Έμ μΊμλ©λͺ¨λ¦¬λ νμ.
νλ‘κ·Έλ¨μ μ€ν
μ€ννμΌλ€μ νλλμ€ν¬μ νμΌμμ€ν μΌλ‘ μ μ₯λμ΄ μκ³ μ΄λ₯Ό μ€νμν€λ©΄ λ¨λ©λͺ¨λ¦¬μ μ¬λΌκ° νλ‘μΈμ€κ° λλ€. νμ§λ§ μ΄λ₯Ό μ ννκ² λ§νλ©΄ λμ€ν¬μμ λ¨μ λ°λ‘ μ¬λΌκ°λ κ²μ΄ μλ μ¬μ΄μ κ°μλ©λͺ¨λ¦¬λ₯Ό κ±°μΉκ²λλ€. κ°μ λ©λͺ¨λ¦¬μμ νλ‘μΈμ€λ§μ λ μμ μΈ μ£Όμ 곡κ°μ΄ λ§λ€μ΄μ§κ³ μ΄ μ£Όμ곡κ°μ μ½λ/μ€ν/λ°μ΄ν°λ‘ ꡬμ±λλ€. μ΄λ κ² κ°μ λ©λͺ¨λ¦¬μ νμ±λ 곡κ°μ μ λΆ λ¬Όλ¦¬μ λ©λͺ¨λ¦¬μ μ¬λΌκ°λ κ²μ΄ μλ νμν λΆλΆλ§ μ¬λΌκ°κ² λλ€. κ°μλ©λͺ¨λ¦¬μλ μμ§λ§ 물리μ λ©λͺ¨λ¦¬μ μ¬λΌκ°μμ§ μμ λΆλΆμ λμ€ν¬ 곡κ°μΈ swap areaμ λ¨μμκ² λλ€. μ΄νμλ νμ λ©λͺ¨λ¦¬ 곡κ°μ μμ£Όνκ³ μλ 컀λ(OS)κ³Ό λ€λ₯΄κ² κ° νλ‘μΈμ€λ€μ μμ μ ν μΌμ΄ λλλ©΄ λ©λͺ¨λ¦¬μμ μ¬λΌμ§λ€. μ¬κΈ°μ μ μμ΄ λκ°λ©΄ νμΌμμ€ν μ λ°μ΄ν°λ§ 보쑴λκ³ λ¬Όλ¦¬λ©λͺ¨λ¦¬, Swap area 곡κ°μ μ¬λΌμ§κ² λλ€.
컀λλν μΌμ’ μ νλ‘μΈμ€λ‘μ code / data / stack 곡κ°μ 보μ νκ³ μλ€. 컀λ(μ΄μ체μ )μ κ°μλ©λͺ¨λ¦¬λ₯Ό λ€μ¬λ€λ³΄λ©΄ μμκ°μ΄ ꡬμ±λμ΄ μλ€.
컀λμ μ½λ
컀λμ μ½λμμμλ μμ€ν
μ½κ³Ό μΈν°λ½νΈ μ²λ¦¬ μ½λ κ·Έλ¦¬κ³ μμ κ΄λ¦¬μ κΈ°ν μλΉμ€λ₯Ό μν μ½λκ° λ΄μ¬λμ΄ μλ€
컀λμ λ°μ΄ν°
컀λμ λ°μ΄ν° μμμλ λͺ¨λ νλμ¨μ΄λ€μ κ΄λ¦¬νκΈ° μν μλ£κ΅¬μ‘°, λͺ¨λ νλ‘μΈμ€λ€μ κ΄λ¦¬νκΈ° μν μλ£κ΅¬μ‘°λ₯Ό κ°μ§κ³ μλ€. μ΄λ νλ‘μΈμ€λ₯Ό κ΄λ¦¬νκΈ° μν μλ£κ΅¬μ‘°λ₯Ό PCBλΌκ³ λΆλ₯Έλ€. PCB(process control block)λ νλ‘μΈμ€ μνλ₯Ό κ΄λ¦¬νκ³ , λ¬Έλ§₯ κ΅ν(context switch) μ νλ‘μΈμ€ μνλ₯Ό μ μ₯νκ³ λ³΅κ΅¬νλ λ° μ¬μ©λλ€.
컀λμ μ€ν
μ€νλλ κ° νλ‘μΈμ€λ μμ λ§μ 컀λ μ€νμ κ°μ§κ³ μμΌλ©°, ν΄λΉ νλ‘μΈμ€κ° 컀λ λͺ¨λμμ μ€νλ λ μ¬μ©λλ€
κ²°κ΅ λͺ¨λ νλ‘κ·Έλ¨μ ν¨μλ‘ λμ΄μλ€. μ΄λ¬ν ν¨μμ μ’ λ₯μλ μ¬μ©μ νλ‘κ·Έλ¨μ΄ μ¬μ©νλ ν¨μλ μ¬μ©μ μ μ ν¨μ, λΌμ΄λΈλ¬λ¦¬ ν¨μ, 컀λ ν¨μ 3κ°μ§κ° μλ€.
- μ¬μ©μ μ μ ν¨μλ μμ μ νλ‘κ·Έλ¨μμ μ μν ν¨μ(ex. κ°λ°μκ° μ μν ν¨μ)μ΄λ€.
- λΌμ΄λΈλ¬λ¦¬ ν¨μλ μΈλΆμμ κ°μ Έλ€ μ΄ ν¨μλ‘ μμ μ νλ‘κ·Έλ¨ μ€ννμΌμ ν¬ν¨λμ΄ μλ€.
- 컀λν¨μλ μ΄μ체μ νλ‘κ·Έλ¨μ ν¨μλ‘ μμ€ν μ½μ΄ λμνλ ν¨μμ΄λ€.
ν¨μμ μ’ λ₯μ λ°λΌ κ±°μ³κ°λ μ£Όμκ³΅κ° λν λ€λ₯΄λ€. μ¬μ©μ μ μ ν¨μμ λΌμ΄λΈλ¬λ¦¬ ν¨μλ μ¬μ©μ νλ‘κ·Έλ¨ μ£Όμ곡κ°μ μ½λκ° user modeμμ μ€νλλ€. λ°λ©΄μ μμ€ν μ½μ΄ λΆλ¦¬λ©΄ μ΄μ체μ μκ² λμ΄κ° kernel μ£Όμ곡κ°μ 컀λν¨μκ° μ€νλλ€. μ¦ νλ‘κ·Έλ¨μ΄ μ€νλλ€λ κ²μ
μ¬μ©μ νλ‘κ·Έλ¨ μ£Όμ곡κ°μ μ¬μ©μμ μ μ/λΌμ΄λΈλ¬λ¦¬ ν¨μ -> μμ€ν μ½ -> 컀λ곡κ°μ 컀λν¨μ -> ,,,
λ°λ³΅νλ€ νλ‘κ·Έλ¨μ΄ λλλ κ²μ΄λ€.
https://core.ewha.ac.kr/publicview/C0101020140307151724641842?vmode=f
'π₯οΈ μ»΄ν¨ν°κ³΅ν > Operating System' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Deadlocks (0) | 2024.06.07 |
---|---|
Process Synchronization (0) | 2024.06.04 |
CPU Scheduling (0) | 2024.06.02 |
Process Management (0) | 2024.06.02 |
Process (0) | 2024.05.31 |