嵌入式软考备考_3 嵌入式操作系统概述

news2024/7/6 18:22:40

嵌入式操作系统概述

工作在嵌入式环境中的操作系统 Embedded Operating System。

嵌入式和一般操作系统区别:

  • 非通用操作系统,用于完成特定功能;
  • 性能实时性能源可靠性要求高;
  • 占用资源少;
  • 可剪裁,可配置。

OS 主要功能:任务管理,(内存)存储管理,IO 管理,文件管理(当然这4个功能也可能被裁剪掉)。

image-20230402193048702

有可能考察哪些 OS 是嵌入式 OS。

对响应时间的敏感度又可以分为:硬实时(不接受规定响应时间后的响应。如果没及时收到响应可能产生严重错误),软实时(可以接受一定程度迟到的代价)和非实时系统。

按软件体系结构分为单体结构(uC/OS),分层结构(MS-DOS),微内核结构(VxWorks)。

单体结构:中间件和驱动程序都集成在内核里,系统只有一个可执行文件,如 linux,uc/OS. 性能较好,模块间相互调用通信方便,但是操作系统体积大,裁剪困难。

分层结构:内核分了许多层,上一层只能调用下一层。下一层提供 API 给上层。

系统开发维护相对简单,但是开发 API 开销增加。

image-20230402220317658

API 就是一些定义的 .h 文件。

微内核结构:内核尽可能缩减,进程服务、文件服务、内存服务等都放在用户态而不是核心态,核心态只放微内核、设备驱动程序、硬件。

image-20230402234321298

比如应用程序启动进程,发送请求给微内核,微内核发送请求给进程服务,进程服务处理后返回给微内核,微内核返回给应用程序。

易拓展,易移植,安全性高,但是速度慢,切换回增加开销,且对微内核性能要求高。

进程管理

系统进行资源分配和调度的独立单位。由程序块,进程控制块(PCB),数据块组成。

现代操作系统:CPU 是厨师,程序是食谱,进程是烹饪的过程,是动态的。

进程是系统资源分配和调度的单位。

三态模型:就绪,运行,阻塞。就绪态准备好运行但是没有空闲 CPU,还不能运行;运行态正在占用 CPU 运行;阻塞态在等待一些事件(如 IO 设备)。三态模型可见:

操作系统学习笔记_2 中断和系统调用;进程和线程_中断和系统调用的区别_灰海宽松的博客-CSDN博客

五态模型:运行,活跃就绪,静止就绪,活跃阻塞,静止阻塞。

image-20230403113620376

挂起:调出内存,保存到外存队列中,并释放资源。

激活:调入内存。

挂起可以释放进程占用的资源。比如内存不够的时候。

前趋图

image-20230403115937065

图2:A入度0,出度1,说明一开始就能执行。

D入度3,出度1,说明需要先做3个任务才能轮到D。

同步和互斥

同步:直接的制约,需要有顺序,比如先切肉再下锅。

互斥:间接制约,比如大家一起过独木桥,一个人过的时候别人不能过。

同步的典型例子:生产者消费者。详细介绍,临界资源和临界区,和一些其他进程关系可见:

操作系统学习笔记_2 中断和系统调用;进程和线程_中断和系统调用的区别_灰海宽松的博客-CSDN博客

信号量 P:申请。V:释放。

P:先S–,然后看S是否<0.如果<0说明没有足够的资源,阻塞。否则进程执行。

V:S++,如果S<=0则进程执行。否则说明没有进程要用资源,现在处于空闲阶段。

image-20230403135256276

s1:空闲缓冲区,初值=1.

s2:非空缓冲区,初值=0.

死锁

四大条件,预防方法:

操作系统学习笔记_3 管程;死锁;内存_灰海宽松的博客-CSDN博客

主要讲的就是有序资源分配和银行家算法。

image-20221209232829502

银行家算法主要就是看一个进程最多还需要的资源与剩余资源总量相比,如果小于剩余资源总量则可以分配。

image-20230403144556174

现有:2,1,0。

进程还需要
P15,3,1
P20,1,0
P36,0,1
P40,0,1
P52,3,1

可知唯一的安全序列是B。

任务调度

调度时机,调度方式,调度算法。

操作系统学习笔记_2 中断和系统调用;进程和线程_中断和系统调用的区别_灰海宽松的博客-CSDN博客

任务调度是一个函数,需要调度的时候执行一下。比如把任务从就绪态调度到运行态。

何时调度?有任务运行结束时,因IO堵塞时,IO完成时,中断发生或者时间片用完时,创建新任务时。

调度方式不可抢占和课抢占。

