개발자 데뷔!

[Linux] 리눅스 커널 기본 본문

DevOps/Linux

[Linux] 리눅스 커널 기본

물꼮이 2024. 5. 5. 22:08

 

Linux의 중요한 세가지 개념

# 파일시스템
# 프로세스
# 스트림

운영체제 (OS : Operating System)

: HW, App을 총괄하는 소프트웨어 

- 리눅스는 유닉스 계열 중 하나의 운영체제. 

- 리눅스 배포판 :  RedHat, CentOS, Ubuntu, SUSE, Gentoo  등이 있음 

  * 리눅스 배포판 : 리눅스 커널을 기반으로 한 소프트웨어 배포판 

- 리눅스에 포함되는 소프트웨어 패키지는 다음과 같다. 

소프트웨어 패키지 예시
bash, ash, csh, tcsh, zsh, pdksh, ...
util-linux init, getty, login, reset, fdisk, ...
procps ps, pstree, top, ...
GNU
coreutils
ls, cat, mkdir, rmdir, cut, chmod, ...
GNU
grep, findutils, diffutils
grep, find, diff, ...
GNU libc  ... 
기본 라이브러리 ncurses, zlib, GDBM, ...
개발 환경 gcc, binutils, make, bison, flex, 헤더파일 ... 
X Window System ...
GNOME or KDE ...

* util-linux : 리눅스 운영체제의 표준 패키지

* procps : 리눅스 시스템의 프로세스 관리 유틸리티 모음 

* Gnome : GNU 프로젝트의 일환으로 개발된 데스크톱 환경 (= Linux GUI)

 

커널 (kernel)

: 하나의 프로그램으로 구성되어, 컴퓨터를 구성하는 모든 HW, SW 관리 

- '리눅스' 단어 자체는 커널 만을 의미한다. 

- 리눅스 루트경로 / 에는 vmlinuz, vmlinux, vmlinuz-X.X.X 파일 확인 가능 => 리눅스 커널의 본체 

 

디바이스 드라이버 (Device Driver)

: 특정 HW 디바이스를 직접 조작하는 SW

디바이스 : CPU, 메모리, HDD, SSD, DVD-ROM, CD-ROM, 네트워크 어댑터, clock 등.. 

* HDD : Hard Disk Drive

* SSD : Solid State Drive

 

시스템 콜 (System call)

: 커널(system)에게 의뢰(call). 커널에 디바이스 조작을 의뢰하는 콜. 

- 보통 '시스템콜 호출코드'는 '일반함수' 사용과 비슷하다. 

- 리눅스에 포함되는 시스템 콜은 다음과 같다. 

시스템콜 명령어
open
read
write
fork
exec
stat
unlink

 

라이브러리 함수(Library function)

- printf(), exit(), strlen(), strcpy() 등의 함수

- link 하여 사용

- 라이브러리 함수는 내부적으로 시스템 콜을 사용 할수도 / 안할수도 있다. 

- 시스템콜을 -> 라이브러리 함수로 구현하거나, 그 역의 경우도 생기기 때문에 의식적으로 구분하지 않기도 함. (둘다 있는 경우도 多 )

- 하지만 '시스템콜' / '라이브러리 함수'의 차이를 알면 리눅스 이해하기 쉬움

  • ex_ printf() 라이브러리 함수는 내부에서 write() 시스템 콜 사용
  • ex_ strlen() 라이브러리 함수는 시스템콜 사용하지 않음 

C표준 라이브러리 (libc : C standard library)

- c표준 라이브러리 libc 의 위치 

  • ubuntu : /lib 디렉터리에 위치
  • CentOS : /lib64 디렉터리에 위치

- libc.so.6 : libc의 중심파일

  • 심볼릭 링크 되어있음
  • 아래  ls -l 명령어로 심볼링 링크 추적 가능 
    • ex_ libc-2.23.so 등의 파일과 연결되어 있는 것을 확인할 수 있다. 
ls -l /lib/x86_64-linux-gnu/libc.so.6

* 심볼링 링크 (Symbolic Link) : 파일 시스템에 사용되는 특별한 유형의 링크. 다른 (파일or 디렉토리)를 가리키는 (파일or디렉토리)

 

 

API (Application Programming Interface)

: 인터페이스. 

- 커널에서의 API 는 시스템 콜을 가리킴. 

- 하지만 경우에 따라, 설정파일, 명령어 도  API 가 될 수 있음 

- 시스템콜 뿐만 아니라 더 많은 것을 포괄하는 개념