基本概念
概念
- 定义:操作系统是管理分配计算机系统软硬件资源,组织调度计算机工作,为用户和其他软件提供接口环境的程序集合
- 地位:操作系统是计算机系统最基本的系统软件
基本特征
- 并发
- 通过引入进程,使得计算机系统有处理和调度多个程序同时间间隔运行的能力
- 和并行有区别,并行指的是同时刻,并发指的是同间隔
- 共享
- 即资源共享,包括互斥共享方式、同时访问方式
- 互斥共享方式:对于临界资源(独占资源),一段时间只允许一个进程访问,如打印机和磁带
- 同时访问方式:一段时间内可以分时的共享某资源,宏观上是同时访问资源,如磁盘设备
- 并发和共享相互依存,是操作系统最基本的特征
- 虚拟
- 虚拟技术把实体变成用户感觉的逻辑对应物
- 虚拟处理器技术(时分复用技术):分时的使用一个实体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