[問題] proc/[pid]/maps 與 exe 的問題

看板LinuxDev作者 (22)時間6年前 (2017/11/10 03:42), 編輯推噓2(2024)
留言26則, 2人參與, 6年前最新討論串1/1
在看 /proc/[pid]/maps時 有些process maps第一行pathname是空的 文件 http://man7.org/linux/man-pages/man5/proc.5.html 表示是mmap設定成 MAP_ANONYMOUS 請問什麼時候會這樣用 /proc/[pid]/exe是 execution binaries的link 文件說可以被dereferenced 請問什麼樣的程式會dereferenced 或是連結失敗 例如fork subprocess? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 133.34.143.187 ※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1510256568.A.142.html

11/10 09:55, 6年前 , 1F
當你需要一塊連續的記憶體空間 而且是0填滿的(zero-filled)
11/10 09:55, 1F

11/10 09:56, 6年前 , 2F
有些library alloc()系列函式底層實作就是用MAP_ANONYMOUS
11/10 09:56, 2F

11/10 09:56, 6年前 , 3F
另外 dereferenced 你可能誤會意思了
11/10 09:56, 3F

11/10 09:57, 6年前 , 4F
他跟C的 "*" dereference operator 的概念類似
11/10 09:57, 4F

11/10 09:57, 6年前 , 5F
symbolic link看作是pointer 所以這裡的意思是當你去讀exe
11/10 09:57, 5F

11/10 09:58, 6年前 , 6F
不是讀到exe這個symbolic link 而是exe refer的對象
11/10 09:58, 6F

11/10 09:58, 6年前 , 7F
也就是那個可執行的binary檔
11/10 09:58, 7F

11/10 10:02, 6年前 , 8F
但我記得procfs在/exe的實作上不是真的symbolic link
11/10 10:02, 8F

11/10 10:02, 6年前 , 9F
但結果有87%像就是了... 就跟你不用MAP_ANONYMOUS 但是fd指
11/10 10:02, 9F

11/10 10:03, 6年前 , 10F
向/dev/zero 也是有87%像
11/10 10:03, 10F

11/10 18:10, 6年前 , 11F
請問fork的子程序 exe會是 空的嗎
11/10 18:10, 11F

11/10 20:33, 6年前 , 12F
這問題好難... exe其實是印mm_struct的exe_file
11/10 20:33, 12F

11/10 20:33, 6年前 , 13F
exe會空的情況就是沒有mm(memory descriptor)
11/10 20:33, 13F

11/10 20:34, 6年前 , 14F
而沒有mm的 通常都是kernel thread 因為kernel thread都run
11/10 20:34, 14F

11/10 20:35, 6年前 , 15F
在同一個kernel address space中,所以不需要mm
11/10 20:35, 15F

11/10 20:35, 6年前 , 16F
說「通常」 是因為還有一種情況是mm已經被release
11/10 20:35, 16F

11/10 20:36, 6年前 , 17F
什麼情況mm會被release但是process還活著?? ->zombie
11/10 20:36, 17F

11/10 20:36, 6年前 , 18F
所以我猜答案是kernel thread和zombie process都沒有exe
11/10 20:36, 18F

11/10 20:37, 6年前 , 19F
再把fork加進來 kernel thread fork出去的task 也都沒有mm
11/10 20:37, 19F

11/10 20:39, 6年前 , 20F
如果是一般有mm的task, fork()我記得會dup mm, 所以exe會跟
11/10 20:39, 20F

11/10 20:39, 6年前 , 21F
parent一樣,直到exec()的時候才會去改mm裡面的exe_file
11/10 20:39, 21F

11/10 20:40, 6年前 , 22F
但是child如果變成zombie 又會變成沒有exe
11/10 20:40, 22F

11/10 20:44, 6年前 , 23F
講太複雜了 你的答案是:「有可能」
11/10 20:44, 23F

11/10 20:49, 6年前 , 24F
非常感謝
11/10 20:49, 24F

11/10 20:52, 6年前 , 25F
再請問zombie 有辦法 被wake up嗎
11/10 20:52, 25F

11/10 20:58, 6年前 , 26F
不行 zombie的memory已經被release 所以才叫zombie
11/10 20:58, 26F
文章代碼(AID): #1Q1A-u52 (LinuxDev)
文章代碼(AID): #1Q1A-u52 (LinuxDev)