目录
- 1.操作系统的目标和功能
- 2.作为用户/计算机接口的操作系统
- 3.作为资源管理器的操作系统
- 4. 串行处理
- 4.1 简单批处理系统
- 4.2 多道程序设计批处理系统
- 5.分时系统
1.操作系统的目标和功能
📖操作系统是控制应用程序执行的程序,并充当应用程序和计算机硬件之间的接口。它有下面三个目标:
- 方便:操作系统使计算机更易于使用。
- 有效:操作系统允许以更有效的方式使用计算机系统资源。
- 扩展能力:在构造操作系统时,应该允许在不妨碍服务的前提下有效地开发、测试和引进新的系统功能。
接下来将依次介绍操作系统的这三个目标。
2.作为用户/计算机接口的操作系统
🎄为用户提供应用的硬件和软件可以看做是一种层次结构,如下图所示。应用程序的用户,即终端用户,通常并不关心计算机的硬件细节。因此,终端用户把计算机系统看做是一组应用程序。一个应用程序可以用一种程序设计语言描述,并且由程序员开发而成。
如果需要用一组完全负责控制计算机硬件的机器指令开发应用程序,将会是一件非常复杂的任务。为简化这个任务,需要提供一些系统程序,其中一部分称做实用工具,它们实现了在创建程序、管理文件和控制I/O设备中经常使用的功能。
程序员在开发应用程序时将使用这些功能提供的接口;在应用程序运行时,将调用这些实用工具以实现特定的功能。最重要的系统程序是操作系统,操作系统为程序员屏蔽了硬件细节,并为程序员使用系统提供方便的接口。它可以作为中介,使程序员和应用程序更容易地访问和使用这些功能和服务。
简单地说,操作系统通常提供了以下几个方面的服务:
- 程序开发:操作系统提供各种各样的工具和服务,如编辑器和调试器,用于帮助程序员开发程序。通常,这些服务以实用工具程序的形式出现,严格来说并不属于操作系统核心的一部分;它们由操作系统提供,称做应用程序开发工具。
- 程序运行:运行一个程序需要很多步骤,包括必须把指令和数据载入到内存、韧始化IO设备和文件、准备其他-一些资源。操作系统为用户处理这些调度问题。
- IO设备访问:每个I/O设备的操作都需要特有的指令集或控制信号,操作系统隐藏这些细节并提供了统一的接口,因此程序员可以使用简单的读和写操作访问这些设备。文件访问控制:对操作系统而言,关于文件的控制不仅必须详细了解IO 设备(磁盘驱动器、磁带驱动器)的特性,而且必须详细了解存储介质中文件数据的结构。此外,对有多个用户的系统,操作系统还可以提供保护机制来控制对文件的访问。
- 系统访问:对于共享或公共系统,操作系统控制对整个系统的访问以及对某个特殊系统资源的访问。访问功能模块必须提供对资源和数据的保护,以避免未授权用户的访问,还必须解决资源竞争时的冲突问题。
- 错误检测和响应:计算机系统运行时可能发生各种各样的错误,包括内部和外部硬件错误,如存储器错误、设备失效或故障,以及各种软件错误,如算术溢出、试图访问被禁止的存储器单元、操作系统无法满足应用程序的请求等。对每种情况,操作系统都必须提供响应以清除错误条件,使其对正在运行的应用程序影响最小。响应可以是终止引起错误的程序、重试操作或简单地给应用程序报告错误。
3.作为资源管理器的操作系统
🍁一台计算机就是一组资源,这些资源用于对数据的移动、存储和处理,以及对这些功能的控制。而操作系统负责管理这些资源。
那么是否可以说是操作系统在控制数据的移动、存储和处理呢?
从某个角度来看,答案是肯定的:通过管理计算机资源,操作系统控制计算机的基本功能,但是这个控制是通过一种不寻常的方式来实施的。通常,我们把控制机制想象成在被控制对象之外或者至少与被控制对象有一些差别和距离(例如,住宅供热系统是由自动调温器控制的,它完全不同于热产生和热发送装置)。
📗但是,操作系统却不是这种情况,作为控制机制,它有两方面不同之处:
- 操作系统与普通的计算机软件作用相同,它也是由处理器执行的一段程序或一组程序。
- 操作系统经常会释放控制,而且必须依赖处理器才能恢复控制。
操作系统实际上不过是一组计算机程序,与其他计算机程序类似,它们都给处理器提供指令,主要区别在于程序的意图。操作系统控制处理器使用其他系统资源,并控制其他程序的执行时机。但是,处理器为了做任何一件这类事情,都必须停止执行操作系统程序,而去执行其他程序。因此,这时操作系统释放对处理器的控制,让处理器去做其他一些有用的工作,然后用足够长的时间恢复控制权,让处理器准备好做下一项工作。
4. 串行处理
⭐对于早期的计算机,从20世纪40年代后期到20世纪50年代中期,程序员都是直接与计算机硬件打交道的,因为当时还没有操作系统。
😶早期的系统引出了两个主要问题:
- 调度:大多数装置都使用一个硬拷贝的登记表预订机器时间。通常,一个用户可以以半小时为单位登记一段时间。有可能用户登记了1小时,而只用了45分钟就完成了工作,在剩下的时间中计算机只能闲置,这时就会导致浪费。另一方面,如果用户遇到一个问题,没有在分配的时间内完成工作,在解决这个问题之前就会被强制停止。
- 准备时间:一个程序称做作业,它可能包括往内存中加载编译器和高级语言程序(源程序),保存编译好的程序(目标程序),然后加载目标程序和公用函数并链接在一起。每一步都可能包括安装或拆卸磁带,或者准备卡片组。如果在此期间发生了错误,用户只能全部重新开始。因此,在程序运行前的准备需要花费大量的时间。
🍟这种操作模式称做串行处理,反映了用户必须顺序访问计算机的事实。后来,为使串行处理更加有效,开发了各种各样的系统软件工具,其中包括公用函数库、链接器、加载器、调试器和I/O驱动程序,它们作为公用软件,对所有的用户来说都是可用的。
4.1 简单批处理系统
早期的计算机是非常昂贵的,同时由于调度和准备而浪费时间是难以接受的,因此最大限度地利用处理器是非常重要的。
简单批处理方案的中心思想是使用一个称做监控程序的软件。通过使用这类操作系统,用户不再直接访问机器,相反,用户把卡片或磁带中的作业提交给计算机操作员,由他把这些作业按顺序组织成一批,并将整个批作业放在输入设备上,供监控程序使用。每个程序完成处理后返回到监控程序,同时,监控程序自动加载下一个程序。
4.2 多道程序设计批处理系统
即便对由简单批处理操作系统提供的自动作业序列,处理器仍然经常是空闲的。问题在于IO设备相对于处理器速度太慢。😶
上图详细列出了一个有代表性的计算过程,这个计算过程所涉及的程序用于处理一个记录文件,并且平均每秒处理100条指令。在这个例子中,计算机96%的时间都是用于等待IO设备完成文件数据传送。
这种只有一个单独程序的情况,称做单道程序设计( uniprogramming )。
处理器花费一定的运行时间进行计算,直到遇到一个IO指令,这时它必须等到这个IO指令结束后才能继续进行。
这种低效率是可以避免的。内存空间可以保存操作系统(常驻监控程序)和一个用户程序。
假设内存空间容得下操作系统和两个用户程序,那么当一个作业需要等待I/O时,处理器可以切换到另一个可能并不在等待IO的作业。进一步还可以扩展存储器以保存三个、四个或更多的程序,并且在它们之间进行切换。这种处理称做多道程序设计( multiprogramming)或多任务处理( multitasking ),它是现代操作系统的主要方案。
5.分时系统
😎通过使用多道程序设计,可以使批处理变得更加有效。但是,对许多作业来说,需要提供一种模式,以使用户可以直接与计算机交互。实际上,对一些作业如事务处理,交互模式是必需的。
当今,通常使用专用的个人计算机或工作站来完成交互式计算任务,但这在20世纪60年代却是行不通的,当时大多数计算机都非常庞大而且昂贵,因而分时系统应运而生。
正如多道程序设计允许处理器同时处理多个批作业一样,它还可以用于处理多个交互作业。对后一种情况,由于多个用户分享处理器时间,因而该技术称做分时( time sharing)。
🐥在分时系统中,多个用户可以通过终端同时访问系统,由操作系统控制每个用户程序以很短的时间为单位交替执行。因此,如果有n个用户同时请求服务,若不计操作系统开销,每个用户平均只能得到计算机有效速度的1/n。但是由于人的反应时间相对比较慢,所以一个设计良好的系统,其响应时间应该可以接近于专用计算机。