스크랩

구간

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

시리즈 : 에이콘 프로그래밍 언어 시리즈 [25]

박주항 저 | 에이콘출판 | 2018년 09월

북트리

정가
$80.00
판매가
$58.32 (27%↓) 최저가 보상
적립금
$1.17 (2%P)
출고예상일
2026년 10월 08일 수령예상일 안내
북카트 담기 바로구매하기 위시리스트담기

평점 -  ·  리뷰 0

리뷰 쓰기

ISBN : 9791161752051 / 600쪽 188 x 235 (㎜)

이 상품에 궁금하신점이 있으세요? 1:1상담문의

추천inside
Adobe Flash Player 가져오기

이 분야의 베스트셀러

아래의 도서와 구매하시면 이 도서들의 적립금을 즉시적용해 드립니다.

책 소개

출판사 리뷰

★ 이 책에서 다루는 내용 ★

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

★ 이 책의 대상 독자 ★

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

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

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

저자 소개

게임업계에서 10년 넘게 일하고 있는 개발자다. 어린 시절 국산 게임이었던 PC게임 ‘폭스레인저’나 ‘그날이 오면 3’ 같은 게임에 감명을 받아 패키지 게임 개발을 꿈꿔왔으나 패키지 게임 시장이 사장된 현실을 받아들이고 온라인 게임업체에 입사하게 되었다. 클라이언트 프로그래머로 입사했지만 여러 가지 회사 사정으로 서버 프로그래머로 전향하게 되었으며 이후로 계속 온라인 게임 서버 프로그래머로 근무해 왔다. JCE(현 조이시티), LINE Plus Corporation에서 근무하였으며 현재 모바일 게임 제작회사인 ㈜노리숲에서 대표이사를 역임하고 있다. 저서로는 온라인 서버 프로그래밍 관련 서적인 『C++로 온라인 게임 서버 구축하기: CGSF를 활용한 게임 서버 제작』 『C++로 온라인 게임 서버 구축하기: CGSF 파헤쳐 보기』 『SDL과 C++를 이용한 크로스 플랫폼 프로그래밍』(이상 한빛미디어, 2015), 『C++ 개발자를 위한 WIN32 오픈소스 라이브러리 100』(한빛미디어, 2014)이 있다.

머리말

이 책을 집필하기 전에 몇 권의 책을 집필했지만 이번만큼 힘든 적은 없었다. 어떻게 하면 독자들에게 내용을 잘 전달할 수 있을지 고민하면서 집필했으나 내용이 마음에 들지 않아 수없이 좌절했고, 프로그램에 버그가 발생하면 원인을 찾을 수 없어 며칠 밤낮을 새고 식음을 전폐하며 문제 해결에 몰두했었다. 어떤 때는 무엇을 하고 있는지 의구심이 들 정도로 나아가는 방향에 회의감을 느꼈으나, 어느 순간 해결하지 못했던 문제들이 하나씩 풀리고 작업이 댐 무너지듯 순조롭게 나아가기 시작하자 자신감이 생겼으며 의도한 목표에 도달할 수 있다는 확신을 가졌다. 최종 탈고를 하면서 여전히 뭔가 부족하다는 생각은 가지고 있으나 추후 독자들에게 피드백을 받고 개선해나가면 더 완벽한 운영체제 서적으로 발돋움할 것이라 믿어 의심치 않는다.

 

목차

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 설치

top