본 내용은 본인 공부에 대한 정리용으로, 자세한 내용이 포함되지 않음을 참고 바랍니다.
Ⅰ. 개요
- 64비트 멀티코어 OS 인 MINT64 OS를 개발할 예정이다.
- 큰 순서는 부트로더 -> 32bit OS -> 64bit OS 로 진행된다.
- 64bit OS 개발 완료 후,
멀티코어 관련 기능을 추가해서 최대 16개의 코어를 지원하게 확장하고 GUI시스템까지 구현할 예정이다.
Ⅱ. OS 개발 시, 필요한 지식
1. 하드웨어 지식
- 32bit에서 64bit로 바꾸는 작성이나 PC주변장치를 다루는 작업은 하드웨어에 대한 지식이 없으면 불가능하다.
- 다행히, 대부분의 내용은 하드웨어와 함께 제공되는 스펙문서에 존재한다.
- 스펙문서만 잘 구하면, 하드웨어를 모른다 하여도, 큰 문제가 발생하지 않는다.
2. 어셈블리어
- 사람보다는 기계어에 가까운 프로그래밍 언어이다.
- OS 개발 시, 어셈블리어가 필요한 경우는
OS처음 부팅할 때, 프로세서에 동작 모드 설정할 때, 멀티태스킹의 일부분, 응용프로그램을 위한 시스템콜 등이다.
3. C언어
- OS코드의 대부분은 C언어로 작성되므로, C언어를 모르면 OS개발이 불가능하다.
- 기본 개념, 배열과 포인터의 관계, 타입 캐스팅에 약하다면, C언어 기초 먼저 다지는 것을 추천한다.
4. OS이론
- OS 개발 초기 단계에는 거의 필요없지만, 개발 중반에는 OS전체의 방향 설계에 큰 역할을 차지한다.
5. 컴파일러, 링커, 도구 사용법
- '컴파일러'와 '링커'의 경우, 작성한 소스코드를 부팅 가능한 이미지로 만들어주는 프로그램이다.
- '도구'는 개발을 도와주는 통합개발환경(IDE) 프로그램부터 생성된 OS이미지를 실행할 가상머신 프로그램에 이르기까지 다양한 종류의 프로그램을 의미한다.
- OS이미지 생성시, 컴파일러와 링커에 복잡한 옵션을 설정해야 하며, 도구도 설정 작업에 필요한 요소이다.
Ⅲ. 환경 구축
- 개발에 사용할 프로그램은 크게 GCC, NASM, 이클립스, QEMU 등이다.
(이클립스 경우, 소스 파일 보기 위한 에디터이므로 다른 에디터를 사용해도 무관하다.) - 'ubuntu-18.04' 에서 환경 구축을 진행하였다.
1. GCC 설치
- 설치한 GCC가 32bit와 64bit를 지원하는지 확인한다.
- 32bit: gcc -m32 <file_name> <C_file>
- 64bit: gcc -m64 <file_name> <C_file>
2. NASM설치
- 설치: sudo apt-get install nasm
3. 이클립스 설치
- 본 툴은 코드 보기용으로, 다른 툴을 사용해도 가능하다.
- 필자는 visual studio를 사용하여 진행할 예정이다.
4. Qemu 설치
- 설치: sudo apt-get install libncurses-dev qemu-system make
'MINT64 OS 개발' 카테고리의 다른 글
6. 32비트 보호 모드로 전환 (0) | 2023.05.06 |
---|---|
5. OS이미지 메모리에 복사 (0) | 2023.05.06 |
4. 32비트 보호 모드로 전환 (0) | 2023.04.13 |
3. OS이미지 메모리에 복사 (0) | 2023.04.10 |
2. 간단한 부트로더 제작 (0) | 2023.04.10 |