프로젝트/운영체제 만들기
-
[x86] 멀티 부트프로젝트/운영체제 만들기 2023. 6. 27. 17:20
글의 참고 - https://www.gnu.org/software/grub/manual/multiboot2/multiboot.html 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 - Overview : 멀티 부트는 부트 로더와 운영 체제 사이의 인터페이스를 정의한 스펙이다. 멀티 부트2에서 중요시 다루는 3가지 요점은 아래와 같다(참고로, 멀티 부트는 스펙 1, 2로 나뉘어져 있다. 당연히 2가 최신이다) 1" 부트 로더 입장에서 본 OS 이미지 포맷 2" 부트 로더가 운영체제를 시작시킬 때, 머신의 상태 3" 부트 로더가 운영체제에게 파라미터를 던질 때 파라미터의 포맷 - 운영체제 이미지 포맷 : 운영체제 이미지 파일은 대개 표준 32..
-
BOCHS프로젝트/운영체제 만들기 2023. 6. 24. 22:27
글의 참고 - https://bochs.sourceforge.io/doc/docbook/user/bochsrc.html#BOCHSOPT-FLOPPYAB 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 - 설치 : 리눅스 배포판에서는 기본적으로 아래의 명령어로 설치가 가능하다. " sudo apt-get install bochs " sudo apt-get install bochs-x : 그러나 이건 훼이크다. 나는 위에 처럼 설치하는 걸 추천하지 않는다. BOCHS는 `GDB`와 BOSCH가 자체적으로 제공하는 `인터널 디버깅` 기능 중에서 하나만 선택해야 한다. 기본적으로 `인터널 디버깅`이 선택이 되는데, GDB로 설치해도 상관은 없다. ..
-
Long mode프로젝트/운영체제 만들기 2023. 6. 20. 18:56
글의 참고 - https://en.wikipedia.org/wiki/X86-64 - https://os.phil-opp.com/entering-longmode/ - https://wiki.osdev.org/Setting_Up_Long_Mode 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 - 사전 작업 : 롱 모드 진입을 위해서는 당연히 머신이 64비트를 지원해야 한다. 즉, QEMU에서 64비트를 지원하는 머신(`qemu-system-x86_64`)을 사용해야 한다. - 진입 절차 : 진입 자체는 쉽다. 레지스터의 비트 몇 개만 건들면 되지만, 문제는 페이징이다. 일단 스펙을 봐야한다. : IA-32e 모드 진입 전, 운영 체제는 반드시..
-
[리눅스] - printf & printk프로젝트/운영체제 만들기 2023. 6. 19. 01:59
글의 참고 - https://wiki.osdev.org/Formatted_Printing - https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-format-function-attributehttps://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/Function-Attributes.html - https://en.wikipedia.org/wiki/Control_character - https://stackoverflow.com/questions/15549893/modify-printfs-via-macro-to-include-file-and-line-number-information - https://stac..
-
참고 자료프로젝트/운영체제 만들기 2023. 6. 14. 18:39
글의 전제 - 내가 글을 쓰다가 궁금한 점은 파란색 볼드체로 표현했다. 나도 모르기 때문에 나중에 알아봐야 할 내용이라는 뜻이다. - 밑줄로 작성된 글은 좀 더 긴 설명이 필요해서 친 것이다. 그러므로, 밑 줄 처친 글이 이해가 안간다면 링크를 따라서 관련 내용을 공부하자. - `글의 참조`에서 빨간색 볼드체로 체크된 링크는 이 글을 작성하면 가장 많이 참조한 링크다. 글의 내용 - 컴퓨터 구조 : https://book.huihoo.com/pc-architecture/start.htm " 옛날 느낌이 많이 묻어나지만, 정말 쉽게 자세히 방대한 양을 설명한다. PC에 들어가는 대부분의 칩들을 쉽게 설명한다. : https://flylib.com/books/en/4.57.1/ " 일단 책이다. 위의 hui..
-
재배치프로젝트/운영체제 만들기 2023. 6. 12. 14:14
글의 참고 - http://bravegnu.org/gnu-eprog/linker.html - https://people.cs.pitt.edu/~xianeizhang/notes/Linking.html 글의 전제 - 내가 글을 쓰다가 궁금한 점은 파란색 볼드체로 표현했다. 나도 모르기 때문에 나중에 알아봐야 할 내용이라는 뜻이다. - 밑줄로 작성된 글은 좀 더 긴 설명이 필요해서 친 것이다. 그러므로, 밑 줄 처친 글이 이해가 안간다면 링크를 따라서 관련 내용을 공부하자. 글의 내용 " 심볼 리졸루션 단계가 끝나면, 각각의 심볼들이 서로 연결을 맞췄다는 뜻이 된다. 예를 들어, pbl.asm에서 사용하는 `_main` 심볼이 실제로는 sfl.asm에 있다는 것을 이 시점에서는 알게된다. 컴파일 및 어셈블 후..
-
세그먼테이션프로젝트/운영체제 만들기 2023. 6. 7. 01:21
글의 참고 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 : 이제는 거의 사용하지 않지만, 여전히 x86 아키텍처 기반의 시스템 프로그래밍을 할 때 사용하는 메모리 주소 방식이다. 인텔이 초창기 모델인 8086은 처음 나올 때 부터 CPU 내부 레지스터 부터해서 내부와 외부 데이터 버스의 대역폭은 16비트였다(내부와 외부는 CPU를 기준으로 나눈다. CPU안에 있는 버스는 내부 버스, CPU 밖에 있는 버스는 외부 버스). 그런데, 메모리와 연결되는 외부 주소 버스가 20비트였다. 이게 세그먼트 주소 지정방식의 시작이다. : 아래의 8086의 회로도를 보면 알겠지만, AD0 - AD15 까지 있는데, A16 - A19가 추가적으로 있는 것..
-
Higher Half Kernel프로젝트/운영체제 만들기 2023. 6. 6. 19:03
글의 참고 - https://wiki.osdev.org/Higher_Half_x86_Bare_Bones - https://medium.com/@connorstack/how-does-a-higher-half-kernel-work-107194e46a64 - https://littleosbook.github.io/#paging-and-the-kernel 글의 전제 - 내가 글을 쓰다가 궁금한 점은 파란색 볼드체로 표현했다. 나도 모르기 때문에 나중에 알아봐야 할 내용이라는 뜻이다. - 밑줄로 작성된 글은 좀 더 긴 설명이 필요해서 친 것이다. 그러므로, 밑 줄 처친 글이 이해가 안간다면 링크를 따라서 관련 내용을 공부하자. - `글의 참조`에서 빨간색 볼드체로 체크된 링크는 이 글을 작성하면 가장 많이 참조한..