제목 없음

 
ID:
PW:

12
145800
1440

제목 없음

 


 
 

제목 없음

 

 

제목 없음

      OS제작의 원리 그리고 CODES (절판 예정)  출판사 문제로 인해 추가 인쇄 없습니다.

      출판일 : 2004년 06월, 페이지수 696p, ISBN-8973543326

      제1장 Bellona2 커널의 개요
      1. 들어가기에 앞서
      2. Bellona2는 어떻게 만들어졌나?
      3. 주요 기능
      4. 당부의 말씀

      제2장 Bellona2 커널 이미지
      1. 커널 이미지(Kernel Image)
      - 커널 개발 언어의 선택
      - 커널의 컴파일/링크 옵션
      - 커널의 시작 함수(Kernel Entry Point)
      2. 부트 이미지 만들기
      - 부트 이미지 생성 프로그램
      3. 커널 이미지 로더
      - 커널 이미지로의 제어 이행
      4. 커널 이미지의 재배치
      - 섹션의 재배치
      - PE 파일의 섹션 헤더
      - 주소의 재배치
      - 재배치 정보
      - 커널 이미지 배치 구조
      5. 부트 섹터
      6. 개선된 부트 섹터(Improved Boot Sector)
      - FAT12 파일 시스템의 디스크 구조
      - FAT 엔트리 액세스
      - 개선된 부트 섹터 코드

      제3장 주변장치 다루기(Device Control)
      1. 화면 출력(Console Display)
      - 단순한 형태가 가장 좋다.
      - printf 함수 만들기
      - 커서 옮기기
      2. 키보드(Keyboard)
      - 간단한 키보드 인터럽트 핸들러
      - 스캔 코드(Scan Code) 처리 방법
      - 키보드 LED 변경
      3. 하드디스크(Hard Disk)
      - 초창기 IDE 하드디스크의 용량 제한
      - LBA(Logical Block Address)
      - 하드디스크의 물리적 정보(Geometry Information) 인식
      - 하드디스크를 액세스하기 위한 레지스터들(Registers)
      - 섹터 읽어 들이기
      4. 플로피디스크(Floppy Disk)
      - 플로피디스크의 접근 계층
      - 플로피디스크의 접근 방법
      - 트랙 읽기
      - IRQ 6
      5. 타이머(Timer)
      - 타이머 인터럽트의 발생 간격 조정
      - Bellona2 커널의 타이머 인터럽트 핸들러
      6. CD-ROM 드라이브(CD-ROM Drive)
      - CD-ROM에 접근하기 위한 레지스터들
      - CD-ROM 드라이브로부터 제품 번호와 일련 번호 구하기
      - ATAPI 전송 프로토콜(Transfer Protocol)
      - CD-ROM의 용량 알아내기

      제4장 디바이스 드라이버(Device Driver)
      1. 블록 디바이스 드라이버(Block Device Driver)
      - 일관성 있는 접근 방법 제공
      - 내장형 드라이버와 동적 드라이버
      - 블록 디바이스, 블록 디바이스 드라이버, 그리고 저장매체
      - 블록 디바이스 드라이버 인식 번호(Major Number and Minor Number)
      - 블록 디바이스 표준 함수(Standard Operations)
      - 블록 디바이스 구조체
      - 블록 디바이스 드라이버 관련 함수
      - 램 디스크 드라이버(Ram Disk Driver)
      - 플로피디스크 드라이버(Floppy Disk Driver)
      - 하드디스크 드라이버(Hard Disk Driver)
      - 하드디스크 파티션 디바이스 드라이버
      - 블록 디바이스 드라이버 요약
      2. 문자 디바이스 드라이버(Character Device Driver)
      - 문자 디바이스 드라이버의 개요
      - 키보드 디바이스 드라이버
      - 시리얼 포트 디바이스 드라이버
      - 표준 출력 디바이스 드라이버

      제5장 파일 시스템(File System)
      1. 가상 파일 시스템(Virtual File System)
      - 가상 파일 시스템의 개념
      - 가상 파일 시스템을 표현하기 위한 구조체
      2. 파일 시스템 캐시 매니저(File System Cache Manager)캐시를 두는 이유
      - 해시 테이블
      - 캐시 매니저와 해시 인덱스를 표현하기 위한 구조체
      3. 파일 관리를 위한 노드 구조체(Vnode)
      - Vnode의 개요
      - Vnode 구조체(VFSStt)
      - Vnode 해시(Hash)
      - 파일 시스템 고유 데이터(File System Specific Data)
      4. 루트 파일 시스템과 파일 시스템의 마운트
      - 마운트의 개요
      - 루트 파일 시스템(Root File System)
      - 파일 시스템의 테스트
      5. 파일 시스템의 초기화(Initialization)

      6. FAT32 파일 시스템
      - FAT 파일 시스템
      - FAT32 자료구조
      - FAT32 파일 시스템의 마운트(Mount) 과정
      - FAT32 파일 시스템의 디렉토리 엔트리(Directory Entry)
      7. 파일 디스크립터(File Descriptor)
      8. 파일 관련 함수
      - 파일 오픈하기(Open File)
      - 파일 읽기(Read File)
      - 파일 닫기(Close File)
      - 파일명 변경(Rename File)
      9. FAT12 파일 시스템의 인식
      10. FAT16 파일 시스템의 인식
      11. 윈도우 상에서의 파일 시스템 테스트
      12. 표준 입력, 표준 출력, 표준 에러 핸들
      13. 파일 시스템 구현에 있어서 아쉬운 점

      제6장 메모리 관리(Memory Management)
      1. 페이징(Paging)
      - 페이징의 장점
      - 페이징 기능 활성화(Active Paging)
      - 페이지 디렉토리와 페이지 테이블
      2. 물리 메모리
      - 물리 메모리 크기 구하기
      - 물리 메모리 관리 테이블
      3. 메모리
      - 메모리 모델의 종류
      - Bellona2 커널의 메모리 모델
      4. 가상 주소 공간의 관리
      5. 메모리 블록의 단편화(Fragmentation)
      6. 메모리의 할당과 해제 시 고려해야 할 사항
      7. 메모리 할당 방법
      - 메모리 풀
      - 메모리 블록 관련 자료구조
      8. kmalloc과 kfree 함수
      9. 공유 메모리(Shared Memory)
      - 공유 메모리의 개요
      - 공유 메모리를 이용한 예제 프로그램
      10. Bellona2 커널의 메모리 관리 시스템 요약
      11. 향후 보강이 필요한 부분

      제7장 프로세스 관리(Process Management)
      1. 프로세스와 쓰레드의 비교
      2. 멀티쓰레드 모델에서의 고려사항
      3. 스케줄링(Scheduling)
      - 스케줄링의 기준과 종류
      - 스케줄링 자료구조
      - bellona2에서의 스케줄링
      4. 프로세스(Process)
      - 프로세스의 자료구조
      - 전면 프로세스(Foreground Process)
      - 프로세스 주소 공간(Process Address Space)
      - 프로세스의 생성
      - fork()를 통한 프로세스의 생성
      - Copy On Write
      - 프로세스의 종료
      5. 쓰레드(Thread)
      - 쓰레드 구조체(ThreadStt)
      - 쓰레드 스택(Thread Stack)
      - 쓰레드 생성(Create Thread)
      - 쓰레드 종료(Kill Thread)
      - 쓰레드의 상태 변화(Thread State)
      6. IPC(Inter Process Communication)
      - IPC의 종류
      - 메시지(Message)
      - 세마포어(Semaphore)
      - 이벤트와 웨이트 오브젝트(Event and Wait Object)
      - 시그널(Signal)
      7. 태스크 스위칭(Task Switching)
      8. 가상 콘솔(Virtual Console)과 프로세스

      제8장 동적 모듈(Dynamic Module)
      1. 동적 모듈이란?
      2. 모듈 관련 자료구조
      3. 외부 모듈의 함수 호출(External Function Call)
      - 기존의 외부 함수 호출(Obsolete External Function Call)
      - 개선된 외부 함수 호출(Improved External Function Call)
      4. 모듈의 로딩(Loading)과 언로딩(Unloading)
      - 모듈 로딩
      - 모듈 언로딩
      5. 동적 모듈의 예

      제9장 커널 디버거(Kernel Debugger)
      1. 디버거(Debugger)의 개요
      - 에러(Error)의 종류
      - 디버거가 있는 경우와 없는 경우
      - 디버거가 갖추어야 할 기본적인 기능 ? 가장 원시적인 디버깅 수단
      - 디버거가 디버거를 디버깅해(?)
      - 소스 레벨 디버깅(Source Level Debugging)
      2. 하드웨어적인 디버깅 지원
      - 디버깅 지원 수단
      - 디버그 레지스터(Debug Register)
      - 디버그 인터럽트(INT 1, INT 3)
      - 페이지 폴트(Page Fault)
      3. Bellona2 커널 디버거의 주요 기능
      - 브레이크 포인트 설정(Break Point)
      - 역어셈블(Unassemble)
      - 어셈블(Assemble)
      4. 커널 디버거의 명령어

      제10장 응용 프로그램(Application Program)
      1. 응용 프로그램(Hello World)의 제작
      2. 프로그램 로더(Program Loader)
      3. 프로그램 진입 위치(Program Entry Point)
      4. 재배치 엔트리 처리(Relocation)
      5. 프로그램의 디버깅 정보(Debug Information)
      6. VC 6.0에서의 디버깅 정보와 콜스택(지역변수/파라미터)
      - MAP 파일과 COD 파일의 분석
      - 지역변수/파라미터(Local Variable and Parameter)
      - CODEMAP.EXE 유틸리티 분석
      - 심벌 정보의 활용
      - 콜스택, 지역변수/파라미터
      7. 응용 프로그램 제작을 위한 라이브러리
      - 스텁 코드(Stub Code)
      8. 시스템 콜(System Call)
      9. 개선된 시스템 콜(Improved System Call)

      제11장 Bellona2 커널로 시스템 부팅하기
      1. 부팅 디스크의 제작
      2. 실행과 개발 환경
      3. 명령어(Kernel Shell Commands)
      - 부팅하기
      - 사용자 쉘
      - 커널 쉘 명령
      - 커널 쉘의 파일 시스템, 블록 디바이스 관련 명령