λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
운영체제

컀널(Kernel)κ³Ό μΈν„°νŽ˜μ΄μŠ€(Interface)

by μ„œμ•„λž‘πŸ˜ 2023. 9. 12.

 

 

컀널(Kernel)

운영체제의 컀널은 운영체제의 핡심 λΆ€λΆ„μœΌλ‘œ, 컴퓨터 μ‹œμŠ€ν…œμ˜ 핡심 κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” 핡심 μ†Œν”„νŠΈμ›¨μ–΄ ꡬ성 μš”μ†Œμž…λ‹ˆλ‹€. 컀널은 μ‹œμŠ€ν…œμ˜ λͺ¨λ“  것을 μ™„μ „νžˆ μ œμ–΄ν•˜λŠ” λΆ€λΆ„μœΌλ‘œ μžμ›κ³Ό ν”„λ‘œμ„ΈμŠ€, μž…μΆœλ ₯ 등을 κ΄€λ¦¬ν•©λ‹ˆλ‹€.

 


1. μ—­ν• κ³Ό κΈ°λŠ₯

  • μžμ› 관리: 컀널은 μ‹œμŠ€ν…œ μžμ›μ„ κ΄€λ¦¬ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μžμ›μ—λŠ” CPU μ‹œκ°„, λ©”λͺ¨λ¦¬ 곡간, μž…μΆœλ ₯ μž₯치 등이 ν¬ν•¨λ©λ‹ˆλ‹€. 컀널은 μ΄λŸ¬ν•œ μžμ›μ„ ν”„λ‘œμ„ΈμŠ€ 간에 κ³΅μ •ν•˜κ²Œ ν• λ‹Ήν•˜κ³  κ΄€λ¦¬ν•©λ‹ˆλ‹€.
  • ν•˜λ“œμ›¨μ–΄ 좔상화: 컀널은 ν•˜λ“œμ›¨μ–΄μ™€ μ†Œν”„νŠΈμ›¨μ–΄ κ°„μ˜ μΈν„°νŽ˜μ΄μŠ€ 역할을 ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 μ‘μš© ν”„λ‘œκ·Έλž¨μ€ ν•˜λ“œμ›¨μ–΄λ₯Ό 직접 닀루지 μ•Šκ³ λ„ 컀널을 톡해 ν•˜λ“œμ›¨μ–΄ κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • ν”„λ‘œμ„ΈμŠ€ 관리: 컀널은 ν”„λ‘œμ„ΈμŠ€λ₯Ό 생성, μ’…λ£Œ 및 μŠ€μΌ€μ€„λ§ν•˜λ©°, 닀쀑 ν”„λ‘œμ„ΈμŠ€ ν™˜κ²½μ—μ„œ 각 ν”„λ‘œμ„ΈμŠ€ κ°„μ˜ 격리λ₯Ό μœ μ§€ν•©λ‹ˆλ‹€.
  • μž…μΆœλ ₯ 관리: μž…μΆœλ ₯ 연산을 μ²˜λ¦¬ν•˜κ³ , μž₯치 λ“œλΌμ΄λ²„λ₯Ό 톡해 ν•˜λ“œμ›¨μ–΄μ™€ μƒν˜Έ μž‘μš©ν•©λ‹ˆλ‹€.
  • μ‹œμŠ€ν…œ 콜 지원: 컀널은 μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μ‹œμŠ€ν…œ μ½œμ„ μ‚¬μš©ν•˜μ—¬ 운영체제 μ„œλΉ„μŠ€μ— μ•‘μ„ΈμŠ€ν•  수 μžˆλ„λ‘ μ§€μ›ν•©λ‹ˆλ‹€.
  • λ³΄μ•ˆ: 컴퓨터 ν•˜λ“œμ›¨μ–΄μ™€ ν”„λ‘œμ„ΈμŠ€μ˜ λ³΄μ•ˆμ„ μ±…μž„μ§‘λ‹ˆλ‹€. μ•…μ˜μ μΈ μ½”λ“œ λ˜λŠ” μž˜λͺ»λœ λ™μž‘μœΌλ‘œλΆ€ν„° μ‹œμŠ€ν…œμ„ λ³΄ν˜Έν•˜λŠ” μ—­ν• μ„ ν•©λ‹ˆλ‹€.

 


