LANOS- Linux0.12의 지식 포인트 시리즈를 명확하게합니다
这个工程的目标是梳理《Linux源码剖析》的知识点并从0.12版本的源码中抠出部分代码构建一个
能用现代linux发行版方便编译的迷你系统,从而验证各个知识点
Bilibili 비디오 튜토리얼
참조 리소스
- "Linux 소스 코드 분석"최신 전자 버전
- Linux 0.1x 소스 코드
- Oldlinux 공식 웹 사이트
- 오렌지 : 운영 체제 구현
Zhao Jiong 박사, Yu Yuan 선생님, Hideshi Kawahiro 씨, 그리고 가장 높은 존경에 감사드립니다!
이 튜토리얼의 기능
- Linux0.12의 디자인 아이디어에 대한 많은 언급은 데모를 만들어 나중에 Linux 소스 코드를 읽는 데 도움이됩니다.
- 가독성을 향상시키고 학습 비용을 줄이기 위해 C를 사용하여 Linux에서 구현 된 가능한 코드를 다시 구현합니다.
- Docker를 사용하여 컴파일하여 컴파일 환경을 매우 쉽게 구축 할 수 있습니다.
초고속 컴파일 방법 (Docker & Networking에 의존)
코드를 가져 와서 컴파일하려면 다음 명령을 실행하십시오 (Docker 컴파일 이미지를 가져 오기 때문에 처음으로 make_os.sh를 실행하는 것이 느리게 진행됩니다).
git clone https://github.com/freelw/LanOS.git
cd LanOS
./make_os.sh
실행 효과
dantadeMacBook-Pro:yard danta$ git clone https://github.com/freelw/LanOS.git
Cloning into 'LanOS'...
remote: Enumerating objects: 517, done.
remote: Counting objects: 100% (517/517), done.
remote: Compressing objects: 100% (322/322), done.
remote: Total 1316 (delta 304), reused 379 (delta 181), pack-reused 799
Receiving objects: 100% (1316/1316), 2.78 MiB | 42.00 KiB/s, done.
Resolving deltas: 100% (788/788), done.
dantadeMacBook-Pro:yard danta$ cd LanOS
dantadeMacBook-Pro:LanOS danta$ ./make_os.sh
builing lan os...
cleaning temp files...
file [a.vfd] is our os image with a simple ramdisk filesystem.
지식 포인트 카탈로그
- 데모를 컴파일하고 실행하는 방법
- Linux 0.12 Knowledge Point 시리즈를 명확히하여 더 이상 C를 조립할 수 있도록합니다.
- Linux0.12 Knowledge Point 시리즈의 A20 주소 라인을 명확히하십시오.
- Linux0.12 Knowledge Point 시리즈에서 8259A의 초기화 및 클럭 인터럽트를 명확히하십시오.
- 8259a 원칙 자세한 설명
- 온라인 관련 정보 분류
피와 눈물
- 사용자 모드로 이동하십시오
- 예비 디버깅 포크
- 포크+쓰기에 사본
- 글로벌 변수에 대해
다른 지침
TODO
print_str 구현 20200224 완료 print_num 구현 20200224 완료 LAN_FS 구현 20200224 완료 실행 구현 20200224 완료 출구 구현 20200304 완료
최종 효과 디스플레이
LS 프로그램을 실행할 수있는 간단한 쉘 및 파일 시스템이 있습니다.
EXEC 시스템 호출을 지원하고 응용 프로그램을 실행할 수 있습니다
하나의 실행 프로그램을 운영하는 동안 다른 프로그램을 실행하여 멀티 태스킹이 지원되었음을 나타냅니다.
루프 프로그램 구현
자세한 내용은 여기를 참조하십시오
최종 데모 링크
자세한 내용은 여기를 참조하십시오
역사적 데모 순서
- ASM_INT_80
- ASM_CALL_C
- lds_test
- protect_mode_demo
- protect_mode_cpp_demo
- a20_not_open
- a20_open
- mm
- user_mode_demo
- 포크 _demo
- CP_ON_WRITE
- print_str_demo
- FS_DEMO
- exec_demo
- 쉘 _demo
- LS_DEMO
- exit_demo
- common_header_demo
b 웹 사이트 문서
- 01 목표 및 준비
- 02 두 방향 비교
- 03 제어 이진 파일
- 04 모드를 빠르게 보호하십시오
- 05 A20 주소 라인
- 06 8259a
- 07 mm