Windows内存管理简介:

 1:连续的内存空间分配:

(1)单一连续分配:只能单作业,单任务运行:

    分为系统和用户区:用户区是指除了系统需外左右的内存,由于单用户,单任务,要不都被占用,要不全空

 

(2):固定空间分配:固定分区分配是最简单的一种多道程序存储管理方式,它将用户内存空间划分为若干个固定大小的区域,每个分区只装入一道作业。当有空闲分区时,便可以再从外存的后备作业队列中,选择适当大小的作业装入该分区,如此循环。

  • 分区大小相等:用于利用一台计算机去控制多个相同对象的场合,缺乏灵活性。
  • 分区大小不等:划分为含有多个较小的分区、适量的中等分区及少量的大分区。

分区说明表:

是一个表有下面几列

分区号:大小:起始地址:是否分配

 

(3)动态分区分配

动态分区分配又称为可变分区分配,是一种动态划分内存的分区方法。这种分区方法不预先将内存划分,而是在进程装入内存时,根据进程的大小动态地建立分区,并使分区的大小正好适合进程的需要。因此系统中分区的大小和数目是可变的。

 

 

动态分区在开始分配时是很好的,但是之后会导致内存中出现许多小的内存块。随着时间的推移,内存中会产生越来越多的碎片(图3-6中最后的4MB和中间的6MB,且随着进程的换入/换出,很可能会出现更多更小的内存块),内存的利用率随之下降。这些小的内存块称为外部碎片,指在所有分区外的存储空间会变成越来越多的碎片,这与固定分区中的内部碎片正好相对。克服外部碎片可以通过紧凑技术来解决,就是操作系统不时地对进程进行移动和整理。但是这需要动态重定位寄存器的支持,且相对费时。紧凑的过程实际上类似于Windows系统中的磁盘整理程序,只不过后者是对外存空间的紧凑。

 为了解决新引入的进程处于内存那块位置引入四中算法:

  • 首次适应算法:
  • 循环首次适应算法:前两种按照地址增长,这个是循环,上个从头查找
  • 最佳适应算法:按大小增长,c从小内存到大内存
  • 最坏适应算法:从大内存到小内存

 

(4)非连续空间的分配

页式管理:其优点是没有外碎片,每个内碎片不超过页的大小。缺点是,程序全部装入内存,要求有相应的硬件支持。例如地址变换机构缺页中断的产生和选择淘汰页面等都要求有相应的硬件支持。这增加了机器成本,增加了系统开销。

段式管理:其优点是可以分别编写和编译,可以针对不同类型的段采用不同的保护,可以按段为单位来进行共享,包括通过动态链接进行代码共享。缺点是会产生碎片。

段页式管理::段页式管理的段式管理与页式管理方案结合而成的所以具有他们两者的优点。但反过来说,由于管理软件的增加,复杂性和开销也就随之增加了。另外需要的硬件以及占用的内存也有所增加。使得速度降下来。

时间: 2024-12-13 21:55:52

Windows内存管理简介:的相关文章

Windows内存管理的方式

一.内存的概念 1. 物理内存:即插在主板上的内存条.他是固定的,内存条的容量多大,物理内存就有多大(集成显卡系统除外). 但是如果程序运行很多或者程序本身很大的话,就会导致大量的物理内存占用,甚至导致物理内存消耗殆尽. 2. 虚拟内存:虚拟内存就是在硬盘上划分一块页面文件,充当内存. 当程序在运行时,有一部分资源还没有用上或者同时打开几个程序却只操作其中一个程序时,系统没必要将程序所有的资源都塞在物理内存中,于是,系统将这些暂时不用的资源放在虚拟内存上,等到需要时在调出来用. 当程序运行时需要

windows 内存管理的几种方式及其优缺点

windows 内存管理方式主要分为:页式管理,段式管理,段页式管理. 页式管理的基本原理是将各进程的虚拟空间划分为若干个长度相等的页:页式管理把内存空间按照页的大小划分成片或者页面,然后把页式虚拟地址与内存地址建立一一对应的页表:并用相应的硬件地址变换机构来解决离散地址变换问题.页式管理采用请求调页或预调页技术来实现内外存存储器的统一管理.其优点是没有外碎片,每个内碎片不超过页的大小.缺点是,程序全部装入内存,要求有相应的硬件支持.例如地址变换机构缺页中断的产生和选择淘汰页面等都要求有相应的硬