2. μ»€λ„μ˜ μ’…λ₯˜

  • 단일 λͺ¨λ…Έλ¦¬λ”• 컀널 (Monolithic Kernel): λͺ¨λ“  컀널 κΈ°λŠ₯이 ν•˜λ‚˜μ˜ 단일 λͺ¨λ“ˆλ‘œ κ΅¬ν˜„λ˜λŠ” μ»€λ„μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, Linux 컀널은 λͺ¨λ…Έλ¦¬λ”• μ»€λ„μ˜ ν•œ μ˜ˆμž…λ‹ˆλ‹€.
  • λ§ˆμ΄ν¬λ‘œμ»€λ„ (Microkernel): ν•΅μ‹¬ κΈ°λŠ₯λ§Œμ„ ν¬ν•¨ν•˜κ³  λ‹€λ₯Έ μ„œλΉ„μŠ€λŠ” μ‚¬μš©μž 곡간 ν”„λ‘œμ„ΈμŠ€λ‘œ λΆ„λ¦¬λœ ꡬ쑰λ₯Ό 가진 μ»€λ„μž…λ‹ˆλ‹€. 예둜, MINIX와 QNX, OS X와 iOSκ°€ μžˆμŠ΅λ‹ˆλ‹€.

 


3. 컀널 개발

λŒ€λΆ€λΆ„μ˜ 운영체제 컀널은 Cλ‚˜ μ–΄μ…ˆλΈ”λ¦¬ μ–Έμ–΄λ‘œ μž‘μ„±λ˜λ©°, 컴퓨터 μ•„ν‚€ν…μ²˜μ— 따라 λ‹€μ–‘ν•œ ν”Œλž«νΌμ— μ΄μ‹λ©λ‹ˆλ‹€. 컀널 κ°œλ°œμ€ κ³ λ„λ‘œ 전문적이며, μ†Œν”„νŠΈμ›¨μ–΄ μ—”μ§€λ‹ˆμ–΄λ§, 운영체제 이둠, ν•˜λ“œμ›¨μ–΄ 지식이 ν•„μš”ν•©λ‹ˆλ‹€.

 

 

4. μ‹œμŠ€ν…œ 호좜(System Call)

μ‹œμŠ€ν…œ ν˜ΈμΆœμ€ 컀널을 λ³΄ν˜Έν•˜κΈ° μœ„ν•΄ λ§Œλ“  μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€. μ‚¬μš©μž ν˜Ήμ€ ν”„λ‘œκ·Έλž¨μœΌλ‘œλΆ€ν„° 컴퓨터 핡심 μžμ›μ„ λ³΄ν˜Έν•˜κΈ° μœ„ν•΄ μžμ›μ— 직접 μ ‘κ·Όν•˜λŠ” 것을 μ°¨λ‹¨ν•©λ‹ˆλ‹€. 컀널이 μ œκ³΅ν•˜λŠ” μ‹œμŠ€ν…œ μžμ›μ˜ μ‚¬μš©κ³Ό μ—°κ΄€λœ ν•¨μˆ˜μ΄λ©°, ν”„λ‘œκ·Έλž¨μ΄ ν•˜λ“œμ›¨μ–΄ μžμ›μ— μ ‘κ·Όν•˜κ±°λ‚˜ μš΄μ˜μ²΄μ œκ°€ μ œκ³΅ν•˜λŠ” μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•  λ•Œ μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

 

5. λ“œλΌμ΄λ²„(Driver)

