虚拟内存运行原理!

                                   虚拟内存运行原理!

在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或所有物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有需要的进程使用。

在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。

分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到内存的过程被称作Page-In。当内核需要一个分页时,但发现此分页不在物理内存中(因为已经被Page-Out了),此时就发生了分页错误(Page Fault)。

当系统内核发现可运行内存变少时,就会通过Page-Out来释放一部分物理内存。经管Page-Out不是经常发生,但是如果Page-out频繁不断的发生,直到当内核管理分页的时间超过运行程式的时间时,系统效能会急剧下降。这时的系统已经运行非常慢或进入暂停状态,这种状态亦被称作 thrashing(颠簸)。


这也是为什么有时候需要sync将数据写入磁盘,遇到故障清理虚拟内存的原因了。

时间: 2024-11-03 01:21:18

虚拟内存运行原理!的相关文章

初级游戏外挂编程详解 windows运行原理+游戏辅助编程 游戏外挂编程

详解游戏辅助编程 [目录] 1-什么是Windows API 2-Windows进程 3-Windows 的内存的运行原理 4-windows 中句柄的概念 5-Windows的变量类型 6-辅助实现的原理 7-编程实现游戏辅助 8-怎样查找内存地址 9-总结 准备软件:VC,CheatEngineer5.5 学习这部分内容,你必须要掌握C语言的基础知识,非常基础的语法就行了.这篇文章的内容适合刚开始接触编程的人,高手请飘过. [1]什么是windows API Windows API 中文翻译

黑马公开课——运行原理与GC学习笔记

.NET Framework 程序的运行原理 .NET Framework的组成:(1)基础类库(BCL):使用线程的类来完成编程,对于不存在的类,就自己编写:(2)编译工具:将源文件,编译成"程序集"(exe或dll等)[.NET环境中,MSIL=CIL=IL](3)公共语言运行时(CLR):执行前检测.编译:执行到了某个方法时才编译这个方法的代码[即时编译器(JIT)]编译过程:.NET源代码(C#)-->通过C#编译器编译成程序集[程序集中包括:元数据(一个表,显示了程序中

html的运行原理

     html的运行原理      1.本地运行       html 文件 使用 浏览器(软件)        视频文件   使用 暴风软件       2,远程访问运行          在100%情况(除了自己测试外)是远程访问html文件        html的基本结构         不管这个html 文件有多复杂,它的基本结构式          <元素 属性='属性值'...>内容</元素>          如果没有内容,可以这样写          <

Memcached概念、作用、运行原理、特性、不足简单梳理(1)

http://www.cnblogs.com/yinrq/p/5013742.html Memcached概念.作用.运行原理.特性.不足简单梳理(1) 大家可能对memcached这种产品早有了解,或者已经应用在自己的网站中了,但是也有一些朋友从来都没有听说过或者使用过.这都没什么关系,本文旨在从各个角度综合的介绍这种产品,尽量深入浅出,如果能对您现在或以后的工作有所帮助,笔者将感到无比荣幸. Memcached概念.作用.运行原理.特性.不足简单梳理(1) Memcached下载安装.NET

Nginx FastCGI的运行原理

一.FastCGI 1.介绍 CGI全称通用网关接口 Commmon Gateway Interface 用于HTTP服务上的程序服务通信交流的一种工具,CGI程序须运行在网络服务器上. 传统CGI接口方式性能较差,由于每次HTTP服务器遇到动态程序需要重启解析器来执行解析,然后结果被返回给HTTP服务器.这在处理高并发时,几乎是不可能的,因此诞生了FastCGI.另外传统的CGI接口方式安全性也很差 一个可伸缩地.高速地在HTTP服务器和动态脚本语言间通信的接口 接口在linux下是socke

Linux下管道的运行原理及实现

管道(PIPE) 管道的运行原理 管道是一种最基本的IPC机制,由pipe函数创建: #include<unistd.h> int pipe(int filedes[2]); 调用pipe函数时在内核中开辟一块缓冲区用于通信,它有一个读端和一个写端,通过filedes参数传出给程序两个文件描述符,filedes[0]指向管道的读端,filedes[1]指向管道的写端.管道就像一个打开的文件,通过read(filedes[0]);或者write(filedes[1]):向这个文件读写数据,其实是

Android开发学习笔记(二)——编译和运行原理(1)

http://www.cnblogs.com/Pickuper/archive/2011/06/14/2078969.html 接着上一篇的内容,继续从全局了解Android.在清楚了Android的平台架构(可以看作是静态原理)后,还需要掌握其动态原理.动态原理包含两部分,一部分是编译原理,另一部分是运行原理.有人会说,搭建一个基于Eclipse的Android开发环境,编译和运行只要点击按钮即可完成.但是,如果只是“知其然而不知其所以然”的话,在后面的开发中一旦遇到奇怪的问题后可能就束手无措

[二]java运行原理

public class HelloWorld{ public static void main(String args[]){ System.out.println("hello"); } } 运行原理: .java 编译(javac) .class 运行(java) 得出结果

QF——iOS程序运行原理

iOS程序的运行原理: 1> main.m 主函数是所有程序的入口函数. 2> 在main函数里是UIApplicationMain函数,开启了一个无限循环,以监听该应用. 该UIApplicationMain函数有4个参数,前两个分别是main函数的参数,第3个参数UIApplication的类名,第4个是应用的代理类名. 2.1> 创建一个UIApplication实例,单例的,一个应用对应一个该对象,代表整个应用程序. 2.2> 再创建一个UIApplication的dele