서브메뉴

본문

YUZA OS Vol.1 : 소프트웨어편 (WIN32 플랫폼에서 C++로 운영체제 제작하기, 2022년 대한민국학술원 우수학술도서 선정도서)
YUZA OS Vol.1 : 소프트웨어편 (WIN32 플랫폼에서 C++로 운영체제 제작하기, 2022년 대한민국학술원 우수학술도서 선정도서)
저자 : 박주항
출판사 : 에이콘출판
출판년 : 2021
ISBN : 9791161755366

책소개


『C++로 나만의 운영체제 만들기』의 후속편인 이 책은 저자가 직접 제작한 YUZA OS라는 OS를 파헤쳐 보면서 운영체제의 구조와 원리를 설명한다. 리눅스 같은 기존의 운영체제 개발환경에서 벗어나 윈도우 운영체제에서 OS를 개발하며 비주얼 스튜디오 2019와 C++로 운영체제 개발 방법을 설명하는 것이 특징이다. 아울러 저자가 게임 개발자 출신답게 다양한 게임을 자신만의 OS에서 쉽게 제작할 수 있는 방법을 설명하는 것에 심혈을 기울였다. 컴퓨터를 제어하는 모든 소스코드를 장악하고 싶은 개발자에게 큰 도움이 될 책이다.

목차


0장 들어가며
1 YUZA OS
2 개발 전략
2.1 개발 규모
2.2 듀얼 플랫폼
2.3 차별화
2.4 행사비용 최소화
2.5 조건 최소화
3 정리
4 대상독자
5 책의 구성

1장 개발 환경 갖추기
1 비주얼 스튜디오 2019
2 VirtualBox
3 ImDisk
4 DLL Export Viewer
5 CMAKE-GUI
6 QEMU
7 기타
7.1 PE Explorer
7.2 StarUML
7.3 HxD
7.4 PEView
7.5 WSL / WSL2
7.6 MSYS2
7.7 DJGPP
7.8 TortoiseSVN
7.9 GIT 클라이언트
8 정리

2장. 비주얼 스튜디오
1 단축키
2 디버깅
3 프로젝트 환경설정
3.1 일반
3.2 디버깅
3.3 C/C++
3.4 링커
3.5 빌드 이벤트
3.6 사용자 지정 빌드 단계.
4 기타
4.1 프로젝트 구성 관리자
4.2 빌드 종속성
5 정리

3장. 운영체제 이론
1 운영체제 유형
1.1 모놀리식 커널
1.2 마이크로 커널
1.3 하이브리드 커널
1.4 엑소 커널
1.5 YUZA OS
1.6 정리
2 운영체제 개발 요소
2.1 아키텍처
2.2 디바이스
2.3 파일 시스템
2.4 GUI 시스템
2.5 커널 서비스
2.6 동기화 인터페이스
2.7 가상 주소 시스템
2.8 프로그래밍 인터페이스
2.9 정리
3 결론

4장. YUZA OS 시작하기
1 환경 구축
2 Hello World!!
__실습 1 - DLL 디버깅 모드
__실습 2 - DLL 디버깅 미지원 모드
__실습 3 - 실기(가상 에뮬레이터)
3 응용앱 개발 프로젝트 설정
4 실습
4.1 sample 프로젝트
4.2 sum 프로젝트
5 결론

5장. 콘솔 앱 살펴보기
1 테스트 앱
1.1 파일 읽기
1.2 압축
1.3 로그
1.4 시간 함수
1.5 수학 함수
1.6 정규표현식
2 응용앱
2.1 grep
2.2 sqlite3
2.3 루아 콘솔
2.4 fonttosvg
3 정리
쉬어가기 1 - 플로피 버드

6장. 듀얼 시스템
1 커널 핵심 컴포넌트
2 부팅 시퀀스
2.1 실기
3 프로젝트 구성
3.1 링커 - 고급 항목
3.2 C/C++ - 전처리기
3.3 링커 - 라이브러리
4 파일 시스템
5 디버깅
6 기타
6.1 메모리 할당
6.2 키보드/마우스 입력
6.3 디스플레이
6.4 스레드 제어 및 스케줄링
6.5 특권 어셈블리 명령어
6.6 가상 주소 시스템.
7 정리

