操作系统概述
操作系统为应用程序提供与硬件交互的接口。它的主要功能是为运行中的程序动态地分配可共享的系统资源,与之相关的研究主要涉及内存,进程及外设的管理和调度。相邻层次间的接口不断改变:一方面,原来由操作系统负责的部分功能被迁移到硬件中;另一方面,一些与应用程序解决的问题无关的程序化函数也被加入操作系统中。
2.1操作系统的目标和功能
操作系统是控制应用程序执行的程序,并充当应用程序和计算机硬件之间的接口。它有下面三个目标:
1:方便:操作系统使计算机更易于使用。
2:有效:操作系统允许以更有效的方式使用计算机资源。
3:扩展能力:在构造操作系统时,应该允许在不妨碍服务的前提下有效地开发、测试和引进新的系统功能。
2.1.1 作为用户/计算机接口的操作系统
最重要的系统程序是操作系统,操作系统为程序员屏蔽了硬件细节,并为程序员使用系统提供方便的接口。它可以作为中介,使用程序员和应用程序更容易地访问和使用这些功能与服务。
简单地说,操作系统通常提供了以下几个方面的服务:
1:程序开发:操作系统提供各种各样的工具和服务,如编辑器和调试器,用于帮助程序员开发程序。通常,这些服务以实用工具的形式出现,严格来说并不属于操作系统核心的一部分;它们由操作系统提供,称为应用程序开发工具。
2:程序运行:运行一个程序需要很多步骤,必须把指令和数据加载到内存、初始化IO设备和文件、准备其它一些资源。操作系统为用户处理这些调度问题。
3:IO设备访问:每个IO设备的操作都需要自己特有的指令集或控制信号,操作系统隐藏这些细节,并提供了统一的接口,因此程序员可以使用简单的读和写操作来访问这些设备。
4:文件访问控制:对操作系统而言,关于文件的控制不仅必须详细了解IO设备(磁盘驱动器、磁带驱动器)的特性,而且必须详细了解存储介质中文件数据的结构。此外,对有多个用户的系统,操作系统还可以提供保护机制来控制对文件的访问。
5:系统访问:对于共享或公共系统,操作系统控制对整个系统的访问以及对某个特殊系统资源的访问。访问功能模块必须提供对资源和数据的保护,以避免未授权用户的访问,还必须解决资源竞争时的冲突问题
6:错误检测和响应:计算机系统运行时可能发生各种各校的错误,包括内部和外部硬件错误,如存储器错误、设备失败或故障,以及各种软件错误,如算术溢出、方略访问被禁止的存储器单元、操作系统无法满足应用程序的请求等。对每种情况,操作系统都必须提供响应以清除错误条件,使其对正在运行应用程序的影响最小。响应可以是终止引起错误的程序、重试操作或简单地给应用程序报告错误。
7:记账:一个好的操作系统可以收集对各种资源的利用率统计数据,监控诸如响应时间之间的性能参数。在任何系统中, 这个信息对于预测将来增强功能的需求以调整系统以提高性能都是很有用的。对多用户系统,这个信息还可用于记账。
2.1.2作为资源管理器的操作系统
一台计算机就是一组资源,这些资源用于对数据的移动、存储和处理,以及对这些功能的控制。而操作系统负责管理这些资源。
作为控制机制,它有两方面特点:
1:操作系统与普通的计算机软件作用相同,也就是说,它是由处理器执行的一段程序或一组程序。
2:操作系统经常会释放控制,而且必须依赖处理器才能恢复控制。
操作系统实际上不过是一组计算机程序,与其他计算机程序类似,它们都给处理器提供指令,主要区别在于程序的意图。操作系统控制处理器使用其他系统资源,并控制其他程序的执行时机。但是,处理器要做任何一件这类事情,都必须停止执行操作系统程序,而去执行其他程序。因此,这时操作系统释放对处理器的控制,让处理器去做其他一些有用的工作,然后用足够长的时间恢复控制权,让处理器准备好做下一件工作。
操作系统中有一部分在内存中,其中包括内核程序和当前正在使用的其他操作系统程序,内核程序包含操作系统中最常使用的功能。内存的其余部分包含用户程序和数据,它的分配由操作系统和处理器中的存储管理硬件联合控制完成。操作系统决定在程序运行过程中何时使用IO设备,并控制文件的访问和使用。处理器自身也是一个资源,操作系统必须决定在运行一个特定的用户程序时,可以分配多少处理器时间。在多处理器系统中,这个决定要传到所有的处理器。
2.3主要的成就
2.3.1 进程
系统程序员在开发早期的多道程序和多用户交互系统时使用的主要工具是中断。一个已定义事件(如IO完成)的发生可以暂停任何作业的活动。处理器保存某些上下文(如程序计数器和其他寄存器),然后跳转到中断处理程序中,处理中断,然后恢复用户被中断的作业或其他作业的处理。
设计出一个能够协调各种不同活动的系统软件是非常困难的。在任何时刻都有许多作业在运行中,每个作业都包括 要求按顺序执行的很多步骤,因此,分析事件序列的所有组合几乎是不可能的。由于缺乏能够在所有活动中进行协调和合作的系统级的方法,程序员只能基于他们对操作系统所控制的环境的理解,采用自己的特殊方法,然而,这种方法是很脆弱的,尤其对于一些程序设计中的小错误,因为这些错误只在很少见的事件序列发生时才会出现。由于需要从应用程序软件错误和硬件错误中区分出这些错误,因而诊断工作是很困难的。即使检测出错误了 很难确定其原因,因为很难再现错误产生的精确场景。
解决问题需要一种系统级的方法监控处理器中不同的程序的执行。进程的概念为此提供了基础。进程可以视为由三部分组成:
1:一段可执行的程序。
2:程序所需要的相关数据(变量、工作空间、缓冲区等)。
3:程序的执行上下文。
最后一部分是根本。执行上下文又称进程状态,是操作系统用来管理和控制进程所需的内部数据。这种内部信息和进程是分开的,因为操作系统信息不允许被进程直接访问。上下文包括操作系统管理进程及处理器正确执行进程所需要的所有信息:包括各种处理器寄存器的内容,如程序计数器和数据寄存哭 还包括操作系统使用的信息,如进程优先级及进程是否在等待特定IO事件完成
2.3.2内存管理
通过支持模块化程序设计的计算环境和数据的灵活使用,可以很好地满足用户的要求。系统管理员需要有效且条理地控制存储器分配。操作系统为满足这些要求,担负着5个基本的存储器管理责任:
1:进程隔离:操作系统必须保护独立的进程,防止互相干涉各自的存储空间,包括数据和指令。
2:自动分配和管理:程序应该根据需要在存储层次间动态地分配 ,分配对程序员是透明的。因此,程序员无须关心与存储限制有关的问题,操作系统有效地实现分配问题,可以仅在需要时才给作业分配存储空间。
3:支持模块化程序设计:程序员应该能够定义程序模块,并且动态地创建、销毁模块、动态地改变模块大小。
4:保护和访问控制:不论在的哪一级,存储器的共享都会产生一个程序访问另一个程序存储空间的潜在可能性。当一个特定的应用程序需要共享时,这是可取的。但在别的时候,它可能会威胁到程序的完整性,甚至威胁到操作系统自身。操作系统必须允许一部分内存可以由各种用户以各种方式进行访问。
5:长期存储:许多应用程序需要在计算机关机后长时间保存信息。
2.3.3信息保护和安全
信息保护是在使用分时系统时提出的,近年来计算机网络进一步关注和发展了这个问题。由于环境不同,涉及一个组织的威胁的本质也不同。但是,有一些通用工具可以嵌入运行各种保护和安全机制的计算机和操作系统内部。总之,我们关心对计算机系统的控制访问和其中保存的信息。
大多数与操作系统相关的安全和保护问题可以分为四类:
1:可用性:保护系统不被打断。
2:保密性:保证用户不能读到未授权访问的数据。
3:数据完整性:保护数据不被未授权修改。
4:认证:涉及用户身份的正确谁和消息或数据的合法性。
2.3.4调度和资源管理
操作系统的一个关键任务是管理各种可用资源(内存空间、IO设备、处理器),并调度各种活动进程使用这些资源。