![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux内核相关
linuxer_zxp
专注于Linux内核及驱动开发!
展开
-
PS 打印出的进程状态
D 不可中断 Uninterruptible sleep (usually IO) R 正在运行,或在队列中的进程 S 处于休眠状态 T 停止或被追踪 Z 僵尸进程 W 进入内存交换(从内核2.6开始无效) X 死掉的进程 < 高优先级 N 低优先级 L 有些页被锁进内存 s 包含子进程 + 位于后台的进程组; l ...原创 2021-04-21 09:54:44 · 308 阅读 · 1 评论 -
伙伴系统算法
一、Buddy(伙伴的定义): 这里给出伙伴的概念,满足以下三个条件的称为伙伴: 1)两个块大小相同; 2)两个块地址连续; 3)两个块必须是同一个大块中分离出来的; 二、Buddy算法的分配原理: 假如系统需要4(2*2)个页面大小的内存块,该算法就到free_area[2]中查找,如果链表中有空闲块,就直接从中摘下并分配出去。 如果没有,算法将顺着数组向上查找free_area[3],如果free_area[3]中有空闲块,则将其从链表中摘下,分成等大小的两部分,前四个页面...原创 2021-04-13 11:23:12 · 1241 阅读 · 0 评论 -
Linux中的RCU机制的原理
基本原理 RCU的基本思想是这样的:先创建一个旧数据的copy,然后writer更新这个copy,最后再用新的数据替换掉旧的数据。这样讲似乎比较抽象,那么结合一个实例来看或许会更加直观。 假设有一个单向链表,其中包含一个由指针p指向的节点: 现在,我们要使用RCU机制来更新这个节点的数据,那么首先需要分配一段新的内存空间(由指针q指向),用于存放这个copy。 然后将p指向的节点数据,以及它和下一节点[11, 4, 8]的关系,都完整地copy到q指向的内存区域中。 接下来,write转载 2021-02-05 11:30:23 · 1335 阅读 · 0 评论 -
2.6版Linux内核结构体指定初始化
在阅读GNU/Linux内核代码时,我们会遇到一种特殊的结构初始化方式。该方式是某些C教材(如谭二版、K&R二版)中没有介绍过的。这种方式称为指定初始化(designated initializer)。下面我们看一个例子,Linux-2.6.x/drivers/usb/storage/usb.c中有这样一个结构体初始化项目:static struct usb_driver usb_storage_转载 2010-05-20 10:19:00 · 647 阅读 · 0 评论 -
Linux的帧缓冲设备
<br />参见:<br />http://blog.ednchina.com/exbob/254847/message.aspx<br />Linux的帧缓冲设备 <br />帧缓冲(framebuffer)是 Linux 为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在<br />图形模式下直接对显示缓冲区进行读写操作。这种操作是抽象的,统一的。用户不必关心物理显存的位置、换页机<br />制等等具体细节。这些都是由Framebuffer 设备驱动来完成的。帧缓冲驱动的应用广泛,在转载 2010-08-23 23:56:00 · 1196 阅读 · 0 评论