메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT EXPERT, 64비트 멀티코어 OS 원리와 구조 1권: OS 개발 60일 프로젝트

한빛미디어

집필서

절판

  • 저자 : 한승훈
  • 출간 : 2011-07-23
  • 페이지 : 1472 쪽
  • ISBN : 9788979148367
  • 물류코드 :1836
  • 초급 초중급 중급 중고급 고급
0점 (0명)
좋아요 : 33
OS에 관심이 있는 분이라면 누구라도 OS를 만들 수 있다

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

자작 OS도 아름다울 수 있다

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

64비트 모드와 멀티코어의 비밀을 모두 공개한다

64비트 모드와 멀티코어는 모두 프로세서와 관련이 있다. 프로세서의 동작 방식은 데이터 시트에 모두 공개되어 있지만, 내용이 흩어져 있고 복잡하여 이해하기가 어렵다. 이 책에서는 OS 개발에 필요한 핵심 부분만 모아서 정리했다.
  • OS 개발 환경 구축
  • 부트스트랩 코드 제작
  • 32비트 보호 모드로 전환
  • 64비트 모드로 전환
  • C언어로 커널 작성하기
  • 키보드 디바이스 드라이버 추가
  • 인터럽트 처리
  • PIC 컨트롤러 제어
  • 콘솔 셸 제작
  • 타이머 디바이스 드라이버 추가
  • 멀티태스킹 구현
  • 라운드 로빈 스케줄러 추가
  • 멀티레벨 큐 스케줄러 제작
  • 태스크 간의 동기화 처리
  • 멀티스레딩 기능 추가
  • 실수 연산 기능 추가
  • 메모리 할당과 버디 블록 알고리즘
  • 하드 디스크 디바이스 드라이버 추가
  • MINT 파일 시스템 구현
  • C 표준 입출력 함수 구현
  • 캐시와 램 디스크 추가
  • 시리얼 포트 디바이스 드라이버와 통신
  • MP 설정 테이블과 멀티코어
  • APIC와 대칭 I/O 모두 구현
한승훈 저자

한승훈

프로그래밍을 밥 먹듯 하고 의자에 오래 앉아 있는 것이 유일한 특기인 열혈 개발자다.

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

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

1부 OS 개발을 위한 힘찬 첫걸음
 
1장  시작하기 전에
1.1 들어가며
1.2 OS를 개발하는 과정에서 얻을 수 있는 세 가지
1.3 OS를 개발하는 데 필요한 지식
1.4 이 책의 주요 독자층
1.5 마치며
 
2장  OS 개발 환경을 구축하자
2.1 GCC 설치
  2.1.1 Cygwin 설치
  2.1.2 GCC 설치 확인과 테스트
2.2 크로스 컴파일러 만들기
  2.2.1 GNU Binutils 생성하기
  2.2.2 GCC 크로스 컴파일하기
2.3 NASM 설치
2.4 이클립스 설치
  2.4.1 이클립스 설치하기
  2.4.2 자바 런타임 환경 설치하기
  2.4.3 이클립스 실행하기
2.5 QEMU 설치  
 
3장  64비트 프로세서의 이모저모
3.1 운영 모드
  3.1.1 64비트 OS가 갖추어야 할 필수 운영 모드
  3.1.2 운영 모드 사이의 관계와 운영 모드의 전환
3.2 운영 모드와 레지스터
  3.2.1 범용 레지스터
  3.2.2 세그먼트 레지스터
  3.2.3 컨트롤 레지스터
3.3 운영 모드와 메모리 관리 기법
  3.3.1 리얼 모드의 메모리 관리 방식
  3.3.2 보호 모드의 메모리 관리 방식
  3.3.3 IA-32e 모드의 메모리 관리 
 
4장  내 PC를 부팅하자 
4.1 부팅과 부트 로더 
  4.1.1 부팅과 BIOS 
  4.1.2 부트 로더의 역할과 구성 
4.2 부트 로더 제작을 위한 준비 
  4.2.1 이클립스 프로젝트 생성 
  4.2.2 MINT64 OS의 디렉터리 구조 생성 
  4.2.3 makefile 파일 생성 
4.3 부트 로더 제작과 테스트 
  4.3.1 세상에서 가장 간단한 부트 로더 
  4.3.2 QEMU 실행 
  4.3.3 화면 버퍼와 화면 제어 
  4.3.4 세그먼트 레지스터 초기화와 Hello, World~! 
  4.3.5 부트 로더 테스트 
 
5장  플로피 디스크에서 OS 이미지를 로딩하자 
5.1 BIOS 서비스와 소프트웨어 인터럽트 
5.2 OS 이미지 로딩 기능 구현 
  5.2.1 디스크 읽기 기능 구현 
  5.2.2 스택 초기화와 함수 구현 
  5.2.3 최종 부트 로더 소스 코드 
