操作系统概述
作用:通过资源管理提高计算机系统的效率;改善人机界面向用户提供友好的工作环境。
特征:并发性、共享性、虚拟性、不确定性。
功能:进程管理、存储管理、文件管理、设备管理、作业管理。
分类:批处理操作系统、分时操作系统(轮流使用CPU工作片)、实时操作系统(快速响应)、网络操作系统、分布式操作系统(物理分散的计算机互联系统)、微操作系统(Windows)、嵌入式操作系统。
启动的基本流程:BIOS->主引导记录->操作系统。
进程管理
进程的组成和状态
进程的组成:进程控制块PCB(唯一标志)、程序(描述进程要做什么)、数据(存放进程执行时所需数据)。
进程的基础状态是三态,系统自动控制时只有三种状态。五态是多了两种状态,静止就绪和静止阻塞,需要人为的操作才会进入对应状态,活动就绪即就绪,活动阻塞即阻塞。
![三态](https://img-blog.csdnimg.cn/20210215204211119.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1VzZXJOYW1lMTE=,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/2021021520430421.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1VzZXJOYW1lMTE=,size_16,color_FFFFFF,t_70)
当人为干预后,进程即将被挂起,进入静止状态,此时需要人为激活,才能恢复到活跃状态。
前趋图
用来表示哪些任务可以并行执行,哪些任务之间有顺序关系。
进程资源图
表示进程和资源之间的分配和请求关系。
同步与互斥
互斥:某资源(即临界资源)在同一时间内只能由一个任务单独使用,使用时需要加锁,使用完后解锁才能被其他任务使用;如打印机。
同步:多个任务可以并发执行,只不过由速度上的差异,在一定情况下停下等待,不存在资源是否单独或共享的问题;如自行车和汽车。
临界资源:各进程间需要以互斥方式对其进行访问的资源。
临界区:指进程中对临界资源实施操作的那段程序。本质是一段程序代码。
互斥信号量:对临界资源采用互斥访问,使用互斥信号量后其他进程无法访问,初值为1。
同步信号量:对共享资源的访问控制,初值一般是共享资源的数量。
信号量操作
P操作:申请资源。
V操作:释放资源。
死锁
当一个进程在等待永远不可能发生的的事件时,就会产生死锁,若系统中有多个进程处于死锁状态,就会造成系统死锁。
死锁产生的四个必要条件
资源互斥
每个进程占有资源并等待其他资源
系统不能剥夺进程资源
进程资源图是一个环路。
解决措施
死锁预防:采用某种策略限制并发进程对于资源的请求,破坏死锁产生的四个条件之一,使系统任何时刻都不满足死锁的条件。
死锁避免:提前计算出一条不会死锁的资源分配方法,才分配资源,否则不分配资源。
死锁检测:允许死锁产生,但系统定时运行一个检测死锁的程序,若检测到系统中发生死锁,则设法加以解除。
死锁解除:即死锁发生后的解除方法,如强制剥夺资源、撤销进程等等。
线程
传统的进程有两个属性:可拥有资源的独立单位;可独立调度和分配的基本单位。
引入线程后,线程是独立调度的最小单位,进程是拥有资源的最小单位。线程可以共享进程的公共数据、全局变量、代码、文件等资源,但不能共享线程独有的资源,如线程的栈指针等标识数据。
存储管理
页式存储管理
将进程空间分为一个个页,假设每个页大小为4k,同样的将系统的物理空间也分为一个个4k大小的物理块(页帧号),这样每次将需要运行的逻辑页装入物理块中,运行完再装入其他需要运行的页,就可以分批次运行完进程,而无需将整块逻辑空间全部装入物理内存中。
![](https://img-blog.csdnimg.cn/20210218213815890.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1VzZXJOYW1lMTE=,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20210218215734412.png)
页内地址的位数可以决定页的大小(如上图每页大小为4K,2^12)。
公式计算:逻辑地址=页号&位移量(&号是连接符号,是将页号作为逻辑地址的最高位)
优点:利用率高、碎片小、分配及管理简单。
缺点:增加了系统开销,可能产生抖动现象。
页面置换算法
有时候,进程空间分为100个页面,而系统内存只有10个物理块,无法全部满足分配,就需要将马上要执行的页面先分配进去,而后根据算法进行淘汰,使100个页面能够按执行顺序调入物理块中执行完。
缺页表示需要执行的页不在内存物理块中,需要从外部调入内存,会增加执行时间,因此缺页数越多,系统效率越低。
最优算法:OPT,原理是选择未来最长时间内不被访问的页面置换,这样可以保证未来执行的都是马上要访问的。无法实现。
先进先出算法:FIFO,先调入内存的页先被置换淘汰,会产生抖动现象(即分配的页数越多,缺页率可能越多,抖动现象)。
最近最少使用:LRU,在最近的过去,进程执行过程中,过去最少使用的页面被置换淘汰,根据局部性原理,这种方式效率高,且不会产生抖动现象。
快表
是一块小容量的相联存储器,由快速存储器组成,按内容访问,速度快,并且可以从硬件上保证按内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号。
快表是将页表存于Cache中,慢表将页表存于内存上;慢表需要访问两次内存才能取出页,而快表是访问一次Cache和一次内存。
段式存储管理
将进程空间分为一个个段,每段也有段号和段内地址,与页式存储不同的是,每段物理大小不同,分段是根据逻辑整体分段的。
地址表示(段号,段内偏移):其中段内偏移不能超过该段号对应的段长,否则越界错误,因此地址对应的真正内存地址应该是:段号对应的基地址+段内偏移。
优点:程序逻辑完整,修改互不影响;缺点:内存利用率低,内存碎片浪费大。
段页式存储管理
对进程空间先分段,后分页。
优点:空间浪费小、存储共享容易、能动态连接。
缺点:由于管理软件的增加 ,复杂性和开销也增加,执行速度下降。
文件管理
计算机系统中采用的文件结构如图:
系统中由13个索引节点,其中0~9是直接索引,即每个索引节点存放的是内容,假设每个物理盘大小为4KB,共可存10*4KB = 40KB。
10是一级间接索引节点,大小为4KB,直接盘存放的是链接到物理盘的地址,假设每个地址占4B,则共有1024个地址,对应1024个物理盘,可存1024*4KB = 4098KB。
11是二级间接索引节点,直接盘存放的是一级间接索引节点的地址,可存1024*1024*4KB数据。
树形文件目录
相对路径:是从当前路径开始的路径。
绝对路径:从根目录开始的路径。
全文件名=绝对路径+文件名。
注意:相对路径和绝对路径是不加文件名的,只是单纯的路径序列。
树形结构主要是区分相对路径和绝对路径,如下图所示:
空闲存储空间管理
空闲区表法:将所有空闲空间整合成一张表,即空闲文件目录。
空闲链表法:将所有空闲空间链接成一个链表,根据需要分配。
成组链表法:既分组,每组内又链接成链表,是上述两种方法的综合。
位视图法:对每个物理空间用一位标识,为1则使用,为0则空闲,形成一张位视图。
设备管理
设备的分类方式:
数据组织分类:块设备、字符设备。
资源分配角度分类:独占设备、共享设备和虚拟设备。
数据传输速率分类:低速设备、中速设备、高速设备。
I/O软件层次结构:
输入输出技术
程序控制(查询)方式:CPU主动查询外设是否完成数据传输,效率极低。
程序中断方式:外设完成数据传输后,向CPU发送中断,等待CPU处理数据,效率相对较高。适用于键盘等实时性较高的场景。
中断响应时间指的是从发出中断请求到开始进入中断处理程序;中断处理时间指的是从中断处理开始到中断处理结束。中断向量提供中断服务程序的入口地址。多级中断嵌套,使用堆栈来保护断点和现场。
DMA方式(直接主存存取):CPU只需完成必要的初始化等操作,数据传输的整个过程都由DMA控制器来完成,在主存和外设之间建立直接的数据通路,效率很高。适用于硬盘等高速设备。
在一个总线周期结束后,CPU会响应DMA请求开始读取数据;CPU响应程序种蒜方式请求是在一条质量执行结束时;区分指令执行结束和总线周期结束。
虚设备和SPOOLING技术
一台实际的物理设备,例如打印机,在同一时间只能由一个进程使用,其他进程只能等待,且不知道什么时候打印机空闲,此时,极大的浪费了外设的工作效率。
引入SPOOLING技术,就是在外设上建立两个数据缓冲区,分别称为输入井和输出井,这样无论多少个进程都可以共用这一台打印机,只需要发出打印命令,数据就会排队存储在缓冲区中,打印机会自动按顺序打印,实现了物理外设的共享,使得每个进程都感觉在使用一个打印机,这就是物理设备的虚拟化,如图所示:
磁盘结构
磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个磁道,每个同心圆又被划分为多个扇区,数据就被存放在一个个扇区中。
读取数据时,磁头首先要寻找对应的磁道,然后等待磁盘进行周期旋转,旋转到指定的扇区,才能读取到对应的数据,因此会产生寻道时间和等待时间。其中寻道时间耗时最长,调度算法如下:
先来先服务FCFS:根据进程请求访问磁盘的先后顺序进行调度。
最短寻道时间优先SSTF:请求访问的磁道与当前磁道最近的进程优先调度,使得每次寻道时间最短,会产生“饥饿”现象,即远处的进程可能永远无法访问。
扫描算法Scan,又称电梯算法,磁头在磁盘上双向移动,其会选择离磁头当前所在磁道最近的请求访问的磁道,并且与磁头移动方向一致,磁头永远都是从里向外或者从外向里一直移动完才掉头。
单向扫面调度算法CScan:磁头在磁盘上单向行动,只能由里向外或者由外向里。
微内核操作系统
微内核:尽可能的将内核做的很小,只将最为核心必要的东西放入内核中,其他能独立的东西都放入用户进程中,这样系统就被分为了用户态和内核态。
嵌入式操作系统
特点:微型化、代码质量高、专业化、实时性强、可裁剪可配置。
实时嵌入式操作系统的内核服务:异常和中断、计时器、I/O管理。
常见的嵌入式RTOS(实时操作系统):VxWorks、RT-Linux、QNX、pSOS。
初始过程按照自底向上、从硬件到软件的次序为:片级初始化->板级初始化->系统初始化。
芯片级是微处理器的初始化,板卡级是其他硬件设备的初始化,系统级初始化就是软件及操作系统初始化。