ν”„λ‘œκ·Έλž¨κ³Ό μ»€λ„μ˜ μΈν„°νŽ˜μ΄μŠ€λŠ” μ‹œμŠ€ν…œ 호좜이며, 컀널과 ν•˜λ“œμ›¨μ–΄μ˜ μΈν„°νŽ˜μ΄μŠ€λŠ” λ“œλΌμ΄λ²„μž…λ‹ˆλ‹€. ν•˜λ“œμ›¨μ–΄ μ’…λ₯˜μ— λ”°λ₯Έ νŠΉμ„±μ„ λ°˜μ˜ν•œ μ†Œν”„νŠΈμ›¨μ–΄κ°€ λ“œλΌμ΄λ²„μ΄λ©° μ΄λŠ” μ œμž‘μžμ—κ²Œ λ°›μ•„μ„œ 컀널이 싀행될 λ•Œ ν•œκΊΌλ²ˆμ— 싀행될 수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

 

컀널은 μ»΄ν“¨ν„° μ‹œμŠ€ν…œμ˜ ν•΅μ‹¬ λΆ€λΆ„이며, μ‹œμŠ€ν…œμ˜ μ•ˆμ •μ„±, μ„±λŠ₯ λ° λ³΄μ•ˆμ— μ€‘μš”ν•œ μ˜ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€. λ”°λΌμ„œ μ»€λ„μ€ μš΄μ˜μ²΄μ œμ˜ ν•΅μ‹¬μ μΈ κ΅¬μ„± μš”μ†Œ μ€‘ ν•˜λ‚˜λ‘œμ¨ ν•΅μ‹¬μ μΈ μ—­ν• μ„ ν•©λ‹ˆλ‹€.

 

 

μΈν„°νŽ˜μ΄μŠ€(Interface)

운영체제 μΈν„°νŽ˜μ΄μŠ€(Operating System Interface)λŠ” 컴퓨터와 μ‚¬μš©μž λ˜λŠ” μ‘μš© ν”„λ‘œκ·Έλž¨ κ°„μ˜ μƒν˜Έ μž‘μš©μ„ κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄ 계측 λ˜λŠ” 컴퓨터 μ‹œμŠ€ν…œμ˜ μΌλΆ€μž…λ‹ˆλ‹€. μš΄μ˜μ²΄μ œλŠ” ν•˜λ“œμ›¨μ–΄ μžμ›μ„ κ΄€λ¦¬ν•˜κ³  μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ ν•˜λ“œμ›¨μ–΄μ™€ μƒν˜Έ μž‘μš©ν•  수 μžˆλŠ” ν™˜κ²½μ„ μ œκ³΅ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μƒν˜Έ μž‘μš©μ„ ν•  수 μžˆλ„λ‘ μš΄μ˜μ²΄μ œλŠ” λ‹€μ–‘ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.



1. Command-Line Interface (CLI)
   λͺ…λ Ή 쀄 μΈν„°νŽ˜μ΄μŠ€λŠ” ν…μŠ€νŠΈ 기반으둜 μž‘λ™ν•˜λ©° μ‚¬μš©μžκ°€ λͺ…λ Ήμ–΄λ₯Ό μž…λ ₯ν•˜μ—¬ 컴퓨터와 μƒν˜Έ μž‘μš©ν•  수 있게 ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, Windows의 Command Promptλ‚˜ Linux의 Terminal이 이에 ν•΄λ‹Ήν•©λ‹ˆλ‹€. CLIλŠ” κ°•λ ₯ν•˜κ³  μžμ„Έν•œ μ œμ–΄λ₯Ό μ œκ³΅ν•˜μ§€λ§Œ μ‚¬μš©μž μΉœν™”μ μ΄μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