5.3 테스트를 위한 가상 OS 이미지 생성 
  5.3.1 OS 이미지 통합과 QEMU 실행 
 
 
2부 64비트 세상으로
6장  32비트 보호 모드로 전환하자 
6.1 세그먼트 디스크립터 생성 
  6.1.1 코드 세그먼트 디스크립터와 데이터 세그먼트 디스크립터 타입 설정 
  6.1.2 세그먼트의 영역 설정 
  6.1.3 기본 오퍼랜드 크기와 권한 설정 
  6.1.4 기타 필드 설정 
  6.1.5 세그먼트 디스크립터 생성 코드 
6.2 GDT 정보 생성 
6.3 보호 모드로 전환 
  6.3.1 프로세서에 GDT 정보 설정 
  6.3.2 CR0 컨트롤 레지스터 설정 
  6.3.3 보호 모드로 전환과 세그먼트 셀렉터 초기화 
  6.3.4 보호 모드용 PRINTSTRING 함수 
6.4 보호 모드용 커널 이미지 빌드와 가상 OS 이미지 교체 
  6.4.1 커널 엔트리 포인트 파일 생성 
  6.4.2 makefile 수정과 가상 OS 이미지 파일 교체 
  6.4.3 OS 이미지 통합 및 QEMU 실행 
 
7장  C언어로 커널 작성하기 
7.1 실행 가능한 C 코드 커널 생성 방법 
  7.1.1 빌드 조건과 제약 사항 
  7.1.2 소스 파일 컴파일 - 라이브러리를 사용하지 않는 오브젝트 파일 생성 방법  
  7.1.3 오브젝트 파일 링크 - 라이브러리를 사용하지 않고 특정 어드레스에서 실행 가능한 커널 이미지 파일 생성 방법 
7.2 C 소스 파일 추가와 보호 모드 엔트리 포인트 통합 
  7.2.1 C 소스 파일 추가 
  7.2.2 보호 모드 엔트리 포인트 코드 수정 
  7.2.3 makefile 수정 
7.3 커널 빌드와 실행 
  7.3.1 이미지 메이커 프로그램 작성 
  7.3.2 커널 이미지 생성과 실행 
 
8장  A20 게이트를 활성화하여 1MB이상 영역에 접근해보자 
8.1 IA-32e 모드 커널과 메모리 맵 
8.2 IA-32e 모드 커널을 위한 메모리 초기화 
  8.2.1 메모리 초기화 기능 추가 
  8.2.2 빌드와 실행 
8.3 1MB 어드레스와 A20 게이트 
  8.3.1 A20 게이트의 의미와 용도 
  8.3.2 A20 게이트 활성화 방법 
8.4 A20 게이트 적용과 메모리 크기 검사 
  8.4.1 A20 게이트 활성화 코드 적용 
  8.4.2 메모리 크기 검사 기능 추가 
  8.4.3 빌드와 실행 
 
9장  페이징 기능을 활성화하여 64비트 전환을 준비하자 
9.1 선형 주소와 4단계 페이징 기법 
9.2 페이지 테이블 구성과 공간 할당 
  9.2.1  64GB의 물리 메모리 관리를 위한 메모리 계산 
  9.2.2 페이지 테이블을 위한 공간 할당 
  9.2.3 공통 속성 필드 설정 
  9.2.4 페이지 디렉터리 엔트리용 속성 필드 설정 
9.3 페이지 테이블 생성과 페이징 기능 활성화 
  9.3.1 페이지 엔트리를 위한 자료구조 정의와 매크로 정의 
  9.3.2 페이지 엔트리 생성과 페이지 테이블 생성 
  9.3.3 프로세서의 페이징 기능 활성화 
9.4  보호 모드 커널에 페이지 테이블 생성 기능 추가 
  9.4.1 페이징 기능 관련 파일 생성 
  9.4.2 C 커널 엔트리 포인트 수정 
9.5 빌드와 실행 
 
10장 64비트 모드로 전환하자 
10.1  프로세서의 제조사와 IA-32e 지원 여부 검사 
  10.1.1 CPUID를 사용하여 프로세서 정보 확인 방법 
  10.1.2 프로세서 제조사와 IA-32e 모드 지원 여부 확인 
10.2  IA-32e 모드용 세그먼트 디스크립터 추가 
  10.2.1 보호 모드 커널 엔트리 포인트에 디스크립터 추가 
10.3  IA-32e 모드 전환과 1차 정리 
  10.3.1 물리 메모리 확장 기능 활성화와 페이지 테이블 설정  
  10.3.2 64비트 모드 활성화와 페이징 활성화  
  10.3.3 IA-32e 모드로 전환과 세그먼트 셀렉터 초기화 
  10.3.4 소스코드 1차 정리와 실행 
