
操作系统
文章平均质量分 92
aFakeProgramer
Adaptive AUTOSAR的技术专家,2024 AUTOSAR中国官方TOP培训讲师,具备深厚的汽车行业知识和以太网通信技能。SOME/IP、IPC、DDS、DoIP、UDS、TSN和SOA架构,MQTT,加密,操作系统,v2x,以及c++和Python编程语言。
展开
-
深入理解上下文切换的机制
上下文切换是操作系统实现多任务并发的基石,但其性能开销不可忽视。理解其底层机制(寄存器保存、内存管理状态切换)和优化策略(减少切换、轻量级线程),对开发高性能系统(如实时系统、高并发服务器)至关重要。原创 2025-02-26 10:45:09 · 1030 阅读 · 0 评论 -
详细了解操作系统,进程调度策略,有哪几种?
先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。短作业(进程)优先调度算法SJ(P)F,是指对短作业或短进程优先调度的算法。转载 2023-11-06 11:50:25 · 518 阅读 · 0 评论 -
QNX入门-简介、开源代码、框架文档
通过一个透明的开发过程,QNX的软件设计师将公布开发计划,新的源码,以及出错修改,并对开发进程进行监控。进行了隔离,内核和各种驱动、协议栈在同一个地址空间,应用程序在单独空间。,”Dan Dodge,QNX软件系统公司首席执行官说,“所有的商业开发者以及爱好者,都将史无前例地接触我们的软件中的‘皇冠上的珠宝’,并以此为基础来创造下一代的计算机技术革新。QNX 内核自身开销小、上下文切换快,在同样的硬件条件下给实时应用留下更大的余地,因而它在实时控制、通信、多媒体信息处理等对时间敏感的应用领域大有用武之地。转载 2023-10-06 16:32:06 · 7213 阅读 · 0 评论 -
一文搞懂 CPU 使用率
用户 CPU 和 Nice CPU 高,说明用户态进程占用了较多的 CPU,所以应该着重排查进程的性能问题。系统 CPU 高,说明内核态占用了较多的 CPU,所以应该着重排查内核线程或者系统调用的性能问题。I/O 等待 CPU 高,说明等待 I/O 的时间比较长,所以应该着重排查系统存储是不是出现了 I/O 问题。软中断和硬中断高,说明软中断或硬中断的处理程序占用了较多的 CPU,所以应该着重排查内核中的中断服务程序。转载 2023-09-12 11:24:47 · 7876 阅读 · 0 评论 -
Linux 中断( IRQ / softirq )基础:原理及内核实现
CPU 通过时分复用来处理很多任务,这其中包括一些硬件任务,例如磁盘读写、键盘输入,也包括一些软件任务,例如网络包处理。在任意时刻,一个 CPU 只能处理一个任务。当某个硬件或软件任务此刻没有被执行,但它希望 CPU 来立即处理时,就会给 CPU 发送一个中断请求 —— 希望 CPU 停下手头的工作,优先服务“我”。中断是以事件的方式通知 CPU 的,因此我们常看到 “XX 条件下会触发 XX 中断事件” 的表述。两种类型:外部或硬件产生的中断,例如键盘按键。转载 2023-08-21 10:46:29 · 1504 阅读 · 0 评论 -
十分钟了解RTOS!
任务或 ISR 将信息传递给另一个任务,这称为任务间通信,用于发送和接收消息的服务通常由内核提供。如此多的供应商,困难在于选择合适的RTOS。在抢占式内核中,当一个事件使高优先级的任务就绪时,当前任务立即挂起,较高优先级的任务获得CPU控制权。如果ISR使更高优先级的任务就绪,则被中断的任务挂起,恢复执行新的更高优先级的任务。是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系 统作出快速响应,并控制所有实时任务协调一致运行的操作系统。转载 2023-08-17 14:56:49 · 696 阅读 · 0 评论 -
五分钟扫盲:进程与线程基础必知
举个例子,QQ 和 Chrome 浏览器是两个进程,Chrome 进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。先到的人锁上门,后到的人看到上锁,就在门口排队,等锁打开再进去。所谓进程的上下文切换,就是说各个进程之间是共享 CPU 资源的,不可能一个进程永远占用着 CPU 资源,不同的时候进程之间需要切换,使得不同的进程被分配 CPU 资源,这个过程就是进程的上下文切换,转载 2023-08-11 11:30:04 · 96 阅读 · 0 评论 -
Linux中的进程栈、线程栈、内核栈以及中断栈
进程栈线程栈内核栈中断栈一、进程栈进程栈是属于用户态栈,和进程 虚拟地址空间 (Virtual Address Space) 密切相关。那我们先了解下什么是虚拟地址空间:在 32 位机器下,虚拟地址空间大小为 4G。这些虚拟地址通过页表 (Page Table) 映射到物理内存,页表由操作系统维护,并被处理器的内存管理单元 (MMU) 硬件引用。每个进程都拥有一套属于它自己的页表,因此对于每个进程而言都好像独享了整个虚拟地址空间。转载 2023-05-30 15:57:49 · 500 阅读 · 0 评论 -
嵌入式开发:CSA是什么?
比如:某个CPU的运行状态如下,此时,有3个CSA可用,FCX指向CSA3,CSA3通过Link Work指向CSA4,CSA4通过Link Work指向CSA5,CSA5指向空(没有可用的CSA)。展开讨论之前,回顾一下Cortex内核运行机制,发生中断或者Trap时,程序需要先保护现场信息,将现场信息压栈(Push),之后程序跳转到中断服务例程执行对应程序,处理完异常后,程序返回现场,恢复现场信息,即:出栈(Pop)。工程中,针对不同的CPU,根据实际情况划分每个CPU的CSA区域大小与起始地址。转载 2023-05-30 15:52:28 · 1289 阅读 · 0 评论 -
软件定义汽车时代下,智能汽车软件架构逐步向 SOA 演进
自2013 年,公司基于积累多年的操作系统优化技术、优秀的 3D 引擎、机器视觉、以及语音和音频技术,为汽车提供从操作系统开发、核心技术授权到应用定制的包括汽车娱乐系统、智能仪表盘、集成驾驶舱、ADAS 和音频产品在内的整体智能驾驶舱软件解决方案和服务,为驾乘者提供丰富、先进的智能驾驶体验。伴随着汽车电子电气架构的演变以及“软件定义汽车” 理念的兴起,公司紧密围绕汽车智能化、网联化、电动化的发展趋势,致力于构建以车载操作系统为核心的基础软件平台,以软件驱动汽车数字化转型,为用户提供全新的驾乘体验及服务。转载 2023-05-26 10:21:27 · 1051 阅读 · 0 评论 -
linux内核提高系统实时性,Linux操作系统实时性分析及改进策略
实时操作系统要求具有速度快和可预测性的特点,必须保证实时任务在要求的时间内完成。本文在分析Linux操作系统的中断方式和进程调度等影响实时性的因素后,对Linux的实时性策略进行改进,提出了双内核解决方案。关键词:Linux 实时性 调度 双内核1 前言实时系统可以定义为"一个能够在事先指定或确定的时间内完成系统功能和对外部或内部、同步或异步事件作出响应的系统"。实时操作系统 (Realtime OS)是实时系统中使用的操作系统。转载 2023-05-11 15:04:15 · 1702 阅读 · 0 评论 -
汽车操作系统的趋势
操作系统提供计算机硬件和应用程序之间的接口。这限制了应用程序通过遵循编程到操作系统中的规则和程序来使用硬件。该操作系统还包括简化应用程序开发和执行的服务。这些服务包括管理应用程序将使用的所有硬件资源——将程序加载到内存中、与传感器和执行器通信、存储结果以及许多其他功能。还有许多其他软件功能被视为操作系统的一部分,包括所谓的中间件、库和其他系统软件。操作系统功能和生态系统对于开发软件定义车辆所需的应用程序和软件平台也很重要。转载 2023-05-05 15:34:16 · 731 阅读 · 0 评论 -
漫谈QNX(架构/进程,线程,同步,进程间通信IPC)
架构说起Blackberry的QNX操作系统, 想必大家都听说过,但到底为什么QNX能如此有名?难道微软的Windows和Linux都不能与之抗衡?美国NASA的太空接驳飞船也使用QNX操作系统QNX采用微内核结构,也就是说,内核非常非常非常小。这样一方面启动速度非常快,另一方面安全性稳定性大大提高。QNX构架是有一个微型内核,然后又包含许多相关进程。这样的好处是,即使有一个进程出错,也不会影响内核。各个服务进程以及应用进程之间通过内部进程通信IPC的方式进行沟通,如下图:Q转载 2021-06-22 13:35:20 · 18749 阅读 · 0 评论 -
谈谈Bootloader自更新
汽车控制器的BootLoader(下文简称Boot)主要作用是更新App程序。以往在不打开控制器的情况下,是无法更新Boot。随着主机厂对车上各控制器要求实现OTA功能,App备份、Boot自更新的需求也随之到来。App备份和Boot自更新是两个重要的功能,接下来主要先来梳理一下Boot自更新。01.SupplierBoot(SB)+CustomerBoot(CB)通常情况下,供应商都有自己的平台软件,包括Boot和Appl。而各主机厂都有自己不同的软件升级规范,为了适配主机厂的需求,通...转载 2022-05-14 20:00:37 · 1452 阅读 · 0 评论 -
微内核和宏内核以及混合内核
如此一来,整个系统运行过程就成了这样:在系统启动时,内核将所有内存保存到一个叫做基本的系统进程 (basic system process) 当中,当然这个所谓有基本进程是运行在用户空间中的,如果其它进程需要内存,就是再需要从内核中获取,它可以直接向这个基本的系统进程索取。,但是对于内核来说,3GB-4GB的线性地址空间对整个内核都是共用的,同时内核中的VFS、System Call等模块被划分到内核中,它们之间的地址空间是相同的,这里的用户服务按照我的理解就是这几个内核模块所需要的报备,如上图所示。转载 2023-03-30 11:19:35 · 2595 阅读 · 0 评论 -
VLAN 基础知识
这些被分割的数据,“发送的目标”是完全相同的。新建VLAN时,为了对应增加的VLAN所需的端口,就必须将路由器升级成带有多个LAN接口的高端产品,这部分成本、还有重新布线所带来的开销,都使得这种接线法成为一种不受欢迎的办法。并且,VLAN越多,楼层间(严格地说是交换机间)互联所需的端口也越来越多,交换机端口的利用效率低是对资源的一种浪费、也限制了网络的扩展。交换机2收到数据帧后,经过检查VLAN标识发现这个数据帧是属于红色VLAN的,因此去除标记后根据需要将复原的数据帧只转发给其他属于红色VLAN的端口。转载 2023-03-10 18:09:46 · 573 阅读 · 0 评论 -
如何提高Linux的实时性
新的28Kb微内核提供以下服务:核心启动和停止、底层内存管理、出错处理、中断处理、多任务、底层同步和互斥支持。包括,Telnet、Ftp、tftp、PPP、SLIP、实时调度的嵌入式Java虚拟机、嵌入式HTTP server、bootp、ARP/RARP、DNS域名服务、电子邮件、Perl、电话通信协议等。* 多种总线:CompactPCI、EISA、ISA 、MPE (RadiSys)、STD、STD 32、PC/104、PC/104-Plus、PCI、PCMCIA、VESA、VME。转载 2023-03-02 15:59:07 · 464 阅读 · 0 评论 -
王道考研操作系统笔记
https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI0OTI2MjY2MQ==&action=getalbum&album_id=2277770340510515206&scene=173&from_msgid=2247485843&from_itemidx=2&count=3&nolastread=1#wechat_redirecthttps://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI0OTI2MjY2MQ==&ac转载 2023-02-28 14:04:32 · 134 阅读 · 0 评论 -
Makefile教程(绝对经典)
其实每个步骤都有自己的工具(这些工具可能通过芯片厂商自己的编译工具集成好了,比如gcc就集成好了预编译器,编译器,汇编器等,通过不同的指令可以调用不用的工具)。如果你们电脑上安装了MinGW包的话,会在bin下面看到很多与编译相关的exe,比如:g++.exe,c++.exe, x86_64-w64-mingw32-g++.exe等.链接:把以上生成的各种.o/,或者依赖库,一起“打包”组成一个最终可以执行的文件(或者一个中间文件.a,然后各个.a在继续链接生成可执行文件)。这些exe非常有用。转载 2023-02-22 14:37:24 · 500 阅读 · 0 评论 -
QNX实时操作系统
QNX和RTAOS的差别,对于笔者来说最直接的区别就是,一个是加拿大的黑莓公司的,一个是ETAS的(查了下ETAS,貌似是博世的一个子公司)。相比于RTAOS,由于MMU的使用,QNX更凸显进程和线程的概念,而RTAOS,软件直接运行在内存上(也可以说LMA和VMA是相同的,虚拟内存地址和加载内存地址),没有MMU,所以还是主要凸显Task的概念。黑莓QNX软件组合,包括我们的安全预认证产品版本,是专门为嵌入式系统设计的,并可扩展到支持从单一用途的设备到高度复杂的混合关键性平台。转载 2023-02-22 14:37:32 · 1509 阅读 · 0 评论 -
CPU超线程技术到底有什么用?
可以这样说,超线程是一种可以将CPU内部暂时闲置处理资源充分“调动”起来的技术,奔腾4 HT处理器多加入了一个逻辑处理单元,这让CPU可以同时执行多个程序而共享一颗CPU内的资源,如:ALU、FPU、缓存等,当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续,因此超线程的性能并不等于两颗CPU的性能。比CMT粗粒度多线程复杂一些,它随时可以在每个时钟周期内切换多个线程,以追求最大的输出能力,当然,随时可以切换也是有代价的,它拉长了每个执行线程的平均执行时间。转载 2023-02-17 18:42:55 · 4830 阅读 · 0 评论 -
自旋锁和互斥锁的区别
(1)、互斥锁mutex:独占锁;开销大(2)、自旋锁spin lock:轻量级的锁,开销小;适用于短时间内对锁的使用。如果自旋锁已经被其他的执行单元保持,调用者就一直循环在那里判断该自旋锁是否被释放注意:对于自旋锁spin lock,如果递归调用过深,会导致死锁。转载 2023-02-17 15:12:26 · 646 阅读 · 0 评论 -
何为CPU的亲和性
CPU的亲和性,进程要在某个给定的 CPU 上尽量长时间地运行而不被迁移到其他处理器的倾向性,进程迁移的频率小就意味着产生的负载小。亲和性一词是从affinity翻译来的,实际可以称为CPU绑定。在多核运行的机器上,每个CPU本身自己会有缓存,在缓存中存着进程使用的数据,而没有绑定CPU的话,进程可能会被操作系统调度到其他CPU上,如此CPU cache(高速缓冲存储器)命中率就低了,也就是说调到的CPU缓存区没有这类数据,要先把内存或硬盘的数据载入缓存。转载 2023-02-13 10:37:18 · 2203 阅读 · 0 评论 -
指令流水线
为提高处理器执行指令的效率,把一条指令的操作分成多个细小的步骤,每个步骤由专门的电路完成的方式指令流水线是为提高处理器执行指令的效率,把一条指令的操作分成多个细小的步骤,每个步骤由专门的电路完成的方式。转载 2023-02-13 10:23:17 · 875 阅读 · 0 评论