精華區beta Programming 關於我們 聯絡資訊
※ 引述《gerrychou.bbs@cis.nctu.edu.tw (wtchou)》之銘言: : 不過原文所要求的 c000 也許他並不是指 selector : 他也許就是指 physical address, c000 : (我再抓個小小問題, 他本來就不是說要 c000 這個 selector) : 這的確是實際的問題, : 例如, 一塊界面卡, 佔用了實體位址, : 那在驅動程式也應該要能對應的到; : 然而, 應用程式即使對應的到(邏輯位址->實體位址), : 也不一定有權去存取; 對不起,吐個嘈: 老兄文章裡面用了兩個「也許」,可見是用猜的,不過我不用猜的, 我模擬一下: 1. 原作者說他要在WINDOW下使用EMS記憶體,首先EMS記憶體在DOS下 早就使用XMS來模擬了,所以他要指向的記憶體怎麼可能 在某一塊介面卡上呢?現在誰家裡還有正在使用的EMS卡嗎? 2. 原作者說,他指向c000:0000為什麼會發生記憶體存取錯誤? 很明顯的,他正在模仿DOS下的方式,要直接將指標指向EMS的頁對應框。 而且他的主要疑問是「為什麼這樣會產生page fault?」 3. 他之所以這樣問,就是因為他還不懂WINDOW的記憶體管理方式, 任何新手都有可能會犯下這個錯誤,包括將指標指向A000:0000企圖 直接記憶體存取。 4. 我回答他WINDOW不認識c000這個selector,主要是提醒他, WINDOW的記憶體管理與DOS不同,並且WINDOW下也不使用EMS 這種古老的管理方式。 5. 另一外網友回應「c segment」,沒錯,是「c segment」, 但既然原作者是在WINDOW下做這件事情,所以我必須 說那是一個選擇子,不是一個段位址。 6. 然後兄台就把我吐個嘈,後來......就這樣了,大家要怎麼猜對方 的想法我管不著,我只就我所知回應別人。就這樣啦,如果還有什麼 BUG,請自行想像吧。 7. 結論: 回應別人的文章,首先就是要瞭解對方遇到的狀況,以及對方的想法, 如果不清楚對方問題所在,那最好不要回應。當然有很多白爛問問題都是 隨時問,隨便問,不停問(引字理財聖經),這樣別人只好隨時答,隨便 答,唬爛答,乾脆不答。 從中間參與討論者,看到的文章可能是斷剪殘篇,不清楚當初最原始 的問題所在,然後開始插一腳。實際上我們應該回頭看看最先提出的 那篇文章才對。 以免自己耍白爛還不自知。 8. 好啦,開開玩笑罷了,大家不要介意。偶爾來點生活調劑也不錯^_^ -- DirectX 程式設計 http://student.thu.edu.tw/~s845235 -- ※ Origin: 程式設計樂園 ◆ From: tsa27.thu.edu.tw