計算機システム概論・4回目 本日のトピック:メモリの管理と仮想記憶 メモリ管理におけるOSの役割 メモリの割当方法について

Slides:



Advertisements
Similar presentations
アルゴリズムとデータ構造 第2回 線形リスト(復習).
Advertisements

第2回 プロセス管理 ジョブ、プロセスとは? プロセスの状態遷移 プロセス制御ブロック スケジューリング.
オペレーティングシステムJ/K 2004年10月18日(5時限目)
オペレーティングシステム (仮想記憶管理)
情報検索概説II 第8回 パソコン組み立てと記憶装置 1999/11/25.
計算機工学III オペレーティングシステム #14 ファイル: より進んだファイルシステム 2006/07/21 津邑 公暁
Ibaraki Univ. Dept of Electrical & Electronic Eng.
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
第6回 仮想記憶とページング ページング ページ取り出し方式 ページ置き換え方式 中間テスト(40分)
オペレーティングシステム 第10回 仮想記憶管理(1)
システムソフトウェア講義の概要 計算機システムの復習:中央演算処理装置(CPU),プログラムの実行,主記憶装置,補助記憶装置
記 憶 管 理(1) オペレーティングシステム 第9回.
計算機工学III オペレーティングシステム #9 主記憶管理:ページング 2006/06/09 津邑 公暁
オペレーティングシステム (割り込み&仮想記憶管理)
基本情報技術概論(第12回) 埼玉大学 理工学研究科 堀山 貴史
入 出 力 管 理 オペレーティングシステム 6/26/09.
物理実験 I 情報実験第9回 2004/12/10 小西 丈予 2003/12/12 中神 雄一
計算機システムⅡ 主記憶装置とALU,レジスタの制御
オペレーティングシステム 第11回 仮想記憶管理(2)
オペレーティングシステム 第9回 実記憶管理 38号館4階N-411 内線5459
データ構造とアルゴリズム 第10回 mallocとfree
第6章 トランザクション管理 6.1 トランザクションの概念 6.2 同時実行制御 6.3 障害回復.
記 憶 管 理(2) オペレーティングシステム 第10回.
ソフトウェア階層 分類 具体例 応用ソフト 基本ソフト アプリケーションソフト 個別アプリケーション SEやユーザが開発するプログラム
オペレーティングシステムJ/K 2004年11月4日
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング システムプログラミング プロセス間通信(パイプ) 担当:青木義満
オペレーティングシステム 第12回 仮想記憶管理(3)
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
大きな仮想マシンの 複数ホストへのマイグレーション
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
問2.9 割り込みB 割り込みA 割り込みC (msec) 開始 停止 終了 走行レベル4 走行レベル3
Ibaraki Univ. Dept of Electrical & Electronic Eng.
専門演習Ⅰ 国際経済学部 国際産業情報学科 2年 石川 愛
メモリ管理 4.3, 4.4 章 さだ.
データベース設計 第2回 データベースモデル(1)
オペレーティングシステム (仮想記憶管理)
オペレーティングシステム (仮想記憶管理)
コンピュータを知る 1E16M009-1 梅津たくみ 1E16M017-8 小沢あきら 1E16M035-0 柴田かいと
VM専用仮想メモリとの連携による VMマイグレーションの高速化
プログラミング 4 記憶の割り付け.
アルゴリズムとデータ構造 補足資料11-1 「mallocとfree」
仮想メモリを用いた VMマイグレーションの高速化
オペレーティングシステム イントロダクション
Ibaraki Univ. Dept of Electrical & Electronic Eng.
オペレーティングシステムJ/K (仮想記憶管理)
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
データ構造とアルゴリズム 第11回 リスト構造(1)
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
明星大学 情報学科 2012年度前期     情報技術Ⅰ   第1回
オペレーティングシステム (プロセススケジューリング)
第4回 メモリ管理 主記憶(メインメモリ)の管理 固定区画方式と可変区画方式 空き領域の管理 スワッピング.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
2013年度 プログラミングⅠ ~ 内部構造と動作の仕組み(2) ~.
オペレーティングシステムJ/K (管理のためのデータ構造)
アルゴリズムとデータ構造1 2009年6月15日
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
コンピュータアーキテクチャ 第 5 回.
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
アルゴリズムとデータ構造 2010年6月17日
複数ホストにまたがるVMの 高速かつ柔軟な 部分マイグレーション
複数ホストにまたがるVMの メモリ使用状況に着目した高速化
明星大学 情報学科 2014年度前期     情報技術Ⅰ   第1回
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Presentation transcript:

