操作系统原理:覆盖技术、交换技术、虚拟内存概要

article/2025/10/14 21:51:22

      随着时间的推移,程序不断地更新,规模不断增长,运行的时候可能会发现内存会越来越不够用。所以希望一个容量大,更快,更便宜,数据不易丢失的存储器。

首先想到的就是硬盘,所以在硬盘的基础上建立了覆盖技术,把常用的数据放在内存,不常用的数据放在外存。或者使用交换技术,把最近使用的数据放在内存,把很久没用的内存数据换到外存。现如今,我们在分页分段的基础上建立了虚拟内存技术。

 

一、覆盖技术

    典型的案例是DOS操作系统:

   程序需要按照自身的逻辑划分出多个功能上独立的模块把那些不会同时运行的模块共享同一个内存空间(分区),按照时间的先后来执行。这需要一个常驻内存的代码空间,它主要负责管理在某个时间段把哪些数据,函数导入/导出内存。对于不常用的功能,在其他程序执行的时候需要把这功能上的数据放到外存中去,需要的时候再装入内存。

此覆盖技术的缺点就是需要程序员自己去实现各个模块之间的覆盖关系,大大增加了编程难度。另外,模块用调用时间来换取内存空间的节约。其程序的运行时间效率会大大降低。

 

二、交换技术

   典型案例 Unix 操作系统。

   考虑由操作系统来帮助程序员完成数据的导入/导出操作。在CPU 和 MMU (内存管理单元)的帮助下,在某个时刻将整个程序的空间导出到外存中。在需要的访问的时候,再把整个程序空间导入到内存中。此技术需要考虑的问题是:

1)什么时候开始交换?

     当内存不够用或者内存有不够用的风险时才考虑换出。内存读写和硬盘读写效率相差甚大,可能内存需要在次读程序时还要等硬盘写完才能够换入

2)交换区的大小应为多大合适?

3)程序换入时的重定位

    当需要换入的时候,分配到的内存空间可能会不一样,那么程序运行时寻址的问题就需要考虑了?可以考虑页表的动态地址映射。

三、虚拟内存技术

       像覆盖技术那样,虚存技术并不会把所有程序都搬到内存中,因而可以运行比空闲内存还要大的程序。但这个分配部分程序的实现不再由程序员完成,而是由操作系统和MMU完成。也像交换技术一样,在某些情况可以以更小的粒度(页)为单位实现内存与外存的交换。

       程序的局部性原理:分为时间局部性和空间局部性。所谓时间局部性就是一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在很短的时间内。所谓的空间局部性当前指令的和邻近的指令,当前访问数据的邻近的数据访问,其内存地址都集中在很小的空间中。

      虚拟页式内存管理:当用户程序需要把数据调入内存中时,只把部分指令的数据装进内存中。如果正常执行指令的时候发现,数据不在内存中,则会抛出缺页/缺段中断给操作系统请求调页。之后,由操作系统把外存的数据按页搬进内存中,如果程序内存的可用空间不足,那么操作系统会考虑(页面置换算法)把哪些内存数据换出到外存,腾出内存空间。

    虚拟内存有大用户空间、部分交换、不连续性的特征。把物理内存和外存相结合,使执行用户程序可以比内存大,换入/换出操作使得程序虚拟内存的分配可能不连续,但是寻址由操作系统完成。

    有效存储器访问时间(EAT,Effective Memory Access Time ) =访问内存时间 * 页表命中几率   + 缺页处理时间  *  页表非命中几率。

dirty page  :脏页,正在写磁盘或者等待写磁盘的页

page fault : 缺页异常, 当访问内存时,找不到数据对应的页。


http://chatgpt.dhexx.cn/article/fCI6oDFK.shtml

相关文章

操作系统原理、实现与实践课后习题参考答案(已完结)

