操作系统知识-操作系统作用+进程管理-嵌入式系统设计师备考笔记

news2024/12/24 2:08:49

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操作。这种操作模式确保了资源的安全使用和进程间的正确通信。

PV操作示意图
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+144

死锁解决: 

死锁解决示意图

有序资源分配法:这种算法资源按某种规则系统中的所有资源统一编号(例如打印机为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积分下载的,创作不易还望各位大佬点赞支持一下谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1522159.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7. 字符串和集合(重点)

常见API API (全称 Application Programming Interface:应用程序编程接口)就是别人写好的一些程序,给咱们程序员直接拿去调用即可解决问题的。 1 包 1.1 什么是包? 包是用来分门别类的管理各种不同程序的&#xff…

电源适配器

电源适配器 1. 选购指南2. 接口测量方法3. 电源接口4. 抗干扰磁环,稳定输出References 1. 选购指南 插头尺度相同,供电电压 (V) 相同,电流 (A) > 原来的电流 (A) INPUT (输入),OUTPUT (输出) 2. 接口测量方法 3. 电源接口 外…

sqllab第二十五A关通关笔记

知识点: 数值型注入双写绕过 oorranand这里不能用错误注入(固定错误回显信息)联合注入 测试发现跟25关好像一样,就是过滤了and or # 等东西 构造payload:id1/0 发现成功运算了,这是一个数值型的注入 构造payload:id…

Arthas使用案例(二)

说明:记录一次使用Arthas排查测试环境正在运行的项目BUG; 场景 有一个定时任务,该定时任务是定时去拉取某FTP服务器上的文件,进行备份、读取、解析等一系列操作。 而现在,因为开发环境是Windows, 线上项…

pta上的几个例题

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话: 知不足而奋进,望远山而前行&am…

9.用FFmpeg测试H.264文件的解码时间

1. Essence of Method 要测试对H.264文件的解码时间,可以使用FFmpeg进行操作。FFmpeg是一个开源的多媒体处理工具,可以用来处理视频和音频文件,包括解码H.264文件。以下是使用FFmpeg的命令行来测试解码时间的方法: ffmpeg -i in…

四连杆机构运动学仿真 | 【Matlab源码+理论公式文本】

【程序简介】💻🔍 本程序通过matlab实现了四连杆机构的运动学仿真编程,动态展现了四连杆机构的运动动画,同时给出了角位移、角速度和角加速度的时程曲线,除了程序本身,还提供了机构运动学公式推导文档&…

更安全的C gets()和str* 以及fgets和strcspn的用法

#include <stdio.h>int main() {char *str;gets(str);puts(str);return(0); }可以说全是错误 首先char *str没有指向一个分配好的地址&#xff0c;就直接读入&#xff0c;危险 ps: 怎么理解char *str "Hello World" 是将一个存储在一个只读的数据段中字符串常…

字符函数以及字符串函数

1.strlen的使用和模拟实现 • 字符串以 \0 作为结束标志&#xff0c;strlen函数返回的是在字符串中 \0 前⾯出现的字符个数&#xff08;不包 含 \0 )。 • 参数指向的字符串必须要以 \0 结束。 • 注意函数的返回值为size_t&#xff0c;是⽆符号的&#xff08; 易错 &#xff…

【C++】了解一下编码

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 前言2. ASCII编码3. unicode4. GBK5. 类型转换 1. 前言 看到string里面还有Template instantiations&#xff1a; string其实是basic_string<char>&#xff0c;它还是一个模板。 再看看wstring&#xff1…

音频的录制及播放

在终端安装好pip install pyaudio&#xff0c;在pycharm中敲入录音的代码&#xff0c;然后点击运行可以在10s内进行录音&#xff0c;录音后的音频会保存在与录音代码同一路径项目中&#xff0c;然后再新建项目敲入播放的代码&#xff0c;点击运行&#xff0c;会把录入的录音进行…

更改el-tabs默认样式,实现tab标签居中显示,标签对应内容使用另一个div显示

首先看效果图 如图所示&#xff0c;标签在浏览器窗口居中&#xff0c;但是下面的内容依然是默认从左到右&#xff0c;不会受到tab样式的影响 <template><div><div style"display: flex; justify-content: center; align-items: center;"><el-…

文献阅读及笔记

每个阶段&#xff0c;该看什么文献 当我们刚开始接触课题时&#xff0c;对这个研究方向一无所知&#xff0c;可以选择硕博学位论文、领域大牛的文献综述当我们已经对课题有了解&#xff0c;处于深化认识的阶段&#xff0c;可以选择行业最新的论文&#xff0c;领域大牛的文献综…

探讨大世界游戏的制作流程及技术——大场景制作技术概况篇

接上文&#xff0c;我们接下来了解一下大世界场景制作技术有哪些&#xff0c;本篇旨在给大家过一遍目前业界的做法&#xff0c;能让大家有一个宏观的知识蓝图。实际上&#xff0c;针对不同的游戏类型和美术风格&#xff0c;制作技术在细节上有着非常大的不同&#xff0c;业界目…

开环端到端自动驾驶: 到底行不行

开环端到端自动驾驶&#xff1a; 到底行不行 附赠全面专业的自动驾驶学习资料&#xff1a;直达链接 TLDR: 别在nuScenes上做开环端到端自动驾驶刷点了。 论文&#xff1a; https://arxiv.org/pdf/2312.03031.pdf github: https://github.com/NVlabs/BEV-Planner 前言 Uni…

set与zset数据类型

set类型基础 redis集合(set)类型和list列表类型类似&#xff0c;都可以用来存储多个字符串元素的 集合。但是和list不同的是set集合当中不允许重复的元素。而且set集合当中元素是没有顺序的&#xff0c;不存在元素下标。 redis的set类型是使用哈希表构造的&#xff0c;因此复…

宠物疾病 与 光线疗法

人类与动物以及大自然是相辅相成的。人离开动物将无法生存&#xff0c;对于动物我们尽力去保护&#xff0c;与大自然和谐稳定生存发展。 生息在地球上的所有动物、在自然太阳光奇妙的作用下、生长发育。太阳光的能量使它们不断进化、繁衍种族。现在、生物能够生存、全仰仗于太…

什么是类加载器

类加载器&#xff08;Class Loader&#xff09;是 Java 虚拟机&#xff08;JVM&#xff09;的重要组成部分&#xff0c;负责将字节码文件加载到内存中并转换为可执行的类。 类加载总共分为以下四种&#xff1a; 启动类加载器&#xff08;Bootstrap Class Loader&#xff09;&…

(二)移植FreeRTOS到STM32中

一、概念 &#xff08;1&#xff09;任务&#xff08;线程&#xff09;&#xff1a;根据功能的不同&#xff0c;将一个系统分割成一个个独立且无法返回的函数&#xff0c;这个函数就被称为任务 &#xff08;2&#xff09;任务栈&#xff1a;静态创建的任务保存在栈中 &#xf…

layui2.9.7-入门初学

下载&#xff1a;https://layui.dev/ 下载后解压&#xff1a; 在hbuider中新建一个项目 将如上解压好的文件打开&#xff0c;复制如下到项目中 写案例&#xff0c;基础学习通之前的bootstrap 那样&#xff0c;挨个相中哪个就测试哪个&#xff0c;在这里不再重复罗列&#x…