計算機システム概論・4回目 本日のトピック:メモリの管理と仮想記憶 メモリ管理におけるOSの役割 メモリの割当方法について ページングと補助記憶 仮想記憶について

メモリ管理におけるOSの役割 メモリ(主記憶装置): プロセッサと情報をやりとりできる唯一の装置 プログラムや計算の途中経過,結果などを格納 プロセスに何かをさせようとすると,必ずメモリが必要 有限の容量しかない 複数のプロセスに対し,メモリを配分する仕組みが必要 ...OSのお仕事

実現したい仕組み OS とプロセスの間で,「メモリの貸し借り」を行う仕組みが必要 プロセスは,OS からメモリを借りる メモリを「割当て」てもらう 借りたメモリが不要になったとき,OS にメモリを返す メモリを「解放する」 メモリ 要求 プロセス OS メモリ 管理 機構 割当 プロセス 解放

メモリ管理機構の仕事 メモリ管理機構が行うべき仕事: メモリの貸し出し状況把握 どのプロセスに,メモリのどの部分を貸し出しているか メモリの中で,利用可能な部分(未使用領域)はどこか 割当要求への対処 未使用領域のどこを切り取って,プロセスに貸し出すか プロセス(仮想計算機)のアドレス解決 プロセスから見える仮想的な住所(アドレス)と, 実メモリのアドレスとの対応付けを行う

メモリの使用状況 メモリの貸し出し状況把握とは... どのプロセスに,メモリのどの部分を貸し出しているか メモリの中で,利用可能な部分(未使用領域)はどこか を管理,把握すること OS プロセス1 プロセス4 プロセス3 プロセス5 プロセス2 貸出中の領域 未使用の領域

状況把握の方法 どのプロセスに,メモリのどの部分を貸し出しているか プロセスごとに,どの領域を使っているか記録しておく レジスタ状態 メモリの開始アドレス 使用メモリサイズ  : プロセス メモリの中で,利用可能な部分(未使用領域)はどこか 連結リスト,双方向リストなどを利用して記憶しておく ... 連結リスト: ... 双方向リスト:

未使用領域の管理方式例 未使用領域の最初の数バイトを用いて,リストを表現 最初の未使用領域の場所 サイズ 次の未使用領域の場所 30 50 120 30 170 30 -1 30 80 120 150 170 200 あらかじめ決められたアドレス サイズの昇順(降順)で連結することも可能 上図は連結リストとしての実現.双方向リストも可

メモリの解放 プロセスからメモリが解放(返却)されたとき... 当該領域を「未使用」扱いに 必要に応じて,他の未使用領域と併合 解放 併合 使用中 未使用

メモリの割当 プロセスからメモリの割当を要求されたとき... 未使用領域の一部を切り出して,プロセスに貸し出す どの未使用領域から切り出すか ... いくつかの戦略あり 使える未使用領域がない場合の対応は? 要求サイズ A B 基本的には, すし屋のカウンターに グループ客を座らせる問題...と同じ

メモリ割当の戦略 要求サイズより大きな未使用領域の中で... (A) 最初に見つかったところから切り出す (first-fit) (B) もっとも大きな未使用領域から切り出す (worst-fit) 細かな未使用領域が多数発生することになり,損 (C) もっとも小さい未使用領域から切り出す (best-fit) 大きな領域を後に残しておけるので,全体的には得 要求サイズ A C B

