作者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/m.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