2.2.4 分时系统

     正如多道程序设计允许处理器同时处理多个批作业一样,它还可以用于处理多个交互作业。对后一种情况,由于多个用户分享处理器时间,因此该技术称作分时。在分时系统中,多个用户可以通过终端同时访问系统,由操作系统控制每个用户以最短的时间为单位交替执行。因此,如果有n个用户同时请求服务,如不计操作系统开销,每个用户平均只能得到计算机有效速度的1/n。批处理和分时系统都使用了多道程序设计,其主要差别如表2.3所示。

第一台分时操作系统是由麻省理工(MIT)开发的兼容分时系统(CTSS),该系统最初是在1961年为IBM 709开发的的,后来移植到IBM 7094中。

2.3 主要的成就

     操作系统开发中的5个重要的理论进展:进程、内存管理、信息保护和安全、调度和资源管理、系统结构。

2.3.1 进程

     进程是操作系统的基本结构。它存在很多定义,如下所示:

一个正在执行的程序

计算机中正在运行的程序的一个实例

可以分配给处理器并由处理器执行的一个实体

由单一的顺序的执行线程、一个当前状态和一组相关的系统资源所描述的活动单元。

计算机系统的发展有三条主线:

1 多道程序批处理操作

多道程序设计是为了让处理器和I/O设备同时保持忙的状态,以实现最大效率。其关键机制:在响应表示I/O事务结束的信号时,操作系统将对内存中驻留的不同程序进行处理器切换。

2分时

分时设计的目标是能及时响应单个用户的要求,但是由于成本原因,又要可以同时支持多个用户。由于用户反应时间相对比较慢,这两个目标都可以同时满足。
3实时事务系

在这种情况下,很多用户都在对数据库进行查询或修改,例如航空公司的预订系统。事务处理系统和分时系统的主要区别差别在于前者局限与一个或几个应用,而分时系统的用户可以葱丝程序开发、作业执行以及使用各种各样的应用程序。

在任何时刻都有许多作业在运行中,每个作业都包括要求按顺序执行的很多步骤,因此,分析事件序列的所有组合几乎是不可能的。由于缺乏能够在所有活动中进行协调和合作的系统级方法,程序员采用自己的特殊方法。然而这种方法很脆弱,尤其是程序设计中小错误,因为这些错误只有在很少见的事件序列发生时才会出现。这些错误需要从应用程序软件错误和硬件错误中区分,即使检测出错误,也很难精确确定原因。一般而言,产生这类错误有4个主要原因

  • 不正确的同步:常常会出现这样的情况,即使一个例程必须挂起,等待系统中其他地方某一事假。例如,一个程序启动了一个I/O读操作,在继续进行之前必须等到缓存区中有数据。在这种情况下,需要来自其他例程的一个信号,而设计不正确的信号截止可能导致信号丢失或接收到重信号。
  • 失败的互斥:常常会出现多个用户或程序试图同时使用一个共享资源的情况。例如,两个用户可能试图同时编辑一个文件。如果不控制这种访问,就会出现错误。因此,必须有某种互斥机制,以保证一次只允许一个例程对一部分数据执行事务处理。很难证明这类互斥机制的实现对所有可能的事件序列都是正确的。
  • 不正确的程序操作:一个特定程序的结果只依赖与改程序的输入,而不依赖与共享系统中其它程序的活动。但是,当程序共享内存并且处理器控制它们交错执行,它们可能会因为重写相同的内存区域而发生不可预测的相互干扰。因此,程序调度顺可能会影响某个特定程序的输出结果。
  • 死锁:很可能有两个或多个程序相互挂起等待。例如,两个程序可能都需要两个I/O设备执行一些操作(如从磁盘复制到磁带)。一个程序获得了一个设备的控制权,而另一个程序获得了另一个设备的控制权,它们都等到对方释放自己想要的资源。这样的死锁依赖于资源分配和释放的时机安排。

进程可以看做是由三部分组成

  • 一段可执行的程序
  • 程序所需的相关数据(变量、工作空间、缓存区等)
  • 程序的执行上下文

