이미지 검색을 사용해 보세요
검색창 이전화면 이전화면
최근 검색어
인기 검색어

소득공제
64비트 멀티코어 OS 원리와 구조 2
OS 개발 60일 프로젝트
한승훈
한빛미디어 2011.07.04.
가격
55,000
10 49,500
YES포인트?
2,750원 (5%)
5만원 이상 구매 시 2천원 추가 적립
결제혜택
카드/간편결제 혜택을 확인하세요

이미 소장하고 있다면 판매해 보세요.

  •  해외배송 가능?
  •  문화비소득공제 가능

이 분야의 이벤트

이 상품의 시리즈 1

이 상품의 시리즈 알림신청
뷰타입 변경

IT EXPERT

상세 이미지

책소개

목차

33장 태스크를 분산시켜 멀티코어 프로세서를 100% 활용하자
33.1 태스크 분산 처리 알고리즘과 자료구조 설계
33.1.1 가장 기본적인 형태, 공용 스케줄러 방식
33.1.2 더 진보된 형태, 개별 스케줄러 방식
33.2 태스크 분산 처리를 위한 자료구조 설계와 구현
33.2.1 스케줄러 자료구조, 태스크 풀 자료구조, 태스크 자료구조 수정
33.2.2 태스크 풀 초기화/할당/해제 함수 수정
33.2.3 스케줄러 초기화 함수 수정
33.2.4 태스크 생성 함수 수정
33.2.5 부하 분산을 고려한 태스크 생성 함수 추가
33.2.6 스케줄러 함수 수정
33.2.7 친화도 설정 함수 추가와 우선순위 및 종료 관련 함수 수정
33.2.8 태스크 부하 분산 설정 함수 추가
33.2.9 뮤텍스 함수와 인터럽트 핸들러 코드 수정
33.2.10 C 언어 커널 엔트리 포인트 함수와 기타 태스크 생성 코드 수정
33.3 태스크 분산 처리 기능 통합과 빌드
33.3.1 태스크 파일 수정
33.3.2 인터럽트 핸들러 파일과 동기화 파일 수정
33.3.3 C 언어 커널 엔트리 포인트 파일 수정
33.3.4 콘솔 셸 파일 수정
33.3.5 빌드와 테스트

7부 GUI 시스템과 GUI
34장 텍스트 모드에서 그래픽 모드로 전환하자
34.1 그래픽 컨트롤러와 VBE의 관계
34.1.1 그래픽 컨트롤러와 VESA
34.1.2 VBE와 선형 프레임 버퍼
34.2 VBE를 통한 선형 프레임 버퍼 모드 전환
34.2.1 VBE와 BIOS 인터럽트 서비스
34.2.2 선형 프레임 버퍼를 지원하는 그래픽 모드로 전환
34.2.3 그래픽 모드로 전환
34.2.4 화면에 색깔 채우기
34.3 그래픽 모드 전환 기능 통합과 빌드
34.3.1 VBE 파일 추가
34.3.2 부트 로더 파일 수정
34.3.3 C 언어 커널 엔트리 포인트 파일 수정
34.3.4 콘솔 셸 파일 수정
34.3.5 빌드와 테스트

35장 2D 그래픽 라이브러리를 만들자
35.1 점, 선, 사각형, 원 그리기
35.1.1 가장 기본 단위, 점 그리기
35.1.2 다른 도형의 기초가 되는 선 그리기
35.1.3 엣지의 대명사, 사각형 그리기
35.1.4 곡선의 미학, 원 그리기
35.2 문자 출력과 폰트
35.2.1 폰트와 비트맵 폰트 형식
35.2.2 폰트 메이커 프로그램과 비트맵 폰트 생성 방법
35.2.3 폰트 출력
35.3 2D 그래픽 라이브러리 통합과 빌드
35.3.1 2D 그래픽 라이브러리 파일 추가
35.3.2 영문 폰트 파일 추가
35.3.3 유틸리티 파일 수정
35.3.4 C 언어 커널 엔트리 포인트 파일 수정
35.3.5 빌드와 테스트

