🀷🏼‍♀️ Etc.../- linux, aws, docker, k8s

[Linux] λ¦¬λˆ…μŠ€ 운영체제의 컀널 (Linux Kernel)κ³Ό λ¦¬λˆ…μŠ€μ˜ 파일 μ‹œμŠ€ν…œ

Wonit 2020. 9. 24. 00:33

이번 글에 μ£Όμ œλŠ” λ¦¬λˆ…μŠ€μ˜ 운영체제적 νŠΉμ§•κ³Ό 컀널에 λŒ€ν•΄ μ„€λͺ…ν•˜λ €κ³  ν•œλ‹€.

 

사싀 컀널이라고 ν•œλ‹€λ©΄ 운영체제의 핡심이 λ˜λŠ” ν”„λ‘œκ·Έλž¨μ΄λ‹€.

 

μ»€λ„μ—λŠ” 3κ°€μ§€μ˜ νŠΉμ„±μ΄ μžˆλŠ”λ°,

  1. λ³΄μ•ˆ
  2. μžμ› 관리
  3. 좔상화

μ΄λŸ¬ν•œ νŠΉμ„±λ“€μ„ λͺ¨μ•„놓고 정리해놓은 것을 λœ»ν•œλ‹€.

 

ν•˜μ§€λ§Œ 이런 컀널에 λŒ€ν•΄μ„œ 이야기 ν•˜λ €λ©΄ κ·Έ λ‚΄μš©μ˜ μˆ˜μ€€μ€ κ°€νžˆ λ²”μ ‘ν•  수 μžˆλŠ” λΆ„λŸ‰μ΄λ‹€.


그리고 ν•΄λ‹Ή 파트의 주제인 DevOps에 κ΄€ν•œ Linuxμ—λŠ” λ§žμ§€ μ•ŠμœΌλ―€λ‘œ 컀널과 μš΄μ˜μ²΄μ œμ— κ΄€λ ¨λœ μΉ΄ν…Œκ³ λ¦¬μ—μ„œ ν™•μΈν•˜κΈΈ λ°”λž€λ‹€.


자 그럼 λ¦¬λˆ…μŠ€λ₯Ό μ‚¬μš©ν•˜κΈ° 전에 κ°„λ‹¨ν•˜κ²Œ λ¦¬λˆ…μŠ€ μš΄μ˜μ²΄μ œμ™€ λ‹€μ–‘ν•œ 것듀에 λŒ€ν•΄μ„œ μ•Œκ³  λ„˜μ–΄κ°€λ³΄μž.

 

λ¬Όλ‘  ν•΄λ‹Ή λ‚΄μš©μ„ κ±΄λ„ˆ 뛰어도 λ˜μ§€λ§Œ μ–΄λ– ν•œ λ°©μ‹μœΌλ‘œ λ™μž‘ν•˜κ³  μ–΄λ– ν•œ 방식이 μ‚¬μš©λ˜λŠ”μ§€λ₯Ό μ•Œκ²Œ λœλ‹€λ©΄ 이λ₯Ό λͺ¨λ₯΄λŠ” μ‚¬λžŒκ³Ό λΉ„κ΅ν•˜λ©΄ 좔후에 문제λ₯Ό λ°œκ²¬ν–ˆμ„ λ•Œ ν•΄κ²°ν•  수 μžˆλŠ” μŠ€νŽ™νŠΈλŸΌμ΄ 훨씬 λ†’μ•„μ§€κ²Œ λœλ‹€.

μš΄μ˜μ²΄μ œμ— λŒ€ν•œ 기본적 κ°œλ…

λ¦¬λˆ…μŠ€ 운영체제λ₯Ό μ΄ν•΄ν•˜κΈ° 전에 μš΄μ˜μ²΄μ œμ— λŒ€ν•΄μ„œ 잠깐 μ•Œμ•„λ³΄μž.

μš΄μ˜μ²΄μ œλŠ” ν•˜λ“œμ›¨μ–΄ μžμ›λ“€μ„ κ΄€λ¦¬ν•˜κ³  ν”„λ‘œκ·Έλž¨μ„ μ§€μ›ν•΄μ£ΌλŠ” 것이닀.

이런 운영체제λ₯Ό κ΅¬μ„±ν•˜λŠ” μš”μ†Œ 쀑 κ°€μž₯ μ€‘μš”ν•œ 것은 컀널인데 컀널에 λŒ€ν•΄ μ•Œμ•„λ³΄μž.

컀널(Kernel)

컀널은 본질적으둜 ν”„λ‘œκ·Έλž¨μ΄λ‹€.


μš°λ¦¬κ°€ 컴퓨터 곡학을 배우게 되면 κ°€μž₯ 처음 λ§Œμ§€κ²Œ λ˜λŠ” C언어에 μžˆλŠ” main() ν•¨μˆ˜κ°€ λ™μž‘ν•˜λŠ” λ°”λ‘œ κ·Έ ν”„λ‘œκ·Έλž¨μ΄λ‹€.

 

ν•˜μ§€λ§Œ λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨λ“€κ³Όμ˜ νŠΉμ§•μ„ 찾으라고 ν•œλ‹€λ©΄ λ°”λ‘œ Memory Resident이닀.


μ˜ν™” λ ˆμ§€λ˜νŠΈ 이블에 λ‚˜μ˜€λŠ” κ·Έ λ ˆμ§€λ˜νŠΈμ˜ 뜻인데, λ ˆμ§€λ˜νŠΈ μ΄λΈ”μ˜ 주인곡이 μžˆλŠ” 배경이 마치 μ§€μ˜₯κ°™λ‹€ ν•˜μ—¬ μ§€μ˜₯의 거주자라고 ν•˜λŠ” μ˜ν™”μ™€ 같이 컀널은 λ©”λͺ¨λ¦¬μ— μƒμ£Όν•˜κ³  μžˆλ‹€.

