책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
코드 관련 질문사항은 https://cafe.naver.com/codemasterproject에 남겨주시면 답변드리겠습니다.
요약
운영체제를 제작할 때 친숙한 개발 환경은 개발속도를 배가시킨다. 이 책에서 설명하는 운영체제 SkyOS는 윈도우 운영체제 환경에서 비주얼 스튜디오를 통해 개발할 수 있다. 또한 C++를 개발 언어로 채택했기 때문에 객체지향 프로그래밍이 가능하며, 표준 C 런타임 라이브러리를 활용함으로써 외부 라이브러리의 손쉬운 포팅 작업을 가능하게 했다. 궁극적으로는 WIN32 에뮬레이션을 통해 WIN32/SkyOS 두 플랫폼에서 동작하는 모듈의 작성이 가능하므로, 개발테스트는 WIN32 환경에서 진행하고 배포는 실기로 하는 구조를 정립했다. 이를 통해 개발자는 자신만의 운영체제를 손쉽게 제작할 수 있을 것이다.
이 책에서 다루는 내용
■ GRUB을 활용한 커널 부팅 프로세스 간소화
■ 비주얼 스튜디오 2017을 사용한 커널 빌드
■ C++ 커널 개발방법 설명과 C++ 언어에 대한 심화 주제 학습
■ 운영체제 메모리 관리 시스템 이해
■ 버그에 대처할 수 있는 디버깅 능력 배양
■ WIN32 시스템 구조를 커널에 반영
■ 다양한 GUI 시스템 샘플 예제 제공
■ WIN32와 SkyOS 두 플랫폼에서 모두 동작하는 모듈 개발 방법 설명
이 책의 대상 독자
프로그래머로서 프로그래밍의 꽃이자 로우레벨 개발의 근간을 이루는 운영체제를 개발하고 싶은 사람을 대상으로 한다. 또한 현대 운영체제의 내부 구조를 더 자세히 이해하고 싶거나, 운영체제를 제작해보고 싶은데 초기 진입에 실패한 프로그래머를 대상으로 한다. 따라서 다음과 같은 사항에 해당된다면 대상 독자라고 할 수 있겠다.
■ 자신만의 운영체제를 개발해 보고 싶은 일반 개발자
■ 운영체제론을 배우고 있는 학생
■ 현대 운영체제의 기본 개념을 이해하고 싶은 프로그래머
■ 이론보다는 구체적으로 실행되는 결과물을 원하는 개발자
■ 산이 있으면 정상에 오르고 싶은 자
■ 바닥부터 개발을 원하는 프로그래머
■ 상업적으로 운영체제를 개발하려는 프로그래머
또한 SkyOS는 C++로 제작됐기 때문에 C++ 관련 필요한 기능을 직접 구현했다. 예를 들면 new나 delete 연산자 등이 그것이다. C++라는 언어 자체에 관심이 있는 개발자라면 이 책이 지적 욕구를 만족시켜 줄 수 있을 것이다.
목차
목차
- 1장. SkyOS 프로젝트
- 예비지식
- SkyOS 콘셉트
- 준비물
- 비주얼 스튜디오 2017
- WinImage
- QEMU
- SkyOS 소스코드
- 프로젝트 빌드
- 프로젝트 구성
- 프로젝트 빌드
- 커널의 실행
- 정리
- 2장. 운영체제 이론
- 프로세스
- 스레드
- 스택
- 호출 규약
- 네임 맹글링
- 정리
- 3장. 커널 로딩
- GRUB
- 부팅
- 설치
- 실행
- GRUB이 전달하는 파라미터
- 커널 엔트리 찾기
- 제약사항
- 글로벌 객체의 초기화
- 환경 설정
- RTTI 기능 제거
- 예외 기능 사용하지 않기
- 기타 옵션
- 정리
- GRUB
- 4장. 하드웨어 초기화
- CPU
- 메모리 레이아웃
- GDT
- IDT
- 정리
- PIC
- PIT
- 실습
- FPU
- 인터럽트 핸들러
- 예외 인터럽트의 종류
- 실습
- 정리
- CPU
- 5장. 메모리 가상화
- 가상주소공간
- 페이징
- 주소 변환 과정
- 세그멘테이션
- 페이징
- 정리
- 6장. 메모리 매니저
- 물리 메모리 매니저
- 가상 메모리 매니저
- 페이징 구현
- 가상주소와 물리주소 매핑
- 정리
- 7장. 힙의 구현
- 커널 힙 알고리즘
- 할당과 해제 로직
- 할당
- 해제
- 힙 인터페이스
- 실습
- 정리
- 8장. C++
- new, delete 연산자 구현
- 예외 처리
- 순수 가상함수 호출
- 힙 손상
- 클래스 상속
- C+ +11
- 람다 함수
- constexpr
- 실습
- 정리
- 9장. 공통 라이브러리
- C 런타임 라이브러리 제작
- STL
- string
- vector
- 맵
- 리스트
- 덱
- cout
- 비표준 자료구조
- 이중 연결 리스트
- 큐
- 스택
- 정리
- 10장. 디바이스 구현
- 키보드
- 키보드 핸들러의 구현
- 플로피 디스크
- 플로피 디스크 초기화
- 하드 디스크
- 하드 디스크 초기화
- 하드 디스크 읽기 / 쓰기
- 정리
- 키보드
- 11장. VFS
- 파일시스템
- StorageManager 클래스
- 표준 입출력 함수와의 연계
- MINT64 램디스크
- 메모리 리소스 디스크
- 실습
- 정리
- 12장. 디버깅
- 맵 파일 익스플로러
- PDB
- WinDBG
- 널 포인터 접근
- try / catch
- 로그
- 정리
- 13장. 커널 코어 구현
- 프로세스 매니저
- 프로세스의 생성
- 파일로부터 프로세스 생성
- 정리
- 콘솔시스템
- 시스템 프로세스의 생성
- 콘솔 프로세스
- WatchDog
- Process Remover
- 멀티태스킹
- 태스크 스위칭 세부 구현
- 정리
- 실습
- 프로세스 매니저
- 14장. 애플리케이션
- 응용프로그램의 시스템 API 호출 원리
- EntryPoint 함수 구현
- SkyOS 시스템 API 호출
- 유저 API
- 커널 API
- 시스템 API의 추가
- 응용프로그램
- Hello World
- Sort
- Math
- 정리
- 15장. 그래픽 시스템
- 그래픽 모드 초기화
- RME
- GRUB을 활용한 GUI 전환
- GUI 환경구축
- GUI 콘솔
- SkyGUI
- SVGA 라이브러리
- 정리
- 그래픽 모드 초기화
- 16장. 써드파티
- 루아
- json 라이브러리
- easyzlib
- 정리
- 17장. 동적 라이브러리
- DLL 로드
- SampleDll
- 정리
- 18장. Advanced Debugging
- 커널 디버깅은 원래 가능
- VirtualBox를 이용한 디버깅
- 동적 라이브러리를 활용한 디버깅
- 콜스택 출력
- 심벌엔진
- 정리
- 19장. SkyOS64
- 32비트 부트 로더
- 64비트 커널
- ELF 포맷
- 주의사항
- 정리
- 20장. Final
- 개발사항
- GUI 콘솔 실습
- SVGA 라이브러리
- 모듈 개발하기
- 남은 과제
- 부록
- PE 파일
- 덤프 테스트 모듈
- DumpTest Module
- 주소 재배치
- 동기화
- 스레드와 동기화 객체
- 멀티 스레드를 사용하는 이유
- 동기화 객체 종류
- Recursive Lock
- SkyOS에서의 동기화
- 어셈블러
- 스크래치로부터 커널 부팅
- 디스크에 부트섹터 쓰기
도서 오류 신고
정오표
정오표
수정 사항은 여기에서 내려받으세요.
[p.108]
부트 섹터(512 byte)
->
부트 섹터(512 KB)