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

发布于 2021-03-05  0 次阅读


操作系统概念

操作系统概念(定义)

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

  1. 操作系统是系统资源的管理者。
  2. 操作系统向上层提供方便易用的服务。
  3. 操作系统是最接近硬件的一层软件。

操作系统的功能和目标

作为系统资源的管理者

OS是计算机硬件、软件资源的管理者。

  • 管理的对象:CPU、存储器、外部设备、信息(数据和软件);

  • 管理的内容:资源的当前状态(数量和使用情况)、资源的分配、回收和访问操作,相应管理策略(包括用户权限)。

向上层提供方便易用的服务

  • GUI:图形化用户接口(Graphical User Interface) 用户可以使用形象的图形界面进行操作,而不再需要记忆复杂的命令、参数。
  • 图形化用户接口元素及操作
    • 桌面、图标、鼠标指针
    • 窗口、标题栏、菜单栏、工具栏
    • 菜单:菜单条、弹出式菜单、下拉式菜单
    • 对话框
  • 图形化用户接口特点

    • 基于图形元素来表示功能,方便用户操纵和触发对应功能 ;
    • 同屏多窗口与并发进程相对应 ;
    • 支持即时交互,鼠标点击和键盘输入并举 ;
    • 操作直观,不必死记命令行参数,传递信息量大。
  • 联机命令接口特点:用户说一句, 系统跟着做一句。

  • 联机命令格式与分类

    • 联机命令格式 :<命令> [<可选项>] <参数序列>
    • 联机命令类型
      • 系统访问类(如用户登陆、注销)
      • 磁盘操作类、文件操作类、目录操作类
      • 网络通信类
      • 输入输出重定向、管道连接、过滤命令
      • 批处理方式(批处理文件/脚本文件)
  • 联机命令接口=交互式命令接口

  • 键盘终端处理程序

    • 基本功能
      • 接收用户从终端输入的字符
        • 面向字符/行方式
      • 管理字符缓冲,以暂存所接收的字符
        • 专用缓冲区、公用缓冲池方式
      • 将用户键入字符回送屏幕显示
        • 硬件/软件实现方式
    • 提供屏幕编辑(编辑键)
    • 特殊字符处理(中断/停止或恢复上卷)
  • 脱机命令接口特点:用户说一堆, 系统跟着做一堆。

​ 脱机命令接口=批处理命令接口

  • 程序接口:可以在程序中进行系统调用来使用程序接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用。
  • 系统调用:操作系统与用户程序之间的接口由操作系统提供的“扩展指令”集来定义,这些扩展指令被称为系统调用system call)。

​ 如:写C语言“Hello world”程序时,在 printf 函数的底层就使用到了操作系统提供的显式相关的“系统调用”。

​ 系统调用类似于函数调用,是应用程序请求操作系统服务的唯一方式。

作为最接近硬件的层次

需要实现对硬件机器的拓展。

没有任何软件支持的计算机成为裸机。在裸机上安装的操作系统,可以提供资源管理功能和方便用户的服务功能,将裸机改造成功能更强、使用更方便的机器。

通常把覆盖了软件的机器成为扩充机器,又称之为虚拟机。

操作系统对硬件机器的拓展:将CPU、内存、磁盘、显示器、键盘等硬件合理地组织起来,让各种硬件能够相互协调配合,实现更多更复杂的功能。

普通用户无需关心这些硬件在底层是怎么组织起来工作的,只需直接使用操作系统提供的接口即可。

操作系统硬件基础

计算机系统组成及体系结构

  • 内存系统(Memory System)
    • 主存 Main Memory
      • RAM & ROM

      • 实际地址空间 real address space

        • 物理地址空间,按字节编址 Bytes
        • RAM&ROM
        • 保留用于设备或以后它用
    • 高速缓冲 Cache Memories
      • 因内存寻址访问效率和局部性原理而引入

      • 由硬件管理,对软件不可见

  • 高速缓存(Cache Memory)

    关联存储器及置换(淘汰)算法

  • I/O系统组织方式

  • 计算机系统体系结构

