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 에이콘 윈도우 시스템 프로그래밍 시리즈 |
Holdings Information
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 |
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 |
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 |
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 |
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 |
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 |
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: :

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)이 있다.

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