💡整理不易,先赞后看,养成习惯💡 $PMYD})8}2}HZ(T)21L2]N3.png

1.1 操作系统的概念

操作系统的定义

计算机系统组成

image.png
操作系统简写为**OS**。从图中可以看出,操作系统是属于系统程序的一种。操作系统的地位可以理解为系统硬件之上的第一层软件,为其他软件提供单向支撑作用。

没安装操作系统的计算机称为裸机裸机不可以执行任何软件应用。

操作系统的定义

  1. 计算机系统中的一个大型的系统软件
  2. 它用来管理和控制计算机系统中的全部软、硬件资源
  3. 操作系统用于合理地组织计算机的工作流程
  4. 操作系统为用户应用程序的运行提供一个友好的界面和良好的工作环境。

    在前面的计算机组成原理中我们知道,计算机实际是通过指令来完成相关操作的,这里的第四点就是让用户可以通过可视化的界面执行计算机的先关指令,从而完成相应的操作。

操作系统的目的

为什么需要操作系统

从前面的定义中可以知道,操作系统可以更好的管理资源,方便用户使用计算机。

操作系统的目的

基于其设计的初衷,操作系统需要达成的目的如下:

  1. 方便性:提供良好的、一致的用户接口。无需了解许多有关硬件和系统软件的细节。
  2. 有效性:合理地组织计算机系统的工作流程,管理和分配各种硬件和软件资源,提高计算机系统资源利用率和系统吞吐量。
  3. 可扩充性:指OS应采用层次化、模块化结构,给计算机系统的功能的扩展提供开放式的支撑平台。
  4. 开放性:指系统遵循世界标准规范,特别是遵循开放系统互联0SI国际标准。

    操作系统的作用

    作为用户接口的作用

    这一个作用服务于方便性,操作系统提供接口,可以使得用户可以通过这些接口调用底层的硬件资源.
    image.png
    调用资源的方式主要有如下几种:
  • 命令方式
  • 系统调用方式
  • 图形窗口方式

    作为资源管理者的作用

    在计算机中,资源通常分为两类:硬件资源软件资源
    再将其细分如下:
    image.png
    操作系统的作用就是对这些资源进行统一的调度

    对计算机资源进行抽象

    在计算机中实际操作的都是物理资源,也就是硬件层面资源的调度。一台计算机如果完全没有软件,那么就只剩下硬件资源接口,这就需要使用者对于复杂的硬件资源有很深入的了解才可以使用计算机。操作系统则是对这些硬件资源接口进行抽象,简化成容易理解的内容,供用户进行使用。

  • 裸机上添加:处理机管理(针对CPU)、存储管理(针对内存和外存)、设备管理 、文件管理

  • 把覆盖了软件的机器称为**扩充机****虚拟机器**
  • 合理组织工作流程:作业管理、进程管理

用户没有安装操作系统前
image.png
用户安装操作系统后
image.png

推动操作系统发展的动力

  • 不断提高计算机资源利用率
  • 方便用户
  • 器件的不断更新换代
  • 计算机体系结构的不断发展
  • 不断提出的新的应用需求

1.2 操作系统的发展过程

无操作系统的计算机系统(不要求掌握)

人工操作阶段

这个阶段都是通过手工操作计算机,用机器语言编写程序,操作繁琐、易出错,效率低,CPU等待人工操作、利用率低。
image.png
如上图所示,人工操作阶段就是把程序和数据“编写”在纸带上,再通过输入机输入计算机中运行。
为了解决上述问题出现了如下措施:

  1. 专门的操作员/批量处理
  2. 脱机I/O
  3. 通道技术、中断技术、缓冲技术

    脱机I/O

    脱机I/O相比较与人工操作就是简化了人工操作纸带的步骤,把纸带统一放到**磁盘**上,再把传送纸带这个步骤交给专门的**外围机**进行处理,可以较大的提高计算机的工作效率。
    image.png
    优点如下:

  4. 减少了CPU的空闲时间

  5. 提高了I/O速度

    💡批处理系统

    单道批处理系统

    我们把需要完成的一整个操作叫做作业,比如计算机让打印机打印就可以称之为一个作业。在前面两种方法里面,每一个作业结束之后需要人工的对下一个作业进行切换,很浪费时间,所以在批处理系统中,添加了一个监督程序

    监督程序:是一个常驻内存的小的核心代码,用于实现各作业之间的自动转接,提高了系统效率。

