0%

【知识总结】 第一章-操作系统概述

基本概念

概念

  • 定义:操作系统是管理分配计算机系统软硬件资源,组织调度计算机工作,为用户和其他软件提供接口环境的程序集合
  • 地位:操作系统是计算机系统最基本的系统软件

基本特征

  • 并发
    • 通过引入进程,使得计算机系统有处理和调度多个程序同时间间隔运行的能力
    • 和并行有区别,并行指的是同时刻,并发指的是同间隔
  • 共享
    • 即资源共享,包括互斥共享方式、同时访问方式
    • 互斥共享方式:对于临界资源(独占资源),一段时间只允许一个进程访问,如打印机和磁带
    • 同时访问方式:一段时间内可以分时的共享某资源,宏观上是同时访问资源,如磁盘设备
    • 并发和共享相互依存,是操作系统最基本的特征
  • 虚拟
    • 虚拟技术把实体变成用户感觉的逻辑对应物
    • 虚拟处理器技术(时分复用技术):分时的使用一个实体CPU,逻辑上变成多个虚拟CPU供每个用户使用
    • 虚拟存储器技术(空分复用技术):通过外存实现内存容量的扩展,使得用户感觉到更大的(虚拟)内存容量
    • 虚拟设备技术:把一台IO物理设备虚拟为多台逻辑IO设备,逻辑上变成多个虚拟IO设备供每个用户使用
  • 异步:指进程的执行断断续续,以不可预测速度推进,操作系统处于随机的环境中

功能

  • 资源的管理者
    • 处理机管理:进程的管理,如控制、同步、通信、死锁处理、调度等
    • 存储器管理:内存分配和回收、地址映射、内存保护、内存扩充等
    • 文件管理:操作系统的文件系统部分管理文件,比如文件存储空间的管理、目录管理、文件读写管理和保护等
    • 设备管理:完成用户IO请求、方便用户使用、提供设备利用率,具体包括缓冲管理、设备分配、设备处理、虚拟设备等
  • 软硬件的接口
    • 命令接口
      • 联机命令接口:对应联机作业控制方式,控制台输入一行命令,执行一行命令,适合分时或实时系统
      • 脱机命令接口:对应脱机作业控制方式,把一批命令写出说明书一起给系统,由命令解释程序执行,适合批处理系统
    • 程序接口
      • 由系统调用(广义指令)组成
      • 编程人员通过系统调用请求操作系统提供服务
  • 扩充机器
    • 又叫虚拟机
    • 把裸机改造成功能更强的机器

发展历程

  • 手工操作阶段
    • 人工装入程序、运行、输出,无操作系统
    • 用户独占全机器,资源利用率低
    • CPU等待手工操作,CPU利用不充分
  • 批处理阶段
    • 解决人机矛盾、CPU和IO设备速度不匹配矛盾
    • 脱机技术,解决独占设备的问题
    • 开始出现操作系统,采用多道程序设计技术形成多道批处理操作系统(需要管理资源)
    • 单道批处理系统
      • 无需人工,成批按顺序对作业处理
      • 内存只有一道作业,资源利用率受到限制
    • 多道批处理系统
      • 内存存放多道独立的程序
      • 宏观并行,微观串行
      • 资源利用率高、系统吞吐量大
      • 不能人机交互
  • 分时操作系统
    • 分时技术指按时间片轮流把处理器分配给各联机作业使用
    • 多个用户宏观上同时独立的和系统交互,系统响应及时
    • 特点:同时性、独立性、交互性、及时性
  • 实时操作系统
    • 可以在比时间片更短的时间内,完成紧急任务
    • 硬实时操作系统:要求紧急任务绝对完成,如飞行器的飞行控制系统
    • 软实时操作系统:偶尔可以没完成,不会有永久性破坏。如飞机订票系统、银行管理系统
    • 特点:及时性、可靠性
  • 网络操作系统:实现各计算机的资源管理、资源共享和通信,集中控制
  • 分布式操作系统
    • 分布式计算机系统
      • 通信方式交换信息
      • 各计算机地位对称
      • 资源全局共享
      • 一个工作可以分布在几台计算机上协同完成(和网络操作系统的区别)
    • 管理分布式计算机系统的是分布式操作系统,在网络操作系统之上,分布式控制
  • 个人计算机操作系统
    • 比如Windows、Linux、Macintosh
    • 最广泛的操作系统

