转载请注明出处:http://blog.csdn.net/muge0913/article/details/7314854
Linux 实现了请求页面调度,页面调度是说页面从硬盘按需交换进来,当不再需要的时候交换出去。这样做允许系统中每个进程的虚拟地址空间和实际物理内存的总量再没有直接的联系,因为在硬盘上的交换空间能给进程一个物理内存几乎无限大的错觉。
交换对进程来说是透明的,应用程序一般都不需要关心(甚至不需要知道)内核页面调度的行为。然而,在下面两种情况下,应用程序可能像影响系统的页面调度:
确定性(Determinism)
时间约束严格的应用程序需要确定的行为。如果一些内存操作引起了页错误,导致昂贵的磁盘操作,应用程序的速度便不能达到要求,不能按时做计划中的操作。如果能确保需要的页面总在内存中且从不被交换进磁盘,应用程序就能保证内存操作不会导致页错误,提供一致的,可确定的程序行为,从而提供了效能。
安全性(Security)
如果内存中含有私人秘密,这秘密可能最终被页面调度以不加密的方式储存到硬盘上。
例如,如果一个用户的私人密钥正常情况下是以加密的方式保存在磁盘上的,一个在内存中为加密的密钥备份最后保存在了交换文件中。在一个高度注重安全的环境中,这样做可能是不能被接受的。这样的应用程序可以请求将密钥一直保留在物理内存上。当然,改变内核的行为会导致系统整体性能的负面影响。当页面被锁定在内存中,一个应用程序的安全性可能提高了,但这能使得另外一个应用程序的页面被交换出去。如果内核的设计是值得信任的,它总是最优地将页面交换出去(看上去将来最不会被使用的页面)。
如果用户不希望某块内存在暂时不用时置换到磁盘上,可以对该内存进行内存锁定。
相关函数如下:
)
函数:mlock锁定一片内存区域,addr为内存地址,length要锁定的长度。
munlock接触已锁定的内存
mlockall一次锁定多个内存页。flag取值有两个MCL_CURRENT锁定所用内存页,MCL_FUTURE锁定为进程分配的地址空间内存页。munlockall用于解除锁定的内存。
注:只有超级用户才能进行锁定和解除内存操作。
分享到:
相关推荐
基于LINUX系统下c语言-----学生管理系统common.h文件.rar
Linux下C语言编程--时间概念 Linux下C语言编程--时间概念 Linux下C语言编程--时间概念 Linux下C语言编程--时间概念
Linux下C语言编程--进程的创建
对Linux下C语言编程--线程操作作了详细的说明
mysql-connector-c-6.1.11-linux-glibc2.12-x86_64.rar
linux下C语言编程4-使用共享内存实现进程间通信
对Linux下C语言编程--进程通信、消息管理作了详细的解答
qt-opensource-linux-x64-5.12.12.run Qt(官方发音 [kju:t],音同 cute...Qt 支持的操作系统有很多,例如通用操作系统 Windows、Linux、Unix,智能手机系统 Android、iOS、WinPhone, 嵌入式系统 QNX、VxWorks 等等。
使用方法:解压 openocd-esp32-linux64-0.10.0-esp32-xxxxxxxx.zip ,根据时间版本选择一个 .tar.gz 的文件,放入linux下 ~/.espressif/dist 文件夹,再执行 ./install.sh 就跳过这一个下载了。
linux下的c语言-网络-网络编程面试题.pdf
Linux网络编程一步一步学-IPv6下网络编程步骤.pdf Linux网络编程一步一步学-select详解.pdf Linux网络编程一步一步学-UDP编程介绍.pdf Linux网络编程一步一步学-UDP方式点对点通讯.pdf Linux网络编程一步一步学-UDP...
Linux内存管理--Linux物理内存三级架构.pdf
第22章 韦凯峰零基础学习Linux C程序设计 - 实践项目 - 学生信息管理系统
对Linux下C语言编程--文件的操作编程作了详细的说明和给出了很好的例子
linux下C语言编程4-使用共享内存实现进程间通信.pdf
linux下的c语言-网络-网络编程面试题[文].pdf
对Linux下C语言编程--信号处理函数作了详细的说明,看了对Linux下的信号处理操作有一个清晰地认识
Linux操作系统是面向多用户的.在同一时间可以有许多用户向操作系统发出各种命 令.那么操作系统是怎么实现多用户的环境呢?在现代的操作系统里面,都有程序和进程的...本文为大家介绍Linux系统下C语言编程--进程的创建。
arm-linux-gcc交叉编译器,版本3.4.1,用于Linux下的ARM开发。 安装方法: 1. tar zxvf arm-linux-gcc-3.4.1.tgz -C/ 2. 编辑 ~/.bashrc ,加入 export PATH=$PATH:/usr/local/arm/3.4.1/bin 3. 验证安装 [root@...
util-linux-ng-2.17源码(含fdisk) Here is a list of all documented files with brief descriptions: util-linux-ng-2.17.2/disk-utils/blockdev.c [code] util-linux-ng-2.17.2/disk-utils/cramfs.h [code] ...