最后一部分是文本。执行上下文又称作进程状态,是操作系统用来管理和控制进程所需要的内部数据。这种内部信息和进程是分开的,因为操作系统信息不允许被进程直接访问。上下文包括操作系统管理进程以及处理器正确执行进程所需要的所有信息。包括各种处理器寄存器的内容,如程序计数器和数据寄存器。它还包括操作系统使用的信息,如进程优先级以及进程是否在等待特定I/O事件的完成。

如图2.8给出了一种进程管理的方法。两个进程A和B,操作系统给每个进程(包含程序、数据和上下文信息)分配一块存储器区域,并维护进程表中进行的记录。进程表包含记录每个进程的表项,表项内容包括指向包含进程的存储块地址的指针,还包括该进程块的部分或全部执行上下文信息。进程索引寄存器包含当前正在控制处理器的进程表中的索引。程序计数器指向该进程中下一条执行的指令。基址寄存器和界限寄存器定义了该进程所占据的存储器区域:基址寄存器中保存了该存储器区域的开始地址,界限寄存器中保存了该区域的大小(以字节或字为单位)。程序计数器和所有的数据引用相对于基址寄存器被解释,并且不能超过界限寄存器中的值,这样既可以保护内存进程间不会相互干涉。

图2.8所示,进程索引寄存器表明进程B正在执行。以前执行的进程被临时中断,在A中断的同时,所有寄存器的内容被记录在它的执行上下文环境中,以后操作系统就可以执行进程切换,恢复进程A的执行。进程切换过程包括保存B的上下文和恢复A的上下文。当在程序计数器中载入指向A的程序区域的值时,进程A自动恢复执行。

因此,进程被当做数据结构来实现。一个进程可以是正在执行,也可以是等待执行。任何时候整个进程状态都包含在它的上下文环境中。

2.3.2 内存管理

通过支持模块化程序设计的计算机环境和数据的灵活使用,用户的要求可以得到很好的满足。系统管理员需要有效且有条理地控制存储器分配。操作系统担负着5个基本的存储器管理责任:

  • 进程隔离:操作系统必须保护独立的进程,防止互相干涉各自的存储空间,包括数据和指令。
  • 自动分配和管理:程序应该根据需要在存储层次间动态分配,分配对程序员是透明的。因此,程序员无需关心与存储限制有关的问题,操作系统有效地实现分配问题,可以仅在需要时才给作业分配存储空间。
  • 支持模块化程序设计:程序员应该能够定义程序模块,并且动态创建、销毁模块,动态地改变模块大小。
  • 保护和访问控制:不论在存储层次中的哪一级,存储器的共享都会产生一个程序访问另一个程序存储空间的潜在可能性。当一个特定的应用程序需要共享时,这是可取的。操作系统必须允许一部分内存可以由各种用户以各种方式进行访问。
  • 长期存储:许多应用程序需要在计算机关机后长时间保存信息。

在典型情况下,操作系统使用虚拟存储器和文件系统机制来满足这些要求。文件系统实现了长期存储,它在一个有名字的对象中保存信息,这个对象称作文件。对程序员来说,文件是一个方便的概念;对操作系统来说,文件是访问控制和保护的一个有用单元。

虚拟存储器机制允许程序从逻辑的角度访问存储器,而不考虑物理内存上可用的空间数量。虚拟存储器的构想是为了满足有多个用户作业同时驻留在内存中的要求。

由于进程大小不同,如果处理器在很多进程间切换,则很难把它们紧密地压入内存,因此引入了分页系统。在分页系统中,进程由许多固定大小的块组成,这些块称作页。程序通过虚地址访问字,虚地址由页号和页中偏移量组成。进程的每一页都可以放置在内存中的任何地方,分页系统提供了程序中使用的虚地址和内存中的实地址或物理地址之间的动态映射。

有了动态映射硬件,下一步逻辑步骤是消除一个进程的所有页同时驻留在内存中的要求。一个进程的所有页都保留在磁盘中,当进程执行时,一部分分页在内存中。如果需要访问的某一页不在内存中,存储管理硬件可以检测到,然后安排载入这个缺页。这个配置称作虚拟内存,如图2.9所示。

