我的問題是mprotect
有多快。保護措施與1GB連續內存相比,1MB連續內存有什麼區別?當然,我可以衡量時間,但我想知道發生了什麼。mprotect速度有多快
4
A
回答
4
對源代碼的快速檢查似乎表明它遍歷所選區域中的進程映射並更改其標誌。如果您保護的映射少於整個映射,則會將其分割爲兩個或三個映射。
所以簡而言之就是O(n)
其中n
是你調用mmap的次數。
你可以看到所有當前地圖中/proc/pid/maps
1
它是在該地區的頁數爲O(n)也是如此,因爲它應該對所有的PTE(頁轉換條目,它描述virtual-更改訪問位> PageTable中的物理頁面映射)。 Calltree:
mprotect
->
mprotect_fixup
->
change_pte_range
http://lxr.free-electrons.com/source/mm/mprotect.c#L32
47 do {
48 oldpte = *pte;
49 if (pte_present(oldpte)) {
50 pte_t ptent;
51
52 ptent = ptep_modify_prot_start(mm, addr, pte);
53 ptent = pte_modify(ptent, newprot);
54
55 /*
56 * Avoid taking write faults for pages we know to be
57 * dirty.
58 */
59 if (dirty_accountable && pte_dirty(ptent))
60 ptent = pte_mkwrite(ptent);
61
62 ptep_modify_prot_commit(mm, addr, pte, ptent);
63 } else if (PAGE_MIGRATION && !pte_file(oldpte)) {
64 swp_entry_t entry = pte_to_swp_entry(oldpte);
65
66 if (is_write_migration_entry(entry)) {
67 /*
68 * A protection check is difficult so
69 * just be safe and disable write
70 */
71 make_migration_entry_read(&entry);
72 set_pte_at(mm, addr, pte,
73 swp_entry_to_pte(entry));
74 }
75 }
76 } while (pte++, addr += PAGE_SIZE, addr != end);
注增量:addr += PAGE_SIZE, addr != end);
相關問題
- 1. SQLite通過Python速度有多快
- 2. Google App Engine的速度有多快?
- 3. 可能雙擊速度有多快?
- 4. 事件發生的速度有多快?
- 5. CRC的生成速度有多快?
- 6. 收到NSNotification的速度有多快?
- 7. Google App Engine MapReduce的速度有多快?
- 8. 您在Cygwin的GREP速度有多快?
- 9. 計算散列的速度有多快?
- 10. AppDomain創建速度有多快?
- 11. iPhone:快速枚舉,速度不夠快?
- 12. 速度更快嗎?
- 13. 沒有onScroll的滾動速度更快?
- 14. iPhone在屏幕上註冊點擊的速度有多快?
- 15. git通過遠程操作顛覆Subversion的速度有多快?
- 16. Gmail Divs-它們變化的速度有多快?
- 17. C# - 事件發生的速度有多快?
- 18. 取消授權回調的速度有多快?
- 19. Azure存儲更改傳播到實例的速度有多快?
- 20. 從JavaScript調用cookies時寫入速度有多快?
- 21. 將CEL事件寫入數據庫的速度有多快?
- 22. Android設備調用REST Web服務的速度有多快?
- 23. 單元測試運行速度有多快?
- 24. 知道硬盤驅動器在Delphi中的速度有多快
- 25. 無效刷新畫布的速度有多快?
- 26. Linux上的線程局部變量訪問速度有多快
- 27. SQOOP可以從RDBMS轉移到Hadoop的速度有多快?
- 28. 客戶端JavaScript與服務器端Java的速度有多快?
- 29. 這兩個JavaScript代碼的速度有多快?
- 30. C++文件的執行速度有多快?
參考文獻:[毫米/ mprotect.c](http://lxr.free-electrons.com/source/mm /mprotect.c#L232)和[LDD3 ch。 15](http://lwn.net/images/pdf/LDD3/ch15.pdf)。 – user786653
「當然,我可以計算時間」 - 假設你_meant_「當然我可以**測量**時間」 – sehe