[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 제작 과정에서 부가적으로 정리해야 할 부분은 또 별도로 정리하도록 하겠습니다.
이 짧은 포스팅도 시간이 꽤나 걸렸는데 앞으로는 얼마나 걸릴지 모르겠네요.
'OperatingSystem > Creating OS' 카테고리의 다른 글
[OS 개발 11] 인터럽트와 예외처리(1) IDT의 개념 (0) | 2016.02.11 |
---|---|
[OS 개발 10] 32비트 커널 로더(4) - 커널 구현과 분석 (3) | 2016.02.10 |
[OS 개발 9] 32비트 커널 로더(3) - GDT의 개념과 적용 (0) | 2016.02.06 |
[OS 개발 8] 32비트 커널 로더(2) - 리얼 모드와 보호 모드 (0) | 2016.02.05 |
[OS 개발 7] 32비트 커널 로더(1) - 커널과 디스크 구조 (0) | 2016.02.05 |
[OS 개발 6] 레지스터 세그먼트와 오프셋 개념 (0) | 2016.02.03 |
[OS 개발 5] 부트로더의 개념 및 제작, 실행, 분석 (4) | 2016.02.03 |
[OS 개발 3] 준비 단계(2) - 레지스터와 어셈블리 명령 체계 (0) | 2016.02.02 |
[OS 개발 2] 준비 단계(1) - 제작 환경 구축 (1) | 2016.02.02 |
[OS 개발 1] 첫 시작 (1) | 2016.02.02 |