第二章 操作系统概述

2.1 操作系统的目标和功能
操作系统是控制应用程序执行的程序,是应用程序和计算机硬件间的接口,它有三个目标:

  • 方便:操作系统使用计算机更易于使用
  • 有效:操作系统允许以更有效的方式使用计算机系统资源
  • 扩展能力:在构造操作系统时,应允许在不妨碍服务器的前提下,有效的开发、测试和引入新的系统功能
    2.1.1 作为用户/计算机接口的操作系统
    操作系统为程序员屏蔽了硬件细节,并为程序员使用系统提供了方便的接口。
    简单地说,操作系统通常提供了以下几个方面的服务:
  • 程序开发 为帮助程序员开发程序,操作系统提供各种各样的工具和服务,如编辑器和调试器。它们由操作系统提供,称为应用程序开发工具。
  • 程序运行 操作系统为用户提供调度服务。运行一个程序需要很多步骤:必须把指令和数据加载到内存、初始化I/O设备和文件、准备其他一些资源,这些都由操作系统完成。
  • I/O设备访问 每个I/O设备的操作都需要自身特有的指令集或控制信号,操作系统隐藏这些细节,并提供统一的接口,因此程序员可以使用简单的读/写操作来访问这些设备。
  • 文件访问控制 对操作系统而言,关于文件的控制不仅必须详细了解I/O设备(磁盘驱动器、磁带驱动器)的特性,而且必须详细了解存储介质中文件数据的结构。此外,对有多用户的系统,操作系统还可提供保护机制来控制对文件的访问。
  • 系统访问 对于共享或公共系统,操作系统控制对整个系统的访问,以及对某个特殊系统资源的访问。访问功能模块必须提供对资源和数据的保护,以避免未授权用户的访问,还必须解决资源竞争时的冲突问题。
  • 错误检测和响应 计算机系统运行时可能发生各种各样的错误,包括内部和外部错误。对每种情况,操作系统都必须提供响应以清除错误条件,使其对正在运行的应用程序影响最小。其中响应可以是终止引用错误的程序、重试操作或简单的给应用程序报告错误。
  • 记账 好的操作系统可以收集对各种资源的利用率的统计情况,监控诸如响应时间之类的性能参数。在任何系统中,这种信息对于预测将来增强功能的需求以及调整系统以提高性能是很有用的。对于多用户系统,这种信息还可用于记账。

计算机系统中的三种重要接口

  • 指令系统体系结构(ISA):定义了计算机遵循的机器语言指令系统,该接口是硬件和软件的分界线。注意,应用程序和使用程序都可直接访问ISA,这些程序使用指令系统的一个子集(用户级ISA)。操作系统能使用其他一些操作系统资源的机器语言指令(系统级ISA)。

  • 应用程序二进制接口(ABI):这种接口定义了程序间二进制可移植性的标准。ABI定义了操作系统的系统调用接口,以及在系统中通过ISA能使用的硬件资源和服务。

  • 应用程序编程接口(API):API允许应用程序访问系统的硬件资源和服务,这些服务由用户级ISA和高级语言库(HLL)调用来提供。使用API能让应用软件更容易重新编译并移植到具有相同API的其他系统中。

    2.1.2作为资源管理器的操作系统
    一台计算机就是一组资源,这些资源用于移动,存储和处理数据,并对这些功能进行控制,而操作系统负责管理这些资源。
    操作系统作为控制机制有两个独特的特点:

  • 操作系统与普通计算机软件的作用相同,即它是由处理器执行的一段程序或一组程序

  • 操作系统经常会释放控制,而且必须依赖处理器才能恢复控制

操作系统与其它计算机程序的比较:

  • 都是计算机程序,给处理器提供指令
  • 主要区别在于程序的意图。操作系统控制处理器使用其他系统资源,并控制其他程序的执行时机。但处理器要做任何一件这类事情时,都必须停止执行操作系统程序,而去执行其他程序。

