제1장. Bellona2 커널의 개요
1.1. 들어가기에 앞서 ...14
1.2. Bellona2는 어떻게 만들어졌나? ...15
1.3. 주요 기능 ...20
1.4. 당부의 말씀 ...24
제2장. Bellona2 커널 이미지
2.1. 커널 이미지 ...28
2.2. 부트 이미지 만들기 ...29
2.3. 커널 이미지 로더 ...37
2.4. 커널 이미지의 재배치 ...44
2.5. 부트 섹터 ...55
2.6. 요약 ...60
제3장. 주변장치 다루기
3.1. 화면 출력 ...64
3.2. 키보드 ...69
3.3. 하드디스크 ...88
3.4. 플로피디스크 ...88
3.5. 타이머 ...121
3.6. CD-ROM 드라이브 ...126
제4장. 디바이스 드라이버
4.1. 블록 디바이스 드라이버 ...142
4.2. 문자 디바이스 드라이버 ...188
제5장. 파일 시스템
5.1. 가상 파일 시스템 ...211
5.2. 파일 시스템 캐시 매니저 ...214
5.3. 파일 관리를 위한 노드 구조체 ...219
5.4. 루트 파일 시스템과 파일 시스템의 마운트 ...224
5.5. 파일 시스템의 초기화 ...226
5.6. FAT32 파일 시스템 ...227
5.7. 파일 디스크립터 ...242
5.8. 파일 관련 함수 ...244
5.9. FAT32 파일 시스템의 인식 ...255
5.10. FAT16 파일 시스템의 인식 ...257
5.11. 윈도우 상에서의 파일 시스템 테스트 ...258
5.12. 표준 입력, 표준 출력, 표준 에러 핸들 ...261
5.13. 파일 시스템 구현에 있어서 아쉬운 점 ...264
제6장. 메모리 관리
6.1. 페이징 ...266
6.2. 물리 메모리 ...272
6.3. 메모리 ...277
6.4. 가상 주소 공간의 관리 ...283
6.5. 메모리 블록의 단편화 ...285
6.6. 메모리의 할당과 해제시 고려해야 할 사항 ...288
6.7. 메모리 할당 방법 ...290
6.8. kmalloc과 kfree 함수 ...297
6.9. 공유 메모리 ...302
6.10. Bellona2 커널의 메모리 관리 시스템 요약 ...310
6.11. 향후 보강이 필요한 부분 ...311
제7장. 프로세스 관리
7.1. 프로세스와 쓰레드 ...314
7.2. 다중 쓰레드 모델 ...315
7.3. 멀티테스킹 ...317
7.4. 스케줄링 ...319
7.5. 프로세스의 주소 공간 ...322
7.6. 프로세스를 표현하기 위한 자료구조 ...324
7.7. 쓰레드를 위한 스택 ...327
7.8. 쓰레드를 표현하기 위한 자료구조 ...324
7.9. 쓰레드의 상태 변화 ...335
7.10. 이벤트와 웨이트 오브젝트 ...337
7.11. 타임아웃 오브젝트 ...344
7.12. 프로세스와 쓰레드에 관련된 구조체의 상관관계 ...350
7.13. 프로세스와 쓰레드의 생성 ...351
7.14. 프로세스와 쓰레드의 종료 ...356
7.15. init 쓰레드 ...359
7.16. 응용 프로그램에서 쓰레드의 생성과 종료 ...361
7.17. 태스크 스위칭 ...367
7.18. 시그널 ...373
7.19. 세마포어 ...380
제8장. 동적 모듈
8.1. 동적 모듈과 응용 프로그램과의 차이점 ...396
8.2. 동적 모듈 구조체 ...397
8.3. 외부 모듈과 함수 공유 ...400
8.4. 외부 함수 호출 절차 ...404
8.5. 동적 모듈의 로딩 ...407
8.6. 동적 모듈의 언로딩 ...410
8.7. 동적 모듈의 예제 ...411
제9장. 커널 디버거
9.1. 디버거의 개요 ...416
9.2. 하드웨어적인 디버깅 지원 ...422
9.3. Bellona2 커널 디버거의 주용 기능 ...428
9.4. 커널 디버거의 명령어 ...469
제10장. 응용 프로그램
10.1. 컴파일과 링크 옵션 ...484
10.2. 프로그램 로더 ...487
10.3. 프로그램 내부 구조 ...495
10.4. 재배치 엔트리 처리 ...502
10.5. 프로그램의 디버깅 정보 ...505
10.6. 응용 프로그램 제작을 위한 라이브러리 ...514
10.7. 시스템 콜 ...516
제11장. Bellona2 커널로 시스템 부팅하기
11.1. 부팅 디스크의 제작 ...526
11.2. 실행 환경 ...530
11.3. 명령어 ...530
11.4. 맺음말 ...547
부록 기계어 코드 테이블
1바이트 기계어 코드 테이블 ...550
2바이트 기계어 코드 테이블 ...552