操作系统概述

操作系统的目标和功能

它有三个目标:

  • 方便:操作系统使计算机更易于使用。
  • 有效:操作系统允许以更有效的方式使用计算机系统资源。
  • 扩展能力:在构造操作系统时,应该允许在不妨碍服务的前提下有效地开发、测试和引进新的系统功能。

作为用户/计算机接口的操作系统

简单的说,操作系统通常提供了以下几个方面的服务:

  • 程序开发:操作系统提供各种各样的工具和服务,如编辑器和调试器,用于帮助程序员开发程序。
  • 程序运行:运行一个程序需要很多步骤,包括必须把指令和数据载入到内存、初始化I/O设备和文件、准备其他一些资源。操作系统为用户处理这些调度问题。
  • I/O设备访问:每个I/O设备的操作都需要特有的指令集和控制信号,操作系统隐藏这些细节并提供了统一的接口,因此程序猿可以使用简单的读和写操作访问这些设备。
  • 文件访问控制:对操作系统而言,关于文件的控制不仅必须详细了解I/O设备的特性,而且必须详细了解存储介质中文件数据的结构。
  • 系统访问:对于共享或公共系统,操作系统控制对整个系统的访问以及对某个特殊系统资源的访问。
  • 错误检测和响应:计算机系统运行时可能发生各种各样的错误,包括内部和外部硬件错误,如存储器错误、设备失效或故障,以及各种软件错误,如算术溢出、试图访问被禁止的存储器但愿、操作系统无法满足应用程序的请求等。
  • 记账:一个好的操作系统可以收集对各种资源使用的统计信息,监控诸如响应时间之类的性能参数。

作为资源管理器的操作系统

操作系统的易扩展性

一个重要的操作系统应该能够不断发展,其原因如下:

  • 硬件升级和新兴硬件的出现:例如“分页”。
  • 新的服务:新的度量和控制工具。
  • 纠正错误:补丁。

操作系统的发展

串行处理

早期系统引出了两个主要问题:

  • 调度:大多数装置都是用一个硬拷贝的登记表预定机器时间。通常,一个用户可以以半小时为单位登记一段时间。有可能用户登记了1小时,而只用了45分钟就完成了工作,在剩下的时间中计算机只能闲置,这时就会导致浪费。另一方面,如果登记时间内没有完成工作,会被强制退出。
  • 准备时间:一个程序称作作业,它可能包括往内存中加载编译器和高级语言程序,保存编译好的程序,然后加载目标程序和公用函数并连接在一起。每一步都可能包括安装或拆卸磁带,或者准备卡片组。如果在期间发生了错误,用户只能全部重新开始。因此,在程序运行前的准备需要花费大量的时间。

简单批处理系统

简单批处理方案的中心思想是使用一个称做监控程序的软件。

多道程序设计批处理系统

单道程序设计(uniprogramming)

处理器花费一定的运行时间进行计算,直到遇到一个I/O指令,这时它必须等待这个I/O指令结束后才能继续进行。

多道程序设计(multiprogramming)

假设内存空间容得下操作系统和两个用户程序,那么当一个作业需要等待I/O时,处理器可以切换到另一个可能并不在等待I/O的作业。进一步可以扩展到三个、四个或横多的程序,并在它们之间进行切换。

分时系统

由于多个用户分享处理器时间,因而该技术称作分时(time sharing)。

主要的成就

进程

存在很多关于进程的定义,如下所示:

  • 一个正在执行的程序。
  • 计算机中正在运行的程序的一个实例。
  • 可以分配给处理器并由处理器执行的一个实体。
  • 由单一的顺序的执行线程、一个当前状态和一组相关的系统资源所描述的活动单元。

计算机系统发展有三条主线;多道程序批处理操作、分时和实时事物系统,它们在时间安排和同步中所产生的问题推动了进程概念的发展。

正如前面所讲的,多道程序设计是为了让处理器和I/O设备同时保持忙状态,以实现最大效率。

其关键机制是:在响应表示I/O事务结束的信号时,操作系统将对内存中驻留的不同程序进行处理器切换。

发展的第二条主线是通用的分时。其主要设计目标是能及时响应单个用户的要求,但是由于成本原因,又要可以同时支持多个用户。 由于用户反应时间相对比较慢,这两个目标是可以同时实现的。

发展的另一个重要主线是实时事务处理系统。

系统程序员在开发早期的多道程序和多用户交互系统时使用的主要工具是中断。一个已定义事件(如I/O完成)的发生可以暂停任何作业的活动。处理器保存某些上下文(如程序计数器和其他寄存器),然后跳转到中断处理程序中,处理中断,然后恢复用户被中断作业或者其他作业的处理。

