操作系统-Part1——计算机系统概述

[TOC]

操作系统的概念、功能

image-20211101105704370

定义

  • 操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件
    • 操作系统是系统资源的管理者
    • 向上层提供方便易用的服务
    • 是最接近硬件的一层软件

功能和目标

  • 作为系统资源的管理者
    • 功能:
      • 处理机管理
      • 存储器管理
      • 文件管理
      • 设备管理
    • 目标:
      • 安全、高效
  • 向上层提供方便易用的服务
    • 封装:操作系统把丑陋的硬件功能封装成简单易用的服务,使用户能更方便地使用计算机
    • 实例:
      • 直接给用户使用
        • GUI(Graphical User Interface):图形化用户接口
        • 命令接口
          • 联机命令接口(交互式命令接口)
          • 脱机命令接口(批处理命令接口)
      • 给软件/程序员使用
        • 程序接口:系统调用(广义指令)是应用程序请求操作系统服务的唯一方式
    • 其中,命令接口与程序接口,统称为用户接口(狭义的用户接口不包括 GUI)
  • 作为最接近硬件的层次
    • 目标:实现对硬件机器的拓展
      • 使单纯的硬件组合起来以获得更强的功能
    • 通常把覆盖了软件的机器成为扩充机器,又称之为虚拟机

操作系统的特征

image-20211101105417671

考点:

  • 并发和并行的区别
  • 并发和共享互为存在条件
  • 并发和共享是操作系统的两个最基本的特征(没有并发和共享,就谈不上虚拟和异步)

基本特征

  • 操作系统的特征
    • 并发
    • 共享
    • 虚拟
    • 异步
  • 其中,并发和共享是两个最基本的特征,二者互为条件(重点)。

并发

  • 并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的

    • 常考易混概念——并行:指两个或多个事件在同一时刻同时发生
  • 操作系统的并发性:指计算机系统中同时运行着多个程序,这些程序宏观上看是同时运行着的,而微观上看是交替运行的。

    • 操作系统就是伴随着“多道程序技术”而出现的,操作系统和程序并发是一起诞生的
  • 注意(重要考点):

    • 单核 CPU 同一时刻只能执行一个程序,各个程序只能并发地执行。
    • 多核 CPU 同一时刻可以同时执行多个程序,多个程序可以并行地执行。
  • 只要有超过可并行数量的程序需要同时运行,那么并发性就是必不可少的。所以,并发性是操作系统一个最基本的特性

共享

  • 共享:即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
  • 两种资源共享方式
    • 互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源
    • 同时共享方式:系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问
  • 所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问的(分时共享)
    • 微观上交替,例:多个进程交替访问硬盘
    • 也有可能是宏观上也为同时,例:多个进程同时使用扬声器

并发和共享的关系:

  • 两个进程正在并发执行(并发性)
    • 如果失去并发性,则系统中只有一个程序正在运行,则共享性失去存在的意义
  • 需要共享地访问硬盘资源(共享性)
    • 如果失去共享性,则 QQ 和微信不能同时访问硬盘资源,就无法实现同时发送文件,也就无法并发

虚拟

  • 虚拟:指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
  • 虚拟技术:
    • 空分复用技术
      • 如虚拟存储器技术:运行程序的大小远超实际内存
    • 时分复用技术:微观上处理机在各个微小的时间段内交替着为各个进程服务
      • 如虚拟处理器技术:实际只有单核,但是用户看来有多核 CPU 在工作

如果失去了并发性,就失去了实现虚拟性的意义了。因此,没有并发性,就谈不上虚拟性

异步

  • 进程的异步性:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行只能以不可预知的速度向前推进。
  • 并发运行的程序会争抢使用系统资源,而系统中的资源有限,因此进程的执行不是一贯到底的,而是走走停停的,向前推进的速度是不可预知的

如果失去了并发性,即系统只能串行地运行各个程序,那么每个程序的执行会一贯到底。只有系统拥有并发性,才有可能导致异步性

操作系统的发展与分类

image-20211101105849759