可重入函数:可以被中断等打断。抢占式内核必须用可重入函数。

性能指标还有调度开销(调度的时空开销),公平性(任务得到的 CPU 时间应该大致相同),均衡性(系统各个部分都尽量忙起来)。性能指标之间其实是相互冲突的,因此也要考虑一下不同指标之间的优先级。

任务间通信

低级:信号量。

高级:共享内存,消息传递,管道。

存储管理

内存

分区

以前:单一连续分配,内存不分区,一次只能执行一个任务。

固定分区分配:给定分区,不方便。

可变分区分配:按作业大小分配分区,释放分区时分区和临近分区合并。

页式存储管理:比如我们程序有300K,但是内存一共大小才150K,整个程序拿不进去。我们可以把程序分页,比如150个2K页,然后每次按照执行顺序拿几页进去执行。

第几页对应内存的哪个位置,需要有一个页表来存储。有页号和块号。

用户的页:是逻辑地址,页号+页内地址。页号标识了一共有多少页,页内地址标识了每个页的最大大小。

逻辑地址转物理地址:页号根据页表寄存器找页表位置,找到页表中页号对应的块号,块号和页内地址再找到物理地址。

image-20230403171957833

利用率高,碎片小,分配管理简单;但是系统调整开销大,可能发生抖动(反复调入调出)。

例题:

image-20230403172259170

前两位:页号,变为物理块号。

后面的部分是页内地址,不变拼接。

页面大小4K=2^12,也是指明页内地址是12位。

也就是8644/2^12,前面的部分进行页号和物理块号的转变,取余的部分原封不动的拼接。

段式存储

段式存储也包含段号和段内地址,和页式存储不同的地方在于每页大小不固定,而是动态分配。

优点:1. 多道程序可以共享一段内存,比如一个函数申请了一块内存,所有程序调用的时候都可以访问内存中这个函数而不用把函数重复放入内存。

image-20230407090440833

寻址方式和页也很像,是用段号去段表中找出对应的段长和基址,基址~基址+段长的范围就是这个段的内存空间。

缺点在于内存利用率不高,可能有外部碎片((1条消息) 操作系统学习笔记_3 管程;死锁;内存_灰海宽松的博客-CSDN博客)

段页式存储

一个程序一个段,段内又分几个页在不同的地方存储,可以更有效利用碎片化空间。

逻辑地址包含:段号,页号,页内地址。

段号可以找到页长和页基址,页长和页号校验看是否越界。不越界则根据页基址和页号找到某一页的内存块号,再加上页内地址求得我们要访问的物理地址。

缺点在于开销大,管理麻烦。

虚拟存储

((1条消息) 操作系统学习笔记_3 管程;死锁;内存_灰海宽松的博客-CSDN博客)

上面的方法都是整个程序放入内存,虚拟存储是把一个程序分多次装入,每次要访问一段时看内存里有没有,没有从外存调入内存;如果内存已满,还需要根据页面置换算法挑一个页面换出内存。

四大置换算法:OPT 最佳置换算法(未卜先知,能知道哪个将来最晚才用,把那个页面换了),FIFIO 算法,LRU 最近最少未使用置换算法(把最近没用过的换出去),CLOCK 最近未用置换算法(每个程序弄一个计数器,访问过一次++,把计数器最小的换出去)。

例:

image-20230407093427806

023最近都访问过,只有3没修改过。如果把02换出去还要写回内存,所以换3开销最小。

磁盘

image-20230408094631271

调度算法:要访问磁盘上多个文件的顺序。

FCFS:不必多说。

SSTF 最短寻道时间优先:优先访问离当前磁头最近的文件。

SCAN 扫描算法:优先沿当前方向扫描到磁盘结尾或开头,然后再按反方向访问。

CSCAN 循环扫描算法:访问到开头/结尾后,可以再跳到结尾/开头进行访问。

读取磁盘数据的时间包括:1. 找磁道的时间;2. 找块/扇区的旋转延迟时间;3、 传输时间。

image-20230408095633644

找磁道:平均10*10=100ms;

旋转延迟时间:100ms;

传输时间:2ms;

202*100=20200ms。

非格式化容量:容量=面数 * (磁道数/面) * 内圈周长 * 最大位密度

格式化容量:容量=面数 * (磁道数/面)* (扇区数/道) *(字节数/扇区)

image-20230427122048961

首先,磁盘哪怕系统还在处理记录时也还在旋转。

image-20230427122338524

因此R0读取3s,处理R0 3s,这时指针已经走到R1了。

