オペレーティングシステム i386アーキテクチャ(2)

Slides:



Advertisements
Similar presentations
Linuxを組み込んだマイコンによる 遠隔監視システムの開発
Advertisements

Ibaraki Univ. Dept of Electrical & Electronic Eng.
第6回 仮想記憶とページング ページング ページ取り出し方式 ページ置き換え方式 中間テスト(40分)
オペレーティングシステム 第10回 仮想記憶管理(1)
記 憶 管 理(1) オペレーティングシステム 第9回.
計算機工学III オペレーティングシステム #9 主記憶管理:ページング 2006/06/09 津邑 公暁
オペレーティングシステム i386アーキテクチャ(3)
オペレーティングシステム (割り込み&仮想記憶管理)
計算機システムⅡ 主記憶装置とALU,レジスタの制御
オペレーティングシステム 第11回 仮想記憶管理(2)
情報実験第 7 回(2014/05/30) 最低限UEFI Ⅱ ~OS インストール, 起動~
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
App. A アセンブラ、リンカ、 SPIMシミュレータ
2006年度 計算機システム演習 第4回 2005年5月19日.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
オペレーティングシステム (割り込み処理)
Linuxカーネルについて 2014/01.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
問2.9 割り込みB 割り込みA 割り込みC (msec) 開始 停止 終了 走行レベル4 走行レベル3
割 込 み(1) オペレーティングシステム No.5.
第17回カーネル読書会 2001年10月17日 高杉@YLUG YLUG読書会
割り込み.
Web 2.0 Conference 2005 実行時自己書き換え佳境 首藤 一幸 話の流れのスライドを加える?
全体ミーティング 2009/6/24 D3 西川 賀樹.
割り込み.
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
Windowsの内部を知る
ネストした仮想化を用いた VMの安全な帯域外リモート管理
シグナル通信 普通の割込みとソフトウェア割込み ソフトウェア割込みとシグナル キーボードからのシグナル 例外 (exception)
メモリ管理 4.3, 4.4 章 さだ.
データベース設計 第2回 データベースモデル(1)
型付きアセンブリ言語を用いた安全なカーネル拡張
AMD64の仮想化技術を利用した 仮想マシンモニタの実装
コンピュータを知る 1E16M009-1 梅津たくみ 1E16M017-8 小沢あきら 1E16M035-0 柴田かいと
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
オペレーティングシステム イントロダクション
仮想機械 温故知新 前田俊行 東京大学米澤研究室.
オペレーティングシステムJ/K (仮想記憶管理)
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
ディジタル回路の設計と CADによるシステム設計
TCP/IPとプロセス間通信 2007年1月12日 海谷 治彦.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第6回 システムプログラミング概要 プロセスの生成 担当:青木義満
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
オペレーティングシステムJ/K 2004年11月15日2時限目
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
オペレーティングシステム i386アーキテクチャ(1)
組込みシステムとは コンピュータ制御システム?
2010年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~.
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータアーキテクチャ 第 2 回.
実装について 前田俊行.
2013年度 プログラミングⅠ ~ 内部構造と動作の仕組み(2) ~.
コンピュータアーキテクチャ 第 2 回.
Mondriaan Memory Protection の調査
コンピュータアーキテクチャ 第 5 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
コンピュータアーキテクチャ 第 5 回.
オペレーティングシステム 作成 T21R003 荏原 寛太.
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
2008年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~.
L4-Linux のメモリ管理における問題点とその解決策
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Presentation transcript:

オペレーティングシステム i386アーキテクチャ(2) 2005年10月27日 海谷 治彦

目次 ページ 保護機能 セグメントの保護 ページの保護 割り込みと例外

ページング 0~4GBで表現されるリニアアドレスを物理アドレス(実際にマシンに搭載されたアドレス)に変換する仕組み. もし4GBメモリのマシンがあったとしても,i386上で,複数のプロセスが同時に動作するOSを稼動させるには必要な技術.

ページ セグメントを4KB(もしくは4MB)の固定長に分割した個々の部分のこと. リニアアドレスのある部分が物理アドレスのどの部分に対応するかは表で管理している. ⇒ アドレス変換テーブル

アドレス変換テーブル 前述のようにリニアアドレスのある部分が物理アドレスのどの部分に対応するかを記述した表. 無論,メモリ内に記入される. ある瞬間に利用されているテーブルは1つだが,変更もできる. i386ではCR3レジスタにこのテーブルがあるアドレスが記入されている.

アドレス変換テーブルの例 ココは丁度, ¾の位置,3GB 1MB目 CR3レジスタ アドレス変換テーブル C010 0000 FFFF FFFF KERNEL_CS の場合,カーネルコード CR3レジスタ ココは丁度, ¾の位置,3GB C010 0000 1MB目 アドレス変換テーブル p17 図18 改 C010 0000 0010 0000 0010 0000 0000 0000 0000 0000 物理アドレス空間 (実メモリ) 論理アドレス空間

アドレス変換テーブルとプロセス Linuxではプロセス毎にアドレス変換テーブルを作る. さらに,プロセス間で同じ物理アドレスを使わないようにテーブル内の値を設定する. 意図的に共有させることもできる. ユーザープロセスがこのテーブル群やCR3の内容は変更できないので安心. テーブル群はKERNEL_DSに書かれる. CR3はKERNEL_CS内のコードでしか変更できない. 実際のテーブルは効率化のため,二段階テーブルになっているが,それについては後日に.

