


推 cutearia: 1應該是20bit拿去當tag 2^20=1M? 02/11 23:06
推 gama79530: 1個frame或page 4K要12bits,page number有2^(32-12) 02/11 23:27
→ gama79530: frame number = 2GB/4KB = 512K 02/11 23:28
→ gama79530: page size 是4KB少打一個字 02/11 23:30
→ gama79530: deadlock avoidance會去偵測必須要分配資源之後還是在 02/11 23:31
→ gama79530: safety才會准許resource request,如果不ok的話thread 02/11 23:32
→ gama79530: 就要停下來等拿resource所以會降低thread level平行化 02/11 23:33
→ gama79530: priority inversion就是說有一個優先權比較高的thread 02/11 23:34
→ gama79530: 要wait某個資源,但這個資源已經被priority比他低的 02/11 23:35
→ gama79530: thread拿走了,這樣子等於是高優先權的thread要等 02/11 23:35
→ gama79530: 低優先權的 02/11 23:36
→ cutearia: 2 沒檢查argv[1]長度 可能超出buffer 大概吧 02/11 23:41
→ S2067030: 請問b選項 more mem leak , leak在這邊是什麼意思 02/12 00:10
推 Rioronja: C裡面srtcpy 如果輸入大於一個字串的大小 他會依照stack 02/12 00:49
→ Rioronja: 的性質覆蓋掉記憶體空間 02/12 00:49
→ Rioronja: 所以可能造成崩潰 是一個很有名的bug 02/12 00:49
→ Rioronja: 如果是用srtncpy的話 如果輸入超過設定空間大小 他就只 02/12 00:49
→ Rioronja: 會存到該大小 後面省略 02/12 00:49
推 plsmaop: Memory leak我舉個例子好了,你寫c的時候如果一直malloc 02/12 07:42
→ plsmaop: 但是沒有free,os以為你會用到這塊記憶體所以不會分配給 02/12 07:42
→ plsmaop: 別人,但是你其實用完了,應該還給系統,這樣的情況下造 02/12 07:42
→ plsmaop: 成你實際沒有用到這麼多記憶體,但記憶體卻不夠用,這就 02/12 07:42
→ plsmaop: 是memory leak,現代的語言(python, js, java, golang等 02/12 07:42
→ plsmaop: 等)有自己的GC,不需要使用者自己去管理記憶體,相對的 02/12 07:42
→ plsmaop: 能降低memory leak的機會,但是你也不能百分之百的保證他 02/12 07:42
→ plsmaop: 的GC完全不會有memory leak 02/12 07:42
→ S2067030: 明白了!感謝大大細心解釋! 02/12 07:43
推 plsmaop: 至於stackoverflow,如同上面說的,因為c的字串實際上是 02/12 07:50
→ plsmaop: 直接對記憶體做操作,會從要覆蓋的位置開始一路覆蓋下去 02/12 07:50
→ plsmaop: ,萬一傳進來的參數爆幹長,比整個程式的stack空間還長, 02/12 07:50
→ plsmaop: 就會stackoverflow,讓惡意程式有機會在沒有權限的地方 02/12 07:50
→ plsmaop: 亂塞東西 02/12 07:50
→ kaidi620: 請問大大 為什麼參數爆了 還有機會讓惡意程式塞東西呢? 02/12 09:22
→ plsmaop: 有興趣可以參考,不過我覺得考前別看了,記住概念就好 02/12 09:26
→ gaowei16: 如果剛好在隔壁會覆蓋 02/12 22:25
→ GeniusPuddin: 例如可以蓋掉stack上function call的return address 02/13 10:40
→ GeniusPuddin: 影響程式執行流程之類ㄉ 02/13 10:40