目录

1 分页

2 分段

3 分页和分段的区别

4 交换空间

4.1 虚拟内存

5 页面替换算法

5.1 最佳置换算法(OPT)(理想置换算法)

5.2 先进先出置换算法(FIFO)

5.3 最近最久未使用(LRU)算法

5.4 时钟(CLOCK)置换算法

6 缓冲区溢出


1 分页

把内存空间划分为大小相等且固定的块,作为主存的基本单位。因为程序数据存储在不同的页面中,而页面又离散的分布在内存中,因此需要一个页表来记录映射关系,以实现从页号到物理块号的映射

访问分页系统中内存数据需要两次的内存访问 :

  1. 第一次是从内存中访问页表,从中找到指定的物理块号,加上页内偏移得到实际物理地址;
  2. 第二次就是根据第一次得到的物理地址访问内存取出数据。

2 分段

分页是为了提高内存利用率,而分段是为了满足程序员在编写代码的时候的一些逻辑需求(比如数据共享,数据保护,动态链接等)。

分段内存管理当中,地址是二维的,一维是段号,二维是段内地址;其中每个段的长度是不一样的,而且每个段内部都是从0开始编址的

由于分段管理中,每个段内部是连续内存分配,但是段和段之间是离散分配的,因此也存在一个逻辑地址到物理地址的映射关系,相应的就是段表机制

3 分页和分段的区别

  • 分页对程序员是透明的,但是分段需要程序员显式划分每个段
  • 分页的地址空间是一维地址空间,分段是二维的
  • 页的大小不可变,段的大小可以动态改变
  • 分页主要用于实现虚拟内存,从而获得更大的地址空间;分段主要是为了使程序和数据可以被划分为逻辑上独立的地址空间,并且有助于共享和保护。

4 交换空间

操作系统把物理内存(physical RAM)分成一块一块的小内存,每一块内存被称为页(page)。当内存资源不足时,Linux把某些页的内容转移至硬盘上的一块空间上,以释放内存空间。

硬盘上的那块空间叫做交换空间(swap space),而这一过程被称为交换(swapping)物理内存和交换空间的总容量就是虚拟内存的可用容量。

用途:

  • 物理内存不足时一些不常用的页可以被交换出去,腾给系统。
  • 程序启动时很多内存页被用来初始化,之后便不再需要,可以交换出去。

4.1 虚拟内存

虚拟内存就是说,让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存

虚拟内存使用部分加载的技术,让一个进程或者资源的某些页面加载进内存,从而能够加载更多的进程,甚至能加载比内存大的进程,这样看起来好像内存变大了,这部分内存其实包含了磁盘或者硬盘,并且就叫做虚拟内存。

5 页面替换算法

在程序运行过程中,如果要访问的页面不在内存中,就发生缺页中断从而将该页调入内存中。此时如果内存已无空闲空间,系统必须从内存中调出一个页面到磁盘对换区中来腾出空间。

5.1 最佳置换算法(OPT)(理想置换算法)

所选择的被换出的页面将是最长时间内不再被访问,通常可以保证获得最低的缺页率。

缺点:这是一种理论上的算法,因为无法知道一个页面多长时间不再被访问。

5.2 先进先出置换算法(FIFO)

最简单的页面置换算法。这种算法的基本思想是:当需要淘汰一个页面时,总是选择驻留主存时间最长的页面进行淘汰,即先进入主存的页面先淘汰。其理由是:最早调入主存的页面不再被使用的可能性最大。

缺点:该算法将那些经常被访问的页面也被换出,从而使缺页率升高。

5.3 最近最久未使用(LRU)算法

虽然无法知道将来要使用的页面情况,但是可以知道过去使用页面的情况。 LRU 将最近最久未使用的页面换出

为了实现 LRU,需要在内存中维护一个所有页面的链表。当一个页面被访问时,将这个页面移到链表表头。这样就能保证链表表尾的页面是最近最久未访问的。因为每次访问都需要更新链表,因此这种方式实现的 LRU 代价很高。

5.4 时钟(CLOCK)置换算法

思路:仅对页面的访问情况进行大致统计。

实现:在页表项中增加访问位,描述页面在过去一段时间的内访问情况,将各页面组织成环形链表,指针指向最先调入的页面,访问页面时,在页表项记录页面访问情况,缺页时,从指针处开始顺序查找未被访问的页面进行置换。

特点:时钟算法是LRU和FIFO的折中。

6 缓冲区溢出

缓冲区溢出是指当计算机向缓冲区填充数据时超出了缓冲区本身的容量,溢出的数据覆盖在合法数据上。
危害有以下两点:

  • 程序崩溃,导致拒绝额服务。
  • 跳转并且执行一段恶意代码。

造成缓冲区溢出的主要原因是程序中没有仔细检查用户输入。

