操作系统存储器管理实验报告_《计算机科学概论》笔记01——操作系统

一、操作系统的历史

在20世纪四五十年代,程序的执行需要大量的准备工作,如安装磁带、把穿孔卡片放在卡片读入机上、设置开关等。每个程序的执行称为一个作业(job)。每执行一个程序,上述的准备工作就将又要执行一遍。

并且,一台计算机无法被多个用户同时使用,当多个用户需要共享一台机器时,操作系统会提供签名表,以便各个用户能够预订到一段时间来使用计算机。当一个用户正在使用时,下一个用户就要为机器的使用迫不及待地做准备工作了!

为了简化程序的准备工作,提高作业之间的过渡效率,于是,人们就想到了要开发操作系统。

在早期的发展中,用户与设备是分离的。用以避免人员进出计算机机房,因此雇佣了计算机操作员来操作机器。任何人如果想要运行程序,只需将自己想要完成的事,数据,交给计算机操作员即可。当计算机算出结果,再由计算机操作员将结果交给用户。如果是多个用户用户交给计算机操作员多个作业时,这些作业将会按照一定的顺序(除非必须要先执行某个程序,才将作业提前完成:否则,一般是按照先进先出的顺序,)排好,在作业队列(job queue)里等待执行。这种把若干个要执行的作业收集到一个批次中,然后执行而无需与用户发生进一步的交互的过程,我们称这一过程为批处理(batch processing)。如下图,

94f0af13342aa157323a290a114c35f9.png
批处理

就像我们去银行取钱,存钱一样,我们不是自己到银行的存储贵里将钱取出或者存放,而是通过银行的服务人员来办理业务。我们在银行里取票排队的过程就是程序在作业队列里等待的过程。

在计算机和计算机用户之间,用计算机操作员会带来一个困扰:作为用户的我们,无法与机器进行实时的交互。例如,当我们执行美团程序时,如果因为点错或其他原因想取消订单,而这时又无法与机器交互,这种情况是让人无法忍受的;当我们玩计算机游戏时,如果不能与计算机实时地互动,那也就像我们平常吐槽的那样“毫无游戏体验”。

为了适应这些需求,人们开发了新的操作系统,他们允许执行一个程序来通过远程终端与用户对话——这种特性称为交互式处理(interactive processing),如下图。

85f6c6816dc6ad1e42226ba9c8323d9a.png
交互式处理

如果交互式系统一次只服务于一个用户,那么也就不存在实时处理的问题了。但是20世纪六七十年代,计算机比较昂贵,所以每台机器不得不服务于多个用户。当多个用户同时寻求一台计算机的交互式服务,那么出现交互障碍的现象会很常见。

针对这个问题的解决方案就是设计能同时给多个用户提供服务的操作系统,这一特点称为分时(time-sharing)。实现分时的一种方法就是应用多道程序设计(multiprogramming)技术。即将时间分割成一段一段的,形成一个时间片,每个作业的执行被限制为每次仅用一个时间片,在每个时间片结束的时候,必须暂时放弃执行当前的作业,然后再下一个时间片上执行另一个作业。通过这种方法可以快速地在各个作业之间切换,形成若干个作业同时执行的假象。

随着多用户的发展,分时操作系统作为一种典型计算机配置,被用在大型的中央计算机上,用来连接大量的工作站。通过这些工作站,用户能够从机房外面直接与计算机进行通信,而不用把请求递交给计算机操作员。

到今天,计算机操作员在事实上已经不存在了,特别是在个人计算机领域,计算机用户已经能够承担操作计算机的所有职责。事实上,传统的计算机操作员已经让位于系统管理员。

总之,操作系统已经从一次获取和执行一个程序的简单程序,发展为能够协调分时,能够维护机器海量存储设备上的程序和数据文件,并能直接响应计算机用户请求的复杂系统。

但是,计算机操作系统的发展仍在继续。多处理机器的发展已经让操作系统能够进行分时/多任务处理,操作系统把不同的任务(按处理难度)动态地分配给各个处理器。此外,计算机网络的出现,使得有必要发展相应的软件系统来规范网络的行为。计算机网络领域在许多方面扩展了操作系统这个学科,其目标是跨多个用户和多个机器管理资源。

操作系统的另一个研究方向的侧重点是解决特定的任务。比如说目前的地平线公司,就在做无人驾驶的嵌入式系统,用以解决低功耗的问题。

大概在16年,百度就将无人驾驶的车做好了。当时人们进去体验,最大的感觉就是太热。比如说,你冬天坐那辆车,几乎不用开空调。原因就在于车的后备箱的计算机散发出的热量太大了。

二、操作系统的体系结构

我们的软件分为应用软件(电子制表软件、数据库系统、程序开发软件以及游戏等)和系统软件,系统软件又包括操作系统本身和实用软件(压缩数据和解压数据的软件、播放多媒体演示的软件以及处理网络通信的软件)。具体见下图

b86bb35d208b43eddc26c66bde7357c1.png