戦略の違い 要求: の後に が来る場合 worst-fit戦略 割当不能! best-fit戦略 割当可能!

割当不能時の対処法 要求されたメモリ割当に使える未使用領域がないときは... 未使用領域ができるまで待つ 小さな要求が先に処理され,いつまでも空かないかも 使用中の領域を移動して,大きなスペースを作りだす メモリ内部の他の場所に移動 補助記憶装置等,メモリの外部に,一時的に追い出す 要求サイズ

領域の再配置について 使用中領域の再配置(移動,追い出し): 配置場所の変更を,プロセスには意識させたくない プロセス(プログラム)による「メモリの使い方」を十分理解し, その視野の外で動作する仕組みを作りだす必要アリ コンピュータのプログラム: 抽象化された仮想計算機上で動作するよう作成される メモリは,第 0番地から順番にすべて利用可能,と想定 仮想的なアドレスを使って,データ等の場所を指示 実動作時には,メモリ内のどこかに配置される

仮想計算機上のプログラム 仮想計算機内でのプログラム 100番地に配置 400番地に配置 仮想アドレスを実アドレスに変換する必要アリ 000: JMP 100 : 100: LOAD B, 200 200: 2Ah 仮想計算機内でのプログラム 100 JMP 200 : 200 LOAD B, 300 300 2Ah 100番地に配置 400 JMP 500 : 500 LOAD B, 600 600 2Ah 400番地に配置 仮想アドレスを実アドレスに変換する必要アリ

アドレス解決の仕組み 方式1) メモリ割当時に,どのラベルが何番地になるか計算する 配置場所の移動はきわめて困難になる 方式2) メモリベースレジスタ(MBR)をプロセスに持たせる アドレスの参照は,MBRの値により補正 MBRの値を変えれば,配置場所の移動は比較的容易 400番地に配置 MBR 400 仮想計算機内 400 JMP 100 (+ MBR) : 500 LOAD B, 200 (+ MBR) 600 2Ah 000: JMP 100 : 100: LOAD B, 200 200: 2Ah

ここまでのまとめ 計算機のメモリは,OSのメモリ管理機構が管理する メモリ管理機構は,プロセスからの動的な要求に対応する 未使用領域の管理には,リスト構造の利用が便利 best-fitting戦略を使えば,割当の効率がよい MBRを用いてアドレス解決を行えば,再配置が容易 ここからのおはなし ページ単位でのメモリ管理にすれば,もっと効率アップ MBR方式を拡張する必要あり 仮想記憶方式との整合性も良い

メモリの「ページ」 ページ:メモリを管理するときの1ブロック 典型的な1ページ=4096バイト分のメモリ 基本的なアイデア: メモリ全体を多数のページに分割する プロセスの持つメモリも,ページに分割して管理 プロセスは,ページ変換表を使ってページの対応を管理 (MBRは使わない) この方式の良いところ: 必ずしも連続したページを割り当てる必要がない

ページの管理 実際のメモリ 使用中ページ 未使用ページ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 プロセスの持つ ページ変換表 1 2 3 14 6 9 内部番号 実ページ番号 14 6 9 2 ページ変換表を利用することで, 連続したメモリ領域を保持して いる場合と同等に扱える

プロセス内でのアドレス管理 ページサイズを S とする プロセスが,自分のメモリの先頭から M 番目にアクセスする: M = PS + Q となる P と Q を計算する P...プロセス内で何ページ目にあたるか Q ...そのページ内で,先頭から何番目か ページ変換表の P 行目を参照し,実ページ番号 R を得る メモリの RS + Q 番地が,アクセスすべき番地 実際のメモリ番地への変換は,OSが行う (プロセスは,OSに対して M 番地の内容を問い合わせるだけ)

