Linux 内核
文章平均质量分 79
mightZhong
这个作者很懒,什么都没留下…
展开
-
内核中的并发
一、自旋锁(spinlock)和互斥体(mutex)是保护内核临界区的两种基本机制。 1)自旋锁: 自旋锁可以确保在同一时间只有一个线程进入临界区。其他想进入临界区的线程必须不断地在原地打转,知道第一个线程释放自旋锁。 #inclu原创 2011-09-16 19:57:30 · 1377 阅读 · 0 评论 -
list_for_each_entty函数
在Linux内核源码中,经常要对链表进行操作,其中一个很重要的宏是list_for_each_entry:意思大体如下: 假设下面几个结点,则第一个member代表head,list_for_each_entry的作用就是循环遍历每一个pos中的member子项。list_for_each_entry应用: 它实际上是一个 for 循环,利用传入的转载 2012-03-26 14:56:31 · 854 阅读 · 0 评论 -
kmalloc()和vmalloc()介绍
kmalloc()用于申请较小的、连续的物理内存1. 以字节为单位进行分配,在中2. void *kmalloc(size_t size, int flags) 分配的内存物理地址上连续,虚拟地址上自然连续3. gfp_mask标志:什么时候使用哪种标志?如下:———————————————————————————————-情形 相应标志————————————————转载 2012-03-25 19:13:27 · 963 阅读 · 0 评论 -
深入分析 Linux 内核链表
一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序性和组织链的空间损失。通常链表数据结构至少应包含两个域:数据域和指针域,数据域用于存储数据,指针域用转载 2012-03-26 23:07:58 · 679 阅读 · 0 评论 -
Linux系统对IO端口和IO内存的管理
一、I/O端口 端口(port)是接口电路中能被CPU直接访问的寄存器的地址。几乎每一种外设都是通过读写设备上的寄存器来进行的。CPU通过这些地址即端口向接口电路中的寄存器发送命令,读取状态和传送数据。外设寄存器也称为“I/O端口”,通常包括:控制寄存器、状态寄存器和数据寄存器三大类,而且一个外设的寄存器通常被连续地编址。 二、IO内存 例如,在P转载 2012-01-19 21:28:07 · 4941 阅读 · 0 评论 -
io端口与io内存
驱动程序编写过程中,很少会注意到IO Port和IO Mem的区别。虽然使用一些不符合规范的代码可以达到最终目的,这是极其不推荐使用的。结合下图,我们彻底讲述IO端口和IO内存以及内存之间的关系。主存16M字节的SDRAM,外设是个视频采集卡,上面有16M字节的SDRAM作为缓冲区。1. CPU是i386架构的情况在i386系列的处理中,内存和外部IO是独立编址,也是转载 2012-01-19 21:10:37 · 1288 阅读 · 0 评论 -
Linux常见数据结构之链表
链表是一种常见的重要数据结构,它可以动态地进行存储分配,根据需要开辟内存单元,还可以方便地实现数据的增加和删除。链表中的每个元素都由两部分组成:数据域和指针域。 其中,数据域用来存储数据元素的信息,指针域用来存储该元素的直接后继元素的位置。其整体结构就是用指针相链接起来的线性表,如下图所示:下面通过实例说明单链表使用方法,在该实例中可实现在任意位置增加或删除结点。#incl原创 2011-09-25 21:25:07 · 1164 阅读 · 0 评论 -
内核中断机制
中断是Linux内核驱动程序中非常重要的地方,但实际上,中断处理程序也没有什么与众不同的地方,它们也就是普通的C程序。 唯一独特的地方就是处理程序是在中断时间内运行的,因此它的行为会受到一些限制。这些限制与我们的内核定时器中看到的一样。 a)处理例程不能想用户空原创 2011-09-17 10:18:43 · 1727 阅读 · 0 评论 -
Linux与其他类Unix内核的比较
单块内核(Monolithic kernel)它是一个庞大、复杂的自己做(do-it-yourself)程序,构成几个逻辑上独立的成分。在这一点上,它是相当传统的,大多数商用Unix变体也是单块结构。(一个显著的例外是卡耐基-梅隆大学的Mach 3.0,它遵循微内核(micr转载 2011-09-16 10:49:50 · 804 阅读 · 0 评论 -
优先级反转
优先级翻转发生的条件: 1、首先发生翻转需要有三个任务,它们的优先级分别是高、中、低。 2、低优先级和高优先级都需要take同一个信号量。 优先级翻转的过程: 1、低优先级先take到信号量。 2、低优先级被中优先级任务抢占原创 2011-09-17 20:26:45 · 717 阅读 · 0 评论 -
Linux 2.6内核新变化
内核抢占 内核抢占补丁在2.5系列中就已经被打上,接下来在2.6中也会打。这将显著地降低用户交互式应用程序、多媒体应用程序等类似应用程序的延迟。这一特性对实时系统和嵌入式系统来说特别有用。 2.5的内核抢占模块的工作由 Robert Love 完成。在先前的内核版本转载 2011-09-18 15:39:05 · 785 阅读 · 0 评论 -
嵌入式内功.葵花宝典
欲练神功,挥刀自宫 话说东方不败得到《葵花宝典》以后,迫不及待地翻开第一页,面对“欲练神功,引刀自宫”八个大字倒吸了一口凉气。苦苦思索了七天七夜之后终于痛下决心,喀嚓一声,引刀自宫。强忍著身体的剧痛,怀著凝重的心情,东方不败缓缓翻开了第二页,映入眼帘的又是八个大字:“若不转载 2011-09-17 20:15:08 · 885 阅读 · 0 评论 -
8086 cpu寄存器
8086 CPU 中寄存器总共为 14 个,且均为 16 位 。即 AX,BX,CX,DX,SP,BP,SI,DI,IP,FLAG,CS,DS,SS,ES 共 14 个。而这 14 个寄存器按照一定方式又分为了通用寄存器,控制寄存器和段寄存器。通用寄存器:AX,BX,CX,DX 称作为数据寄存器: AX (Accumulator):累加寄存器,也称之为累加器; BX (B转载 2013-07-25 22:29:03 · 2082 阅读 · 0 评论