作者DeDanann (草莓 = =+)
看板C_Chat
標題[閒聊] 廢怯少女 的 記憶體區間 保護措施
時間Wed Mar 16 01:41:20 2011
[閒聊]
本西洽發文預設tag [閒聊] 合併原[心情]與[宣洩]tag , 更詳細說明請參考底下文字.
[心情]
任何和動畫漫畫遊戲ACG(N)與其同人相關的一行文、接龍文、創作文請使用這個主題.
[宣洩]
當原PO要發表ACG(N)相關文章裡可能有太過尖銳言詞或想宣洩非常主觀個人意見時用,
但絕不可作人身攻擊或是刻意挑釁找架幹的小白行為, 離開此主題大家都同好別記仇.
-----------------閱讀後發文前請用 control/ctrl +y 刪除以上說明-----------------
以上防雷...
其實此篇也沒什麼雷的...(就是針對第10集的一種現象來討論)
有人提到 如果一直 Loop 的話會不會出問題?
這個嘛...如果用程式執行的結構來看的話:
先看是怎麼Loop 的:
迴圈式:在 condition 成立之前不斷的跳回原點
這種 Loop 法如果要對應記憶保留的效應,HomuHomu 需要有外部記憶儲存
Loop 過程中的狀態。這個記憶體的容量就是關鍵:還沒有滿之前沒什麼問題。
所以這種迴圈基本上不會有什麼立即的危機。
遞迴式:在達到根源之前不斷累積
這種手段相當危險。如果把 "世界" 當成作業系統,負責管理所有資源的調度,
那每一個人或許...或許有設置針對每一個人(process)的某些 Quota。
遞迴 的問題在 stack overflow。每一次啟動都會累積大量的記憶需求,但不像
memory,stack 的容量是系統規範的。超過這個值系統會自動 kill 這個process。
依據 process 在記憶體中的 layout,以及 HomuHomu 每一次loop的狀態,
我推測這個 loop 很有可能是遞迴的模式。同時,HomuHomu 能夠很神奇的
脫離系統歸制的 memory access 權限:能夠存取上一個 stack frame 的資料來模擬
記憶傳承。這或許也可以解釋為什麼有人會有記憶殘存:現在只是在新的 stack frame,
舊的資料確實還在...理論上是可以存取的,但是要小心 segmentation fault。
那為什麼不能夠順便加大 stack 容量?理由是需要 作業系統 的 root
權限才能任意調整 process 可使用的資源。就算是提高了 stack 容量,也會在重複
累積 stack frame 之後產生嚴重的副作用:系統不斷 paging XD。常言道:世界就
這麼多錢,你多得了別人就少得了。用光了實體記憶,那就只有用下一層的媒體:
硬碟了。這或許可以解釋為什麼焰會感到痛苦的原因 (精神上,心裡上的壓力和不協調)
所以當系統偵錯的時候會判定 HomuHomu 是 zombie process 無誤 (啥鬼)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 66.57.82.35
※ 編輯: DeDanann 來自: 66.57.82.35 (03/16 01:41)
推 sdewqazxc:快推要不然別人以為我們看不懂 03/16 01:46
推 pichubaby:原PO壞掉了... 03/16 01:47
→ pichubaby:其實這明明就是很簡單的暴力破解法 只是看來這問題是NP 03/16 01:48
→ DeDanann:原 po 電腦 得了 BSOD...確實壞了 ﹨(╯▽╰)∕ 03/16 01:50
推 festa:還不如來想想怎麼設計act+adv的魔法少女HOMURA 03/16 01:50
→ shintz:看不懂XDDDD 來聽miku唱歌吧 03/16 01:52
推 awashharp:HomuHomu使用產生新物件(平行世界)再加上Closure的設計 03/16 01:59
→ awashharp:去存取外層的資料 不過物件堆積照樣Stack Overflow 03/16 02:00
推 michaelliu:趕快推 不然別人會以為我看不懂 03/16 02:11
推 agra:的確是zombie無誤XDDDDD 03/16 02:16
推 franknine:沒有不正常的終止 parent process 為什麼會有 zombie ? 03/16 08:37
推 Bencrie:Zombie process是說行程已經死亡,但是沒人wait它的回傳值 03/16 08:39
推 franknine:0rz 我跳太快, 跳到為什麼沒有人 wait 了. 03/16 09:01
→ white9cat:依據 process 後就一知半解了QA Q 03/16 09:25