10.4 IA-32e 모드용 커널 준비 
  10.4.1 커널 엔트리 포인트 파일 생성  
10.5  보호 모드 커널과 IA-32e 모드 커널 통합 
  10.5.1 최상위 makefile 수정 
  10.5.2 부트 로더 파일 수정 
  10.5.3 이미지 메이커 프로그램 수정 
  10.5.4 보호 모드 커널의 C 언어 엔트리 포인트 파일 수정 
  10.5.5 빌드와 실행 
 
3부 키보드와 타이머, 인터럽트
11장 키보드 디바이스 드라이버를 추가하자 
11.1  키보드 컨트롤러의 구조와 기능 
  11.1.1 키보드 컨트롤러, I/O 포트, 레지스터 
11.2  키보드 컨트롤러 제어 
  11.2.1 키보드와 키보드 컨트롤러 활성화 
  11.2.2 IA-32e 모드의 호출 규약 
  11.2.3 키보드 컨트롤러에서 키 값 읽기 
  11.2.4 A20 게이트 활성화와 프로세스 리셋 
  11.2.5 키보드 LED 상태 제어 
11.3 스캔 코드와 간단한 셸 
  11.3.1 키보드와 스캔 코드 
  11.3.2 스캔 코드를 ASCII 문자로 변환 
  11.3.3 간단한 셸 구현 
11.4 키보드 디바이스 드라이버의 통합과 빌드 
  11.4.1 키보드 디바이스 드라이버 파일 추가 
  11.4.2 어셈블리어 유틸리티 파일 추가 
  11.4.3 C 언어 커널 엔트리 포인트 파일 수정 
  11.4.4 빌드와 실행 
 
12장 GDT와 IDT 테이블, TSS 세그먼트를 추가하여 인터럽트를 대비하자 
12.1  인터럽트와 예외 
  12.1.1 인터럽트와 예외의 차이점 
  12.1.2 IDT와 IDT 게이트 디스크립터 
  12.1.3 인터럽트와 예외의 종류 
  12.1.4 PC 인터럽트의 종류와 발생 원인 
12.2 인터럽트와 예외, 스택과 태스크 상태 세그먼트 
  12.2.1 스택 스위칭과 IST 
  12.2.2 프로세서와 태스크 상태 세그먼트, 태스크 디스크립터 
12.3  GDT 테이블 교환과 TSS 세그먼트 디스크립터 추가 
  12.3.1 왜 GDT 테이블을 교환해야 하는가? 
  12.3.2 GDT 테이블 생성과 TSS 세그먼트 디스크립터 추가 
  12.3.3 TSS 세그먼트 초기화 
  12.3.4 GDT 테이블 교체와 TSS 세그먼트 로드 
12.4  IDT 테이블 생성, 인터럽트, 예외 핸들러 등록 
  12.4.1 IDT 테이블 생성 
  12.4.2 IDT 테이블 로드 
12.5  IDT, TSS 통합과 빌드 
  12.5.1 디스크립터 파일 추가 
  12.5.2 어셈블리어 유틸리티 파일 수정 
  12.5.3 유틸리티 파일 추가 
  12.5.4 C 언어 커널 엔트리 포인트 파일 수정 
  12.5.5 빌드와 실행 
 
13장 PIC 컨트롤러와 인터럽트 핸들러를 이용해 인터럽트를 처리하자 
13.1  PIC 컨트롤러 소개 
  13.1.1 PIC 컨트롤러란 
  13.1.2 PIC 컨트롤러의 구조와 동작 방식 
13.2  PIC 컨트롤러 제어 
  13.2.1 PIC 컨트롤러 초기화 
  13.2.2 인터럽트 입력 선택 
  13.2.3 인터럽트 종료 처리 
13.3 인터럽트, 예외 핸들러, 콘텍스트 
  13.3.1 임시 핸들러의 문제점 
  13.3.2 콘텍스트 저장과 복원 
  13.3.3 인터럽트와 예외 핸들러 업그레이드 
  13.3.4 IDT 테이블 수정 
  13.3.5 인터럽트 활성화와 비활성화 
13.4 PIC 컨트롤러 제어 코드와 핸들러 코드의 통합과 빌드 
  13.4.1 PIC 컨트롤러 파일 추가 
  13.4.2 ISR 파일 파일 추가 
  13.4.3 인터럽트 핸들러 파일 추가 
  13.4.4 어셈블리어 유틸리티 파일 수정 
  13.4.5 디스크립터 파일 수정 
  13.4.6 C 언어 커널 엔트리 포인트 파일 수정 
  13.4.7 빌드와 실행 
 
