BCPLのわずかに変更されたバージョンで書かれています
(http://rabbit.eng.miami.edu/class/een521/bcpl-2.pdf)
Intel 80486エミュレータの場合
- http://rabbit.eng.miami.edu/class/een521/hardware-1.pdf
- http://rabbit.eng.miami.edu/class/een521/hardware-2a.pdf
- http://rabbit.eng.miami.edu/class/een521/intel486vm.pdf
博士によって書かれたエミュレータ。スティーブン・マレル
(ソースコード:http://rabbit.eng.miami.edu/class/een521/een521.zip)
このリポット内:
- start.B:仮想メモリ(80846。4GBメモリ= 512ページ * 2048ページあたり2048ワード= 32ビット)
6つの別々の領域のページテーブルを備えたページディレクトリ
仮想アドレス空間(ユーザーおよびシステムコード、ヒープ、スタック)の - OS.B:ヒープとスタックを成長させるページフォールトハンドラー
ユーザープログラムを読んで実行する能力
Exit()システムコールは、システムFP、SP、およびPCを復元し、CPUフラグを設定し、ユーザープロセスページをリサイクルします
割り込みベースのキーボード入力システム
コマンドラインシェル
(プロセス中)実行可能なプロセスのキュー - NewVec.B: NewVecとFreevecでヒープを割り当ててリサイクルします
- file_system.b: Basic File System(MKDIR、CD、RMDIR、FCREATE、FDELETE、FOPEN、FCLOSE、FWRITE、FREAD)
- SYS_LIB.B:ユーザープロセスの基本システムコールAPI
- ユーザープロセスXB、YB:テスト用
今のところ、ディレクトリエントリはそれぞれ1つのブロックに制限されています(128ワード= 512バイト)、
つまり、ディレクトリは16の子ファイルとディレクトリに制限されています。これらの子供
ディレクトリも16のエントリなどに制限されています。
各ディレクトリには次のものが含まれます。
- 512バイト
- 28バイトの最大16の構造体で、それぞれが子ファイルまたはディレクトリを説明しています
- ディレクトリ名の6バイト
- 親ディレクトリのディスク上の場所の4バイト
ファイルは場所ホルダーとしても機能し、1つのヘッダーブロックを含む
28記述情報の言葉:名前、許可、作成された時間など
ファイルのコンテンツへの100のポインター。
100ポインター * 512ブロックあたりバイト=最大ファイルサイズ50kb
- ディレクトリは、開くには1枚のディスク読み取りが必要です
- ファイルは1つのディスクを取得してヘッダーブロックを開くために読み取ります
さらに、1つのディスクが読み取り、最大100ブロックの内容物のそれぞれにアクセスします
目標は、基本的なファイルシステム(ファイルとディレクトリのサポート)を持つことでした
基礎となるオペレーティングシステムをテストし、問題をキャッチする
最適化する前に。テストされている機能は次のとおりです
- 仮想メモリ、6つの別々の領域のページテーブル付きページディレクトリ
仮想アドレス空間(ユーザーおよびシステムコード、ヒープ、スタック)の - ヒープとスタックを成長させるページフォールトハンドラー
- ユーザープログラムを読んで実行する能力
- exit()システムコールシステムFP、SP、およびPCを復元する
CPUフラグを設定し、ユーザープロセスページをリサイクルします - 割り込みベースのキーボード入力システム
- NewVecとFreevecでヒープを割り当ててリサイクルします
進行中
- 順番に実行されるユーザープロセスのキュー
- フリードとFWRITEのテスト
次は
- b+ツリーは、最小限のディスク読み取りで大きなファイルを付与する