处理器硬件和操作系统一起提供给用户“虚拟处理器”的概念,而“虚拟处理器”有对虚拟存储器的访问权。这个存储器可以是一个线性地址空间,也可以是段的集合,而段是可变长度的连续地址块。不论哪种情况,程序设计语言的指令都可以访问虚拟存储器区域中的程序和数据。可以通过给每个进程一个唯一的不重叠的虚拟存储器空间来实现进程隔离;可以通过使两个虚拟存储器空间的一部分重叠来实现内存的共享;文件可用于长期存储,文件或其中一部分可以复制到虚拟存储器中供程序操作。

图2.10显示了虚拟存储器方案中的寻址关系。存储器由内存和低速的辅助存储器组成,内存可直接访问到(通过机器指令),外存则可以通过把块载入内存间接访问到。地址转换硬件(映射器)位于处理器和内存之间。程序使用虚地址访问,虚地址将映射成真实的内存地址。如果访问的虚地址不在实际内存中,实际内存中的一部分内容将换到外存中,然后后入所需要的数据块。在这个活动过程中,产生这个地址访问的进程必须被挂起。操作系统设计者的任务是开发开销很少的地址转换机制,以及可以减少各级存储器级间交换量的存储分配策略。

2.3.3 信息保护和安全
信息保护是在使用分时系统时提出的。我们关系对计算机系统的控制访问和其中保存的信息。大多数与操作系统相关的安全和保护问题可以分为4类:

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

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

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

  • 认证:涉及用户身份的正确认证和消息或数据的合法性。

2.3.4 调度和资源管理
操作系统的一个关键任务是管理各种可用资源(内存空间、I/O设备、处理器),并调度各种活动进程使用这些资源。任何资源分配和调度策略都必须考虑三个因素:

-公平性:通常希望给竞争使用某一特定资源的所有进程提供几乎相等和公平的访问机会。

-有差别的响应性:操作系统可能需要区分有不同服务要求的不同作业类。操作系统将试图做出满足所有要求的分配和调度决策,并且动态地做出决策。

-有效性:操作系统希望获得最大的吞吐量和最小的响应时间,并且在分时的情况下,能够容纳尽可能多的用户。这些标准相互矛盾,在给定状态下寻找适当的平衡是操作系统中一个正在进行研究的问题。

图2.11 给出多道程序设计环境中设计及进程调度和资源分配的操作系统主要组件。操作系统中维护着多个队列,每个队列代表等待某些资源的进程的简单列表。短期队列由在内存中(或至少最基本的一部分在内存中)并等待处理器可用时随时准备运行的进程组成。任何一个这样的进程都可以在下一步使用处理器,究竟选择哪一个取决于短期调度器或者称为分派器。一个常用的策略是依次给队列中的每一个进程一定的时间,这称为时间片轮转技术,时间片轮转技术使用一个环形队列。另一种策略是给不同的进程分配不同的优先级,根据优先级进行调度。

长期队列是等待使用处理器的新作业列表。操作系统通过把长期队列中的作业转移到短期队列中,实现往系统中添加作业,这时内存的一部分必须分配到新到来的作业。因此操作系统要避免由于允许太多的进程进入系统而过量使用内存或处理器时间。每个I/O设备都有一个I/O队列,可能有多个进程请求使用同一个I/O设备。所有等待使用一个设备的进程在该设备的队列中排队,同时操作系统必须决定把可用的I/O设备分配给哪一个进程。

如果发生一个中断,则操作系统在中断处理程序入口得到处理器的控制权。在任何情况下,只要处理中断或服务调用,就会请求短期调度器选择一个进程执行。

操作系统中这方面的研究大多针对选择算法和数据结构,其目的是提供公平性、有差别的响应性和有效性。

2.3.5 系统结构

     一个功能完善的操作系统的大小和它所处理的任务的困难性,导致了4个让人遗憾但又普遍存在的问题。

操作系统在交付使用时就习惯地表现出落后,这就要求有新的操作系统或升级老的系统。

随着时间的推移会发现越来越多潜在的缺陷,这些缺陷必须及时修复。

总是难以达到期望的性能。

