νλ‘μΈμ€μ μμ±
νλ‘μΈμ€λ λΆλͺ¨ νλ‘μΈμ€μ μν΄ λ§λ€μ΄μ Έ μμ νλ‘μΈμ€κ° λ§λ€μ΄μ§λ ꡬ쑰μ΄λ€ (μ΅μλ¨ λΆλͺ¨ νλ‘μΈμ€λ init νλ‘μΈμ€λ‘ λΆν κ³Όμ μμ 컀λμ μν΄ μμ±λλ 첫 λ²μ§Έ μ¬μ©μ κ³΅κ° νλ‘μΈμ€). μ΄λ κ² λλ€λ³΄λ μμ°μ μΌλ‘ νλ‘μΈμ€ νΈλ¦¬κ° νμ±λλ€. μ΄λ μμ νλ‘μΈμ€λΌλ¦¬λ μμμ 곡μ νκΈ°λ νμ§λ§ 보ν΅μ μλ‘ λ 립μ μΈ νλ‘μΈμ€λ‘ CPUλ₯Ό λκ³ κ²½μνμ§ κΈ°ν μμ 곡μ λ μ νμ§ μλλ€.
νλ‘μΈμ€κ° μμ±λ λ μμ νλ‘μΈμ€λ λΆλͺ¨νλ‘μΈμ€μ 곡κ°μ 볡μ¬νκ³ μμ λ§μ λ°μ΄ν°λ₯Ό μμ μ¬λ¦¬κ²λλ€. μ¬κΈ°μ 볡μ λ fork() λ©μλμ μν΄, 볡μ ν λ°μ΄ν° μμ μκΈ° λ°μ΄ν°λ₯Ό μ¬λ¦¬λ건 exec() λ©μλλ‘ μμ€ν μ½μ νμ¬ μλ‘μ΄ νλ‘κ·Έλ¨μ λ©λͺ¨λ¦¬λ₯Ό μ¬λ¦¬κ² λλ€.
νλ‘μΈμ€μ μ’ λ£ (Termination)
λ³΄ν΅ exit() λ©μλλ₯Ό ν΅ν΄ μμ€ν μ½μ νλ©΄ νλ‘μΈμ€κ° μ’ λ£λλ€. (μμ)νλ‘μΈμ€κ° μ’ λ£λλ©΄ λΆλͺ¨μκ² output dataλ₯Ό 보λ΄κ² λλ€. μ΄λ κ² output dataλ€μ λͺ¨λ μ΄μ체μ μκ² λ°λ©νλ μμλ₯Ό κ±°μΉκ²λλ€. λ§μ½ νλ‘μΈμ€ λ΄λΆκ° μλ μΈλΆμμ, λΆλͺ¨νλ‘μΈμ€κ° μμνλ‘μΈμ€λ₯Ό μ’ λ£μν¬ λλ abort() μμ€ν μ½μ μ€νμν¨λ€. μ΄λ¬ν κ²½μ°λ λ³΄ν΅ μμμ΄ ν λΉ μμ νκ³μΉλ₯Ό μ΄κ³Όνκ±°λ μμ νμ€ν¬κ° λμ΄μ νμνμ§ μμκ²½μ°μ μ¬μ©λλ€.
Copy - on - write
리λ μ€μ κ°μ μ΄μ²΄λ€μ μ½κ°μ μ΅μ νκ° λ€μ΄κ° λΆλͺ¨μ μ 체 λ°μ΄ν°λ₯Ό 볡μ¬νλ κ²μ΄ μλ 곡μ ν μ μλ λΆλͺ¨λ°μ΄ν°λ₯Ό μ μΈνκ³ μμνλ‘μΈμ€μ 곡κ°μ λ§λ€κ²λλ€. μ΄λ 리λ μ€μ μλλ°©μμ write(μ°κΈ°) μμ μ΄ λ€μ΄κ° λ λΆλͺ¨ νλ‘μΈμ€ μμκ³Ό λ³νκ° μκΈ°λ μ΄ λ°μ΄ν°λ₯Ό 볡μ¬ν΄μ€κ³ μ°κΈ° μμ μ΄ λ€μ΄κ°μ§ μλ λ°μ΄ν°λ λΆλͺ¨λ°μ΄ν°λ₯Ό κ·Έλλ‘ κ³΅μ νλ λ°©μμΌλ‘ λμκ°λ€. μ΄λ¬ν λ°©μμ copy-on-writeλΌκ³ λΆλ₯Έλ€.
wait() μμ€ν μ½
νλ‘μΈμ€ κ΄λ ¨ μ£Όμ μμ€ν μ½μλ μμ κ°μ΄ 4κ°μ§κ° μλ€. μμ fork() μ exec() μ λν΄ μμ보μμΌλ μ΄λ²μλ wait() μμ€ν μ½μ λν΄ μμ보μ
wait μμ€ν μ½μ λ§κ·Έλλ‘ νλ‘μΈμ€ μ§νμ λ©μΆκ²νλ€. μ μμλ₯Ό 보면 if λ¬Έμ ν΅ν΄ μμ νλ‘μΈμ€μΈμ§ νμΈνκ³ μ΄ν μμ μ½λλ₯Ό μ€νμν€κ³ λ§μ½ μμ νλ‘μΈμ€κ° μλ κ²½μ° elseλ¬Έμ ν΅ν΄ wait() μμ€ν μ½μ νΈμΆνλ€. μ΄λ else μλ μμ νλ‘μΈμ€κ° μλ λΆλͺ¨ νλ‘μΈμ€ μ½λκ° λ€μ΄κ°μΌλ‘μ¨ μ»€λμ μμμ΄ μ’ λ£λ λκΉμ§ λΆλͺ¨λ₯Ό μ κΉ sleepμν€κ² νλ€. λ§μ½ μμ νλ‘μΈμ€κ° λλλ©΄ μ΄νμ λΆλͺ¨ νλ‘μΈμ€κ° λ€μ μ§νλλλ‘ κ΄λ¦¬νλ€.
exit() μμ€ν μ½
νλ‘μΈμ€ μ’ λ£λ λ μ’ λ₯κ° μλ€. λ©μΈ νΈμΆμ ν νμ μμ μ΄ λλμ exit μμ€ν μ½μ΄ νΈμΆλκ³ μλ°μ μΌλ‘ μ£½λ κ²κ³Ό μΈλΆ(λΆλͺ¨)μμ μμ νλ‘μΈμ€κ° λ©λͺ¨λ¦¬λ₯Ό μ΄κ³Όνλ€κ±°λ μΈλͺ¨κ° μμ΄ μ£½μ΄λ κ²½μ°κ° μλ€. νμ§λ§ 곡ν΅μ μΈ κ²μ λ°λμ μμ νλ‘μΈμ€μ exit()μ΄ λ λ€μμΌ λΆλͺ¨λ₯Ό exit() μν¬ μ μλ€λ μ μ κΈ°μ΅νμ μ½λλ₯Ό 보μλ©΄ λ§μ½ μμ½λμμλ λ©μΈμ΄ νΈμΆλκ³ νλ¦°νΈλ§ ν νμ νλ‘μΈμ€κ° λ°λ‘ μ’ λ£λλ€.
νλ‘μΈμ€κ° νλ ₯
νλ‘μΈμ€λ λ 립μ μΌλ‘ μνλκΈ°λ νμ§λ§ νλ ₯μ μΌλ‘ μνλκΈ°λ νλ€. νλ‘μΈμ€κ° νλ ₯νλ λ°©λ²μ Interprocess Comunication(IPC) λΌκ³ λΆλ₯Έλ€. IPCμλ ν¬κ² λ κ°μ§ λ°©λ²μ΄ μλ€.
Message Passing
λ©μΈμ§ ν¨μ±μ νλ‘μΈμ€ κ°μ μλ‘ μ»€λμ ν΅ν΄μ λ©μΈμ§λ₯Ό μ λ¬νκ³ , λ°λ λ°©μμ΄λ€. (νλ‘μΈμ€λΌλ¦¬ μ§μ λ©μΈμ§λ₯Ό μ£Όκ³ λ°μ μ μλ€)
λ©μΈμ§ ν¨μ± λ°©λ²μ λͺ©μ μ§λ₯Ό λͺ μνλ Direct Communicationκ³Ό λꡬνν μ λ¬νμ§λ λͺ¨λ₯΄μ§λ§ λ©μΌλ°μ€orν¬νΈmμλ€ λ©μΈμ§λ₯Ό λ£κ³ λ¨Όμ λ©μΌλ°μ€λ₯Ό μ΄κ²λλ νλ‘μΈμ€μ 곡μ νλ λ°©λ²μΈ Indirect Communicationμ΄ μλ€.
Shared Memory
μμΉμ μΌλ‘ νλ‘μΈμ€λ λ μμ μΈ μ£Όμ곡κ°(μ½λ/λ°μ΄ν°/μ€ν)μ κ°μ§κ³ μμ§λ§ μΌλΆ μ£Όμ 곡κ°μ 곡μ ν μ μκ²λ ν μ μλ€. shared memoryλ μΌλΆλ©λͺ¨λ¦¬λ₯Ό 곡μ νλλ‘ λ§€νν΄μ μ¬μ©νλ λ°©μμ΄λ€.
ν·κ°λ¦¬μ§ λ§κ²μ μ€λ λλ νλμ νλ‘μΈμ€λ₯Ό λκ³ μ¬λ¬ μ€λ λκ° νλ ₯νλ κ²μ΄μ§ μμ κ°μ΄ νλ‘μΈμ€κ°μ νλ ₯νλ κ²κ³Όλ μμ°ν λ€λ₯΄λ€!
https://core.ewha.ac.kr/publicview/C0101020140321144554159683?vmode=f
'π₯οΈ μ»΄ν¨ν°κ³΅ν > Operating System' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Deadlocks (0) | 2024.06.07 |
---|---|
Process Synchronization (0) | 2024.06.04 |
CPU Scheduling (0) | 2024.06.02 |
Process (0) | 2024.05.31 |
System Structure & Program Execution (0) | 2024.05.28 |