Mercurial > hg > Members > anatofuz > slides
comparison 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 |
comparison
equal
deleted
inserted
replaced
24:9e4ebb0c92bb | 25:387ca051646f |
---|---|
1 物理アドレスと仮装アドレスが同じ | |
2 | |
3 - vector 割り込みvectorの処理 | |
4 - lassbery-->固定のmemory map ==> 取ってくるAPIがある? | |
5 | |
6 device driver --> device driverを見つけるAPIを探す | |
7 | |
8 vmm -> virtual memory manager | |
9 | |
10 kmain{ | |
11 binit --> buffer cache | |
12 fileinit --> filetable | |
13 | |
14 sti() --> set intrast | |
15 } | |
16 | |
17 ?? -> user空間なのでkernelからはわからない(memory空間が異なる) | |
18 | |
19 trapframe -> forkを読んだ際にregisterに入れる情報 | |
20 | |
21 fork { | |
22 | |
23 np = allocproc() <- proc を 作成 | |
24 processのメモリ空間の共有 -> copyuvmでpagetableをコピーして | |
25 | |
26 user space側のstackを置き去りにして,今のr | |
27 | |
28 process ごとにtrap frameを用意している | |
29 filedup(proc->ofile[i]) <<- リファレンスカウント方式で処理をしている | |
30 | |
31 java -- リファレンスカウントではない, objective-cはautomatic refalence count | |
32 | |
33 idup(proc->cwd); <- pwdをコピーする | |
34 sagestrcpy() <- 何故かコピーをしている | |
35 | |
36 pidを返して終わり | |
37 } | |
38 | |
39 | |
40 errorした場合は別のcontinuationに行くtaskを書くことが出来る | |
41 | |
42 CodeSegmentの中ではfor文を使っても良い、単純な処理ならinterfaceに置き換えられる | |
43 | |
44 switchuvm{ | |
45 | |
46 OSの割り込み処理を許可する--> interactive mode | |
47 | |
48 multiprocessor => どのCPUを割り込ませるのかはスケジューリングの問題 ( Programable Intractice Contorler ) | |
49 割り込まれるCPUはわからない ( software interact を除く) | |
50 | |
51 OSのメモリモデルがやっかい | |
52 | |
53 interruptsはmultiprocessorで分散される | |
54 そのCPUでは割り込みが起こらないものをcliで制御している。 | |
55 -> 1 | |
56 | |
57 push | |
58 誰かが禁止しているときにpopすると割り込み禁止が解除される為、禁止をする | |
59 | |
60 割り込みが入る-> kernel から kernelに移行するのでuserには影響しないのでは…? | |
61 割り込みルーチンがuser pageに触らないはず…? | |
62 | |
63 割り込み?例えばキー入力 | |
64 uartの入力を待っているuser processがいたら? | |
65 そのprocessのstatusを切り替える必要がある? | |
66 | |
67 割り込まれても割り込みルーチンがuser spaceに干渉しなければ良さそう | |
68 } | |
69 | |
70 exec { | |
71 kernel移動 | |
72 trapret --> assemblerで書かれている。ここでuse spaceに移動している? | |
73 | |
74 ls --> ssemblerで書かれていている | |
75 } |