[問題] Dll 觀念請教
dll 觀念問題
最近一直對dll這個東西產生許多疑惑
我有爬文看之前 #1BZqC6Nx 的文章
和參考一些網路的文章
講法有一些出入
有人是講說
兩個process load同一份dll的話
OS只會load一份dll到memory
意思是說假如我有 A.exe配一個擺在自己exe同一個目錄的Foo.dll
和B.exe配一個擺在自己exe同一個目錄的Foo.dll
兩者用的dll檔名一樣 OS 會知道說Foo.dll被A load過了
所以B.exe在launch時就不load了?
那如果.dll只是剛好檔名一樣 其實內容根本不一樣, 這樣B要用Foo.dll 不是會產生
錯誤嗎?
(之前問一個資深的同事他說OS load dll是by name去判斷要不要再load一次)
如果真的是dll只load一份到記憶體
又有看到一些文章 和 #1BZqC6Nx那篇
大概是講說 用到的data都會獨立copy到自己process的address space, 我理解上就是會
各process擁有自己一份資料
互不相關
但這又跟上面說的dll只load一次 感覺無法觀念連貫起來
另外我又看到文章提到copy on write,
這又是跟上面的觀念 怎麼做一個融會貫通呢= =
自我解釋成
dll load進memory是by name 如果只有read的話就一直那一份
但如果要write資料 或是 呼叫一些function 用到一些local的變數 就會copy on write
複製一份 讓 彼此不會寫同一份資料
請各位給予觀念的指正
查了一段時間 但都沒找到一個很完整的觀念解釋
查到的通常都是怎麼做一個dll ....
我想這觀念應該跟linux的shared lib 一樣吧???
感謝各位
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.64.222
→
01/31 12:25, , 1F
01/31 12:25, 1F
→
01/31 12:55, , 2F
01/31 12:55, 2F
→
01/31 16:15, , 3F
01/31 16:15, 3F
→
01/31 16:42, , 4F
01/31 16:42, 4F
→
01/31 16:43, , 5F
01/31 16:43, 5F
→
01/31 16:43, , 6F
01/31 16:43, 6F
→
01/31 16:44, , 7F
01/31 16:44, 7F
→
01/31 16:44, , 8F
01/31 16:44, 8F
→
01/31 16:45, , 9F
01/31 16:45, 9F
推
01/31 19:07, , 10F
01/31 19:07, 10F
→
02/01 00:21, , 11F
02/01 00:21, 11F
→
02/01 00:31, , 12F
02/01 00:31, 12F
推
02/01 12:07, , 13F
02/01 12:07, 13F
討論串 (同標題文章)