14장 키보드 디바이스 드라이버를 업그레이드하자 
14.1  인터럽트 핸들러와 큐 
  14.1.1 인터럽트 핸들러와 어떻게 통신할까? 
  14.1.2 큐란 무엇인가? 
  14.1.3 범용 큐 설계 
  14.1.4 범용 큐 구현과 사용 방법 
14.2 키보드 디바이스 드라이버 업그레이드 
  14.2.1 키 정보를 저장하는 자료구조와 큐 생성 
  14.2.2 키보드 핸들러 수정 
  14.2.3 셸 코드 수정 
  14.2.4 인터럽트로 인한 문제와 인터럽트 제어 
14.3 키보드 디바이스 드라이버의 업그레이드와 빌드 
  14.3.1 큐 파일 추가 
  14.3.2 키보드 디바이스 드라이버 파일 수정 
  14.3.3  인터럽트 핸들러 파일과 유틸리티 파일 수정 
  14.3.4 C 언어 커널 엔트리 포인트 파일 수정 
  14.3.5 빌드와 실행 
 
15장 콘솔 셸을 만들자 
15.1  sprintf()와 가변 인자 처리 
  15.1.1 포맷 스트링과 가변 인자 
  15.1.2 sprintf() 함수와 vsprintf() 함수 구현 
  15.1.3 itoa() 함수와 atoi() 함수 구현 
15.2  콘솔 입출력 처리 
  15.2.1 콘솔 자료구조 생성과 printf() 함수 구현 
  15.2.2 커서 제어 
  15.2.3 getch() 함수 구현 
15.3 셸 구현 
  15.3.1 프롬프트, 커맨드 버퍼, 사용자 입력 처리 
  15.3.2 커맨드 비교와 커맨드 실행 
15.4  콘솔 라이브러리와 셸의 통합과 빌드 
  15.4.1 콘솔 파일 추가 
  15.4.2 콘솔 셸 파일 추가 
  15.4.3 유틸리티 파일 수정 
  15.4.4 인터럽트 핸들러 파일 수정 
  15.4.5 C 언어 커널 엔트리 포인트 파일 수정 
  15.4.6 빌드와 실행 
 
16장 타이머 디바이스 드라이버를 추가하자 
16.1  디바이스의 특징과 쓰임 
16.2  PIT 컨트롤러의 구조와 기능 
  16.2.1 PIT 컨트롤러, I/O 포트, 레지스터 
  16.2.2 PIT 컨트롤러 초기화 
  16.2.3 카운터를 읽어 직접 시간 계산하기 
16.3 타임 스탬프 카운터와 RTC 
  16.3.1 타임 스탬프 카운터와 사용 방법 
  16.3.2 RTC 컨트롤러와 CMOS 메모리 
16.4  PIT 컨트롤러, 타임 스탬프 카운터,  RTC 통합과 빌드 
  16.4.1 PIT 컨트롤러 파일 추가 
  16.4.2 어셈블리어 유틸리티 파일 수정 
  16.4.3 RTC 컨트롤러 파일 추가 
  16.4.4 콘솔 셸 파일 수정 
  16.4.5 빌드와 실행 
 
4부 멀티태스킹과 멀티스레딩, 동기화와 실수 연산
17장 태스크 개념을 추가해 멀티태스킹을 구현하자 
17.1  태스크, 멀티태스킹, 성능 향상 
  17.1.1 태스크, 콘텍스트, 스택 
  17.1.2 멀티태스킹과 성능 향상 
17.2  태스크 제어 블록과 태스크 전환 구현 
  17.2.1 태스크 제어 블록 정의 
  17.2.2 태스크 생성 처리 
  17.2.3 태스크 전환 처리 
17.3 멀티태스킹 기능 통합과 빌드 
  17.3.1 태스크 파일 추가 
  17.3.2 어셈블리어 유틸리티 파일 수정 
  17.3.3 콘솔 셸 파일 수정 
  17.3.4 빌드와 실행 
 
18장 라운드 로빈 스케줄러를 추가하자 
18.1  스케줄러와 리스트 
  18.1.1 스케줄러의 역할과 종류 
  18.1.2 스케줄러와 자료구조 
  18.1.3 범용 리스트의 설계와 구현 
18.2 태스크 풀과 스케줄러 
  18.2.1 태스크 풀과 스택 풀 설계 
  18.2.2 태스크 풀과 스택 풀 구현 
  18.2.3 라운드 로빈 스케줄러 설계 
  18.2.4 라운드 로빈 스케줄러 구현 
  18.2.5 시분할 멀티태스킹 구현 
  18.2.6 태스크 생성 함수 구현 
18.3 라운드 로빈 스케줄러의 통합과 빌드 
  18.3.1 리스트 파일 추가 
  18.3.2 태스크 파일 수정 
  18.3.3  인터럽트 관련 파일과 유틸리티 파일 수정 
  18.3.4  C 언어 커널 엔트리 포인트 파일과 콘솔 셸 파일  수정 
  18.3.5 빌드와 실행 
 