36장 클리핑 기능을 추가해 화면에 표시되는 영역만 그리자
36.1 클리핑 알고리즘 설계와 구현
36.1.1 비디오 메모리와 클리핑
36.1.2 점 클리핑 처리
36.1.3 직선 클리핑 처리
36.1.4 사각형 클리핑 처리와 원 클리핑 처리
36.1.5 문자 클리핑 처리
36.2 클리핑 처리 기능 통합과 빌드
36.2.1 2D 그래픽 라이브러리 파일 수정
36.2.2 C 언어 커널 엔트리 포인트 파일 수정
36.2.3 빌드와 테스트

37장 마우스 디바이스 드라이버를 추가하자
37.1 키보드 컨트롤러와 마우스의 관계
37.1.1 다시 보는 키보드 컨트롤러
37.2 마우스 제어 기능 구현
37.2.1 마우스 활성화
37.2.2 마우스 인터럽트 활성화와 마우스 인터럽트 핸들러 등록
37.2.3 마우스 데이터와 마우스 큐
37.2.4 마우스 핸들러 추가와 키보드 관련 함수 수정
37.2.5 마우스 커서 출력과 마우스 커서 이동
37.3 마우스 디바이스 드라이버 통합과 빌드
37.3.1 마우스 디바이스 드라이버 파일 추가
37.3.2 키보드 디바이스 드라이버 파일 수정
37.3.3 인터럽트 핸들러 파일 수정
37.3.4 ISR 파일 수정
37.3.5 C 언어 커널 엔트리 포인트 파일 수정
37.3.6 빌드와 테스트

38장 GUI 시스템을 설계하고 윈도우 기반 함수를 구현하자
38.1 GUI 시스템의 주요 기능과 전체 설계
38.1.1 GUI 시스템의 주요 기능
38.1.2 GUI 시스템 설계
38.2 GUI 시스템의 자료구조 설계와 구현
38.2.1 윈도우 풀 설계와 구현
38.2.2 윈도우와 윈도우 매니저의 설계 및 구현
38.2.3 윈도우 매니저 태스크 구현
38.3 GUI 시스템 API 통합과 빌드
38.3.1 윈도우 파일 추가
38.3.2 윈도우 매니저 태스크 파일 추가
38.3.3 C 언어 커널 엔트리 포인트 파일 수정
38.3.4 빌드와 테스트

39장 이벤트 큐를 도입하여 윈도우 매니저 태스크와 기반 함수를 업그레이드하자
39.1 윈도우 이벤트 큐 설계와 구현
39.1.1 이벤트 큐 설계와 자료구조 정의
39.1.2 이벤트 큐 구현
39.2 윈도우 매니저 태스크 설계 구현과 윈도우 API의 추가
39.2.1 윈도우 매니저 태스크의 주요 기능
39.2.2 마우스 입력과 마우스 이벤트 처리
39.2.3 윈도우 이벤트 처리
39.2.4 키 이벤트 처리와 화면 업데이트 처리
39.2.5 윈도우 매니저 태스크 구현
39.3 윈도우 매니저 태스크와 추가된 함수의 통합과 빌드
39.3.1 윈도우 매니저 태스크 파일 수정
39.3.2 윈도우 파일 수정
39.3.3 빌드와 테스트

40장 GUI 태스크 (1) - 기본 GUI 태스크와 Hello World GUI 태스크
40.1 GUI 태스크의 기본 구조와 Hello World GUI 태스크 구현
40.1.1 기본 GUI 태스크의 구조와 구현
40.1.2 Hello World GUI 태스크 구현 - 이벤트 정보 영역 추가
40.1.3 Hello World GUI 태스크 - 이벤트 전송 버튼과 유저 이벤트 전송 기능 추가
40.2 GUI 태스크 코드 통합과 빌드
40.2.1 GUI 태스크 파일 추가
40.2.2 윈도우 매니저 태스크 파일 수정
40.2.3 유틸리티 파일 수정
40.2.4 빌드와 테스트

41장 화면 업데이트 알고리즘을 업그레이드해 속도를 높이자
41.1 화면 업데이트 알고리즘 재설계
41.1.1 Z 순서의 가장 위에서 아래로 그리는 알고리즘의 문제점
41.1.2 새로운 화면 업데이트 알고리즘 설계
41.1.3 비트맵을 이용한 업데이트 영역 관리
41.2 GUI 시스템 업그레이드
41.2.1 윈도우 리스트의 Z 순서와 관련된 함수 수정
41.2.2 화면 업데이트 비트맵 관련 함수 구현
41.2.3 업데이트 완료 확인 함수 구현
41.2.4 화면 업데이트 관련 함수 수정
41.2.5 윈도우 매니저 태스크 업그레이드
41.3 새로운 화면 업데이트 알고리즘의 통합과 빌드
41.3.1 윈도우 파일 수정
41.3.2 윈도우 매니저 태스크 파일 수정
41.3.3 빌드와 테스트

