λ€μ΄κ°κΈ°
μ»΄ν¨ν° κ³Όνμμ 컀λ (kernel)μ μ΄μ체μ μ ν΅μ¬ λΆλΆμΌλ‘μ, μ΄μ체μ μ λ€λ₯Έ λΆλΆ λ° μμ©νλ‘κ·Έλ¨ μνμ νμν μ¬λ¬κ°μ§ μλΉμ€λ₯Ό μ 곡νλ€.
π 컀λμ΄λ?
1. μ΄μ체μ μ ν΅μ¬μ ꡬμ±νλ νλ‘κ·Έλ¨. |
2. λΆν νλ λμ λ©λͺ¨λ¦¬λ₯Ό λ‘λνλ μ΄μ체μ μ 첫 λΆλΆμ΄λ€. |
3. μ΄μ체μ λ₯Ό μ€ννλ μ€μλ μ½μ΄λ€μΌ μ μλ λ€μν λͺ¨λλ‘ κ΅¬μ±λμ΄ μλ€. |
μ§μμ μΌλ‘ μ½μ΄λ€μΌ μ μμ΄μΌνλ€λλ° μμ§?
=> μ΄μ체μ μ ν΅μ¬ λΆλΆμΌλ‘ μ΄μ체μ μ λ€μν μλΉμ€λ₯Ό μ§μνκΈ° μν΄ μνΈμμ©μ΄ λμ΄μΌ νκΈ° λλ¬Έμ΄λ€.
컀λμ΄ λ©λͺ¨λ¦¬ μμμμ 보νΈλλ μ΄μ ?
=> κ°λ ₯ν κΆνμ κ°μ§κΈ° λλ¬Έμ 보μμ μν΄ μμ©νλ‘κ·Έλ¨μ΄ μ κ·Όν μ μλ λ©λͺ¨λ¦¬ μμμμ 보νΈλλ€.
π€ 컀λμ μν
1. 보μ |
2. μμ κ΄λ¦¬ |
3. μΆμν |
μμ (resource) μ΄ λκ°?
CPU, λ©λͺ¨λ¦¬, κ°μλ©λͺ¨λ¦¬, ν€λ³΄λ λ§μ°μ€ λ±μ΄ μκ³ , μΆμμ μΌλ‘λ μ°λ λ, ν¨ν·, νλ‘ν μ½, ν μ€ν¬λ₯Ό λ§νλ€.
- μ°λ λ ( thread ) :
μ΄λ ν νλ‘κ·Έλ¨ λ΄μμ, νΉν νλ‘μΈμ€ λ΄μμ μ€νλλ νλ¦μ λ¨μ.
μΌλ°μ μΌλ‘ ν νλ‘κ·Έλ¨μ νλμ threadλ₯Ό κ°μ§κ³ μμ§λ§, νλ‘κ·Έλ¨ νκ²½μ λ°λΌ λ μ΄μμ threadλ₯Ό λμμ μ€νν μ μλ€.
- ν¨ν· ( packet ) :
λ€νΈμν¬λ₯Ό ν΅ν΄ μ μ‘νκΈ° μ½λλ‘ μλ₯Έ λ°μ΄ν°μ μ μ‘ λ¨μ.
λ³Έλλ μν¬λ₯Ό λ»νλ μ©μ΄λ‘, μνλ¬Όμ λ»νλ ν¨ν€μ§ ( package ) μ λ©μ΄λ¦¬λ₯Ό λ»νλ λ²ν· ( bucket ) μ ν©μ±μ΄μ΄λ€.
- νλ‘ν μ½ ( protocol ) :
볡μμ μ»΄ν¨ν° μ¬μ΄λ μ€μ μ»΄ν¨ν°μ λ¨λ§κΈ° μ¬μ΄μμ λ°μ΄ν° ν΅μ μ μν νκ² νκΈ° μν΄ νμν ν΅μ κ·μ½.
μ νΈ μ‘μ μ μμ, λ°μ΄ν°μ ννλ², μ€λ₯ κ²μΆλ² λ±μ μ νλ€.
- ν μ€ν¬ ( task ) :
μμ λ¨μμ μ€ν λ¨μ.
λμμ΄ λλ μ©μ΄λ‘ νλ‘μΈμ€, κ²½λ νλ‘μΈμ€, μ€λ λ (μ€νμ μν), μ€ν , μμ², 쿼리 (μμ μ μν) κ° μλ€.
κ°λ¨ν λ§ν΄μ μ»΄ν¨ν° λ΄λΆμ λͺ¨λ κ²μ΄λΌκ³ μκ°νλ©΄ λλ€.
μ΄μ체μ μ 컀λμ μ΄λ¬ν μμμ ν¨μ¨μ μΌλ‘ κ΄λ¦¬νκΈ° μν΄μ μ΄λ€ μ 무λ₯Ό νλ?
=> CPU μ€μΌμ€λ§, λ©λͺ¨λ¦¬ κ΄λ¦¬, μ μΆλ ₯ κ΄λ¦¬, νμΌ μμ€ν κ΄λ¦¬ λ±μ μ 무λ₯Ό μννλ€.
CPU μ€μΌμ€λ§μ΄λ?
μ»΄ν¨ν° μμμ ν¨μ¨μ μΌλ‘ κ΄λ¦¬νκΈ° μν΄ νλ‘μΈμ€λ€ μ¬μ΄μμ CPU ν λΉμ μν μ°μ μμλ₯Ό κ΄λ¦¬νλ μΌ.
π λλ°μ΄μ€ λλΌμ΄λ²λ?
λλ°μ΄μ€ λλΌμ΄λ²λ 컀λ 곡κ°μμ μμ©νλ‘κ·Έλ¨κ³Ό νλμ¨μ΄ κ°μ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°κ² ν΄μ£Όλ νλ‘κ·Έλ¨μ΄λ€.
μ΄κ²μ μ μλμ΄ μλ μΈν°νμ΄μ€λ‘ 컀λκ³Ό μ°κ²°λλ€.
리λ μ€μμλ λͺ¨λ κ²μ νμΌλ‘ κ΄λ¦¬νλ€.
μ°κ²°λμ΄ μλ νλμ¨μ΄ μ₯μΉ λν, μ₯μΉ νμΌ ( Device file )λ‘ κ΄λ¦¬νλ κ²μ΄λ€.
μ΄λ¬ν μ₯μΉ νμΌμ λν 컨νΈλ‘€μ λλ°μ΄μ€ λλΌμ΄λ² ( Device Driver )νλ‘κ·Έλ¨μ ν΅ν΄ κ΄λ¦¬νλ κ²μ΄λ€.
μ΄λ, λλ°μ΄μ€ λλΌμ΄λ²λ μ ν΄μ Έ μλ νλμ¨μ΄ μ μ΄ ν¨μλ₯Ό ν΅ν΄ μ₯μΉλ₯Ό μ μ΄νλλ‘ μμ±λλ€.
μ 리νμλ©΄
νΉμ νλμ¨μ΄λ μ₯μΉλ₯Ό μ μ΄νκΈ° μν 컀λμ μΌλΆλΆμΌλ‘ λμνλ νλ‘κ·Έλ¨μ΄λ€.
μ»΄ν¨ν°λ₯Ό ꡬμ±νλ λ€μν μ μΆλ ₯ μ₯μΉλ§λ€ κ°κ° μ₯μΉ λλΌμ΄λ²κ° νλ‘κ·Έλ¨ μ»€λμ ν΅ν©λμ΄ μ€νλλ€.
μ¬μ΄ μμ
μ°λ¦¬κ° μ°λ λͺ¨λ μ μΆλ ₯μ₯μΉ ( λΈλ£¨ν¬μ€ ν€λ³΄λ, μ μ λͺ¨λν°, λ§μ°μ€, 볡ν©κΈ° λ± )μ μ»΄ν¨ν° ( OS )κ° μλ‘ μμλ€μ μ μκ² ν΅μν΄μ£Όλ μν .
μ΄λ €μ΄ μμ
μ»΄ν¨ν°μ λ²μ€λ ν΅μ μμ€ν μ μ΄μ©νμ¬ νλμ¨μ΄μ 컀λ μ¬μ΄μμ λͺ λ Ήμ΄λ λ°μ΄ν°λ₯Ό μ λ¬ν΄μ£Όλ μν .
λλ°μ΄μ€ λλΌμ΄λ²κ° νμλ‘ νλ κ²
μ₯μΉμ μμ‘΄μ ( μ₯μΉλ§λ€ μλνλκ² λ€ λ¬λΌμ )μ΄κΈ° λλ¬Έμ κ°κ° μ₯μΉλ§λ€ μ₯μΉ λλΌμ΄λ²κ° μ‘΄μ¬νλ€.
π μ μ λͺ¨λμ 컀λλͺ¨λλ?
μ λͺ¨λκ° 2κ°μ§μ΄μ§?
컀λμμ μ€μν μμμ κ΄λ¦¬νκΈ° λλ¬Έμ, μ¬μ©μκ° κ·Έ μ€μν μμμ μ κ·Όνμ§ λͺ»νλλ‘ λͺ¨λλ‘ 2κ°μ§λ‘ λλ κ²μ΄λ€.
β¨ μ μ λͺ¨λ
1. μ μ (μ¬μ©μ)κ° μ κ·Όν μ μλ μμμ μ νμ μΌλ‘ λκ³ , νλ‘κ·Έλ¨μ μμμ ν¨λΆλ‘ μΉ¨λ²νμ§ λͺ»νλ μ½λμ΄λ€. |
2. μ΄ λͺ¨λμμ μ½λλ₯Ό μμ±νκ³ , νλ‘μΈμ€λ₯Ό μ€ννλ λ±μ νλμ ν μ μλ€. |
3. μμ½ν΄μ, μ μ μ΄ν리μΌμ΄μ μ½λκ° μ μ λͺ¨λμμ μ€νλλ€. |
⨠컀λ λͺ¨λ
1. λͺ¨λ μμ (λλΌμ΄λ², λ©λͺ¨λ¦¬, CPU λ±)μ μ κ·Ό, λͺ λ Ήμ ν μ μλ€. |
2. μ μ λͺ¨λμλ λΉκ΅κ° μλκ² μ»΄ν¨ν° λ΄λΆμμ λͺ¨λ κ²μ ν μ μλ€. |
π€ μ μ λͺ¨λμ 컀λ λͺ¨λμ μ ν
νλ‘μΈμ€κ° μ€νλλ λμμ νλ‘μΈμ€λ μμμ΄ μ μ λͺ¨λμ 컀λλͺ¨λλ₯Ό μλ€κ°λ€ νλ©΄μ μ€νλλ€.
μ μ λͺ¨λ -> 컀λ λͺ¨λ μμ² | νλ‘μΈμ€κ° μ μ λͺ¨λμμ μ€νλλ€κ° νΉλ³ν μμ²μ΄ νμν λ system callμ μ΄μ©νμ¬ μ»€λμ μμ²νλ€. |
컀λ λͺ¨λ -> μ μ λͺ¨λλ‘ λ°ν | system callμ μμ²μ λ°μ 컀λμ΄ κ·Έ μμ²μ λν μΌμ νκ³ κ²°κ³Όκ°μ system callμ λ¦¬ν΄ κ°μΌλ‘ μ ν΄μ€λ€. |
ex ) νλ‘μΈμ€κ° μ€νλκ³ μλ μ€μ λΌμ΄λΈλ¬λ¦¬ ν¨μμΈ fopen ν¨μλ₯Ό νΈμΆνλ€κ³ κ°μ νμ λ.
=>
1. fopen λ΄λΆμμ system callμΈ openμ νΈμΆνλ©΄μ 컀λ λͺ¨λλ‘ λμ΄κ°λ€.
2. openμ λν μ λ ₯κ°μ΄ 컀λλ‘ μ λ¬μ΄ λκ³ , ν΄λΉ μΌμ μλ£νκ³ μ»€λμμ returnμ ν΄μ£Όλ©΄μ μ μ λͺ¨λλ‘ λμκ°λ€.
π μ 체μ μΈ νλ¦
β νλ¦ 1
μ μ λͺ¨λμμ μ€νλκ³ μλ μ μ μ΄ν리μΌμ΄μ μμ system call μ΄λ λΌμ΄λΈλ¬λ¦¬ ν¨μλ₯Ό ν΅ν΄μ I/O μμ²
1. 컀λ λͺ¨λλ‘ μ ν. 컀λμ I/O κ΄λ¦¬μκ° ν€λ³΄λλ λͺ¨λν°μ μ₯μΉ λλΌμ΄λ²μ μμ². |
2. μ₯μΉ λλΌμ΄λ²μμ ν€λ³΄λλ λͺ¨λν°μμ λ°μ return κ°μ 컀λμ return. |
3. 컀λμ ν΄λΉ κ°μ user application μΌλ‘ return. |
4. μ μ λͺ¨λλ‘ μ ν. |
β νλ¦ 2
μ μ λͺ¨λμμ CμΈμ΄λ‘ μμ μ€ malloc μ ν΅ν΄μ λ©λͺ¨λ¦¬ ν λΉμ λ°μΌλ €κ³ system call νΈμΆ.
1. 컀λ λͺ¨λλ‘ μ ν. λ©λͺ¨λ¦¬ [κ΄λ¦¬ ν λΉ or μλͺ»λ μ κ·Ό] return κ°μ user application μΌλ‘ μ λ¬. |
2. μ μ λͺ¨λλ‘ μ ν. |
Note!
malloc μ΄ λκ°?
C μΈμ΄ μ€ λμ ν λΉμ΄ malloc ν¨μμ΄λ€.
ν¨μλ?
νλμ νΉλ³ν λͺ©μ μ μμ μ μννκΈ° μν΄ λ 립μ μΌλ‘ μ€κ³λ μ½λμ μ§ν©.
λμ ν λΉμ μ»΄ν¨ν° νλ‘κ·Έλλ°μμ μ€ν μκ° λμ μ¬μ©ν λ©λͺ¨λ¦¬ 곡κ°μ ν λΉνλ κ²μ λ§νλ€.
μ¬μ©μ΄ λλλ©΄ μ΄μ체μ κ° μΈ μ μλλ‘ λ°λ©νκ³ λ€μμ μκ΅¬κ° μ¨λ€λ©΄ λ€μ ν λΉλ°μ μ μλ€.
κ·ΈλΌ μ μ ν λΉλ μκ² μ§?
μ μ ν λΉμ μ€ννλ μκ° νλ‘κ·Έλ¨μ΄ μ¬μ©ν λ©λͺ¨λ¦¬μ ν¬κΈ°λ₯Ό κ³ λ €νμ¬ λ©λͺ¨λ¦¬μ ν λΉμ΄ μ΄λ£¨μ΄μ§λ€.
- CPU μ€μΌμ€λ§ μ€λͺ .
https://jihyeong-ji99hy99.tistory.com/
[μ΄μ체μ ] CPU μ€μΌμ€λ§μ΄λ?
CPU μ€μΌμ€λ§(CPU Scheduling)μ΄λ? : μ»΄ν¨ν° μμμ ν¨μ¨μ μΌλ‘ κ΄λ¦¬νκΈ° μν΄ νλ‘μΈμ€λ€ μ¬μ΄μμ CPU ν λΉμ μν μ°μ μμλ₯Ό κ΄λ¦¬νλ μΌ β‘μν μ μν ꡬλΆβ‘ 1) μ₯κΈ° μ€μΌμ€λ¬(Long-Term) - μ€νν
jihyeong-ji99hy99.tistory.com
- λλ°μ΄μ€ λλΌμ΄λ² μ€λͺ .
λλ°μ΄μ€ λλΌμ΄λ²μ λν μ΄ν΄
λλ°μ΄μ€ λλΌμ΄λ²μ λν μ΄ν΄ λλ°μ΄μ€ λλΌμ΄λ²λ 컀λ곡κ°μμ μμ©νλ‘κ·Έλ¨κ³Ό νλμ¨μ΄κ°μ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°κ² ν΄μ£Όλ νλ‘κ·Έλ¨μ΄λ€. μ΄ λλ°μ΄μ€ λλΌμ΄λ²λ μ μλμ΄ μλ μΈν°νμ΄
dalgong2.tistory.com
- C μΈμ΄ μ€ λμ ν λΉ (malloc) μ€λͺ .
CμΈμ΄ - λμ ν λΉ(malloc)
λμ ν λΉμ μ»΄ν¨ν° νλ‘κ·Έλλ°μμ μ€ν μκ° λμ μ¬μ©ν λ©λͺ¨λ¦¬ 곡κ°μ ν λΉνλ κ²μ μ΄μΌκΈ° ν©λλ€. μ¬...
blog.naver.com
- 컀λ / 컀λ λͺ¨λ & μ μ λͺ¨λ μ€λͺ
https://blockdmask.tistory.com/
[μ΄μ체μ ] μ μ λͺ¨λμ 컀λλͺ¨λμ λν΄μ.
μλ νμΈμ, BlockDMaskμ λλ€.μ€λμ μ΄μ체μ μ μ μ λͺ¨λμ 컀λλͺ¨λμ λν΄μ μμ보λλ‘ νκ² μ΅λλ€.κΈλ‘ λ¨Όμ μ€λͺ μ νκ³ , κ·Έλ¦Όμ ν΅ν΄μ μ€λͺ νκ² μ΅λλ€.μ κ° νκ΅μμ μκ°νλ Unix system
blockdmask.tistory.com