μμ€ν μ½μ΄λ?
μ΄μ 체μ μ 컀λμ΄ μ 곡νλ μλΉμ€μ λν΄,
μμ© νλ‘κ·Έλ¨μ μμ²μ λ°λΌ 컀λμ μ κ·ΌνκΈ° μν μΈν°νμ΄μ€μ΄λ€.
λ³΄ν΅ Cλ C++κ³Ό κ°μ κ³ κΈ μΈμ΄λ‘ μμ±λ νλ‘κ·Έλ¨λ€μ
μ§μ μμ€ν νΈμΆμ μ¬μ©ν μ μκΈ° λλ¬Έμ
κ³ κΈ APIλ₯Ό ν΅ν΄ μμ€ν νΈμΆμ μ κ·Όνκ² νλ λ°©λ²μ΄λ€.
β μμ€ν μ½μ μ νμν κΉ?
μ°λ¦¬κ° μΌλ°μ μΌλ‘ μ¬μ©νλ νλ‘κ·Έλ¨μ 'μμ©νλ‘κ·Έλ¨'μ΄λ€.
μ μ λ 벨μ νλ‘κ·Έλ¨μ μ μ λ 벨μ ν¨μλ€ λ§μΌλ‘λ λ§μ κΈ°λ₯μ ꡬννκΈ° νλ€κΈ° λλ¬Έμ, 컀λ(kernel)μ λμμ λ°λμ λ°μμΌ νλ€. μ΄λ¬ν μμ μ μμ©νλ‘κ·Έλ¨μΌλ‘ λνλλ μ μ νλ‘μΈμ€(User Process)μμ μ μ λͺ¨λμμλ μνν μ μλ€.
λ°λμ kernelμ κ΄λ ¨λ κ²μ 컀λλͺ¨λλ‘ μ νν νμμΌ, ν΄λΉ μμ μ μνν κΆνμ΄ μκΈ΄λ€. 컀λ λͺ¨λλ₯Ό ν΅ν μ΄λ¬ν μμ μ λ°λμ μμ€ν μ½μ ν΅ν΄ μννλλ‘ μ€κ³λμ΄ μμ΅λλ€.
β μμ€ν μ½μ 컀λ λͺ¨λμ μ¬μ©μ λͺ¨λ
1. 컀λ λͺ¨λ
νλ‘κ·Έλ¨ μΉ΄μ΄ν°κ° μ΄μ체μ κ° μ‘΄μ¬νλ λΆλΆμ κ°λ¦¬ν€κ³ μλ€λ©΄, νμ¬ μ΄μ체μ μ μ½λλ₯Ό μν μ€μ΄λ©° CPUκ° μ»€λ λͺ¨λμμ μν μ€μ΄λΌκ³ νλ€.
2. μ¬μ©μ λͺ¨λ
νλ‘κ·Έλ¨ μΉ΄μ΄ν°κ° μ¬μ©μ νλ‘κ·Έλ¨μ΄ μ‘΄μ¬νλ λ©λͺ¨λ¦¬ μμΉλ₯Ό κ°λ¦¬ν¬ κ²½μ°, μ¬μ©μ νλ‘κ·Έλ¨μ μν μ€μ΄λ©° CPUκ° μ¬μ©μ λͺ¨λμμ μν μ€μ΄λΌκ³ νλ€.
- μΌλ° λͺ λ Ή : λ©λͺ¨λ¦¬μμ μλ£λ₯Ό μ½μ΄μμ CPUμμ κ³μ°νκ³ κ²°κ³Όλ₯Ό λ©λͺ¨λ¦¬μ μ°λ μΌλ ¨μ λͺ λ Ήλ€. λͺ¨λ νλ‘κ·Έλ¨μ΄ μνν μ μμ. (μ¬μ©μ λͺ¨λ)
- νΉκΆ λͺ λ Ή : 보μμ΄ νμν λͺ λ ΉμΌλ‘ μ μΆλ ₯ μ₯μΉ, νμ΄λ¨Έ λ± κ°μ’ μ₯μΉλ₯Ό μ κ·Όνλ λͺ λ Ή.(컀λ λͺ¨λ)
- CPU λ΄μ λͺ¨λ λΉνΈλ₯Ό λμ΄ λ λͺ λ Ήμ μννλ€.
- μ¬μ©μ νλ‘κ·Έλ¨μ΄ λμ€ν¬μ νμΌμ μ κ·Όνκ±°λ, νλ©΄μ κ²°κ³Όλ₯Ό μΆλ ₯νλ λ±μ μμ μ΄ νμν κ²½μ°κ° μλ€. νμ§λ§, μ΄λ¬ν μμ μ νΉκΆ λͺ λ Ήμ μνμ νμλ‘ νλ€.
- μ΄μ κ°μ κ²½μ°, μ¬μ©μ νλ‘κ·Έλ¨μ μ€μ€λ‘ νΉκΆ λͺ λ Ήμ μνν μ μμΌλ―λ‘ μ΄μ체μ μκ² νΉκΆ λͺ λ Ήμ λνμ μμ²νλ€. μ΄λ¬ν μλΉμ€ μμ²μ μμ€ν μ½μ΄λΌκ³ λΆλ₯Έλ€. (μ¦, νΉκΆ λͺ λ Ήμ λνμ μμ²νμ¬ μ¬μ©μ νλ‘κ·Έλ¨μ΄ 컀λ μμμ κΈ°λ₯μ μννκ² ν΄μ€λ€.)
β λμ€ν¬μμ μλ£λ₯Ό μ½μ΄μ€λ μμ€ν μ½μ΄λΌκ³ κ°μ !
- μ¬μ©μ νλ‘κ·Έλ¨μ΄ μμ€ν μ½μ νκ² λλ©΄ μ΄μ체μ λ μμ μ 컀λ μμμ μ μλ μμ€ν μ½ μ²λ¦¬ μ½λλ₯Ό μννλ€.
- CPUκ° μ»¨νΈλ‘€ λ μ§μ€ν°λ₯Ό μΈν ν΄ λμ€ν¬ 컨νΈλ‘€λ¬μκ² λ°μ΄ν°λ₯Ό μ½μ΄μ€λΌκ³ λͺ λ Ήνλ€.
- λμ€ν¬ 컨νΈλ‘€λ¬λ λμ€ν¬λ‘λΆν° λ°μ΄ν°λ₯Ό μ½μ΄μμ μμ μ λ‘컬 λ²νΌμ μ μ₯νλ€.
- μμ μ΄ μλ£λλ©΄ λμ€ν¬ 컨νΈλ‘€λ¬κ° CPUμκ² μΈν°λ½νΈλ₯Ό λ°μμμΌ μ μΆλ ₯ μμ μ΄ μλ£λμμμ ν΅μ§νλ€.
ν΅μμ μΌλ‘ μμ€ν μ½μ μ¬λ¬ μ’ λ₯μ κΈ°λ₯μΌλ‘ λλμ΄μ Έ μλ€. κ° μμ€ν μ½μλ λ²νΈκ° ν λΉλκ³ μμ€ν μ½ μΈν°νμ΄μ€λ μ΄λ¬ν λ²νΈμ λ°λΌ μΈλ±μ€λλ ν μ΄λΈμ μ μ§νλ€. μλ κ·Έλ¦Όμ open() μμ€ν μ½μ νΈμΆνμ λ, μ΄μ체μ μμ μ΄λ»κ² μ²λ¦¬λλμ§λ₯Ό 보μ¬μ€λ€.
νμν κΈ°λ₯μ΄λ μμ€ν νκ²½μ λ°λΌ μμ€ν μ½μ΄ λ°μν λ, μ’ λ λ§μ μ λ³΄κ° νμν μλ μλ€. κ·Έλ¬ν μ λ³΄κ° λ΄κΈ΄ 맀κ°λ³μλ₯Ό μ΄μ체μ μ μ λ¬νκΈ° μν΄μλ λλ΅ 3κ°μ§ μ λμ λ°©λ²μ΄ μλ€.
- 맀κ°λ³μλ₯Ό CPU λ μ§μ€ν° λ΄μ μ λ¬νλ€. μ΄ κ²½μ°μ 맀κ°λ³μμ κ°―μκ° CPU λ΄μ λ μ§μ€ν° κ°―μλ³΄λ€ λ§μ μ μλ€.
- μμ κ°μ κ²½μ°μ 맀κ°λ³μλ₯Ό λ©λͺ¨λ¦¬μ μ μ₯νκ³ λ©λͺ¨λ¦¬μ μ£Όμκ° λ μ§μ€ν°μ μ λ¬λλ€. (μλ κ·Έλ¦Ό μ°Έκ³ )
- 맀κ°λ³μλ νλ‘κ·Έλ¨μ μν΄ μ€νμΌλ‘ μ λ¬λ μλ μλ€.\
* 2,3λ²μ μ λ¬λλ 맀κ°λ³μμ κ°―μλ κΈΈμ΄μ μ νμ΄ μκΈ° λλ¬Έμ λͺλͺ μ΄μ체μ μμ μ νΈνλ λ°©μμ΄λ€.
β μμ€ν μ½μ μ ν
5κ°μ§μ λ²μ£Όλ‘ λλ μ μλ€.
- νλ‘μΈμ€ μ μ΄ : νλ‘μΈμ€ νΉκΆ λͺ¨λλ₯Ό μ¬μ©ν΄ μ§μ μ μΌλ‘ νλ‘μΈμ€ μ μ΄κ° κ°λ₯
- νμΌ μ‘°μ : νμΌμ μμ±νκ±°λ μμ , κ΄λ¦¬ λ±
- μ₯μΉ κ΄λ¦¬ : μ₯μΉ μꡬ λ° μ₯μΉ ν΄μ , μ½κΈ°, μ°κΈ°, μ¬λ°°μΉ λ±
- μ 보 μ μ§ : μκ°κ³Ό λ μ§μ μ€μ κ³Ό νλ, μμ€ν μλ£μ μ€μ κ³Ό νλ
- ν΅μ : ν΅μ μ°κ²°μ μμ± λ° μ κ±°, λ©μμ§μ μ‘μμ , μν μ 보 μ λ¬ λ±
Reference.
'π₯ > OS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Linux] open filesμ max user processes νν€μΉκΈ° (0) | 2022.12.07 |
---|---|
[μ΄μ체μ ] IPC Inter-Process Communication (0) | 2021.09.09 |
[μ΄μ체μ ] μΈν°λ½νΈ Interrupt (0) | 2021.08.25 |
[μ΄μ체μ ] νλ‘μΈμ€ μ£Όμ κ³΅κ° (0) | 2021.08.25 |
[μ΄μ체μ ] νλ‘μΈμ€μ μ€λ λμ μ°¨μ΄ (0) | 2021.08.18 |