v6read#4

17

Click here to load reader

Upload: magoroku-yamamoto

Post on 31-May-2015

800 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: V6read#4

オペ―レーティングシステムの読み書き#4

2011/11/21

Nagoya geekbar

Page 2: V6read#4

今回は

アドレス空間の切り替え

コンテキストの退避・復元

Page 3: V6read#4

割り込みが起こると……..

text

data

bss

stack

CPU PC

text

data

bss

stack

PSWのモードがカーネルモードに変わり、空間が切り替わる。割り込みの種類に応じて、ベクターテーブルの値がPCに書き込まれる

① ②

割り込みの種類に応じて、ベクターテーブルの値がPCに書き込まれる

アプリケーション カーネル

Page 4: V6read#4

struct user

空間の切り替え 1

text

data

bss

stack

CPU PC

text

data

bss

アプリケーション カーネル PSW

APR0

APR1

APR2

APR3

APR4

APR5

APR6

APR7

APR0

APR1

APR2

APR3

APR4

APR5

APR6

APR7

00: カーネルモード

11: ユーザモード

11用 00用

stack

I/Oレジスタ

Page 5: V6read#4

アプリケーションの動作時

text

data

bss

stack

text

data

bss

user

IOレジスタ

text

data

bss

stack

user

text

data

bss

stack

user

text

data

bss

stack

user

•PSWのモードはユーザ

•PCはアプリのtextセグメントを指す

PSW PC

kstack kstack kstack kstack

Page 6: V6read#4

割り込みの発生-空間の切り替え

text

data

bss

stack

text

data

bss

user

IOレジスタ

text

data

bss

stack

user

text

data

bss

stack

user

text

data

bss

stack

user

•PSWのモードがカーネルに

•アドレス空間の制御レジスタがカーネルモードに切り替わる

PSW PC

kstack kstack kstack kstack

Page 7: V6read#4

text

data

bss

割り込みの発生-割り込みベクタ

text

data

bss

stack

user

IOレジスタ

text

data

bss

stack

user

text

data

bss

stack

user

text

data

bss

stack

user

•割り込みベクタのエントリを選択してPCに

PSW PC

kstack kstack kstack kstack

•1のアドレスと割り込み時のレジスタを退避

Page 8: V6read#4

text

data

bss

割り込みの発生-割り込みベクタ

text

data

bss

stack

user

IOレジスタ

text

data

bss

stack

user

text

data

bss

stack

user

text

data

bss

stack

user

•割り込みベクタのエントリを選択してPCに

PSW PC

kstack kstack kstack kstack

Vector device

004 Bus Timeout

010 Illegal instruction

014 Bpt-trace

024 iot

034 Power failur

114 Emulator tarp

instruction

240 11/10 parity

244 Floting point error

250 Segmentation violation

Vector device entry

060 Teletype input klin

064 Teletype output klou

070 Paper tape input pcin

074 Paper tape output pcou

100 Line clock kwlp

104 Programmable clock kwlp

200 Line printer lpou

220 RK disk driver rkio

Page 9: V6read#4

割り込みの発生ーハンドラの処理

text

data

bss

stack

text

data

bss

user

IOレジスタ

text

data

bss

stack

user

text

data

bss

stack

user

text

data

bss

stack

user

PSW PC

kstack kstack kstack kstack

Page 10: V6read#4

割り込みの発生ーハンドラの処理

text

data

bss

stack

text

data

bss

user

IOレジスタ

text

data

bss

stack

user

text

data

bss

stack

user

text

data

bss

stack

user

PSW PC

kstack kstack kstack kstack

APR0

APR1

APR2

APR3

APR4

APR5

APR6

APR7

カーネル用

APR0

APR1

APR2

APR3

APR4

APR5

APR6

APR7

アプリ用

•処理が終わったら、退避したレジスタ、PCを復元して、PSWをアプリモードに

•割り込み時点に復帰

Page 11: V6read#4

以上の説明は、割り込み発生時から、復帰までにプロセスの切り替えが発生しない場合

条件によっては以下の処理でプロセスの切り替えが発生

1. procの検索と選択

2. user構造の切り替え

3. User構造+kstackに退避した状態の復元

4. アプリへの復帰

Page 12: V6read#4

プロセスの切り替えー選択

text

data

bss

stack

text

data

bss

user

IOレジスタ

text

data

bss

stack

user

text

data

bss

stack

user

text

data

bss

stack

user

PSW PC

kstack kstack kstack kstack

Procの検索(スケジューラ)

↑次に動かすアプリ(プロセス)のprocを見つける

Page 13: V6read#4

プロセスの切り替えーuserの切り替え

text

data

bss

stack

text

data

bss

user

IOレジスタ

text

data

bss

stack

user

text

data

bss

stack

user

text

data

bss

stack

user

PSW PC

kstack kstack kstack kstack

proc

Page 14: V6read#4

プロセスの切り替えーuserの切り替え

text

data

bss

stack

text

data

bss

user

IOレジスタ

text

data

bss

stack

user

text

data

bss

stack

user

text

data

bss

stack

user

PSW PC

kstack kstack kstack kstack

proc

APR0

APR1

APR2

APR3

APR4

APR5

APR6

APR7

アプリ用 空間管理用のレジスタを更新

Page 15: V6read#4

プロセスの切り替えーモードの切り替え

text

data

bss

stack

text

data

bss

user

IOレジスタ

text

data

bss

stack

user

text

data

bss

stack

user

text

data

bss

stack

user

PSW PC

kstack kstack kstack kstack

proc

APR0

APR1

APR2

APR3

APR4

APR5

APR6

APR7

アプリ用

•PSWをユーザに切り替え

•PCを復元

•退避していた、PCとレジスタを復元

Page 16: V6read#4

プロセスの切り替えー完了

text

data

bss

stack

text

data

bss

user

IOレジスタ

text

data

bss

stack

user

text

data

bss

stack

user

text

data

bss

stack

user

PSW PC

kstack kstack kstack kstack

proc

APR0

APR1

APR2

APR3

APR4

APR5

APR6

APR7

アプリ用

Page 17: V6read#4

おわり