嵌入式中是否应该使用动态内存(嵌入式中是否应该使用动态内存)

嵌入式开发为什么不能使用malloc

大家好,嵌入式中是否应该使用动态内存相信很多的网友都不是很明白,包括不建议开启内存复用功能也是一样,不过没有关系,接下来就来为大家分享关于嵌入式中是否应该使用动态内存和不建议开启内存复用功能的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

本文目录

  1. 内存脚本是什么意思
  2. 什么是IO多路复用为什么需要IO多路复用
  3. 嵌入式中是否应该使用动态内存
  4. 旧笔记本的内存条有用吗

内存脚本是什么意思

内存脚本(或称内联脚本)是指将JavaScript代码直接嵌入到网页的HTML文档中的一种脚本编写方式。这种编写方式使用`<script>`标签将JavaScript代码放置在HTML文件中,而不是将JavaScript代码放置在外部的单独的.js文件中。内存脚本的好处是可以减少HTTP请求,从而提高页面加载速度。但这种做法也存在一些缺点,例如可维护性和代码复用性较差,同时也不利于缓存行为。

什么是IO多路复用为什么需要IO多路复用

首先,多路复用(multiplexing)是计算机里面很常见的一个概念,我觉得他的核心思想就是利用一组资源做很多件事。

常见的多路复用(multiplexing)除了网络编程里面的IO多路复用;还有计算机网络的时分多路复用,频分多路复用;还有操作系统里面的时间复用(Timemultiplexing,指在多个用户之间安排连续可重用的资源如CPU),空间复用(Spacemultiplexing,将多用途资源分配给几个用户,如内存(虚拟内存),磁盘空间(文件系统))

以下来自:

I/O多路复用技术(multiplexing)是什么?

下面说一下IO多路复用,IO多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态,比如调用select和poll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞直到超时。开一个线程处理就可以了,这样需要的线程数大大减少,减少了内存开销和上下文(PS:阻塞就是进程的一种状态,表示等待某个事件,如IO,对线程也一样)

这样在处理1000个连接时,只需要1个线程监控就绪状态,对就绪的每个连接切换的CPU开销。

实际上,IO复用函数的作用是:应用程序通过IO复用函数向内核注册一组事件,内核通过IO复用函数把其中的就绪事件通知给应用程序。

上图中,select/poll/epoll本身都是阻塞的,可以同时监听多个文件描述符,只要有一个文件描述符就绪,就立刻不阻塞。

嵌入式中是否应该使用动态内存

我的态度:

在嵌入式中(使用单片机MCU,且没有使用嵌入式操作系统)的系统中,不要动态分配内存。

原因:

(1)动态分配内存的风险大,容易导致系统崩溃,风险主要来自于动态分配的内存不进行释放(由于疏忽,或是执行过程中的异常,导致malloc后,不free),最终导致RAM访问越界,造成系统复位。我工作中就遇到过两次这种情况:一个是产品在现场几分钟后就会复位,最终查出来原因是,现场干扰导致程序malloc后进入异常处理分支,而这个分支没有free;第二次是做bootloader,加载的bin文件,总是无法正常运行,将malloc函数修改去掉以后,功能正常,原因不明。

(2)动态分配内存意义不大,动态分配内存的唯一作用就是内存的分时复用。但是这个作用大部分可以通过定义局部变量的方式实现。

因此,嵌入式系统,稳定性第一位,尽量不要使用malloc。

在公司看到嵌入式使用malloc的,我立刻会送他六字“别装逼,赶紧改”。

旧笔记本的内存条有用吗

有用。可以拆下来卖钱,虽然比较便宜但寥胜于无,也可以安装在其他需要更换内存条的笔记本电脑上。数量多的话肯定有人回收的。

好了,文章到此结束,希望可以帮助到大家。

基于嵌入式系统内存规划方法的研究

声明:本文内容来自互联网不代表本站观点,转载请注明出处:https://bk.77788889.com/12/97747.html

相关推荐