作者kai3570 (kai3570)
看板Grad-ProbAsk
标题[理工] 104 台大 OS 第九题
时间Sat Jan 13 01:27:41 2018
版上找不到,来跟各位大大讨论一下
题目
https://i.imgur.com/RW8AdC9.jpg
A.
即使有无限大的swap space
process量太多时仍然要常常swap in
因此提升process亦会thrashing
B. (半猜不太会)
若有priority更高的process一直进到ready queue
thrashing process就会一直没办法执行
C.
这题应该就是解释WSS的运作原理了
D.
不太懂题目想问什麽
有没有大大愿意提供想法
E. (这题也半猜不太会)
不同的VM是在不同的kernel thread底下
所以其他VM并不会受到影响
小弟硬体真的是罩门
麻烦各位大大解解惑了
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.137.166.128
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Grad-ProbAsk/M.1515778063.A.DFD.html
※ 编辑: kai3570 (114.137.166.128), 01/13/2018 01:28:46
1F:推 PunchShadow: A. 恐龙本的定义是当Multiple-degree增加到一定时,C01/13 10:00
2F:→ PunchShadow: PU的利用度会突然下降,造成Thrashing01/13 10:00
3F:推 PunchShadow: B. 我的想法也是不会,再不减少degree的情况下,当一01/13 10:27
4F:→ PunchShadow: 个程式完成时,系统会再分配一个新的程式去执行,造01/13 10:27
5F:→ PunchShadow: 成thrashing的process还是thrashing01/13 10:27
6F:推 PunchShadow: D的话我觉得是没办法完全,因为work set model是一01/13 10:31
7F:→ PunchShadow: 个估价locality的近似方法,如果windows的大小取不适01/13 10:31
8F:→ PunchShadow: 当仍然会出现thrashing01/13 10:31
9F:推 PunchShadow: E. 我的想法跟你一样,不同VM间应该要是互不影响的,01/13 10:33
10F:→ PunchShadow: 不过这点不太确定01/13 10:33
11F:推 PunchShadow: 不过如果VM是架在OS上,那kernel thread应该是共用01/13 10:35
12F:→ PunchShadow: 的吧?这点还要再跟各位请教一下01/13 10:35
先感谢P大回应
E 我也有想过这个问题
不过我不确定不同的VM是不是都用同一个kernel thread
如果是用不同的kernel thread不知道会不会有不一样的结果?
※ 编辑: kai3570 (114.137.166.128), 01/13/2018 11:51:57
13F:推 PunchShadow: 我是想说如果是SMP,而且kernel thread的数量足够01/13 14:43
14F:→ PunchShadow: VMM可能可以将不同的kernel thread分配到不同VM上 01/13 14:43
15F:→ PunchShadow: 这是小弟的浅见,还需要在求证 01/13 14:45
16F:推 nat99up: E. VM之间共用硬体资源 有人thrashing有可能吃掉bus band 01/13 15:46
17F:→ nat99up: width 01/13 15:46
18F:→ PunchShadow: bus bandwidth 可能被吃掉没错 不过硬体资源的分配 01/13 16:05
19F:→ PunchShadow: 不是也可以由VMM分配管理吗? 01/13 16:05
21F:→ kai3570: 上面网址那本书有讨论到"VMM will swap out a VM to avoi 01/13 18:59
22F:→ kai3570: d thrashing" 01/13 18:59
23F:→ kai3570: VMM会确保不同的VM互相独立 01/13 19:00
24F:→ kai3570: 所以其他VM应该是不会受影响的 01/13 19:02
25F:→ aggress5566: 如果我没误会A的意思 那他的意思是说某一个process 01/13 20:10
26F:→ aggress5566: 要怎麽thrashing 因为unlimited swap space 我之前01/13 20:10
27F:→ aggress5566: 好像写过类似的作业 大概的做法是 让Process去一直f01/13 20:10
28F:→ aggress5566: ork要记忆体 然後让child用exception之类的让他变zo01/13 20:10
29F:→ aggress5566: mbie 只要Process不结束就不会收回来 所以看起来第01/13 20:10
30F:→ aggress5566: 二题可能就是第一题的延伸01/13 20:10
如果只是让child变zombie而不执行的话
child占用的记忆体空间应该都会放在swap space
因为不会执行,所以CPU也不需要将child占有的记忆体区块swap in memory
所以应该不会有thrashing吧?
还是我的想法有错呢?
谢谢大大回覆
※ 编辑: kai3570 (114.137.166.128), 01/13/2018 22:52:01
31F:→ aggress5566: 正确没有错 但目的不是把叫CPU把child的区块swap in 01/14 00:16
32F:→ aggress5566: 无聊去跑了一下 光是一个Process一直 malloc 400MB 01/14 00:55
33F:→ aggress5566: 读写到seg. fault Swap Space多了1G多 01/14 00:56
不太懂大大的意思
我认知的thrashing现象:
欲使用的data从VM搬进physical memory时,有些data会被swap out。
而这些被swap out的data马上要被使用又被swap in。
这样反覆进行的现象称为thrashing
但是如果是zombie的话不会备CPU需要,所以也不必要swap in physical memory
因此A大的作法的话是不会产生thrashing现象的
是大大想告诉我什麽然後我没理解到
还是是在讲B小题 QQ
34F:推 TWkobe: 觉得A只要把memory缩小 一直page fault就可以01/14 08:43
了解,这样的作法感觉跟增加process数量差不多
感谢回应 ^^
※ 编辑: kai3570 (140.115.152.9), 01/14/2018 13:03:08
35F:→ aggress5566: 好像有点什麽误会XD 题目说要让一个process thrashi01/14 21:49
36F:→ aggress5566: ng 那麽我们所知道的thrashing是multiprogramming01/14 21:49
37F:→ aggress5566: 所造成的 是站在System观点 那我理解的题意就是 要 01/14 21:49
38F:→ aggress5566: 怎麽让一个process 一直在swap 我想到的做法是把记 01/14 21:49
39F:→ aggress5566: 忆体用满 然後继续读写 这样势必会有victim page被s 01/14 21:49
40F:→ aggress5566: wap out 至於要不要swap in swap out才算thrashing01/14 21:49
41F:→ aggress5566: 我觉得就见仁见智了 至於为何要用zombie只是想说把01/14 21:49
42F:→ aggress5566: 可以用的swap space尽可能压到001/14 21:49
哦哦哦 了解你的意思了
谢谢大大讲得这麽详细 XD
※ 编辑: kai3570 (114.137.166.128), 01/15/2018 16:29:44