[OS 개발 4] 준비 단계(3) - 부트스트랩 과정


부트스트랩


 

대부분의 PC 부팅과정은 다음과 같습니다.

 

 

  1. 컴퓨터가 구동되면 전기적 신호에 의해 메인보드에 이식되어있는 BIOS가 구동된다.

 

  2. 이 후 POST 단계(Power On Self Test)를 통해 메모리와 하드디스크, 하드웨어를 자체적 으로 점검하기 시작한다.

 

  3. CMOS 설정 정보를 읽어들이고 부팅에 필요한 정보를 획득한다.

     : CMOS는 현재 시간이나 하드웨어 정보(BIOS)를 보관하고 유지하기 위해 쓰이는 비 휘발성 메모리를 의미한다.

 

  4. 하드디스크 첫 번째 섹터인 Master Boot Record(MBR)를 검사하고 이를 로드한다.

     : MBR은 전체 512Byte이다. (추후에 좀 더 구체적으로 설명하도록 하겠습니다).

 

  5. 부트로더가 실행되어 커널을 메모리에 로딩(혹은 적재라고도 표현)한다 : 부트로더에 의해 MBR의 512Byte가 메모리 0x07C0으로 불려진다.

       -->즉, 처음 부트로더를 실행하기 위해서는 메모리 0x07C0을 시작점으로 해야 한다. (이후 포스팅에서 구현할 때 다시 살펴보겠습니다).

 

  6. 이 후 부트로더에 의해 커널이 로드되며, 커널이 로드되면 제어권이 OS로 넘어간다.

 

 

 

자세하게 설명하면 더 내용이 길어지므로 내용을 요약해 보았습니다. 여기에서 우리는 OS를 본격적으로 개발하기 위해 부트 코드 부분부터 다루게 될 것입니다. BIOS나 CMOS는 이미 제조사에서 제작하여 구현하였으므로 우리는 이러한 하드웨어와 호환되는 MBR 영역의 부트 섹터부터 제작하면 되겠네요. 이는 다음 포스팅부터 자세히 다뤄보도록 하겠습니다. OS 제작 과정에서 부가적으로 정리해야 할 부분은 또 별도로 정리하도록 하겠습니다.

 

이 짧은 포스팅도 시간이 꽤나 걸렸는데 앞으로는 얼마나 걸릴지 모르겠네요.

 


TAGS.

Comments