windows内存管理方式以及优缺点

Windows内存管理方式:页式管理,段式管理,段页式管理 页式管理 将各进程的虚拟空间(逻辑地址)划分为若干个长度相等的页,业内管理把内存空间(物理内存)按照页的大小划分为片或者页面,从而实现了离散分配,然后把页式虚拟地址和内存地址建立一一对应的页表,并用相应的硬件地址变换机构来解决离散地址变化问题,(程序加载时,可将任意一页放入内存中任意一个页框而且这些页框不必连续,从而实现了离散分配)页式管理采用请求调页或预调页技术来实现内外存存储器的统一管理,地址结构由两部分构成,页号+页内地址 其优点

windows内存详解(一) 全面介绍Windows内存管理机制及C++内存分配实例

十分感谢MS社区的帖子,讲得很好~ http://social.technet.microsoft.com/Forums/zh-CN/2219/thread/afc1269f-fe08-4dc7-bb94-c395d607e536 (一):进程空间 在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用:根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制. 本文目的: 对Windows内存管理机制了解清楚,有效的利用C+

Windows内存管理

虚拟地址空间 现代CPU执行程序指令访问内存时,它接受的是虚拟地址.它会先使用硬件将虚拟地址转译为物理地址,然后就可以访问物理内存.通过虚拟地址访问内存有以下优势: 程序可以使用一系列相邻的虚拟地址来访问物理内存中不相邻的大内存缓冲区. 程序可以使用一系列虚拟地址来访问大于可用物理内存的内存缓冲区.当物理内存的供应量变小时,内存管理器会将物理内存页(通常大小为 4 KB)保存到磁盘文件.数据或代码页会根据需要在物理内存与磁盘之间移动. 不同进程使用的虚拟地址彼此隔离.一个进程中的代码无法更改正在

内存管理(简介,引用计数器)

移动设备的内存及其有限,每个app所占的内存是有限制的 下列行为都会增加一个app的内存占用 1,创建一个OC对象 2,定义一个变量 3,调用一个函数或者方法 当app所占用的内存比较多时,系统会发出内存警告,这时得回收一些不需要再使用的空间.比如回收一些不需要使用的对象,变量等. 如果app占用内存过大: 系统可能会强制关闭app,造成闪退现象,影响用户体验. 所谓内存管理,就是对内存进行管理,涉及的操作有: 分配内存:比如创建一个对象,会增加内存占用 清楚内存:比如销毁一个对象,能减小内存占

内存管理简介

1.内存管理的重要性 移动设备的内存极其有限,每个app所能占用的内存是有限制的 下列行为都会增加一个app的内存占用 创建一个OC对象 定义一个变量 调用一个函数或者方法 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间.比如回收一些不需要使用的对象.变量等 如果app占用内存过大, 系统可能会强制关闭app, 造成闪退现象, 影响用户体验 2.什么是内存管理 如何回收那些不需要再使用的对象? 那就得学会OC的内存管理 所谓内存管理, 就是对内存进行管理,

《Windows驱动开发技术详解》之Windows内存管理

虚拟内存地址 Windows所有的程序(Ring0和Ring3层)可以操作的都是虚拟内存.有一部分单元会和物理内存对应起来,但并非一一对应,多个虚拟内存页可以映射同一个物理内存页.还有一部分单元会被映射成磁盘上的文件,并标记为脏的.读取这段虚拟内存的时候,系统会发出一个异常,此时会出发异常处理函数,异常处理函数会将这个页的磁盘文件读入内存,并将其标记为不脏.可以让那些经常不读写的内存页交换成文件,并设置为脏. Windows之所以如此设计,第一是虚拟的增加了内存的大小:第二是使不同进程的虚拟内存

操作系统学习笔记(三) windows内存管理

系统物理页面是由 (Page Frame Number Database )简称PFN数据库来进行管理,实际上是一个数组,每个物理页面都对应一个PFN项. 进程的地址空间是通过VAD(Virtual Address Destriptor)管理.每个进程都有一个AVL树来保存这些VAD节点,来记录使用的地址以及属性等. 进程的内存地址属性分为保留和提交,保留即是使用时候才实际分配内存,而提交时需要交割对现空间的,需要分配物理页面的,然后将两者关联起来. 我们从NtAllocateVirtualMe