19장 멀티레벨 큐 스케줄러로 업그레이드하고 태스크 종료 기능을 추가하자 
19.1  태스크 우선순위와 멀티레벨 큐 스케줄러 알고리즘 
  19.1.1 멀티레벨 큐 스케줄러와 라운드 로빈 스케줄러의 관계 
  19.1.2 태스크 우선순위와 큐 스케줄링 정책 
19.2  멀티레벨 큐 스케줄러 업그레이드 
  19.2.1 스케줄러 자료구조 업그레이드 
  19.2.2 스케줄러 함수 업그레이드 
  19.2.3 태스크 우선순위 제어 
  19.2.4 콘솔 셸과 테스트 태스크의 우선순위 지정 
19.3 태스크 종료와 유휴 태스크 
  19.3.1 태스크 종료, 태스크 상태와 대기 큐 
  19.3.2 태스크 종료 함수 구현 
  19.3.3 유휴 태스크 추가 
19.4 멀티레벨 큐 스케줄러와 태스크 종료 기능의 통합과 빌드 
  19.4.1 태스크 파일 수정 
  19.4.2  C 언어 커널 엔트리 포인트 파일과 콘솔 셸 파일 수정 
  19.4.3 빌드와 실행 
 
20장 태스크와 인터럽트, 태스크와 태스크 사이의 동기화 문제를 해결하자  
20.1  태스크 생성 문제와 동기화 처리 
  20.1.1 사라진 태스크를 찾아서 
  20.1.2 경쟁 상태와 임계 영역, 상호 배제 
  20.1.3 동기화 처리 방법 
20.2 인터럽트 제어와 동기화 객체를 통한 동기화 
  20.2.1 커널 자료구조를 위한 동기화 객체 설계와 구현 
  20.2.2 시스템 자료구조를 위한 동기화 함수 적용 
  20.2.3 태스크 사이 자료 공유를 위한 동기화 객체 설계와 구현 
  20.2.4 태스크 사이 자료 공유를 위한 동기화 함수 적용 
20.3 동기화 기능 통합과 빌드 
  20.3.1 동기화 파일 추가와 어셈블리어 유틸리티 파일 수정 
  20.3.2 태스크 파일과 키보드 디바이스 드라이버 파일 수정 
  20.3.3 콘솔 셸 파일 수정 
  20.3.4 빌드와 실행 
 
21장 멀티스레딩 기능을 추가하자  
21.1  멀티태스킹과 멀티스레딩 
  21.1.1 프로세스와 스레드 
  21.1.2 프로세스 종료 처리와 동기화 문제 
21.2  멀티스레딩 지원을 위한 재설계와 구현 
  21.2.1 태스크 대 프로세스, 태스크 대 스레드 
  21.2.2 태스크 자료구조 수정과 매크로 정의 
  21.2.3 태스크 생성 함수 수정 
  21.2.4 유휴 태스크 수정 
  21.2.5 스케줄러 초기화 함수와 태스크 설정 함수 수정 
21.3 프로세스와 스레드 기능 통합과 빌드 
  21.3.1 태스크 파일과 타입 파일 수정 
  21.3.2 유틸리티 파일 수정 
  21.3.3 C 언어 커널 엔트리 포인트 파일과 콘솔 셸 파일 수정 
  21.3.4 빌드와 실행 
 
22장 실수 연산 기능을 추가하자  
22.1  실수 연산 장치와 프로세서 
  22.1.1 프로세서는 실수를 어떻게 계산할까? 
  22.1.2 실수 연산 장치와 멀티태스킹 
22.2  FPU 처리를 위해 모듈 업그레이드 
  22.2.1 태스크 자료구조와 함수 업그레이드 
  22.2.2 스케줄러 자료구조와 함수 업그레이드 
  22.2.3 FPU와 컨트롤 레지스터 제어 함수 추가 
  22.2.4 예외 핸들러 업그레이드 
22.3  실수 연산 기능 통합과 빌드 
  22.3.1 인터럽트 핸들러 파일과 ISR 파일 수정 
  22.3.2 태스크 파일 수정 
  22.3.3 어셈블리어 유틸리티 파일과 모드 전환 파일 수정 
  22.3.4 콘솔 셸 파일과 유틸리티 파일 수정 
  22.3.5 빌드와 실행 
 
 
5부 동적 메모리 관리와 파일 시스템, 시리얼 통신과 파일
23장 메모리를 내 마음대로 할당받자 
23.1  메모리 단편화와 버디 블록 알고리즘 
  23.1.1 외부 단편화, 그 견딜 수 없는 무거움 
  23.1.2 버디 블록 알고리즘의 원리와 내부 단편화 
