목차
컴퓨터 부팅 과정
- 부팅이란 ⇒ 컴퓨터에 전원을 켰을 때 운영체제를 메모리에 올리는 과정

레지스터 = CPU 내에서 데이터를 기억하는 메모리 장치 / 처리할 명령어나 연산에 사용할 값이나 연산 결과를 일시적으로 기억하는 장치
PC = 다음 번에 실행할 명령어 주소를 기억하는 레지스터

- 컴퓨터에 전원이 들어오면 ROM이 동작을 시작한다.
- ROM에 저장된 BIOS(Basic Input/Output System) 시동 프로그램이 컴퓨터에 연결된 각종 하드웨어를 점검한다.
- 이를 POST(Power-on Self-test) 라고 한다.
- POST 점검에 이상이 없으면, 하드디스크의 마스터 부트 레코드(MBR)에 저장된 부트스트랩 로더(부트로더)를 메모리에 로딩한다.
- MBR은 운영체제가 어디에 저장되어있는지를 나타내며, 하드디스크의 첫번째 섹터에 위치하고 있다.
- BIOS가 연결된 저장매체를 설정된 부팅 순서대로 돌면서 MBR에 저장된 부트로더를 탐색한다
- 부트로더 탐색에 성공하면 BIOS는 부트로더 프로그램을 메모리에(0x00007c00) 올린다.
- IBM 사가 메모리의 0x00007c00 ~ 0x00007dff 번지(크기 512바이트) 를 부트 섹터가 읽혀지는 어드레스로 지정했기 때문
- 메모리에 올리는 이유?
- 메모리에 올라온 부트로더가 운영체제 프로세스를 실행한다.
- 메모리에 올라온 1차 부트로더(MBR)가 2차 부트로더(BOOTMGR)을 메모리에 올려 운영체제를 실행시킨다
- 1차, 2차 부트로더가 나뉘어져 있는 이유는 용량 때문
- MBR/VBR의 최대 용량은 512바이트 뿐이므로 도스 같은 운영체제 정도에는 적합했지만 윈도우 같은 복잡한 운영체제의 커널을 로드 할 준비를 하기에는 부족
- 2차 부트로더를 1차 부트로더를 통해 커널을 로드하듯이 로드한 뒤, 2차 부트로더를 통해 커널을 로드하는 방식
부트로더란?
- 운영체제(이하 OS)가 시동되기 이전에 미리 실행되면서 커널이 올바르게 시동되기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 운영 체제를 시동시키기 위한 목적을 가진 프로그램
- 커널을 시동하기 위한 관련 작업들이란?
- 메모리 초기화
- 하드웨어 초기화
- 직렬포트의 초기화
- 네트워크초기화
- 프로세서 속도, 인터럽트의 초기화
- 커널과 램 디스크 적재: 커널과 램 디스크를 램에 적재하여 실행
- 사용자 인터페이스 기능
- 커널
부트 로더 위치