반응형
2️⃣ 운영체제의 구조 - 운영체제 부팅 과정
📌 커널 로딩 및 시스템 초기화 (Kernel Loading & System Initialization)
운영체제의 부팅 과정에서 BIOS/UEFI와 부트로더 단계를 지나면,
운영체제 커널(Kernel)이 메모리로 로드되고 시스템 초기화 절차가 수행된다.
이 단계는 운영체제가 하드웨어를 완전히 장악하고, 사용자 프로세스 실행 환경을 구축하는 핵심 구간이다.
1️⃣ 커널 로딩이란?
커널 로딩은 부트로더가 운영체제의 핵심 실행 파일(커널 이미지)를 메모리로 불러오고 실행하는 과정이다.
💡 로딩 대상
- Linux: /boot/vmlinuz-*, /boot/initrd.img-*
- Windows: ntoskrnl.exe, hal.dll
- macOS: kernel, boot.efi 등
📦 커널 이미지 종류
커널 이미지 유형 | 설명 |
vmlinux | 컴파일된 커널 전체, 디버깅용, 압축되지 않음 |
vmlinuz | 압축된 커널 이미지 (부팅 시 사용) |
initrd/initramfs | 루트 파일시스템 초기화용 RAM 디스크 |
부트로더는 압축된 커널 이미지를 메모리에 풀고 실행 지점(entry point)으로 점프한다.
2️⃣ 커널 진입 직후 수행 작업
✅ 1. 아키텍처별 초기화
- CPU 구조에 따라 필수 하드웨어 초기화 (x86, ARM 등)
- 인터럽트 벡터 테이블 구성
- 페이지 테이블 설정 (가상 메모리 환경 구축)
- MMU(Memory Management Unit) 활성화
✅ 2. 메모리 서브시스템 초기화
- 메모리 맵 분석 (BIOS/UEFI가 전달한 정보 기반)
- RAM, swap, 힙(heap), 커널 스택 영역 설정
- 페이지 프레임 할당자 초기화 (buddy system, slab/slub 등)
✅ 3. 디바이스 트리 / ACPI 파싱
- 장치 트리(Device Tree) 또는 ACPI 테이블 파싱하여 하드웨어 구성 인식
- 메인보드, CPU, I/O 포트, 버스 정보 수집
3️⃣ 시스템 콜 인터페이스 구축
커널은 사용자와의 통신을 위해 시스템 콜 테이블과 트랩 핸들러를 초기화한다.
- 시스템 콜 번호와 처리 함수 매핑
- 트랩 벡터에 syscall, sysenter 인터럽트 루틴 연결
- 사용자 공간에서 커널 기능을 호출할 수 있도록 인터페이스 개방
4️⃣ 디바이스 드라이버 로딩
✅ 정적 방식 (커널에 내장)
- 커널 컴파일 시 통합된 드라이버는 커널 초기화 과정에서 자동 등록
- 예: 핵심 저장장치, 콘솔, 메모리 컨트롤러 등
✅ 동적 방식 (모듈 로딩)
- initrd/initramfs 또는 사용자 공간에서 modprobe, udevd 등을 통해 필요 시 로딩
- USB, 그래픽, 사운드, 네트워크 등 다양한 장치에 대해 유연한 대응 가능
Linux에서는 /lib/modules/$(uname -r)/ 경로에 드라이버 모듈(.ko 파일) 존재
5️⃣ 루트 파일 시스템 마운트 (Root FS Mounting)
초기 RAM 디스크 사용
- initrd 또는 initramfs는 임시 루트 파일시스템으로 커널 초기화에 필요한 도구 포함
- 필요한 드라이버, 부트 스크립트(init, systemd, initramfs-tools 등) 내장
영구 루트 파일 시스템 전환
- 실제 루트 파티션(/, /boot, /home)을 마운트
- 파일시스템 드라이버가 준비된 후 pivot_root() 또는 switch_root() 호출하여 전환
6️⃣ 사용자 공간 프로세스 실행
🔹 최초 사용자 프로세스 실행
- 커널은 최종적으로 PID 1번 프로세스(init 또는 systemd)를 실행
- 이 프로세스는 전체 사용자 공간의 루트가 되며,
- 서비스 매니저, 데몬, 로그인 관리 등을 담당한다.
🔹 Linux
- 전통적으로 /sbin/init → 최근에는 systemd
- 대체 예시: OpenRC, runit, SysVinit
🔹 Windows
- smss.exe (Session Manager Subsystem)
- 이후 wininit.exe, csrss.exe, services.exe, explorer.exe 등이 실행
7️⃣ 시스템 초기화 완료 시점
- 프로세스 스케줄러 가동
- 사용자 로그인 UI 또는 CLI 환경 표시
- 백그라운드 서비스 실행
- 파일시스템 완전 마운트, 네트워크 인터페이스 활성화
- 이제 사용자 프로그램을 자유롭게 실행할 수 있는 환경이 완성됨
8️⃣ 부팅 순서 정리 (요약 다이어그램)
[ 전원 ON ]
↓
[ BIOS / UEFI ]
↓
[ 부트로더 (GRUB, bootmgr, etc.) ]
↓
[ 커널 로딩 (vmlinuz + initrd) ]
↓
[ 커널 초기화 (메모리, 장치, 시스템 콜, 파일시스템) ]
↓
[ 루트 파일시스템 마운트 ]
↓
[ 사용자 공간 진입 (init / systemd / smss.exe) ]
↓
[ 로그인 화면 or 데스크탑 환경 도달 ]
📌 요약
커널 로딩과 시스템 초기화는 운영체제 부팅 과정에서 가장 핵심적인 구간으로,
운영체제가 하드웨어를 직접 제어하고, 사용자 공간 실행 환경을 준비하는 과정이다.
- 💡 커널은 부트로더에 의해 메모리로 로드되고 압축 해제된 후 실행된다.
- ⚙️ 이후 CPU/메모리/디바이스 초기화, 시스템 콜 구성, 파일시스템 마운트, 드라이버 로딩 등을 수행한다.
- 🧱 마지막으로 init, systemd 등의 사용자 프로세스를 실행하면서 운영체제는 본격적인 사용자 환경으로 전환된다.
이 과정은 운영체제가 단순한 코드 집합을 넘어 시스템 전체의 동작 기반을 구축하는 단계로,
성능과 안정성, 확장성을 좌우하는 매우 중요한 부분이다.
반응형
'IT > 운영체제' 카테고리의 다른 글
⚙️ [운영체제] 프로세스 상태 (New, Ready, Running, Waiting, Terminated) (1) | 2025.05.28 |
---|---|
⚙️ [운영체제] 프로세스의 정의 (0) | 2025.05.27 |
⚙️ [운영체제] 부트로더 (Bootloader) (0) | 2025.05.25 |
⚙️ [운영체제] BIOS 및 UEFI (0) | 2025.05.24 |
⚙️ [운영체제] 운영체제별 시스템 콜 비교 (Linux, Windows) (0) | 2025.05.23 |