2012-12-08 80 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