42장 GUI 태스크 (2) - 애플리케이션 패널 태스크
42.1 애플리케이션 패널 설계와 윈도우 구현
42.1.1 애플리케이션 패널을 위한 자료구조 설계
42.1.2 애플리케이션 패널 윈도우 구현
42.1.3 애플리케이션 패널 윈도우의 이벤트 처리 함수 구현
42.1.4 애플리케이션 패널 태스크 구현
42.2 애플리케이션 리스트 윈도우 설계와 구현
42.2.1 애플리케이션 리스트 윈도우를 위한 자료구조 설계
42.2.2 애플리케이션 리스트 윈도우 구현
42.2.3 애플리케이션 리스트 윈도우의 이벤트 처리 함수 구현
42.2.4 애플리케이션 패널 태스크와 윈도우 매니저 태스크 수정
42.3 애플리케이션 패널 통합과 빌드
42.3.1 애플리케이션 패널 태스크 파일 추가
42.3.2 윈도우 매니저 태스크 파일 수정
42.3.3 빌드와 테스트

43장 GUI 태스크 (3) - 시스템 모니터 태스크
43.1 프로세서 정보 영역 설계와 구현
43.1.1 프로세서 정보 영역 설계와 프로세서 정보 표시 함수 구현
43.1.2 시스템 모니터 태스크 설계와 구현
43.2 메모리 정보 영역 설계와 구현
43.2.1 메모리 정보 영역 설계와 메모리 정보 표시 함수 구현
43.2.2 시스템 모니터 태스크에 메모리 정보 표시 기능 추가
43.3 시스템 모니터 통합과 빌드
43.3.1 GUI 태스크 파일 수정
43.3.2 애플리케이션 패널 태스크 파일 수정
43.3.3 빌드와 테스트

44장 GUI 태스크 (4) - GUI 콘솔 셸 태스크
44.1 콘솔 출력 함수 재설계와 업그레이드
44.1.1 콘솔 출력 처리 방안 설계
44.1.2 콘솔 초기화 함수와 콘솔 출력 함수 업그레이드
44.1.3 GUI 콘솔 셸 태스크와 GUI 콘솔 윈도우 구현
44.2 콘솔 입력 함수 재설계와 업그레이드
44.2.1 콘솔 입력 처리 방안과 콘솔 커맨드 처리 방안 설계
44.2.2 업그레이드된 콘솔 초기화 함수 수정
44.2.3 콘솔 입력 함수 업그레이드
44.2.4 GUI 콘솔 셸 태스크 수정과 셸 태스크 수정
44.3 GUI 콘솔 셸 통합과 빌드
44.3.1 GUI 태스크 파일 수정
44.3.2 콘솔 파일 수정
44.3.3 콘솔 셸 파일 수정
44.3.4 애플리케이션 패널 태스크 파일 수정
44.3.5 빌드와 테스트

45장 GUI 태스크 (5) - 이미지 뷰어 태스크
45.1 JPEG 이미지와 JPEG 디코더 모듈
45.1.1 JPEG과 JPEG 이미지 변환 과정
45.1.2 JPEG 디코더 모듈 소개
45.2 이미지 뷰어 태스크 구현
45.2.1 파일 이름 입력 윈도우와 이미지 뷰어 태스크 구현
45.2.2 이미지 출력 윈도우 구현
45.2.3 배경 화면 윈도우에 배경 이미지를 출력
45.3 이미지 뷰어 통합과 빌드
45.3.1 JPEG 디코더 모듈 파일 추가
45.3.2 GUI 태스크 파일 수정
45.3.3 애플리케이션 패널 태스크 파일 수정
45.3.4 윈도우 파일 수정
45.3.5 배경 이미지 파일 추가
45.3.6 빌드와 테스트