程序运行环境

CPU运行模式

  • 原语:操作系统最底层的不可分割的原子操作,操作时间短、调用频繁
  • 特权指令
    • 只有操作系统才能执行的指令
    • 包括系统调用指令、时钟操作指令、中断操作指令、原语指令
  • 内核模式:运行内核程序(管理程序),执行特权指令
  • 用户模式:运行用户程序,执行非特权指令

中断和异常的处理

  • 详见计算机组成原理第五章的异常和中断机制

系统调用

  • 指用户请求操作系统的服务,由操作系统代为执行资源有关的操作(必然用到特权指令)
  • 系统调用会导致用户态进入内核态,需要在用户态执行访管指令(不是特权指令)
  • 系统调用分为
    • 设备管理类
    • 文件管理类
    • 进程控制类
    • 进程通信类
    • 内存管理类

程序的链接和装入

  • 链接:编译后的一组目标模块和库函数,经过链接器,链接一起形式装入模块
  • 装入:装入程序把装入模块送入内存运行
  • 链接方式
    • 静态链接:程序运行之前链接
    • 装入时动态链接:程序装入内存时链接
    • 运行时动态链接:程序运行时用到某模块再链接某模块
  • 装入方式
    • 绝对装入
      • 含义:按装入模块的地址,装入程序和数据至内存
      • 特点:只适合单道程序环境
    • 可重定位装入(静态重定位)
      • 含义:装入模块的相对地址在装入时一次性变换为绝对地址
    • 动态运行时装入(动态重定位)
      • 含义:装入模块的相对地址在程序真正执行时变换为绝对地址
      • 特点:程序可以在存储区中不连续、装入部分代码即可运行、运行期间动态申请分配空间、用户地址空间比存储空间大

进程的内存映像

  • 代码段:可读、可多个进程共享、大小指定不变
  • 数据段:全局变量和静态变量、大小指定不变
  • 进程控制块PCB:存放在系统区,控制和管理进程
  • 堆:存放动态变量、大小动态变化
  • 栈:存放局部变量、实现函数调用、大小动态变化
  • 下图是一个进程的内存映像举例
    • 操作系统内核区存放内核代码、PCB等
    • 共享库存放例如printf等库函数
    • .data是已初始化全局变量、静态变量
    • .bss是未初始化和所有初始化为0的全局变量和静态变量
    • .init是程序初始化函数
    • .text是用户程序代码
    • .rodata是只读数据

地址空间

  • 进程有独立的(虚拟)地址空间
  • 进程运行时看到的都是虚拟地址
  • 操作系统通过内存管理单元MMU把虚拟地址转化为物理地址

操作系统结构

分层

  • 最底层(层0):硬件
  • 最高层(层n):用户接口
  • 单向依赖:每层只能调用相邻底层的功能
  • 优点
    • 调试实现方便:从低层开始调试验证,逐层向上
    • 扩充和维护方便:增、改一个层次,只要不改接口,不影响其他层次
  • 缺点
    • 不灵活:层之间关系固定
    • 效率差:执行一个功能要引入各个层之间的通信开销

模块化

  • 模块-接口设计法
    • 操作系统看作大模块
    • 每个模块可以划分为多个子模块,需要规定子模块功能和模块间通信接口
    • 划分模块需要考虑独立性
      • 模块内要独立性低,即内聚性高
      • 模块间要独立性高,即耦合度低
  • 优点
    • 提供设计的正确性、可理解性、可维护性
    • 增强操作系统可适应性
    • 加速开发
  • 缺点
    • 各模块之间的关系不全是单向依赖,调试顺序难确定
    • 接口实际需求难以规定

