
linux内核
文章平均质量分 63
嵌入式小胖
一个自命不凡的电子厂打工仔
展开
-
glibc堆内存管理
概述 堆(heap)是指进程虚拟空间中由开发者动态分配的内存区域,它与栈不同,具有地址向上增长的特点,并且由开发者自己分配与释放。开发者一般通过malloc与free管理动态内存,而malloc和free其实是glibc动态内存管理的对外接口。 为了避免用户频繁使用系统调用带来的开...转载 2021-09-12 17:26:54 · 1054 阅读 · 0 评论 -
linux进程调度的基本知识(根据代码自己总结的)
linux调度器linux调度器是以模块方式提供的,调度器类有dl_sched_class rt_sched_class fair_sched_class idle_sched_class每个调度器都有相关的调度策略 调度类 描述 调度策略 dl_sched_class Deadline调度器 SCHED_DEADLINE rt_sched_class原创 2021-08-04 08:29:24 · 569 阅读 · 0 评论 -
linux同步机制-complete
linux驱动程序中可以使用的同步机制有很多,这里只介绍complete机制。1. 什么是complete?completion,它用于一个执行单元等待另一个执行单元执行完某事。Linux系统中与completion相关的操作主要有以下4种: (1) 定义completion struct completion my_completion; (2) 初始化completion init_completion(&my_...原创 2021-03-29 10:41:04 · 2085 阅读 · 0 评论 -
浅析linux内核printk的原理
通常,在调试linux驱动时,我们常用到printk函数来输出一些关键信息,来作为调试手段。但不知道大家有没有想过,内核中的printk是如何打印到我们的串口控制台的呢?原创 2021-03-09 17:16:36 · 2395 阅读 · 0 评论 -
malloc、kmalloc、kzalloc、vmalloc的区别
开发过linux应用程序的人都知道,在linux应用程序中,动态申请内存时用的函数是malloc(),malloc函数的原型是: malloc void *malloc(unsigned int num_bytes)如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。void* 表示未确定类型的指针,void *可以指向任何类型的数据,更明确的说是指申请内存空间时还不知道用户是用这段空间来存储什么类型的数据(比如是char还是int或者...)原创 2020-08-10 10:20:41 · 2617 阅读 · 0 评论