리눅스 커널

Kernel 커널

명사 - (견과류/씨앗의) 알맹이, (사상/주제의) 핵심

커널의 사전적 정의는 위와 같다.
소프트웨어적 관점에서 커널의 정의를 다시 써보자.

Kernel
명사 - (운영체제의) 알맹이/핵심.

그렇다면 커널 파일은 어디에 있을까?

루트 디렉토리에서 ls 명령어를 입력해보았다.
vmlinuz vmlinuz 파일이 바로 커널 파일이다.

커널의 중요한 역할 중 하나가 바로 컴퓨터 하드웨어(= 디바이스)를 관리하는 것이다.

디바이스

  1. CPU
  2. 메모리
  3. HDD
  4. SSD
  5. CD/DVD-ROM
  6. 그래픽/네트워크 어댑터
  7. 사운드 카드
  8. 하드웨어 클럭

디바이스별로 조작 방법이 다르기 때문에 커널에 디바이스 드라이버를 적재하여
커널에게 디바이스 사용법을 가르친다.

시스템 콜

응용 프로그램이 하드웨어를 조작하기 위해선 커널(system)에게 요청(call)해야만 한다.
다음과 같은 시스템 콜이 존재한다.

  1. open
  2. read
  3. wrtie
  4. fork
  5. exec
  6. stat
  7. unlink

시스템 콜 사용법은 유저 라이브러리 함수 사용법과 똑같다.

라이브러리

라이브러리 함수는 내부적으로 시스템 콜을 사용할 수도, 그렇지 않을 수도 있다.
라이브러리 함수인 printf()의 경우 write()라는 시스템 콜을 사용하지만,
strlen()은 시스템 콜을 사용하지 않는다.
printf()와 같이 다른 함수를 이용하여 정의된 함수를 wrapping function이라고 한다.

리눅스에는 다양한 라이브러리가 내장되어 있다.
그중에서 특히 중요한 것이 C 표준 라이브러리인 libc이다.
libc는 /lib 디렉토리에 있다. libc 붉은 박스로 강조한 파일이 바로 libc의 중심이 되는 파일이다.

피드백은 이메일로 받겠습니다.
yongseokj2@gmail.com