1. 采用分区式存储管理的系统,在储存分配过程中产生的、不能供用户作业使用的主存里的小分区称成“内存碎片”。内存碎片分为内部碎片和外部碎片。

    内部碎片

    内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间;

    内部碎片是处于区域内部或页面内部的存储块。占有这些区域或页面的进程并不使用这个存储块。而在进程占有这块存储块时,系统无法利用它。直到进程释放它,或进程结束时,系统才有可能利用这个存储块。

    单道连续分配只有内部碎片。多道固定连续分配既有内部碎片,又有外部碎片。

    外部碎片

    外部碎片指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。

    外部碎片是出于任何已分配区域或页面外部的空闲存储块。这些存储块的总和可以满足当前申请的长度要求,但是由于它们的地址不连续或其他原因,使得系统无法满足当前申请。

    多道可变连续分配只有外部碎片

  2. 常见的置换算法有以下四种。

    1)最佳置换算法OPT

    选择的被淘汰页面是以后永不使用或者在最长时间内不再被访问的页面,以便保证获得最低的缺页率。

    2)先进先出页面置换算法FIFO

    优先淘汰最早进入内存的页面,即在内存中驻留时间最久的页面。该算法实现简单,只需把调入内存的页面根据先后次序链接成队列,设置一个指针总指向最早的页面。但该算法与进程实际运行时的规律不适应,因为在进程中,有的页面经常被访问。

    3)最近最久未使用置换算法LRU

    选择最近最长时间未访问过的页面予以淘汰,它认为过去一段时间内未访问过的页面,在最近的将来可能也不会被访问。该算法为每个页面设置一个访问字段,来记录页面自上次被访问以来所经历的时间,淘汰页面时选择现有页面中值最大的予以淘汰。

    4)时钟置换算法CLOCK

    简单的CLOCK算法给每帧关联一个附加位,称为使用位。当某页首次装入主存时,将该帧的使用位设置为1;当该页随后再被访问到时,其使用位也被置为1.对于页替换算法,用于替换的候选帧集合可视为一个循环缓冲区,并有一个指针与之相关联。当某一页被替换时,该指针被设置成指向缓冲区中的下一帧。当需要替换一页时,操作系统扫描缓冲区,以查找使用位被置为0的一帧。每当遇到一个使用位为1的帧时,操作系统就将该位重新置为0;若在这个过程开始时,缓冲区中所有帧的使用位均为0,则选择遇到的第一个帧替换;若所有帧的使用位均为1,则指针在缓冲区中完整地循环一周,把所有的使用位都置为0,并停留在最初的位置上,替换该帧中的页。由于该算法循环检查各页面的情况,故称CLOCK算法,又称最近未用NRU算法。

    3.物理地址:存储器地址,又叫绝对地址。

    逻辑地址:访内指令给出的地址叫逻辑地址,也叫相对地址。

    线性地址:也叫虚拟地址,是一个32位无符号整数,由逻辑地址经过段式内存管理单元转换而来。

操作系统 内存碎片 cache替换算法 虚拟地址逻辑地址线性地址物理地址相关推荐

  1. Linux下逻辑地址-线性地址-物理地址图解

    一.逻辑地址转线性地址 机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到. 我们写个最简单的hello world程序 ...

  2. linux kernel基本构成的内容有下列哪些项_Linux下逻辑地址-线性地址-物理地址详解...

    一.逻辑地址转线性地址 机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到. 我们写个最简单的hello world程序 ...

  3. 逻辑地址、虚拟地址、线性地址、物理地址

    逻辑地址.虚拟地址.线性地址.物理地址的区别: 虚拟地址: 在保护模式下,虚拟地址由段选择子+段内偏移量组成.利用段选择子可以获取到段描述符,再从段描述符中取得段的基地址.也就是说虚拟地址就是xxxx ...

  4. 虚拟地址 线性地址 物理地址 傻傻分不清楚?

    Virtual address  Linear address  Physic address 先说说逻辑地址: 我们时常会看到一种地址的表述方式--segment:offset.比方0x0:0x7c ...

  5. c 取地址 虚拟地址 物理地址_通过linux0.11源码理解进程的虚拟地址、线性地址、物理地址...

    进程的地址有三种,分别是虚拟地址(逻辑地址).线性地址.物理地址.在分析之前先讲一下进程执行的时候,地址的解析过程.在保护模式下,段寄存器保存的是段选择子,当进程被系统选中执行时,会把tss和ldt等 ...

  6. 5.3.6 虚拟地址、线性地址和物理地址之间的关系

    内核代码和数据的地址 对于linux 0.11内核代码和数据来说,在head.s程序的初始化操作中已经把内核代码段和数据段都设置成长度为16M的段.在线性地址空间中这两个段的范围重叠,都是从线性地址0 ...

  7. linux内核线性地址等于物理地址,Linux 从虚拟地址到物理地址

    我们都知道,动态共享库里面的函数的共享的,这也是动态库的优势所在,就是节省内存.C 编译出来的可执行文件几乎都会用到libc的库,假如没有这个共享的技术,每个可执行文件都要占一份libc库的内存,这将 ...

  8. linux内存管理---虚拟地址、逻辑地址、线性地址、物理地址的区别(一)

    分析linux内存管理机制,离不了上述几个概念,在介绍上述几个概念之前,先从<深入理解linux内核>这本书中摘抄几段关于上述名词的解释: 一.<深入理解linux内核>的解释 ...

  9. CPU中虚拟地址、逻辑地址(有效地址)、线性地址、物理地址

    虚拟地址.逻辑地址(有效地址).线性地址.物理地址 1.虚拟地址 2.逻辑地址(有效地址) 3.线性地址 4.物理地址 5.总结 1.虚拟地址 在实模式下,虚拟地址是指由程序产生的由段选择符和段内偏移 ...

最新文章

  1. mac mysql log_mac如何开启mysql bin-log
  2. 基于SSM的餐饮工业化管理系统-计算机毕业设计
  3. 九个月可以做成什么事?
  4. android 内部类传值,Android Studio中,从内部类
  5. (待完成)qbxt2019.05 总结2 - 数位DP
  6. WIN10的IE错误代码inet_e_resource_not_found解决办法
  7. Halcon学习笔记:Halcon标定步骤-3d_coordinates.hdev示例
  8. 乔春洋:品牌管理创新
  9. kafka应用场景Kafka VS Flume
  10. 继承redis spring_Spring 极速集成注解 Redis 实践
  11. React之组件小析
  12. vue引入自定义字体otf、ttf字体的方法
  13. Unity3D场景转换效果
  14. 张德芬 如何自我成长
  15. elasticsearch forcemerge
  16. 转载:Android (争取做到)最全的底部导航栏实现方法
  17. Latex公式编辑(子公式)
  18. Python 实现文本共现网络分析
  19. 裴波那契数列(循环实现递归)
  20. 运放放大倍数计算公式_运算放大器基础1——用作比较器

热门文章

  1. ES6-Object.is() 和Object.assign()
  2. BZOJ.1005.[HNOI2008]明明的烦恼(Prufer 高精 排列组合)
  3. linux 下安装maven
  4. PAT:1032. Sharing (25) AC
  5. Windows环境下多线程编程原理与应用读书笔记(8)————信号量及其应用
  6. SpringBoot使用@ServerEndpoint无法依赖注入问题解决 SpringBoot webSocket配置
  7. flutter网络请求dio的get、post、上传文件、下载文件总结
  8. Flutter自定义使用Dialog并更新Dialog中的内容
  9. 小白Linux下安装mysql
  10. python之cookbook-day03