1.mprotect()修改一块虚拟内存区域上的保护信息如果一个进程在访问一块内存区域时违背了内存保护,内核会发送 SIGSEGV 信号。2.内存锁: mlock() 和 mlockall()将一块虚拟内存区域锁进物理内存,从而防止它被交换出去。将一个进程的虚拟内存的部分或全部锁进内存以确保它们总是位于物理内存中是非常有用的。之所以这样做的一个原因是它可以提高性能。对被锁住的分页的访问可以确保永远不会因为分页故障而发生延迟。这对于那些需要确保快速响应时间的应用程序来说是很有用的。给内存加锁的另外一个原因是安全。如果一个包含敏感数据的虚拟内存分页永远不会被交换出去,那么该分页的副本就不会被写入到磁盘。如果该分页被写入磁盘,那么从理论上来说就可以在后面某个时刻直接从磁盘读取该分页。(攻击者可能会故意通过运行一个消耗大量内存的程序来构造这种场景,从而强制其他进程占据的内存被交换到磁盘上).由于内核不保证会清除交换空间中保存的数据,因此即使在进程终止之后也可能从交换空间中读取信息。内存锁不会通过 fork() 创建的子进程继承,也不会在 exec() 执行期间被保留。mlock();munlock();mlockall();munlockall();3.确定内存驻留性: mincore()让一个进程能够确定一块虚拟内存区域中的分页是否驻留在物理内存中。4.建议后续的内存使用模式: madvise()让一个进程能够对其虚拟内存区域的使用模式报告给内核。madvise() 系统调用通过通知内核调用进程起始地址 addr,长度为 length 字节的范围之内的分页的可能的使用情况来提升应用程序的性能。内核可能会使用这种信息来提升在分页之下的文件映射上之下的IO效率。

50.Linux/Unix 系统编程手册(下) -- 虚拟内存操作相关推荐

  1. linux/unix系统编程手册11-15

    title: linux/unix编程手册-11_15 date: 2018-05-27 11:53:07 categories: programming tags: tips linux/unix编 ...

  2. Linux/Unix系统编程手册 第三章:系统编程概念

    本章介绍系统编程的基础概念和一些后续章节用到的函数及头文件,并说明了可移植性问题. 系统调用是受控的内核入口,通过系统调用,进程可以请求内核以自己的名义去执行某些动作,比如创建子进程,执行I/O操作, ...

  3. Linux/UNIX系统编程手册gg

    Linux系统: "所见皆文件" 一个比较好的博客 一.Linux基础操作 Linux系统目录: bin:存放二进制可执行文件 boot:存放开机启动程序 dev:存放设备文件: ...

  4. Unix系统编程()虚拟内存管理

    在之前学到过进程的内存布局中忽略了一个事实:这一布局存在于虚拟文件中. 因为对虚拟内存的理解将有助于后续对fork系统调用.共享内存和映射文件之类的主题阐述,这里还要学习一下有关虚拟内存的详细内容. ...

  5. Linux/Unix系统编程 五:进程

    进程是一个可执行程序的实例. 一.linux系统进程管理 1.进程管理的作用 判断机器健康状态 查看系统中所有进程 杀手进程 2.查看系统进程 1.ps -aux BSD操作系统格式: TTY说明: ...

  6. Linux系统编程手册-源码的使用

    Linux系统编程手册-源码的使用 转自:http://www.cnblogs.com/pluse/p/6296992.html 第三章后续部分重点介绍了后面章节所要使用的头文件及其实现,主要如下: ...

  7. Linux/Unix系统下nginx+php安装简明教程

    本文转载自Linux/Unix系统下nginx+php安装简明教程,请保留转载信息~ 一.安装nginx: 1. 安装pcre库,nginx的rewrite模板需用到pcre库: mkdir -p / ...

  8. 在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题

    iconv命令是运行于linux/unix平台的文件编码装换工具.当我们在linux/unix系统shell查看文本文件时,常常会发现文件的中文是乱码的,这是由于文本文件的编码与当前操作系统设置的编码 ...

  9. 5w字总结 Unix系统编程学习笔记(面试向)(Unix环境高级编程/Unix环境程序设计)

    文章目录 一.计算 C语言的数据表示与处理 计算 C语言的基本运算操作 内存表和符号表 类型转换 函数类型的分析 指令 复合指令 句法 函数 函数激活(Activation Record) 函数激活定 ...

  10. 【Linux】系统编程之文件(标准I/O库)

    目录 一.文件I/O与标准I/O的区别(open与fopen) 1.来源 2.移植性 3.适用范围 4.文件IO层次 5.缓冲 二.函数fopen.fwrite.fread.fseek.fclose ...

最新文章

  1. RDKit:化合物骨架分析(基于Python3)
  2. 从主数据的角度看一个零售ERP系统
  3. python3.6安装pyqt5-Python3.6安装PyQt5的方法
  4. SWIG:SWIG的简介、安装、使用方法之详细攻略
  5. boost :: swap交换整数数组的数组
  6. 网站产品设计应避免的7个误区
  7. 2019_8_1python
  8. 可持久化数据结构加扫描线_结构化光扫描
  9. mysql视图实验心得_Mysql学习经验总结【3】
  10. 一种编程范式:对拍编程
  11. FPGA 无解漏洞 “StarBleed”轰动一时,今天来扒一下技术细节!
  12. Web API-DOM节点操作
  13. node-gyp 出错
  14. 一博商业进销存管理系统 v2008 怎么用
  15. 如何理解静态库与动态库
  16. android 网络运营商的名字显示规则(锁定屏幕,下拉列表)
  17. vs警告 当前源代码跟内置的版本不一致解决办法
  18. 【系统辨识】最小二乘法
  19. 运维(32) Prometheus+Grafana监控SpringBoot
  20. 用佛系的心老王软件Android,老王佛系2.2.19蓝奏云苹果最新版

热门文章

  1. vue修改数组元素方法
  2. Java中设计模式之装饰者模式-3
  3. 大数据 数据平台方案评估
  4. 【CodeVS】 p1696 奇怪的函数
  5. hive0.12安装
  6. 转载:获取数据库中的所有表 (C#实现)
  7. Unity Shader 菲涅尔环境反射
  8. json读取json文件,上传到后台
  9. Latex 常用代码
  10. 修改上传文件大小限制(LNMP/wamp环境)