最长时间:R0是3+3s,R1需要转一圈回来,30+3+3s,R2也需要转一圈……时长为(36)*10+6=366s。

优化分布存储后,则每次指针都刚好指在读取开头,(3+3)*11=66s.

文件管理

索引文件的管理

文件结构
逻辑结构
物理结构
流式文件 无结构
记录式文件 有一定结构
顺序结构
链接结构
索引结构

顺序结构:连续的存储,适用于一次性的存储。

链接结构:每个存储块里存储了下一块的地址。

索引结构:一个索引表,里面每个索引指向一个物理块。如果不够,最后几个索引再指向下一个索引表。

树型目录结构

树型结构:linux 里的结构,注意绝对路径和相对路径的区分。

空闲存储区管理

位示图法:类似买电影票,一眼就能看到哪些座位空闲哪些不空闲。

image-20230427124229232

设备管理

虚设备与SPOOLING技术

image-20230427124607943

输出井,把输入数据放入内存中的预输入缓冲区,输出数据放到缓输出缓冲区。井管理程序可以进行两者间的通信。

比如四个用户同时给打印机发请求,打印信息都放到预输入程序中,打印机自己调度打印。不仅提高了 IO 速度,而且每个用户都感觉打印机在为自己所用。

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

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

相关文章

渗透测试 | Web信息收集

0x00 免责声明 本文仅限于学习讨论与技术知识的分享&#xff0c;不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;本文作者不为此承担任何责任&#xff0c;一旦造成后果请自行承担…

《程序员面试金典(第6版)》面试题 16.04. 井字游戏(棋盘类问题,C++)

题目描述 设计一个算法&#xff0c;判断玩家是否赢了井字游戏。输入是一个 N x N 的数组棋盘&#xff0c;由字符" "&#xff0c;“X"和"O"组成&#xff0c;其中字符” "代表一个空位。 以下是井字游戏的规则&#xff1a; 玩家轮流将字符放入空位…

专门为麻醉科和手术室开发的:手术麻醉系统源码,系统稳定,功能完整,支持二次开发

手术麻醉系统源码&#xff1a;C# .net 桌面软件 C/S版 系统极其稳定&#xff0c;扩展性强&#xff0c;已在多家医院运营。 文末获取联系 手术麻醉信息管理系统是专门为麻醉科和手术室开发的围手术期临床信息管理系统&#xff0c;具备以下功能: 1.手术程管理系统整合了手术室、…

人工智能实践: 基于T-S 模型的模糊推理

模糊推理是一种基于行为的仿生推理方法, 主要用来解决带有模糊现象的复杂推理问题。由于模糊现象的普遍存在, 模糊推理系统被广泛的应用。模糊推理系统主要由模糊化、模糊规则库、模糊推理方法以及去模糊化组成, 其基本流程如图1所示。

C++(继承下)

目录&#xff1a; 1.继承与有元 2.继承与静态成员 3.单继承、多继承 4.如何定义一个不能被继承的类&#xff1f;&#xff1f; 5.分享有意思的一道题 6.菱形继承及菱形虚拟继承 --------------------------------------------------------------------------------------------…

【c语言】全局变量 | 局部变量的生命周期与作用域

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…

亚马逊云科技赋能客户,为海思科打造安全高效的营销业务中台系统

羽翼渐丰&#xff0c;翱翔云端 携手亚马逊云科技&#xff0c;打造互联网级企业解决方案 秉承“为客户创造价值”的理念&#xff0c;在公司发展过程中&#xff0c;博智信息先后服务了众多知名企业&#xff0c;客户行业覆盖制造、零售、餐饮、科技、电子等。经过近20年的发展&a…

AutoGPT 是 prompt 工程的下一个前沿

前言 最近了解到Auto GPT的上线&#xff0c;下面我来整理一下整个体验过程&#xff0c;希望对大家有所帮助和启发。 首先Auto GPT是 OpenAI 的 Andrej Karpathy 都在大力宣传的一个开源项目&#xff0c;他认为 AutoGPT 是 prompt 工程的下一个前沿。 近日&#xff0c;AI 界貌…

自助式数据分析平台:jvs数据智仓-统计报表的使用条件及界面介绍

统计报表界面介绍 统计报表是指利用表格和报表等形式&#xff0c;将数据以清晰的结构和布局的方式呈现出来&#xff0c;以便用户进行数据分析和决策制定的一种BI统计方法。表格式的BI统计通常采用交叉表格、分组表、报表等形式&#xff0c;对数据进行整合、分析和展示&#xff…

【数据库数据恢复】ndf文件损坏的SQL SERVER数据库数据恢复案例

