C++로 나만의 운영체제 만들기 (비주얼 스튜디오를 활용한 커널 개발)

C++로 나만의 운영체제 만들기 (비주얼 스튜디오를 활용한 커널 개발)

$42.65
Description
운영체제를 제작할 때 친숙한 개발 환경은 개발속도를 배가시킨다. 이 책에서 설명하는 운영체제 SkyOS는 윈도우 운영체제 환경에서 비주얼 스튜디오를 통해 개발할 수 있다. 또한 C++를 개발 언어로 채택했기 때문에 객체지향 프로그래밍이 가능하며, 표준 C 런타임 라이브러리를 활용함으로써 외부 라이브러리의 손쉬운 포팅 작업을 가능하게 했다. 궁극적으로는 WIN32 에뮬레이션을 통해 WIN32/SkyOS 두 플랫폼에서 동작하는 모듈의 작성이 가능하므로, 개발테스트는 WIN32 환경에서 진행하고 배포는 실기로 하는 구조를 정립했다. 이를 통해 개발자는 자신만의 운영체제를 손쉽게 제작할 수 있을 것이다.
저자

박주항

클라이언트프로그래머로게임회사에입사해회사사정때문에서버관련업무를맡게되면서여러게임의온라인플랫폼을구축하고제작해온개발자다.프로그래밍언어로C++를주언어로사용했지만모바일플랫폼관련회사에서일하면서자바언어를다루게됐고,C++언어와는다른자바만의매력에빠져자바를보조언어로사용하고있다.프로그래밍자체를좋아해운영체제개발에서부터파이썬,루아같은스크립트언어활용까지프로그래밍의모든영역에관심을두고있다.유용한오픈소스를자신의프로젝트에활용하는것또한좋아해서시간이날때마다여러오픈소스공유사이트에서소스코드를내려받아분석하는것을취미로삼고있다.또한어드벤처게임을광적으로좋아해서<로라보우2?태양신의단도>,<스페이스퀘스트4>등시에라사게임의한글패치를제작하기도했다.현재는취미로운영체제를개발하고있으며PC로개발된게임소스를안드로이드로포팅하는작업에푹빠져있다.
저서로는『C++로온라인게임서버구축하기:CGSF를활용한게임서버제작』(한빛미디어,2014),『C++로온라인게임서버구축하기:CGSF파헤쳐보기』(한빛미디어,2014),『C++개발자를위한WIN32오픈소스라이브러리100』(한빛미디어,2015),『SDL과C++를이용한크로스플랫폼프로그래밍』(한빛미디어,2015)이있고번역서로는『데이터베이스첫걸음』(한빛미디어,2016)이있다.\

목차

1장.SkyOS프로젝트

예비지식
SkyOS콘셉트
준비물
비주얼스튜디오2017
WinImage
QEMU
SkyOS소스코드
프로젝트빌드
프로젝트구성
프로젝트빌드
커널의실행
정리

2장.운영체제이론

프로세스
스레드
스택
호출규약
네임맹글링
정리

3장.커널로딩

GRUB
부팅
설치
실행
GRUB이전달하는파라미터
커널엔트리찾기
제약사항
글로벌객체의초기화
환경설정
RTTI기능제거
예외기능사용하지않기
기타옵션
정리

4장.하드웨어초기화

CPU
메모리레이아웃
GDT
IDT
정리
PIC
PIT
실습
FPU
인터럽트핸들러
예외인터럽트의종류
실습
정리

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
ProcessRemover
멀티태스킹
태스크스위칭세부구현
정리
실습

14장.애플리케이션

응용프로그램의시스템API호출원리
EntryPoint함수구현
SkyOS시스템API호출
유저API
커널API
시스템API의추가
응용프로그램
HelloWorld
Sort
Math
정리

15장.그래픽시스템

그래픽모드초기화
RME
GRUB을활용한GUI전환
GUI환경구축
GUI콘솔
SkyGUI
SVGA라이브러리
정리

16장.써드파티
루아
json라이브러리
easyzlib
정리

17장.동적라이브러리

DLL로드
SampleDll
정리

18장.AdvancedDebugging

커널디버깅은원래가능
VirtualBox를이용한디버깅
동적라이브러리를활용한디버깅
콜스택출력
심벌엔진
정리

19장.SkyOS64

32비트부트로더
64비트커널
ELF포맷
주의사항
정리

20장.Final

개발사항
GUI콘솔실습
SVGA라이브러리
모듈개발하기
남은과제

부록

PE파일
덤프테스트모듈
DumpTestModule
주소재배치
동기화
스레드와동기화객체
멀티스레드를사용하는이유
동기화객체종류
RecursiveLock
SkyOS에서의동기화
어셈블러
스크래치로부터커널부팅
디스크에부트섹터쓰기
USB에GRUB2.02설치

출판사 서평

★이책에서다루는내용★

■GRUB을활용한커널부팅프로세스간소화
■비주얼스튜디오2017을사용한커널빌드
■C++커널개발방법설명과C++언어에대한심화주제학습
■운영체제메모리관리시스템이해
■버그에대처할수있는디버깅능력배양
■WIN32시스템구조를커널에반영
■다양한GUI시스템샘플예제제공
■WIN32와SkyOS두플랫폼에서모두동작하는모듈개발방법설명

★이책의대상독자★

프로그래머로서프로그래밍의꽃이자로우레벨개발의근간을이루는운영체제를개발하고싶은사람을대상으로한다.또한현대운영체제의내부구조를더자세히이해하고싶거나,운영체제를제작해보고싶은데초기진입에실패한프로그래머를대상으로한다.따라서다음과같은사항에해당된다면대상독자라고할수있겠다.

■자신만의운영체제를개발해보고싶은일반개발자
■운영체제론을배우고있는학생
■현대운영체제의기본개념을이해하고싶은프로그래머
■이론보다는구체적으로실행되는결과물을원하는개발자
■산이있으면정상에오르고싶은자
■바닥부터개발을원하는프로그래머
■상업적으로운영체제를개발하려는프로그래머

또한SkyOS는C++로제작됐기때문에C++관련필요한기능을직접구현했다.예를들면new나delete연산자등이그것이다.C++라는언어자체에관심이있는개발자라면이책이지적욕구를만족시켜줄수있을것이다.