几个观念请教与确认:
Q1: micro kernel的两个问题
已知观念:
将kernel模组化后 , 去除不必要的一些服务 , 尽保留必要的服务(如Process Mgt.)
称之为micro kernel
优点: 1.扩展性高 2,更安全实用
Q1-1 : 被去除的服务可以在 user mode 以 system software 或 Library的方式提
提供服务
问题:原本在kernel的服务如果被拉到user mode以上述的方式呈现,是否会有功能
被阉割的问题呢?(例:原本在kernel提供的security服务如果被拉到user mode后
,它的提供的功能会不会不如原本在kernel时强大?)
Q1-2 : 大多的书面资料都要提到micro kernel安全度较高的优点
问题:延续Q1-1 , 不太能理解为什么部份重要服务被拉出kernel还能维持比较好的
安全性? 如Q1-1的例子 , 把security拉到user mode做 , 万一user mode下他
提供的security服务乱搞 , 系统不就挂了吗 ?
Q2: multiprocessor , multicore , multithread 名词概念确认
已知观念: thread 是OS分配CPU资源的最小单位 , 使用thread带来的好处我是参考
网络上估到的这张架构http://ppt.cc/HW~B
问题: 这张图和我自己本身的理解差不多 , 以下分为几点说明 , 请板友指正是否有错
误
1. core代表每个prcessor上的运算芯片(所以core≧processor)
2. 分配thread的单位应该是core
->使用thread的好处在于同一process的程式空间有locality的特性,所以
位在同一个processor上的不同thread才能发挥multithreading的最大效益
->倘若现在同一process的两个thread被丢到不同processor的core上,就拿不
到使用thead的好处 ? (还是只是不能发挥最大效益? 所以好处是 ?)
Q3: deadlock章节中有一个定里:
n个process共用m个resource , 不产生dealock有两个条件
1.每个Pi的最大资源需求(记为MAXi) < m
2. MAXi 总和 < m+n
问题: 若现在m=10 , 每个process最大资源需求为3 , 最大n为何?
3n<10+n
2n<10 , 最大n=4
<我自己举的反例>
倘若我取n=5 , 也能找到一组process顺序是能不产生deadlock的, 如下例:
10个resource分配如右: 3 , 3 , 2 ,1 ,1(依序为P1,P2....P5分配到的资源)
依 P1 P2 P3 P4 P4的顺序执行 , 可以顺利取得资源 , 系统是UnSafe但不会
Deadlock , 请问我这样说明有盲点吗 ? 感觉这里定理不太能求最大值...是
不是我误解了什么
Q4 : 内存管理中的逻辑位址(LA)转换概念 , 与虚拟内存概念中的虚拟位址(VA)
Q4-1: 以我目前的理解来说 , LA和VA是在描述相同的东西 , 而他们怎么和实体位址(PA)
对映是page table的工作 , 对每个process而言 ,LA的是下面哪种状况?
P1占8KB , P2占32KB , 系统执行时 , 他们的LA应该是?
状况一: 皆用处理器处理的位元数视为LA (32bits作业系统就是32bits表示LA)
状况二: 依据Process不同而使用不同的LA , 以上述状况为例 , P1的LA是13bits
P2为15bits
状况三: 状况一,二的折衷版本,LA一样都视为32bits,只是对于不同的process有
效的bits数不同 , 以P1为例 , 超过13bits之后的bits表示的LA对P1而
言都没有意义
Q4-2: 承4-1 , 同样都是指LA = 15的内存空间 , 对P1与P2而言是否代表相同意思?
我自己的回答: LA都是15对P1,P2来说没有办法比较 , 要透过他们各自的page
table转换成PA比较才有意义 , 若PA相同 , 此时的状况可视为shared memory
Q5 : Page Table有三个减少它占用内存空间的方法 , 以下叙述是否有误
Q5-1: multi level的方式对于virtual space小的程式而言才有好的效果 , 若virtual
space很大的程式 , 他还是要存很多笔的位址转换 , 并不会因为multi level的
方法缩小page table使用的空间?
Q5-2: Inverted page table这种方式是否只要OS自己maintain一份即可 ?
因为它的转换方式是 <Process ID , page NO> , 大家的page No一样多 ,
Process ID 又提供判断是不是自己的转址依据 , 所以只要OS存一份给
所有的process查就好?
Q6 : TLB , BHT , BTB 是否都为cache ?
我自己查的资料是 cache:TLB , BTB
BHT 张凡写 小型内存....所以是memory = =?
Q7 : monitor观念 与 semaphore实作monitor
Q7-1:monitor是否能够解决同步问题 , 取决于设计的该资料结构的人是否能给予
condition变量正确的初值 ?
Q7-2:用semaphore实作Hoare monitor不太懂
目前理解 : signal的不当使用会造成monitor违反mutual exclusive ,
Hoare的做法为若Q被P signal而进入monitor中运行 , 那么
P必须等到Q wait或 完成才能重新进入monitor
(参考图片http://ppt.cc/bl9C)
下方为恐龙书上的实作方式
请问上述的 P , Q 分别是对应到参考图片的哪个位置?
目前我是这样对映:
P-> entry queue图片左半部 -> 用next记录
Q-> c.v. waiting queue -> x记录
制作 x.wait
(1) x_count = x_count + 1
(2) if next_count > 0 then signal(next);
(3) else signal(mutex);
(4) wait(x-sem);
(5) x_count = x_count -1;
(1)~(3) : Q即将要block , 所以先把有机会signal自己的人拉进monitor ?
(4) : 将Q卡住是为block ?
制作 x.signal
(1) if x_count > 0 then
(2) begin
(3) next_count = next_count + 1;
(4) signal(x-sem);
(5) wait(next);
(6) next_count = next_count - 1;
(7) end
如果x被signal代表要先把monitor里面的procedure拉出来 , 请问(4)(5)
两行的状况是指 Q要被signal所以先把P拉出去block ?
问题叙述有点长 , 先谢谢各位了