LANOS -Linux0.12のナレッジポイントシリーズを明確にします
这个工程的目标是梳理《Linux源码剖析》的知识点并从0.12版本的源码中抠出部分代码构建一个
能用现代linux发行版方便编译的迷你系统,从而验证各个知识点
Bilibiliビデオチュートリアル
参照リソース
- 「Linuxソースコード分析」最新の電子バージョン
- Linux 0.1xソースコード
- Oldlinuxの公式ウェブサイト
- Orange's:オペレーティングシステムの実装
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ナレッジポイントシリーズを明確にして、アセンブリをcにしなくなりました
- Linux0.12ナレッジポイントシリーズのA20アドレスラインを明確にする
- Linux0.12ナレッジポイントシリーズで8259Aの初期化とクロック割り込みを明確にする
- 8259a原則の詳細な説明
- オンライン関連情報ソート
血と涙
- ユーザーモードにジャンプします
- 予備のデバッグフォーク
- フォーク+書き込みのコピー
- グローバル変数について
その他の指示
トト
print_strの実装20200224を完了しましたprint_num実装20200224を完了しましたLAN_FS実装20200224を完了しましたExec実装20200224を完了しました実装を終了します終了20200304
最終効果ディスプレイ
LSプログラムを実行できるシンプルなシェルとファイルシステムがあります
エグゼクティブシステムコールをサポートし、アプリケーションを実行できます
1つの実行可能プログラムの実行中に、別のプログラムを実行し、マルチタスクがサポートされていることを示します
ループプログラムの実装
詳細については、こちらをご覧ください
最終的なデモリンク
詳細については、こちらをご覧ください
歴史的なデモの注文
- ASM_INT_80
- ASM_CALL_C
- LDS_TEST
- Protect_mode_demo
- Protect_mode_cpp_demo
- a20_not_open
- a20_open
- mm
- user_mode_demo
- fork_demo
- CP_ON_WRITE
- print_str_demo
- FS_DEMO
- exec_demo
- shell_demo
- LS_DEMO
- exit_demo
- common_header_demo
B Webサイトドキュメント
- 01目標と準備
- 02 2つの方向の比較
- 03制御バイナリファイル
- 04モードを迅速に保護します
- 05 A20アドレスライン
- 06 8259a
- 07 mm