- 博客(633)
- 收藏
- 关注
原创 页高速缓存与缓冲区缓存的应用差异
在现代操作系统中,页高速缓存和缓冲区缓存通常协同工作,共同提高系统的I/O性能和数据访问效率。页高速缓存的应用场景。缓冲区缓存的应用场景。
2025-01-25 21:36:45 116
原创 详解磁盘IO调度算法与页高速缓存的搭配
总之,磁盘I/O调度算法和页高速缓存是相辅相成的关系,前者主要针对磁盘I/O操作的调度优化,后者主要解决内存与磁盘之间的数据缓存和访问优化问题,共同提升系统整体性能。
2025-01-25 18:18:09 95
原创 美di简化表演式工作,你中了几条?
如下是跟美di上班的小友聊天时发给我的内部消息原文 :关于集团下发的简化工作方式的要求,请各部门严格落实。任何不以用户为中心、不以业务为中心、不以一线为中心,不产生价值,不增加收入的工作都属于表演式工作,需要全员果断简化,把节约的时间去做对用户有价值的事。1、 美di内部沟通严禁PPT,含工作沟通、总结规划、述职、答辩、评优等。2、 严禁让他人代写材料,自己的材料自己写。3、 严禁下班时间开会、形...
2025-01-25 14:35:42 115
原创 linux文件系统与面向记录文件系统差别
面向记录的文件系统与Linux文件系统存在多方面的差异,具体如下:数据组织形式访问方式存储管理应用场景可扩展性和灵活性。
2025-01-24 15:32:32 207
原创 公司的C代码必须用静态工具检一遍~
正文大家好,我是bug菌~不知道大家在平时的嵌入式软件开发中是否有使用过代码工程静态分析工具。就是在不实际运行代码的情况下,对代码进行分析和检查,说白了就是根据经验和一些算法提前预测一些潜在问题,所以也不能完全依赖它解决所有bug。以前开发流程虽然比较全面,但中间没人把控,也没有精力去管,所以这些工具基本上形同虚设。随着团队越来越来大,产品稳定性要求越来越高,代码规范和质量逐步拿出来评级,团队也就...
2025-01-22 21:02:23 345
原创 yocto中require与include的差异
来引入一些通用的、可复用的配置元素,以实现高效的构建系统配置和维护。同时,要注意文件的结构和依赖关系,确保在使用这些语句时,所引入的文件不会导致配置冲突或循环依赖的问题。可以使你的机器配置更加清晰和易于管理。根据你的具体需求,你可以选择使用。在 Yocto 构建系统中,合理使用。来处理有依赖关系的配置文件,使用。
2025-01-22 10:28:53 12
原创 详细介绍下linux内核的高端地址
32位系统的地址空间是4GB。其中,内核空间通常占据1GB,用户空间占3GB。但物理内存可能超过1GB,为了让内核能够访问超出1GB的物理内存,引入高端地址。在32位系统中,内核空间通常占据1GB,用户空间占3GB,这主要是基于历史原因、内存管理需求和系统安全性考虑。高端地址在现代Linux内核内存管理中扮演着重要角色,尤其在32位系统中,是内核访问大容量物理内存的关键机制。那那什么又是linux内核高端地址呢?
2025-01-19 22:20:53 505
原创 马斯克这招聘 : Just show us your code ~
大家好,我是bug菌~最近马斯克推送的一段招聘信息推文又引起了科技圈的大量关注和讨论。推文翻译过来就是:如果你是一名硬核的软件工程师,并且想构建万能的app,请加入我们,并且将你最厉害的作品发送至code@x.com我们不关心你在哪里上学,甚至也不关心你是否上过学,或者是否在所谓的"大牌"公司工作过.只需要把你的代码拿出来秀一秀~可以说乍一看这样的招聘是非常接地气的,不由得让大家想起来以前linu...
2025-01-16 21:24:14 270
原创 linux应用程序实现类似于RT-Thread的finsh
通过telnet连接到服务器并发送命令的详细步骤。这种方法将实现一个简单的服务器-客户端模型,服务器运行你的命令行解释器,客户端通过telnet连接到服务器并发送命令。
2025-01-16 14:32:43 151
原创 高性能MCU嵌入脚本语言挺需要的~
正文大家好,我是bug菌~前段时间跟大家聊过现在的MCU是越来越强了,<现在的MCU都这么强了吗?>,性能越强,当然责任也就越大,干的活自然也就要多点,随着RTOS及配套中间软件的发展,现在MCU早已经不是早期的8位单片机样子了,而更多的像MPU去掉MMU的阉割版,其实也可以看到现在MPU芯片市场受到了MCU的冲击,也纷纷提供了非MMU的裸机方案,或者带MCU的异构方案,也真是不容易呀...
2025-01-14 21:15:56 557
原创 处理处理器的重排问题
总之,虽然重排是一个需要关注的问题,但通过合理的编程方法和工具的使用,可以在保证代码正确性的同时,减少对重排问题的过度担忧和繁琐处理。遵循良好的编程实践和规范。性能优化阶段再考虑细节。利用高级语言特性和库。
2025-01-13 23:57:26 168
原创 linux的大内核锁与顺序锁
顺序锁包含一个顺序计数器和一个锁。但随着内核的发展和多核处理器的普及,大内核锁的粒度较粗,会导致严重的性能瓶颈,因为它会限制多个处理器同时访问内核资源。只有获取了锁的进程才能执行临界区的代码,完成对内核资源的访问,访问结束后释放锁,以便其他进程可以获取锁并访问相应资源。在一些特定的情况下,如内核初始化阶段,或者对一些全局的、不适合使用更细粒度锁的资源进行访问时,仍然会使用大内核锁。适合于写操作相对较少、读操作频繁的场景,如内核中的一些数据结构,像网络设备的统计信息等,频繁被读取但偶尔才会被更新。
2025-01-13 22:24:11 526
原创 Linux 中断下半部,软中断、tasklet 和工作队列
中断下半部概述:中断处理程序分上下两部分,上半部在关闭中断下执行时间敏感、与硬件相关且不能被打断的工作;下半部在开启中断下执行,可被打断,包括软中断、tasklet 和工作队列三种,用于处理相对耗时任务,避免中断嵌套导致请求丢失。软中断(softirq)基本原理:是中断处理程序开启中断时执行部分,可被硬中断抢占。内核有软中断向量表,每种软中断对应一个 softirq_action 实例,其 action 成员为处理函数。种类与优先级:内核定义 10 种软中断,如 HI_SOFTIRQ
2025-01-11 17:02:35 325
原创 linux中断下半部分中早期的BH处理与软中断处理的区别
Linux中断下半部分中早期的BH处理与软中断处理有以下区别:执行方式资源管理可扩展性适用场景。
2025-01-11 12:42:01 188
原创 linuxC语言从Http服务器上获得文件
在Linux环境下使用C语言从HTTP服务器获取文件,可以借助libcurl库来实现。libcurl是一个功能强大的开源库,支持多种协议,包括HTTP。以下是一个简单的示例代码,展示了如何使用libcurl。
2025-01-07 19:22:43 310
原创 linux内核默认不支持中断嵌套
快速中断处理程序运行时会屏蔽所有其他中断,而普通中断在处理时可以允许特定类型的中断嵌套。例如,一些系统将时钟中断等关键中断配置为可以在普通中断处理期间嵌套进来,以确保系统时钟的准确性。:当Linux内核进入一个中断服务函数时,会自动屏蔽当前CPU上的中断,使得其他中断无法打断正在执行的中断服务函数。:通过配置内核编译选项,可以使能中断嵌套。例如,在编译内核时,启用“CONFIG_PREEMPT_RT”选项,该选项旨在打造一个更具实时性的内核,允许高优先级的中断打断低优先级的中断处理程序,从而实现中断嵌套。
2025-01-06 22:22:09 523
原创 OS的随机数生成过程中的内核熵池
内核熵池(Kernel Entropy Pool)是操作系统内核中用于收集和管理熵(随机性来源)的机制 ,在操作系统的随机数生成过程中发挥关键作用。内核熵池收集和管理熵的过程涉及多个环节。
2025-01-06 22:09:21 963
原创 从设计哲学了解linux为何如此强~
正文大家好,我是bug菌~在这个软件开源的时代,对于大部分嵌入式软件开发者来说并不需要从零去设计和编写一个软件,不管是内核包括嵌入式linux或RTOS等实时操作系统,还是一些驱动库、设计模式及框架基本都可以找到合适的开源项目,并且还存在大量的开源代码应用示例等。那么如何完美地利用这些资源来帮助我们开发项目呢?最基本的便是知道它是干啥的,提供了哪些API服务供功能使用,然而有时候并不是非常契合,我...
2025-01-06 21:03:35 737
原创 为什么linux内核在设置进程状态时需要设置内存屏障
保证内存操作顺序性在多处理器系统中,不同处理器可能同时对进程状态等共享内存进行操作。内存屏障可以确保在设置进程状态的操作前后,内存访问的顺序按照程序预期进行。例如,当内核设置进程状态为“就绪”,这个操作可能涉及到多个内存位置的写入(如进程控制块中的状态位、调度队列相关指针等),内存屏障能够保证这些写入操作不会被处理器以无序的方式执行。确保其他处理器看到最新状态处理器有自己的缓存,没有内存屏障时,一个处理器对进程状态的修改可能只在自己的缓存中完成,而其他处理器无法立即看到这个最新状态。内存
2025-01-04 15:59:15 195
原创 在Yocto中增加时区文件
在Yocto中增加时区文件通常可以按照以下步骤:1. 确定时区数据来源时区数据通常来自tzdata包。确保在Yocto构建配置文件(通常是local.conf或类似的配置文件)中包含tzdata包。如果没有包含,可以通过添加 IMAGE_INSTALL_append = " tzdata" 之类的语句将其添加到镜像安装包列表中。2. 配置时区设置脚本(如果需要)有些情况下,可能需要编写脚本来设置系统的默认时区。
2025-01-03 19:40:00 116
原创 使用systemd采用.service文件方式启动的应用程序在后台执行
当使用systemd通过.service文件启动应用程序时,应用程序默认没有与传统意义上的终端直接关联。
2025-01-03 11:27:21 545
原创 linux下的/usr可不是user而是Unix Software Resource
usr 目录,这里的usr 不是 user 的缩写,而是 Unix Software Resource 的缩写。
2025-01-01 22:42:45 556
原创 makefile中config.mk的作用及其用法
通常是一个用于配置Makefile相关设置的文件,在项目构建过程中具有以下重要作用:这样在主Makefile中就可以直接使用这些变量,使主Makefile更简洁,并且如果需要修改某个配置(如更换编译器或者调整编译选项),只需在中修改一处即可,提高了项目的可维护性。定制化构建:不同的用户或构建场景可能有不同的需求,比如开发者在开发阶段可能需要更多的调试信息,而发布版本则需要优化编译选项。通过修改中的配置,可以轻松实现不同的构建配置,而无需修改主Makefile的核心逻辑。3. 项目模块化和复用模
2024-12-29 15:50:51 489
原创 手把手教你makefile把编译的文件放在同一个文件夹中
通过以上步骤,就可以将编译生成的文件都放在同一个指定的文件夹中。如果项目涉及库文件等其他类型的编译产物,也可以按照类似的方式将其生成到指定目录。
2024-12-28 17:43:50 662
原创 uboot与kernel通常不位于安全secure区域
综上所述,U - Boot和内核的位置需要根据系统的具体安全需求和设计架构来确定,既可以都在非安全区域,也可以部分或全部位于安全区域,以满足不同场景下的安全和性能要求。
2024-12-28 17:36:23 1160
原创 身边无处不在的ubuntu系统~
正文大家好,我是bug菌~1见 闻没错,最近发现很多设备都直接上的ubuntu,比如:这个加油站⛽️的Ubuntu崩了~地铁候车显示大屏又报错了~是的,你会想为啥ubuntu老报错,其实不然,而是因为只有报错的设备你才察觉到,它竟然用的是Ubuntu系统,如果是windows你就会见怪不怪了,因为大部分的人windows天天都在用,奔了大不了重启吧~其实很多项目或者设备在前期设计的时候都会对这...
2024-12-24 21:31:19 1023
原创 rt-linux中使用mlockall与free的差异
后,动态申请内存的释放逻辑与常规情况一致,但物理内存的释放会受到锁定状态的影响。在使用完毕后,应适时调用。后,动态申请的内存并非绝对得不到释放,但与常规内存释放相比,存在一些特殊情况和注意事项。释放锁定的物理内存,以确保系统内存资源的合理利用。
2024-12-24 15:08:27 266
原创 学习一下USB DFU
USB DFU(USB Device Firmware Upgrade,USB设备固件升级)是一种用于在USB设备上进行固件更新的标准化协议。
2024-12-24 00:46:08 774
原创 解读Makefile中,`=`、`:=`、`?=` 和 `+=`差异
在Makefile中,:=?和+=是用于定义和操作变量的不同赋值运算符,它们各自有其特点和用途。
2024-12-23 22:19:10 377
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人