46장 윈도우 크기 변경 기능을 추가하자
46.1 GUI 시스템 업그레이드
46.1.1 윈도우 크기 변경 함수 설계와 구현
46.1.2 윈도우 제목 표시줄에 윈도우 크기 변경 버튼 추가
46.1.3 윈도우 매니저 태스크에 크기 변경 표식 처리 기능 추가
46.1.4 윈도우 자료구조에 윈도우 크기 변경 기능 추가
46.2 이미지 뷰어 태스크 업그레이드
46.2.1 이미지 뷰어 태스크에 윈도우 크기 변경 기능 추가
46.3 윈도우 크기 변경 기능 통합과 빌드
46.3.1 윈도우 파일 수정
46.3.2 윈도우 매니저 태스크 파일 수정
46.3.3 GUI 태스크 파일 수정
46.3.4 빌드와 테스트


8부 유저 레벨 응용프로그램과 OS 확장
47장 커널 영역과 유저 영역을 분리해 유저 레벨 응용프로그램에 대비하자
47.1 커널 레벨과 유저 레벨 분리
47.1.1 커널 레벨과 유저 레벨 분리를 위한 메모리 레이아웃 정리
47.1.2 유저 영역을 위한 유저 레벨 세그먼트 디스크립터 생성
47.1.3 세그먼테이션 기법과 메모리 영역 보호
47.1.4 커널 영역 보호를 위한 페이지 엔트리의 속성 변경
47.2 유저 레벨 태스크 생성과 예외 처리
47.2.1 유저 레벨 태스크 생성 기능 추가
47.2.2 태스크 예외 처리 정책 수정
47.3 커널 영역과 유저 영역 분리 코드의 통합과 빌드
47.3.1 페이지 파일 수정
47.3.2 디스크립터 파일 수정
47.3.3 동적 메모리 관리 파일과 인터럽트 핸들러 파일 수정
47.3.4 태스크 파일 수정
47.3.5 빌드와 테스트

48장 시스템 콜과 유저 레벨 라이브러리를 구현하자
48.1 시스템 콜과 기반 함수 구현
48.1.1 시스템 콜 구현을 위한 최선의 선택, SYSCALL과 SYSRET
48.1.2 시스템 콜 기반 설계와 기반 함수 구현
48.2 유저 레벨 라이브러리와 태스크 생성
48.2.1 유저 레벨 시스템 콜 함수와 커널 기능 호출 함수 구현
48.2.2 유저 레벨 라이브러리 구현
48.2.3 시스템 콜 테스트용 유저 레벨 태스크 구현과 유휴 태스크 코드 수정
48.3 시스템 콜 코드 통합과 빌드
48.3.1 시스템 콜 리스트 파일 추가
48.3.2 시스템 콜 파일과 시스템 콜 엔트리 포인트 파일 추가
48.3.3 모드 전환 파일 수정
48.3.4 어셈블리어 유틸리티 파일 수정
48.3.5 태스크 파일과 C 언어 커널 엔트리 포인트 파일 수정
48.3.6 콘솔 셸 파일 수정
48.3.7 시스템 콜 파일, 시스템 콜 라이브러리 파일, 시스템 콜 리스트 파일 추가
48.3.8 타입 정의 파일과 유저 라이브러리 파일 추가
48.3.9 빌드와 테스트

49장 유저 레벨 응용프로그램 (1) - Hello World
49.1 응용프로그램 개발을 위한 라이브러리 파일 생성
49.1.1 라이브러리 파일의 종류와 역할
49.1.2 AR 프로그램의 기능과 MINT64 OS 라이브러리 생성
49.2 Hello World GUI 태스크를 응용프로그램으로 변환
49.2.1 응용프로그램 엔트리 포인트 구현
49.2.2 응용프로그램 메인 함수 구현과 Hello World GUI 태스크 변환
49.2.3 응용프로그램 빌드를 위한 컴파일러, 링커, objcopy 프로그램 옵션 조정
49.3 응용프로그램 빌드 환경 통합과 테스트
49.3.1 시스템 콜 파일 수정과 응용프로그램 라이브러리 헤더 파일 파일 추가
49.3.2 라이브러리 파일 빌드용 makefile 추가
49.3.3 Hello World 응용프로그램 파일 추가
49.3.4 Hello World 응용프로그램 빌드용 makefile과 링크 스크립트 파일 추가
49.3.5 최상위 makefile 수정과 애플리케이션 디렉터리에 makefile 추가
49.3.6 응용프로그램 빌드 테스트

