μ΄μ€λͺ¨λ(Dual mode)
μ΄μ체μ μ μ΄μ€λͺ¨λ(dual mode)λ μ»΄ν¨ν° μμ€ν
μμ μ¬μ©μ νλ‘κ·Έλ¨κ³Ό μ΄μ체μ (OS) κ°μ 보μκ³Ό μμ μ±μ μ μ§νκΈ° μν κΈ°μ μ μΈ κ΅¬μ‘°λ₯Ό λνλ
λλ€. μ΄μ€λͺ¨λλ λν μμ€ν
μμμ ν¨μ¨μ μΌλ‘ κ΄λ¦¬νκ³ νλ‘μΈμ€ κ° μΆ©λμ λ°©μ§νλ©° μμ€ν
μ λ°μ μμ μ±μ 보μ₯νλ λ° μ€μν μν μ ν©λλ€.
μ΄μ체μ λ μΌλ°μ μΌλ‘ λ κ°μ§ λͺ¨λλ‘ λμν©λλ€.
1. μ¬μ©μ λͺ¨λ(User Mode):
- μ¬μ©μ νλ‘κ·Έλ¨μ΄ μ€νλλ νκ²½μ
λλ€.
- μ¬μ©μ λͺ¨λμμλ μΌλ°μ μΈ μμ© νλ‘κ·Έλ¨λ€μ΄ μ€νλλ©°, μ΄ νλ‘κ·Έλ¨λ€μ μμ€ν
μμμ μ§μ μ μΌλ‘ μ κ·Όν μ μμ΅λλ€.
- μ¬μ©μ νλ‘κ·Έλ¨μ΄ μ§μ νλμ¨μ΄ μμμ μ κ·Όνλ €κ³ ν λ λ°μν μ μλ μ€λ₯λ 보μ μνμΌλ‘λΆν° μμ€ν
μ 보νΈν©λλ€.
2. 컀λ λͺ¨λ(Kernel Mode):
- μ΄μ체μ μ ν΅μ¬ λΆλΆ, μ¦ μ»€λμ΄ μ€νλλ νκ²½μ
λλ€.
- 컀λ λͺ¨λμμλ μ΄μ체μ μ ν΅μ¬ κΈ°λ₯ λ° μμ€ν
μμμ λν μ κ·Όμ΄ νμ©λ©λλ€.
- μ΄μ체μ λ μ΄ λͺ¨λμμ νλμ¨μ΄ μμμ μ§μ μ μ΄νκ³ μ¬μ©μ νλ‘κ·Έλ¨λ€ κ°μ μΆ©λμ κ΄λ¦¬ν©λλ€.
- μ¬μ©μ νλ‘κ·Έλ¨μ΄ μμ€ν
νΈμΆ(system call)μ ν΅ν΄ μ΄μ체μ μλΉμ€λ₯Ό μμ²ν λ, μ΄ μμ²μ μ¬μ©μ λͺ¨λμμ 컀λ λͺ¨λλ‘ μ νλμ΄ μ²λ¦¬λ©λλ€. μ΄λ κ² ν¨μΌλ‘μ¨ μ΄μ체μ λ μ¬μ©μ νλ‘κ·Έλ¨μ νμν μλΉμ€λ₯Ό μ 곡νλ©΄μλ μμ μ±μ μ μ§ν μ μμ΅λλ€.
μ΄μ€λͺ¨λλ μμ€ν
μ μμ μ±κ³Ό 보μμ ν보νκΈ° μν μ€μν 보μ κΈ°λ₯ μ€ νλμ΄λ©°, μ»΄ν¨ν° μμ€ν
μ΄ μμ μ μΌλ‘ λμνκ³ μΈλΆ 곡격μΌλ‘λΆν° μμ νκ² λ³΄νΈλλλ‘ λμμ€λλ€.
μμ€ν νΈμΆ(System Call)
μ΄μ체μ μ μμ€ν νΈμΆ(System Call)μ μ¬μ©μ νλ‘κ·Έλ¨μ΄ μ΄μ체μ μ μλΉμ€λ₯Ό μμ²νλ μΈν°νμ΄μ€μ λλ€. μ¬μ©μ νλ‘κ·Έλ¨μ΄ μ§μ νλμ¨μ΄ μμμ μ κ·Όνλ κ²μ νμ©λμ§ μμ΅λλ€. λμ , μμ€ν νΈμΆμ ν΅ν΄ μ΄μ체μ μκ² νΉμ μμ μ μνν΄λ¬λΌκ³ μμ²ν μ μμ΅λλ€. μμ€ν νΈμΆμ μ¬μ©μ λͺ¨λ(User Mode)μμ μ€ν μ€μΈ νλ‘κ·Έλ¨μ΄ 컀λ λͺ¨λ(Kernel Mode)λ‘ μ νλ μ μκ² ν΄μ€λλ€. μ΄λ κ² ν¨μΌλ‘μ¨ μ΄μ체μ λ νλ‘κ·Έλ¨μ μμ²μ λ°μλ€μ΄κ³ μμ νκ² μ€νν μ μμ΅λλ€.
μμ€ν
νΈμΆμ μμλ‘λ λ€μκ³Ό κ°μ μμ
μ΄ ν¬ν¨λ μ μμ΅λλ€.
1. νμΌ κ΄λ¦¬(File Management): νμΌμ μ΄κ³ λ«λ κ², μ½κ³ μ°λ κ², νμΌκ³Ό λλ ν 리λ₯Ό μμ±νκ±°λ μμ νλ λ±μ νμΌ κ΄λ ¨ μμ
μ μνν μ μμ΅λλ€.
2. νλ‘μΈμ€ μ μ΄(Process Control): μλ‘μ΄ νλ‘μΈμ€λ₯Ό μμ±νκ±°λ κΈ°μ‘΄μ νλ‘μΈμ€λ₯Ό μ’
λ£νλ μμ
, νλ‘μΈμ€ κ° ν΅μ μ μν κΈ°λ₯ λ±μ΄ ν¬ν¨λ©λλ€.
3. μ₯μΉ κ΄λ¦¬(Device Management): μ
μΆλ ₯ μ₯μΉμμ ν΅μ μ μν κΈ°λ₯, μλ₯Ό λ€μ΄ νλ¦°ν°λ‘ μΆλ ₯νκ±°λ ν€λ³΄λμμ μ
λ ₯μ λ°λ μμ
λ±μ΄ μμ΅λλ€.
4. ν΅μ (Communication): νλ‘μΈμ€ κ°μ ν΅μ μ μν μμ
, μλ₯Ό λ€μ΄ μμΌμ μ΄μ΄ λ€νΈμν¬λ₯Ό ν΅ν ν΅μ μ νλ μμ
μ΄ μ¬κΈ°μ μν©λλ€.
5. λ©λͺ¨λ¦¬ κ΄λ¦¬(Memory Management): λ©λͺ¨λ¦¬λ₯Ό ν λΉνκ³ ν΄μ νλ μμ
, λ€λ₯Έ νλ‘μΈμ€μμ λ©λͺ¨λ¦¬ 곡μ λ±μ΄ μ¬κΈ°μ ν¬ν¨λ©λλ€.
μμ€ν
νΈμΆμ μΌλ°μ μΌλ‘ νλ‘κ·Έλλ° μΈμ΄μ νμ€ λΌμ΄λΈλ¬λ¦¬ ν¨μλ₯Ό ν΅ν΄ μ κ·Όλ©λλ€. μ΄ ν¨μλ€μ μ¬μ©μ νλ‘κ·Έλ¨μ΄ νΉμ μ΄μ체μ κΈ°λ₯μ μ¬μ©ν μ μλλ‘ λμμ£Όλ©°, λ΄λΆμ μΌλ‘λ μμ€ν
νΈμΆμ νΈμΆνμ¬ μ΄μ체μ μκ² μμ
μ μμ²ν©λλ€. μμ€ν
νΈμΆμ μ΄μ체μ μ ν΅μ¬ κΈ°λ₯μ μΈλΆμ λ
ΈμΆνμ§ μμΌλ©΄μλ μμ νκ² μ¬μ©μ νλ‘κ·Έλ¨κ³Ό μ΄μ체μ κ°μ μνΈμμ©μ κ°λ₯μΌ ν©λλ€.
μμ€ν νΈμΆμ μ’ λ₯
μμ€ν
νΈμΆμ μ’
λ₯λ μ΄μ체μ λ§λ€ μ‘°κΈμ© λ€λ₯Ό μ μμ§λ§, μΌλ°μ μΌλ‘ μ¬μ©λλ λͺ κ°μ§ μμ€ν
νΈμΆμ μ’
λ₯λ λ€μκ³Ό κ°μ΅λλ€
1. νμΌ μμ€ν
κ΄λ ¨ μμ€ν
νΈμΆ
- open() νμΌμ μ΄ λ μ¬μ©λλ μμ€ν
νΈμΆ.
- close() νμΌμ λ«μ λ μ¬μ©λλ μμ€ν
νΈμΆ.
- read() νμΌμμ λ°μ΄ν°λ₯Ό μ½μ λ μ¬μ©λλ μμ€ν
νΈμΆ.
- write() νμΌμ λ°μ΄ν°λ₯Ό μΈ λ μ¬μ©λλ μμ€ν
νΈμΆ.
- create() μλ‘μ΄ νμΌμ μμ±ν λ μ¬μ©λλ μμ€ν
νΈμΆ.
- delete() νμΌμ μμ ν λ μ¬μ©λλ μμ€ν
νΈμΆ.
2. νλ‘μΈμ€ μ μ΄ κ΄λ ¨ μμ€ν
νΈμΆ
- fork() νμ¬ νλ‘μΈμ€λ₯Ό 볡μ νμ¬ μλ‘μ΄ νλ‘μΈμ€λ₯Ό μμ±ν λ μ¬μ©λλ μμ€ν
νΈμΆ.
- exec() μλ‘μ΄ νλ‘κ·Έλ¨μ μ€νν λ μ¬μ©λλ μμ€ν
νΈμΆ.
- exit() νμ¬ νλ‘μΈμ€λ₯Ό μ’
λ£ν λ μ¬μ©λλ μμ€ν
νΈμΆ.
- wait() μμ νλ‘μΈμ€κ° μ’
λ£λ λκΉμ§ λκΈ°ν λ μ¬μ©λλ μμ€ν
νΈμΆ.
3. λ©λͺ¨λ¦¬ κ΄λ¦¬ κ΄λ ¨ μμ€ν
νΈμΆ
- malloc() λμ μΌλ‘ λ©λͺ¨λ¦¬λ₯Ό ν λΉν λ μ¬μ©λλ μμ€ν
νΈμΆ.
- free() λμ μΌλ‘ ν λΉλ λ©λͺ¨λ¦¬λ₯Ό ν΄μ ν λ μ¬μ©λλ μμ€ν
νΈμΆ.
- brk() νλ‘μΈμ€μ λ©λͺ¨λ¦¬ μμμ μ‘°μ ν λ μ¬μ©λλ μμ€ν
νΈμΆ.
4. ν΅μ κ³Ό λ€νΈμνΉ κ΄λ ¨ μμ€ν
νΈμΆ
- socket() μμΌμ μμ±ν λ μ¬μ©λλ μμ€ν
νΈμΆ.
- connect() μμΌμ νΉμ μ£Όμμ μ°κ²°ν λ μ¬μ©λλ μμ€ν
νΈμΆ.
- send() λ°μ΄ν°λ₯Ό μμΌμ ν΅ν΄ λ³΄λΌ λ μ¬μ©λλ μμ€ν
νΈμΆ.
- recv() μμΌμ ν΅ν΄ λ°μ΄ν°λ₯Ό λ°μ λ μ¬μ©λλ μμ€ν
νΈμΆ.
5. μκ° κ΄λ ¨ μμ€ν
νΈμΆ
- time() νμ¬ μκ°μ κ°μ Έμ¬ λ μ¬μ©λλ μμ€ν
νΈμΆ.
μ΄λ¬ν μμ€ν
νΈμΆλ€μ μ΄μ체μ κ° μ 곡νλ μλΉμ€μ μ κ·ΌνκΈ° μν΄ μ¬μ©μ νλ‘κ·Έλ¨μ μν΄ νΈμΆλ©λλ€. μ¬μ©μ νλ‘κ·Έλ¨μ μ΄λ¬ν μμ€ν
νΈμΆμ μ¬μ©νμ¬ μ΄μ체μ μ κΈ°λ₯μ νμ©ν μ μμ΅λλ€. λ μμΈν μμ€ν
νΈμΆμ https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.mdμμ νμΈν μ μμ΅λλ€.
'μ΄μ체μ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νλ‘μΈμ€ κ³μΈ΅ ꡬ쑰 (0) | 2023.10.31 |
---|---|
λ°λͺ¬(Deamon) νλ‘μΈμ€λ? (0) | 2023.10.28 |
컀λ(Kernel)κ³Ό μΈν°νμ΄μ€(Interface) (0) | 2023.09.12 |
ν°λ Έμ΄λ§ ꡬ쑰λ? (0) | 2023.09.05 |
νλ‘μΈμ€ μ μ΄ λΈλ‘(PCB, Process Control Block) (0) | 2023.08.30 |
λκΈ