发展阶段

  • 手工操作阶段

    • 主要缺点:用户独占全机、人机速度矛盾导致资源利用率极低
  • 批处理阶段——单道批处理系统

    • 引入脱机输入/输出技术(用外围机+磁带完成),并由监督程序负责控制作业的输入、输出
      • 通过外围机把程序(纸带)提前存到磁带里,主机则读写磁带信息
      • 监督程序是操作系统的雏形
    • 主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。
    • 主要缺点:
      • 内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。
      • CPU 有大量的时间是在空闲等待 I/O 完成。资源利用率依然很低。
  • 批处理阶段——多道批处理系统

    • 每次往内存中读入多道程序
    • 操作系统正式诞生,用于支持多道程序并发运行
    • 主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU 和其他资源更能保持“忙碌”状态,系统吞吐量增大。
    • 主要缺点:用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行)
  • 分时操作系统

    • 计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
    • 主要优点:用户请求可以被即时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
    • 主要缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。
  • 实时操作系统

    • 主要优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。
    • 在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。实时操作系统的主要特点是及时性和可靠性
    • 分类:
      • 硬实时系统:必须在绝对严格的时间内完成处理(如:导弹控制系统、自动驾驶系统)
      • 软实时系统:能接受偶尔违反时间规定(如:12306火车订票系统)
  • 其他几种操作系统

    • 网络操作系统:是伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源的共享和各台计算机之间的通信。(如:Windows NT 就是一种典型的网络操作系统,网站服务器就可以使用)
    • 分布式操作系统:主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成这个任务
    • 个人计算机操作系统:如 Windows XP、MacOS,方便个人使用。

操作系统的运行机制(考点)

image-20211101132816322

内核程序 v.s. 应用程序

  • 普通程序员写的程序是“应用程序”
  • 操作系统程序员写的是“内核程序”
    • 由多个内核程序组成了“操作系统内核”,或简称“内核(Kernel)”
    • 内核是操作系统最重要最核心的部分,也是最接近硬件的部分
    • 其实,一个操作系统只要有内核就够了(eg:Docker -> 仅需 Linux 内核)
    • 操作系统的功能未必都在内核中,如图形化用户界面 GUI

特权指令 v.s. 非特权指令

  • 应用程序:只能使用“非特权指令”,如:加法、减法指令等

  • 内核程序:作为 “管理者”有时会让CPU执行一些“特权指令”,如:内存清零指令。

  • 在 CPU 设计和生产的时候就划分了特权指令和非特权指令,因此 CPU 执行一条指令前就能判断出其类型

内核态 v.s. 用户态

  • CPU 有两种状态,“内核态”和“用户态
    • 处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令
    • 处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令
    • 内核态=核心态=管态;用户态=目态
    • 这两种状态由 PSW 中的一个二进制位表示
  • 内核态、用户态的切换
    • 内核态 -> 用户态:执行一条特权指令——修改 PSW 的标志位为“用户态”,这个动作意味着操作系统将主动让出 CPU 使用权
    • 用户态 -> 内核态:由“中断”引发,由硬件完成变态过程,触发中断信号意味着操作系统将强行夺回 CPU 的使用权
      • 除非法使用特权指令外,还有很多事件需要让操作系统夺回 CPU 使用权。它们的共性是,但凡需要操作系统介入的地方,都会触发中断信号

中断和异常(考点)

image-20211101140101072

中断的作用

  • 中断是让操作系统内核夺回 CPU 使用权的唯一途径
  • 没有中断机制,就不可能实现操作系统不可能实现程序并发

中断的类型

  • 内中断(异常)
    • 与当前执行的指令有关,中断信号来源于 CPU 内部
    • 特权指令:试图在用户态下执行特权指令
    • 非法指令:如,除零运算
    • 陷入指令:应用程序主动将控制权交给操作系统,常用于请求操作系统的服务(系统调用),该指令将引发一个内部中断信号
      • 陷入指令 = trap 指令 = 访管指令
  • 外中断
    • 与当前执行的指令无关,中断信号来源于 CPU 外部
    • 每一条指令执行结束时,CPU 都会例行检查是否有外中断信号
    • 时钟中断:由时钟部件发来的中断信号。用于实现多道程序并发运行
    • I/O 中断:由输入/输出设备发来的中断信号
  • 中断的分类
    • image-20211101135845317
    • 大多数的教材、试卷中,“中断”特指狭义的中断,即外中断。而内中断一般称为“异常”