操作系统的一部分在内存中,包括内核程序(kernel或nucleus)和当前正在使用的其他操作系统程序,内核程序包含操作系统中最常使用的功能。
2.1.3操作系统的易扩展性

  • 硬件升级和新型硬件的出现

  • 新的服务

  • 纠正错误
    2.2操作系统的发展史
    2.2.1串行处理

    • 调度
    • 准备时间
      2.2.2简单批处理系统
      原理:通过使用一个成为监控程序的软件。通过使用这类操作系统,用户不再直接访问机器,相反,用户把卡片或磁带中的作业提交给计算机操作员,由操作员把这些作业按顺序组织成批按顺序组织成批,并将整个批作业放在属兔设备上,供监控程序使用。每个程序完成处理后返回到监控程序,同时监控程序自动加载下一个程序。
  • 监控程序角度:监控程序控制事件的顺序。监控程序每次从输入设备中读取一个作业。读入后,当前作业呗放置在用户程序区域,并且把控制权交给这个作业。作业完成后,它将控制权返回给监控程序,监控程序立即读取下一个作业。每个作业的结果被发送到输出设备,交付给用户。

  • 处理器角度:处理器执行内存中存储的监控程序中的指令,这些指令读入下一个作业并存储到内存中的另一部分,这些指令读入下一个作业并存储到内存中的另一部分。读入一个作业后,处理器将会遇到监控程序的分支指令,引导处理器在用户程序的开始处继续执行。处理器继而执行用户程序中的指令,直到遇到一个结束指令或错误条件。
    监控程序的功能:

    • 调度功能:一批作业排队等候,处理器尽可能迅速地执行作业,没有任何空闲时间
    • 改善作业的准备时间

监控程序或批处理操作系统,只是一个简单的计算机程序,它依赖于处理器可从内存的不同部分取指令的能力,交替的获取或释放控制权。此外,还考虑了其他硬件功能:

  • 内存保护:当用户程序正在进行时,不能改变包含监控程序的内存区域。若视图这样做,处理器硬件将发现错误,并将控制权转移给监控程序,监控程序取消这个作业,输出错误信息,并加载下一个作业。
  • 定时器:定时器用于防止一个作业独占系统。在每个作业开始时,设置定时器,若定时器时间到,就会停止用户程序,控制权返回给监控程序
  • 特权指令:某些机器指令被设计成特权指令,智能由监控程序执行。处理器在运行一个用户程序时遇到这类指令会发生错误,并将控制权转移给监控程序。例如:I/O指令属于特权指令,因此监控程序可以控制所有I/O设备,此外还可避免用户程序意外的读到下一个作业中的作业控制指令。当用户程序希望执行I/O时,需请求监控程序为自己执行这一操作。
  • 中断:中断特征使得操作系统在让用户程序放弃控制权或从用户程序获得控制权时,具有更大的灵活性。
    2.2.3多道批处理系统
    对多道程序设计最有帮助的硬件是,支持I/O中断和直接存储器访问(DMA)的硬件。通过中断驱动的I/O或DMA,处理器可为一个作业发出I/O命令,设备控制器执行I/O操作时,处理器执行另一个作业;I/O操作完成后,处理器被中断,控制权传递给操作系统中的中断处理程序,然后操作系统把控制权传递给另一个作业。
    2.2.4分时系统
    在分时系统中,多个用户可以通过中断同时访问系统,由操作系统控制每个用户程序在很短的时间内交替执行。
    批处理和分时都用到了多道程序设计,其主要差别在于:
批处理多道程序设计分时
主要目标充分利用处理器减小响应时间
操作系统作业控制语言命令,作业提供的命令终端键入的命令

2.3主要成就
2.3.1进程
关于进程的定义有很多,例如:

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

进程由三部分组成:

  • 一段可执行的程序

  • 程序所需要的相关数据(变量、工作空间、缓冲区等)

  • 程序的执行上下文(也称为进程状态)
    关于执行上下文(又称进程状态):是操作系统用来管理和控制进程所需的内部数据。包括操作系统管理进程以及处理器正确执行进程所需的所有信息。包括各种处理器寄存器的内容,如程序计数器和数据寄存器。还包括操作系统使用的信息,如进程优先级及进程是否在等待特定I/O事件的发生。
    线程:本质上,一个分配了资源的进程可分解为多个并发的进程,这些线程相互协作执行,完成进程的工作
    2.3.2内存管理
    操作系统为有效且有条理地控制存储器分配,需要完成下面5项工作:

  • 进程隔离:操作系统必须保护独立的进程,防止互相干扰各自的存储空间,包括数据和指令;

  • 自动分配和管理:程序应该根据需要在存储层次间动态地分配,分配对程序员是透明的。

  • 支持模块化程序设计:程序员应该能够定义程序模块,并动态的创建、销毁模块,动态的改变模块的大小。

  • 保护和访问控制:不论在存储层次中的哪一级,存储器的共享都会产生一个程序访问另一个程序存储空间的潜在可能性。因此,操作系统必须允许一部分内存可以由各种用户以各种方式进程访问。

  • 长期存储:许多应用程序需要在计算机关机后长时间地保存信息。
    典型情况下,操作系统使用虚存文件系统机制来满足这些要求。其中,文件系统实现 长期存储。
    2.3.3信息保护和安全
    与操作系统相关的大多数安全和保护问题可分为4类:

  • 可用性:保护系统不被中断

  • 保密性:保证用户不能读取未被授权访问的数据

  • 数据完整性:保护数据不被未授权修改

  • 认证:设计用户身份的正确认证和消息或数据的合法性
    2.3.4调度和资源管理
    操作系统的一个关键任务是管理各种可用资源(内存空间、I/O设备、处理器),并调度各种活动进程来使用这些资源。

    任何资源分配和调度策略都需考虑3个因素:

  • 公平性:通常希望给竞争使用某一特定资源的所有京城提供几乎同等和公平的访问机会。对同一类作业,即有类似请求的作业,更需要如此

  • 有差别的响应性:另一方面,操作系统可能需要区分具有不同服务要求的不同作业类别。操作系统将试图做出满足所有要求的分配和调度策略。

  • 有效性:操作系统希望获得最大的吞吐量和最小的响应时间,并在分时情形下,能够容纳尽可能多的用户。
    2.4现代操作系统的特征
    多线程技术是指把执行一个应用程序的进程划分为可以同时运行的多个线程。