理论表明,不可能开发出即复杂的又不易受各种包括病毒、蠕虫和未授权访问之类的安全性攻击的操作系统。

为管理操作系统的复杂性并克服这些问题,有几点是显而易见的:

软件必须模块化的,这有助于组织软件开发过程、限定诊断范文和修正错误

模块相互之间必须有定义很好的接口 ,接口必须尽可能简单,这不但可以简化程序设计任务,还可以使系统的扩展更加容易。

通过模块间简单清楚的接口,当一个模块改变时,对其他模块的影响可以减到最小。

现代操作系统的层次结构按照复杂性、时间刻度、抽象级进行功能划分。通常情况下,较底层的处理时间很短。这里给出一个层次操系统模型,见表2.4所示:



2.1
方便:操作系统使计算机更易使用
有效:操作系统允许以更有效的方式使用计算机系统资源
扩展能力:在构造操作系统时,应该允许在不妨碍服务的前提下有效地开发、测试和引进新的系统功能
2.2内核是操作系统的一部分,其中包括使用最频繁的部分软件。通常,内核是在main中永久维护的内存。内核以特权模式运行并响应来自进程的调用以及来自设备的中断。
2.3
2.4进程是正在执行的程序。进程由操作系统控制和调度

2.5执行上下文又称为进程状态,是操作系统用来管理和控制进程所需的内部数据。这种内部数据和进程是分开的,因为操作系统拥有进程不允许的信息。上下文包含操作系统管理流程所需的所有信息,以及处理器正确执行流程所需的所有信息。上下文包含了各种各样的内容
处理器寄存器,如程序计数器和数据寄存器。它还包括操作系统的使用信息,例如进程的优先级,以及进程是否在等待特定I/O事件的完成。
2.6
进程隔离:保护独立的进程,防止相互干涉各自的存储空间,包括数据和指令
自动分配和管理:动态分配内存,程序员无需关心与存储限制有关的问题
支持模块化程序设计:能够定义程序模块、动态地创建、销毁模块、动态地改变模块大小
保护和访问控制:在进程相互访问的时候,操作系统保护程序的完整性
长期存储:许多应用程序需要在计算机关机后长时间保存信息
2.7
并不是所有的程序都是运行在虚拟地址中,CPU在启动的时候是运行在实模式的
虚拟地址是指虚拟内存中的一个内存位置。这个位置是在磁盘上,有时在主存中。实地址是一个主地址内存,每个进程有4G虚拟地址空间,虚拟地址映射物理地址
2.8
循环调度是一种调度算法,其中的进程被激活在一个固定的循环秩序;也就是说,所有进程都在一个循环队列中。一个进程因为等待某个事件(例如子进程终止或输入/输出操作)而无法继续执行,它将控制权返回给调度器。
2.9
一个单片内核是一个包含几乎完整操作的大型内核系统,包括调度、文件系统、设备驱动程序和内存管理。内核的所有功能组件都可以访问它的所有组件内部数据结构和例程。通常,实现的是单片内核作为单个进程,所有元素共享相同的地址空间。一个微内核是一个提供进程的小型特权操作系统核心调度、内存管理和通信服务等都依赖于其他进程来执行一些传统上与操作系统内核,它只给内核分配一些最基本的功能。
2.10
多线程技术是指把执行一个应用程序的进程划分为可以同时运行的多个线程。