アドレス変換の例 ページサイズを S = 1000h バイトとする プロセス内の 28F4h 番地にアクセスしたいとき... 28F4h = 2x1000h + 8F4h 実ページ番号は 9 メモリ 9 ページ目の 8F4h 番地  = 98F4h番地を参照 1 2 3 14 6 9 内部番号 実ページ番号 0000 1000 2000 3000 14 6 9 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0000 1000 2000 3000 4000 5000 6000 7000 8000 9000 A000 B000 C000 D000 E000 F000 10000 11000 12000 13000

ページ単位でメモリ管理をする利点 使い道のない,小さな未使用領域の発生を抑制 「断片化の問題」が少ない 一つのプロセスに,連続したメモリを割当てる必要がない 割当場所の違いは,ページ変換表を使ってOSが吸収 2番目の利点をもっと積極的に利用すると... ページの場所を移動しても,比較的簡単に対応可能 (プロセスのページ変換表を書き換えるだけ) ページを,メモリ以外の場所に一時退避することも可能 実際のメモリ容量以上のページを確保することも可能 ⇒仮想記憶

主記憶装置と補助記憶装置 準備: メモリのページを一時退避するための補助記憶装置を用意 (スワップ領域:ハードディスク等の高速装置を利用) アドレス変換表を拡張 (退避中か否か,退避場所に関する情報を持たせる) メモリ(主記憶装置) アドレス変換表 ディスク(補助記憶装置)

ページアウト 主記憶上の未使用ページが少なくなってくると... OSが,補助記憶装置に掃出すページを選択する 掃出すページの内容を補助記憶装置へ転送 掃出された跡地を未使用扱いに 掃出されたページを指していたアドレス変換表を更新 ページアウト スワップアウト

ページイン ページアウトされていたページが参照されると... 割込み(ページフォルト,アドレス変換例外)が発生 主記憶の未使用ページへ,補助記憶からデータ転送 アドレス変換表を更新 ページイン スワップイン

ページアウトの戦略 ページイン:参照されたページを読み込むだけ ページアウト:どのページを掃出すか,選択の余地あり 参照される確率が低そうなページをページアウトしたい 「メモリ参照の局所性」を利用 プログラム実行中のある時点でA番地のメモリを参照 ⇒A番地付近のメモリも参照される可能性が高い メモリのページ毎に,「最近いつ参照されたか」を記録しておく 「近々には使われなさそうなメモリページ」をページアウトする

LRU法 LRU法 (Least Recently Used) 「最近最も使われなかった」ページを掃き出す戦略 グローバルLRU法: 対象ページがどのプロセスに属するか無関係に, とにかく最近使われていないものを掃き出す ローカルLRU法: 優先度の低いプロセスを特定し,そのプロセスに 属するページをLRUで掃き出す

仮想記憶 ページイン,ページアウトが可能であれば, プロセスの全てのページが,主記憶上にある必要はない 仮想記憶: プロセスに「見せる」アドレス空間を,実際のメモリの アドレス空間とは分離して管理する仕組み プロセスに対し,実際のメモリサイズよりも大きな メモリサイズを提供することが可能 ただし,頻繁にページイン・ページアウトを繰り返すようだと, 実行効率は大幅に悪化する

メモリ管理に関連するその他の概念 デマンドページング,プリページング 実際に参照されたページのみページインする(デマンド–) ページ参照を予測し,事前にページインを行う(プリ–) スラッシング メモリの割当要求が過剰で,プロセッサがページイン, ページアウトにばかり時間をとられて仕事が進まない様子 近年の計算機...巨大なメモリを持つようになった ⇒ スラッシング,ページングが発生する機会も少なくなった

本日のまとめ メモリ管理について 未使用領域の管理と割当戦略 ページング 仮想記憶 次回の講義:ファイルシステムについて 課題(結果の提出不要): UNIXベースのOSで vmstat を実行し,メモリ使用状況や ページイン・アウトの様子を観察せよ