用户指令集体系结构

  • 用户指令集体系结构(User ISA

    • 寄存器架构
      • 通用寄存器、特定类型寄存器(如浮点数)

      • 专用寄存器(PC、链接/栈指针/条件码/循环计数寄存器)

    • 内存架构

      • 逻辑/虚拟地址空间
        • 线性编址

          eg. 0x0000 0000 ↔ 0x8000 0000 ↔ 0xFFFF FFFF

        • 分段编址

          eg. 0#~15#分段基址 ↔ 段寄存器值

    • 用户指令——运算型

      • 内存存取指令、分支跳转指令
      • 整数算术、逻辑及移位指令
      • 浮点指令
  • 内存管理模型——实地址模型

  • 内存管理模型——平坦模型/分段模型

系统指令集体系结构及陷入机制

  • 特权级别与环结构

    • 用户模式、特权/超级/系统模式

    • 系统指令集体系结构(System ISA)

      • 系统寄存器架构
        • 系统时钟寄存器、陷入与中断寄存器
        • 陷入与中断屏蔽寄存器、页/段表指针寄存器
      • 处理器资源管理支持
        • 系统调用/返回指令、中断定时器及设置机制
      • 内存资源管理支持
        • 虚拟地址空间到物理地址空间的映射(页表&TLB)
      • I/O资源管理支持
        • I/O设备寻址与I/O指令
      • 陷入与中断

  • 陷入与中断

    • 陷入
      • 指令执行时因异常情况(如运算溢出、缺页、违规内存访问、非法操作码等)产生的控制迁移副效应
      • 陷入流程(异常→设置陷入寄存器→查看陷入屏蔽寄存器裁决→终止“陷入”指令并置处理器准确状态→保存程序计数及各寄存器值→处理器置特权模式并交操作系统控制权→操作系统保存未被硬件保存的“陷入”进程的关键状态信息,经分析转特定异常陷入处理例程,待完成返回后恢复现场和转原“陷入”进程“异常”指令处继续执行)
      • 另“系统调用”式陷入(访管指令int 21H/int 0x80)
    • 中断
      • 由相对于当前执行进程的外部事件(如I/O操作、定时)引起,与特定指令执行无关

操作系统的四个特征

并发

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

常考易混概念——并行:指两个或多个事件在同一时刻同时发生。

操作系统的并发性指计算机系统中“同时”运行着多个程序,这些程序宏观上看是同时运行着的,而微观上看是交替运行的。

操作系统就是伴随着“多道程序技术”而出现的。因此,操作系统和程序并发是一起诞生的

注意(重要考点)

  • 单核CPU 同一时刻只能执行一个程序,各个程序只能并发地执行
  • 多核CPU 同一时刻可以同时执行多个程序,多个程序可以并行地执行

共享

共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。

互斥共享方式:系统中的某些资源,虽然可以提供给 多个进程使用,但一个时间段内只允许一个进程访问该资源

同时共享方式:系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问

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

并发性指计算机系统中同时存在着多个运行着的程序。

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

虚拟

虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上 对应物(后者)是用户感受到的。

虚拟技术中的“时分复用技术”。微观上处理机在各个微小的时间段内交替着为各个进程服务。

显然,如果失去了并发性,则一个时间段内系统中只需运行一道程序,那么就失去了实现虚拟性的意义了。因此,没有并发性,就谈不上虚拟性

异步

异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。

由于并发运行的程序会争抢着使用系统资源,而系统中的资源有限,因此进程的执行不是一贯到底的,而是走走停停的,以不可预知的速度向前推进。

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

操作系统的发展与分类

操作系统发展动力及技术基础

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

  • 不断提高计算机资源利用率和系统性能的需要:计算机发展的初期,计算机系统昂贵,用作集中计算。
  • 改善和方便用户使用计算机的需要:用户上机、调试程序,方便计算时的事务处理和非专业用户(商业和办公、家庭)。
  • 适应器件不断更新换代的需要:CPU的位宽度(指令和数据)、快速外存。
  • 适应计算机体系结构不断发展变化的需要:单处理机OS->多处理机OS->网络操作系统

早期计算机人工操作方式

  • 1946 ~ 50年代中期(电子管)
  • 计算机资源昂贵、集中计算
  • 工作方式
    • 用户:同时兼有程序员/操作员双重身份
    • 输入输出:纸带或卡片
    • 编程语言:机器语言
  • 工作特点
    • 用户独占全部资源,资源利用率低
    • 计算前后,CPU因等待人工操作而空闲

史前速度矛盾及缓和途径

  • 人机矛盾
    • 人工操作方式与资源利用率之间的矛盾
    • 伴随CPU速度提高、系统规模的扩大而日趋严重
  • CPU与I/O设备间矛盾
    • CPU速度迅速提高而I/O设备速度提高缓慢
  • 缓和途径
    • 通道技术、中断技术、缓冲技术
    • 脱机输入输出技术
    • 专门的操作员及批处理技术

单道批处理系统

  • 50年代末~60年代中(晶体管)

  • 引入脱机输入/输出技术(用外围机+磁带完成),并由监督程序负责控制作业的输入、输出。

  • 系统对作业的处理成批进行,但在内存中始终只保存着一道作业

  • 批处理中的作业的组成:

    • 用户程序
    • 数据
    • 作业说明书(作业控制语言)
  • 单道批处理系统的特征
    • 自动性 :磁带上的一批作业能自动地逐个依次执行,而无需人工干预。
    • 顺序性 :磁带上的各道作业是顺序地进入内存,各道作业完成的顺序与它们进入内存的顺序完全一致。
    • 单道性 :监控程序每次仅从磁带上调入一道程序进入内存运行,仅当该程序完成或发生异常情况时,才调入其后继程序进入内存运行。
  • 主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。

  • 主要缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。CPU有大量的时间是在空闲等待I/O完成。资源利用率依然很低。

多道批处理系统

  • 60年代中~70年代中(集成电路)
  • 单道批处理系统缺陷
    • 系统资源空闲问题
  • 多道程序设计技术
    • 在当前运行的作业需作I/O处理时,CPU转而执行另一个作业。
    • 作业后备队列/作业调度算法/系统资源共享。
    • 包括CPU、内存和I/O设备在内的系统资源利用率的提高。
    • 系统吞吐量增加。
  • 多道批处理系统特征
    • 多道性
      • 内存中同时驻留多道程序,并允许并发执行。
      • 宏观上并行运行:都处于运行状态,但都未运行完;
      • 微观上串行运行:各作业交替使用CPU;
    • 无序性
      • 多个作业完成的先后次序与它们进入内存的顺序之间,并无严格的对应关系
    • 调度性
      • 作业调度
      • 进程调度
  • 主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源更能保持“忙碌”状态,系统吞吐量增大。
  • 主要缺点:用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行。eg:无法调试程序/无法在程序运行过程中输入一些参数)
  • 多道批处理系统需求分析
    • 处理机管理问题 :多道程序之间应如何分配被它们共享的处理机,使正确运行且提高处理机利用率;分配与回收。
    • 内存管理问题 :内存分配与保护
    • I/O设备管理问题 :设备共享、分配及利用率提高
    • 文件管理问题
      • 文件组织方便用户使用
      • 数据安全性及一致性保证
    • 作业管理问题 :作业调度及系统工作流程组织

