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

Slides:



Advertisements
Similar presentations
1 B10 CPU を作る 1 日目 解説 TA 高田正法
Advertisements

Linuxを組み込んだマイコンによる 遠隔監視システムの開発
計算機工学III オペレーティングシステム #14 ファイル: より進んだファイルシステム 2006/07/21 津邑 公暁
Ibaraki Univ. Dept of Electrical & Electronic Eng.
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
オペレーティングシステム i386アーキテクチャ(3)
榮樂 英樹 LilyVM と仮想化技術 榮樂 英樹
物理実験 I 情報実験第9回 Modified 2005/12/2 徳永 義哉Original 2003/12/12 中神 雄一
1.コンピュータと情報処理 p.20 第1章第1節 3.ソフトウェア ソフトウェア 基本ソフトウェア
Android と iPhone (仮題) 情報社会とコンピュータ 第13回
計算機システムⅡ 主記憶装置とALU,レジスタの制御
情報塾( ) CPUとメモリがどんなふうに動くのだろう。 レジスタやI/O プログラムの実行、マシン語。
JavaによるCAI学習ソフトウェアの開発
データ構造とアルゴリズム 第10回 mallocとfree
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
中村孝介(九州工業大学) 光来健一(九州工業大学/JST CREST)
テープ(メモリ)と状態で何をするか決める
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
おおえす作成の手引(いち) きそちしき編 Ver 1.1 Copyright © makihata.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
App. A アセンブラ、リンカ、 SPIMシミュレータ
2006年度 計算機システム演習 第4回 2005年5月19日.
FPGAを用いたMG3用 インターフェース回路の解説
侵入検知システム(IDS) 停止 IDS サーバへの不正アクセスが増加している
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
プログラムはなぜ動くのか.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
オペレーティングシステム (割り込み処理)
Linuxカーネルについて 2014/01.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
割 込 み(1) オペレーティングシステム No.5.
オペレーティングシステム i386アーキテクチャ(2)
Windowsの内部を知る
Ibaraki Univ. Dept of Electrical & Electronic Eng.
アスペクト指向プログラミングを用いたIDSオフロード
型付きアセンブリ言語を用いた安全なカーネル拡張
SpectreとMeltdown ITソリューション塾・第28期 2018年5月30日 株式会社アプライド・マーケティング 大越 章司
AMD64の仮想化技術を利用した 仮想マシンモニタの実装
オペレーティングシステム2006 第1回 概要 2006年10月12日 海谷 治彦.
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
アルゴリズムとデータ構造 補足資料11-1 「mallocとfree」
実行時情報に基づく OSカーネルのコンフィグ最小化
オペレーティングシステム イントロダクション
Ibaraki Univ. Dept of Electrical & Electronic Eng.
仮想機械 温故知新 前田俊行 東京大学米澤研究室.
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
TCP/IPとプロセス間通信 2007年1月12日 海谷 治彦.
情報実験第 7 回(2016/06/17) OS インストール・起動
Intel SGXを用いた仮想マシンの 安全な監視機構
オペレーティングシステムJ/K 2004年11月15日2時限目
信頼できないクラウドにおける仮想化システムの監視機構
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
実装について 前田俊行.
演習1に関する講評 ~ 業務仕様を書く難しさ ~
Mondriaan Memory Protection の調査
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
アルゴリズムとデータ構造1 2009年6月15日
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
コンピュータアーキテクチャ 第 5 回.
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
アルゴリズムとデータ構造 2010年6月17日
L4-Linux のメモリ管理における問題点とその解決策
Ibaraki Univ. Dept of Electrical & Electronic Eng.
強制パススルー機構を用いた VMの安全な帯域外リモート管理
Presentation transcript:

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

目次 i386とは i386アーキテクチャの内部 仮想記憶 実メモリより大きいメモリを扱う プロテクトモード セグメント

i386とは Intel社のCPU 386以降のアドレスバスが32本あるCPUの総称. だいたいPentium4まで. i386, IA32とか80x86とか色々俗称がある. 8086, 286等はi386には入らない. いわゆるWindowsパソコンに標準的に利用されている. AthronとかEfficionとかもソフトウェア側から見れば同じ見える.(互換機)

i386以外の有名なCPU PowerPC マックで採用 ARM PDA(ザウルスなんか)に乗っかってた. Sparc サンマイクロシステム(Javaの会社)が出してるマシン(いわゆるワークステーション)のCPU. 他,色々ありすぎて列挙不能.

プログラムの処理の流れ 前回より再録: 大雑把なCPU周辺の概念図 プログラムがメモリに読み込まれる. 計算に必要なメモリも確保される.(変数等のため) CPUがプログラムを順に読んで,計算をする. 必要ならば,デバイス(ファイル等)にアクセスする. CPU プログラム メモリ 変数等 ディスク アーキテクチャの授業等 の復習ですな.

