2021. 8. 17. 21:28γSystem μμ μ€/LINUX
μλ νμΈμ? μ£Όλνλμ λλ€.
μ€λμ Linux Kernelμ System Callμ λν΄ κ³΅λΆλ₯Ό μμ ν΄ λ³΄λλ‘ νκ² μ΅λλ€!
[Kernel] System Call
κ°λ μΌλ°μ μΌλ‘ μ΄μ체μ (컀λ)κ° νλμ¨μ΄/μμ€ν μ μ§μ λ λλ νΉκΆμ΄ μμ΄μΌ νλ λμλ€μ μνν λ‘ μμ²νλ μ»΄ν¨ν° νλμ¨μ΄μ μ¬μ©μ μ¬μ΄μ μΈν°νμ΄μ€ λλ ν¨μ νλ‘κ·Έλλ° μΈμ΄μμ μ§μνμ§ μλ κΈ°λ₯μ λνμ¬ μ΄μ체μ μ 루ν΄μ νΈμΆνμ¬ μ΄μ© μ»΄ν¨ν μμμ ν¨μ¨μ μΌλ‘ κ΄λ¦¬νκΈ° μν΄ νμ©νμ§ μμ μ¬μ©μμ μΉ¨λ²μ λ°©μ§ν΄ νλ‘κ·Έλ¨μ λ 립μ μΈ μνμ 보μ₯ μνν μ΄μ체μ μ μν μνμ μν΄μλ μμ€ν μννΈμ¨μ΄λ₯Ό μμ© μννΈμ¨μ΄λ‘λΆν° 보νΈν μ μλ λ©μ»€λμ¦μ΄ νμ
I. H/Wμ μ¬μ©μ μ¬μ΄μ μΈν°νμ΄μ€, μμ€ν νΈμΆ(System Call)μ κ°μ
κ°. UNIX OSμ μμ€ν νΈμΆ(System Call)μ μ μ
- μΌλ°μ μΌλ‘ μ΄μ체μ (컀λ)κ° νλμ¨μ΄/μμ€ν μ μ§μ λ λλ νΉκΆμ΄ μμ΄μΌ νλ λμλ€μ μνν λ‘ μμ²νλ μ»΄ν¨ν° νλμ¨μ΄μ μ¬μ©μ μ¬μ΄μ μΈν°νμ΄μ€ λλ ν¨μ
- νλ‘κ·Έλλ° μΈμ΄μμ μ§μνμ§ μλ κΈ°λ₯μ λνμ¬ μ΄μ체μ μ 루ν΄μ νΈμΆνμ¬ μ΄μ©
- μ»΄ν¨ν μμμ ν¨μ¨μ μΌλ‘ κ΄λ¦¬νκΈ° μν΄ νμ©νμ§ μμ μ¬μ©μμ μΉ¨λ²μ λ°©μ§ν΄ νλ‘κ·Έλ¨μ λ 립μ μΈ μνμ 보μ₯
- μνν μ΄μ체μ μ μν μνμ μν΄μλ μμ€ν μννΈμ¨μ΄λ₯Ό μμ© μννΈμ¨μ΄λ‘λΆν° 보νΈν μ μλ λ©μ»€λμ¦μ΄ νμ
λ. μμ€ν νΈμΆμ κΈ°λ³Έ κ°λ , νΉκΆλͺ¨λμ μ¬μ©μ λͺ¨λ
β
- μ¬μ©μ 곡κ°κ³Ό 컀λ 곡κ°μ κΆν λ 벨μ μ€μ ν¨μΌλ‘μ¨ κ΅¬λΆ
- μ¬μ©μ λͺ¨λμμ νΉκΆ λͺ¨λλ‘ κΆν λ 벨μ λ°κΎΈμ§ μμΌλ©΄ 컀λμ λ΄λΆ κΈ°λ₯μ μ¬μ©ν μ μμ
- μ΄ κ²½μ° λ³΄νΈ μ€λ₯λ₯Ό λ°μμμΌ μ»€λ μμμ λν μΉ¨λ²μ μ°¨λ¨
- λ¨μν 컀λ μμμΌλ‘ λ€μ΄κ°λ κ²μ΄ μλλΌ νΉκΆ λ λ²¨λ‘ λ³κ²½νλ κ²μ
II. μμ€ν νΈμΆμ ꡬ쑰 λ° μ’ λ₯
κ°. UNIX OSμ μμ€ν νΈμΆ ꡬ쑰
β
- μμ€ν νΈμΆμ μννΈμ¨μ΄μ μΈ μΈν°λ½νΈ μΈνΈλ©(SWI:S/W Interrupt)μ λ°μ
- 리λ μ€μ κ²½μ°? 0x80 μΈν°λ½νΈλ₯Ό λ°μ
λ. μμ€ν νΈμΆμ μ’ λ₯
κ΅¬λΆ | μ’ λ₯ |
νλ‘μΈμ€ κ΄λ¦¬ | fork(), execve(), getpid(), signal() λ± |
νμΌμμ€ν | open(), read(), write(), close() λ± |
λ©λͺ¨λ¦¬ κ΄λ¦¬ | brk() λ± |
λ€νΈμν¬ κ΄λ¦¬ | socket(), bind(), connect() λ± |
μμ€ν μ 보/μ μ΄ | time() λ± |
- νΉν λλ°μ΄μ€ λλΌμ΄λ² κ΄λ ¨ μμ€ν νΈμΆμ κ°μ νμΌ μμ€ν μ ν΅νλ―λ‘ νμΌμμ€ν κ³Ό κ΄λ ¨ μμ
- 컀λ(Kernel)μ μ¬μ©μ μ μν¨μλ₯Ό μΆκ°ν¨μΌλ‘μ¨ μ¬μ©μ μ μ μμ€ν νΈμΆ ν¨μλ₯Ό ꡬνν μ μμ
III. μμ€ν νΈμΆμ λμκ³Όμ λ° μμ
κ°. μμ€ν νΈμΆμ λμκ³Όμ
- μ λμ€λ μ¬μ©μ νλ‘κ·Έλ¨μ΄ 컀λμ λν μλΉμ€λ₯Ό μμ²ν κ²½μ° μ΄μ? λν μλΉμ€λ₯Ό ν μ μλ μ μ μλ μ νλ μ’ λ₯μ ν¨μμΈ μμ€ν νΈμΆμ μ 곡
- μ¬μ©μκ° μ΄μ체μ μ κΈ°λ₯ νΉμ λͺ¨λμ νμ©νλ €λ©΄ λ°λμ μμ€ν νΈμΆμ μ΄μ©
- μ¬μ©μ λͺ¨λμμ μμ€ν νΈμΆμ μννλ©΄ μμ€ν λͺ¨λλ‘ μ νλλ©°, 컀λμμ μμ€ν νΈμΆμ μ’ λ£νλ©΄ μ¬μ©μ λͺ¨λλ‘ λ€μ λμμ΄
- μ¬μ©μ νλ‘μΈμ€κ° νμ€ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©ν΄ 컀λμ μ κ·Όνλ κ²λ λ΄λΆμ μΌλ‘ μμ€ν νΈμΆμ μ¬μ©
λ. μμ€ν νΈμΆμ λμκ³Όμ μμ ? fork() κ²½μ°
β
λ¨κ³ | μ€λͺ |
1λ¨κ³ | fork() μμ€ν νΈμΆ ν¨μλ₯Ό μ¬μ©νλ €λ©΄ fork() ν¨μ μ λ³΄κ° μλ/include/unistd.h ν€λνμΌμ include. λ§μ»€λ‘ λΌμ΄λΈλ¬λ¦¬μμ λμνλ ν¨μμ μ°κ²° |
2λ¨κ³ | λΌμ΄λΈλ¬λ¦¬ λ΄λΆμ fork() ν¨μ: “swi 900002” μλ―Έ μννΈμ¨μ΄ μΈν°λ½νΈλ₯Ό ν΅ν΄ μ¬μ©μ λͺ¨λμμ 컀λ λͺ¨λλ‘ μ νλμ΄ μ»€λ μμμ μ κ·Ό |
3λ¨κ³ | νΈμΆ λ²νΈ 2μ ν΄λΉνλ μμ€ν νΈμΆ ν¨μ sys_fork() μ€ν |
4λ¨κ³ | κ°μ νμΌμμ€ν μ ν΅ν΄ 컀λ μμμΈ νμΌ, λλ ν 리, λλ°μ΄μ€ λ±μ νλμ νμΌμ²λΌ μ κ·Ό |
IV. μμ€ν νΈμΆ ꡬν λ° μ μ°¨
κ°. μμ€ν νΈμΆ ꡬνμ κ°μ
- μ λμ€ OSμμ νλν? Linux OSμ κ²½μ° μμ€ν νΈμΆ ν¨μλ₯Ό 컀λμ μ¬λΉλ ν¨μΌλ‘μ¨ κ΅¬νν μ μμ
- μμ€ν νΈμΆ ν¨μλ₯Ό ꡬννλ €λ©΄ 컀λ μμ€μ νλ‘κ·Έλλ° μμ μ ν΄μΌ νκ³ , ꡬνλ μμ€ν νΈμΆ ν¨μλ₯Ό ν μ€νΈνλ €λ©΄ μ¬μ©μ μμ€μ μμ©νλ‘κ·Έλ¨μ μμ±ν΄μΌ ν¨
- μμ€ν νΈμΆμ 컀λμ ꡬννλ €λ©΄ μμ€ν νΈμΆ ν¨μλ₯Ό μ μν΄μΌ ν λΏλ§ μλλΌ μμ€ν νΈμΆ λ²νΈλ₯Ό ν λΉνκ³ μμ€ν νΈμΆ ν¨μλ₯Ό λ±λ‘ν΄μΌ ν¨
λ. μμ€ν νΈμΆ ꡬνμ μ μ°¨
β
- UNIX OSμ κ²½μ°λ Open SourceμΌ κ²½μ°κ° λλ¬Όμ§λ§ Linuxμ κ²½μ° μμ κ°μ μ μ°¨λ‘ μ¬μ©μ μ μ μμ€ν νΈμΆ ν¨μλ₯Ό ꡬνν¨
- μμ€ν νΈμΆμ 컀λμμ μλΉμ€λ₯Ό μμ²νλ ν¨κ³Όμ μΈ λ°©λ²μ΄μ§λ§, νμ€νλ μΈν°νμ΄μ€λΌλ μ κ³Ό μλ‘μ΄ μμ€ν νΈμΆμ 컀λμ μΆκ°νκΈ° μ΄λ ΅λ€λ λ¬Έμ μ μμ
< System Call μμ >
β
β
β
βμ£Όλνλμ κΈμ΄ λ§μμ λμ
¨λμ? ꡬλ
κ³Ό 곡κ°! κ·Έλ¦¬κ³ , λκΈμ μ£Όλνλμκ² λ§μ νμ΄ λ©λλ€
'System μμ μ€ > LINUX' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Linux] RHEL 7 CD-ROM Mount & Unmount (0) | 2021.08.30 |
---|---|
[RHCSA] RHEL 7 ip μ€μ λ²β (0) | 2021.08.17 |
[Linux] λͺ λ Ήμ΄ μ¬μ (0) | 2021.08.17 |
[Ubuntu 20.04] Docker μ€μΉ λ° Portainer κ΅¬μΆ (0) | 2021.07.14 |
[Ubuntu 20.04] JDK 14μ IDE μ€μΉ (0) | 2021.02.21 |