HOME > Detail View

Detail View

Yuza OS. 1, 소프트웨어편 : WIN32 플랫폼에서 C++로 운영체제 제작하기

Material type
단행본
Personal Author
박주항
Title Statement
Yuza OS : WIN32 플랫폼에서 C++로 운영체제 제작하기. 1, 소프트웨어편 / 박주항 지음
Publication, Distribution, etc
서울 :   에이콘,   2021  
Physical Medium
719 p. : 삽화, 도표 ; 24 cm
Series Statement
에이콘 윈도우 시스템 프로그래밍 시리즈
기타표제
Developing Yuza OS
ISBN
9791161755366
General Note
감수: 박소남  
색인수록  
000 00000cam c2200205 c 4500
001 000046103418
005 20221213120103
007 ta
008 220104s2021 ulkad 001c kor
020 ▼a 9791161755366 ▼g 93000
035 ▼a (KERIS)BIB000015897518
040 ▼a 211046 ▼c 211046 ▼d 211009
082 0 4 ▼a 005.43 ▼2 23
085 ▼a 005.43 ▼2 DDCK
090 ▼a 005.43 ▼b 2021 ▼c 1
100 1 ▼a 박주항 ▼0 AUTH(211009)125819
245 1 0 ▼a Yuza OS : ▼b WIN32 플랫폼에서 C++로 운영체제 제작하기. ▼n 1, ▼p 소프트웨어편 / ▼d 박주항 지음
246 1 3 ▼a Developing Yuza OS
260 ▼a 서울 : ▼b 에이콘, ▼c 2021
300 ▼a 719 p. : ▼b 삽화, 도표 ; ▼c 24 cm
490 1 0 ▼a 에이콘 윈도우 시스템 프로그래밍 시리즈
500 ▼a 감수: 박소남
500 ▼a 색인수록
830 0 ▼a 에이콘 윈도우 시스템 프로그래밍 시리즈

No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Main Library/Monographs(3F)/ Call Number 005.43 2021 1 Accession No. 511057104 Availability Available Due Date Make a Reservation Service B M
No. 2 Location Sejong Academic Information Center/Science & Technology/ Call Number 005.43 2021 1 Accession No. 151357790 Availability Available Due Date Make a Reservation Service B M
No. 3 Location Sejong Academic Information Center/Science & Technology/ Call Number 005.43 2021 1 Accession No. 151362697 Availability Available Due Date Make a Reservation Service B M
No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Main Library/Monographs(3F)/ Call Number 005.43 2021 1 Accession No. 511057104 Availability Available Due Date Make a Reservation Service B M
No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Sejong Academic Information Center/Science & Technology/ Call Number 005.43 2021 1 Accession No. 151357790 Availability Available Due Date Make a Reservation Service B M
No. 2 Location Sejong Academic Information Center/Science & Technology/ Call Number 005.43 2021 1 Accession No. 151362697 Availability Available Due Date Make a Reservation Service B M

Contents information

Book Introduction

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

2022년 대한민국학술원 우수학술도서 선정도서

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

★ 이 책에서 다루는 내용 ★

■ 리눅스 기반이 아닌 비주얼 스튜디오 2019 및 상위 버전으로 커널 개발
■ YUZA OS라는 구체적인 결과물로 운영체제 개념 설명
■ 듀얼 시스템을 통한 최강의 디버깅 시스템 지원
■ 표준 프로그래밍 인터페이스를 통한 다양한 앱 및 라이브러리의 포팅 방법
■ 추상화 언어의 마지노선인 C++ 11로 운영체제 개발
■ 자신만의 응용 앱을 손쉽게 구현
■ 윈도우 시스템 프로그래밍 노하우를 운영체제 개발에 활용
■ 스크립트 언어를 활용한 운영체제 개발 방법론
■ SDL 라이브러리를 활용한 게임 제작 방법

★ 이 책의 대상 독자 ★

■ OS를 직접 개발해 보고 싶은 일반 개발자
■ 운영체체론을 공부하는 학생
■ 이론보다 구체적인 결과물로 학습을 원하는 개발자
■ 심화된 윈도우 시스템 프로그래밍을 공부하려는 프로그래머
■ C++ 언어의 내부 구현을 이해하고 싶은 분
■ 직접 만든 OS에 자신만의 응용 앱을 손쉽게 개발하고 싶은 분


Information Provided By: : Aladin

Author Introduction

박주항(지은이)

서강대학교에서 컴퓨터공학과 물리학을 전공했으며, JCE(현 조이시티) 온라인 게임 서버 프로그래머, 라인의 백엔드 플랫폼 프로그래머, 그리고 모바일 게임 개발 회사 대표를 거쳐 현재 프리랜서로 활동 중이다. 안 되는 걸 되게 하는 것에 관심이 많으며, 고전 어드벤처 게임을 좋아해 번역되지 않은 다수의 명작 어드벤처 게임의 한국어화 패치를 제작했다. 주요 저서로는 한빛미디어에서 출간한 《CGSF를 활용한 게임 서버 제작》(2014), 《CGSF 파헤쳐 보기》(2014), 《C++ 개발자를 위한 WIN32 오픈소스 라이브러리 100》(2015), 《SDL과 C++를 이용한 크로스 플랫폼 프로그래밍》(2015), 에이콘에서 출간한 《C++로 나만의 운영체제 만들기》(2018), 《YUZA OS Vol.1 : 소프트웨어편》(2021) 등이 있다. 번역서로는 한빛미디어에서 출간한 《데이터베이스 첫걸음》(2016)과 에이콘에서 출간한 《Game Programming in C++》(2019), 《0부터 시작하는 OS 자작 입문》(2022)이 있다.

Information Provided By: : Aladin

Table of Contents

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 - 하드웨어 편

New Arrivals Books in Related Fields

Muthu, Subramanian Senthilkannan (2022)
Musib, Somnath (2023)