λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
  • Dev Blog
CS/운영체제

[운영체제] 컀널과 μΈν„°νŽ˜μ΄μŠ€

by μœ μ§„μ˜ 2023. 4. 10.
패슀트캠퍼슀 운영체제 κ°•μ˜μ™€ μ‰½κ²Œ λ°°μš°λŠ” 운영체제 κ΅μž¬μ— λŒ€ν•œ TILμž…λ‹ˆλ‹€.

 

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

μ‹œμŠ€ν…œ ν˜ΈμΆœμ€ 컀널이 μžμ‹ μ„ λ³΄ν˜Έν•˜κΈ° μœ„ν•΄ λ§Œλ“  μΈν„°νŽ˜μ΄μŠ€λ‹€. 컀널은 컴퓨터 μžμ›μ„ λ³΄ν˜Έν•˜κΈ° μœ„ν•΄ μ‚¬μš©μžλ‚˜ μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μžμ›μ— 직접 μ ‘κ·Όν•˜λŠ” 것을 μ°¨λ‹¨ν•œλ‹€. λ”°λΌμ„œ μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μžμ›μ„ μ΄μš©ν•˜λ €λ©΄ μ‹œμŠ€ν…œ ν˜ΈμΆœμ΄λΌλŠ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ΄μš©ν•˜μ—¬ μ ‘κ·Όν•΄μ•Ό ν•œλ‹€. 보톡 μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ 직접 μ‚¬μš©ν•˜κΈ°λ³΄λ‹€λŠ”, ν•΄λ‹Ή μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ μ‚¬μš©ν•΄μ„œ λ§Œλ“  각 언어별 라이브러리(API)λ₯Ό μ‚¬μš©ν•œλ‹€.
 

μœ„ 그림은 Cμ–Έμ–΄λ‘œ λ§Œλ“  μ‘μš© ν”„λ‘œκ·Έλž¨μ—μ„œ μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ μ‚¬μš©ν•˜λŠ” μ˜ˆμ œμ΄λ‹€. μ΄λ•Œ, sys_open()μ΄λΌλŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ 직접 μ‚¬μš©ν•˜λŠ” 것이 μ•„λ‹Œ Cμ–Έμ–΄ λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ μ œκ³΅ν•΄ μ£ΌλŠ” open()을 μ‚¬μš©ν•œλ‹€.
 

μ»€λ„μ˜ μ—­ν• κ³Ό μ’…λ₯˜

 
μ»€λ„μ˜ μ—­ν• 
 

  • ν”„λ‘œμ„ΈμŠ€ 관리: ν”„λ‘œμ„ΈμŠ€μ— CPUλ₯Ό λ°°λΆ„ν•˜κ³  μž‘μ—…μ— ν•„μš”ν•œ 제반 ν™˜κ²½ 제곡
  • λ©”λͺ¨λ¦¬ 관리: ν”„λ‘œμ„ΈμŠ€μ— μž‘μ—… 곡간을 λ°°μΉ˜ν•˜κ³  μ‹€μ œ λ©”λͺ¨λ¦¬λ³΄λ‹€ 큰 가상곡간을 제곡
  • 파일 μ‹œμŠ€ν…œ 관리: 데이터λ₯Ό μ €μž₯ν•˜κ³  μ ‘κ·Όν•  수 μžˆλŠ” μΈν„°νŽ˜μ΄μŠ€ 제곡
  • μž…μΆœλ ₯ 관리: ν•„μš”ν•œ μž…μΆœλ ₯ μ„œλΉ„μŠ€ 제곡
  • ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신 관리: 곡동 μž‘μ—…μ„ μœ„ν•œ 각 ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신 ν™˜κ²½ 제곡

 
μ»€λ„μ˜ ꡬ쑰
 

λ‹¨μΌν˜• ꡬ쑰 컀널: 초창기 운영체제의 ꡬ쑰둜, μ»€λ„μ˜ 핡심 κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λŠ” λͺ¨λ“ˆμ΄ ꡬ뢄 없이 ν•˜λ‚˜λ‘œ ꡬ성
 

  • λͺ¨λ“ˆ κ°„μ˜ 톡신 λΉ„μš©μ΄ 쀄어듀어 효율적인 운영이 κ°€λŠ₯ν•˜μ§€λ§Œ 높은 μƒν˜Έ μ˜μ‘΄μ„±κ³Ό κ΄€λ ¨λœ λ¬Έμ œλ“€μ΄ 많이 λ°œμƒ

κ³„μΈ΅ν˜• ꡬ쑰 컀널: λΉ„μŠ·ν•œ κΈ°λŠ₯을 가진 λͺ¨λ“ˆμ„ λ¬Άμ–΄μ„œ ν•˜λ‚˜μ˜ κ³„μΈ΅μœΌλ‘œ λ§Œλ“€κ³  계측 κ°„μ˜ 톡신을 톡해 운영체제 κ΅¬ν˜„
 

  • 였λ₯˜κ°€ λ°œμƒν–ˆμ„ λ•Œ 전체 컀널을 κ³ μΉ˜λŠ” 것이 μ•„λ‹ˆλΌ ν•΄λ‹Ή κ³„μΈ΅λ§Œ λ”°λ‘œ μˆ˜μ •ν•  수 μžˆλ‹€.
  • μœˆλ„μš° OSλ₯Ό λΉ„λ‘―ν•΄ μ˜€λŠ˜λ‚ μ˜ 운영체제 λŒ€λΆ€λΆ„μ΄ 이 ꡬ쑰둜 λ˜μ–΄ μžˆλ‹€.

