オペレーティングシステムJ/K (管理のためのデータ構造) 2005年10月27日 酒居敬一([email protected]) http://www.info.kochi-tech.ac.jp/k1sakai/Lecture/OS/2005/ 配列 1 • 添え字とデータが1対1で対応 • 添え字は連続 2 – 添え字が1から始まるとは限らない 3 • データの挿入や削除は面倒 4 … … 添え字を用いてアクセスする(例では3) n • ディレクトリエントリ • メモリ管理表(ページテーブルなど) 配列上の探索 添え字を用いて 直接アクセス 先頭から 順に調べる 図2.1.4 直接探索 図2.1.5 教科書30ページ 線形探索 配列上の探索 半分ずつ調べます 1)半分に分ける 2)前半に存在するか調べる 前半にあれば前半について探索 後半にあれば後半について探索 ※探索のためにデータの整列が必要 図2.1.6 教科書31ページ 二分探索 [Intel, ``Software Developer Manual’’] ※仮想記憶を説明するときに詳細を説明します。 [Intel, ``Software Developer Manual’’] The IA-32 Intel Architecture Software Developer’s Manual, Volume3: System Programming Guide 目に付くところに存在するCPUの一例。 [Intel, ``Software Developer Manual’’] メモリと配列 • 計算機のメモリは一種の配列である – プロセッサの命令が扱える単位を要素としている • byte, word, dwordのような整数 • float, double, long doubleのような不動小数点数 • qword, dqwordのようなショートベクタ整数 • プログラミング言語による多彩な要素をもつ配列 – プログラミング言語のコンパイラが変換してくれます • 気にしなくてもいいんですが、場合によります… 待ち行列(FIFO) データ挿入 データ取得 図2.3.1・2.3.2・2.3.3 教科書38・39ページ 待ち行列(データの挿入・取得) 連結リスト • データをそれぞれの要素に格納 • 要素どおし、つながってリストを形成 先頭 データ データ データ 次 次 次 データを動かすことなく、要素の挿入・削除ができる 双方向連結リスト • 連結リストを双方にリンクしたもの データ データ データ 先頭 次 次 次 最後 前 前 前 両方向から探索できる リングバッファ 配列の最初と最後を接続して環にしたもの 2つのポインタでデータの出し入れを管理 データの先頭を指すポインタ head, front データの最後尾を指すポインタ tail, rear 2つのポインタが重なったらデータは空 領域の大きさをnとしたらポインタの位置はnとおり データの数が0からnまでn+1とおりある ポインタが重なったら、空か満杯の状態が重なる… スタック(LIFO) プッシュ ポップ スタックポインタ スタックポインタ 一時変数、レジスタのセーブ先など 木構造 ルートとそれ以外の ノードにちょうど1つだけ の経路しか存在しない ルートノード 図2.5.1 教科書46ページ エッジ ノード 末端ノード ハッシュテーブル データ データ キー1 データ データ キー2 データ データ キー3 データ ハッシュ関数 データ パスワードファイル、メイルのエイリアスデータベースなど 構造とは? • 全体を形づくっている種々の材料による各 部分の組み合わせ。作りや仕組み。 • さまざまな要素が相互に関連し合って作り 上げている総体。また、各要素の相互関係。 • 階層的な構造 わかりやすい文書やプログラム データ構造 • ひとつまたは複数のデータを編成し保持する 構造のこと • データ構造どうしは関連している • 例:このppt原稿 – 見出し • 箇条書きの内容 アルゴリズム • アルゴリズムは必ず問題を解決するもの • ひとつまたは複数のデータを操作し目的の 結果を得るための一連の処理手順 • 例: 交差点を渡りたい(=問題) – 信号があるか? – 信号がないならば、どうするか?
© Copyright 2024 ExpyDoc