习题二–系统接口 通向操作系统内核的大门 1.调用fork()的父子进程执行“同样”的代码,如何理解”同样“? 答: fork()函数为系统调用,用于创建进程。创建的进程与原来进程几乎完全相同. 一个进程调用fork(&#xff09…

操作系统原理1-3章答案 黑新宏 胡元义主编

第1章引论 一、单项选择题 1.A 2. C 3. D 4. A 5.A 6. C 7. C 8. D 9. C 10.C 11. D 12.A 13.C 14.D 15.D 16.C 17.D 18.C 19.B 20.C 21.D 22.D 23.C 24.B 25.C 26.B 二、判断题 1.错误 2. 错误 3.错误 4. 错误 5.错误 6.错误 7.正确 8.错误 9.错误 10.错误 11.正确 12.错误 1…

操作系统原理:文件系统、磁盘调度

目录 一、相关概念 二、文件的分配 三、空闲空间列表 四、多磁盘管理-RAID 五、磁盘调度 一、相关概念 文件系统是一种用于持久性存储的系统抽象。硬盘属于持久性存储介质的一种。管理文件系统例如硬盘,需要管理文件块,哪一块属于哪一…

Linux的操作系统原理详解

Linux的操作系统原理详解 ///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿/// 1.操作系统基本概念 操作系统是一个基本程序的集合,在这个集合中,最重要的程序称为内核(Kernel&a…

操作系统原理

操作系统原理 第一章第二章第三章第四章第五章第六章总结 第一章 计算机系统组成部分: 硬件 应用程序 操作系统 用户操作系统的作用: 1.操作系统是管理计算机硬件的程序,为应用程序提供基础并充当计算机用户和计算机硬件的中介。 2.操作系统…

操作系统基本原理

操作系统的类型与结构 操作系统是计算机系统中最基本的系统软件,它既管理计算机系统的软、硬件资源,又控制程序的执行。操作系统的基本类型有:批处理操作系统、分时操作系统和实时操作系统。从资源管理的角度看,操作系统主要是对处…

操作系统原理(概述)

1.操作系统的工作: (1)程序的执行:负责启动每个程序,以及结束程序的工作。 (2)完成与硬件有关的工作:实现代码中包含存储器的物理地址、对设备接口寄存器和设备接口缓冲区的读写等…

Unity UGUi之Panel

Unity UGUI之Panel制作滑块 新建一个Panel和一个Image,image放在Panel下做子物体。 给Panel添加 Scroll Rect 和 Mask 组件, Mask组件是用来隐藏image超出Panel的区域。 然后将image拖拽到Scroll Rect组件下的Content属性上。 Horizontal是水平滑动,…

winform 设置panel边框

var panel1 new Panel(); var old panel1.Margin; panel1.Margin new Padding(old.Left, -50, old.Right, old.Bottom);

EasyUI中Panel面板的简单使用

场景 效果 属性 名称类型描述默认值idstring面板(panel)的 id 属性。nulltitlestring显示在面板(panel)头部的标题文字。nulliconClsstring在面板(panel)里显示一个 16x16 图标的 CSS class。nullwidthnu…

[C# WinForm设计]Panel布局及TabControl增加关闭按钮和Treeview导航 源码

前段时间因工作需要做一个类似进销存的系统,这里要用到基于C/S架构的WinForm界面,为了给我一样的菜鸟多一个参考,现将过程及关键界面的实现代码贴在后面,供参考!老鸟飘过~~ 一、实现效果 演示 namespace TabTest {part…

C#Winform中如何将窗体显示在panel中

在窗体中我们有时候做美观就需要将一个窗体显示在panel或SplitContainer里的panel中如何实现呢? 代码: public void Showform(Form form) //定义方法 { //清除panel里面的其他窗体 this.splitContainer1.Panel2:要显示的panel this.splitCont…

从零开始学习CANoe(四)—— 设计panel

相关文章 从零开始学习CANoe(一)—— 新建工程从零开始学习CANoe(二)—— CANdb 创建 dbc文件从零开始学习CANoe(三)—— 系统变量的创建和使用从零开始学习CANoe(四)—— 设计pane…

winform无边框在panel上拖动窗口位置,改变窗口大小

将窗体的FormBorderStyles属性设置为None 窗体上放一个新的panel,设置Dock属性为Fill 创建变量 private bool isMouseDown false;//表示鼠标当前是否处于按下状态,初始值为否 MouseDirection direction MouseDirection.None;//表示拖动的方向&#x…

C# Winform Panel 内控件大小不随Panel大小改变设置

(1)将Anchor属性设置为:None (2)将AutoSize属性设置为:False 不过还存在一个问题点,就是Button的位置还是会随着Panel大小变化而改变。

Panel控件

今天小编来给大家介绍一下panel控件; 首先来看一下panel控件是什么? 是什么: Panel 控件提供了一种用于组织控件的分组机制。Panel 控件可被递归嵌套在 Form 控件(Panel 控件最外面的容器)中。面板呈现它本身包含的控件。 面板上…

UI的Panel面板

1.Panel panel控件又叫面板,该面板实际就是一个容器,在其上可放置其他UI控件 当移动该面板时,放在其中的UI控件会随着移动,这样更加合理与方便地移动与处理一组控件 当面板被创建时,会默认包含一个Image(Script) Sour…

Unity Panel 控件

Panel 容器组件又叫面板组件,实际上就是一个容器,在其中可以放置其他的UI元素。 注意,在Unity中,子物体的位置是相对于父物体的,而非绝对位置 在Panel的参数区中,除了空间位置这个常用参数外,我…

Linux系统之部署Linux管理面板1Panel

Linux系统之部署Linux管理面板1Panel 一、1Panel介绍1.1Panel简介2.1Panel特点 二、本地环境规划1.本此实践目的2.本地环境规划 三、检查本地环境1.检查操作系统版本2.检查系统内核版本 四、部署1Panel1.创建安装目录2.一键部署1Panel3.检查1Panel服务运行状态4.检查1Panel监听…

javasocket编程(javasocket通信)

Java网络编程-JavaSocket编程是什么呢? Socket传输模式 Sockets有两种主要的操作方式:面向连接的和无连接的。面向连接的sockets操作就像一部电话,他们必须建立一个连接和一人呼叫。所有的事情在到达时的顺序与它们出发时的顺序时…