操作系统精髓与设计原理笔记(2)相关推荐

  1. [操作系统精髓与设计原理笔记] Chapter2 操作系统概述

    Chapter2 操作系统概述 2.1 操作系统的目标和功能 2.1.1 作为用户/计算机接口的操作系统 操作系统是应用程序和计算机硬件间的接口,三个目标:方便.有效.扩展能力 计算机软硬件结构 ​ ...

  2. 操作系统-精髓与设计原理(第六版)读书笔记

    本书封皮如下: 在china-pub上买了这本二手的操作系统精髓与设计原理,书很新,不过也不算厚,这和高教版那本操作系统概念显然不算是同一个类型的,讲的概念也都是一笔带过,没有做过多阐述,所以其实本书 ...

  3. 计算机系统设计原理当当,操作系统精髓与设计原理

    本书的目的是使读者熟悉现代操作系统的设计原理和实现问题,因此单纯讲述概念和理论远远不够.为说明这些概念,同时将它们与真实世界中不得不做出的设计选择相关联,本书选择了4个操作系统作为实例: ◆ Wind ...

  4. 计算机操作系统精髓与设计原理

    计算机操作系统精髓与设计原理 高速缓存: 主要解决处理器和内存的速度不匹配的问题.处理器的速度一致快于存储器的访问速度,这需要在速度.价格和大小方面进行折中.高速缓存区试图使访问速度接近现有的最快的存 ...

  5. 操作系统 精髓与设计原理 第三章部分题目

    第三章重要题目 注:书参考<操作系统--精髓与设计原理(第九版)> 复习题 3.2 哪些常见事件会触发进程的创建? (1)批处理环境中,提交一个新作业时操作系统会为该作业创建一个新进程. ...

  6. 操作系统——精髓与设计原理 第一章复习题习题

    操作系统--精髓与设计原理 第一章复习题&习题 复习题 1.1 列出并简要地定义计算机的四个主要组成部分 1.2定义处理器寄存器的两种主要类别 1.3一般而言,一条机器指令能指定的四种不同的操 ...

  7. 操作系统--精髓与设计原理课后复习题答案

    操作系统--精髓与设计原理(第八版) 1-15章课后复习题答案 Chap1 1.1 列出并简要定义计算机的四个组成部分. 处理器:控制计算机的操作,执行数据处理功能. 内存:也叫主存储器,存储数据和程 ...

  8. 《操作系统精髓与设计原理》学习笔记

    文章目录 置顶 第一章:计算机系统概述 1. 基本构成 2. 指令分类 3. 中断 中断的分类 多个中断 4. 内存层次 板上存储器 板外存储器 离线存储器 5. 高速缓存 6. 多处理器和多核 多处 ...

  9. 《操作系统——精髓与设计原理(第八版)》复习题抄录

    手敲一遍,便于记忆:记录下来,便于复习. 第一部分 背景知识 第1章 计算机系统概述 1.1 列出并简要定义计算机的4个主要组成部分. 答: 处理器(Processor):控制计算机的操作,执行数据处 ...

最新文章

  1. 【PHP 每日函数】第 03 周期
  2. 关于c++深拷贝与浅拷贝
  3. 重磅 | 品牌零售行业数据驱动业务指南,全新上线!
  4. OSPF中DR和BDR作用简述
  5. 面试官系统精讲Java源码及大厂真题 - 37 ThreadPoolExecutor 源码解析
  6. CVPR2013一些论文集合供下载(visual tracking相关)
  7. 2021第一场教师招聘考试3.28开始!一个月备考来得及吗?
  8. The authors of these two monitoring tools
  9. JavaScript设计模式与开发实践---读书笔记(6) 代理模式
  10. python安装rarfile模块_python模块整理7-zipfile模块
  11. python调用vb文件_vb能配合python写程序么?
  12. 使用DIDatepicker
  13. 第四季-专题16-触摸屏驱动程序设计
  14. java舆情分析_基于Java实现网络舆情分析系统的研究与实现
  15. Visio从安装到使用完整版
  16. 信号发生器的基本知识
  17. linux操作系统课程设计总结,计算机操作系统(课程设计)报告.docx
  18. SNF快速开发平台--多组织+多平台+多系统处理方案
  19. 【LWP,进程,线程】Linux
  20. Your build settings specify a provisioning profile with the UUID, no provisioni(没多大用)

热门文章

  1. 数字信号处理基础----傅里叶级数
  2. 阿里技术三板斧:关于技术规划、管理、架构的思考
  3. 二氟尼柳或将明显减缓多神经病的恶化
  4. excel的相对引用和绝对引用
  5. Jmeter-token获取方法
  6. Java通过反射获取类的属性值
  7. requests爬取猫眼电影403错误解决方法
  8. list和tuple共同点和区别
  9. 张小龙:微信小程序就是一个「吃货」
  10. CC2541硬件I2C驱动SD3078填坑指南