windows 内存管理方式主要分为:页式管理,段式管理,段页式管理。

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

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

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

windows 内存管理的几种方式及其优缺点相关推荐

  1. Windows内存管理学习笔记(一)—— 线性地址的管理

    Windows内存管理学习笔记(一)-- 线性地址的管理 用户空间线性地址的管理 实验一:理解用户空间线性地址管理 Private Memory 实验二:理解Private Memory 堆 实验三: ...

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

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

  3. Windows 内存详解(三)Windows内存管理

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

  4. linux 和windows 内存管理区别

    linux 和windows 内存管理区别 在 80 年代初,IBM 推出的 IBM PC 机采用了 Intel 16 位的 8088 处理器,该处 理器可以访问最多 1MB 的存储器.当应用程序需要 ...

  5. Windows内存管理学习笔记(三)—— 无处不在的缺页异常

    Windows内存管理学习笔记(三)-- 无处不在的缺页异常 缺页异常 实验一:设置虚拟内存 无处不在的缺页 位于页面文件 保留与提交的误区 实验二:理解缺页异常 EXECUTE_WRITECOPY ...

  6. Windows内存管理机密+揭穿内存优化工具的骗局

    原文:The Memory-Optimization Hoax:RAM optimizers make false promises 作者:Mark Russinovich 译者:盆盆   我们在浏览 ...

  7. 全面介绍Windows内存管理机制及C++内存分配实例(五):堆

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

  8. 全面介绍Windows内存管理机制及C++内存分配实例(一):进程空间

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

  9. Dreamwear如何创建javascript_内存管理+如何处理4种常见的内存泄漏

    JavaScript是如何工作的:内存管理+如何处理4种常见的内存泄漏 潮水自会来去,但心志得坚若磐石.即便成不了那根定海神针,也至少不是那随意被拍上岸的野鬼游魂.by 一枚热汤圆 几周前,我们开始了 ...

最新文章

  1. linux没有日志如何排错,在 Linux 中使用日志来排错
  2. CSS中的未定义行为,浏览器的差异(一)
  3. zoj4062 Plants vs. Zombies 二分+模拟(贪心的思维)
  4. 像个字段相减绝对值_遇见你丨像个英雄一样活着 瘫痪作家用手指敲击文字著百万字文学作品...
  5. 使用Lambda表达式遍历Iterator迭代器
  6. 前端清单之Vue.js篇
  7. 锐浪报表 Grid++Report 免注册DLL C/S报表开发(二)清单文件manifest分析
  8. Cisco Packet Tracer路由器的基本命令
  9. 专访李智慧:架构是最高层次的规划和难以改变的决定
  10. 【悟空云课堂】第七期:不安全的反射漏洞(CWE-470: Use of Externally-Controlled Input to Select Classes or Code)
  11. MySQL学习(2)——MySQL表的增删查改(基础)
  12. 部署搭建DNS服务器
  13. edge函数闪退 matlab,Microsoft Edge闪退怎么办?Microsoft Edge闪退解决办法
  14. 【软件工程】 软件设计阶段
  15. 手机c语言图形界面编程工具,「分享」C语言如何编写图形界面
  16. 求逆和共轭转置为什么能够交换
  17. 大数据知识梳理(Hadoop、HDFS)(整理中。。。)
  18. 芯片封装中的BSC的含义
  19. kettle案例20-增加常量
  20. win10共享打印错误0x0000006_win10系统共享打印机提示操作无法完成错误0x000006ba的技巧...

热门文章

  1. vue2.0 自定义 生成二维码(QRCode)组件
  2. python之多并发socket
  3. 汇编语言第二课作业2.3
  4. RapidMiner数据挖掘入门
  5. CommunityServer 的对象持久化
  6. LeetCode-MySQL-175. 组合两个表
  7. MySQL高并发事务问题
  8. RabbitMQ在Windows环境下部署(简单有效)
  9. 内联函数和宏定义的区别
  10. gRPC服务注册发现及负载均衡的实现方案与源码解析