- 博客(146)
- 资源 (22)
- 收藏
- 关注
转载 Linux内存管理(二):PTMalloc
1. ptmalloc简介2. 内存管理数据结构3. 内存分配4. 内存回收5. 配置选项6. 注意事项1. ptmalloc简介 Linux 中 malloc 的早期版本是由 Doug Lea 实现的,它有一个重要问题就是在并行处理时 多个线程共享进程的内存空间,各线程可能并发请求内存,在这种情况下应该如何保证分配 和回收的正确和高效。Wolfram Gloger 在 Doug Lea 的基础上改进使得 Glibc 的 malloc 可以支 持多线程——ptmalloc,在..
2022-07-29 16:36:59 772
转载 C++中struct和class
在C++中我们可以看到struct和class的区别并不是很大,两者之间有很大的相似性。那么为什么还要保留struct,这是因为C++是向下兼容的,因此C++中保留了很多C的东西。一.首先看一下C中struct1.struct的定义struct A{ int a; int b; //成员列表};注意:因为struct是一种数据类型,那么就肯定不能定义函数,所以在面向c的过程中,struct不能包含任何函数。否则编译器会报错面向过程的编程认为,数据和数据......
2022-07-29 16:35:36 712
转载 IO设计模式之Reactor和Proactor
前言上面文章中,我们提到不同的操作系统实现的io策略可能不一样,即使是同一个操作系统也可能存在多重io策略,常见如linux上的select,poll,epoll,面对这么多不同类型的io接口,这里需要一层抽象api来完成,所以就演变出来两种高性能的io的设计模式,分别是Reactor(同步IO)和Proactor(异步IO)。一般情况下,I/O 复用机制需要事件分享器(event demultiplexor)。 事件分离器的作用,即将那些读写事件源分发给各读写事件的处理者,就像送快递的小哥,拉着一
2022-03-29 17:34:51 341
转载 理解IO模型
前言在谈到IO模型之前,我们先来了解下Liunx里面的几个概念:User space(用户空间)和 Kernel space(内核空间)。Linux里面这么设计的目的主要是为了安全,即使用户空间崩溃了,内核也不受影响。所以在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。此外还要理解阻塞,非阻塞,同步,异步这几个概念,这里不再详细介绍,我之前的文章中非常详细的介绍过。说下目前
2022-03-29 17:32:48 163
转载 搞懂进程组、会话、控制终端关系,才能明白守护进程干嘛的?
守护进程概念:守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程。周期性的执行某种任务或等待处理某些发生的事件。Linux系统有很多守护进程,大多数服务都是用守护进程实现的。比如:像我们的tftp,samba,nfs等相关服务。UNIX的守护进程一般都命名为*d的形式,如httpd,telnetd等等。生命周期:守护进程会长时间运行,常常在系统启动时就开始运行,直到系统关闭时才终止。守护进程不依赖于终端从终端开始运行的进程都会依附于这个终端,这个终端称为
2022-03-17 15:02:03 624
转载 浅析长度为0的数组
Part1转自:浅析长度为0的数组 - 拾月彷徨的个人空间 - OSCHINA - 中文开源技术交流社区 长度为0的数组在标准c和c++中是不允许的,如果使用长度为0的数组,编译时会产生错误,提示数组长度不能为0。但在GNUc中,这种用法却是合法的。它的最典型的用法就是位于数组中的最后一项,如上面所示,这样做主要是为了方便内存缓冲区的管理。如果你将上面的长度为0的数组换为指针,那么在分配内存时,需采用两步:首先,需为结构体分配一块内存空间;其次再为结构体中的成员变量分配内存空间。这样两次分...
2022-03-12 17:22:45 1576
转载 类Unix系统中,fd指的啥?
一、文件描述符(File Descriptor)简介socket的fd指什么?fd 是(file descriptor)即文件描述符,这种一般是BSD Socket的用法,用在Unix/Linux系统上。fd全称是file descriptor,是进程独有的文件描述符表的索引。维基百科上介绍:file descriptors index into a per-process file descriptor table maintained by the kernel, that in tur
2022-03-11 02:08:31 861
转载 Linux进程优先级设置简介
在配合开发调试过程中,发现进程因使用基于FIFO的实时优先级,而另一个与之交互的进程是使用普通调度的优先级,两个进程是互相通信的,它们在工作一段时间后都不能正常工作。初步分析为进程优先级的设定问题,分析问题过程中查找了一些资料,以加强自己的理解。Linux进程调度的三种策略(1)、SCHED_OTHER,分时调度策略(2)、SCHED_FIFO,实时调度策略,先到先服务(3)、SCHED_RR,实时调度策略,时间片轮转由于涉及相关内容比较多,很难讲的清楚,关于进程调度更详细的内容建议读Linux内
2022-03-04 17:12:15 4006 1
转载 进程优先级详解(prio、static_prio、normal_prio、rt_priority)
进程优先级详解(prio、static_prio、normal_prio、rt_priority)
2022-03-04 16:48:37 3781 3
转载 函数重载,隐藏,重写
1.函数重载(Function Overload)1.1定义C++规定在同一作用域中,同名函数的形式参数(指参数的个数、类型或者顺序)不同时,构成函数重载。1.2用法比如,要从两个变量中返回其中较大的一个值,可以编写如下两个构成重载的函数。int max(int a,int b){ return a>b?a:b;};double max(double a,double b){ return a>b?a:b;}1.3注意事项(1)函数返回值类型
2021-10-20 12:48:00 623 1
转载 Linux 命令行快捷键
涉及在linux命令行下进行快速移动光标、命令编辑、编辑后执行历史命令、Bang(!)命令、控制命令等。让basher更有效率。常用ctrl+左右键:在单词之间跳转 ctrl+a:跳到本行的行首 ctrl+e:跳到页尾 Ctrl+u:删除当前光标前面的文字 (还有剪切功能) ctrl+k:删除当前光标后面的文字(还有剪切功能) Ctrl+L:进行清屏操作 Ctrl+y:粘贴Ctrl+u或ctrl+k剪切的内容 Ctrl+w:删除光标前面的单词的字符 Alt – d :由光标位置开始,.
2021-09-27 17:03:37 311
转载 为什么栈要比堆速度要快
大部分开发人员都知道栈和堆的区别, 网上搜索也有一大堆, 但是, 具体解释栈和堆的速度差异, 找到的信息却是寥寥无几, 而且, 也都比较混乱. 在这里, 就我所知的情况, 大致描述一下栈为什么要比堆快的原因.首先, 栈是由CPU提供指令支持的, 在指令的处理速度上, 对栈数据进行处理的速度自然要优于由操作系统支持的堆数据.其次,栈是在一级缓存中做缓存的, 而堆则是在二级缓存中, 两者在硬件性能上差异巨大.再者,栈是本着LIFO原则的存储机制, 对栈数据的定位相对比较快速, 而堆则是随机分配...
2021-09-27 09:34:45 1181
转载 Linux 进程、线程、文件描述符的底层原理
Linux 进程、线程、文件描述符的底层原理说到进程,恐怕面试中最常见的问题就是线程和进程的关系了,那么先说一下答案: 在 Linux 系统中,进程和线程几乎没有区别 。Linux 中的进程其实就是一个数据结构,顺带可以理解文件描述符、重定向、管道命令的底层工作原理,最后我们从操作系统的角度看看为什么说线程和进程基本没有区别。一、进程是什么首先,抽象地来说,我们的计算机就是这个东西:这个大的矩形表示计算机的内存空间,其中的小矩形代表进程,左下角的圆形表示磁盘,右下角的图.
2021-09-22 10:31:03 193
转载 sudo说明
sudo:暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。不过有时间限制,Ubuntu默认为一次时长15分钟。su:切换到某某用户模式,提示输入密码时该密码为切换后账户的密码,用法为“su账户名称”。如果后面不加账户时系统默认为root账户,密码也为超级账户的密码。没有时间限制。sudo-i:为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行该命令后...
2021-09-06 11:49:55 970
转载 Drive-by-Wire
Drive-by-Wire的意思,中文翻译是“电传线控”,但这个翻译其实也未尽理想,因为中文字每个字都有意义,眼睛看到“线控”二个字,脑海里就不由自主地浮起一条线、一条钢缆在拉动著控制油门的节流阀,然而,所谓的Drive-by-Wire的基础精神,正是要摆脱传统油门控制靠钢缆这种机械结构的锢制! Drive-by-Wire中文翻译“电传线控” 一般汽车的油门控制,乃是在踏下油门踏板之后,经由连杆拉动钢缆而控制汽门的节流阀,脚踩得愈深,钢缆拉动的幅度愈大,节流阀控制机构上的蝴蝶阀开启的角度也就
2021-09-01 11:42:37 306
转载 用Google的gflags优雅的解析命令行参数
写了这么多年的Linux下C/C++代码,一直使用getopt_long来解析命令行参数,同时定义一个全局的struct来保存各个命令行参数的值。虽然用得比较“繁琐”,但也安于现状。最近突然发现了Google早在多年前就开源了一个解析命令行参数的“神器”gflags。赶紧来爽一把。安装1、去官网下载一个最新的版本(gflags-2.1.1.tar.gz)。2、现在流行cmake的构建方式,gflags的最新版本也改为使用cmake了。还好我最近也刚刚学习了cmake,算是跟上了潮流。[amc
2021-08-27 17:58:08 482
转载 激光雷达分类
导读:机械式激光雷达、固态激光雷达、MEMS激光雷达、Flash面阵激光雷达、OPA固态激光雷达、混合固态激光雷达...如此多种激光雷达,你了解多少?激光雷达是一种通过发射激光束探测目标的位置、速度等特征量的雷达系统——激光波段位于0.5μm-10μm,以光电探测器为接收器件,以光学望远镜为天线。激光雷达因为激光波长短,准直性高,使得激光雷达性能优异:角分辨率和距离分辨率高、抗干扰能力强、能获得目标多种图像信息(深度、反射率等)、体积小、质量轻。目前激光雷达广泛应用在测绘、气象监测、安防、自
2021-08-27 14:47:51 1259
原创 分段内存管理模型
x86 CPU 在实模式下的寄存器。表中每个寄存器都是 16 位的。实模式下的寄存器实模式下访问内存虽然有了寄存器,但是数据和指令都是存放在内存中的。通常情况下,需要把数据装载进寄存器中才能操作,还要有获取指令的动作,这些都要访问内存才行,而我们知道访问内存靠的是地址值。那问题来了,这个值是如何计算的呢?计算过程如下图。实模式下访问内存结合上图可以发现,所有的内存地址都是由段寄存器左移 4 位,再加上一个通用寄存器中的值或者常数形成地址,然后由这个地址去访问内存。这就是大名鼎鼎的分.
2021-08-15 15:23:01 330
转载 更深入一点理解switch语句及c/c++对const的处理
更深入一点理解 switch 语句 及 c/c++ 对 const 的处理 谢煜波------------------------------------------------转载请注明原作者,以出处~~------------------------------------------------前段时间在论坛上看见台湾李维在<<Borland传奇>>一书中对windows编程模式中,消息处理部...
2021-08-11 10:55:25 274
转载 RDMA概述
1. DMA和RDMA概念1.1 DMADMA(直接内存访问)是一种能力,允许在计算机主板上的设备直接把数据发送到内存中去,数据搬运不需要CPU的参与。传统内存访问需要通过CPU进行数据copy来移动数据,通过CPU将内存中的Buffer1移动到Buffer2中。DMA模式:可以同DMA Engine之间通过硬件将数据从Buffer1移动到Buffer2,而不需要操作系统CPU的参与,大大降低了CPU Copy的开销。1.2 RDMARDMA是一种概念,在两个或者多个计算机进行通
2021-08-10 11:34:41 484
转载 图像bayer格式介绍以及bayer插值原理CFA
1、图像bayer格式介绍bayer格式图片是伊士曼·柯达公司科学家Bryce Bayer发明的,Bryce Bayer所发明的拜耳阵列被广泛运用数字图像。对于彩色图像,需要采集多种最基本的颜色,如rgb三种颜色,最简单的方法就是用滤镜的方法,红色的滤镜透过红色的波长,绿色的滤镜透过绿色的波长,蓝色的滤镜透过蓝色的波长。如果要采集rgb三个基本色,则需要三块滤镜,这样价格昂贵,且不好制造,因为三块滤镜都必须保证每一个像素点都对齐。当用bayer格式的时候,很好的解决了这个问题。bayer 格式图片在
2021-08-10 11:17:45 706
转载 YUV/RGB
工作中经常会使用一些颜色空间,最主要的就是使用RGB空间和YUV空间,把两空间的一些知识记录在此。1. 什么是RGB?RGB是红绿蓝三原色的意思,R=Red、G=Green、B=Blue。2.什么是YUV/YCbCr/YPbPr?亮度信号经常被称作Y,色度信号是由两个互相独立的信号组成。视颜色系统和格式不同,两种色度信号经常被称作U和V或Pb和Pr或Cb和Cr。这些都是由不同的编码格式所产生的,但是实际上,他们的概念基本相同。在DVD中,色度信号被存储成Cb和Cr(C代表颜色,b代表蓝色,r代表红
2021-08-05 18:06:35 222
转载 Docker容器进入的4种方式
Docker容器进入的4种方式 在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法。进入Docker容器比较常见的几种做法如下:使用docker attach 使用SSH 使用nsenter 使用exec一、使用docker attach进入Docker容器 Docker提供了attach命令来进入Docker容器。 接下来我们创建一个守护态的Dock..
2021-06-15 09:49:16 1236
转载 什么是所谓的车规级?
最近在做很多汽车电子产品和模块的实验,有朋友不解,为什么你做的实验要求125度,不禁解释到,汽车电子要求,朋友问那什么是车载级,说来听听!就以此文章作为解释!一对于汽车电子行业从业者,很多时候会说几个名词,什么汽车级,工业级,消费级,航天军工级等,其实都在说明一个问题,就是不同行业有不同的电子标准,千万不要混为一谈,否则必有麻烦!相对于工业级和商业级,汽车级产品价格普遍要高上一筹!究其原因主要是由于汽车电子价格较高,为什么高,高在哪里呢?二首先我们需要知道其适用场合区别!1环境要求
2021-05-19 17:53:32 1596
转载 异常和中断的区别
1>异常:是指CPU内部出现的中断,即在CPU执行特定指令时出现的非法情况。同时异常也称为同步中断,因此只有在一条指令执行后才会发出中断,不可能在指令执行期间发生异常。a.产生的原因: 程序的错误产生的,编程异常通常叫做软中断(eg:除数为0) 内核必须处理的异常条件产生的(eg:缺页)产生的目的:Linux利用异常来达到两个截然不同的目的:·给进程发送一个信号以通报一个反常情况·管理硬件...
2021-05-06 20:44:03 1688
转载 OpenCL入门实践
(一)NDRange如何设置?Figure from 《Introduction to OpenCL》 Nivida,2010结合上图我们分析一下下面设置NDRange(Global Dimemsion Index Ranges)部分的代码。 123456 /* Set number of work-items in a work-group */size_t localWorkSize[1] = { 8 };int numWorkGroups
2021-04-15 13:48:57 800 1
转载 ARM体系架构下的同步操作
处理器在访问共享资源时,必须对临界区进行同步,即保证同一时间内,只有一个对临界区的访问者。当共享资源为一内存地址时,原子操作是对该类型共享资源同步访问的最佳方式。随着应用的日益复杂和SMP的广泛使用,处理器都开始提供硬件同步原语以支持原子地更新内存地址。CISC处理器比如IA32,可以提供单独的多种原子指令完成复杂的原子操作,由处理器保证读-修改-写回过程的原子性。而RISC则不同,由于除Load和Store的所有操作都必须在寄存器中完成,如何保证从装载内存地址到寄存器,到修改寄存器中的值,再到将寄存器
2021-04-07 11:43:54 934
转载 Linux的原子操作与同步机制
Linux的原子操作与同步机制并发问题现代操作系统支持多任务的并发,并发在提高计算资源利用率的同时也带来了资源竞争的问题。例如C语言语句“count++;”在未经编译器优化时生成的汇编代码为。当操作系统内存在多个进程同时执行这段代码时,就可能带来并发问题。假设count变量初始值为0。进程1执行完“mov eax, [count]”后,寄存器eax内保存了count的值0。此时,进程2被调度执行,抢占了进程1的CPU的控制权。进程2执行“count++;”的汇编代码,将累加后的.
2021-04-07 11:31:59 175
转载 APB总线学习汇总
APB总线学习汇总APB简介APB(Advanced Peripheral Bus),外围总线。APB属于AMBA 3 协议系列,它提供了一个低功耗的接口, 并降低了接口的复杂性。 APB接口用在低带宽和不需要高性能总线的外围设备上。 APB是非流水线结构,所有的信号仅与时钟上升沿相关,这样就可以简化APB外围设备的设计流程,每个传输至少耗用两个周期。APB可以与AMBA高级高性能总线(AHB-Lite) 和AMBA 高级可扩展接口 (AXI)连接。APB主要用于低带宽的周边外设之间的连.
2021-03-26 11:45:25 1644
转载 AXI总线学习汇总
AXI总线学习汇总0.绪论AXI是高级扩展接口,在AMBA3.0中提出,AMBA4.0将其修改升级为AXI4.0。AMBA4.0 包括AXI4.0、AXI4.0-lite、ACE4.0、AXI4.0-streamAXI4.0-lite是AXI的简化版本,ACE4.0 是AXI缓存一致性扩展接口,AXI4.0-stream是ARM公司和Xilinx公司一起提出,主要用在FPGA进行以数据为主导的大量数据的传输应用。1.简介1.1 关于AXI协议AMBA AXI协议支持支持高性能、.
2021-03-26 11:32:03 374
转载 AHB总线学习汇总
一、AHB的基本介绍AHB是ARM退出的AMBA总线系列中的其中一种,它是一种高性能的pipe系统总线。1. AHB总线有一下特性:nBurst传输nSplit事务处理n单周期master移交n单一时钟沿操作n无三态n更宽的数据总线配置(64/128)2. AHB总线系统的架构AHB总线的强大之处在于它可以将微控制器(CPU)、高带宽的片上RAM、高带宽的外部存储器接口、DMA总线master、各种拥有AHB接口的控制器等等连接起来...
2021-03-26 11:27:57 3130 1
转载 AMBA低功耗接口---Q_Channel
AMBA提供了,低功耗的接口。用于实现power控制功能。目前,AMBA里面,包含2种低功耗接口。 Q-Channel:实现简单的power控制,如上电,下电。 P-Channel:实现复杂的power控制,如全上电,半上电,1/4上电等。 ARM引入这2种低功耗接口,是为了满足不同的应用场景下,对power的控制。在一些场景下,组件只有两种power状态,分别为power-up,power-down。因此对这种组件的power控制,只需要对其上电,断电即可。用Q-Channel,即
2021-03-25 11:14:18 748
转载 图形程序接口知多少 | OpenGL、OpenCL、Vulkan、OpenGL ES、WebGL、Metal、Directx
计算机图形程序接口 |Graphics API对于普通的电脑玩家来说这是一个不重要的东西,但对于游戏开发、玩游戏做三维的人来说,这部分知识可能会常常被提及,尤其是涉及到游戏相关的。计算机图形程序接口是一套可编程的开放标准,3D\2D 都需要这部分底层的 API 支持。如果你是一名游戏开发者,没有借助图形 API 来开发游戏的话,这意味着你的游戏想要调用系统硬件(GPU)的时候,这部分的程序需要自己独立开发,这无疑是增加了游戏开发的成本。Graphics API 就是解决这一难题的,开发者只要输入很小的.
2021-03-24 16:20:07 2346
转载 BIN、HEX,ELF,AXF文件的区别
1.BinBin文件是最纯粹的二进制机器代码, 或者说是"顺序格式"。按照assembly code顺序翻译成binary machine code,内部没有地址标记。Bin是直接的内存映象表示,二进制文件大小即为文件所包含的数据的实际大小。 BIN文件就是直接的二进制文件,一般用编程器烧写时从00开始,而如果下载运行,则下载到编译时的地址即可。可以直接在裸机上运行。2.HexIntelhex文件常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般的编程器都支持..
2021-03-03 11:41:45 616
转载 理解公钥与私钥
转载自:https://songlee24.github.io/2015/05/03/public-key-and-private-key/一直都对公钥和私钥的概念不清不楚,以至于在 腾讯面试 被问到“如何在一个不安全的环境中实现安全的数据通信?”时,并没有答上来。今天查阅了一些资料,决定写一篇总结文章来加深自己的理解。一、公钥算法与私钥算法1、私钥算法私钥加密算法,又称对称加密算法,因为这种算法解密密钥和加密密钥是相同的。也正因为同一密钥既用于加密又用于解密,所以这个密钥是不能公开的。常.
2021-02-02 11:08:52 1816
转载 地址空间的故事
转载自:https://zhuanlan.zhihu.com/p/25999484每个程序都面对一个或者多个地址空间。你写一个程序,说*(0x1234)=10,这里就索引了一个地址。所有可以被索引的地址,就构成一个地址空间。一个CPU上的程序可能不止一个地址空间,比Intel支持LPC的指令,用inX和outX指令索引的地址空间和用movb索引的地址空间就是两个相对独立的地址空间。有些比如哈佛构架的CPU,访问指令和访问数据内存也会使用不同的地址空间。一般冯诺伊曼计算机访问内存的是同一套指令,这套指
2021-02-01 16:17:49 325
转载 ARM MMU工作原理剖析
转载自:http://news.eeworld.com.cn/mcu/article_24319.html一、MMU的产生许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称...
2021-02-01 15:22:00 282
转载 FRAM、NRAM、ReRAM
在一些特殊要求的电子产品领域,例如无限次的擦写次数、极快的读写速度或是极恶劣的温度环境下也不丢数据、存储可靠性极度高的特殊产品应用中,传统的存储技术已经不能满足客户需求。而FRAM、NRAM、ReRAM这样的下一代存储技术的出现,对于汽车、医疗、工业等具有特殊需求的行业应用,可满足客户的多种需求。而目前全球能同时具备FRAM、NRAM、ReRAM三种存储技术的厂商并不多,富士通就是其中之一。车载存储需求的增长,开始引起越来越多存储器厂商的重视。尽管汽车应用领域对安全性的要求严苛,要进入得克服许多挑战..
2021-01-25 11:14:08 2062
emmc_ddr_crc_check.c
2020-11-27
PartE7_iSDIO_Simplified_Specification_Ver1.10
2020-11-27
Part1_Physical_Layer_Simplified_Specification_Ver7.10.pdf
2020-11-27
Embedded Multi-Media Card (e•MMC) Electrical Standard (5.1)
2020-11-27
数字系统工程
2017-01-05
STMF103驱动SX1276
2015-11-21
基于运算放大器和模拟集成电路的电路设计(第3版)及答案
2015-06-30
用eclipse开发android的ADB.exe
2015-03-26
SublimeText_2.0.2.
2014-12-05
WampServer2.0i.exe
2014-02-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人