linux

리눅스 커널 구조

0xSEUNGJU 2022. 10. 5. 15:29

리눅스 커널 구조

운영체제가 관리해야 할 자원은 크게 물리적인 자원과 추상적인 자원으로 구분할 수 있다.

  • 물리적인 자원은 CPU, 메모리, 디스크, 터미널, 네트워크 등 시스템을 구성하고 있는 요소들과 주변 장치 등이 있다.
  • 추상적인 자원은 물리적인 자원을 운영체제가 관리하기 위해 추상화 시킨 객체들이다.
    • CPU를 추상화시킨 task
    • 메모리를 추상화시킨 세그먼트와 페이지
    • 디스크를 추상화시킨 파일
    • 네트워크를 추상화시킨 프로토콜, 패킷
    • 물리적인 자원에 대응하지 않으면서 추상적인 객체로만 존재하는 자원도 있다. (보안(security)나 사용자 ID에 따른 접근 제어(access control)등)

 

리눅스 개념적 구조

  • Task Manager
    • cpu라는 물리적인 자원을 태스크라는 추상적인 자원으로써 제공
    • 태스크의 생성, 실행, 상태 전이, 스케줄링, 시그널 처리, 프로세스 간 통신등의 서비스를 제공
  • Memory Manager
    • 메모리를 세그먼트나 페이지라는 개념으로 제공
    • 물리 메모리 관리, 가상 메모리 관리, 이들을 위한 세그멘테이션, 페이징, 페이지 부재 결함 처리
  • File System
    • 디스크를 파일이라는 개념으로 제공
    • 파일의 생성, 접근 제어, inode 관리, 디렉터리 관리, 수퍼 블록 관리 등의 서비스를 제공
  • Network Manager
    • 네트워크 장치를 소켓이라는 개념으로 제공
    • 소켓 인터페이스, tcp/ip 와 같은 통신 프로토콜 등의 서비스를 제공
  • Device Driver
    • 각종 장치를 디바이스 드라이버를 통해 일관되게 접근하도록 해줌
    • 디스크, 터미널, cd, 네트워크 카드 등과 같은 주변 장치를 구동하는 드라이버들로 구성

 

운영체제는 사용자에게 서비스를 제공하기 위해서 자원을 관리하고 이 때 사용자는 user space에 동작하는 태스크를 의미하며 서비스는 system call을 의미한다. 따라서 운영체제는 시스템 콜을 통해 태스크가 자원을 사용할 수 있게 해주는 자원관리자이다.

 

리눅스 소스 트리

linux lxr 참조

  • kernel
    • task manager가 구현된 디렉터리
    • 태스크의 생성과 소멸, 프로그램 실행, 스케줄링, 시그널 처리 등의 기능 구현됨
    • 문맥교환 같이 하드웨어 종속적인 부분은 arch/$(ARCH)/kernel 에 구현되있음
  • arch
    • architecture 
    • 리눅스 커널 기능 중 하드웨어 종속적인 부분들이 구현된 디렉토리
    • cpu의 타입(intel i386, ARM, 모토로라의 68시리즈, sun의 sparc, ibm의 ppc등)에 따라 하위 디렉토리로 다시 구분
    • i386기준으로 arch/x86 디렉토리
      • arch/x86/boot 디렉토리에는 시스템 부팅시 사용하는 부트스트랩 코드가 구현
      • arch/x86/kernel 에는 태스크 관리자 중 문맥 교환이나 쓰레드 관리 같은 기능
      • arch/x86/mm에는 메모리 관리자 중 페이지 부재 결함 처리 같은 기능등의 하드웨어 종속적인 부분이 구현
      • arch/x86/lib에는 커널이 사용하는 라이브러리 함수가 구현
      • arch/x86/math-emu에는 FPU(Floating Point Unit)에 대한 에뮬레이터가 구현
  • fs
    • 파일시스템과 open(), read(), write() 등의 시스템 콜이 구현
    • 대표적인 파일시스템으로 ext2, ext3, ext4, nfs, fat, proc, sysfs, devfs, isofs, ntfs, reiserfs, f2fs, xfs등이 있다.
    • 다양한 파일 시스템을 일관된 인터페이스로 접근가능하도록 가상 파일시스템도 디렉토리 내에 존재
  • mm
    • 메모리 관리자가 구현된 디렉터리
    • 물리 메모리 관리, 가상 메모리 관리, 태스크마다 할당되는 메모리 객체 관리등
  • driver
    • 디바이스 드라이버가 구현된 디렉터리 
    • 디바이스 드라이버란 디스크, 터미널, 네트워크 카드 등 주변 장치를 추상화시키고 관리하는 커널 구성 요소
    • 리눅스를 처음 설계하는
    •  
  • net
  • ipc
  • init
  • include
  • others