现在,应用软件和实用软件的差别以及很模糊了,从某种角度来看,它们的差别在于其是否是计算机“软件架构”的一部分。因此,当一个新应用变成一种基础工具时,这个应用就很可能成为一种实用软件。

操作系统主要由两部分构成。一个是用户界面(use interface),它能够与计算机用户进行通信;一个是操作系统的内部部分,我们把它称为内核(kernel)

老式的用户界面称为外壳(shell),通过键盘和显示屏用文本信息与用户通信。更现代化的系统利用图形用户界面(Graphical User Interface,GUI)实现与用户的通信,其中操作的对象(如文件和程序)被表示为显示屏上的图标(icon)。所以,我们也就可以用鼠标来单击屏幕上的图标,或者用手写笔来在屏幕上划来划去。

虽然操作系统的用户界面在实现机器的功能上扮演了重要的角色,但它仅仅是计算机用户与操作系统真实内核之间的一个接口而已。见下图

c600d93a45036100f1d4b92e97fee546.png

那么作为操作系统最重要的一部分——内核,它包含了一些完成计算机安装所需的极基本功能的软件组件,如文件管理程序,设备驱动程序,内存管理程序,调度程序和分派程序等。

文件管理程序:文件管理程序维护者储存在海量存储器上的所有文件的记录,包括每个文件的位置、哪些用户有权访问各种文件等,为了方便用户,大多数文件管理程序都允许把若干个文件放在一起,也就是放在目录或者文件夹里。并且每个文件夹还可以包含子文件夹。这样也就形成了路径,也就是我们打开“此电脑”(WIN10中这样叫),我们会看到一个横框里有类似于这样的字样:此电脑>OS(c:)>Download。

设备驱动程序:负责与控制器通信。简单地来说就是与一些外围设备(打印机、磁盘驱动器、显示器)通信。例如,打印机的设备驱动程序包含的软件能够读取和解码特定打印机的状态字,而且还能够处理其他一些信息交换的细节。这样,其他软件组件就不必为打印一个文件而处理那些技术细节了。

驱动程序本质上是软件代码,主要作用是计算机系统与硬件设备之间完成数据传送的功能,只有借助驱动程序,两者才能通信并完成特定的功能。如果一个硬件设备没有驱动程序,只有操作系统是不能发挥特有功能的,也就是说驱动程序是介于操作系统与硬件之间的媒介,实现双向的传达,即将硬件设备本身具有的功能传达给操作系统,同时也将操作系统的标准指令传达给硬件设备,从而实现两者的无缝连接。

内存管理程序:当有多个任务需要处理时,内存管理程序需要给他们分配内存空间,并且还要保证每个程序只能限制在程序所分配的内存空间内运行。当所需的总主存储器空间超过该计算机实际所能提供的可用内存空间时,内存管理程序会在主储存器与海量存储器之间来回切换程序和数据【这种技术称为页面调度】,从而造成有额外内存空间的假象。

比如说,我们现在要启动一个程序,它需要8G的大小的主储存器。但是,我们的内存只有4GB,为了造成拥有更大内存的假象,内存管理程序会在磁盘上预留了4GB的存储空间。在这块存储空间里,将记录内存实际为8GB时的位模式。这块数据区被分成大小一致的存储单元,我们把它称之为页面(page)。然后计算机来回的在主存储器和海量存储器之间切换这些页面,使得我们感觉好像计算机确实拥有8GB的内存一样。我们把页面调度所产生的大的“虚拟的”内存空间称作虚拟内存


参考资料:

Computer Science: An Overview (12th Edition)

刘春龙.计算机硬件设备驱动程序分析[J].电子制作,2018(17):65-66+69..中国知网[引用日期2019-11-17]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验目的】 1. 通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解; 2. 熟悉虚存管理的各种页面淘汰算法; 3. 通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。 【实验准备】 1.虚拟存储器管理方式  段式管理  页式管理  段页式管理 2.页面置换算法  先进先出置换算法  最近最久未使用置换算法  Clock置换算法  其他置换算法 【实验内容】 1. 实验题目 设计一个请求页式存储管理方案。并编写模拟程序实现之。产生一个需要访问的指令地址流。它是一系列需要访问的指令的地址。为不失一般性,你可以适当地(用人工指定地方法或用随机数产生器)生成这个序列,使得 50%的指令是顺序执行的。25%的指令均匀地散布在前地址部分,25%的地址是均匀地散布在后地址部分。为简单起见。页面淘汰算法采用 FIFO页面淘汰算法,并且在淘汰一页时,只将该页在页表中抹去。而不再判断它是否被改写过,也不将它写回到辅存。 2. 具体做法 产生一个需要访问的指令地址流;指令合适的页面尺寸(例如以 1K或2K为1页);指定内存页表的最大长度,并对页表进行初始化;每访问一个地址时,首先要计算该地址所在的页的页号,然后查页表,判断该页是否在主存——如果该页已在主存,则打印页表情况;如果该页不在主存且页表未满,则调入一页并打印页表情况;如果该页不足主存且页表已满,则按 FIFO页面淘汰算法淘汰一页后调入所需的页,打印页表情况;逐个地址访问,直到所有地址访问完毕。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值