宏内核

  • 系统主要功能模块都放到内核态。又叫大内核、单内核
  • 优点:各模块共享信息,性能好
  • 缺点:结构逐渐复杂,内核容易崩溃
  • 目前主流的操作系统都是宏内核架构

微内核

  • 系统最基本功能模块(与CPU、IO硬件有关)放到微内核;大部分的其余模块(进程管理、存储管理、文件管理等服务器)放到用户态(服务器以进程形式实现)
  • 优点
    • 设计简单:内核中功能少
    • 拓展灵活:拓展时基本无需修改内核代码
    • 安全可靠:一个模块崩溃不导致内核崩溃
    • 可移植性好
    • 分布式计算:用户和服务器间、服务器间采用通信采用消息传递机制,适合分布式系统和网络系统
  • 缺点:性能差,需要频繁在内核态和用户态间切换
  • 可以把一些频繁使用的模块放回内核,是提高性能和简化内核的折中
  • 在实时、工业、航空、军事领域流行,因为对可靠性有要求

外核

  • 外核可以指一种操作系统结构设计,也可以指多道程序
  • 多道程序是内核态唯一运行的程序,任务是给各个用户的虚拟机分配资源
  • 一个用户一个虚拟机,每个虚拟机可以运行各自的操作系统,但只能使用分配给自己的资源
  • 优点:减少映像层;把多道程序(内核态)和用户操作系统代码(用户态)分离

操作系统引导

  • 概念铺垫
    • 引导:找到后续程序的位置,以执行
    • 操作系统引导:计算机启动时,找到操作系统程序的硬盘位置,并加载到内存的过程
    • BOOT
      • 含义:计算机开机时的入口引导程序,存放在ROM中
      • 功能:进行硬件初始化,包括引导BIOS
    • BIOS
      • 含义:又叫基本输入输出系统,是固化在内存的程序,可以直接从其第一条指令开始执行
      • 功能:硬件自检和引导MBR
    • MBR
      • 含义:全称主引导记录,又叫主引导扇区(Boot Sector),是引导硬盘第一个扇区
      • 功能:找到活动分区,即操作系统在硬盘的位置。MBR内有引导程序可引导PBR
    • 引导硬盘:即系统盘、启动盘,是存有操作系统的硬盘,第一个扇区是主引导扇区
    • 活动分区:即计算机的启动分区,是硬盘中含有操作系统的分区
    • PBR
      • 含义:全称是分区引导记录,是活动分区第一个扇区
      • 功能:寻找并激活启动管理器(活动分区中负责引导操作系统的程序)
    • 启动管理器:引导操作系统的程序
  • 关键步骤
    • 开机激活CPU来读取BOOT
    • BOOT把指令寄存器设置为BIOS的第一条指令
    • BIOS进行硬件自检,检查计算机硬件是否正常
    • BIOS加载MBR入内存
      • 根据硬盘启动顺序Boot Sequnece把第一个硬盘的第一个扇区加载入内存
      • 根据特定标识判断,若这是非引导硬盘,则继续把下一个硬盘的第一个扇区加载入内存
      • 循环上一步直至发现引导硬盘,如果找不到则会死机
    • MBR的引导程序根据MBR的硬盘分区表的特定标识找到活动分区
    • MBR的引导程序把活动分区的PBR读入内存
    • PBR把启动管理器加载入内存
    • 启动管理器把操作系统加载入内存,然后操作系统进行初始化

虚拟机

  • 虚拟机通过虚拟机管理程序,为高层提供多台可以运行各自操作系统的虚拟机
  • 第一类虚拟机
    • 虚拟机管理程序建立在裸机上一层,运行在内核态
    • 虚拟机管理程序的上一层是有各自操作系统的各个虚拟机
    • 这些操作系统运行在虚拟内核态(工作在用户态但自认为工作在内核态)
  • 第二类虚拟机
    • 虚拟机管理程序建立在宿主操作系统上,运行在用户态
    • 虚拟机管理程序的上一层是有各自客户操作系统的各个虚拟机
    • 客户操作系统安装在虚拟磁盘,对应宿主操作系统的一个文件
    • 常见的第二类虚拟机管理程序有VMware Workstation