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で書かれていている
+}