Windows内存管理方式:页式管理,段式管理,段页式管理

页式管理

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

其优点是没有外碎片,每个内碎片不超过页的大小。每个程序不必连续存放,这样就便于改变程序占用空间的大小(主要是随着程序运行,动态生成数据增多,所要求的地址空间相应增长),缺点是程序仍旧要全部装入内存,要有相应的硬件支持,例如地址转换机构缺页中断的产生和选择淘汰页面都要求有相应的硬件支持,这增加了机器成本,增加了系统开销,并且没有足够的内存,程序就不能执行

段式管理

程序按照内容和过程函数关系分段,每段都有自己的名字,一个用户作业或进程包括的段对应一个二维线性虚拟空间,也就是一个二维虚拟存储器,段式管理程序以段为单位分配内存,然后通过地址映射机构把段式虚拟地址转换为实际内存地址。优点:可以分别编写和编译,可以针对不同类型的段采用不同的保护,可以按段为单位来进行共享然后通过动态链接来进行代码共享。缺点是产生碎片

段页式管理

为了实现段页式管理,系统必须为每个作业或进程建立一张段表以管理内存分配和释放,缺段处理。另外由于一个段又被划分为若干个页,每个段必须建立一张页表一把段中的虚页变换成内存中的实际页面。显然与页式管理时相同,页表中也要有相应的缺页中断处理页面保护功能的表项,段页式管理的段式管理与页式管理方案结合而成的所以具有它们两者的优点,但反过来说由于管理软件增加,复杂性和开销也就随之增加了,另外需要的硬件以及占用的内存也有所增加,使得速度降下来。

页式和段式的区别?

相似:离散分配,地址映射机构来实现地址转换

(1)页是信息的物理单位,分页是为了实现离散分配方式,减少内存的外零头,提高内存利用率,或者说是由于系统管理的需要,而不是用户的需要。段是信息的逻辑单位,它含有一组意义相对完整的信息,分段的目的是为了更好地满足用户的需要。

(2)页大小固定且由系统决定,把逻辑地址划分为页号和页内地址两部分,是机器硬件实现的,段的长度不固定,却决定于用户所编写的程序,通常由编译系统在对源程序进行编译时根据信息的性质来划分

(3)页内系统地址是一维的,即单一的线性地址空间,程序员只需利用一个标识符,即可表示一个地址。分段的作业地址空间是二维的,程序员在标识一个地址时即需要给出段名,又需要给出段内地址

windows内存管理方式以及优缺点的更多相关文章

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

    windows 内存管理方式主要分为:页式管理,段式管理,段页式管理. 页式管理的基本原理是将各进程的虚拟空间划分为若干个长度相等的页:页式管理把内存空间按照页的大小划分成片或者页面,然后把页式虚拟地 ...

  2. Windows内存管理的方式

    一.内存的概念 1. 物理内存:即插在主板上的内存条.他是固定的,内存条的容量多大,物理内存就有多大(集成显卡系统除外). 但是如果程序运行很多或者程序本身很大的话,就会导致大量的物理内存占用,甚至导 ...

  3. Windows内存管理[转]

    本文主要内容:1.基本概念:物理内存.虚拟内存:物理地址.虚拟地址.逻辑地址:页目录,页表2.Windows内存管理3.CPU段式内存管理4.CPU页式内存管理 一.基本概念1. 两个内存概念物理内存 ...

  4. 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件

    本文背景: 在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用:根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制. 本 ...

  5. Windows内存管理

    本博文很大程度上参考了,潘爱民先生的<Windows内核原理与实现>一书,在此对他表示感谢. 记得是在学C语言指针的时候,首次比较实际的使用内存寻址.也是在那个时候知道不能使用未初始化的指 ...

  6. 全面介绍Windows内存管理机制及C++内存分配实例

    转自:http://blog.csdn.net/yeming81/article/details/2046193 本文基本上是windows via c/c++上的内容,笔记做得不错.. 本文背景: ...

  7. glusterfs 内存管理方式

    glusterfs中的内存管理方式: 首先来看看glusterfs的内存管理结构吧: struct mem_pool { struct list_head list; int hot_count; i ...

  8. 24小时学通Linux内核之内存管理方式

    昨天分析的进程的代码让自己还在头昏目眩,脑子中这几天都是关于Linux内核的,对于自己出现的一些问题我会继续改正,希望和大家好好分享,共同进步.今天将会讲诉Linux如何追踪和管理用户空间进程的可用内 ...

  9. 十天学Linux内核之第三天---内存管理方式

    原文:十天学Linux内核之第三天---内存管理方式 昨天分析的进程的代码让自己还在头昏目眩,脑子中这几天都是关于Linux内核的,对于自己出现的一些问题我会继续改正,希望和大家好好分享,共同进步.今 ...

随机推荐

  1. mysql 关键字bug

    今天运行语句 select * from order; 出现bug: ERROR 1064 (42000): You have an error in your SQL syntax; check t ...

  2. CI框架微信开发-自定义菜单

    在CI框架下面实现了自定义菜单功能.写了一个model,一个类库.顺便附带access_token的实现方式 <?php class Makemenu{ public $menustr; pub ...

  3. 处理PHP中字符串的常用操作及函数

    1. 确定一个字符串的长度 这是最为常见和基础的例子,对于确定一个字符串的长度,我们应该使用strlen()函数,比如要获取下面字符串$text 的长度: $text = "sunny da ...

  4. sql 数据库优化

    数据库优化: 1. 显示磁盘秘密: DBCC SHOWCONTIG(B2B_ZRate)  清理磁盘密度 DBCC DBREINDEX(B2B_ZRate) 2.

  5. [TYVJ] P1004 滑雪

    滑雪   背景 Background 成成第一次模拟赛 第三道   描述 Description     trs喜欢滑雪.他来到了一个滑雪场,这个滑雪场是一个矩形,为了简便,我们用r行c列的矩阵来表示 ...

  6. centos 6.5 安装 nginx+php+mysql

    一.准备工作 (1)配置防火墙 1.首先检查iptables服务的状态 [root@woxplife ~]# service iptables status iptables: Firewall is ...

  7. SqlServer IF Exists([database]|[table]|[prop]) / Column([Operation])

    *************************** --判断数据库是否存在 IF EXISTS (SELECT * FROM MASTER..sysdatabases WHERE NAME = ' ...

  8. SmartBusinessDevFramework架构设计-3:考虑开源?

    掖着藏着,终归不是好的办法.说的跟花一样,究竟里子是什么东西.一个好的被子,里料是羽绒还是棉花还是丝绵还是黑心棉?有时候,真的是看过之后,才能体验其中的奥秘. 这个架构的设计初衷,总体是为了方便.ne ...

  9. JavaEE Tutorials (28) - Duke书店案例研究示例

    28.1Duke书店的设计和架构43828.2Duke书店接口439 28.2.1Book Java持久化API实体439 28.2.2Duke书店中使用的企业bean440 28.2.3Duke书店 ...

  10. Min Stack 解答

    Question Design a stack that supports push, pop, top, and retrieving the minimum element in constant ...