Mercurial > hg > Members > anatofuz > slides
changeset 25:387ca051646f
auto-Update generated slides by script
author | Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 06 Apr 2018 19:35:48 +0900 |
parents | 9e4ebb0c92bb |
children | 90ac8b16d78b |
files | slides/2018/04/06/memo.txt |
diffstat | 1 files changed, 75 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/slides/2018/04/06/memo.txt Fri Apr 06 19:35:48 2018 +0900 @@ -0,0 +1,75 @@ +物理アドレスと仮装アドレスが同じ + +- vector 割り込みvectorの処理 +- lassbery-->固定のmemory map ==> 取ってくるAPIがある? + +device driver --> device driverを見つけるAPIを探す + +vmm -> virtual memory manager + +kmain{ + binit --> buffer cache + fileinit --> filetable + + sti() --> set intrast +} + +?? -> user空間なのでkernelからはわからない(memory空間が異なる) + +trapframe -> forkを読んだ際にregisterに入れる情報 + +fork { + + np = allocproc() <- proc を 作成 + processのメモリ空間の共有 -> copyuvmでpagetableをコピーして + + user space側のstackを置き去りにして,今のr + + process ごとにtrap frameを用意している + filedup(proc->ofile[i]) <<- リファレンスカウント方式で処理をしている + + java -- リファレンスカウントではない, objective-cはautomatic refalence count + + idup(proc->cwd); <- pwdをコピーする + sagestrcpy() <- 何故かコピーをしている + + pidを返して終わり +} + + +errorした場合は別のcontinuationに行くtaskを書くことが出来る + +CodeSegmentの中ではfor文を使っても良い、単純な処理ならinterfaceに置き換えられる + +switchuvm{ + + OSの割り込み処理を許可する--> interactive mode + + multiprocessor => どのCPUを割り込ませるのかはスケジューリングの問題 ( Programable Intractice Contorler ) + 割り込まれるCPUはわからない ( software interact を除く) + + OSのメモリモデルがやっかい + + interruptsはmultiprocessorで分散される + そのCPUでは割り込みが起こらないものをcliで制御している。 + -> 1 + + push + 誰かが禁止しているときにpopすると割り込み禁止が解除される為、禁止をする + + 割り込みが入る-> kernel から kernelに移行するのでuserには影響しないのでは…? + 割り込みルーチンがuser pageに触らないはず…? + + 割り込み?例えばキー入力 + uartの入力を待っているuser processがいたら? + そのprocessのstatusを切り替える必要がある? + + 割り込まれても割り込みルーチンがuser spaceに干渉しなければ良さそう +} + +exec { + kernel移動 + trapret --> assemblerで書かれている。ここでuse spaceに移動している? + + ls --> ssemblerで書かれていている +}