⬅️ 이전     🏠 분류 목차

커널 Kernel

커널 (Kernel)

1. 커널의 정의와 역할

커널은 운영체제의 핵심 부분으로, 사용자가 실행하는 애플리케이션과 하드웨어 사이에서 조정자 역할을 합니다.

커널의 주요 역할

시스템 자원 관리:

  • CPU 관리: 프로세스 스케줄링 및 CPU 할당
  • 메모리 관리: 가상 메모리 및 물리 메모리 관리
  • 파일 시스템 관리: 파일 및 디렉토리 관리
  • 네트워크 관리: 네트워크 프로토콜 및 통신 관리

하드웨어 추상화:

  • 디바이스 드라이버: 하드웨어 장치 제어
  • 입출력 관리: I/O 장치 관리 및 제어
  • 인터럽트 처리: 하드웨어 인터럽트 처리
  • 버스 관리: 시스템 버스 및 장치 버스 관리

2. 커널의 특징

모놀리딕 커널 구조

리눅스 커널은 모놀리딕 커널 구조를 채택하고 있습니다.

모놀리딕 커널의 특징:

  • 단일 주소 공간: 커널의 모든 기능이 하나의 주소 공간에서 실행
  • 직접 통신: 커널 내부 모듈 간 직접적인 함수 호출
  • 높은 성능: 모듈 간 통신 오버헤드가 적음
  • 복잡한 구조: 커널이 커지면서 복잡도가 증가

커널 모듈

리눅스 커널은 모듈화된 구조를 지원하여 필요에 따라 기능을 동적으로 로드/언로드할 수 있습니다.

커널 모듈의 장점:

  • 동적 로딩: 실행 중에 필요한 기능만 로드
  • 메모리 효율성: 사용하지 않는 기능은 메모리에 로드하지 않음
  • 유지보수성: 개별 모듈 단위로 업데이트 및 수정 가능

3. 커널의 기능

프로세스 관리

프로세스 생성 및 제어:

  • fork(): 새로운 프로세스 생성
  • exec(): 프로세스 이미지 교체
  • wait(): 자식 프로세스 종료 대기
  • exit(): 프로세스 종료

스케줄링:

  • Completely Fair Scheduler (CFS): 완전 공정 스케줄러
  • 실시간 스케줄링: SCHED_FIFO, SCHED_RR
  • 우선순위 관리: nice 값, real-time priority
  • 멀티코어 지원: SMP(Symmetric Multi-Processing) 환경

메모리 관리

가상 메모리 시스템:

  • 페이지 관리: 4KB 페이지 단위 메모리 관리
  • 메모리 매핑: 가상 주소와 물리 주소 매핑
  • 스왑 관리: 디스크 공간을 메모리로 활용
  • 캐시 관리: 페이지 캐시, 버퍼 캐시

파일 시스템 관리

VFS (Virtual File System):

  • 통합된 인터페이스: 다양한 파일 시스템을 통합 관리
  • 파일 시스템 추상화: ext4, btrfs, xfs 등 지원
  • 네트워크 파일 시스템: NFS, CIFS 지원

파일 조작:

  • 파일 생성/삭제: inode 기반 파일 관리
  • 디렉토리 관리: 계층적 디렉토리 구조
  • 권한 관리: rwx 권한, ACL 지원
  • 링크 관리: 하드 링크, 심볼릭 링크

네트워크 관리

네트워크 스택:

  • TCP/IP 프로토콜: 전송 제어 프로토콜 스택
  • 소켓 인터페이스: 네트워크 통신 API
  • 라우팅: 네트워크 패킷 라우팅
  • 방화벽: netfilter 프레임워크

⬅️ 이전

서브목차