explorer

万丈高楼平地起,勿在浮沙筑高台

0%

[What]计算机操作系统_操作系统引论

回顾一下操作系统基本知识,温故而知新。

操作系统:是一组控制和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用的程序的集合。

操作系统的目标和作用

操作系统的目标

有效性和方便性是设计操作系统时最重要的两个目标。

有效性

操作系统的有效性包含如下两方面的含义:

  • 提高系统资源利用率
    • CPU和I/O设备能得到有效利用,避免CPU死等
    • 内存和外存合理分配,避免浪费
  • 提高系统的吞吐量
    • 合理组织计算机的工作流程,改善资源利用率,加速程序运行,缩短程序的运行周期。

方便性

用户使用操作系统提供的接口,避免了直接与硬件打交道,提高了用户体验。

可扩充性

OS必须具有很好的可扩充性,以适应计算机硬件、体系结构以及应用发展的要求。

开放性

为了使不同的设备能够通过网络加以集成化,并能正确、有效的协同工作,实现应用的可移植性和互操作性,要求操作系统必须提供统一的开放环境。

开放性是指系统能遵循世界标准规范,特别是遵循开放系统互联(OSI)国际标准,遵循国际标准所开发的硬件和软件,均能彼此兼容,方便互联。

操作系统的作用

OS作为用户与计算机硬件系统之间的接口

OS处于用户与计算机硬件系统之间,用户通过OS来使用计算机系统。

用户可以通过以下3种方式使用计算机:

  • 命令方式
    • 通过命令行输入命令取得操作系统服务
  • 系统调用方式
    • 用户在自己的应用程序中调用操作系统提供的调用接口获取服务
  • 图形、窗口方式

OS作为计算机系统资源的管理者

OS主要对以下4类资源进行有效管理:

  • 处理器:分配和控制处理器,充分利用
  • 存储器:内存的分配与回收
  • I/O设备:分配与操纵
  • 文件:存取、共享、保护

OS实现了对计算机资源的抽象

OS是铺设在计算机硬件上的多层系统软件,不仅增强了系统的功能,还隐藏了对硬件操作的细节, 由它们实现了对计算机硬件操作的多个层次的抽象。

对一个硬件在底层进行抽象后,在高层还可以再次对该资源进行抽象,成为更高层的抽象模型。 随着抽象层次的提高,抽象接口所提供的功能就越来越强,用户使用就越来越方便。

推动操作系统发展的主要动力

不断提高计算机资源的利用率

早期计算机系统特别昂贵,必须千方百计地提供计算机系统中各种资源的利用率。

方便用户

器件的不断更新换代

硬件设备的快速发展,促进了操作系统的发展。

计算机体系结构的不断发展

操作系统的发展过程

无操作系统的计算机系统

人工操作方式

  • 从第一台计算机诞生(1945年)到20世纪50年代中期的计算机,属于第一代计算机。
    • 由程序员以穿孔的纸带装入纸带输入机然后才启动设备的编程方式
      • 用户独占全机,仅仅支持单用户
      • CPU等待人工操作,其利用率低

脱机输入/输出方式

为了解决人机矛盾以及CPU和I/O设备之间的速度不匹配矛盾,20世纪50年代末出现了脱机输入/输出(Off-Line I/O)技术。

  • 外围机 事先 将装有用户程序和数据的纸带装入输入机并输入到磁带上,当CPU需要这些程序和数据时,再从磁带上高速调入内存
    • 减少了CPU的空闲时间
    • 提高了 I/O 速度

由于程序和数据的输入和输出都是在外围机控制下完成的,在脱离主机的情况下进行的,所以称为脱机输入/输出方式。

单道批处理系统

20世纪50年代中期发明了晶体管,替代了第一代的真空管,从而出现了第二代计算机。

系统中配置了监督程序(Monitor),它控制磁带上的程序能够连续的运行。