23.2  버디 블록 알고리즘 구현 
  23.2.1 동적 메모리 할당을 위한 메모리 영역 지정 
  23.2.2 버디 블록 알고리즘 세부 설계 
  23.2.3 동적 메모리 자료구조 초기화 
  23.2.4 메모리 할당 기능 구현 
  23.2.5 메모리 해제 기능 구현 
23.3 동적 메모리 할당/해제 기능 통합과 빌드 
  23.3.1 동적 메모리 관리 파일 추가 
  23.3.2 C 언어 커널 엔트리 포인트 파일 수정 
  23.3.3 콘솔 셸 파일 수정 
  23.3.4 빌드와 테스트 
 
24장 하드 디스크 디바이스 드라이버를 추가하자 
24.1  하드 디스크와 하드 디스크 컨트롤러의 구조와 기능 
  24.1.1 하드 디스크의 구조 
  24.1.2 CHS 어드레스 방식과 LBA 어드레스 방식 
  24.1.3 하드 디스크 컨트롤러, I/O 포트, 레지스터 
24.2  하드 디스크 디바이스 드라이버 설계와 구현 
  24.2.1 디바이스 드라이버 설계 
  24.2.2 디바이스 드라이버 초기화 
  24.2.3 하드 디스크 정보 추출 
  24.2.4 섹터 읽기 
  24.2.5 섹터 쓰기 
  24.2.6 인터럽트 처리 
24.3 하드 디스크 디바이스 드라이버의 통합과 빌드  
  24.3.1 하드 디스크 디바이스 드라이버 파일 추가 
  24.3.2 어셈블리어 유틸리티 파일 수정 
  24.3.3 인터럽트 핸들러 파일과 ISR 파일 수정 
  24.3.4 C 언어 커널 엔트리 포인트 파일 수정 
  24.3.5 콘솔 셸 파일 수정 
  24.3.6 빌드와 테스트 
 
25장 간단한 파일 시스템을 구현하자 
25.1  MINT 파일 시스템 설계 
  25.1.1 MINT 파일 시스템 특징 
  25.1.2 MINT 파일 시스템 구조 
  25.1.3 MBR 영역 
  25.1.4 예약된 영역 
  25.1.5 클러스터 링크 테이블 영역과 데이터 영역 
  25.1.6 루트 디렉터리와 파일 
  25.1.7 파일 추가와 파일 삭제 알고리즘 
  25.1.8 MINT 파일 시스템 자료구조 설계 
25.2 저수준 함수 구현  
  25.2.1 파일 시스템 초기화 함수와 함수 포인터 설정  
  25.2.2 파일 시스템 인식 함수  
  25.2.3 파일 시스템 생성 함수  
  25.2.4 클러스터 링크 테이블 관련 함수  
  25.2.5 루트 디렉터리와 파일 관련 함수  
  25.2.6 파일 추가 함수와 파일 삭제 함수  
25.3 파일 시스템 통합과 빌드  
  25.3.1 파일 시스템 파일 추가  
  25.3.2 C 언어 커널 엔트리 포인트 파일 수정  
  25.3.3 콘솔 셸 파일 수정  
  25.3.4 빌드와 테스트  
 
26장 C 표준 입출력 함수를 추가하자 
26.1  C 표준 입출력 함수 설계  
  26.1.1 구현할 함수 목록과 함수 원형  
  26.1.2 FILE 자료구조와 DIR 자료구조 설계  
26.2  핸들과 파일 관련 고수준 함수 구현  
  26.2.1 파일 시스템 초기화 함수 수정 - 핸들 풀 생성  
  26.2.2 핸들 할당 함수와 해제 함수  
  26.2.3 파일 열기 함수 - fopen() 함수  
  26.2.4 파일 읽기 함수 - fread() 함수  
  26.2.5 파일 쓰기 함수 - fwrite() 함수  
  26.2.6 파일 포인터 이동 함수 - fseek() 함수  
  26.2.7 파일 닫기 함수 - fclose() 함수  
  26.2.8 파일 제거 함수 - remove() 함수  
26.3  디렉터리 관련 고수준 함수 구현  
  26.3.1 디렉터리 열기 함수 - opendir() 함수  
  26.3.2 디렉터리 읽기 함수와 디렉터리 포인터 되감기 함수 - readdir() 함수와 rewinddir() 함수  
  26.3.3 디렉터리 닫기 함수 - closedir() 함수  
  26.3.4 함수 이름과 매크로와 타입을 C 표준 라이브러리 스타일로 변환  
26.4 고수준 파일 시스템 함수 통합과 빌드  
  26.4.1 파일 시스템 파일 수정  
  26.4.2 유틸리티 헤더 파일과 콘솔 셸 파일의 수정  
  26.4.3 빌드와 테스트  
 
