2012-12-08 79 views
1

一個典型的過程由4個內存區域文本,數據,堆和堆棧組成。他們每個人有什麼保護屬性?內存保護屬性

感謝 喬希

回答

4

這個操作系統之間的不同而不同,所以沒有普遍有效的答案是可能的,但通常是這樣的:

  • 文本 - 讀執行
  • 數據 - 讀
  • 堆 - 讀寫
  • 堆棧 - 讀寫

較舊的操作系統可能有文本和數據可寫(某些硬件不允許區分讀取和讀取執行)。另外,一些操作系統會讓你隨意更改,而另一些操作系統不會(或者會有一些限制,比如不讓你設置某些「執行」的東西)。

+0

感謝您的回覆達蒙。你能告訴我這些Linux/Unix操作系統的屬性嗎?請讓我知道,如果有一個在UNIX命令來驗證這些屬性。 – Josh

+0

Linux的許可值列在例如根據[mprotect](http://man7.org/linux/man-pages/man2/mprotect.2.html),它允許設置這些(假設適當的權利)。我從來沒有需要查詢保護,不知道是否有一個簡單的方法。讀取'/ proc/[pid]/mem/maps'將是一個很好的起點。在我看來,查詢保護有點毫無意義,因爲它通常隱含地知道(如果你不知道,這意味着你沒有創建映射,所以你不應該篡改)。 – Damon