마이크둜 ꡬ쑰 컀널: ν”„λ‘œμ„ΈμŠ€ κ΄€λ¦¬, λ©”λͺ¨λ¦¬ κ΄€λ¦¬, ν”„λ‘œμ„ΈμŠ€ κ°„ ν†΅μ‹  κ΄€λ¦¬ λ“± κΈ°λ³Έμ μΈ λΆ€λΆ„을 μ œμ™Έν•˜κ³  λ‚˜λ¨Έμ§€λŠ” μ‚¬μš©μž μ˜μ—­μ— κ΅¬ν˜„
 

  • κ³„μΈ΅ν˜• ꡬ쑰 μ»€λ„μ˜ 경우 λ‹€μ–‘ν•œ ν•˜λ“œμ›¨μ–΄μ™€ μ‚¬μš©μžμ˜ μš”κ΅¬λ₯Ό μˆ˜μš©ν•˜κΈ° μœ„ν•΄ 더 λ§Žμ€ 계측과 κΈ°λŠ₯을 μΆ”κ°€ν•œ ν˜•νƒœκ°€ λ˜μ—ˆλ‹€. 이둜 인해 μ»€λ„μ˜ 크기가 계속 컀지고 ν•„μš”ν•œ ν•˜λ“œμ›¨μ–΄μ˜ μš©λŸ‰λ„ λŠ˜μ–΄λ‚¬μœΌλ©°, 컀널 μ†ŒμŠ€κ°€ λ°©λŒ€ν•΄μ§μ— 따라 였λ₯˜λ₯Ό μž‘κΈ°λ„ μ–΄λ €μ›Œμ‘Œλ‹€.
  • μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ κ°€μž₯ 기본적인 κΈ°λŠ₯λ“€λ§Œ 컀널 μ˜μ—­μ— κ΅¬ν˜„ν•˜κ³  λ‚˜λ¨Έμ§€λŠ” μ‚¬μš©μž μ˜μ—­μ— κ΅¬ν˜„ν–ˆλ‹€.
  • μ• ν”Œμ˜ PC 운영체제인 OS X와 λͺ¨λ°”일 운영체제인 iOSκ°€ ν•΄λ‹Ή 컀널 ꡬ쑰λ₯Ό 가진닀.

 

πŸ’‘ μ‚¬μš©μž μ˜μ—­? μ‚¬μš©μž λͺ¨λ“œ? 컀널 μ˜μ—­? 컀널 λͺ¨λ“œ?

 

컀널 μ˜μ—­κ³Ό μ‚¬μš©μž μ˜μ—­
 

  • 컀널 μ˜μ—­μ΄λž€ 컀널이 μž‘μ—…ν•˜λŠ” μ˜μ—­μœΌλ‘œ CPU μž‘μ—… μŠ€μΌ€μ€„μ΄λ‚˜ ν•˜λ“œμ›¨μ–΄λ₯Ό μ œμ–΄ν•˜λŠ” λ””λ°”μ΄μŠ€ λ“œλΌμ΄λ²„μ™€ λ©”λͺ¨λ¦¬λ₯Ό κ΄€λ¦¬ν•˜λŠ” κΈ°λŠ₯듀을 μˆ˜ν–‰ν•œλ‹€.
  • μ‚¬μš©μž μ˜μ—­μ€ 일반 ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λŠ” μ˜μ—­μ΄λ‹€. 컀널이 μž‘μ—…ν•΄μ•Όν•˜λŠ” 일을 μš”μ²­ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

CPU Protection Rings
 

CPU도 κΆŒν•œ λͺ¨λ“œλΌλŠ” 것을 가지고 μžˆλ‹€.
 

  • μ‚¬μš©μž λͺ¨λ“œ: μ‚¬μš©μž μ˜μ—­μ˜ μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μ‚¬μš©ν•˜λŠ” λͺ¨λ“œμ΄λ‹€.
  • 컀널 λͺ¨λ“œ: 컀널 μ˜μ—­μ˜ OSκ°€ μ‚¬μš©ν•˜λŠ” λͺ¨λ“œμ΄λ‹€. 특ꢌ λͺ…λ Ήμ–΄ μ‹€ν–‰κ³Ό μ›ν•˜λŠ” μž‘μ—… μˆ˜ν–‰μ„ μœ„ν•œ μžμ› 접근을 κ°€λŠ₯μΌ€ ν•œλ‹€.

 
μœ„ κ°œλ…λ“€μ˜ κ΄€μ μœΌλ‘œ λ³Έ μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λŠ” 과정은 λ‹€μŒκ³Ό κ°™λ‹€.

1. μ‚¬μš©μž λͺ¨λ“œμ—μ„œ μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λœλ‹€.
2. 운영체제 κΈ°λŠ₯이 ν•„μš”ν•œ APIλ₯Ό ν˜ΈμΆœν•œλ‹€.
3. ν•΄λ‹Ή APIμ•ˆμ— μ‘΄μž¬ν•˜λŠ” μ‹œμŠ€ν…œ 콜 ν•¨μˆ˜κ°€ ν˜ΈμΆœλ˜μ–΄μ„œ 컀널 λͺ¨λ“œλ‘œ λ³€κ²½λœλ‹€.
4. 컀널 μ˜μ—­μ˜ OS λ‚΄λΆ€μ—μ„œ ν•΄λ‹Ή λͺ…령이 μ‹€ν–‰λœλ‹€.
5. 싀행이 μ™„λ£Œλ˜μ—ˆμœΌλ©΄ λ‹€μ‹œ μ‚¬μš©μž λͺ¨λ“œλ‘œ μ „ν™˜λ˜κ³  API 호좜 μ΄ν›„μ˜ μž‘μ—…μ„ κ³„μ†ν•΄μ„œ μ‹€ν–‰ν•œλ‹€.

λŒ“κΈ€