单道批处理:

  • 利用磁带把若干作用分类编成作业执行序列
  • 每批作业由一个专门的监督程序自动依次处理
  • 可使用汇编语言开发

    汇编语言相比机器语言更贴近人的自然语言,更容易学习和编写。

其流程如下:
image.png

多道批处理系统

上面说的几种方式都有一个弊端,就是一次只能执行一个作业,为了进一步提高CPU资源的利用率,出现了多道批处理。
在这个系统中,用户可以把多个程序先存放在外存上,然后排成一个队列,操作系统会通过一定的作业调度算法从这个“后备队列”中一次性选择若干个作业,调入CPU中进行执行。

注意:这里不是多个作业同时在CPU中同时执行!而是一起调入CPU中共享CPU。

其特点如下:

  • 主存中存放多道程序
  • 宏观上并行
  • 微观上串行

优点:

  • 资源利用率高:内存中的多道程序可以共享资源,使得资源充分利用
  • 系统吞吐量大:CPU及其它资源保持忙碌,切换较少,系统开销小,使得系统在单位时间内所完成的总工作量较大

缺点

  • 平均周转时间长:由于作业需要排队,依次处理,周转时间较长
  • 无交互能力:用户一旦将作业提交给系统,将不能与自己的作业交互,修改和调试程序不方便

    单道和多道的对比

    单道
    image.png
    多道
    image.png
    放大多道处理的图,其中红线部分是程序实际进行操作,黑线部分是CPU对于这四个程序的处理。

    黑线在时间轴是没有重合的,所以微观上从CPU的角度出发是串行 红线有重合,所以宏观上从整体四个程序出发是并行的。

分时系统

什么是分时系统

前面的系统中,有一个很明显的特点就是一个主机只能服务一个用户终端。分时系统的出现就解决了这个问题。分时系统和核心是分时技术。

分时技术:把处理机的时间划分成很短的时间片,按时间片轮流地把处理机分配给各联机用户使用。

举个例子,一个CPU如果要服务10个用户终端,那么就可以把1s分成10个时间片,一个时间片就是0.1s,那么在1s的前0.1s用于服务用户终端1,在1s0.1 - 0.2s用于服务用户终端2,以此类推。实际上这个时间片是极短的,用户基本察觉不到这种时间片的转换,从而达到一种伪并行的效果,也就是一个CPU在“同时”服务10个用户终端。

💡分时系统的特点

  1. 多路性:指一台计算机与若干台终端相连,各终端用户可以同时操作,共同使用同一系统的资源。
  2. 独占性:由于分时操作系统采用时间片轮转的办法使一台计算机同时为多个终端用户服务,因而每个终端好像自己独占整个计算机系统。
  3. 及时性:用户的请求能在较短的时间内得到及时响应。
  4. 交互性:分时操作系统支持联机操作方式。用户可以通过终端,采用人机会话的方式直接控制程序运行,同程序进行会话。

    需要实现的关键问题

    前面说道在分时系统中一个CPU不止服务一个用户终端,所以需要解决的问题主要有两个:

  5. 如何保证每个用户终端在其时间片内完成相关的作业

    利用多路卡,根据输入速度等因素同时接收多个终端的数据并暂存在缓冲区

  6. 如何让用户端能及时接收到作业相关信息

    包括控制作业运行、修改作业等,保证各用户的作业都可以被及时响应

实时系统

什么是实时系统

实时是指计算机系统要能够对及时响应外部事件的请求,并以足够快的速度完成对事件的处理。
通常应用于对可靠性、安全性要求比较严格的场合。要求:响应时间短,在一定范围之内;系统可靠性高。
主要应用:

  • 工业控制系统:生产过程控制,火炮的自动控制系统、飞机的自动驾驶系统以及导弹的制导系统等。
  • 信息查询系统:如飞机订票系统, 期货、股票交易系统、情报检索系统等。
  • 多媒体系统:为保证视听感受多媒体系统也必须是实时系统
  • 嵌入式系统:嵌入式系统需对接收到的信息给予实时控制和处理

    实时系统必须具备:即时响应 + 高可靠性