50장 유저 레벨 응용프로그램을 실행하자
50.1 ELF 파일 포맷의 이해
50.1.1 ELF64 파일의 구조와 ELF 헤더 자료구조
50.1.2 섹션 헤더 테이블과 섹션 헤더 자료구조
50.1.3 심볼 테이블 섹션과 재배치 섹션
50.2 재배치 정보 분석과 응용프로그램 로더 구현
50.2.1 간단한 응용프로그램을 통한 재배치 정보 분석
50.2.2 응용프로그램 로딩에서 실행까지
50.2.3 응용프로그램 로더 구현
50.2.4 응용프로그램을 생성하는 시스템 콜 추가
50.3 응용프로그램 로더 통합과 빌드
50.3.1 응용프로그램 로더 파일 추가
50.3.2 시스템 콜 파일과 시스템 콜 리스트 파일 수정
50.3.3 유저 레벨 시스템 콜 라이브러리 파일 수정
50.3.4 콘솔 셸 파일 수정
50.3.5 빌드와 테스트

51장 유저 레벨 응용프로그램 (2) - 텍스트 뷰어
51.1 텍스트 뷰어의 알고리즘과 자료구조 설계
51.1.1 텍스트 뷰어 알고리즘 설계
51.1.2 텍스트 뷰어 자료구조 설계
51.2 텍스트 뷰어 구현
51.2.1 파일 읽기 함수 구현
51.2.2 라인별 파일 오프셋 계산 함수 구현
51.2.3 화면 출력 함수 구현
51.2.4 메인 함수 구현
51.3 텍스트 뷰어 통합과 빌드
51.3.1 메인 파일 추가
51.3.2 응용프로그램 빌드용 makefile과 링크 스크립트 파일 추가
51.3.3 상위 디렉터리의 makefile 수정
51.3.4 빌드와 테스트

52장 유저 레벨 응용프로그램 (3) - 버블 슈터
52.1 버블 슈터의 알고리즘과 자료구조 설계
52.1.1 버블 슈터 알고리즘 설계
52.1.2 버블 슈터 자료구조 설계
52.2 버블 슈터 구현
52.2.1 게임 정보 초기화 함수와 물방울 생성 함수 구현
52.2.2 물방울 이동 함수와 물방울 삭제 함수 구현
52.2.3 게임 정보 출력 함수와 게임 영역 출력 함수 구현
52.2.4 메인 함수 구현
52.3 버블 슈터 통합과 빌드
52.3.1 메인 파일 추가
52.3.2 응용프로그램 빌드용 makefile과 링크 스크립트 파일 추가
52.3.3 상위 디렉터리의 makefile 수정
52.3.4 빌드와 테스트

53장 유저 레벨 응용프로그램 (4) - 헥사 게임
53.1 헥사 게임의 알고리즘과 자료구조 설계
53.1.1 헥사 게임 알고리즘 설계
53.1.2 헥사 게임 자료구조 설계
53.2 헥사 게임 구현
53.2.1 게임 정보 초기화 함수와 블록 생성 함수 구현
53.2.2 이동 가능 확인 함수와 블록 고정 함수 구현
53.2.3 연속된 블록을 표시하는 함수와 표시된 블록을 제거하는 함수 구현
53.2.4 블록 압축 함수와 연속된 블록 제거 함수 구현
53.2.5 게임 정보 출력 함수와 게임 영역 출력 함수 구현
53.2.6 메인 함수 구현
53.3 헥사 게임 통합과 빌드
53.3.1 메인 파일 추가
53.3.2 응용프로그램 빌드용 makefile과 링크 스크립트 파일 추가
53.3.3 상위 디렉터리의 makefile 수정
53.3.4 빌드와 테스트

54장 OS 확장 기능 (1) - 한글 출력 기능과 한글 뷰어
54.1 한글 코드와 한글 폰트
54.1.1 한글 코드의 종류와 특징
54.1.2 한글 완성형 코드의 구조
54.2 한글 폰트와 한글 출력
54.2.1 한글 폰트의 구조와 한글 폰트 추출 방법
54.2.2 한글 출력
54.3 한글 뷰어 구현
54.3.1 라인별 파일 오프셋 계산 함수 수정
54.3.2 화면 출력 함수 수정
54.4 한글 출력 기능과 한글 뷰어의 통합과 빌드
54.4.1 2D 그래픽 라이브러리 파일 수정
54.4.2 한글 폰트 파일 추가
54.4.3 메인 파일 추가
54.4.4 응용프로그램 빌드용 makefile과 링크 스크립트 파일 추가
54.4.5 상위 디렉터리의 makefile 수정
54.4.6 빌드와 테스트

