0、前言
本专栏为个人备考软考嵌入式系统设计师的复习笔记,未经本人许可,请勿转载,如发现本笔记内容的错误还望各位不吝赐教(笔记内容可能有误怕产生错误引导)。
本章的主要内容见下图:
1、操作系统的作用
作 用:通过资源管理,包括软硬件资源管理,提高计算机系统的效率。同时操作系统改善了人机界面,向用户提供良好的工作环境。
2、进程(任务)管理(软考难点)
2.1进程的概念
进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。它由程序块、进程控制块和数据块三部分组成。
2.2进程与程序的区别
- 进程是程序的一次执行过程
- 程序是完成某个特定功能的一系列程序语句的集合,只要不被破坏,程序永远存在
- 程序是一个静态概念,进程是一个动态的概念,它有创建而生,完成任务后因撤销而消亡;进程是系统进行资源分配和调度的独立单位,而程序不是。
2.3进程状态
2.3.1三态模型
- 运行态:占有处理器正在运行
- 就绪态:具备运行条件,等待系统分配处理器以便运行
- 等待态:又称为阻塞态或睡眠态,指不具备运行条件,正在等待某个事件的完成。
状态切换 | 切换条件 |
运行态到等待态 | 等待使用资源,如等待外设传输,等待人工干预 |
等待态到就绪态 | 资源得到满足,如外设传输结束,人工干预成功 |
运行态到就绪态 | 运行时间片到,出现有更高优先权进程 |
就绪态到运行态 | CPU空闲时选择一个就绪进程 |
2.3.2五态模型
在三态模型基础上增加了静止就绪和静止阻塞两个状态,这两个状态相当于听歌曲时的暂停选择。
对五态模型中挂起和激活的解释:
- 挂起:将进程调出内存,保存到外存队列,并释放资源
- 激活:恢复挂起进程,重新调入内存
从三态模型扩展到五态模型的目的与原因:
目的:释放进程占用的资源以缓解资源不足
原因: 终端用户的请求,父进程的请求,OS的需要,如负荷调节、对换等
2.4前趋图
概念:前趋图是为了描述一个程序的各部分间的依赖关系,或者是一个大的计算的各个子任务间的因果关系的图示。
出度与入度:指向与被指向的箭头个数,入度为零的无前置执行条件。
特点:前趋图中必须不存在循环
2.5PV操作
2.5.1进程的同步与互斥
互斥:间接制约,类似于独木桥同一时间只允许一人通过,你过桥时间接制约了其他人过桥的动作。
同步:直接制约,去医院开化验单时化验员处于等待状态,只有看到化验单时才会开始化验工作。开化验单就是直接制约了化验员的化验工作。
2.5.2进程的同步与互斥:生产者与消费者问题
生产者消费者问题,也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。其中生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据。
2.5.3PV操作
PV操作就是为了解决生产者消费者问题出现的
- 临界资源:诸进程间需要互斥方式对其进行共享的资源,如打印机、磁带机等
- 临界区:每个进程中访问临界资源的那段代码称为临界区
- 信号量:是一种特殊的变量
PV操作是一种实现进程互斥与同步的有效方法,它涉及两种原语操作:P操作(请求资源,阻塞进程)和V操作(唤醒进程,释放资源)。在进程同步中,P操作负责测试消息是否到达,而V操作负责发送消息。在进程互斥中,P操作用于判断是否能进入临界区并申请资源,V操作用于退出临界区并释放资源。信号量(semaphore)是实现PV操作的关键概念,其值可以大于、等于或小于零。当信号量值大于或等于零时,表示有可用资源;当信号量值小于零时,表示有进程正在等待资源,此时需要唤醒等待队列中的一个进程;当信号量值等于零时,表示资源被完全占用。见PV操作示意图。
PV操作必须成对出现,即一个进程的P操作必须与另一个进程的V操作相对应。在单进程内部,P操作后通常紧接着一个V操作;而在多进程之间,一个进程的V操作后可能紧接着另一个进程的P操作。这种操作模式确保了资源的安全使用和进程间的正确通信。
2.5.4PV原语
单缓冲区生产者消费者问题PV原语描述:
#生产者进程
S1初值为1,S2初值为0;
生产者:
生产一个产品;
P(s1);
送产品到缓冲区;
V(s2);
#消费者进程
S1初值为1,S2初值为0;
消费者:
P(s2);
从缓冲区取产品;
V(s1);
消费产品;
2.6进程管理死锁
死锁概念:进程管理是操作系统的核心内容,但存在设计不当,出现死锁的可能,如果一个进程在等待一个不可能发生的事情,那么进程就死锁了,感觉就是陷入了死循环(死循环和死锁不是一个概念) 。而如果一个或多个进程产生死锁就会造成系统死锁。
例题:某系统存在三个进程:A,B,C。这三个进程都需要5个系统资源。如果系统有多少个资源,则不可能发生死锁。
进程A | 进程B | 进程C |
4+1 | 4 | 4 |
死锁解决:
有序资源分配法:这种算法资源按某种规则系统中的所有资源统一编号(例如打印机为1、磁带机为2、磁盘为3、等等),申请时必须以上升的次序。系统要求申请进程:
①对它所必须使用的而且属于同一类的所有资源,必须一次申请完;
②在申请不同类资源时,必须按各类设备的编号依次申请。例如:进程PA,使用资源的顺序是R1,R2; 进程PB,使用资源的顺序是R2,R1;若采用动态分配有可能形成环路条件,造成死锁。
采用有序资源分配法:R1的编号为1,R2的编号为2;
PA:申请次序应是:R1,R2
PB:申请次序应是:R1,R2
这样就破坏了环路条件,避免了死锁的发生。同时我们可以还可以采用操作系统经典问题银行家算法来避免死锁。
银行家算法:分配资源的原则如下:
- 当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程
- 进程可以分期请求资源,但请求的总数不超过最大需求量
- 当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使得进程在有限的时间内得到资源。
2.7进程管理中任务的调度
第一个要解决的问题:任务调度的时机,一般有五种情形,可能会发生任务的调度。
第二个要解决的问题:
任务调度的方式:
第三个要解决的问题:如何来评价一个调度算法的好坏。
调度算法的性能指标:
性能指标之间是存在一定的冲突性的:
- 可以通过让更多的任务处于就绪状态来提高CPU的使用率,但这显然会降低系统的响应时间
- 调度程序的设计需要优先考虑最重要的需求,然后在各种因素之间进行折中处理。
任务调度算法
2.8任务间通信
尾言
本专栏我总结了大量的思维导图,但是因为思维导图太大与CSDN的排版不匹配,故我会把每篇博文绘制的思维导图上传到我的资源里,有需要的自取,我会设置为0积分下载的,创作不易还望各位大佬点赞支持一下谢谢