27장 캐시와 램 디스크를 추가해 속도를 높이자  
27.1  파일 시스템 캐시 설계와 구현  
  27.1.1 캐시의 기능과 장단점  
  27.1.2 파일 시스템과 파일 시스템 캐시  
  27.1.3 LRU 캐시 알고리즘  
  27.1.4 파일 시스템 캐시 설계  
  27.1.5 파일 시스템 캐시 구현  
  27.1.6 파일 시스템 함수 업그레이드  
27.2  램 디스크 설계와 구현  
  27.2.1 램 디스크와 하드 디스크  
  27.2.2 램 디스크와 램 디스크 디바이스 드라이버 설계  
  27.2.3 램 디스크 디바이스 드라이버 구현  
27.3 파일 시스템 캐시와 램 디스크의 통합과 빌드  
  27.3.1 파일 시스템 캐시 파일 추가  
  27.3.2 램 디스크 파일 추가  
  27.3.3 파일 시스템 파일 수정  
  27.3.4 콘솔 셸 파일 수정  
  27.3.5 C 언어 커널 엔트리 포인트 파일 수정  
  27.3.6 빌드와 테스트  
 
28장 시리얼 포트 디바이스 드라이버를 추가해 외부와 연결하자 
28.1  시리얼 포트와 시리얼 포트 컨트롤러의  구조와 기능  
  28.1.1 시리얼 포트의 형태와 케이블  
  28.1.2 시리얼 포트 컨트롤러와 I/O 포트, 레지스터  
28.2  시리얼 포트 디바이스 드라이버 설계와 구현  
  28.2.1 디바이스 드라이버 설계와 데이터 전송 규약 설계  
  28.2.2 디바이스 드라이버 초기화  
  28.2.3 데이터 송신 함수와 데이터 수신 함수  
  28.2.4 FIFO를 비우는 함수  
28.3 시리얼 포트 디바이스 드라이버 통합과 빌드  
  28.3.1 시리얼 포트 디바이스 드라이버 파일 추가  
  28.3.2 C 언어 커널 엔트리 포인트 파일 수정  
  28.3.3 콘솔 셸 파일 수정  
  28.3.4 빌드와 테스트  
 
 
6부 멀티코어 프로세서 세상으로 점프
29장 코어 개수와 시스템 구성 정보를 추출하자  
29.1  멀티코어 프로세서와 BIOS  
  29.1.1 멀티코어 프로세서의 특징과 OS 관점에서 본 멀티코어 프로세서  
  29.1.2 BIOS는 우리가 설치한 프로세서를 알고 있다?  
  29.1.3 멀티코어 프로세서, 로컬 APIC, I/O APIC, PIC 컨트롤러 
  29.1.4 인터럽트 모드와 싱글코어 프로세서 모드  
29.2 MP 설정 테이블의 구조  
  29.2.1 MP 설정 테이블과 MP 플로팅 포인터 자료구조  
  29.2.2 MP 설정 테이블과 기본 MP 설정 테이블 엔트리  
29.3  MP 설정 테이블 분석 기능 설계와 구현  
  29.3.1 MP 설정 테이블 자료구조 설계  
  29.3.2 MP 플로팅 포인터 검색  
  29.3.3  MP 설정 테이블 분석 함수와 MP 설정 자료구조 반환 함수  
  29.3.4 MP 설정 테이블 출력 함수  
29.4 MP 설정 테이블 분석 기능 통합과 빌드  
  29.4.1 MP 설정 테이블 파일 추가  
  29.4.2 콘솔 셸 파일 수정  
  29.4.3 빌드와 테스트  
 
30장 잠자는 코어를 깨우자  
30.1  로컬 APIC와 코어 활성화  
  30.1.1 로컬 APIC 레지스터의 구조와 레지스터  
  30.1.2 로컬 APIC 활성화  
  30.1.3 코어 활성화와 인터럽트 커맨드 레지스터  
30.2 멀티코어 프로세서용 OS로 업그레이드  
  30.2.1 멀티코어 프로세서 처리의 핵심, 코어 아이덴티티  
  30.2.2 부트 로더 업그레이드  
  30.2.3 보호 모드 커널 업그레이드  
  30.2.4 IA-32e 모드 커널 업그레이드  
30.3 코어 활성화 기능 통합과 빌드  
  30.3.1 로컬 APIC 파일 추가와 어셈블리어 유틸리티 파일 수정  
  30.3.2 멀티프로세서 파일 추가  
  30.3.3 부트 로더 파일 수정  
  30.3.4 보호 모드 엔트리 포인트 파일과 보호 모드 C 언어 커널 엔트리 포인트 파일 수정  
  30.3.5 디스크립터 파일 수정  
  30.3.6 IA-32e 모드 엔트리 포인트 파일과 IA-32e 모드 C 언어 커널 엔트리 포인트 파일 수정  
  30.3.7 콘솔 셸 파일 수정  
  30.3.8 빌드와 테스트  
 
