[理工] 107交大計組 多題QAQ

看板Grad-ProbAsk作者 (萬能史哥)時間6年前 (2019/02/11 21:52), 編輯推噓6(6033)
留言39則, 8人參與, 6年前最新討論串1/1
不好意思 問題有點多 想請問一下 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://www.ptt.cc/bbs/Grad-ProbAsk/M.1549893141.A.C80.html

02/11 23:06, 6年前 , 1F
1應該是20bit拿去當tag 2^20=1M?
02/11 23:06, 1F

02/11 23:27, 6年前 , 2F
1個frame或page 4K要12bits,page number有2^(32-12)
02/11 23:27, 2F

02/11 23:28, 6年前 , 3F
frame number = 2GB/4KB = 512K
02/11 23:28, 3F

02/11 23:30, 6年前 , 4F
page size 是4KB少打一個字
02/11 23:30, 4F

02/11 23:31, 6年前 , 5F
deadlock avoidance會去偵測必須要分配資源之後還是在
02/11 23:31, 5F

02/11 23:32, 6年前 , 6F
safety才會准許resource request,如果不ok的話thread
02/11 23:32, 6F

02/11 23:33, 6年前 , 7F
就要停下來等拿resource所以會降低thread level平行化
02/11 23:33, 7F

02/11 23:34, 6年前 , 8F
priority inversion就是說有一個優先權比較高的thread
02/11 23:34, 8F

02/11 23:35, 6年前 , 9F
要wait某個資源,但這個資源已經被priority比他低的
02/11 23:35, 9F

02/11 23:35, 6年前 , 10F
thread拿走了,這樣子等於是高優先權的thread要等
02/11 23:35, 10F

02/11 23:36, 6年前 , 11F
低優先權的
02/11 23:36, 11F

02/11 23:41, 6年前 , 12F
2 沒檢查argv[1]長度 可能超出buffer 大概吧
02/11 23:41, 12F

02/12 00:10, 6年前 , 13F
請問b選項 more mem leak , leak在這邊是什麼意思
02/12 00:10, 13F

02/12 00:49, 6年前 , 14F
C裡面srtcpy 如果輸入大於一個字串的大小 他會依照stack
02/12 00:49, 14F

02/12 00:49, 6年前 , 15F
的性質覆蓋掉記憶體空間
02/12 00:49, 15F

02/12 00:49, 6年前 , 16F
所以可能造成崩潰 是一個很有名的bug
02/12 00:49, 16F

02/12 00:49, 6年前 , 17F
如果是用srtncpy的話 如果輸入超過設定空間大小 他就只
02/12 00:49, 17F

02/12 00:49, 6年前 , 18F
會存到該大小 後面省略
02/12 00:49, 18F

02/12 00:50, 6年前 , 19F

02/12 07:42, 6年前 , 20F
Memory leak我舉個例子好了,你寫c的時候如果一直malloc
02/12 07:42, 20F

02/12 07:42, 6年前 , 21F
但是沒有free,os以為你會用到這塊記憶體所以不會分配給
02/12 07:42, 21F

02/12 07:42, 6年前 , 22F
別人,但是你其實用完了,應該還給系統,這樣的情況下造
02/12 07:42, 22F

02/12 07:42, 6年前 , 23F
成你實際沒有用到這麼多記憶體,但記憶體卻不夠用,這就
02/12 07:42, 23F

02/12 07:42, 6年前 , 24F
是memory leak,現代的語言(python, js, java, golang等
02/12 07:42, 24F

02/12 07:42, 6年前 , 25F
等)有自己的GC,不需要使用者自己去管理記憶體,相對的
02/12 07:42, 25F

02/12 07:42, 6年前 , 26F
能降低memory leak的機會,但是你也不能百分之百的保證他
02/12 07:42, 26F

02/12 07:42, 6年前 , 27F
的GC完全不會有memory leak
02/12 07:42, 27F

02/12 07:43, 6年前 , 28F
明白了!感謝大大細心解釋!
02/12 07:43, 28F

02/12 07:50, 6年前 , 29F
至於stackoverflow,如同上面說的,因為c的字串實際上是
02/12 07:50, 29F

02/12 07:50, 6年前 , 30F
直接對記憶體做操作,會從要覆蓋的位置開始一路覆蓋下去
02/12 07:50, 30F

02/12 07:50, 6年前 , 31F
,萬一傳進來的參數爆幹長,比整個程式的stack空間還長,
02/12 07:50, 31F

02/12 07:50, 6年前 , 32F
就會stackoverflow,讓惡意程式有機會在沒有權限的地方
02/12 07:50, 32F

02/12 07:50, 6年前 , 33F
亂塞東西
02/12 07:50, 33F

02/12 09:22, 6年前 , 34F
請問大大 為什麼參數爆了 還有機會讓惡意程式塞東西呢?
02/12 09:22, 34F

02/12 09:26, 6年前 , 35F
02/12 09:26, 35F

02/12 09:26, 6年前 , 36F
有興趣可以參考,不過我覺得考前別看了,記住概念就好
02/12 09:26, 36F

02/12 22:25, 6年前 , 37F
如果剛好在隔壁會覆蓋
02/12 22:25, 37F

02/13 10:40, 6年前 , 38F
例如可以蓋掉stack上function call的return address
02/13 10:40, 38F

02/13 10:40, 6年前 , 39F
影響程式執行流程之類ㄉ
02/13 10:40, 39F
文章代碼(AID): #1SONuLo0 (Grad-ProbAsk)