分支主题
读写执行权限示例
代码段这块内存区域的权限是可读,可执行,但是不可写
数据段具有可读可写的权限但是不可执行
堆则具有可读可写,可执行的权限(Java 中的字节码存储在堆中,所以需要可执行权限)
栈一般是可读可写的权限,一般很少有可执行权限
而文件映射与匿名映射区存放了共享链接库,所以也需要可执行的权限
VM_SHARD 用于指定这块虚拟内存区域映射的物理内存是否可以在多进程之间共享,以便完成进程间通讯
VM_IO 的设置表示这块虚拟内存区域可以映射至设备 IO 空间中。通常在设备驱动程序执行 mmap 进行 IO 空间映射时才会被设置
VM_RESERVED 的设置表示在内存紧张的时候,这块虚拟内存区域非常重要,不能被换出到磁盘中。
VM_SEQ_READ 的设置用来暗示内核,应用程序对这块虚拟内存区域的读取是会采用顺序读的方式进行,内核会根据实际情况决定预读后续的内存页数,以便加快下次顺序访问速度
VM_RAND_READ 的设置会暗示内核,应用程序会对这块虚拟内存区域进行随机读取,内核则会根据实际情况减少预读的内存页数甚至停止预读