-
単一連続割り付けとは 短所
OSの領域とユーザプログラム(単一ユーザ)の領域 の2つに分けて管理
・ユーザプログラムがOS領域を 破壊する可能性がある(バグ、 あるいは故意)
・ユーザプログラムが利用できる領域のサイズは、物理的なメモリ装置のサイズに制限される
-
連続割り付け方式におけるマルチプログラミングとは 短所
OSの領域と、複数のプロセスの領域を動的に管理
各プロセスの実行に伴い、必要とする大きさの領域を割り当て、不要になったら再利用する必要がある
・プロセスが互いに領域を破壊したり、情報を覗き見てしまう可能性がある
・プロセスごとに連続した領域を割り当てる方法は、効率的な実装が困難
-
アドレス空間とは
メモリにおいて、アドレスを使ってアクセス可能な領域(空間)のこと
-
物理アドレス空間とは
アドレスが、物理的なメモリ装置(実記憶装置)上の位置を表す(さらにメモリ装置に実際にアクセス可能な)アドレス空間
ここで使われるアドレスを物理アドレス または 実アドレス と 呼ぶ
-
論理アドレス空間とは
OSとハードウェアによって、アドレスに対応する記憶領域がある ように見せかけられているアドレス空間
ここで使われるアドレスを 論理アドレス または 仮想アドレス と呼ぶ
-
プロセス領域4つ
(A) コード:変更されない。複数のプロセスで共有可
(B) データ:データ部分。共有されることもある
(C) ヒープ:動的なデータ領域。共有されることもある
(D) スタックフレーム:個々のプロセスのみが使用
-
下限レジスタ機構とは
ユーザプロセスがOSの領域にアクセスしないようにするためのハードウェアによる仕組み
前提:OSの領域が物理アドレス空間で低いアドレス位置に存在している
OS領域とユーザ領域の境界のアドレスを下限レジスタに格納しておき、ユーザプロセスがこれよりも低いアドレスにアクセスすることを禁止する
ユーザモードでの動作の際に有効 ハードウェアなので、オーバーヘッドは発生しない
-
ロック・キー機構ができること
メモリへのアクセスの際、許可された権限によるアクセスかどうかをハードウェアで調べることが可能
-
固定区画割り付けの前提 概要 問題点
前提
プログラムの実行開始時に必要な大きさ が分かっている(静的な領域要求)
主記憶は固定された大きさのいくつかの区画に分けられている
概要
新たなプロセスに対し、実行に必要なサイズの空き区画があればそこに割付ける
十分なサイズがなければ他のプロセスが終了するまで待つ
問題点:区画数と区画サイズの決定は難しい
使われない無駄な領域が(ほとんど常に)存在する
-
可変区画割り付けの前提 概要
前提
プログラムの実行開始時に必要な大きさが分かっている
(静的な領域要求)
区画をあらかじめ区切らない
領域は(リスト管理法(後述)などで)動的に管理
概要
最初はユーザ領域全体が1つの領域
ジョブが到着すると、必要な大きさの空き領域を探し、必要な分だけ割り当てる
ジョブが終了すると、領域は再利用される
十分な領域がなければジョブは待たされる
- 優先順位の低いものを先に行うこともあり得る
-
フラグメンテーションとは
領域の割り付けと解放を繰り返しているうちに、
割り付けて有効に利用できない、サイズの小さな
未使用領域が発生してしまう現象
-
内部フラグメンテーションとは 2
割り付け区画の中に無駄な部分ができる
固定長の領域割り付けで発生しやすい
-
外部フラグメンテーションとは
割り付けた領域の間に無駄な小さな領域ができる
可変長の領域割り付けで発生しやすい
-
1/2ルールとは
可変長のメモリ領域の生成、解放を繰り返す場
合において、統計的に平衡状態であるならば、
メモリの1/2は空き領域である
-
コンパクションとは
=デフラグ
外部断片化を解決するために、断片化している
空き領域をまとめて大きな領域を作る
-
空き領域の割り付け方針 3
1. 最良一致 (best-fit)
○ジョブが実行可能な、最も小さな空き領域を割り当てる。
×空き領域を大きさ順で管理していなければ、全探索が必要。
×割り当て後に、何にも利用できない小さな領域が残りやすい。
2. 先頭一致 (first-fit)
○空き領域の中で最初に見つかった十分な大きさの領域を割
り当てる。最も高速。
3. 最悪一致 (worst-fit)
○ジョブが実行可能な、最も大きな空き領域を割り当てる。
使わない部分を分割した場合にできる領域は、(最良一致などと 比較して)大きいので有用。
× 空き領域の大きさが均一化し、大きな領域を確保しにくい。
-
ビットマップ法とは 長所短所
固定長の領域ごとに、1ビットのフラグをあてて管理する
長所:管理が簡単で、割り付けや解放に要する時間が一定かつ高速とな る(→リアルタイムOS向き)
短所
全体が可変長である領域を対象とす る場合、複雑な領域分割や管理が必 要となり、最適化が難しい
内部フラグメンテーションが避けら
れない
-
リスト法とは 長所短所
空き領域の情報を線形リスト
で管理
領域の管理方針に適した方法で
情報をソートしておく
- 例えば大きさ順でソートすると最 良一致が実装できる
固定長、可変長のどちらの領域
管理にも適用できる
短所
割り付け処理も解放処理も、ど
ちらも複雑で遅い
可変長領域の管理では、外部フ
ラグメンテーションが避けられ
ない
-
再入可能とは
(リエントラント: reentrant)
データ領域がプロセスごとに用意され、互いに影響しない
複数のプロセスが同時に同じプログラムを実行可能
-
再配置とは 静的 動的それぞれ
相対番地形式のプログラムのアドレスを、実際に割付けられたアドレスに変換すること
再配置可能 (リロケータブル relocatable)
静的再配置:主記憶にロードするときに再配置
動的再配置:実行中に相対番地を絶対番地に変換しながら実行する
-
スワッピングとは 手順2
実行中のプロセスが待ち状態になったら、別のプロセスを代わりに実行したい
(1) 現
在メモリにあるプロセスの情報を、二次記憶装置 (バッキングストア)に保存(スワップアウト)
(2) 新たに実行するプログラムをロード、あるいは
(2’) 中断されていた別のプロセスの情報をメモリに復帰(スワップイン)
-
オーバレイとは
プログラムを構成するモジュールのうち、必要なものだけをメモリにロードしておく
当面は不要なものを二次記憶装置に置いておく
必要に応じて実行中にモジュールを入れ替える
プログラマがモジュールの物理的なサイズを考慮してオー バレイ構造を決定する必要がある
-
リンカとは UNIXのツールは
リンカとは、機械語のプログラムの断片を適切に結合し、実行可能なプログラムとして生成するためのプログラム
ld
-
静的なライブラリとは
リンク時にライブラリの内容を実行可能ファイルに含める
実行可能ファイルのサイズが大きくなるが、実行時には実行可
能ファイルだけがあればよい。
Unixでは *.a というファイルが使われる。
-
実行時結合・ダイナミックリンクとは
独立性の高いプログラムモジュール(ライブラリなど)を、実行中に必要に応じてメモリに読み込んで利用する方法
複数プロセス間で同じライブラリを共有できる。再入可能なライブラリは、メモリ中に1つだけあればよい
モジュールごとに更新が可能。そのたびに実行可能ファイ ルを再構築する必要はない。
-
静的動的リンクの概念 つぎ図でます!
-