부팅

Ahn9807 (토론 | 기여)님의 2023년 2월 16일 (목) 08:20 판 (새 문서: 분류: 부팅 == 개요 == 컴퓨터 용어로서 컴퓨터를 시작할 때, 자기 자신(컴퓨터)을 구동시킬 프로그램을 컴퓨터 스스로 불러내는 동작을 말한다. == 동작 과정 == === 리얼 모드 진입 === 파워가 프로세스에 진입하면 프로세스는 지정된 부팅 과정을 시작하게 된다. 우선 프로세스는 리얼 모드에서 작동을 시작한다. 리얼 모드에서 IP 0xfff0, CS selector 0xf000, CS Base 0xfff...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


개요

컴퓨터 용어로서 컴퓨터를 시작할 때, 자기 자신(컴퓨터)을 구동시킬 프로그램을 컴퓨터 스스로 불러내는 동작을 말한다.

동작 과정

리얼 모드 진입

파워가 프로세스에 진입하면 프로세스는 지정된 부팅 과정을 시작하게 된다. 우선 프로세스는 리얼 모드에서 작동을 시작한다. 리얼 모드에서 IP 0xfff0, CS selector 0xf000, CS Base 0xffff0000으로 설정한뒤 작동하게 된다. 그렇다면 CS + IP = 0xfffffff0이 프로세스가 작동을 수행하는 명령어가 위치한 지점이 된다. 이 부분은 따로 리셋 벡터라고 불린다. 이곳을 CPU가 리셋후 실행될 첫 명령어가 위치하는 부분으로 이 곳에는 BIOS진입 지점을 가리키고 있는 jmp명령을 포함하고 있다. 리얼 모드에서 0xFFFF_FFFF ~ 0xFFFF_0000은 롬에 매핑되게 된다.

메인보드의 펌웨어(바이오스)는 부팅되며 메모리의 리셋 벡터에 스스로를 실행 할 수 있는 명령어 집합을 넣어 놓게 된다. 그럼 CPU가 시작되면서 이 명령어를 찾아가게 되어 바이오스를 실행하게 되는 것이다. 이제 바이오스가 실행되게 되었다. 이제 바이오스는 하드웨어의 초기화POST를 하며 부팅 순서에 맞추어서 MBR파티션에 위치한 명령을 메모리에 적제시키고 CPU에서 (사실 바이오스도 CPU에서 돌아감으로 CPU가 스스로에게) 여기서 부터 부팅하라고 명령을 함으로써 MBR에 있는 부팅 프로세스를 수행하게 된다.

부트로더

이제 MBR에 있는 명령어까지 모두 수행하게 되었으면, 이제 컴퓨터에 대한 통제권은 온전히 커널이 가지게 되었다. 그러나 커널을 부팅 시키기 위해서 부팅과정에서 필수적으로 해야 하는 많은 진부한 과정들을 해야 한다. 이러한 작업을 위해서 GRUB이나 syslinux와 같은 부트로더가 사용되게 된다.