로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

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

   
지은이 박주항   |   출판사 에이콘  |   발행일 2018년 09월 28일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 40,000원36,000원 10%
마일리지 1% 400원
발행일 2018-09-28
ISBN 1161752056 | 9791161752051
기타정보 국내서 | 600쪽
예상출고일 1~2일 이내 (근무일기준)
배송비 무료배송
   
프로그래밍언어
종합지수 0p
월간지수 20p 2 위
   
 

★ 요약 ★



운영체제를 제작할 때 친숙한 개발 환경은 개발속도를 배가시킨다. 이 책에서 설명하는 운영체제 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 기능 제거

____예외 기능 사용하지 않기

____기타 옵션

__정리





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

____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에서의 동기화

__어셈블러

__스크래치로부터 커널 부팅

____디스크에 부트섹터 쓰기

__USB에 GRUB 2.02 설치

박주항

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

저서로는 『C++로 온라인 게임 서버 구축하기: CGSF를 활용한 게임 서버 제작』(한빛미디어, 2014), 『C++로 온라인 게임 서버 구축하기: CGSF 파헤쳐 보기』(한빛미디어, 2014), 『C++ 개발자를 위한 WIN32 오픈소스 라이브러리 100』(한빛미디어, 2015), 『SDL과 C++를 이용한 크로스 플랫폼 프로그래밍』(한빛미디어, 2015)이 있고 번역서로는 『데이터베이스 첫걸음』(한빛미디어, 2016)이 있다.



등록된 서평이 없습니다.
SQL 전문가 가이드 [The Guide for SQL Professional](2013 Edition)...
한국데이터베이스진흥원
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
『C++로 나만의 운영체제 만들기 : 비주얼 스튜디오를 활용한 커널 개발』...
박주항
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
JSP 2.1 웹 프로그래밍(입문에서 완성까지)(SECOND EDITION)...
손진곤
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
 
전체평균(0)
회원평점   회원서평수 0
에이콘 출판사의 신간
『*OS Internals Vol.3: 애플 운영체제의 보안과 취약점』
조나단 레빈 저
45,000원
(10%↓+5%)
 
『OAuth 2.0 쿡북: Spring Security를 이용한 OAuth 애플리케이션 개발』
아돌포 엘로이 나시멘토 저
36,000원
(10%↓+5%)
 
GitHub를 활용한 다양한 도구 개발 : 개발 워크플로 최적화
크리스 도슨, 벤 스트라우브 저
27,000원
(10%↓+5%)
 
『파이썬으로 만드는 서버리스 애플리케이션: 24시간 사용 가능한 효율적인 웹 애플리케이션 개발』
잘렘 라지 로히트 저
22,500원
(10%↓+5%)
 
『이득우의 언리얼 C++ 게임 개발의 정석』
이득우 저
45,000원
(10%↓+5%)
 
이메일주소수집거부