分时操作系统

  • 分时操作系统:计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
  • 分时系统的概念
    • 70年代中期至今
    • 一台主机、多个终端、多用户同时以交互方式共享使用计算机硬件和软件资源。
  • 分时系统的产生
    • 人机交互:程序修改与调试、直接控制
    • 共享主机:19世纪60年代计算机十分昂贵
    • 便于用户上机:通过自己终端直接将作业传送到机器上进行处理,并能对自己的作业进行控制。
  • 分时系统的实现方法与方式
    • 作业应直接进入内存 :这与批处理系统用户作业先进入磁盘、然后再调入内存不同。
    • 时间片轮转策略 :时间片
    • 实现方式
      • 单道分时系统
      • 具有前台和后台的分时系统
      • 多道分时系统
  • 分时系统的特征

    • 多路性
      • 宏观上多个用户同时工作和共享系统资源
      • 微观上每个用户作业轮流运行一个时间片
    • 独立性 :各用户在各自终端上独立操作,互不干扰
    • 及时性 :响应时间
    • 交互性 :用户可通过终端与系统进行广泛的人机对话
  • 主要优点:用户请求可以被即时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。

  • 主要缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。

实时操作系统

  • 实时系统的引入
    • 实时控制系统
    • 实时信息处理系统
  • 实时系统的概念 :指系统能及时或即时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。
  • 实时任务的类型

    • 按任务执行是否呈现周期性来划分
    • 根据对截止时间的要求来划分
  • 主要优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。

  • 在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。实时操作系统的主要特点是及时性和可靠性

  • 实时系统与分时系统的比较

    • 多路性
    • 独立性
    • 及时性
    • 交互性
    • 系统高度可靠

