티스토리 뷰

2. Kernel Load

1. 개요

앞에서 간단한 프로그램 만들어서 MBR 영역에 넣은 뒤, 부팅을 해 보았다. 이번에는 좀 더 나아가서 커널을 만들어서 로드하는 작업을 해본다. 512byte 크기의 MBR영역에 방대한 커널을 넣기에는 공간이 부족하므로 MBR 밖의 영역을 사용하는데 커널이 로드되는 과정은 아래와 같다.

 

  1. MBR 영역의 코드가 메모리에 적재된다.
  2. MBR 에 있던 부트로더가 MBR 뒷 부분을 메모리로 적재한다.
  3. CPU가 KERNEL을 실행할 수 있도록 KERNEL로 점프한다.

 

 

2. 코드 작성

boot.asm

kernel.asm

 

3. 부트 이미지 만들기

nasm을 이용해서 boot.asm과 kernel.asm 을 각각 boot.bin, kernel.bin 으로 어셈블한다. 이어서 cmd 창을 이용해 방금 만든 boot.bin과 kernel.bin을 합치는 작업을 해야하는데 명령어는 다음과 같다.

 

copy boot.bin+kernel.bin /b kernel.img

 

명령 프롬프트의 copy 명령어를 이용한 방법이다. /b 옵션은 바이너리 형식으로 복사하며 결과 파일이 kernel.img 로 저장된다는 것을 의미한다.

 

 

kernel.img 를 디스크에 쓰고 부팅하면 위 사진과 같이 화면에 출력된다.


참고 : - 만들면서 배우는 OS 커널의 구조와 원리

신고

'##컴퓨터 기본 > #OS' 카테고리의 다른 글

[OS기초] 커널 로드  (0) 2016.02.01
[OS 기초] 코드 분석  (0) 2016.01.18
[OS 기초] OS 개발의 시작  (1) 2015.12.29
댓글
댓글쓰기 폼