由于系统对作业的处理都是成批地进行的,且在内存中始终只保持一道作业,故称为 单道批处理系统(Simple Batch Processing System)

具有以下特征:

  • 自动型
  • 顺序性
  • 单道性

多道批处理

20世纪60年代中期,人们开始利用小规模集成电路来制作计算机,生产处第三代计算机。

  • IBM生产的第一台小规模集成电路计算机–360机

此时引入了多道程序设计技术,形成了 多道批处理系统(Multiprogrammed Batch Processing System)

  • 作业并排成一个队列,由调度器选择几个队列根据情况切换运行。
    • 提高CPU利用率,在一个程序进行I/O操作时,切换到其他程序来占用CPU
    • 提高内存和I/O设备的利用率。
    • 增加系统吞吐量
系统吞吐量是指:系统在单位时间内所完成的总工作量

多道批处理的优缺点:

  • 资源利用率高
  • 系统吞吐量大
  • 平均周转时间长
    • 从作业进入系统开始,直至完成并退出系统为止所经历的时间。
  • 无交互能力
    • 用户一旦提交作业,直至作业完成,用户都不能与自己作业进行交互,这对修改和调试程序极不方便。

多道批处理系统需要解决的问题:

  • 处理机管理问题
    • 合理分配CPU资源
  • 内存管理问题
    • 内存合理利用以及内存访问权限
  • I/O设备管理问题
    • 提高设备利用率
  • 文件管理问题
    • 方便用户的同时又能保证数据安全
  • 作业管理问题
    • 任务管理

分时系统

分时系统(Time Sharing System) 与多道批处理系统之间有着截然不同的性能差别,它能很好的将一台计算机提供给 多个用户同时使用

用户需求具体表现:

  • 人机交互
    • 用户能很方便的调试程序
  • 共享主机
    • 多个用户共享一台计算机
  • 便于用户上机

第一台真正分时操作系统(CTSS,Compatible Time Sharing System)是由麻省理工学院开发的。

分时系统实现中的关键问题:

  • 及时接收
  • 及时处理

分时系统的特征:

  • 多路性
  • 独立性:每个用户各占一个终端,互不干扰。
  • 及时性:相比多道批处理而言,能在很短时间获得响应
  • 交互性

实时系统

实时系统(Real Time System) 是指系统能及时响应外部事件请求,在 规定的时间内完成对该事件的处理 ,并控制所有实时任务协调一致地运行。

应用需求:

  • 实时控制:实时采集数据并控制设备
  • 实时处理信息:实时处理及检索信息

实时任务的分类:

  • 按任务执行时是否呈现周期性来划分
    • 周期性实时任务
      • 周期性的调用
    • 非周期性实时任务
      • 在某种条件下触发,具有开始截止时间和完成截止时间两部分要求
  • 根据对截止时间的要求来划分
    • 硬实时任务(Hard real-time Task)
      • 系统必须满足任务对截止时间要求
    • 软实时任务(Soft real-time Task)
      • 偶尔错过了任务的截止时间,对系统影响不大

实时系统与分时系统特征的比较:

  • 多路性
    • 实时系统多路性主要表现在系统周期性地对多路现场信息采集对设备控制
    • 分时系统多路性则与用户情况有关,时多时少
  • 独立性
    • 实时系统对用户、信息和控制请求都是彼此独立
    • 分时系统对用户独立
  • 及时性
    • 实时信息系统与分时类似,都是以人所能接收的等待时间来确定
    • 实时控制系统以控制对象所要求的开始截止时间或完成截止时间来确定
  • 交互性
    • 实时信息处理系统与人交互仅限于访问特定专用服用
    • 分时系统向终端用户提供多种服务
  • 可靠性
    • 分时系统相比实时系统可靠性低

微机操作系统的发展

配置在微型机上的操作系统称为微机操作系统。

单用户单任务操作系统

