`
v5browser
  • 浏览: 1137830 次
社区版块
存档分类
最新评论

学习笔记-操作系统虚拟内存篇

 
阅读更多
内存管理问题:
  • 如何进行内存分配如何管理空闲内存
    • 如何找到合适的内存空闲块给进程使用?使用什么算法?
    • 使用合种方式对内存进行管理?
  • 如何处理内存碎片
  • 内存交换技术
    • 解决什么问题,很明显解决程序所需内存大于内存的大小
    • 优点,局部性,可以不需要一次把所有的程序load到内存
    • 缺点,很明显,由于磁盘的读写速度的限制,当程序增大时会整个交换技术会变的很慢
  • 虚拟内存
    • 虚拟内存的概念,说直白点是对物理内存的一个管理
    • 解决什么问题
      • 多个进程在内存中共存的问题,因为采用虚拟化的技术,操作的不再是具体的物理内存。这样其实中间多了一层映射。如果两个进程中有操作同一个内存地址就变的容易。
    • MMU,内存管理单元
    • 缺页中断
        • 为什么会发生缺页中断?
          • 由于虚拟内存往往会比实际的物理物理内存大,所以一定会有一部分的虚拟内存找不到物理内存的映射。这样当访问虚拟内存地址时就会找不到相应的物理内存地址,就发生了缺页中断。
    • 使得转换检测缓冲区(TLB)
      • 这种设计是基于怎么样的考虑
      • 如何提高TLB的命中率
        • 预装载
    • 虚拟内存的映射算法
      • 页框+偏移量
    • 对虚拟内存的散列
      • 这样维护一个虚拟内存到物理内存的映射表,通过查找虚拟内存就可以定位到物理内存
    • 对物理内存的散列
      • 当系统是64位的时候,虚拟地址空间是264,这样整个虚拟地址对应物理地址的映射表会变的很大。这个时候就需要使用倒排页表。不过问题很明显,需要搜索。
    • 页面转换算法
      • 这里有一些需要思考的点:1)具体的转换策略,当发生缺页中断时是采用何种置换。2)是转换进程本身的页面,还是可以转换其他进程的页面。
    • 具体的页面置换策略:
    • 最优页面置换算法:这种算法是是根据当前页面之后被访问的时间来判断频率来判断把哪些页面置换出,而现实情况是无法对将来进行判断,只能“机器学习”对过去的一些数据进行总结来作判断。所有这种置换算法并不实用。
    • 最近未使用页面算置换算法(NRU):两个状态位,一个R位,一个M位。当页面被访问时设置R位,当页面被修改时设置M位。定期的对R位进行清零操作。
    • 先进先出(FIFO)算法:维护一个页面的链表。最新页面进入表尾,当链表满的时候淘汰表头的页面,这样链表是一个动态的,表尾的页面逐渐向表头移动。如果单纯采用这种算法,一些被常用的页面也同样很容易被淘汰。
    • 第二次机会页面置换算法:这上算法是对FIFO算法的一次改进,根据在一个时钟周期内是否有过访问(R位可以判断,前面NRU算法中有讲)来判断是否淘汰该页面。如果不淘汰该页面则把该页面放入表尾,并清除R位。这里非常有意思,为什么要清除R位,假设不清除R位,后果会是什么,如果链表中的页面在一个时钟周期内都被访问过,那么至少在下一个时钟周期之前会出现死循环。
    • 时钟页面置换算法:这个算法和第二次机会页面转换算法类似,只是有一些策略的实现不同,在第二次机会页面置换算法中会涉及到比较多的页表移动,这样相对会比较耗时。
    • 最近最少使用页面置换算法(LRU):
      • 实现代价高昂,需要动态维护整个链表,在页表移动的过程中还是相当耗时的。
      • 硬件实现LRU算法
        • 有n个页框,n x n的矩阵(这里原理和上面所讲的置换算法类似),每个表格中用0或1填充,当访问第k个页框时,k行的位都置为1,而第k列都设为0。这里和上面说的设置R,M很类似。最后根据行的位二进制大小来排序。
      • 软件实现LRU算法(老化算法)
        • 用一个有限位的计数器记录,比如说8位计数,首先把计数器右移一位,然后把R值加到计数器的最高位。当发生缺页中断时只需要置换计数值最小的页。
        • 和LRU算法的算法的区别
          • 严格的来讲LRU算法是只需要有访问则其优先级就是最高。而老化算法则在一个时钟周期内无法判断哪个页面前被访问,哪个页面后被访问。但是其基本思想是一样的。
          • 另外一个区别是计数器的有限位限制了历史数据的保存,比如说8位计数器,在9个时钟周期之前被访问和1000个时钟周期之前被访问是无法被区分的。这里基本上会基于二八原则处理。
        工作集页面置换算法
        • 实现起来开销很大
      • 工作集时钟页面置换算法
        • 对工作集页面置换算法的改进
分享到:
评论

相关推荐

    unix上课学习笔记.txt

    3管理交换空间(虚拟内存)从硬盘启动一部分空间,操作系统通过频繁的换入换出达到内存够用的效果 4管理进程: 程序 静态的 进程 启动程序成了进程,每个进程都对应程序的唯一标识 线程 一个进程对应多个线程 5...

    自己动手写操作系统(含源代码).part2

    Woodhull的《操作系统:设计与实现》来学习操作系统的读者,本书尤其适合作为你的引路书籍,因为它翔实地介绍了初学者入门时所必需的知识积累,而这些知识在《操作系统:设计与实现》一书中是没有涉及的,笔者本人...

    自己动手写操作系统(含源代码).part1

    Woodhull的《操作系统:设计与实现》来学习操作系统的读者,本书尤其适合作为你的引路书籍,因为它翔实地介绍了初学者入门时所必需的知识积累,而这些知识在《操作系统:设计与实现》一书中是没有涉及的,笔者本人...

    c#学习笔记.txt

    c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...

    net学习笔记及其他代码应用

    答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。 40.接口是否可...

    leetcode下载-study:学习笔记

    操作系统 虚拟内存与物理内存转化 CPU 调度方式 进程栈大小 进程与线程区别 线程状态 网络 TCP 四次挥手 SYN Flood 如何避免 HTTP 头部字段 HTTP 请求方式 AIO OSI 七层模型 ARP 协议 Mysql Mysql 数据存储原理 ...

    学习Linux运维的个人笔记:安装Centos7(二)

    下面就来介绍如何用VMware Workstion上组装一台自定义电脑(CPU、内存、磁盘、网络)并且成功的安装上Linux操作系统 二、创建虚拟机并且安装Linux系统 要求: 1.安装版本:CentOS7 2.IP地址:10.0.0.100 3.设备名称...

    asp.net知识库

    VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step 深度解析Asp.Net2.0中的Callback机制 使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf...

    学习《Linux就该这么学》随堂笔记第二课

    2020-02-15 学习《Linux就该这么学》随堂笔记第二课 授课老师:刘遄 第一章 部署虚拟环境安装Linux系统、新手必须掌握的Linux命令 1)、安装配置vm虚拟机 注意事项:1、电脑内存小于2G的,虚拟机内存设为1G,电脑...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    操作系统的身份登录 2. 连接命令(conn) 说明:用于连接到oracle数据库,也可实现用户的切换 用法:conn 用户名/密码 [as sysdba/sysoper] 注意:当用特权用户连接时,必须带上sysdba或sysoper 例子: 3. 断开...

    深入理解计算机系统(英文版)

    它还有助于为进一步学习计算机体系结构、操作系统、编译器和网络互连做好准备。 本书的主要论题包括:数据表示、C程序的机器级表示、处理器结构,程序优化、存储器层次结构、链接、异常控制流、虚拟存储器和存储器...

    CSAPP(深入理解计算机系统)

    它还有助于为进一步学习计算机体系结构、操作系统、编译器和网络互连做好准备。 本书的主要论题包括:数据表示、C程序的机器级表示、处理器结构,程序优化、存储器层次结构、链接、异常控制流、虚拟存储器和存储器...

    Blog:用于记录日常积累的小知识点

    IndexiOSNIB和XIB的区别于关系数字签名@weakif和@strongif详解常用脚本VCSgit配置mergetool配置gitconfig文件操作系统操作系统基本概念虚拟内存视频分辨率和流量的关系计算机网络计算机网络相关概念解释Tool利器...

    docker:Docker课程练习

    基于软件和操作系统的虚拟化。 内核在主机和容器之间共享。 隔离级别有不同:内存,网络,CPU,文件系统等。 什么是容器? 进程在同一内核中的隔离(隔离) 从映像创建的文件系统 运行应用程序的轻便的便携式...

    ARM 嵌入式LINUX 系统构建与驱动开发

    7 用BANYANT+仿真器连接,开AXD,在命令行窗口操作RAM,看可不可以修改,可以的话(用内存窗口看RAM地址)RAM就没问题 可以用这个命令“setmem 0xc000000,0xffffffff,32” 我的RAM挂在BANK6上 所以地址是0XC000000,...

    光盘启动盘制作完全手册1.08

    建立在内存上的硬盘 六十九.Win9X/ME OEM(系统集成商)预安装工具包提取方法 七十.打造XP系统万能克隆(提供万能GHOST必备工具) 七十一.简明批处理教程 七十二.用DOS批处理命令制作GHOST系统恢复盘 七十三.研究WINDOWS...

Global site tag (gtag.js) - Google Analytics