计算机系统概述
1.基本概念
1.1概念
操作系统是计算机系统中最基本的系统软件。
概念
- 操作系统:指的是控制和管理整个计算机系统的硬件与软件资源。合理的组织,调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。
• 是一种系统软件
• 为上层用户,应用程序提供简单易用的服务
• 负责管理协调硬件,软件等计算机资源的工作
功能和目标
- 基本功能:控制和管理系统内的各种资源
- 顺序性是单道程序的基本特征
- 中断是操作系统必须要提供的功能
- 资源的管理者
• 处理机管理
• 处理机的分配和运行都以进程(线程)为基本单位===对进程的管理【进程控制,进程同步,进程通信,死锁处理,处理机调度】
• 存储器管理
• 存储器管理:包括内存分配和回收,地址映射,内存保护与共享和内存扩充等
• 文件管理
• 设备管理
- 向上层提供服务
• 给普通用户
• GUI用户图形界面
• 命令接口
• 联机命令接口
• 命令接口
• 联机命令接口(交互式命令接口)
• 【shell是命令解析器,是命令接口】
• 命令解释器属于命令接口
• 脱机命令接口(批处理命令接口)
• 脱机命令接口
• 给软件/程序员
• 程序接口
• 程序接口:由一组系统调用(广义指令)组成 图形接口
系统调用:为应用程序使用内核功能所提供的接口【用户程序间接】是操作系统提供给用户的,只能通过用户间接使用系统调用:提供给编程人员的接口】目的:请求系统服务
• ==系统调用
• 系统调用是操作系统为应用程序使用内核功能所实现的接口
• 由操作系统提供给用户,只能由用户程序间接调用
• 库函数与系统调用的区别
库函数是语言或应用程序的一部分,可以运行在用户空间中。系统调用是操作系统的一部分,是内核为用户提供的程序接口,运行在内核空间中,而且许多库函数都会使用系统调用来实现功能。未使用系统调用的库函数,其执行效率通常要比系统调用的高。因为使用系统调用时,需要进行上下文的切换和状态的转换(由用户态转向核心态)
- 对硬件的扩展
• 扩充机器
1.2特征:
引入了多道程序设计后,程序的执行失去了封闭性和顺序性。
1.并发:多个事件在同一时间间隔内发生 并行:同一时刻发生
操作系统中引入进程的目的是使程序能够并发执行
2.共享:
- 互斥资源共享:规定的时间内只允许一个进程访问该资源【对摄像头设备的共享使用】
- 同时访问方式:一段时间内多个进程同时访问【对硬件资源的共享】
3.虚拟
- 是指把一个物理上的实体变成若干逻辑上的对应物
- 空分复用技术:虚拟存储技术
4.异步
是操作系统最基本的特征 两者之间互为存在的条件 没有并行和共享,就谈不上虚拟和异步
- ①资源共享是以程序并发为条件的,若系统不允许程序并发执行,自然不存在资源共享
- ②若系统不能对资源共享实施有效的管理,则必影响到程序的并发执行
2.发展历程
1.手工操作阶段【没有操作系统】
缺:人机速度矛盾
2.批处理阶段【操作系统开始出现】
单道批处理系统 【引入了脱机输入/输出,并由监督程序负责控制作业的出入】
- 自动性,顺序性,单道性
- 优:缓解人机速度矛盾
- 缺:资源利用率低
为进一步提高资源的利用率和系统的吞吐量
多道批处理系统【操作系统开始出现】
- 允许多个程序同时进入内存并允许他们在CPU中交替的运行,共享系统资源==相互制约,相互协同
- 特点:多道,宏观上并行,微观上串行,无人机交互,失去了密封性,顺序性
- 优点:资源利用率高,多道程序共享计算机资源,系统吞吐量大,cpu与其他资源保持忙碌状态
- 缺点:用户响应时间较长,不提供人机交互,用户既不能了解自己程序的运行状态,也不能控制计算机
及时响应用户请求
3.分时操作系统:
将处理器的运行时间分成很短的时间片,按时间片轮流把处理器分配给各联机作业使用
特征:同时性,交互性,独立性,及时性
优:提供人机交互功能
缺点:不能及时优先处理紧急任务
实时操作系统
特征:实时性和可靠性,能优先处理紧急任务
硬实时系统:若某个动作必须在绝对的规定时间内完成----飞行器的飞行自动控制系统【永久性损害】
软实时系统:可以偶尔违反时间----飞机订票系统,银行管理系统
网络操作系统
网络中各种资源的共享及各台计算机之间的通信
分布式计算机系统
并行性和分布性
个人计算机操作系统
批处理/分时/实时各有什么特点
实时操作系统
- 能对控制对象及时做出反应,可靠性强,响应及时,但资源利用率低
分时操作系统
- 可以让多个用户同时使用计算机,人机交互性较强,具有每个用户独立使用计算机的独占性,系统响应及时
批处理操作系统
- 用户脱机使用计算机,作业是成批处理,系统内多道程序并发执行,交互性差
1.3运行环境
处理器运行模式
两类程序
- 内核模式:执行特权指令
特权指令:不允许用户直接使用的指令【I/O指令,置中断指令,存取用于内存保护的寄存器,送程序状态字到程序状态字寄存器中的指令】非特权指令:允许用户直接使用的指令常见的特权指令:有关对I/O设备操作的指令有关访问程序状态的指令存取特殊寄存器的指令其他指令
- 用户自编模式【应用程序】
- 内核程序
- 应用程序
两类指令
- 特权指令
- 非特权指令
cpu的运行模式
- 核心态【管态,内核态】
- 用户态【目态】:只能执行非特权指令
- 区分执行态的主要目的是:保护系统程序。
- 如何变态
• 用户态-->内核态
• 由中断引起,硬件自动完成
• trap访管指令:产生一个中断事件从用户态变成核心态 发生在中断产生的时候
• 内核态-->用户态
• 一条修改PSW的特权指令
• 发生在中断返回用户程序时候
广义指令
- 但是广义指令存在于核心态,所以
• 广义指令的执行一定在核心态
- 广义指令的调用可能发生在用户态
- 调用广义指令的那条指令不一定是特权指令
内核
- 时钟管理:利用时钟中断实现计时功能【计时+进程的切换】
• 需要硬件计数器保持时钟的运行
- 中断机制:提高多道程序运行环境中cpu的利用率
• 内核是操作系统最重要最核心的部分
• 由很多内核程序组成操作系统内核
- 原语:①处于操作系统的最底层,接近硬件②程序具有原子性③运行时间较短,调用频繁
- 系统控制的数据结构以及处理
• 进程管理
• 存储器管理
• 设备管理
中断和异常
概念
- 外中断【中断】来自cpu执行指令外部的事件,常用于信息输入/输出
• 可屏蔽中断INTR
• 不可屏蔽中断NMI
• 时钟中断
• 表示一个固定的时间片到了,处理机处理计时,启动定时运行的任务
• I/O中断请求
• 表示输入输出已经完成
- 内中断【异常/例外】来自于cpu执行指令内部的事件
• 故障:指令执行引起。eg非法操作码,缺页故障,除数为0,运算溢出
• 自陷:事先安排好的,在用户态调用操作系统内核程序,eg条件陷阱指令
• 终止:cpu无法继续执行的硬件故障,eg控制器出错,存储器检验错
• 软件中断
• 硬件中断
- eg,程序的非法操作码,地址越界,运算溢出,虚存系统的缺页以及专门的trap指令引起的事件
中断的作用
- 让操作系统内核强行夺回CPU 的控制权
- 使CPU从用户态变成内核态
中断程序本身可能是用户程序,但是进入中断的处理程序一定是OS程序
处理过程
- 检查中断信号
• 内中断【异常】:cpu执行指令时候会检查是否有异常
• 外中断:每个指令周期末尾,CPU会检查是否有外中断信号需要处理
- 找到相应中断处理程序
• “中断向量表”
- 中断处理的前三个步骤由硬件直接实现(隐操作)
系统调用
什么是系统调用
- 操作系统对应用程序/程序员提供的接口
与库函数区别
- 有的库函数是对系统调用的进一步封装
- 有的库函数没有使用系统调用
为什么系统调用必须
- word和WPS同时打印
功能分类
- 设备管理:完成设备的请求或者释放,以及设备启动等功能
- 文件管理:完成文件的读写创建以及删除
- 进程控制:完成进程的创建,撤销,阻塞和唤醒
- 进程通信
- 内存管理
- 凡是和共享资源有关的操作,会直接影响到其他进程的操作,就一定需要操作系统的接入,就需要系统调用实现
过程
- 传递系统调用参数
- 执行trap指令(用户态)
- 执行相应的内请求核程序处理系统调用(核心态)
- 返回应用程序
进程调度由调度算法决定cpu使用权,由操作系统实现,不需要硬件的支持
系统调用发生在用户态,被调用的程序在核心态执行
为什么说直到出现中断和通道技术之后,多道程序概念才变得有用?
多道程序并发执行:是指有的程序正在cpu上执行,而另一些程序程序正在I/O设备进行传输。即,通过cpu操作和外设传输在时间上的重叠必须有中断和通道技术的支持
原因:
- 通道是一种控制一台或者多台外部设备的硬件机构,它一旦被启动就独立于cpu运行,从而做到了输出/输入操作和cpu并行工作
- 在硬件上引入了中断
- 两者结合就可以实现cpu和I/O设备并行工作,cpu启动通道传输数据后便去执行其他程序的计算工作,通道进行输入和输出操作;通道工作结束后,再通过中断机构向cpu发出中断请求,cpu则暂停正在执行的操作,对出现的中断进行处理,处理完再继续原来的工作。
1.4体系结构
大内核
将操作系统的主要功能模块都作为系统内核,运行在内核态
优点:高性能,内核之间的功能可以相互调用
缺点:内核代码庞大,结构混乱,难以维护
- 大内核中某个功能模块出错,就可能导致整个操作系统崩溃
典型的大内核/微内核/单内核 的操作系统
- Linux,UNIX
微内核
只把最基本的功能【中断,原语,进程通信】保留在内核
- 进程管理,设备管理,文件管理...以用户进程的形式运行在用户态
优点:内核功能少,结构清晰,方便维护,某个功能出错,不会整个系统崩溃
缺点:需要频繁的在核心态和用户态直接切换,只能通过内核的”信息传递“来间接通信,性能低
典型的微内核操作系统
- Windows NT
分层结构
内核多分层,每层可单向调用更低一层提供的接口
优点
- 便于调式和验证。自底向上逐层调式验证
- 容易扩展和容易维护,各层直接调用接口清晰固定
缺点
- 仅仅可调用相邻层级,难以合理定义各层边界
- 效率低,不可以跨层调用,系统调用执行时间长
模块化
特性
- 将内核划分多个模块,各个模块之间相互写作
- 内核=主模块+可加载内核模块
- 主模块
• 只负责核心功能,eg进程调度,内存管理
- 可加载模块
• 可以动态加载新模块到内核,而无需重新编译整个内核
优点
- 模块间逻辑清晰易于维护,确定模块间的接口后可多模块同时加载
- 支持动态加载新的内核模块-【安装设备驱动程序,安装新的文件系统模块到内核】增强OS适用性
- 任何模块可以直接调用其他模块,无需采用消息传递,效率高
缺点
- 模块间的接口定义未必合理,实用
- 模块间相互依赖,更难调式和验证
外核
内核负责进程调度,进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全
优点
- 外核可以直接给用户程序分配”不虚拟,不抽象“的硬件资源,使用户程序可以更加灵活的使用硬件资源
- 减少了虚拟硬件资源的”映射层“,提升效率
缺点
- 降低了系统的一致性
- 把系统变得更加复杂
1.5虚拟管理程序VMM
1.6疑难