分布式系统

  • 分布式操作系统:主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成这个任务

  • 分布式系统是以计算机网络为基础的,它的基本特征是处理上的分布,即功能和任务的分布。

  • 分布式操作系统的所有系统任务可在系统中任何处理机上运行,自动实现全系统范围内的任务分配并自动调度各处理机的工作负载。

网络操作系统

  • 网络操作系统:是伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信

  • 网络功能与操作系统的结合程度是网络操作系统的重要性能指标。

    • 早期的作法是通常操作系统附加网络软件,过渡到网络功能成为操作系统的有机组成部分。

    • 它们的区别在于:网络功能的强弱、使用是否方便等。

  • 网络操作系统与分布式操作系统的比较

    • 耦合程度
      • 分布式OS是紧密耦合系统:分布式OS是在各机上统一建立的"OS同质",直接管理CPU、存储器和外设;统一进行全系统的管理;
      • 网络OS通常容许异种OS互连,各机上各种服务程序需按不同网络协议"协议同质"。
    • 并行性
      • 分布式OS可以将一个进程分散在各机上并行执行"进程迁移";
      • 网络OS则各机上的进程独立。
    • 透明性:用户是否知道或指定资源在哪个机器上(如CPU、内存或外设)。
      • 分布式OS的网络资源调度对用户透明,用户不了解所占有资源的位置;
      • 网络OS中对网络资源的使用要由用户明确指定;
    • 健壮性:分布式系统要求更强的容错能力

操作系统的运行机制

两种程序

我们普通程序员写的程序就是“应用程序

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

微软、苹果有一帮人负责实现操作系统,他们写的是“内核程序

操作系统内核作为 “管理者”,有时会让CPU执行一些 “特权指令”,如:内存清零指令。这些指令影响重大, 只允许“管理者”——即操作系统内核来使用。

由很多内核程序组成了“操作系统内核”,或简称“内核(Kernel)” 内核是操作系统最重要最核心的部分,也是最接近硬件的部分

甚至可以说,一个操作系统只要有内核就够了(eg:Docker—>仅需Linux内核)

操作系统的功能未必都在内核中,如图形化用户界面 GUI。

两种状态

CPU 有两种状态,“内核态”和“用户态”。

处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令

处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令

CPU 中有一个寄存器叫 程序状态字寄存器(PSW),其中有个二进制位,1表示 “内核态”,0表示“用户态”

内核态=核心态=管态;用户态=目态。

内核态—>用户态:执行一条特权指令——修改 PSW 的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权

用户态—>内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权

除了非法使用特权指令之外,还有很多事件会触发中断信号。一个共性是,但凡需要操作系统介入的地方,都会触发中断信号

  1. 刚开机时,CPU 为“内核态”,操作系统内核程序先上CPU运行
  2. 开机完成后,用户可以启动某个应用程序
  3. 操作系统内核程序在合适的时候主动让出 CPU,让该应用程序上CPU运行(操作系统内核在让出CPU之前,会用一条特权指令把 PSW 的标志位 设置为“用户态”
  4. 应用程序运行在“用户态”
  5. 此时,一位黑客在应用程序中植入了一条特权指令,企图破坏系统…
  6. CPU发现接下来要执行的这条指令是特权指令,但是自己又处于“用户态”
  7. 这个非法事件会引发一个中断信号CPU检测到中断信号后,会立即变为“核心态”,并停止运 行当前的应用程序,转而运行处理中断信号的内核程序)
  8. “中断”使操作系统再次夺回CPU的控制权
  9. 操作系统会对引发中断的事件进行处理,处理完了再把CPU使用权交给别的应用程序

