2023. 3. 1. 15:40γCS/CS μ€ν°λ
νλ‘μΈμ€?
νλ‘μΈμ€λ User modeμμ μλνλ νλμ νλ‘κ·Έλ¨μ μλ―Ένλ€. (ex. ν¬λ‘¬, μΉ΄μΉ΄μ€ν‘, λμ€μ½λ λ±)
κ° νλ‘μΈμ€λ€μ CPUμ λ©λͺ¨λ¦¬ μμμ μμ‘΄νμ¬ μλλλ©° User mode μμ€μμ μλνκΈ° λλ¬Έμ νμΌ μ μΆλ ₯, λ€νΈμν¬ ν΅μ λ±μ μ§μ μννμ§λ λͺ»νκ³ νΈλ©μ ν΅ν΄ λ€μν μμ€ν μ½μ νΈμΆνμ¬ μ΄λ₯Ό Kernel mode(μ΄μ 체μ )μ μμ²νκ² λλ€.
κ° νλ‘μΈμ€λ€μ λμλ€λ°μ μΌλ‘ μλν μ μλλ°, μ΄λ μ΄μ체μ μ 리μμ€ κ°μνλ₯Ό ν΅ν΄μ μ΄λ£¨μ΄μ§λ€. νΉμ PCμ CPUμ λ©λͺ¨λ¦¬λ κ°κ° νλλΏμΌμ§λΌλ μ΄μ체μ κ° μ΄λ€μ λ§μΉ κ° νλ‘μΈμ€λ€λ§μ μν CPU, λ©λͺ¨λ¦¬κ° μλ κ²μ²λΌ μͺΌκ°κ³ μ€μΌμ€λ§νλ€.
CPU κ°μνλ κ° νλ‘μΈμ€κ° λ§€μ° μ§§μ μκ° λμλ§μ CPUλ₯Ό μ μ νλλ‘ νμ¬ κ³μν΄μ 컨ν μ€νΈ μ€μμΉμ μννλ λ°©μμΌλ‘ μ΄λ£¨μ΄μ§λ€. μ΄λ¬ν μμ μ ν΅ν΄ μ¬μ©μλ νλ‘μΈμ€κ° λ§μΉ λ³λ ¬μ μΌλ‘ μνλκ³ μλ€κ³ μ°©κ°ν μ μλ€.
λ©λͺ¨λ¦¬ κ°μνλ μμ λμΌ μμμ κ³μν΄μ λλ € μΌλ CPU κ°μνμλ λ¬λ¦¬, νλμ 물리 λ©λͺ¨λ¦¬λ₯Ό μͺΌκ° λ€ μ΄λ€μ νλμ νλ‘μΈμ€μ λμμν€λ λ°©μμΌλ‘ μ΄λ£¨μ΄μ§λ€. μ΄μ체μ μ κ΄λ¦¬ νμ, μ΄λ€ λ©λͺ¨λ¦¬λ μλ‘ κ°μλμ§ μκ³ μμ ν 격리λλ€.
νλ‘μΈμ€μ μ£Όμ 곡κ°
μμ μΈκΈν νλ‘μΈμ€μ λμλλ κ°μνλ λ©λͺ¨λ¦¬λ₯Ό νλ‘μΈμ€μ μ£Όμ 곡κ°μ΄λΌκ³ νννλ€.
νλ‘μΈμ€μ μ£Όμ 곡κ°μ ν¬κ² μ½λ μμ, λ°μ΄ν° μμ, μ€ν μμ, ν μμμΌλ‘ λλλ€.
μ½λ μμ
νλ‘μΈμ€λ₯Ό μλμν¬ μ½λκ° μ μ₯λλ μμμ΄λ€.
μ¬κΈ°μμ μ½λλ μ¬λμ μν΄ Javaλ Javascript, PythonμΌλ‘ μμ±λ μ½λλ₯Ό μλ―Ένλ κ²μ΄ μλ, μ»΄ν¨ν°κ° μ΄ν΄ν μ μκ² μ»΄νμΌλ κΈ°κ³μ΄λ₯Ό μλ―Ένλ€.
ν΄λΉ μμμ λ°μ΄ν°λ νλ‘μΈμ€κ° μ€νλλ μμ€μλ μμ μ΄ λΆκ°λ₯νκ³ , μ½κΈ°λ§ κ°λ₯νλ€.
λ°μ΄ν° μμ
λ°μ΄ν° μμμλ μ μ λ³μ, μ μ λ³μ, μμ λ±μ΄ μμΉνλ€.
Javaλ₯Ό ν΅ν΄ μμλ₯Ό λ€λ©΄ λ€μκ³Ό κ°λ€.
μ μ λ³μ
public class Human {
static int maxAge = 100;
}
Human ν΄λμ€μ μ΅λ μλͺ μ 100μΈλ‘ λλ€λ©΄ λ€μκ³Ό κ°μ΄ μ μ λ³μλ‘ ν¬ν¨μν¬ μ μλ€. μ΄λ Human ν΄λμ€μ μΈμ€ν΄μ€κ° μμ±λμ§ μλλΌλ Human ν΄λμ€ λ΄λΆμ μ‘΄μ¬νκ³ , μ΄λ° κ°λ€μ λ°μ΄ν° μμμ μ μ₯λκ³ κ΄λ¦¬λλ€.
μμ
public class Circle {
static final int PI = 3.141592;
}
Circle ν΄λμ€μ PI κ°μ λ³ν μΌμ΄ μλ κ°μ΄λ―λ‘ μμλ‘ μ μΈν μ μλ€. μ΄λ¬ν μμλ€ λν λ§μ°¬κ°μ§λ‘ λ°μ΄ν° μμμ μ μ₯λλ€.
λ°μ΄ν° μμμ μ½λ μμκ³Ό λ¬λ¦¬ νλ‘μΈμ€κ° μλνλ μμ€μλ μ½κΈ° λ° μ°κΈ° μμ μ΄ κ°λ₯νλ€.
μ€ν μμ
μ€ν μμμ ν¨μμ νΈμΆκ³Ό κ΄λ ¨λ μ 보λ₯Ό μ μ₯νλ μμμ΄λ€.
μ€ν μμμ μ΄λ¦ κ·Έλλ‘, μλ£ κ΅¬μ‘°λ‘ μ€νμ μ΄μ©νλ€. (LIFO)
μ€ν μμμ ν¬κΈ°λ μ»΄νμΌ μμ μ μ»΄νμΌλ¬μ μμΈ‘μ μν΄ κ²°μ λλ€.
νΉμ ν¨μκ° νΈμΆλ λλ§λ€ μ€ν μμμ ν΄λΉ μ€ν 컨ν μ€νΈ(ex. μΈμ, μ§μ λ³μ)κ° μμ΄κ² λκ³ , ν¨μκ° μλμ λ§μΉκ³ 리ν΄λλ©΄ μ€νμμ μ κ±°λλ€.
μ΄λ¬ν νΉμ± λλ¬Έμ, λ§μ½ ν¨μλ₯Ό λ°ννμ§ μκ³ κ³μν΄μ μλ€λ³΄λ©΄ λ©λͺ¨λ¦¬ λΆμ‘± λ¬Έμ λλ¬Έμ νλ‘μΈμ€κ° μ£½μ΄λ²λ¦¬λλ° μ΄κ²μ΄ λ°λ‘ κ·Έ μ λͺ ν Stack Overflowμ΄λ€. ν΄λΉ λ¬Έμ λ μ¬κ· ν¨μμμ μ’ μ’ λ°μνλλ°, μ¬κ· μ’ λ£ μ‘°κ±΄μ μ λλ‘ μ£Όμ§ μμμ λ λ°μν μ μλ€.
ν μμ
ν μμμ λ°νμμ ν¬κΈ°κ° κ²°μ λλ©° λμ λ©λͺ¨λ¦¬ ν λΉμ μν΄ μ¬μ©λλ€.
ν μμμ νλ‘κ·Έλλ¨Έκ° User modeμμ μ§μ μ μ΄ν μ μλ μμμΈλ°, ν λΉμ malloc(), ν΄μ λ free() ν¨μλ₯Ό μ΄μ©ν μ μλ€.
(λ¬Όλ‘ Javaλ Pythonμ²λΌ ν λΉμ νλ‘κ·Έλλ¨Έμκ² λ§‘κΈ°λ ν΄μ λ μ체 κ°λΉμ§ μ½λ ν°λ₯Ό ν΅ν΄ μνλμ΄ νλ‘κ·Έλλ¨Έκ° μ κ²½μ¨μΌν λΆλΆμ μ€μΈ μΈμ΄λ μ‘΄μ¬νλ€.)
ν μμμλ κ°μ²΄, λ°°μ΄ λ±μ΄ μ μ₯λλ©° κ°μ²΄μ κ²½μ° Javaλ Python, NodeJSμ new μ°μ°μλ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬ ν λΉμ΄ μνλλ€.
'CS > CS μ€ν°λ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
IPC(Interprocess Communication) (0) | 2023.03.19 |
---|---|
νλ‘μΈμ€ μ μ΄ λΈλ‘(PCB) (1) | 2023.03.18 |
System Call(μμ€ν μ½) (0) | 2023.03.11 |
μΈν°λ½νΈ(Interrupt) (1) | 2023.03.11 |
νλ‘μΈμ€ vs μ€λ λ (0) | 2023.03.04 |