5. 부팅과 부트로더

BIOS

  • 부팅은 PC가 켜진 후에 OS가 실행되기 전까지 수행되는 일련의 작업과정을 의미한다.
  • 부팅과정 중 하드웨어와 관련된 작업을 BIOS(Basic Input/Output System)가 담당한다.
  • BIOS에서 수행하는 각종 테스트나 초기화를 POST(Power On Self Test)라고 부른다.
  • 메인보드에 포함된 펌웨어의 일종
  • 입출력을 담당하는 프로그램
  • 부팅옵션 설정이나 시스템 전반적인 설정값(configuration)을 관리하는 역할도 한다.
  • 설정값으로 시스템을 초기화하여 os를 실행할 수 있는 환경을 만든다.

<우리가 만들 os의 부팅과정>

  • 부트로더 이미지를 메모리로 복사하는 단계가 가장 중요 (BIOS영역에서 os영역으로 넘어가는 부분)
  • POST가 완료된 후 부트로더가 존재한다면 코드를 0x7c00 어드레스에 복사한 후 프로세서가 0x7c00 어드레스부터 수행하도록 한다.
  • 하필 0x7c00인 이유는 IBM 사가 메모리의 0x00007c00 ~ 0x00007dff 번지(크기 512바이트) 를 부트 섹터가 읽혀지는 어드레스로 지정했기 때문
    출처: https://heeyamsec.tistory.com/19 [HeeYamSec]

부트로더

  • 가장 첫번째 섹터 MBR(Master Boot Record)에 있는 작은 프로그램 (섹터하나는 512바이트로 구성)
  • 부트로더 checklist
    • BIOS에 첫번째 섹터가 부트로더라는 것을 어떻게 알려줄 것인가?
    • 첫번째 섹터가 과연 정상적인 부트로더인지 어떻게 확인?
  • BIOS는 읽어드인 512바이트 중에 가장 마지막 2바이트의 값이 0x55인지 검사해서 부트로더인지 확인한다.

'Project > OS' 카테고리의 다른 글

7. 디스크에서 os이미지 로딩  (0) 2019.07.16
6. Bootloader 만들기  (0) 2019.07.11
4. 운영모드와 메모리 관리기법  (0) 2019.07.11
3. 운영모드와 레지스터  (0) 2019.07.11
2. 운영모드  (0) 2019.07.11

+ Recent posts