数据库数据恢复环境&#xff1a; 某公司存储上部署SQL SERVER数据库&#xff0c;数据库中有1000多个文件&#xff0c;该SQL SERVER数据库每10天生成一个NDF文件&#xff0c;数据库包含两个LDF文件。 数据库故障&分析&#xff1a; 存储设备出现故障导致SQL SERVER数据库异常…

IDEA实用设置

1、设置全局编码统一为UTF-8 file>setting中搜索框输入file encoding修改格式为UTF-8 2、设置文字大小 file>setting中搜索框输入font修改字体大小 3、配置maven file>setting中搜索框输入maven修改maven的路径、conf文件、文件仓库 4、idea中实现Serializable提示…

RabbitMQ通讯方式

RabbitMQ通讯方式 RabbitMQ提供了很多中通讯方式&#xff0c;依然可以去官方查看&#xff1a;https://rabbitmq.com/getstarted.html 七种通讯方式 1 RabbitMQ提供的通讯方式 Hello World!&#xff1a;为了入门操作&#xff01;Work queues&#xff1a;一个队列被多个消费者…

三十五、垃圾回收器

一、GC分类于性能指标 垃圾回收器的分类 1.串行回收指的是在同一时间段内只允许有一个CPU用于执行垃圾回收操作&#xff0c;此时工作线程被暂停&#xff0c;直至垃圾收集工作结束。 1)在诸如单CPU处理器或者较小的应用内存等硬件平台不是特别优越的场合&#xff0c;串行回收器…

WRF模式应用:天气预报、模拟分析观测气温、降水、风场、水汽和湿度、土地利用变化、土壤及近地层能量水分通量、土壤、水体、植被等相关气象变量

查看原文>>>高精度气象模拟软件WRF(Weather Research Forecasting)技术及案例应用 目录 区域气候模式理论知识梳理 Linux操作系统WRF模式系统实际操作 模式调试及运行 模式操作及案例实践 实际应用及案例分析 Python在WRF模型自动化运行及前后处理中的实践技术…

为什么在马云成功前就有那么多影像留下来?

马云创业的各个阶段&#xff0c;都有意无意得到媒体的推波助澜&#xff0c;不光是影像&#xff0c;还留下了很多相关的文字报道。站在当时的角度&#xff0c;马云或许并不总是以一种成功人士的身份出现&#xff0c;但即便如此&#xff0c;他做事情也足够新潮、足够前卫、或者足…

Delphi 知识 彻底搞懂Delphi中的匿名方法

前言&#xff1a; 顾名思义&#xff0c;匿名方法是一个没有与之相关的名字的过程或函数。一个匿名方法将一个代码块视为一个实体&#xff0c;可以分配给一个变量或作为一个方法的参数使用。此外&#xff0c;匿名方法可以引用变量&#xff0c;并在定义该方法的上下文中为变量绑定…

Off-CPU分析

前言 性能问题可以分为两种类型&#xff1a; On-CPU&#xff1a;线程花时间在CPU上运行的地方&#xff1b; Off-CPU&#xff1a;在I/O&#xff0c;锁&#xff0c;计数器&#xff0c;分页/交换上阻塞等待的时间 Off-CPU的分析是一种性能分析的方法&#xff0c;用于测量和研究Off…

java懒加载实现

懒加载&#xff0c;也称为“不需要”加载&#xff0c;是一种内存管理方式。在 Java中&#xff0c;当一个类不再使用时&#xff0c;就会将其转化为另一个类对象。这也是所谓的“垃圾回收”。java中的懒加载有三种方式&#xff1a; 3、在对象被回收时&#xff0c;会将其销毁。 在…

DIY可视化必看教程 FLEX组件使用,教大家如何布局界面

DIY可视化必看教程FLEX组件使用 水平布局实现、两端对齐 1、拖个FLEX组件过来&#xff0c;排列方向改为水平。 2、拖个文件内容组件进去、栅格化到0 3、复制多一个文本内容组件 4、修改FLEX组件显示对齐方式 5、图标对齐 6、修改FLEX组件对齐方式 7、修改中间占位大&#xff0…

Windows 11 本地 php环境搭建:PHP + Apache + MySQL 安装和环境配置

目录 前言1. PHP 的下载、安装和配置1.1 下载 php1.2 安装 php1.3 配置 php 系统变量1.4 配置 php.ini 2. Apache 的下载、安装和配置2.1 下载 Apache2.2 安装 Apache2.3 修改配置 Apache2.4 指定服务端口&#xff08;非必须&#xff09;2.5 配置系统变量2.6 安装服务2.7 启动服…