操作系统的内核

内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。

实现操作系统内核功能的那些程序就是内核程序。

操作系统的体系结构

中断和异常

中断的作用

CPU 上会运行两种程序,一种是操作系统内核程序,一种是应用程序

在合适的情况下,操作系统内核会把CPU的使用权主动让给应用程序。

“中断”是让操作系统内核夺回CPU使用权的唯一途径。

如果没有“中断”机制,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序。

内核态–>用户态:执行一条特权指令——修改PSW的标志位为“用户态”,这个动作意味着操作系统 将主动让出CPU使用权

用户态–>内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺 回CPU的使用权

中断的类型

  • 内中断:与当前执行的指令有关, 中断信号来源于CPU内部
  • 外中断:与当前执行的指令无关, 中断信号来源于CPU外部

中断的分类

  • 内中断(也称异常、例外):与当前执行的指令有关,中断信号的来自CPU内部。
    • 陷阱、陷入(trap):由陷入指令引发,是应用程序故意引发的。
    • 故障(fault):由错误条件引起的,可能被内核程序修复。内核程序修复故障后会把 CPU 使用权还给应用程序,让它继续执行下去。如:缺页故障。
    • 终止(abort):由致命错误引起,内核程序无法修复该错误,因此一般不再将 CPU 使用权还给引发终止的应用程序, 而是直接终止该应用程序。如: 整数除 0、非法使用特权指令。
  • 外中断(也称中断(狭义的中断)):与当前执行的指令无关, 中断信号的来自CPU外部。
    • 时钟中断
    • I/O 中断请求

操作系统用户接口与系统调用

什么是系统调用,有何作用?

操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。主要包括命令接 口和程序接口。其中,程序接口由一组系统调用组成。

“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用 程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务

系统调用与普通调用的区别

  • 运行在不同的系统状态
  • 软中断进入机制
  • 返回及重新调度问题
  • 嵌套调用

系统调用的类型

  • 进程控制
    • 进程的创建、结束、等待子进程结束
    • 进程属性设置与获取
    • 执行一个文件(进程映像替换)
  • 文件操纵
    • 文件的创建、打开、关闭、读/写
  • 进程通信
    • 连接打开与关闭、消息发送与接收
  • 系统信息维护
    • 时间设置与获取、文件访问/修改时间

系统调用的实现要领

  • 设置系统调用号和参数
    • 系统调用号(指定寄存器/内存单元)
    • 参数(直接[寄存器] 、间接[参数表指针])
    • UNIX(CHMK命令)/DOS(INT21软中断)
  • 系统调用命令的一般性处理
    • 将处理机状态由用户态转为系统态
    • 保护CPU现场,将PSW、PC、系统调用号、用户栈指针、通用寄存器等压入堆栈
    • 用户定义参数送至指定位置
  • 分析系统调用类型,转相应处理子程序
    • 中断和陷入向量表(入口地址、PSW )

系统调用与库函数的区别

普通应用程序 可直接进行系统调用,也可使用库函数。有的库函数涉及系统调用,有的不涉及。
编程语言 向上提供库函数。有时会将系统调用封装成库函数,以隐藏系统调用的一些细节,使程序员编程更加方便。
操作系统 向上提供系统调用,使得上层程序能请求内核的服务
裸机

不涉及系统调用的库函数:如“取绝对值”的函数。

涉及系统调用的库函数:如“创建一个新文件”的函数。

什么功能要用到系统调用?

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

系统调用的过程

传递系统调用参数 —> 执行陷入指令(用户态) —> 执行相应的内请求核程序处理系统调用(核心态) —> 返回应用程序

注意:
1. 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,使CPU进入核心态
2. 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行

操作系统的体系结构

操作系统的内核

内核是操作系统最基本、最核心的部分。

实现操作系统内核功能的那些程序就是内核程序

操作系统内核需要运行在内核态,操作系统的非内核功能运行在用户态

操作系统的体系结构

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


大变に气分がいい