i386周辺の構造 文献6 p.57

i386の基本動作 アドレスバスでメモリもしくはI/Oポートのアドレスを指定. 指定した場所からデータをレジスタに読む. なんか計算する. の繰り返し. プログラム自体もメモリに記録されており,記述される順番に読んで実行するだけ.

i386の レジスタ 文献6 p.52

プロセスの独立性を保つには? Linux(UNIX)では,複数のプロセスが同時に存在する. 実際のメモリを注意深く区分けして利用するメモリ境界を決めていたのでは危なっかしい. そこで,プロセス毎に独立のアドレス空間があるように見せる仕組みが必要. アドレス変換

アドレス変換の考え方 1 文献6 p.79

アドレス変換の考え方 2

少ない実メモリ上で大メモリを 実際,4Gのメモリを積んだマシンなどめったにない. そこで,実メモリ(512MB程度)を使って,4Gのメモリ空間を表現できなければならない. (実際,4Gまで使うかは別として) そのための機構として仮想記憶がある.

仮想記憶 1 文献6 p.87

仮想記憶 2 通常は ディスク 左図のようにメモリ内容が,一時退避されることを,「スワップアウト」と言う.

プロテクトモード Protect Mode i386が普通(?)に動作している状態. メモリアドレスが4GB(4294967296=232) 他のモードについては後日ふれる. メモリアドレスが4GB(4294967296=232) 0H~FFFFFFFF H (Fが8個=1が32個)まで. プログラムからアドレスを指定する方法が特殊. 割り込み(後述)が起こった時の処理が特殊 メモリ,I/O機器へのアクセス保護がある. プログラムは許可されたアドレス外をアクセスできないようにしている.

プロテクトモードのための環境 このモードには複数のプログラム(プロセス)の概念が最初からある. よって,これら複数のデータを記録しておくための特別なエリアが必要. そのエリアとして, GDT (Global Descriptor Table) CR3 レジスタ (ページ) IDT (Interrupt Descriptor Table) があるが詳細は後述.

セグメント 4Gのメモリ空間をいくつかの部分に区切る仕組み(および区切りの名前). セグメント毎に色々情報を設定できる 重なりがあってもよい. セグメント毎に色々情報を設定できる ベース: セグメントの開始アドレス(32bit) リミットとGフラグ: セグメントのサイズを設定 タイプ: セグメント内のデータが読み書き可能か,実行可能か等の情報を指定. DPL (Descriptor Privilege Level) セグメント内のプログラムの特権レベルを示す 1個分を記述するのに8B必要.

セグメント群の情報は何処に? Segment Descriptor Tableという表に書かれる. Global Descriptor TableとLocal D. T. がある. その表はメモリ内に記述しなければならない. 自動的には作られない. 通常,OSが起動時に作成する. 表の先頭アドレス(と表内の項目数)は,GDTRレジスタに記述される. セグメントレジスタ(CS, DS …)には表の何個目の項目を使うかが記入される.

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

Linuxで使うタイプとDPL タイプ DPL (Descriptor Privilege Level) 1 読み書き可能なデータセグメント 5 実行と読み出し可能コードセグメント DPL (Descriptor Privilege Level) レベル0: (最強) どんな命令でも実行でき,どんなアドレスでもアクセスできる. レベル3: (最弱) 特権命令が実行できない. i386は8種類のタイプわけ,4種類のDPLレベルがあるが,Linuxでは上記しか使わない.

Linuxでのセグメント 4つのセグメントしか作らない. 以下の点が共通 タイプとDPLについて KERNEL_CS, KERNEL_DS, UESR_CS, USER_DS 以下の点が共通 セグメントのサイズ 4G セグメントの開始アドレス 0 要は全部重なってる. タイプとDPLについて *_CS タイプ5 (実行可能) 要はプログラムが入る. *_DS タイプ1 (読み書き可能) 要はデータが入る. KERNEL_* レベル0 なんでもできる. UER_* レベル3 機能が制限.

CSとDS CS (Code Segment) プログラムが入っているセグメント DS (Data Segment) プログラム実行のための変数等を保存するためのセグメント 単純な話, カーネル機能が実行されている場合は,KERNEL_CS KERNEL_DSを利用して計算が行われおり, ユーザープログラムが実行されている場合は,UESR_CSとUSER_DSが利用されている ということ.

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

Linuxでのセグメント概念図 メモリの中 CPUの中 KERNEL_CS セグメント USER_DS セグメント USER_CS Segment Description Table FFFFFFFF USER_DS KERNEL_CS セグメント USER_DS セグメント USER_CS セグメント USER_CS KERNEL_DS KERNEL_DS セグメント KERNEL_CS p15 図16 改 メモリの中 CPUの中 GDTRレジスタ