컴퓨터 전원 켜기: 숨겨진 과정
컴퓨터의 전원을 누르는 순간, 단순해 보이는 동작 뒤에는 복잡하고 정교한 ‘부트업’ 과정이 시작됩니다. 이 과정은 ‘부트스트랩’이라는 용어에서 유래했으며, 컴퓨터가 작동하기 위한 초기 단계를 의미합니다. Windows, Mac, Linux 어떤 운영체제를 사용하든, 컴퓨터 내부에서는 다음과 같은 일련의 과정들이 진행됩니다.
하드웨어에 전력 공급
전원 버튼을 누르면 컴퓨터는 마더보드, CPU, 하드 디스크, SSD, 그래픽 카드 등 모든 구성 요소에 전력을 공급하기 시작합니다. 이러한 전력 공급 역할을 하는 장치를 ‘전원 공급 장치’라고 부릅니다. 데스크톱 PC의 경우, 일반적으로 케이스 뒷면에 위치하며, AC 전원 코드를 연결하는 부분(위 이미지의 노란색 표시)이 바로 전원 공급 장치입니다.
CPU, UEFI 또는 BIOS 로딩
전원이 공급되면 CPU는 자체적으로 초기화 작업을 시작하고, 일반적으로 메인보드 칩에 저장된 작은 프로그램을 찾습니다. 이전 세대의 PC는 BIOS(Basic Input/Output System)를 로드했지만, 최근에는 CPU가 UEFI(Unified Extensible Firmware Interface) 펌웨어를 로드하는 것이 일반적입니다. UEFI는 구형 BIOS를 대체하는 현대적인 기술입니다. 그러나 일부 PC 제조업체에서는 여전히 UEFI 소프트웨어를 ‘BIOS’라고 부르는 경우가 있어 혼란을 야기하기도 합니다.
UEFI 또는 BIOS, 하드웨어 테스트 및 초기화
BIOS 또는 UEFI 펌웨어는 메인보드의 특정 영역에서 구성 설정을 불러옵니다. 과거에는 CMOS 배터리로 백업되는 메모리에 저장되었지만, 현재는 다양한 저장소에 저장됩니다. BIOS 또는 UEFI 설정 화면에서 사용자 지정 설정을 변경하면, 해당 설정이 저장됩니다. CPU는 UEFI 또는 BIOS를 실행하여 CPU 자체를 포함한 시스템 하드웨어를 테스트하고 초기화합니다. 예를 들어, RAM이 없는 경우 오류 경고음이 발생하고 부팅 과정이 중단됩니다. 이러한 과정을 POST(Power On Self Test)라고 합니다.
이 과정에서 종종 PC 제조사 로고가 화면에 나타나며, 특정 키를 눌러 BIOS 또는 UEFI 설정 화면에 진입할 수 있습니다. 하지만 최신 PC에서는 부팅 과정이 매우 빨라 로고가 표시되지 않는 경우가 많으며, 이 경우 Windows 부팅 옵션 메뉴에서 UEFI 설정 화면에 접근해야 합니다.
UEFI는 단순한 하드웨어 초기화 이상의 기능을 제공합니다. 일종의 작은 운영체제라고 볼 수 있습니다. 예를 들어, 인텔 CPU에는 Intel Management Engine이 탑재되어 있는데, 이는 비즈니스 PC의 원격 관리 등을 포함한 다양한 기능을 지원합니다.
UEFI 또는 BIOS, 부팅 장치로 제어권 이양
하드웨어 테스트 및 초기화가 완료되면, UEFI 또는 BIOS는 운영체제 부팅에 대한 제어권을 부트 로더에게 넘깁니다. UEFI 또는 BIOS는 운영체제를 시작할 ‘부팅 장치’를 찾습니다. 부팅 장치는 하드 디스크나 SSD일 수도 있고, CD, DVD, USB 드라이브, 심지어 네트워크 위치가 될 수도 있습니다. 부팅 장치는 UEFI 또는 BIOS 설정 화면에서 사용자가 구성할 수 있습니다. 만약 여러 부팅 장치가 있다면, UEFI 또는 BIOS는 설정된 순서대로 부팅을 시도합니다. 예를 들어, 광학 드라이브에 부팅 가능한 DVD가 있다면, 시스템은 하드 드라이브보다 먼저 DVD에서 부팅을 시도할 것입니다.
과거에는 BIOS가 디스크 시작 부분에 있는 MBR(마스터 부트 레코드)을 확인했습니다. MBR에는 나머지 운영체제를 로드하는 ‘부트로더’라는 코드가 들어 있습니다. BIOS는 부트로더를 실행하고, 부트로더는 운영체제(예: Windows 또는 Linux)의 부팅을 시작합니다. 반면 UEFI를 사용하는 컴퓨터는 여전히 구형 MBR 부팅 방식을 사용할 수 있지만, 일반적으로는 ‘EFI 실행 파일’을 사용합니다. EFI 실행 파일은 디스크 시작 부분에 저장되지 않고, ‘EFI 시스템 파티션’에 저장됩니다.
어떤 방식을 사용하든, 원리는 동일합니다. BIOS 또는 UEFI는 저장 장치를 확인하여 MBR이나 EFI 시스템 파티션에서 작은 프로그램을 찾아 실행합니다. 만약 부팅 가능한 장치가 없다면, 부팅 프로세스는 실패하고 오류 메시지를 표시합니다.
최신 PC의 UEFI 펌웨어는 일반적으로 ‘보안 부팅’ 설정을 가지고 있습니다. 보안 부팅은 운영체제가 변조되지 않았는지, 그리고 낮은 수준의 악성코드가 로드되지 않았는지 확인합니다. 보안 부팅이 활성화되어 있으면, UEFI는 부트로더 실행 전에 부트로더가 제대로 서명되었는지 확인합니다.
부트로더, 전체 운영체제 로드
부트로더는 운영체제를 로드하는 역할을 담당하는 작은 프로그램입니다. Windows는 ‘Windows Boot Manager(Bootmgr.exe)’라는 부트로더를 사용하고, Linux 시스템은 ‘GRUB’를 사용하며, Mac은 ‘boot.efi’를 사용합니다. 부트로더에 문제가 생기면(예: 파일 손상), 부트로더 오류 메시지가 표시되고 부팅 과정이 중단됩니다.
부트로더는 자체적으로 부팅 과정을 처리하는 것이 아니라, 운영체제를 로드하는 역할을 담당합니다. 예를 들어, Windows에서 Windows Boot Manager는 Windows OS 로더를 실행합니다. OS 로더는 Windows 커널을 실행하는 데 필요한 필수 하드웨어 드라이버를 로드한 후, 커널을 실행합니다. 커널은 시스템 레지스트리를 메모리에 로드하고, ‘BOOT_START’로 표시된 추가 하드웨어 드라이버를 로드합니다. 그 후, Windows 커널은 세션 관리자 프로세스(Smss.exe)를 시작하여 시스템 세션을 시작하고 추가 드라이버를 로드합니다. 이러한 과정이 계속되면 Windows는 로그인 화면과 백그라운드 서비스를 로드합니다.
Linux에서는 GRUB 부트로더가 Linux 커널을 로드하고, 커널은 대부분의 최신 Linux 배포판에서 systemd init 시스템을 시작합니다. init 시스템은 로그인 프롬프트로 이어지는 서비스 및 기타 사용자 프로세스 시작을 처리합니다.
이러한 일련의 과정은 모든 요소가 올바른 순서로 로드되도록 하기 위한 방법입니다.
참고로, 소위 ‘시작 프로그램’은 시스템이 부팅될 때가 아니라 사용자가 계정에 로그인할 때 로드됩니다. 그러나 일부 백그라운드 서비스(Windows) 또는 데몬(Linux 및 macOS)은 시스템이 부팅될 때 백그라운드에서 시작됩니다.
종료 과정 또한 복잡합니다. 다음은 Windows PC를 종료하거나 로그아웃할 때 일어나는 일입니다.