单用户单任务操作系统含义:只允许一个用户上机且只运行用户程序作为一个任务运行

  • CP/M
    • 主要用于8位微机
  • MS-DOS
    • 主要用于16位和32位机

单用户多任务操作系统

含义:只允许一个用户上机,但允许用户将程序分为多个任务并发运行。

  • Windows 1.0~xp

多用户多任务操作系统

含义:允许多个用户通过 各自终端同时 使用同一台机器,每个用户程序可以分为多个任务并发执行。

  • UNIX like
  • Windows 7~

操作系统的基本特性

并发性是操作系统最重要的特征,其它三个特征都是以并发特征为前提的。

并发性

并行性与并发性

  • 并行性:多个任务同时进行
  • 并发性:微观上,多个任务交替进行,宏观上看起来就像是在同时进行一样

引入进程

引入进程的目的,就是为了使多个程序能并发执行,并且让各个进程看起来像是独占整个系统。

引入线程

一个进程中包含多个线程,线程共享进程资源。

进程作为分配资源的基本单位,线程作为独立运行和独立调度的基本单位。

共享性

所谓共享(Sharing),是指系统中的资源可供内存中多个并发执行的进程(线程)共同使用,把这种资源共同使用的方式称为资源共享,或资源复用。

资源共享方式有以下两种:

  • 互斥共享方式:一段时间内只允许一个进程(线程)访问临界区。
  • 同时访问方式:允许一段时间内由多个进程(线程)同时访问。

虚拟技术

操作系统中的 虚拟(Virtual) 是指通过某种技术把一个物理实体变为若干个逻辑上的对应物。物理实体是实际存在的,后者仅仅是用户感觉上的东西。

用于实现虚拟的技术称为虚拟技术,操作系统利用了两种方式实现虚拟技术:

时分复用

  • 虚拟处理机技术
    • 利用并发技术,多个进程宏观地同时运行,每个进程都感觉独占了CPU。
  • 虚拟设备技术
    • 将一台物理I/O设备虚拟为多态逻辑上的I/O设备,并允许每个用户占用一台逻辑上的I/O设备。

空分复用

  • 虚拟磁盘技术
    • 将一台硬件虚拟为多台虚拟磁盘,虚拟磁盘总量等于物理硬盘存储值
  • 虚拟内存技术
    • 多个进程不用关心实际内存大小而运行,物理内存通过分段映射的技术来虚拟大内存。

异步性

进程是以人们不可预知的速度向前推进的,就是程序的 异步性(Asynchronism)

操作系统的主要功能

操作系统的主要任务:为多道程序运行提供良好的运行环境,以保证多道程序能有条不紊且高效地运行, 并能最大程度地提高系统中各种资源利用率和方便用户的使用。

为了完成这个任务,操作系统具有以下主要功能:

处理器管理

进程控制

  • 为程序创建进程
  • 撤销已结束的进程
  • 控制进程在运行过程中的状态转换

进程同步

  • 对临界资源的访问需要互斥
  • 对共同完成的任务需要同步

进程通信

调度

  • 作业调度
  • 进程调度

存储器管理

内存分配

内存分配的主要任务是:

  • 为每道程序分配内存空间,提高存储器的利用率,以减少不可用的内存空间
  • 允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要

在内存分配时,具有静态和动态两种方式:

  • 静态方式在载入程序时已经确定,在运行期间不允许再申请新的内存空间或在内存中移动
  • 动态方式中,每个程序要求的基本内存空间在装入时是确定的,在运行期间允许再申请内存和在内存中移动

为了实现内存分配,内存分配机制应该具有这样的结构和功能:

  1. 内存分配数据结构:记录内存空间的使用情况
  2. 内存分配功能:按照一定的算法为用户分配空间
  3. 内存回收:释放不再需要的内存

内存保护

内存保护的主要任务:

  • 确保每道用户程序都只在自己的内存空间内运行,互不干扰。
  • 不允许用户访问操作系统的的程序和数据,也不允许用户程序转移到非共享的其他用户程序中去执行。