线程和进程的区别如下:

  • 线程(thread):可分派的工作单元。包括处理器上下文环境(包含程序技术阿奇和栈指针)和栈中自身的数据区域(目的是启动程序分支)。线程顺序执行且可以中断,因此处理器可以转到另一个线程。

  • 进程(process):一个或多个线程和相关系统资源(如包含数据和代码的存储器空间、打开的文件和设备)的集合。它严格对应于一个正在执行的程序的概念。通过把一个应用程序分解成多个线程,程序员可以在很大程度上控制应用程序的木块性及相关事件的时间安排。
    在同一个进程中运行多个线程时,在线程间来回切换所涉及的处理器开销要比在不同进程间进行切换的开销小。
    2.5容错性
    2.5.1基本概念
    容错性是指系统或部件在发生软/硬件错误时,能够继续正常运行的能力。这种能力通常会涉及一定程度的冗余,但是可以提高系统的可靠性。
    与容错性相关的系统运行质量的基本度量指标是可靠性平均失效时间可用性
    2.5.2错误
    IEEE标准将错误定义为一个不正确的硬件或软件状态,这种状态由环境、设计错误、程序错误、数据结构错误所导致的组件错误、操作错误、物理干扰造成。该标准还国定故障表现为:(1)硬件设备或组件缺陷,如短路或线路损坏;(2)计算机程序中不正确的步骤、过程或数据定义。

    错误分为以下几类:

  • 永久性错误:错误在故障部分替换或修复前将一直存在。如硬盘磁头损坏、软件错误、通信部件损坏

  • 临时性错误:分为瞬时性错误和间歇性错误

一般而言,系统的容错性是通过增加冗余度来实现的。冗余的实现有以下几种方法:

  • 空间(物理)冗余:物理冗余包括使用多个组件同时执行相同的功能,或设置一个可用组件作为备份,以防止灵异组件出现错误的情况

  • 时间冗余:时间冗余指检测到错误时重复某一功能或操作,该方法对于临时性错误有效,但对永久性错误无效

  • 信息冗余:信息冗余通过复制或编码数据的方式来检测和修复位数据,进而提高容错性。例如存储系统所用的差错控制编码电路和RAID磁盘所用的纠错技术。
    2.5.3操作系统机制
    操作系统软件中采用了许多技术来提高容错性,常见的如下:

  • 进程隔离:操作系统为进程管理所提供的这一结构,可为其他进程不受产生错误进程的影响提供一定的保护。例如,进程在内存、文件存取和执行过程中通常是相互隔离的。

  • 并发控制:提供一种可以保证正确操作以及从错误状态(如死锁)中恢复的技术。

  • 虚拟机:提供了更高的应用隔离和错误隔离。

  • 检测点和回滚机制:检测点是应用程序状态的一个副本,该副本在可考虑范围内保存于对错误免疫的存储介质中,回滚则是从先前存储的检测点重新开始执行。发生错误时,应用程序的状态回滚到检测点并从那里开始重新执行。
    2.6多处理器和多核操作系统设计考虑因素

    2.6.1对称多处理器操作系统设计考虑因素

  • 并发进程或线程

  • 调度

  • 同步

  • 内存管理

  • 可靠性和容错性

    2.6.2多核操作系统设计考虑因素

  • 前述对称多核处理器操作系统设计考虑因素

  • 每个核内部的硬件并行,即指令并行

  • 处理器层次上的潜在并行能力

  • 在多核上一个应用程序以并发多次进程或多线程形式执行的潜在并行能力

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值