용's
컴퓨터 부팅 과정(Computer Boot Sequence) 본문
예전에 과제 수행하면서 정리했던 Boot Sequence 관련 자료가 있어서 블로그에 올려 놓는다.
컴퓨터공학을 전공했지만... 많이들 놓치고 있는 지식이랄까?
그리 자세하게 정리하진 않았고, 그냥 흥미로울 정도로만 정리해놓았다.
컴퓨터를 부팅하기 위해서 가장 먼저 컴퓨터 본체의 전원 버튼을 눌러야 한다. 이 전원 버튼을 누르게 되면 컴퓨터의 메인보드(마더보드)의 전원이 켜지게 되며, 켜진 메인보드는 컴퓨터 본체 내의 펌웨어(칩셋 및 기타 등)를 초기화시키고 CPU를 동작시키는 일을 한다.
그림 1. 전체적인 컴퓨터 부팅 과정
(출처 - https://neosmart.net/wiki/windows-xp-boot-process/)
CPU가 정상적으로 작동을 한다면, 다중 프로세서 또는 다중 코어 시스템을 이용할 시 하나의 CPU가 Bootstrap Processor(BSP)로 선택되고 이 BSP는 모든 BIOS와 Kernel의 초기화 코드를 동작시킨다. 이때 BIOS는 Basic Input/Output System의 준말로, CPU가 BIOS 코드를 실행함으로써 컴퓨터에 입력과 출력에 필요한 기능들이 제대로 활성화되어 있는지 확인(test)한 후 초기화하는 과정을 거치게 된다. 이때 주변장치로 붙어있는 CPU나 RAM, USB와 같은 주변 장치의 입력에 대해서도 정상적으로 돌아가는지 확인하게 되는데, 이를 POST(Power On Self Test)라고 한다. POST는 주변 장치의 상태 확인 및 초기화 작업과 함께, 모든 리소스들(Interrupt, 메모리 범위, I/O 포트 등)을 정리하는 작업도 진행된다. 그리고 요즘 BIOS는 확인된 장치들에 대하여 Data Table을 만들기도 하며, 이 Table은 후에 Kernel이 사용한다.
POST가 끝난 후, 컴퓨터는 이제 어떤 운영체제를 선택할
지 결정한다. 이를 위해 BIOS는 HDD의 첫 512바이트 섹터(Sector
0)를 읽는다. 이 처음으로 읽어내는 섹터를 MBR(Master
Boot Record)라 하며, BIOS는 이 MBR을
읽어 메모리 0x7c00 위치에 로드(load)하고 0x7c00 위치로 점프(Jump)하여 MBR에 있는 코드를 실행시킨다.
그림 2. Sector 0에 위치한 MBR과 MBR 구성 내용
MBR에는 부트로더(Bootloader)를 포함하고 있으며, 이 부트로더는 부팅이 가능한 파티션을 찾음으로써 어떤 운영체제를 부팅할 지 선택한다. 마지막으로 선택된 운영체제의 Kernel은 RAM에 적재되고 이후로 컴퓨터 부팅이 완료된다.
'Computer Science > 기타 컴퓨터(개발) 지식' 카테고리의 다른 글
[WebRTC #1] 기초 (0) | 2016.05.11 |
---|