7장. 커널 초기화
1 커널 엔트리
2 커널 코어
2.1 커널 초기화
2.2 인터럽트 벡터 초기화
2.3 PIT 시작
2.4 커널 필수 모듈 로드
2.5 커널 가상 주소 재배치
2.6 시스템 콜 등록
2.7 저장장치 초기화
2.8 디버깅 시스템 초기화
2.9 커널 메인 코드 시작
3 win32stub.dll
3.1 타이머 이벤트
3.2 키보드/마우스 이벤트
4 정리

8장. DLL 로더 시스템
1 기본 로더 이론
2 DLL 로딩 방식
3 DLL 매핑
4 커스텀 DLL 로더
5 과제
5.1 심벌 로드
6 정리

9장. 시스템 콜
1 시스템 콜 설계
2 시스템 콜의 구조
3 시스템 콜의 추가
4 결론

10장. 독립형 OS 제작하기
1 GUI 콘솔
2 루아 운영체제
2.1 루아 스크립트
2.2 루아 콘솔
2.3 루아팅커
2.4 루아 커널
__초기화
__메인 엔트리 - lua_main
__루아 커널 스크립트
2.5 루아 확장 모듈
__루아 스크립트를 통한 모듈 등록
__DLL 모듈을 통한 모듈 등록
__몇 가지 확장 모듈
3 정리
쉬어가기 2 - YUZA OS 콘셉트

11장. 표준 프로그래밍 인터페이스
1 프로그래밍 인터페이스 구축 전략
2 표준 C 라이브러리(ANSI)
2.1 입출력 함수
2.2 문자열 함수
2.3 수학 함수
2.4 시간 및 날짜 함수
2.5 결론
3 POSIX API
3.1 파일 조작
3.2 디렉터리 조작
3.3 pthreads
3.4 결론
4 WIN32 API
5 내장 함수
6 골치 아픈 항목
7 정리
8 고급
8.1 musl

12장. C++ & STL
1 STL
2 개인 제작 STL
3 SGI STL
4 EASTL
5 테스트
6 정리

13장. 데스크톱 시스템
1 기본 데스크톱
1.1 구동하기
1.2 샘플 앱
1.3 GUI 콘솔 앱
1.4 데스크톱 구조
2 GUI 위젯
3 Advanced
4 정리

14장. SDL 살펴보기
1 SDL
1.1 게임
1.2 에뮬레이터
1.3 GUI
1.4 동영상
1.5 정리
2 SDL 시스템
2.1 SDL_mixer
2.2 SDL_image
2.3 SDL_gfx
2.4 SDL_ttf
2.5 정리
3 SDL 프로그래밍
3.1 튜토리얼
__flip
__bmp
__loadpng
__TTF
__타이머
3.2 게임
__소코반
__테트리스
__팩맨
__SDLBird
__로드파이터
__오픈 타이리언
3.3 GUI
__TinyGUI
__GuiChan
__Cairo
__SDL_GUI
__GWork
3.4 LUA SDL
3.5 포팅해 보기
4 SDL 통합 시스템
5 확장 모듈
6 정리
__레퍼런스

15장. SDL 코어편
1 안드로이드
1.1 자바와 C++
1.2 액티비티 & SDL 연동
2 WIN32
3 YUZA OS 포트
3.1 프로젝트 구성
3.2 구현
4 정리
쉬어가기 3 - 알레그로 엔진

16장. 3D 프로그래밍 인터페이스
1 3D API
2 OpenGL
3 OpenGL 과제
4 소프트웨어 렌더러
5 정리

17장. 오픈소스 라이브러리
1 리스트
1.1 압축
1.2 이미지
1.3 폰트
1.4 직렬화
1.5 파싱
1.6 멀티미디어
1.7 마크업 언어
1.8 로컬라이제이션
1.9 기타
2 정리

18장. 포팅하기
1 라이브러리 고르기
2 포팅 실전
2.1 성공 사례 - ScummVM
2.2 실패 사례 - wxWidgets
3 정리

19장. 실전 응용앱편
1 게임
1.1 SDL 봄버맨
1.2 페르시아 왕자
1.3 울펜스타인 3D
1.4 둠
1.5 지뢰 게임
2 에뮬레이터
2.1 VBA
2.2 fmsx
2.3 GNUBoy
2.4 DosBox
3 GUI
3.1 pdcurses
3.2 kiss
3.3 ImGui
3.4 zgv
4 기타
4.1 Box2D.
4.2 편집기
4.3 Load81 프로젝트
4.4 장기
5 정리

후기
YUZA OS Vol.1 - 소프트웨어편의 의의
독자분들의 다음 스텝
YUZA OS Vol.2 - 하드웨어 편

QuickMenu