view slides/2018/04/06/memo.txt @ 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
children
line wrap: on
line source

物理アドレスと仮装アドレスが同じ

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