Memory Resident Vs Disk Resident

μœ„μ˜ 그림은 사싀 μ •ν™•ν•œ λ©”λͺ¨λ¦¬ λ ˆμ§€λ˜νŠΈλ₯Ό μ„€λͺ…ν•  수 μžˆλŠ” 그림은 μ•„λ‹ˆλ‹€.

 

λ©”λͺ¨λ¦¬ λ ˆμ§€λ˜νŠΈλΌλ©΄ μš°λ¦¬κ°€ μ‹œμž‘ν•  λ•Œ μžλ™μ μœΌλ‘œ μ‹€ν–‰ν•  수 있게 ν•΄μ£ΌλŠ” 것듀을 λœ»ν•˜λŠ”λ° κ·Έλƒ₯ κ°„λ‹¨νžˆ λ­”κ°€ λŒ€μ‘°μ μœΌλ‘œ μ„€λͺ…ν•  수 μžˆλŠ”κ²Œ μ—†μ„κΉŒ? ν•˜λ©° 그림을 λ„£μ–΄λ³΄μ•˜λ‹€.

λ©”λͺ¨λ¦¬ λ ˆμ§€λ˜νŠΈ

μœ„μ—μ„œ 말 ν–ˆλ“―μ΄ μš°λ¦¬κ°€ ν•„μš”μ— μ˜ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  λ•Œ λ©”λͺ¨λ¦¬μ— 항상 μƒμ£Όν•˜κ³  μžˆλŠ” μž‘μ—…μ΄ μ‹€ν–‰λ˜λŠ” ν”„λ‘œκ·Έλž¨λ“€μ„ λœ»ν•œλ‹€.

λ””μŠ€ν¬ λ ˆμ§€λ˜νŠΈ

λ””μŠ€ν¬ λ ˆμ§€λ˜νŠΈλŠ” 일반적인 ν”„λ‘œκ·Έλž¨λ“€κ³Ό 같이 ν•„μš”ν•  λ•Œ λ©”λͺ¨λ¦¬μ— μ˜¬λ €λ†“κ³  μ‚¬μš©ν•˜λŠ” μ‘μš© ν”„λ‘œκ·Έλž¨λ“€μ„ λœ»ν•œλ‹€.


λ¦¬λˆ…μŠ€μ˜ 파일 μ‹œμŠ€ν…œ

μœ λ‹‰μŠ€μ˜ 파일 μ‹œμŠ€ν…œμ„ μ΄ν•΄ν•˜κΈ° μœ„ν•΄ μ•„λž˜μ™€ 같은 그림을 μ°Έκ³ ν•œλ‹€.

μš°λ¦¬λŠ” λ¦¬λˆ…μŠ€λ₯Ό λ°°μš°λŠ”λ° μ™œ μœ λ‹‰μŠ€μ˜ 파일 μ‹œμŠ€ν…œμ΄ λ‚˜μ˜¬κΉŒ?

 

κ·Έ μ΄μœ λŠ” λ¦¬λˆ…μŠ€κ°€ λ°”λ‘œ μœ λ‹‰μŠ€ 기반이기 λ•Œλ¬Έμ΄λ‹€.

 

μ΄λŸ¬ν•œ μœ λ‹‰μŠ€μ˜ 파일 μ‹œμŠ€ν…œμ΄ λ¦¬λˆ…μŠ€μ—λ„ κ·ΈλŒ€λ‘œ μ μš©λœλ‹€.

Ubuntu Linux ls command exec

이런 λ¦¬λˆ…μŠ€μ˜ νŒŒμΌμ—λŠ” λ‹€μ–‘ν•œ μ’…λ₯˜κ°€ μžˆλ‹€.

μ—¬κΈ° λͺ…λ Ήμ–΄λ₯Ό 보면 ls -l을 μˆ˜ν–‰ν–ˆμ„ λ•Œ 처음으둜 λ‚˜μ˜€λŠ” 문자 d, b, -, c, iκ°€ 파일의 μ’…λ₯˜λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

문자 파일 μ’…λ₯˜
- 일반 파일 (Regular File)
d 디렉토리 파일 (Directory File)
b 블둝 λ””λ°”μ΄μŠ€ 파일 (Block Device File, ex  /dev/sha)
c 문자 λ””λ°”μ΄μŠ€ 파일 (Character Device File, μž…μΆœλ ₯ μž₯치)
l 심볼릭 링크 (Symbolic Link File)

λ¦¬λˆ…μŠ€μ—λŠ” νŒŒμΌμ— κ΄€λ ¨λœ 자주 μ‚¬μš©λ˜λŠ” λͺ…령어듀이 μžˆλ‹€.

 

λ‹€μŒμ— μžμ„Ένžˆ μ•Œμ•„λ³Ό κ²ƒμ΄μ§€λ§Œ λ‹€μŒμ— μžˆμ„ μ‹€μŠ΅μ„ μœ„ν•΄ κ°„λ‹¨ν•˜κ²Œ λ¨Όμ € νŒŒμ•…ν•˜κ³  λ„˜μ–΄κ°€λ©° 였늘 글을 λ§ˆμ³λ³΄λ„λ‘ ν•˜κ² λ‹€.

 

디렉토리에 κ΄€λ ¨λœ λͺ…λ Ήμ–΄

ls, pwd, mkdir, cd, mv

 

파일과 κ΄€λ ¨λœ λͺ…λ Ήμ–΄

cat, more, cp, rm, head, tail

 

파일과 디렉토리 검색에 κ΄€λ ¨λœ λͺ…λ Ήμ–΄

grep, find