2. Graphical User Interface (GUI)
   κ·Έλž˜ν”½ μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λŠ” κ·Έλž˜ν”½ μš”μ†Œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžμ™€ μƒν˜Έ μž‘μš©ν•˜λŠ” 방법을 μ œκ³΅ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μš”μ†Œμ—λŠ” μ•„μ΄μ½˜, μ°½, λ²„νŠΌ 및 메뉴 등이 ν¬ν•¨λ©λ‹ˆλ‹€. Windows의 Windows Explorer, macOS의 Aqua, 그리고 λ‹€μ–‘ν•œ λ¦¬λˆ…μŠ€ λ°μŠ€ν¬ν†± ν™˜κ²½(예: GNOME, KDE) 등이 GUIλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. GUIλŠ” 일반 μ‚¬μš©μžμ—κ²Œ 더 μ§κ΄€μ μ΄μ§€λ§Œ, 일뢀 κΈ°λŠ₯은 CLI보닀 μ•‘μ„ΈμŠ€ν•˜κΈ° μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€.

3. Web-Based Interface
   μ›Ή 기반 μΈν„°νŽ˜μ΄μŠ€λŠ” μ›Ή λΈŒλΌμš°μ €λ₯Ό μ‚¬μš©ν•˜μ—¬ 컴퓨터 λ˜λŠ” 원격 μ„œλ²„μ™€ μƒν˜Έ μž‘μš©ν•  수 있게 ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μΈν„°νŽ˜μ΄μŠ€λŠ” μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜, ν΄λΌμš°λ“œ μ„œλΉ„μŠ€ 관리 λŒ€μ‹œλ³΄λ“œ λ“±μ—μ„œ 주둜 μ‚¬μš©λ©λ‹ˆλ‹€.

4. Application Programming Interface (API)
   APIλŠ” μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μš΄μ˜μ²΄μ œμ™€ μƒν˜Έ μž‘μš©ν•˜λŠ” 데 μ‚¬μš©ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€. 이λ₯Ό 톡해 μ‘μš© ν”„λ‘œκ·Έλž¨μ€ 파일 μ‹œμŠ€ν…œ, λ„€νŠΈμ›Œν¬, ν•˜λ“œμ›¨μ–΄ λ“±κ³Ό 같은 λ¦¬μ†ŒμŠ€μ— μ•‘μ„ΈμŠ€ν•˜κ±°λ‚˜ λ‹€λ₯Έ μ‘μš© ν”„λ‘œκ·Έλž¨κ³Ό 톡신할 수 μžˆμŠ΅λ‹ˆλ‹€.

5. User Interface (UI)
   μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λŠ” μ‚¬μš©μžκ°€ μ‘μš© ν”„λ‘œκ·Έλž¨κ³Ό μƒν˜Έ μž‘μš©ν•˜λŠ” 방법을 μ •μ˜ν•˜λŠ” λ””μžμΈκ³Ό λ ˆμ΄μ•„μ›ƒ μš”μ†Œλ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€. μ΄μ—λŠ” μ‘μš© ν”„λ‘œκ·Έλž¨μ˜ μ°½, λ²„νŠΌ, 메뉴, 폼 등이 ν¬ν•¨λ©λ‹ˆλ‹€.


μš΄μ˜μ²΄μ œλŠ” μ΄λŸ¬ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν†΅ν•΄ μ‚¬μš©μž λ° μ‘μš© ν”„λ‘œκ·Έλž¨μ˜ μš”ꡬ μ‚¬ν•­μ„ μΆ©μ‘±ν•˜λ©° ν•˜λ“œμ›¨μ–΄ μžμ›μ„ νš¨μœ¨μ μœΌλ‘œ κ΄€λ¦¬ν•©λ‹ˆλ‹€. μ΄λ‘œμ¨ μ‚¬μš©μžλŠ” μ»΄ν“¨ν„°λ₯Ό νš¨κ³Όμ μœΌλ‘œ μ‚¬μš©ν•˜κ³  μ‘μš© ν”„λ‘œκ·Έλž¨μ€ μš΄μ˜μ²΄μ œμ˜ λ„움을 λ°›μ•„ μžμ›μ„ κ΄€λ¦¬ν•˜κ³  μž‘동할 μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

 

 

λŒ“κΈ€