55장 OS 확장 기능 (2) - 한글 입력 모듈과 한 줄 메모장
55.1 한글 입력 테이블과 한글 조합 알고리즘 설계
55.1.1 한글 입력 테이블과 자료구조 설계
55.1.2 한글 입력 알고리즘 설계
55.2 한글 조합 코드 구현
55.2.1 한글 조합 함수 구현
55.2.2 한글 자/모음 판단 함수와 한글 입력 테이블에서 가장 많이 일치하는 항목 검색 함수
55.3 한글 입력 모듈을 활용한 한 줄 메모장 구현
55.3.1 한 줄 메모장 소개와 자료구조 설계
55.3.2 한 줄 메모장 구현
55.4 한글 입력 모듈과 한 줄 메모장의 통합과 빌드
55.4.1 한글 입력 파일 추가
55.4.2 메인 파일 추가
55.4.3 응용프로그램 빌드용 makefile과 링크 스크립트 파일 추가
55.4.4 상위 디렉터리의 makefile 수정
55.4.5 빌드와 테스트

56장 OS 확장 기능 (3) - 데이터 이동을 위한 패키지 파일
56.1 디스크 이미지 파일과 패키지 파일
56.1.1 다시 보는 디스크 이미지 파일
56.1.2 패키지 파일의 구조와 패키지 헤더 설계
56.1.3 패키지 메이커 프로그램 구현
56.2 MINT64 OS에 패키지 파일 처리 기능 추가
56.2.1 부트 로더의 메모리 로딩 부분 수정
56.2.2 콘솔 셸에 패키지 설치 커맨드 추가
56.3 패키지 메이커와 패키지 파일의 통합과 빌드
56.3.1 패키지 메이커 프로그램 추가
56.3.2 부트 로더 파일 수정
56.3.3 콘솔 셸 파일 수정
56.3.4 최상위 makefile 수정
56.3.5 빌드와 테스트

57장 OS 확장 기능 (4) - USB 플래시 드라이브를 이용한 부팅
57.1 USB 플래시 드라이브와 BIOS
57.1.1 플로피 디스크와 USB 플래시 드라이브의 공통점
57.1.2 BIOS는 우리가 어느 드라이브로 부팅했는지 알고 있다
57.1.3 부트 로더에 USB 플래시 드라이브 지원 기능 추가
57.2 USB 플래시 드라이브 부팅 기능의 통합과 빌드
57.2.1 부트 로더 파일 수정
57.2.2 빌드와 테스트

58장 기나긴 여정의 끝, 그리고 새로운 시작
58.1 왔던 길을 되돌아 보며
58.2 MINT64 OS의 개선할 점
58.3 만남과 헤어짐과 새로운 시작

저자 소개

저자 : 한승훈
프로그래밍을 밥 먹듯 하고 의자에 오래 앉아 있는 것이 유일한 특기인 열혈 개발자다.
특기를 살려 밤낮없이 프로그래밍에 열중하며, 늘 새로운 것을 찾아 여러 분야를 기웃거린다. SI 회사에서 서버와 클라이언트 프로그램을 개발했고, 현재는 임베디드 시스템의 펌웨어를 개발 중이다.

저자 Q&A_ http://www.mint64os.pe.kr

품목정보

발행일
2011년 07월 04일
쪽수, 무게, 크기
1508쪽 | 2558g | 188*253*70mm
ISBN13
9788979148374

책 속으로

목표를 향해 노력하는 모든 분들을 응원하며…
2008년 필자의 오랜 꿈이자 목표인 OS를 구상하던 무렵 듀얼코어 프로세서가 싱글코어 프로세서를 밀어내고 영역을 확장해 나갔습니다. 그 당시 필자도 듀얼코어 프로세서로 바꾼 지 얼마 되지 않았던 터라 쿼드코어 프로세서가 출시된다는 소식에 깜짝 놀랐던 기억이 납니다. 그런데 지금은 옥타코어 프로세서가 시중에 나와 있고, 스마트폰에도 듀얼코어 프로세서가 사용되고 있으니 기술의 발전 속도가 엄청난 것 같습니다.

