操作系统
操作系统举例
操作系统的层次结构
操作系统的概念
- 是系统最基本最核心的软件,属于系统软件
- 控制和管理整个计算机的硬件和软件资源
- 合理的组织、调度计算机的工作与资源分配
- 为用户和其他软件提供方便的接口和环境
操作系统的功能和目标
计算机系统资源的管理者
处理机管理(进程管理)
存储器管理(内存)
文件管理(文件系统)
设备管理(I/O)
处理机管理(进程管理)
在多道程序环境下,处理机的分配和运行都以进程(或线程)为基本单位,因而对处理机的管理可归纳为进程的管理。并发是指在计算机内同时运行多个进程,因此进程何时创建、何时撤销、如何避免冲突、合理共享就是进程管理的最主要的任务。进程管理的主要功能包括进程控制、进程同步、进程通信、死锁通信、处理机调度等。
存储器管理
为多道程序的运行提供良好的环境,方便用户使用及提高内存的利用率,主要包括内存的分配与回收、地址映射、内存保护与共享和内存扩充等功能。
文件管理
计算机中所有的信息都是以文件的形式存在的,操作票系统中负责文件管理的部分称为文件系统,文件管理包括文件存储空间的管理、目录管理及文件读写管理和保护等。
设备管理
设备管理的主要任务是完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率,主要包括缓存管理、设备分配、设备处理和虚拟设备等功能。
以上4种管理功能都由“工人”负责,“雇主”无序关注。
用户与计算机硬件系统之间的接口
为了让用户方便、快捷、可靠的操作计算机硬件并执行自己的程序,操作系统提供了用户接口
操作系统提供的接口分为两类:
命令接口和程序接口
- 命令接口:用户可以直接使用的,利用这些操作命令来组织和控制作业的执行
- 程序接口:用户通过程序间接使用的,编程人员可以使用它们来请求操作系统服务
命令接口
用户利用这些命令来组织和控制作业的运行
联机命令接口: 又称交互式命令接口,适用于分时或实时系统的接口,由一组键盘操作命令组成。用户输入一条指令,操作系统就执行一条指令。
脱机命令接口: 又称批处理命令接口,使用于批处理系统,由一组作业控制命令组成。用户输入一堆指令,操作系统运行一堆指令。在操作系统运行这些命令时用户不可干预。
程序接口
由一组系统调用(也称广义指令)组成,用户通过在程序中使用这些系统调用请求操作系统为其提供服务,只能通过用户程序间接调用,如使用各种外部设备、申请分配和回收内存及其他各种要求
作为扩充机器(虚拟机)
没有任何软件支持的计算机称为裸机,它仅构成计算机系统的物质基础,而实际呈现在用户面前的计算机系统是经过若干层软件改造的计算机。裸机在最里层,其外面是操作系统。操作系统所提供的资源管理功能和方便用户的各种服务功能,将裸机改造成功能更强、使用更方便的机器:因此,我们通常把覆盖了软件的机器称为扩充机器或虚拟机。
操作系统特征
操作系统是一种系统软件,但与其它系统软件和应用软件有很大的不同,它有自己的特殊性,及基本特征。
并发
并发:两个或多个时间在同一时间间隔内发生,这些时间在宏观上是同时发生的,在微观上是交替发生的,操作系统的并发性指系统中同时存在着多个运行的程序。
并行:两个或多个时间在同一时刻发生
- 一个单核(CPU)同一时刻只能执行一个程序,因此操作系统会协调多个程序使他们交替进行(这些程序在宏观上是同时发生的,在微观上是交替进行的)
- 操作系统是伴随着“多道程序技术出现的”,因此操作系统和并发是一同诞生的
- 在如今的计算机中,一般都是多核cpu的,即在同一时刻可以并行执行多个程序,比如我的计算机是8核的,我的计算机可以在同一时刻并行执行8个程序,但是事实上我们计算机执行的程序并不止8个,因此并发技术是必须存在的,并发性必不可少。
共享
资源共享即共享,是指系统中的资源可以供内存中多个并发执行的进程共同使用,共享分为两类:互斥共享和同时共享
互斥共享
- 计算机中的某个资源在一段时间内只能允许
一个进程
访问,别的进程没有使用权 - 临界资源(独占资源):在一段时间内只允许一个进程访问的资源,计算机中大多数物理设备及某些软件中的栈、变量和表格都属于临界资源,它们被要求互斥共享
- 举个例子:比如QQ和微信视频,同一段时间内摄像头只能分配给其中一个进程
同时共享
- 计算机中的某个资源在在一段时间内可以
同时
允许多个
进程访问 - 同时共享通常要求一个请求分为几个时间片段间隔的完成,即交替进行,分时共享
- 这里的
同时
指在宏观上是同时的,在微观上是交替进行访问的,只是cpu处理速度很快,我们感觉不到,在宏观上感觉是在同时进行 - 举个例子:比如QQ在发送文件A,微信在发送文件B,宏观上两个进程A和B都在访问磁盘,在我们看来是同时进行的,但是在微观上两个进程A和B是交替进行访问磁盘的,只是时间太短,cpu处理速度太快,我们感觉不到。
- 注意:有时候多个进程可能真的是在同时进行资源访问,比如玩游戏时可以放音乐,游戏声音和音乐声音都能听见
并发性和共享性互为存在条件
虚拟
虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。 物理实体(前者) 是实际存在的, 而逻辑上
对应物(后者) 是用户感受到的。
多道程序设计:是指在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行。 两个或两个以上程序在计算机系统中同处于开始到结束之间的状态。这就称为多道程序设计。多道程序技术运行的特征:多道、宏观上并行、微观上串行。
- 虚拟是把一个物理上的实体变为若干逻辑上的对应物。
- 物理实体(前者)是实际存在的;而后者是虚的,是用户感觉上的事务
- 虚拟技术:用于实现虚拟的技术
- 虚拟处理器(CPU):通过多道程序设计技术,采用让多道程序并发执行的方法,分时来使用一个CPU,实际物理上只有一个CPU,但是用户感觉到有多个CPU
- 虚拟存储器:从逻辑上扩充存储器容量,用户感觉到的但实际不存在的存储器
- 虚拟设备:将一台物理设备虚拟为逻辑上的多台设备,使多个用户在同一时间段内访问同一台设备,即同时共享,用户宏观上感觉是同时的,但实际上是微观交替访问同一台设备的
- 操作系统的虚拟技术科归纳为:
- 时分复用技术:如处理器的分时共享
- 空间复用技术:如虚拟存储器
异步
异步是指, 在多道程序环境下, 允许多个程序并发执行, 但由于资源有限, 进程的执行不是一贯到底的,
而是走走停停, 以不可预知的速度向前推进, 这就是进程的异步性。
- 比如A进程正在占用CPU计算,B进程这时也想占用CPU计算,B进程只有等,等A进程算完了,A进程去访问磁盘资源了,这时B进程再占用CPU进行计算,B进程还没计算完,A进程从磁盘取出资源了,A进程发现B这时在占用CPU,这时A进程就需要等待,等B算完后再继续到CPU中进行计算。由于每个进程占用资源的时间不固定,所以进程的执行以不可预知的速度前进
如果失去了并发性, 即系统只能串行地运行各个程序, 那么每个程序的执行会一贯到底。 只有系统拥有并发性, 才有可能导致异步性。
操作系统分类和发展
操作系统的分类及其特征优劣
操作系统的发展历程
运行机制
两种命令
特权指令
不允许用户直接使用的命令,比如:I/O令、置中断指令、存取用于内存保护的寄存器、送程序状态字到程序状态寄存器,内存清零等的指令
非特权指令
加减乘除等普通运算指令
两种处理器状态
核心态(管态)
特权指令和非特权指令都可执行
用户态(目态)
只能执行非特权指令
两种程序
内核程序(管理程序)
操作系统内核程序是系统管理,特权指令和非特权指令都可执行,运行在核心态
用户持续(应用程序)
为了保证系统能够安全运行,用户只能执行非特权指令,运行在用户态
操作系统内核
内核是计算机配置在底层的软件,是操作系统最基本最核心的部分;实现操作系统内核功能的程序是内核程序
- 时钟管理
- 计时 操作系统需要通过时钟管理,向用户提供标准的系统时间
- 切换进程 在实时系统中按截止时间控制运行,在批处理系统中通过时钟管理来衡量一个作业的运行程度
- 中断机制
- 初衷是提高多道程序运行环境中CPU的利用率,主要针对外部设备
- 后来逐步得到发展形成了多种类型,成为操作系统各项操作的基础
- 原语
- 处于操作系统的最低层,是最接近硬件的部分。
- 这些程序的运行具有原子性,其操作只能一气呵成(主要从系统安全性和便于管理考虑)
- 这些程序的运行时间都较短,而且调用频繁。
- 资源管理
- 进程管理 进程状态管理、进程调度和分派、创建与撤销进程控制块
- 存储器管理 存储器的空间分配和回收、内存信息保护程序、代码对换程序等
- 设备管理 缓冲区管理、设备分配和回收等
中断和异常
中断技术的诞生
为了实现多道程序并发执行的一种技术为了提高资源利用率
中断的作用
发生中断,就意味着需要操作系统介入开展管理工作,cpu会立即进入核心态作用:
“中断”是CPU从用户进入核心态的唯一途径
中断的分类
内中断
陷入(有意而为之的异常,如系统调用)、故障(由错误条件引起的,可能被故障处理程序修复,如缺页)、终止(不可恢复的致命错误造成的结果,终止处理程序不再将控制返回给引发终止的应用程序,如整数除以0),信号来源CPU内部,与当前执行的指令有关
资源中断
- 指令中断:系统调用时使用的访管指令(又叫陷入指令,trap指令)
强迫中断
- 硬件故障: 缺页
- 软件中断: 整数除以0
外中断
信号来源于CPU外部,与当前执行的指令无关
- 外设要求 如:/操作完成发出的中断信号
- 人为干预 如:用户强行终止一个进程
中断(外中断)处理过程
关中断 CPU响应中所后,应该拒绝响应更高级的中源的中断请求件完成
保存断点 完成为了之后能重新恢复执行这个程序,需要将原来的程序的断点(即程序计数器PC)保存起来
中断服务程序寻址 取出中断服务程序的入口地址送到程序计数器PC
保存现场和屏蔽字 中断程序完成进入程序中所服务程序后,首先要保护现场,现场信息一般是指程序状态字寄存器PSWR和某些通用寄存器的内容
开中断 允许更高级中断请求得到响应,想象一下多道程序设计的并发执行,CPU交替执行内存里面的各个程序
执行中断 服务程序这是中断请求的目的,完成某些中断后的操作
关中断 保证在恢复现场和屏蔽字时不被中断,完成中断后的操作之后,需要恢复现场,不希望被打扰
恢复现场和屏蔽字 将现场和屏蔽字恢复到原来的状态
开中断 中断返回中断服务程序的最后一条指令通常是一条中断返回指令,使其返回到原程序的断点处,以便继续执行原程序
系统调用
系统调用
系统调用是操作系统提供给应用程序的接口
作用:应用程序可以通过系统调用(程序接口)请求获得操作系统的服务
系统调用会使处理器从用户态切换到核心态
分类
- 设备管理 完成设备的请求、释放启动等功能
- 文件管理 完成文件的读,写、创删除等功能
- 进程控制 完成进程的创建、撒销、阻塞、唤醒等功能
- 进程通信 完成进程之间的消息传递、信号传递等功能
- 内存管理 完成内存的分配、回收、获取作业占用内存区大小及始址等功能
系统调用和库函数区别
系统用时操作系统向上提供的接口
有的库函数是对系统调用的进一步封装
当今编写的应用程序大多是通过高级语言提供的库数接的进行系统调用
系统调用背后的过程
- 用户程序执行陷入指令(又称访问指令/Trap指令),请求操作系统服务
- 操作系统内核程序对系统调用进行相应处理
- 处理完成后,操作系统内核程序将CPU使用权还给用户
体系结构
大内核
操作系统的主要功能模块都作为一个紧密联系的整体运行在和心态,为应用提供高性能的系统服务。但随着体系结构和应用需求的发展,需要操作系统提供的服务越来越多,接口越来越复杂,设计规模急剧增长。
优点: 高性能
缺点: 内核代码庞大、结构混乱、难以维护
微内核
将内核中最基本的功能保留在内核,将不需要在核心态执行的功能移到用户态执行,降低内核的设计复杂性。
被移出的代码根据分层的原则被划分为若干服务程序,执行相互独立,交互借助于微内核进行通信。
微内核结构有效的分离了内核与服务、服务与服务,使得接口更加清晰,维护代价大大降低,各部分可以独立的优化和演进,从而保证操作系统的可靠性。
客户服务器模式:将进行划分为两类,服务器用来提供服务,客户端使用这些服务。
优点: 内核功能少、结构清晰、方便维护
缺点:需要频繁在用户态和核心态之间切换,性能低
内核态→用户态:执行一条特权指令一一修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权
用户态→内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权
名词
CPU (Central Processing Unit)
- CPU从系统的RAM中提取指令,然后解码该指令的实际内容,然后由CPU的相关部分执行该指令(提取、解码和执行)
- CPU从功能上看主要由两部分构成
- 控制单元: 从内存中提取指令并解码执行
- 算数逻辑单元(ALU): 处理算数和逻辑运算
- 内部结构:
- 寄存器:中央处理器内的组成部分。用来暂存指令、数据和地址。可以将其看作是内存的一中,根据种类的不同,一个CPU内部会有20-100个寄存器。
- 控制器:负责把内存上的指令、数据读入寄存器,并根据指令的结果控制计算机
- 运算器: 负责运算从内存中读入寄存器的数据
- 时钟:负责发出CPU开始计时的时钟信号
寄存器 | 功能 |
---|---|
累加寄存器 | 存储运行的数据和运算后的数据 |
标志寄存器 | 用于反应处理器的状态和运算结果的某些特征以及控制指令的执行 |
程序计数器 | 程序计数器是用于存放下一条指令所在单元的地址的地方 |
基址寄存器 | 存储数据内存的起始位置 |
变址寄存器 | 存储基址寄存器的相对地址 |
通用寄存器 | 存储任意数据 |
指令寄存器 | 储存正在被运行的指令,CPU内部使用,程序员无法对该寄存器进行读写 |
栈寄存器 | 存储栈区域的起始位置 |
- CPU指令执行过程
- 取指令
- 指令译码
- 执行指令
- 访问取数
- 结果写回
内存
- 程序与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的。
- 又称为主存,作用是存放CPU中的运算数据,以及与硬盘等外部存储设备交换的数据
- 只要计算机在运行中,CPU就会把需要运算的数据调到主存中进行运算,当运算完成后CPU再将结构传送回来
- 内存的内部是有各种IC(Integrated Circuit,集成电路)电路组成的,它的种类很庞大,但是主要分为三种存储器:
- 随机存储器(RAM):内存中最重要的一种,表示既可以从中读取数据,也可以写入数据。当机器关闭时,内存中的信息会丢失。
- 只读存储器(ROM):ROM一般只能用于数据的读取,不能写入数据,但是当机器停电时,数据不会丢失
- 高速缓存(Cache):分为一级缓存(L1 Cache)、二级缓存(L2 Cache)、三级缓存(L3 Cache),它位于内存和CPU之间,是一个读写速度比内存更快的存储器。当CPU向内存写入数据时,这些数据会被写入高速缓存中,需要读取数据时,会直接从高速缓存中读取。如果需要的数据在Cache中没有,会再去读取内存中的数据
磁盘
- 磁盘中存储的程序必须加载到内存中才能运行,在磁盘中保存的程序是无法直接运行的。这是因为负责解析和运行程序内容的CPU是需要通过程序计数器来指定内存地址从而读出程序指令的。
- 磁盘缓存和虚拟内存
BIOS和引导
程序的运行环境,存在着名为BIOS(Basic Input/Output System)的系统。BIOS存储在ROM中,是预先内置在计算机主机内部的程序。BIOS除了键盘、磁盘和显卡等基本控制外,还有引导程序的功能,引导程序是存储在启动驱动器启示区域的小程序。
电脑开机后,BIOS会确认硬件是否正常运行,没有异常的话会直接启动引导程序。引导程序的功能是吧在硬盘等记录的OS加载到内存中运行。虽然启动应用是OS的功能,但是OS不能启动自己,是通过引导程序启动的。
DMA(Direct Memory Access)
DMA是指在不通过CPU的情况下,外围设备直接和主存进行数据传输。通过DMA大量数据可以在短时间内实现传输,因为CPU作为中介的事件被节省了。
参考: 王道考研 计算机操作系统