作者kaidi620 (万能史哥)
看板Grad-ProbAsk
标题[理工] 107交大计组 多题QAQ
时间Mon Feb 11 21:52:19 2019
不好意思 问题有点多 想请问一下
https://imgur.com/8gCIQU7.jpg
(1)请问一下21,page的数量要怎麽求呢?
题目的page frame为page大小对吗? 那virtual 它也没有给pagetable那要怎麽计算数量阿???
https://imgur.com/zJ0n8ZA.jpg
(2)想请问一下这个程式有什麽问题呢?
(a)要怎麽看 (b)又要怎麽看呢
小弟想说buffer size为256,够大,将输入的文字如果大於二则复制到 buffer 里面
这样有哪里错吗QAQ
https://imgur.com/3tVcU1C.jpg
(3)为什麽deadlock 会造成(C)(D)??
如果不让程式造成死结 那应该不会减少 thread的平行处理吧
priority iversion要怎麽解释呢??
e03vu,42842841; a;6cjo6zj4 vu,4vu,4
~~`
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 39.8.109.105
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Grad-ProbAsk/M.1549893141.A.C80.html
1F:推 cutearia: 1应该是20bit拿去当tag 2^20=1M? 02/11 23:06
2F:推 gama79530: 1个frame或page 4K要12bits,page number有2^(32-12) 02/11 23:27
3F:→ gama79530: frame number = 2GB/4KB = 512K 02/11 23:28
4F:→ gama79530: page size 是4KB少打一个字 02/11 23:30
5F:→ gama79530: deadlock avoidance会去侦测必须要分配资源之後还是在 02/11 23:31
6F:→ gama79530: safety才会准许resource request,如果不ok的话thread 02/11 23:32
7F:→ gama79530: 就要停下来等拿resource所以会降低thread level平行化 02/11 23:33
8F:→ gama79530: priority inversion就是说有一个优先权比较高的thread 02/11 23:34
9F:→ gama79530: 要wait某个资源,但这个资源已经被priority比他低的 02/11 23:35
10F:→ gama79530: thread拿走了,这样子等於是高优先权的thread要等 02/11 23:35
11F:→ gama79530: 低优先权的 02/11 23:36
12F:→ cutearia: 2 没检查argv[1]长度 可能超出buffer 大概吧 02/11 23:41
13F:→ S2067030: 请问b选项 more mem leak , leak在这边是什麽意思 02/12 00:10
14F:推 Rioronja: C里面srtcpy 如果输入大於一个字串的大小 他会依照stack 02/12 00:49
15F:→ Rioronja: 的性质覆盖掉记忆体空间 02/12 00:49
16F:→ Rioronja: 所以可能造成崩溃 是一个很有名的bug 02/12 00:49
17F:→ Rioronja: 如果是用srtncpy的话 如果输入超过设定空间大小 他就只 02/12 00:49
18F:→ Rioronja: 会存到该大小 後面省略 02/12 00:49
20F:推 plsmaop: Memory leak我举个例子好了,你写c的时候如果一直malloc 02/12 07:42
21F:→ plsmaop: 但是没有free,os以为你会用到这块记忆体所以不会分配给 02/12 07:42
22F:→ plsmaop: 别人,但是你其实用完了,应该还给系统,这样的情况下造 02/12 07:42
23F:→ plsmaop: 成你实际没有用到这麽多记忆体,但记忆体却不够用,这就 02/12 07:42
24F:→ plsmaop: 是memory leak,现代的语言(python, js, java, golang等 02/12 07:42
25F:→ plsmaop: 等)有自己的GC,不需要使用者自己去管理记忆体,相对的 02/12 07:42
26F:→ plsmaop: 能降低memory leak的机会,但是你也不能百分之百的保证他 02/12 07:42
27F:→ plsmaop: 的GC完全不会有memory leak 02/12 07:42
28F:→ S2067030: 明白了!感谢大大细心解释! 02/12 07:43
29F:推 plsmaop: 至於stackoverflow,如同上面说的,因为c的字串实际上是 02/12 07:50
30F:→ plsmaop: 直接对记忆体做操作,会从要覆盖的位置开始一路覆盖下去 02/12 07:50
31F:→ plsmaop: ,万一传进来的参数爆干长,比整个程式的stack空间还长, 02/12 07:50
32F:→ plsmaop: 就会stackoverflow,让恶意程式有机会在没有权限的地方 02/12 07:50
33F:→ plsmaop: 乱塞东西 02/12 07:50
34F:→ kaidi620: 请问大大 为什麽参数爆了 还有机会让恶意程式塞东西呢? 02/12 09:22
36F:→ plsmaop: 有兴趣可以参考,不过我觉得考前别看了,记住概念就好 02/12 09:26
37F:→ gaowei16: 如果刚好在隔壁会覆盖 02/12 22:25
38F:→ GeniusPuddin: 例如可以盖掉stack上function call的return address 02/13 10:40
39F:→ GeniusPuddin: 影响程式执行流程之类ㄉ 02/13 10:40