例 CR3 物理アドレス空間 (実メモリ) アドレス変換 アドレス変換 テーブル テーブル リニアアドレス空間B リニアアドレス空間A p18 図19 改 リニアアドレス空間B リニアアドレス空間A CR3

i386の3つのアドレス記述法 論理アドレス: マシン語でのアドレス指定に使う形式.セグメントとオフセットの対で表現. リニアアドレス: 4GBのメモリ空間を素直に表現した形式.32ビット 物理アドレス: メモリチップの実アドレス.表現は32ビットだが,上限は実際に搭載しているメモリ量に依存. Linuxの場合,4Gサイズのセグメントを使うので, 論理アドレス = リニアアドレス 文献5 p.44

アドレス変換 マシン語が解釈されて,実際のメモリ回路までたどり着くには,以下のような二段階の変換が行われる. 物理アドレス 論理アドレス リニアアドレス ページング 回路 セグメンテー ション回路 Linuxの場合,等価変換 ただし, セグメント毎にタイプとDPLが異なる.

保護機能 特権レベルとはセグメント内に書かれたプログラムの実行権限の強さを規定するもの. i386は4種類の特権レベルを割り当てられるが,Linuxでは以下の2つのみを使う. レベル0 なんでもできる. レベル3 特権命令が実行できない. 保護はセグメント段階とページ段階の二段階で行われる.

特権命令の例 等 HLT LGDT MOV CRn システムを停止する. GDTの値を設定 要は利用しているセグメントの切り替え

i386のOS関係のレジスタ 再録 ・・・・ 凡例 EAX EDI EBP ESP CS BIP BFLAGS 汎用レジスタ インストラクションポインタ フラグレジスタ ベースポインタ スタックポイタ セグメントレジスタ DS ES CR3 CR2 CR1 CR0 GDTR IDTR LDTR TR システムアドレスレジスタ コントロールレジスタ 32bit 16bit 凡例 48bit

割り込みと例外 現在,動作しているプログラムを停止し,事前に準備した別のプログラムを実行する仕組み. 割り込み・例外は発生原因によって分類されている. 大まかにいうと, 割り込み: 優先度の高い機器等からの優先処理依頼. 例外: 異常事態. と分類できる.

i386の割り込みの発生源 ハードウェア割り込み ソフトウェア割り込み キーボードやタイマー等の外部機器からの信号により発生.(INTRピンから受け取る) メモリーエラー等により発生.(NMIピンから受け取る) この割り込みのみマスク(受け取り拒否)できない. ソフトウェア割り込み 割り込みを発生させるアセンブラ命令,INT を用いて,プログラム自身が発生させる. 気分的にはサブルーチンコールに似ている.

i386例外の分類 対処法の違いにより分類 フォルト: 割り込まれた命令を再実行する場合. トラップ: 再実行しないもの. セグメントやページの保護違反等が原因. トラップ: 再実行しないもの. サブルーチンコールのようなもの. アボート: 致命的なエラー. プログラムもしくはOSの強制停止がありうる.

i386の割り込みと例外の識別 割り込みと例外は「割り込みベクタ」という番号によって識別される. 番号は 0 ~ 255 (8bit)の256個つけられる. 0 ~ 31 は intelが予約,32以降は自由に使ってよい. 通常,それぞれの割り込み番号は, INT X とかいう番号で略記される.(実際,割り込みを呼び出す場合のアセンブラ命令はこんな感じで書く) ベクタ番号128 (INT 0x80)は,Linuxではシステムコール実装のために使われる.

割込みディスクリプタ・テーブル IDT (Interrupt Description Table) 表の先頭アドレスとはIDTRレジスタに記録されている. 後述の割込みゲートディスクリプタとトラップゲートディスクリプタの二種類のエントリがある. ベクトル番号(エントリの番号) 3, 4, 5, 128 だけはユーザーモードから割り込めるが,他はカーネルモードでないと利用できない. 128はシステムコール実装のための利用.

i386のOS関係のレジスタ ・・・・ 凡例 EAX EDI EBP ESP CS BIP BFLAGS 汎用レジスタ インストラクションポインタ フラグレジスタ ベースポインタ スタックポイタ セグメントレジスタ DS ES CR3 CR2 CR1 CR0 GDTR IDTR LDTR TR システムアドレスレジスタ コントロールレジスタ 32bit 16bit 凡例 48bit

エントリの種類 割込みゲート ディスクリプタ トラップ ゲート ディスクリプタ もう1種類あるけどLinuxで使わないので略. この割込み実行中には他の割込みを禁止する. Linuxでは割込みを全てこちらのエントリ方式で処理する. トラップ ゲート ディスクリプタ 他の割込みを禁止しない. Linuxでは例外を全てこちらのエントリ方式で処理する. ユーザーモードからアクセス可能な 3, 4, 5, 128番はこちらのエントリである. もう1種類あるけどLinuxで使わないので略.

割込みハンドラ検索の概念図 割込みディスクリプタテーブル ベクタ番号 オフセット IDTR セグメント セレクタ GDTR ゲートディスクリプタ ハンドラ IDTR セグメント セレクタ p.38 図16 GDTR セグメント ディスクリプタ グローバル ディスクリプタ テーブル