操作系统中分页、分段、交换空间、页面置换算法等相关概念相关推荐

  1. 操作系统 请求分页存储管理方式(含页面置换算法)

    1. 请求分页存储管理方式 请求分页系统是建立在基本分页基础上的,为了能支持虚拟存储器功能,而增加了请求调页功能和页面置换功能. 相应地,每次调入和换出的基本单位都是长度固定的页面.因此,请求分页便称 ...

  2. 分页及其管理、页面置换算法

    1.分页 大部分虚拟内存系统中都使用一种称为分页的技术. 在任何一台计算机上,程序引用了一组内存地址,由程序产生的这些地址称为虚拟地址,他们构成了一个虚拟地址空间. 在没有虚拟内存的计算机上,系统直接 ...

  3. 操作系统实验报告17:请求页面置换算法

    操作系统实验报告17 实验内容 实验内容:虚拟存储管理. 编写一个 C 程序模拟实现课件 Lecture24 中的请求页面置换算法 包括FIFO.LRU (stack and matrix imple ...

  4. 清华向勇《操作系统 》学习笔记6:页面置换算法

    文章目录 6.1 页面置换算法概念 6.2 局部页面置换算法 6.2.1 最优置换算法(OPT) 6.2.2 先进先出算法(FIFO) 6.2.3 最近最久未使用算法(LRU) 6.2.4 时钟算法( ...

  5. 三种页面置换算法(详解)

    地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断.当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间.而 ...

  6. java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之OS_Part_1整起(进程线程协程并发并行、进程线程切换进程间通信、死锁\进程调度策略、分段分页、交换空间、OS三大调度机制)

    PART0:OS,这货到底是个啥? OS,是个啥? OS的结构们: 存储器: 存储器的层次结构: 内存:我们的程序和数据都是存储在内存,我们的程序和数据都是存储在内存,每一个字节都对应一个内存地址.内 ...

  7. 虚拟内存,分页与分段的区别、页面置换算法,颠簸,局部性原理

    什么是虚拟内存? 虚拟内存允许执行进程不必完全在内存中.虚拟内存的基本思想是:每个进程拥有独立的地址空间,这个空间被分为大小相等的多个块,称为页(Page),每个页都是一段连续的地址.这些页被映射到物 ...

  8. 操作系统中的全局页面置换算法

    1 全局页面置换算法 以上页面置换算法都是针对单一的应用程序的页面置换算法, 且有一个前提, 就是给单一应用程序分配的物理页帧数量是一定的. 现实中, 给一个应用程序分配的物理页帧数, 该程序产生的缺 ...

  9. 操作系统:第三章 内存管理2 - 详解虚拟内存,页面置换算法,页面分配策略

    本文已收录至 Github(MD-Notes),若博客中有图片打不开,可以来我的 Github 仓库:https://github.com/HanquanHq/MD-Notes,涵盖了互联网大厂面试必 ...

最新文章

  1. 爱奇艺视频千万级生产 Kubernetes 集群优化实践!
  2. PHP扩展模块Memcache Redis Mssql部署
  3. Android 记住密码和自动登录界面的实现(SharedPreferences 的用法)(转载)
  4. “安卓之父”的新公司倒了:拿到腾讯投资,成为硅谷独角兽,五年只出了一款手机...
  5. idea关联mysql失败_Server returns invalid timezone. Go to ‘Advanced‘ tab and set ‘serverTimezon‘
  6. tomcat和http简介
  7. 字节对齐和C/C++函数调用方式学习总结(多篇节选)
  8. [转]Android 代码自动提示功能
  9. 1.15运行命令直至执行成功
  10. JS多个对象添加到一个对象中
  11. 【当贝市场】智能电视语音识别功能泄露隐私?
  12. 孙鑫VC学习笔记:第十三讲 (三) WM_FILE_NEW消息响应原理
  13. java教学视频_孔浩老师_孔浩Java教学系列视频教程 - 轻松自学网
  14. 基于Matlab绘制演化博弈主体的演化轨迹
  15. 《数学分析新讲》_张筑生,12.5节:隐函数定理(1)
  16. 层次分析法原理及应用案例
  17. Tool之synergyc:synergyc的简介、安装、使用方法(鼠标键盘控制两台或多台电脑)之详细攻略
  18. July:海量数据处理
  19. java实现查询Word是否包含批注和修订内容
  20. U8 业务单据编码 相关表

热门文章

  1. Pytorch DataLoader一次性封装多种数据集(pytorch Data学习六)
  2. scrapy中使用css选择器罗列下一级的所有标签
  3. app服务器不运行了,springmvc app URL在本地运行,但不在服务器上运行
  4. c语言指针填空题目,C语言指针题目实战
  5. Exp3 免杀原理与实践 20164314
  6. 刷新所有视图存储过程
  7. 洛谷 1313 计算系数——水题
  8. c++--类的作用域
  9. C# 生成验证码 方法一
  10. 《软件工程》课程改进意见