中断机制的基本原理

  • 不同的中断信号,需要用不同的中断处理程序来处理。
    • 当 CPU 检测到中断信号后,会根据中断信号的类型去查询中断向量表,以此来找到相应的中断处理程序在内存中的存放位置。
  • 中断处理程序一定是内核程序,需要运行在“内核态”

系统调用(考点)

image-20211101142240743

基本概念

  • 操作系统作向上提供的服务中,主要包括命令接口程序接口。其中,程序接口由一组系统调用组成
  • 系统调用,是操作系统提供给应用程序(程序员)使用的接口,应用程序可以通过系统调用来请求获得操作系统内核的服务

系统调用 v.s. 库函数

  • image-20211101140936662
  • 不涉及系统调用的库函数:如“取绝对值”
  • 涉及系统调用的库函数:如“创建一个新文件”

系统调用的必需性

  • 针对问题:对于互斥共享的资源,各个程序不能同时使用
  • 解决方案:由操作系统内核对共享资源进行统一的管理,并向上提供系统调用。
    • 用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统内核发出请求。内核会对各个请求进行协调处理。

什么功能需要系统调用

  • image-20211101141628507
  • 凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。
  • 这样可以保证系统的稳定性和安全性,防止用户进行非法操作。

系统调用的过程

  • image-20211101142044385
  • 过程:
    • 传递系统调用参数
    • 执行陷入指令(用户态)
    • 执行相应的内请求核程序处理系统调用(核心态)
    • 返回应用程序
  • 注意:
    • 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,使 CPU 进入核心态
    • 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行

操作系统的体系结构

image-20211101143353619

操作系统内核

  • image-20211101133719590
  • 内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。
  • 实现操作系统内核功能的那些程序就是内核程序
  • image-20211101134031062

大内核与微内核

  • 通过对内核功能的划分(是否包含对系统资源的管理),可以分为大内核/单内核/宏内核微内核

    • 典型的 大内核/宏内核/单内核 操作系统: Linux、UNIX
    • 典型的 微内核 操作系统: Windows NT
  • 注意:

    • 操作系统内核功能运行在内核态

    • 操作系统非内核功能运行在用户态

    • 变态的过程是有成本的,要消耗不少时间,频繁地变态会降低系统性能

  • image-20211101143313918

习题课