实时系统和分时系统的比较

![75[~0CWJ9_LXD(J63%%RA2.png


1.4 操作系统的基本特性

💡操作系统的四大特点(必须记住):并发、共享、虚拟、异步

💡并发

并发和并行

并发指的是多个程序分时进行。与之相近的一个概念叫做并行

  • 并发:两个或多个事件在同一时间间隔发生
  • 并行:两个或多个事件在同一时刻发生

    这里的并发就类似于前面讲到的分时系统的原理。

引入进程

假设有这样一个应用程序,这个应用程序需要两个子程序:计算程序和I/O程序(也就是输入输出计算的数和计算的结果)。
模拟用户运算操作:

  1. 用户输入需要计算的数(这里用到了I/O程序
  2. 计算机再运行运算程序运算出结果
  3. 最后再输出计算的结果(这里又用到了I/O程序

很明显上述过程中,在单个用户子程序之间只能串行运行,那如果是多个用户需要同时使用这个应用程序呢?假设用户A和用户B在使用这个应用程序。
如果此时没有引入进程,用户A调用I/O程序输入需要被运算的数,之后就会调用运算程序进行运算。在此时由于整个程序只能串行运行,所以在用户A调用运算程序的时候,用户B不可以调用I/O程序输入他需要运算的数。
但逻辑上这两个运算程序是可以同时进行的,这样用户B无需等待用户A运算完成,以此提高应用程序的运算效率。所以此时出现了**进程**。每一个子程序建立一个对应的进程即可达到并发的效果。

💡所谓进程,就是在系统中能独立运行并作为资源分配的基本单位。

注意:进程和进程之间是并发执行的 进程主要有一组机器指令、数据和堆栈组成。 一个程序可以有多个进程,一个进程只能有一个程序

💡共享

什么是共享

💡系统中资源可供内存中多个并发执行的进程共同使用。

前文提到,给一个应用程序的两个子程序分别建立进程,这两个进程独立运行,但都依托于同一个应用程序,所以两个进程所用到的资源大部分是共享的。

  • 操作系统与多个用户的程序共同使用计算机系统中的资源
  • 资源共享是以程序的并发为条件的,若系统不允许程序并发执行,自然不存在资源共享问题
  • 系统需对资源共享实施有效的管理,否则必将影响程序的并发执行,甚至根本无法并发执行。

    互斥共享方式

    💡互斥共享指的是在一段时间内只允许一个进程(线程)访问一个资源

线程的概念后面一章会提到,这里了解一下,线程是更细粒度的进程。

采用互斥共享方式的资源例如打印机、磁带机。
对于采用互斥共享方式的资源,一般的访问资源方式为:

  • 进程向资源提出请求
  • 如果此时该资源空闲,系统便可将之分配给该进程A使用
  • 此后若再有其他进程也要访问该资源时,只要A未用完,则必须等待

    把一段时间内只允许一个进程访问的资源成为临界资源独占资源

同时共享方式

💡同时共享指的是在一段时间内允许多个进程(线程)”同时“访问一个资源

这里所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问。

💡虚拟

💡虚拟是通过某种技术把一个物理实体变为若干个逻辑上的对应物。

在早期,如果一对用户需要通信,那就需要一条物理信道进行信息的传输,然后由于不可能对任何一对用户都建立这样一条信道,于是出现了虚拟技术用户把一条**物理信道虚拟成为多条逻辑信道。逻辑信道通过对于物理信道的复用(可以理解为并发使用)**使得多对用户并发通信。

时分复用技术

  • 处理机虚拟—每个用户(进程)的“虚处理机”
  • 设备虚拟—一台物理设备可以虚拟为多台逻辑设备
  • 若n是某一物理设备所对应的虚拟的设备数,则虚拟设备的速度必然等于或低于物理设备的1/n

    空分复用技术

  • 存储器虚拟—小内存运行大进程

  • 每台虚拟设备平均占用的空间必然也等于或低于物理设备所拥有空间的1/N

下图为两种技术的对比:
第一章:操作系统引论 - 图12

异步

💡异步:也称不确定性,指各进程之间存在直接或间接地联系,其执行顺序和执行时间的不确定

在单处理机环境下,进程是并发执行的,也就是说每一时刻只能有一个进程在执行,其他进程在这个时刻只能等待。所以对于每一个进程,进程的执行是“时走时停”的。
每个程序在何时执行,多个程序间的执行顺序以及完成每道程序所需的时间都是不确定和不可预知的,此即进程的异步性。


1.5 操作系统的主要功能

本小节并不重要,记住一下管理的内容即可。 记住操作系统的主要功能就是4管理 + 1接口

💡管理处理机

中央处理机CPU是计算机系统中的核心资源。用户程序进入内存后,只有获得CPU,才能真正得以运行。
为了提高CPU的利用率,系统必须采用多道程序设计技术,使内存中同时有几个用户作业程序存在。

进程控制

进程控制包括:

  • 进程的创建(分配相关资源给进程)
  • 进程的运行
  • 进程的撤销(为了回收进程中的资源)

一般进程的控制由进程原语完成。

进程原语就是一个要么全部执行,要不完全不执行的操作,不存在执行一半撤销的操作。

进程同步

进程同步是为了让多个进程可以协调运行,而协调运行的关键在于对共享资源的访问
常见的协调方式有两种:

  • 进程互斥方式

进程与进程之间互斥访问共享资源。最常见的做法就是加锁(后续会介绍)

  • 进程同步方式

在多个进程互相合作共同完成任务的时候,由同步机构吧他们的执行次序加以协调。最常见的做法是采用信号量机制(后续会介绍)。

进程通信

进程通信主要实现的是进程之间的信息交换。
回到前面所讲的一个用户计算的应用程序上面,有两个进程,分别是I/O的进程和运算的进程,只有运算的进程知道了I/O进程的信息才可以进行运算,这就是进程间的通信。

调度

所谓调度就是指定在某一时刻应该调用谁。
调度分为作业调度进程调度

  • 作业调度:从后备队列挑选合适的作业为其分配必要资源,调入内存建立进程,并进入就绪队列。
  • 进程调度:从就是队列宣传进程,分配CPU,使之运行

    存储器管理

    管理内容

  • 内存分配

  • 内存保护
  • 地址映射
  • 内存扩充

    主要任务

  • 记住内存各部分的使用情况,哪些已经分配,哪些为待分配

  • 指定内存的分配策略,实施内存的具体分配和回收
  • 保证内存中各独立作业程序的安全,互不侵扰
  • 解决“作业程序比内存大时,也能正确运行”,的存储扩充问题。

    设备管理

    管理内容

  • 缓冲管理

  • 设备分配
  • 设备处理

    主要任务

  • 记住各类设备的使用状态,按各自不同的性能特点进行分配和回收

  • 为各类设备提供相应的设备驱动程序,启动程序、初始化程序以及控制程序等,保证输入/输出操作的顺利完成。
  • 利用中断、通道技术,尽可能使CPU与外部设备、外部设备与外部设备间并行工作,以提高整个系统的工作效率。
  • 根据不同的设备特点,采用优化策略,使对具体设备的使用更趋合理和有效。

    文件管理

    管理内容

  • 文件存储空间管理

  • 目录管理
  • 文件的读写管理和保护

    主要任务

  • 维持一个目录表,里面登记的每一个文件的名称和有关信息

  • 随时记住外存上文件存储空间的使用情况,哪些已经分配,哪些为待分配
  • 指定文件存储空间的分配策略,实施具体的分配和回收
  • 确保存放在外存上文件的安全、保密和共享
  • 提供一系列文件使用命令,以便用户能对文件进行存取、检索和更新等操作。

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

  • 用户接口:作业一级的接口,提供一组控制操作命令(作业控制语言)供用户去组织和控制自己作业的运行,分为联机用户接口与脱机用户接口。

  • 图形接口:命令接口的图形化。
  • 程序接口:程序一级接口,OS提供一组系统调用供用户程序和其他系统程序调用,完成数据传输,文件操作,资源分配等操作,表现为低级汇编指令和高级语言的库函数。

1.6 OS结构设计