地址映射

由硬件将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址。

内存扩充

借助虚拟存储技术,从逻辑上去扩充内存容量,使用户所感觉到的内存容量比实际内存容量大得多,以便让更多的用户程序并发运行。

具有内存扩充机制,可以实现以下功能:

  1. 请求调入:分段将用户程序和数据调入内存运行
  2. 置换功能:当内存空间不足时,将内存中一部分暂时不用的程序和数据调至硬盘,将需要运行的部分调入内存。

设备管理功能

设备管理的主要任务:

  • 完成用户进程提出的 I/O 请求
  • 为用户进程分配所需的 I/O 设备
  • 提高 CPU 和 I/O 设备的利用率
  • 提高 I/O 速度
  • 方便用户使用 I/O 设备

为了完成这些任务,设备管理应具有:

缓冲管理

为了缓解 CPU 与 I/O 设备速度不匹配的矛盾,系统需要为设备设置缓冲区,以提高CPU的利用率,进而提高系统吞吐量。

缓冲区机制有单缓冲机制、能实现双向同时传输数据的双缓冲机制,能供多个设备同时使用的公用缓冲池机制。

设备分配

设备分配的基本任务:

  • 根据用户进程的 I/O 请求、系统的现有资源情况以及按照某种设备的分配策略,为之分配其所需的设备。
    • 如果在 I/O 设备和CPU之间还存在着设备控制器和I/O通道时,还需要为分配出去的设备分配相应的控制器和通道。

设备处理

也就是设备驱动,基本任务:

  • 实现CPU和设备控制器之间的通信
    • CPU可以控制设备并能够接收控制器发来的中断请求并响应

文件管理功能

文件管理的主要任务:

  • 对用户文件和系统文件进行管理,以方便用户使用,并保证文件的安全性。

完成此任务所需要的功能:

文件存储空间的管理

主要任务:为每个文件分配必要的外存空间,提高外存的利用率,并能有助于提高文件系统的存、取速度。

目录管理

主要任务:

  • 为每个文件建立其目录项,并对众多的目录项加以有效的组织,以实现方便的按名存取。
  • 文件共享
  • 提供快速的目录查询手段,以提高对文件的检索速度

文件的读写管理和保护

  • 文件读写管理
  • 文件保护
    • 防止未经核准的用户存取文件
    • 防止冒名顶替存取文件
    • 防止以不正确的方式使用文件

操作系统与用户之间的接口

用户接口

用户接口分为以下几类

  • 联机用户接口:用户通过命令行接口输入命令控制系统
  • 脱机用户接口:用户给系统提供批处理程序让系统自动完成
  • 图形用户接口:

程序结构

OS结构设计

OS如此大规模的开发,需要软件工程学的支撑。

软件质量可用这样几个指标来评价:

  • 功能性
  • 有效性
  • 可靠性
  • 易用性
  • 可维护性
  • 易移植性

为产生号的软件质量,先后产生了多种操作系统的开发方法,如模块化方法、结构化方法和面向对象的方法等, 不同的开发方法所开发出的操作系统将具有不同的操作系统结构。

传统操作系统结构

无结构的操作系统

此时的程序设计技巧,只是如何编制紧凑的程序,以便于有效地利用内存。

  • 随着系统扩大,代码就会异常复杂,导致错误过多、维护困难

模块化结构 OS

将OS按其功能精心地划分为若干个具有一定独立性和大小的模块,各个模块规定好接口,而模块内部又会细分为子模块。

关键问题是模块的划分和规定号模块之间的接口:

  • 如果模块太小,会引起模块之间的联系过多
  • 如果模块太大,会增加模块内部的复杂性

衡量模块的独立性有以下两个标准:

  1. 内聚性:指模块内部联系的紧密程序,内聚性越高越好
  2. 耦合度:模块相互联系程度,耦合度越低越好