31장 대칭 I/O 모드로 전환해 인터럽트 분산 처리에 대비하자
31.1  I/O APIC와 로컬 APIC, 대칭 I/O 모드  
  31.1.1 가장 이상적인 인터럽트 처리 기법, 대칭 I/O 모드  
  31.1.2 I/O APIC의 구조와 레지스터  
31.2  대칭 I/O 모드 구현과 전환  
  31.2.1 I/O 리다이렉션 테이블 설정 과정  
  31.2.2 대칭 I/O 모드를 위한 자료구조 설계  
  31.2.3 ISA 버스와 관련된 I/O APIC의 메모리 맵 I/O 어드레스 추출  
  31.2.4 I/O 리다이렉션 테이블에 인터럽트 마스크 설정 
  31.2.5 I/O 리다이렉션 테이블 초기화  
  31.2.6 대칭 I/O 모드로 전환 문제점과 해결 방법  
31.3 대칭 I/O 모드 전환 기능 통합과 빌드  
  31.3.1 I/O APIC 파일 추가  
  31.3.2 로컬 APIC 파일 수정  
  31.3.3 MP 설정 테이블 파일과 인터럽트 핸들러 파일 수정  
  31.3.4 콘솔 셸 파일 수정  
  31.3.5 빌드와 테스트  
 
32장 인터럽트를 분산하고 멀티코어 환경에 맞춰 동기화 처리를 업그레이드하자  
32.1  인터럽트 분산 처리 알고리즘 설계  
  32.1.1 인터럽트 부하 분산 알고리즘  
  32.1.2 인터럽트 부하 분산을 위한 자료구조 설계  
32.2 인터럽트 부하 분산 구현  
  32.2.1 인터럽트 매니저 자료구조 초기화 함수 구현  
  32.2.2 인터럽트 모드 설정 함수와 인터럽트 처리 횟수 증가 함수 구현  
  32.2.3 인터럽트 부하 분산 함수와 인터럽트 전달 경로 변경 함수 구현  
  32.2.4 인터럽트 핸들러와 대칭 I/O 모드 전환 함수 수정  
32.3  멀티코어 프로세서 환경에서 사용할 수 있는 동기화 알고리즘 설계  
  32.3.1 인터럽트 분산 처리와 동기화 문제  
  32.3.2 커널 자료구조 동기화 해결책, 스핀락  
  32.3.3 스핀락을 위한 자료구조 설계  
32.4  스핀락 구현  
  32.4.1 스핀락 초기화 함수 구현  
  32.4.2 스핀락 잠금 함수와 프로세서 일시 중지 함수 구현  
  32.4.3 스핀락 해제 함수 구현  
  32.4.4 스핀락 적용  
32.5  인터럽트 분산 처리 기능과 스핀락 모듈의  통합과 빌드  
  32.5.1 인터럽트 핸들러 파일과 I/O APIC 파일 수정  
  32.5.2 동기화 파일과 어셈블리어 유틸리티 파일 수정  
  32.5.3  키보드 디바이스 드라이버, 동적 메모리, 태스크 파일 수정  
  32.5.4 콘솔 셸 파일 수정  
  32.5.5 빌드와 테스트  

  • 첫번째 리뷰어가 되어주세요.
  • 결제하기
    • 문화비 소득공제 가능
    • 배송료 : 2,000원배송료란?

    배송료 안내

    • 20,000원 이상 구매시 도서 배송 무료
    • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

    무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

    닫기

    리뷰쓰기

    닫기
    * 도서명 :
    IT EXPERT, 64비트 멀티코어 OS 원리와 구조 1권: OS 개발 60일 프로젝트
    * 제목 :
    * 별점평가
    * 내용 :

    * 리뷰 작성시 유의사항

    글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

    1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
    2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

    오탈자 등록

    닫기
    * 도서명 :
    IT EXPERT, 64비트 멀티코어 OS 원리와 구조 1권: OS 개발 60일 프로젝트
    * 구분 :
    * 상품 버전
    종이책 PDF ePub
    * 페이지 :
    * 위치정보 :
    * 내용 :

    도서 인증

    닫기
    도서명*
    IT EXPERT, 64비트 멀티코어 OS 원리와 구조 1권: OS 개발 60일 프로젝트
    구입처*
    구입일*
    부가기호*
    부가기호 안내

    * 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

    * 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

    * 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

    닫기

    해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
    장바구니로 이동하시겠습니까?

    자료실

    최근 본 책0