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

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.mzph.cn/news/754727.shtml

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

相关文章

Vim替换时区分大小写

在 Vim 中执行替换时,你可以使用不同的命令来区分大小写。要进行区分大小写的替换,你可以在替换命令前添加 :set 命令来设置相应的选项。这里有两种方法可以实现: 方法一:使用 :set 命令设置 ignorecase 选项 执行以下命令打开 …

c++类和对象(二)

c类和对象(二) 1.类的6个默认成员函数 2. 构造函数 3. 析构函数 4. 拷贝构造函数 5. 赋值运算符重载 6. const成员函数 7. 取地址及const取地址操作符重载 1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都…

python中如何解析Html

在最近需要的需求中,需要 python 获取网页内容,并从html中获取到想要的内容。这里记录一下两个比较常用的python库对html的解析。 1. BeautifulSoup 它是一个非常流行的python脚本库,用于解析HTML和XML文档。如果你对 java 很熟悉&#xff…

关于Zookeeper分布式锁

背景 之前说到分布式锁的实现有三种 1、基于数据库实现的分布式锁 2、Redis分布式锁 3、Zookeeper分布式锁 前者redis分布式锁博客已具体介绍,此博客最终决定补齐关于Zookeeper分布式锁的实现原理。 简述 Zoopkeeper,它是一个为分布式的协调服务&…

C#,图论与图算法,图(Graph)广度优先遍历(BFS,Breadth First Search)算法与源代码

1 深度优先算法与 宽度优先遍历 深度优先算法(DFS,Deep First Search)与 宽度优先遍历(BFS,Breadth First Search) 是树、图数据结构的基础性、标准性的遍历算法。 2 深度优先算法(DFS,Deep First Search) 深度优先搜索(DFS)是一种用于搜索图形或树数据结构的算法…

Kafka:分布式消息队列

1. 简介 介绍 Kafka 的概述、优势和劣势,以及应用场景。 2. 基本概念 2.1 架构 一个典型的 Kafka 体系架构包括若干 Producer、若干Broker、若干 Consumer,以及一个ZooKeeper集群。 ZooKeeper是Kafka用来负责集群元数据的管理、控制器的选举等操作的…

本地虚拟机平台Proxmox VE结合Cpolar内网穿透实现公网远程访问

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默&…

Selenium 自动化 —— Selenium IDE录制、回放、导出Java源码

Hello Selenium 示例 之前我们在专栏的第一篇文章中演示了使用使用Selenium进行百度搜索的Hello world示例。 代码不复杂非常简单: public static void main(String[] args) {WebDriver driver null;try {// 设置Chrome驱动的路径 // System.setPro…

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(后记)

2024.03.05: 测试了开发板网线直连电脑可以传输数据。但是通过开发板→交换机→电脑,没有数据传输。通讯采用UDP通讯,一个是无法满足后续对采集数据的傅里叶变换和傅里叶逆变换的处理。二是无法通过交换机传输数据。 2024.03.07&#xff1a…

【C++】每日一题 71 简化路径

给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;…

YoloV8改进策略:Block改进|焦点调制网络

摘要 FocalNets是一个新型的神经网络架构,它的核心特点是用焦点调制模块完全取代了自注意力(SA)机制,用于在视觉任务中建模令牌(token)之间的交互。这种架构的设计旨在提高模型的可解释性,并在…

已解决OperationTimeoutException:KeeperErrorCode=OperationTimeout异常的正确解决方法,亲测有效!!!

已解决OperationTimeoutException:KeeperErrorCodeOperationTimeout异常的正确解决方法,亲测有效!!! 目录 问题分析 报错原因 解决思路 解决方法 总结 博主v:XiaoMing_Java 在使用分布式协调服务Apache ZooKeepe…

DataX脚本告别手动编写,用大模型或Java代码自动生成

在离线数仓开发中,DataX支持多种数据源,性能好抽取速度快。美中不足的是,对需要抽取的每一张表都需要写配置文件,这样很繁琐和耗时。可以用大模型提示词来节省这方面的工作量。ChatGPT等大模型并不能很智能提供一个完全正确的,需要提供一个模板让它参考。 方法1:用大模型…

Midjourney订阅攻略/Midjourney的基本参数和命令

AI绘画软件Midjourney使用原理 Midjourney是一个由Midjourney研究实验室开发的先进的人工智能程序,它可以根据用户的文本输入生成精美的图像。Midjourney的主要原理是通过收集大量已有的作品数据,对这些数据进行算法解析,它就可以通过关键词生…

HandyControl PropertyGrid及自定义编辑器

前提条件 项目引入对应HandyControl对应版本包。 使用案例 UI部分 <Window xmlns:hc"https://handyorg.github.io/handycontrol"><hc:TabControl><hc:TabItem Header"默认样式"><hc:PropertyGrid Width"380" SelectedO…

在ubuntu下安装MQTT 服务

ubuntu系统版本22.4.4LTS amd64 在ubuntu系统下打开终端输入命令 ## 安装MQTT 服务 sudo apt-get install mosquitto mosquitto-clients继续执行后系统就完成了安装并默认已启动服务 ## 查看MQTT运行状态 systemctl status mosquitto## 启动服务 systemctl start mosquitto…

【数据库】数据库语言

1.4 数据库语言 数据库系统提供数据定义语言&#xff08;DDL&#xff09;来定义数据库模式&#xff0c;并提供数据操纵语言&#xff08;DML&#xff09;来表达数据库的查询和更新。 通过一系列特定的DDL语句来说明数据库系统所采用的存储结构和访问方式&#xff0c;这种特定的…

HarmonyOS NEXT应用开发之Web获取相机拍照图片案例

介绍 本示例介绍如何在HTML页面中拉起原生相机进行拍照&#xff0c;并获取返回的图片。 效果预览图 使用说明 点击HTML页面中的选择文件按钮&#xff0c;拉起原生相机进行拍照。完成拍照后&#xff0c;将图片在HTML的img标签中显示。 实现思路 添加Web组件&#xff0c;设置…

VTK----VTK的事件机制

事件的发送和接收对于一个应用或系统来说是一个基本的功能,所以一些通用的库对应地也建立了自己的一套管理事件的机制,例如QT、VTK都有自己的事件管理机制。VTK库中定义了很多的事件,这些事件是如何进行管理的,下面从三个方面来详细的说明。 1 事件的管理 在讲述VTK的事件…

ASP .Net Core 8.0 依赖注入的三种注入模式

&#x1f433;前言 &#x1f340;在.NET中&#xff0c;依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&#xff09;是一种设计模式&#xff0c;用于解耦组件之间的依赖关系。 依赖注入的核心思想是将对象的依赖关系&#xff08;即对象所需的其他服务或组件&#…