64비트와 멀티코어 프로세서를 지원하는 OS를 만들겠다는 각오로 처음 시작할 때는 이렇게 책으로 나오리라고는 상상도 못했습니다. 필자가 취미로 진행하던 프로젝트들처럼 1차 결과물이 나오면 그대로 하드 디스크 한쪽에 보관할 예정이었습니다. 그런데 이런 생각은 뜬 눈으로 밤을 지새고 주말을 반납하면서 점점 바뀌어 갔습니다.

예상했던 것보다 벽은 훨씬 높았습니다. 할 수 있는 시도를 모두 하고도 결과가 좋지 않았을 때는 눈앞이 깜깜했습니다. 시행착오를 거듭할수록 OS를 만드는 일을 기록으로 남겨야겠다는 생각을 했고, 마침내 이렇게 책으로 나오게 되었습니다.

이 책은 필자가 직접 OS를 개발하면서 겪은 이야기를 개발 순서에 따라 정리한 것입니다. 기능별로 묶을 수도 있지만, 개발 순서를 택한 이유는 OS를 개발하는 데 힘든 점 중 하나가 다음에 무엇을 할지 방향을 결정하는 일이기 때문입니다. OS가 제공하는 기능은 아주 복잡하고 다양해 혼자서 모두 구현하기란 쉬운 일이 아닙니다. 어느 시점이 되면 개발할 기능을 선택하고 순서를 결정해야 하는데, 각 기능이 서로 영향
을 주고받으므로 결정하기가 매우 어렵습니다. 여러분이 선택의 기로에 섰을 때 필자가 먼저 간 길을 참고할 수 있기를 진심으로 바랍니다.

이 책의 내용을 정리하면서 가장 중요하게 여긴 것은 각 단계를 진행할 때 가장 힘들거나 실수하기 쉬운 부분을 놓치지 않게 주의를 기울이는 일입니다. 실제로 OS를 만들어본 경험이 있는 분이라면, 데이터 시트의 한쪽 구석에 있는 주의사항이나 코드 한 줄을 놓쳐서 온종일 고생한 경험이 있을 것입니다. 필자도 이런 일을 수도 없이 반복했기 때문에 여러분이 같은 실수를 반복하지 않도록 해야겠다고 마음먹었습니다.

