このコードは多くの場所でそれほど適切に見えない場合があり、遅かれ早かれリファクタリングされます。新しい倉庫回復-S。私が戻ってきてピットを埋めるのを待ってください。リファクタリングバージョン:https://github.com/yiezias/recover-os
このプロジェクトは、「オペレーティングシステムの真実復元」によって実装されたオペレーティングシステムのAMD64アーキテクチャ(またはx86_64アーキテクチャ)バージョンに基づいています。主なアイデアとコードは、元の本と一致しています。
「オペレーティングシステムのTruth Restore」によって実装されたオペレーティングシステムは、32ビットX86アーキテクチャプロセッサで実行されますが、現在は64ビット時代に既に入力されています。だから私コピー64ビットバージョンを実装するには、「オペレーティングシステムの真実復元」のコードを参照してください。
$ make run Bochsエミュレータをコンパイルして起動できます。
このオペレーティングシステムには、2048年、ヘビ、その他のミニゲームが組み込まれています。
回復したコードを書き込む:
(端子は入力と出力のリダイレクトを実装しておらず、下の猫はLinuxの下の猫とは異なります)
(テキストファイルを書く機能を表示するだけです)

2048ミニゲーム:

貪欲なヘビ(フレームドロップは深刻なので、アニメーションを手放すことはありません):

私が読んだ、詳細で興味深いもので最もわかりやすい本。それが少し長く見えるとしても、著者はまだ読者に理解させるためにさまざまな方法を試す必要があります(どこでこのようなフレンドリーな本を見つけることができますか)。多くのオペレーティングシステム関連の本の中で、私はついにこれを選びました理解できる唯一のものオペレーティングシステムの本の実装。
主にAMD64とX86アーキテクチャの違い
AMD64アーキテクチャの下では、関数は通常、レジスタを使用してパラメーターを渡し、X86の下での関数呼び出し条約には参照値はありません。しかし、それ自体を理解するのは簡単です。 C関数を詳細に記述し、それをアセンブリにコンパイルすると、GCCで書くことで理解できます。この知識は、開発プロセス中に多くの場所で必要です。
ロングモードは64ビットとして理解できます特徴保護されたモードでは、プロセッサは実際のモードから保護モードからロングモードに切り替える必要があります。
情報を取得するための最も便利な方法はもちろん検索エンジンですが、検索エンジンはしばしば必要なコンテンツを見つけることができず、真に権威ある情報はまだAMDまたはIntelドキュメントです。
このシステムは、システムコールの実装を中断する方法を完全に放棄し、Syscall Sysret Fast System Call命令を使用して実装します。詳細については、AMDまたはIntelのドキュメントを参照してください。コンテンツは複雑ではありません。
著者のファイルシステムはあまりよく書かれていません。一方では、ファイルシステムはすでに非常に複雑ですが、著者はしばしば数百列の関数を使用し、一部のコードを再利用できますが、繰り返し実装する必要があります。これは全体的に非常に混乱しています。このシステムファイルシステムは、著者の大きな変化と同等ですが、著者の本とコードに基づいて理解するのは難しいことではありません。このシステムのファイルシステムは、ディレクトリレベルの機能を実装していませんが、システムの他の機能の実装に影響しないため、省略されています。
著者のシェルはカーネルに実装されています。このシステムはアプリケーションとしてシェルを使用し、initプロセスはexecvシステムコールを使用してルートディレクトリシェルをロードします。著者システムの多くの組み込みコマンドも、このシステムのアプリケーションとして直接実装されています。ただし、コードレベルは似ています。また、オペレーティングシステムインターフェイスを呼び出してアプリケーションを独立して実装できる特別なミニゲームもあり、このシステムは基本的に完了しています。