Linux 0.11システムファイルを変更することにより、簡単なシステム呼び出しを追加します
ubuntu20.04.1仮想マシンでは、bochsを使用してLinux0.11コンパイルされた画像ファイルを実行してLinux0.11をコンパイルするには32ビットGCC環境が必要であり、シンプルで実行可能な環境構成リンクが添付されています。
Linux 0.11システムファイル(Bochsで実行)を変更することにより、実装は簡単なシステム呼び出しを追加することです。これがコールnameout.c出力です。「こんにちは、私はlwhです」
プログラムnameout.cをユーザーレベルで記述し、ウィンドウを開き、Syscallマクロを介してシステム関数を呼び出し、sys_nameoutシステム関数を呼び出します。 name.cのファイル形式でlinux0.11システムカーネルに保存されている関数sys_nameoutを書き込みます。 sys_nameoutは、printk()を呼び出して印刷を完了します。 makefileファイルを変更して、追加するカーネル/who.cをコンパイルして他のLinuxコードにリンクできるようにします。

詳細な手順:IAMおよびWhoamiシステムの呼び出し番号(_NR_XXXXXX)のマクロ定義を追加
ファイルパス:/linux-0.11/** include/unistd.h ** 
システムコールファイルパスの総数を変更するパス:/linux-0.11/**Kernel/system_call.s ** 
新しく追加されたシステムコールにシステムコール名を追加し、システムコールテーブルファイルパスを維持します。

新しく追加されたシステム呼び出しのコード実装を書き込み、ファイルname.cを作成します。

name.cでprintk( "hello、im lwh")を書き込みます
MakeFileを変更します
追加するカーネル/who.cを許可するには、コンパイルして他のLinuxコードにリンクできます。MakeFileファイルを変更する必要があります
ファイルパス:/linux-0.11/kernel/makefile

テストプログラムの作成
これまでのところ、カーネルで変更する必要がある部品が完了しています。次に、新しく追加されたシステム呼び出しがlinux-0.11カーネルにコンパイルされているかどうかを確認するために、テストプログラムを作成する必要があります。
ファイルパス:/slab/namein.c/oslab/nameout.c

/ * nameout.c */
#defineライブラリ
#include <unistd.h>
#include <errno.h>
#include <asm/segment.h>
#include <linux/kernel.h>
#include <stdio.h>
_syscall2(int、nameout、char *、name、unsigned int、size);
int main(int argc、char *argv [])
{
char username [64] = {0};
/ Calling System call nameout() /
nameout(username、24);
printf( "%s n"、username);
0を返します。
}
マウントメソッドを使用してホストと仮想マシンオペレーティングシステム間のファイル共有を実現するには、 oslabディレクトリで次のコマンドを実行して、HDCディレクトリを仮想マシンオペレーティングシステムにマウントします

Linuxカーネルファイルパス: /oslab /linuxをコンパイルします
ターミナルでMakeコマンドを実行します
成功します
Bochs仮想マシンファイルパス: / OSLAB /ターミナルを実行して実行コマンドを実行する
仮想マシンにLinux-0.11:/usr/include/unistd.hの新しいコール番号ファイルパスを追加します(取り付け後にグラフィカルインターフェイスで変更することもできます) 
(仮想マシンで変更された場合)
(取り付け後にホストのグラフィカルインターフェイスで変更された場合)

GCC Runはケーステキストを正常に出力します


ディスクスケジューリングは、FIFO(First Come First Service)、SSTF(最短のSeek Priority)、およびスキャン(エレベータースケジューリングアルゴリズム)を使用して実行されます。
スケジューリングの順序を表示し、移動トラックの平均数を計算します
ファイルシステム呼び出しを使用してファイルツールFiletoolsを作成して、次の機能を持つようにします。
新しいファイルを作成し、ファイルの書き込み、ファイルの読み取り、ファイルアクセス許可の変更、現在のファイル許可を表示し、終了します
パイプラインを使用して、親と子のプロセス間のプロセスコミュニケーションを実装する
320の命令シーケンスを生成します
命令シーケンスをページアドレスストリームに変換します
ファーストインファースト(FIFO)ページ順列アルゴリズム、最新および最も長期にわたるページ順列アルゴリズム、および異なるメモリページブロックの下での最適(最適)ページ順列アルゴリズムのヒットレートを計算します
パイプラインを使用して、親と子のプロセス間のプロセスコミュニケーションを実装する
メッセージバッファキューを使用して、クライアントとサーバーのプロセス間の通信を有効にします
共有ストレージを使用して、2つのプロセス間のプロセス通信を実現する