| ⬅️ 이전 | 🏠 분류 목차 |
커널 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 프레임워크
서브목차