死锁 很可能有两个或者多个程序相互挂起等待。例如,两个程序可能都需要两个I/O设备执行一些操作。一个程序获得了一个设备的控制权,而另一个程序获得了另一个设备的控制权,它们都等待对方释放自己想要的资源。

内存管理

操作系统为了满足这些要求,担负着5个基本的存储器管理责任:

  • 进程隔离
  • 自动分配和管理
  • 支持模块化程序设计
  • 保护和访问控制
  • 长期存储

在典型情况下,操作系统使用虚拟存储器和文件系统机制来满足这些要求。文件系统实现了长期存储,它在一个有名字的对象中保存信息,这个对象称作文件。

虚拟存储器的构象是为了满足有多个用户作业同时驻留在内存中的要求。这样当一个进程被写出到辅助存储器中并且后继程序被读入时,在连续的进程执行之间将不会脱节。由于进程大小不同,如果处理器在很多进程间切换,则很难把它们紧密地压入内存中,因此引进了分页系统。在分页系统中,程序由许多固定大小的块组成,这些块称作页。程序通过虚地址访问字,虚地址由页号和页中的偏移量组成。进程的每一页都可以放置在内存中的任何地方,分页系统提供了程序中使用的虚地址和内存中的实地址或物理地址之间的映射。

一个进程的所有页都保留在磁盘中,当程序执行时,一部分页在内存中。如果需要访问的某一个页不在内存中,存储管理硬件可以检测到,然后安排载入这个缺页。这个配置称作虚拟内存

信息保护和安全

大多数与操作系统相关的安全和保护问题可以分为4类:

  • 可用性
  • 保密性
  • 数据完整性
  • 认证

调度和资源管理

任何资源分配和调度策略都必须考虑三个因素:

  • 公平性
  • 有差别的响应性
  • 有效性

系统结构

名称 对象 实例操作
13 shell 用户程序设计环境 shell语言中的语句
12 用户进程 用户进程 退出、终止、挂起和恢复
11 目录 目录 创建、销毁、连接、分离、查找和列表
10 设备 外部设备 打开、关闭、读和写
9 文件系统 文件 创建、销毁、打开、关闭、读和写
8 通信 管道 创建、销毁、打开、关闭、读和写
7 虚拟存储器 段、页 读、写和取
6 本地辅助存储器 数据块、设备通道 读、写、分配和空闲
5 原始进程 原始进程、信号量、准备就绪列表 挂起、恢复、等待和发信号
4 中断 中断处理程序中 调用、屏蔽、去屏蔽和重试
3 过程 过程、调用栈、显示 标记栈、调用、返回
2 指令集合 计算栈、微程序解释器、标量和数组数据 加载、保存、加操作、减操作、转移
1 电路 寄存器、门、总线等 清空、传送、激活、求反

现代操作系统的特征

多线程技术是指把执行一个应用程序的进程划分可以同时运行的多个线程。线程和进程有以下区别:

  • 线程: 可分派的工作单元。它包括处理器上下文环境(包含程序计数器和栈指针)和栈中自己的数据区域。线程顺序执行,并且是可以中端的,这样处理器可以转移到另一个线程。
  • 进程: 一个或多个线程和相关系统资源的集合。

多线程中队执行许多本质上独立、不需要串行处理得应用程序是很有用的,例如监听和处理很多用户客户请求的数据库服务器。在同一个进程中运行多个线程,在线程间来回切换所涉及的处理器开销要比在不同进程间切换的开销少。

到现在为止,大多数单用户的个人计算机和工作站基本上都只包含一个通用的微处理器。随着性能要求的不断增加以及微处理器价格的不断降低,计算机厂商引进了拥有多个微处理器的计算机。为实现更高的有效性和可靠性,可使用对称多处理(Symmetric MultiProccessing,SMP)技术。对称多处理不仅指计算机硬件结构,而且指反映该硬件结构的操作系统行为。对称多处理计算机可以定义为具有以下特征的一个独立的计算机系统:

  1. 有多个处理器
  2. 这些处理器共享同一个内存和I/O设备,它们之间通过通信总线或者别的内部联通方案互相连接。
  3. 所有处理器都可以执行相同的功能。(因此称为对称

对称多处理结构比单处理器结构具有更多的潜在优势,如下所示:

  • 性能
  • 可用性
  • 增量增长
  • 可扩展性

Reference

操作系统 精髓与设计原理

More than your eyes can see