View 開発進捗状況
2008/09/25
【機能追加】第三スラブキャッシュの初期化・登録及び取得ルーチンの作成
→ 新しいスラブキャッシュを作成。システムメモリの 1/2 を管理。ユーザーランドにマッピングする領域のスラブ。
[備考]テスト済み。開放ルーチンは未実装
【修正】メモリリーク問題の修正
→ スラブオフセットの廃止。代替機能にビットマップを使う。
2008/09/28
【修正】第三スラブキャッシュの初期化・登録及び取得ルーチンの作成
→ normal スラブ開放ルーチンの実装
【機能追加】仮想領域へのマッピングルーチン
→ 拡張ページング機構における仮想領域へのマッピングルーチン
[備考] 拡張ページの見直しについての問題
【機能追加】read システムコールの実装
→ ブロック毎にファイルデータを連結して、指定されたバッファにコピーする。
[動作]
・ファイルオフセットから指定された長さのファイルデータを読み込む
・ファイルサイズを越えるデータの読み込みを禁止
[制限事項]
・標準入力の仕様を明確にするまでサポートしない
・ACL を無視
【修正】ブロックに跨る読み書きの動作
→ ブロックに跨る読み書きの動作の修正
【修正】その他。細々した修正
→ メモやトラッキングシステムに上げる前に修正し、忘却。
2008/10/03
【修正】ブート時の PS/2 マウスチェックをはずす
→ 当面マウスサポートをしないので、ブート時にチェックしない
2008/10/25
【修正】is_file()
変更前
→ ディスクを参照し、ディレクトリエントリから対象のファイルが存在する事を確認。
変更後
→ ディレクトリツリーを捜査し、対象ファイルがあるかを判定
→ inode で指定したディレクトリをツリーから探し、次に指定したファイル名のファイルが探し出したディレクトリ中に存在するかをチェック。"." と ".." は例外扱い。
効能
→ ディスクを参照しないで済む
2008/10/26
【修正】get_inode_from_name()
修正後
→ 主に is_file() の修正と同様。他、ディレクトリ参照の際、directory_tree ではなく、ディスクを参照しているルーチン多数。要修正。
2008/12/22
ダイナミックリンカの作成。実行ファイル中に記載されたインタプリタを呼び出す。ld-linux.so の呼び出しルーチンを作成中
2008/12/23
プロセス用のページアロケータの修正。
プロセス用のマッピングルーチンが旧来の拡張ページのまま。修正。
ページテーブル用のメモリアロケータが機能せず。明日に持ち越し。
2008/12/24
ページテーブル用のメモリアロケータの問題の原因
→ ページの初期化時に、カーネルページ (0版目のページ) を考慮していなかった為。大容量 (128MB 程度) のメモリを積んでいる場合には顕在化しなかった為、発見遅れる。
【今後の方針】
デバイス関連の開発に注力
2008/12/26-27
実機での起動実験。
→1 GB を越えるメモリを積んだマシンではストレートマッピングが出来ない問題。
→KDATA からのスラブの取得に難あり。
2008/12/28
○ 実機で KDATA からのスラブ取得時に失敗する問題。解決
→ (原因) PDT のスラブ初期化に問題あり。予約領域を上書きしてた(いつぞやの不用意なコード修正)。修正
○ 実機で、セグメント変更後に割り込み許可を行うと、特定マシン (HP ProLiant ML115 G3) で一般保護例外が発生する問題。修正
→ ゲートディスクリプタの設定の問題。問題が顕著化しないマシン (テストマシン2, IBM X22) もあったりする。
○ 新しいディスクデバイスを積んだ起動、参照に成功。
2008/12/29
○ 新デバイス対応
→ ATA の PIO 通信におけるマルチセクタ転送の機能がデバイス側に備わっていないので、通常の PIO 転送を利用。割り込みを使ったマルチ転送をしていなかったので、他の影響は(たぶん)無い。
→ 新デバイス側での read/write が実現できた。が、調子がよろしくない。電気的な問題の可能性あり。【要調査】
【今後の方針】
キャッシュの設計に注力。
2008/01/02-04
○ 新デバイス対応
→ ファイルシステムの作成成功。
○ ディスク容量の 8 GB の壁を克服
→ CHS 方式における容量算出の修正。LBA 転送方式におけるセクタ数をカウント。
○ ファイルシステムに関する細かな修正
○ キャッシュの設計
→ ドキュメントを docs/cache_layout.txt に置く。開発はこれを基に行う。
○ キャッシュの製作 [現在進行中]
2008/01/05-08
○ キャッシュの製作
→ キャッシュファイルシステムの作成。
→ ディスクの Ext2 ファイルシステムから各種情報を抽出して、docs/cache_layout.txt のフォーマットにキャッシュインする処理 (初期化処理)
○ 上位のブロックグループからデータを読み込めない問題
→ 上位を指定すると、求めるブロック番号がズレる
[原因]
・read_inode_bitmap, read_data_bitmap そして read_group_disc から共通に呼び出される read_group_data の処理がおかしい。
→ こいつは、グループディスクリプタを読み出す処理を、ビットマップを読み出す処理から呼び出せるようにしたものだが、ビットマップは各ブロックグループに一つしか存在しないのでこれを無理矢理同じ関数から取得すると汚くなる。
→ ブロックグループディスクリプタを読むルーチンだけ分ける。
○ ビットマップの初期値の問題
→ ドキュメント化されておらず、非常にわかりづらい。上位レイヤに対しては、0番目をビットマップの先頭とする (修正:write_bitmap)。
○ キャッシュファイルシステムのブロックグループのメタ情報のフォーマットの変更
→ Ext2 の順番に揃える。今までのは混乱の元になる。
2009/03/24
○ キャッシュ構造を単一ハッシュ構造に変更
[memo]
キャッシュに関しては dev/cache_design.txt を参照
| |