또한 2년여 동안의 작업 과정을 빠짐없이 기록하여 부팅 과정부터 스케줄러, 동적 메모리 관리, 파일 시스템, GUI 시스템, 응용프로그램에 이르기까지 OS 전반에 걸친 내용을 모두 넣으려고 노력했습니다. OS 관련 서적을 여러 권 봤지만 어디서부터 시작해야 할지 막막하거나, 이유를 알 수 없는 오류로 더 이상 진행하지 못해 고민 중이라면 이 책이 여러분에게 도움이 될 것입니다. 책을 읽는 동안 의문사항이 생기거나
부족한 내용이 있다면 주저 없이 필자의 웹사이트(http://www.mint64os.pe.kr)나 이메일(mint64os@gmail.com)로 연락바랍니다.

---저자 서문 중에서

출판사 리뷰

이 책이 제시하는 핵심 내용

64비트 멀티코어 OS를 개발하면서 배우는 OS 원리와 구조

어떤 독자를 위한 책인가?

운영체제 제작에 관심이 있는 학생이나 개발자
임베디드 개발자, 시스템 프로그래머

부트 로더에서 GUI까지 운영체제의 모든 것을 직접 제작한다

누구나 따라하면 운영체제를 만들 수 있다. 주류로 자리잡은 64비트 멀티코어 운영체제를 직접 만들어볼 수 있다. 하드웨어 동작 원리를 익힐 수 있으며, 각 장에는 완성된 소스 코드를 제공한다. 독자가 이해할 수 없는 심오한 설명은 배제했으며, 자신만의 비밀 노하우나 회사에 쓰인 기술이라 공개할 수 없다는 변명 없이 64비트 멀티코어 운영체제 제작의 노하우를 모두 공개했다.

자신이 직접 만든 도구 등은 일체 사용하지 않고 이클립스, Cygwin, gcc, nasm, qemu 등의 오픈소스를 이용해서 운영체제를 제작했다. 운영체제 제작을 통해 하드웨어와 운영체제의 동작 원리를 이해할 수 있으며, 운영체제에 쓰인 알고리즘, 자료구조 학습을 통해 깊이 있는 C 언어 프로그래밍을 접해볼 수 있다.
32비트 윈도에서도 64비트 gcc 크로스 빌드, QEMU를 사용해 64비트 운영체제를 제작할 수 있게 했다. 윈도 XP 이상이면 누구나 제작해볼 수 있다

* OS에 관심이 있는 분이라면 누구라도 OS를 만들 수 있다
OS 제작이 처음이어도 전혀 걱정할 필요가 없다. 어셈블리어를 잘 몰라도, C 언어의 포인터를 잘 몰라도, 하드웨어 명세서를 잘 몰라도 운영체제 제작에 도전할 수 있게 배려했다. 부트 로더에서 GUI까지 여러분이 꼭 알아야 하는 부분만 정리한 뒤 상세한 설명을 덧붙였다. 한 장 한 장 따라가다보면 어느새 멋진 OS가 동작하고 있을 것이다. 그동안 어셈블리어나 PC 하드웨어의 벽에 부딪혀 번번히 실패했다면 이 책이 여러분에게 새로운 방향을 제시해 줄 것이다.

* 자작 OS도 아름다울 수 있다
자작 OS는 검은색 바탕에 흰색 글자만 표시한다는 편견에서 벗어나자. GUI 환경까지 직접 개발해 멋지고 아름다운 OS를 제작한다.

* 64비트 모드와 멀티코어의 비밀을 모두 공개한다
64비트 모드와 멀티코어는 모두 프로세서와 관련이 있다. 프로세서의 동작 방식은 데이터 시트에 모두 공개되어 있지만, 내용이 흩어져 있고 복잡하여 이해하기가 어렵다. 이 책에서는 OS 개발에 필요한 핵심 부분만 모아서 정리했다.

* 1권의 주요 내용
OS 개발 환경 구축
부트스트랩 코드 제작
32비트 보호 모드로 전환
64비트 모드로 전환
C언어로 커널 작성하기
키보드 디바이스 드라이버 추가
인터럽트 처리
PIC 컨트롤러 제어
콘솔 셸 제작
타이머 디바이스 드라이버 추가
멀티태스킹 구현
라운드 로빈 스케줄러 추가
멀티레벨 큐 스케줄러 제작
태스크 간의 동기화 처리
멀티스레딩 기능 추가
실수 연산 기능 추가
메모리 할당과 버디 블록 알고리즘
하드 디스크 디바이스 드라이버 추가
MINT 파일 시스템 구현
C 표준 입출력 함수 구현
캐시와 램 디스크 추가
시리얼 포트 디바이스 드라이버와 통신
MP 설정 테이블과 멀티코어
APIC와 대칭 I/O 모두 구현

* 2권의 주요 내용
인터럽트 분산과 멀티코어 동기화 처리
스핀락 구현
태스크 분산 처리
그래픽 컨트롤러와 VBE
선형 프레임 버퍼 모드 전환
2D 그래픽 라이브러리 제작
클리핑 알고리즘 설계와 구현
마우스 디바이스 드라이버 추가
GUI 시스템 설계
윈도우 이벤트 큐 설계와 구현
윈도우 매니저 태스크 설계와 구현
GUI 태스크 구현과 Hello World
화면 업데이트 알고리즘의 개선
애플리케이션 패널 태스크 구현
시스템 모니터 태스크 구현
GUI 콘솔 셸 태스크 구현
이미지 뷰어 태스크 구현
커널 영역과 유저 영역의 분리
시스템 콜과 유저 레벨 라이브러리 제작
유저 레벨 응용프로그램, Hello World 제작
ELF64 파일의 구조 분석
유저 레벨 응용프로그램 로더 구현
한글 출력 기능과 한글 뷰어 제작
한글 입력 모듈과 한 줄 메모장 구현
USB 플래시 드라이브를 이용한 부팅

리뷰/한줄평3

리뷰

10.0 리뷰 총점

한줄평

10.0 한줄평 총점

클린봇이 부적절한 글을 감지 중입니다.

설정