1.1.4

  1. 软件分类

    • 按软件的用户群体分类
      • 通用软件:普通大众都会使用的(如Office、迅雷)
      • 专用软件:某些领域的专业人士使用的(如AutoCAD Logic Pro)
    • 按照软件在计算机内的角色分类
      • 系统软件:操作系统、数据库管理程序(DBMS)、语言处理程序(编译、汇编)、服务性程序(装入程序)、标准库程序(printf)
      • 应用软件:微信、Office
  2. 操作系统既管理软件,也管理硬件(可以从任务管理器看出)

    • 软件 vs 应用程序:软件 = 程序 + 其他相关文件
    • eg:一个游戏软件包括程序(.exe)和其它图片(.bmp等)、音效(.wav等)等附件,那么这个程序(.exe)称作应用程序,而它与其他文件(图片、音效等)在一起合称软件
    • 操作系统管理计算机资源
      • 软件、硬件、文件都属于计算机资源
      • 若只给出软件、硬件,则依然不如计算机资源更全面,不正确
  3. 源代码属于文件。但是操作系统关心的是文件的结构与组织,而不是文件内容。

  4. 界面 = 接口 = Interface

    • 操作系统提供给用户程序使用的接口:系统调用
    • 操作系统提供给用户直接使用的接口:命令接口、GUl
  5. 发展历程:

    • 1950 年代早期第一个操作系统诞生(批处理操作系统)
      • 定义:操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。
      • 管理和控制计算机资源,更加基本
      • 其他三个选项可以说是应用程序提供的功能
    • 后来才支持用户交互
    • 1970 年代早期,第一个 GUI 诞生
    • 1983 年互联网诞生
  6. 并发和共享互为存在条件;并发和共享是操作系统的两个最基本的特征

  7. 并发:宏观上同时,微观上交替发生。并行:微观上同时发生。

    • 并发不没有严格规定要在同一时间间隔内发生,彼此发生间隔不同也是可以的
    • 但是其他选项更不对
  8. 单处理机 = 单核 CPU。不可能并发执行多个程序

  9. image-20211123205819442
  10. 系统调用是操作系统为应用程序使用内核功能所提供的的接口。

  11. 请求系统服务:更为概括的描述

    中止系统服务:如 Linux 中的 exit 系统调用请求中止进程

    申请系统资源:如 open 系统调用,可请求打开一个文件或 IO 设备

    释放系统资源:如 close 系统调用,可请求关闭一个文件或 IO 设备

  12. 系统调用,文件 I/O 需要在内核态运行。

  13. Shell:即 Unix、Linux 的命令接口

    命令解释器:解释用户在“小黑框”输入的命令,如:cd、ls 等

    广义指令:即系统调用

    缓存管理:对用户不可见,由操作系统负责

  14. 制约性:程序的执行因为共享资源而相互制约

    间断性:一个程序的执行是走走停停的

    顺序性:各个程序按顺序依次执行

    • 顺序性是单道程序设计的基本特征
    • 自从引入多道程序设计之后,程序的执行就失去了封闭性和顺序性

    共享性:多道程序共享资源

  15. OS 管理资源:后序章节会有体会

    OS 管理用户程序执行:第二章,处理机管理

    OS 使系统资源提高效率:各种调度算法

    用来编程的程序:eclipse、IntelliJ IDEA、VS …

  16. image-20211123212445393

1.2.7

  1. 手工操作时期,纸带机是要在主机的控制之下才能读写数据,因此是用户独占全机

    • 因此,脱机技术主要解决的独占设备问题

    多道程序技术,则是让多个程序共享主机的资源,因此相比单道程序设计提高了单机资源利用率

    • 因此,多道程序技术主要提高单机资源利用率

    复习:

    1. 脱机技术――脱离主机的控制,提前将作业数据输入/输出到磁带,用于缓和I/O设备与主机之间的速度矛盾。
    2. 假脱机技术――将独占设备改造为共享设备。
    3. 虚拟技术――如虚拟内存技术,可增加并发度。
    4. 交换技术――增加并发度。将在第三章学习
  2. 手工 -> 批处理 -> 分时 -> 实时 -> PC

  3. 同 1.1.4 的 14 题

  4. 解析:

    • 手工阶段不存在操作系统,直到批处理的多道程序设计引入中断技术,操作系统才诞生。

    • 分时操作系统开始才支持人机交互。

    • 军工领域对实时的要求很高,才产生了实时操作系统

    • PC 操作系统更多在强调应用场景,而不是分时/实时。

    • 如果需要与时俱进,则再加上分布式操作系统

  5. image-20211127125218962
  6. 单道程序系统:内存中最多只有一道作业,作业之间是串行执行的。若当前作业等待 I/O,则 CPU 闲置等待。

    多道程序系统:内存中有多道作业,作业之间并发执行。若当前作业等待 I/O,则 CPU 转而处理另一道作业。

  7. 被控对象规定时间

  8. 先来先服务:早期的单道批处理系统

    时间片轮转:分时操作系统

    抢占式的优先级高者优先:实时操作系统

    高响应比优先:常用于多道程序系统中的作业调度

  9. 实时操作系统的主要特点:及时性、可靠性

    资源利用率高是实时操作系统需要避免的。

  10. 要求实时:交易、机床硬件、军工