1. 전원이 들어오면 CPU는 ROM에 있는 BIOS 프로그램을 메모리에 올려 실행시킨다.
컴퓨터가 켜지면 power supply에 전원이 들어오고 메모리(ROM) 0번지 주소의 데이터를 읽는다.
ROM-BIOS에서 BIOS 프로그램이 메모리로 올라간다.
ROM-BIOS(Read-Only Memory - Basic Input/Output System)
ROM은 읽기 전용 메모리를 의미하며, 여기서는 컴퓨터의 메인보드에 탑재된 BIOS 프로그램을 가리킨다. BIOS는 컴퓨터 부팅 초기에 실행되는 프로그램으로, 하드웨어를 초기화하고 기본적인 입출력 작업을 처리하는 역할
컴퓨터의 전원이 켜지면 ROM에 저장된 BIOS 프로그램이 메모리(RAM)로 복사되어 실행 가능한 상태가 된다. 이 과정은 부팅 과정의 초기 단계로, 메모리로 BIOS가 로드되어야만 후속 단계에서 필요한 시스템 초기화와 부트로더 실행이 가능해진다.
이는 메모리에 프로그램을 올려서 실행시키는 것이 속도가 빠르고 현재의 컴퓨터들은 폰 노이만 구조를 따르기 때문이다.
🔗 폰 노이만 구조에 대한 추가 설명
부팅을 위해 컴퓨터의 전원 스위치를 켜면, 제일 먼저 ROM-BIOS라고 불리는 기본적인 프로그램이 동작하게 되는데, 이 프로그램은 전원이 꺼지더라도 기억할 수 있도록 ROM(특: 비휘발성 메모리)이라는 메모리에 기록되어있다.
2. BIOS(Basic Input/Output System)은 POST(Power On Self Test)를 실행하여 필요 하드웨어에 이상이 없는지 체크한다.
POST(Power On Self Test)
컴퓨터 부팅과정에서 하드웨어의 기본적인 작동 상태를 자가 진단하는 과정
이 과정은 컴퓨터가 전원이 켜질 때 초기에 자동으로 실행된다.하드웨어 검사, 부팅 가능성 검사가 목적
POST과정에서 발견되는 에러들은 치명적인 에러여서 컴퓨터는 부팅되지않는다.
이외에도 BIOS 프로그램은 아래의 것들을 실행한다.
- 하드웨어 초기화
- 메모리와 CPU 레지스터 초기화
- 저장매체의 MBR(Master Boot Recored) 읽기
3. BIOS는 저장매체의 첫번째 섹터에 있는 MBR에 접근하여 부트 로더를 메모리에서 실행시킨다.
컴퓨터 부팅 과정에서 중요한 역할을 하는 데이터 구조이다. 주로 하드디스크의 첫 번째 섹터(섹터 0번)에 위치하며, 일반적으로 512바이트 크기로 구성
부트코드(Boot Code) : MBR의 첫 446바이트는 부트 코드로, 실제 부트 로더가 저장되어 있다. 이 부트 코드는 컴퓨터가 부팅될 때 실행되어 부팅 프로세스를 시작
파티션 테이블(Partition Table) : MBR의 나머지 64바이트는 파티션 테이블로 구성된다. 이 테이블은 하드 디스크에 있는 파티션들의 위치와 크기를 정의한다. 최대 4개의 파티션 엔트리를 저장 할 수 있다. 각 엔트리는 파티션의 시작 위치, 끝 위치, 파티션 타입 등의 정보를 포함한다.
부트 시그니처(Boot Signature) : MBR의 마지막 2바이트는 부트 시그니처로, 이는 MBR이 유효하다는 것을 나타내는 값입니다. 보통 0x55AA(hex)로 설정되어 있다.
부팅 프로세스 시작 : 컴퓨터가 전원이 켜지면 BIOS 또는 UEFI가 부팅 장치에서 MBR을 찾아서 실행한다.
부트 로더 실행 : MBR의 부트 코드가 실행되면, 부트로더가 로드된다. 이 부트 로더는 운영 체제가 설치된 파티션의 부트 섹터(Boot Sector)로 이동하여 운영 체제를 로드하게 된다.
파티션 정보 확인 : 부트 코드는 파티션 테이블을 확인하여 어느 파티션에서 운영 체제를 찾아야 할지 결정한다.
파티션 수 제한 : MBR은 최대 4개의 주 파티션만을 지원할 수 있다. 이는 MBR이 하드 디스크의 물리적 제한과 관련이 있다.
용량 제한 : MBR은 하드 디스크의 주소 공간을 2TB로 제한한다. 이는 MBR이 사용하는 32비트 주소 체계로 인해 발생하는 제한이다.
컴퓨터 부팅 과정에서 실행되어 운영 체제(Operating System, OS)를 로드하고 실행할 수 있도록 하는 프로그램이다. 부트 로더는 보통 부팅 장치에 위치한 부트 섹터(Boot Sector)에서 실행
4. 메모리에서는 부트 섹터에 접근하고 운영체제 이미지를 메모리에 올려 운영체제를 실행시킨다.
이제 메모리는 운영체제가 들어있는 파티션을 알게되었고 메인파티션에 있는 부트 섹터에 들어있는 부트코드를 읽는다.
부트 코드는 메모리에서 실행되고 실행된 부트 코드는 운영체제의 이미지를 메모리에 올려 운영체제가 실행된다.
컴퓨터의 하드 디스크나 다른 저장 장치(예 : SSD, USB 드라이브 등)에서 첫 번째 섹터(주로 섹터 0번)를 말한다. 이 섹터에는 부팅에 필요한 중요한 정보들이 저장되어있다.
부트 코드는 일반적으로
MBR(Master Boot Record)
에 포함되어 있다. MBR은 하드 디스크의 첫 번째 섹터에 위치하며, 크기는 보통 512바이트이다. 이 512바이트 중에서 처음 446바이트는 부트 코드로 사용된다.따라서, MBR의 구성 요소 중 하나인
부트 코드
는 컴퓨터 부팅 과정에서 가장 처음 실행되는 코드이다. 부트 코드는 BIOS 또는 UEFI가 부팅 장치에서 MBR을 찾고 실행할 때 시작점이 되며, 이 코드는부트 로더(Boot Loader)
를 로드하고 실행하여 운영 체제를 부팅한다.한편,
부트 섹터
라는 용어는 일반적으로 MBR을 포함한 전체 부트 섹터를 가리키는 경우가 많다. 따라서 부트 코드는 MBR의 일부분이기도 하며, MBR 전체가 부트 섹터로 간주될 수 있다.요약하자면, MBR에는 부트 코드가 포함되어 있으며, 이 부트 코드는 컴퓨터 부팅을 시작하는 역할을 한다.