앞에서 설명하지 않은 부분은 OS 의 모드 변경이다. 처음 OS 가 부팅이 되면 리얼모드로 시작되고 이 부분은 16비트 환경이다. 지금 공부 중인 책은 64비트 OS 를 목표로 진행되기는 하지만 64비트로 가기 전 OS 는 32비트 보호 모드를 거쳐서 가야한다. 그래서 이번에는 앞에서 만든 테스트용 가상 OS 소스를 보호 모드로 전환하는 소스로 변경하려고 한다.우선 리얼 모드에서 보호 모드로 전환하기 위해서느는 6단계를 거쳐야 한다.1. 세그먼트 디스크립터 생성 (보호 모드 코드와 데이터용 세그먼트 디스크립터 생성)2. GDT 정보 생성 (세그먼트 디스크립터의 시작 어드레스와 디스크립터의 전체 크기 저장)3. 프로세서에 GDT 정보 설정 (GDTR 레지스터에 GDT의 시작 어드레스와 크기 설정)4. CR..
가상의 OS 이미지를 생성해서 부트로더가 이미지를 읽을 수 있게 하려고 한다. 순간 floppy 디스크 를 읽는 방법 설명이 나오며 BIOS 를 사용하여 디스크를 읽는 소스가 나왔을 때 어떻게 진행을 해야할 지 고민을 했다. 지금은 읽기위해서 테스트용 소스를 사용하니까 뒤에 가서 해결 할 까도 고민했지만 QEMU 메뉴얼을 보니 img 파일을 floppy 에 연결해서 기동할 수 있다는 사실을 알았다. (qemu 사랑합니다..ㅠ)전에 사용하던 명령어: qemu-system-x86_64 -L . -m 64 -hda ./Disk.img -localtime -display curses변경 된 명령어 : qemu-system-x86_64 -L . -m 64 -fda ./Disk.img -localtime -disp..
디렉토리 구조전체 빌드를 위한 최상위에 makefile 생성 후 내용 작성 all: BootLoader Disk.img BootLoader: @echo @echo ================ Build Boot Loader ================ @echo make -C 00.BootLoader @echo @echo ================ Build Complete ================ @echo Disk.img: 00.BootLoader/BootLoader.bin Disk.img @echo @echo ================ Disk Image Build Start ================ @echo cp 00.BootLoader/BootLoader.bin Disk...
지금부터 이 글은 64비트 멀티코어 OS 원리와 구조 책을 보며 실습해 가는 과정을 적은 글입니다. 책이 발간된 지가 좀 됐기 때문에 예제들이 따라가기 힘든 부분이 있어 보인다. (플로피 디스크 사용 등) 이 글은 책에 나오는 소스들을 요즘 환경에 맞게 구성하면서 실행하는 것에 중점을 맞춰서 보면된다. 그래서 책의 내용은 거의 없고 소스와 환경 구성에 대한 설명만 있다. 그럼 이제 시작해 보겠다.우선 gcc(GNU Compiler Collection)를 설치하고 빌드를 할 수 있는 환경이 필요하기 때문에 환경을 위해서 도커를 설치했다. (PC = 맥) (https://www.docker.com/products/docker-desktop)도커를 설치하고 우분투 이미지를 받는다. (버전은 자유롭게 선택)do..