[리눅스 커널 내부구조] Chapter 02 - 리눅스 커널 구조

gom·2024년 3월 16일
post-thumbnail

1. 리눅스 커널 구조

운영체제

  • 자원관리자
  • 사용자에게 서비스를 제공하기 위해 자원 관리
💡 운영체제는 시스템 호출을 통해 태스크가 자원을 사용할 수 있게 해주는 자원 관리자

자원이란?

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

리눅스 커널 내부

  • 물리적 자원을 추상적 자원으로써 제공해주는 관리자 존재
    • 크게 태스크 관리자, 메모리 관리자, 파일시스템, 네트워크 관리자, 디바이스 드라이버 관리자로 나뉨
💡 커널은 자원 관리자이며 커널이 관리하는 자원에는 물리적인 자원과 추상적인 자원이 있다.
  • 태스크 관리자
    • 태스크 생성, 실행, 상태 전이, 스케줄링, 시그널 처리, 프로세스 간 통신 등의 서비스 제공
  • 메모리 관리자
    • 물리 메모리 관리, 가상 메모리 관리, 관리를 위한 세그멘테이션, ㅍ페이징, 페이지 부재 결함 처리 등의 서비스 제공
  • 파일 시스템
    • 파일의 생성, 접근 제어, inode 관리, 디렉터리 관리, 수퍼 블록 관리 등의 서비스 제공
  • 네트워크 관리자
    • 소켓 인터페이스, TCP/IP 같은 통신 프로토콜 등의 서비스 제공
  • 디바이스 드라이버
    • 디스크나 터미널, CD, 네트워크 카드 등과 같은 주변 장치들을 구동하는 드라이버들로 구성

리눅스 소스 레벨 구조

  • kernel 디렉터리
    • 태스크의 생성과 소멸, 프로그램의 실행, 스케줄링, 시그널 처리 등의 기능이 구현되어 있음
  • arch 디렉터리
    • 하드웨어 종속적인 부분들이 구현된 디렉터리
    • CPU타입에 따라 하위 디렉터리도 구분됨
  • fs 디렉터리
    • 리눅스에서 지원하는 다양한 파일 시스템과 시스템 호출이 구현된 디렉터리
  • mm 디렉터리
    • 메모리 관리자가 구현된 디렉터리
    • 물리 메모리 관리, 가상 메모리 관리, 태스크마다 할당되는 메모리 객체 관리 등의 기능이 구현되어 있음
  • driver 디렉터리
    • 디바이스 드라이버가 구현된 디렉터리
    • 초기에는 블록 디바이스 드라이버, 문자 디바이스 드라이버, 네트워크 디바이스 드라이버로 구분 → 현재는 더 많음
  • net 디렉터리
    • 리눅스가 지원하는 통신 프로토콜이 구현된 디렉터리
  • ipc 디렉터리
    • 리눅스 커널이 지원하는 프로세스간 통신 기능이 구현된 디렉터리
  • init 디렉터리
    • 커널의 메인 시작 함수가 구현된 디렉터리
  • include 디렉터리
    • 리눅스 커널이 사용하는 헤더 파일들이 구현된 디렉터리
  • 이외에도 다양한 디렉터리가 존재함

2. 리눅스 커널 컴파일

  • 리눅스에서는 새로운 커널을 컴파일 하고 컴파일 된 커널로 재부팅하면 됨
  • 컴파일 하여 실행파일을 만드는 것과 리눅스 커널을 만드는 것은 유사함
  • 커널 만드는 과정
    • 커널 구성
      • 새로 만들어질 리눅스 커널에게 현재 시스템에 존재하는 하드웨어 특성, 커널 구성 요소, 네트워크 특성 등의 정보를 알려주는 과정
      • 자신이 가지고 있는 시스템의 하드웨어 정보들에 대한 사전 지식이 필요함
      • make menuconfig 명령어 사용
    • 커널 컴파일
      • 커널 소스 파일을 이용해 실행 가능한 커널을 만드는 과정
      • make 명령을 통해 생성
    • 커널 인스톨
      • 생성된 커널로 시스템이 부팅될 수 있도록 만드는 과정
      • make install 명령어 사용

이 글은 아래의 책을 공부 및 정리한 내용입니다.
리눅스 커널 내부구조 - 예스24

profile
탐험하는 개발자

0개의 댓글