模块接口法的优点:

  • 提高OS设计的正确性、可理解性和可维护性
  • 增强OS的适应性
  • 加速OS的开发过程

模块接口法的缺点:

  • 各个模块间的接口规定很难满足在模块完成后对接口的实际需求
  • 在模块化设计时,无法寻找到一个可靠的决定顺序,造成各种决定的无序性,这将使程序员很难做到设计中的每一步决定都是建立在可靠的基础上
    • 因此模块-接口法又被称为“无序模块法”

分层式结构OS

为了将模块-接口法中"决定顺序"的无序性变为有序性,引入了有序分层法。

自底向上的分层设计的基本原则是:每一步设计都是建立在可靠的基础上。为此规定,每一层仅能使用其底层所提供的功能和服务,这样可使系统的调试和验证都变得更容易。

分层设计的优点:

  1. 易于保证系统的正确性:自下而上的设计方式,使所有的设计决定都是有序的,建立在可靠基础上的。
  2. 易扩充和易维护性:增加、修改、替换一个层,只要层之间接口不变就不会影响其他层。

分层设计的缺点:

  • 由于层次结构是分层的单向依赖,因此必须在相邻层之间建立层次间的通信机制,通常需要穿越多个层次导致系统效率降低。

客户/服务器模式

客户/服务器模式(Client/Server)模式简称为 C/S 模式。

客户/服务器模式的组成

主要由以下3个部分组成:

  • 客户机:客户程序在其上运行处理一些本地业务,也可以发消息到服务器请求某些服务
  • 服务器:为客户机提供多种服务。
  • 网络系统:链接客户机和服务器

客户/服务器之间的交互

依次完整的交互过程可分为以下四步:

  1. 客户发送请求消息
  2. 服务器接收并处理消息
  3. 服务器回送消息
  4. 客户接收消息

客户/服务器模式的优点

  1. 数据分布处理和存储
  2. 便于集中管理
  3. 灵活性和可扩充性
  4. 易于改编应用软件

缺点:

  1. 通信过程所造成的实时性问题
  2. 服务器故障将导致整个网络瘫痪
  3. 服务器重负荷下工作时,会因为延迟而增长响应时间

面向对象的程序设计

在实际编程中,使用面向对象的方式来处理对象具有如下好处:

  1. 通过 “重用” 提高产品质量和生产率
  2. 是系统具有更好的易修改性和易扩展性
  3. 更易于保证系统的“正确性”和“可靠性”

微内核OS结构

微内核的基本概念

  • 足够小的内核:微内核只实现操作系统中最基本的部分。
    • 实现与硬件紧密相关的处理
    • 实现一些较基本的功能
    • 负责客户和服务器之间的通信
  • 基于客户/服务器模式:将操作系统的绝大部分功能都放在微内核外面的一组服务器(进程)中实现。
    • 这些功能运行在用户态,通过消息机制通信
  • 应用“机制与策略分离”原理
    • 机制是指实现某一功能的具体执行机构,策略则是在机制的基础上,借助与某些参数和算法来实现该功能的优化,或达到不同的功能目标
      • 机制放在微内核中,策略放在用户态
  • 采用面向对象技术

微内核的基本功能

  • 进程(线程)管理:调度功能放入微内核,优先级相关问题放入用户态
  • 低级存储器管理:逻辑地址到物理地址的转换依赖于机器,所以放在微内核。而虚拟存储管理策略放在用户态。
  • 中断和陷入处理:捕获所发生的中断和陷入时间,并进行相应的前期处理。

微内核的优点

  • 提高提醒可扩展性
  • 增强系统的可靠性
  • 可移植性
  • 提供对分布式系统的支持
  • 融入了面向对象的技术

微内核操作系统存在的问题

  • 服务请求至少需要进行4次上下文切换,导致效率低下
Last Updated 2021-01-26 二 12:12.
Render by hexo-renderer-org with Emacs 26.3 (Org mode 9.4)