
linux相关
文章平均质量分 85
fzjcycp
这个作者很懒,什么都没留下…
展开
-
linux进程的睡眠和唤醒
在Linux中,仅等待CPU时间的进程称为就绪进程,它们被放置在一个运行队列中,一个就绪进程的状态标志位为TASK_RUNNING。一旦一个运行中的进程时间片用完, Linux内核的调度器会剥夺这个进程对CPU的控制权,并且从运行队列中选择一个合适的进程投入运行。 当然,一个进程也可以主动释放CPU的控制权。函数schedule()是一个调度函数,它可以被一个进程主动调用,从而调转载 2016-08-29 16:22:23 · 841 阅读 · 0 评论 -
linux内核中对链表的操作
我们知道list_for_each_entry会用到list_entry,而list_entry用到container_of,所以首先讲讲container_of。在讲container_of之前我们不得不提到offsetof,因为在container_of中会使用到它,所以我们看下来,把list_for_each_entry函数的用法理顺我们对整个Linux中经常用到的一些函原创 2016-09-06 15:56:18 · 539 阅读 · 0 评论 -
linux 双向循环链表(下)
1 双向链表在Linux内核中的实现过程 Linux内核对双向循环链表的设计非常巧妙,链表的所有运算都基于只有两个指针域的list_head结构体来进行。 [cpp] view plain copy/* linux-2.6.38.8/include/linux/types.h */ struct list_head {原创 2016-09-05 16:28:10 · 290 阅读 · 0 评论 -
Linux双向循环链表(上)
为了引出Linux中使用的循环链表,大家熟悉下一般的循环链表的情况,可能比较简单一般双向循环链表的实现 例子所用的结构体如下: [cpp] view plain copy#include #include typedef int data_type; typedef struct doubl原创 2016-09-04 21:33:12 · 347 阅读 · 0 评论 -
Linux内核链表
一、 链表数据结构基础链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序性和组织链的空间损失。通常链表数据结构至少应包含两个域:数据域和指针域,数据域用于存储数据,原创 2016-09-04 20:46:43 · 300 阅读 · 0 评论 -
Linux设备驱动之I/O端口与I/O内存
从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、并行接口、串行接口、AD接口……一个设备要想接入,就用自己的接口和总线上的某个匹配接口对接……于是总线上出现了各种设备:内存、硬盘,鼠标、键盘,显示器……对于CPU而言,如果它要发数据到某个设备,其实是发到对应的接口,接口电路里有多个寄存器(也称为端口原创 2016-09-03 19:55:57 · 1882 阅读 · 0 评论 -
Makefile使用总结
makefile使用总结转载 2016-09-11 21:35:57 · 190 阅读 · 0 评论 -
linux内核ioremap映射的透切理解
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:(1)I/O映射方式(I/O-mapped)典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的IN和O原创 2016-08-30 20:22:16 · 327 阅读 · 0 评论 -
linux内存操作————ioremap函数
对于一个系统来讲,会有很多的外设,那么这些外设的管理都是通过CPU完成。那么CPU在这个过程中是如何找到外设呢?尽管在一个系统中会有诸多的外设,在每个外设的接口电路中会有多个端口。但是如果系统能够每个端口都被赋予一个具体的地址值,那么在系统中就能轻易的找到任何一个外设。系统在管理的时候,不管是内存还是外设都需要分配一个内存地址。对于一个32bit的系统来讲,可寻址的范围为2^32=4G的地原创 2016-08-30 20:15:07 · 716 阅读 · 0 评论 -
linux中的物理地址,虚拟地址,总线地址的区别
1 逻辑地址《understanding the linux kernel》上的解释是与虚拟地址相关,基于硬件MMU与软件内存管理的一个概念,具体可以看UTLK的第二章内存寻址,有很详细的解释。但是工作中之前用到的MIPS架构的处理器的解释却有出入,在《MIPS体系架构透视》一书中,逻辑地址是跟MMU无关的,MIPS地址空间划分中,Kseg0 Kseg1地址空间与真实的原创 2016-09-11 09:59:31 · 3857 阅读 · 1 评论 -
linux设备模型之 kobject原理与实例分析
1、Sysfs文件系统 "sysfsis a ram-based filesystem initially based on ramfs. It provides ameans to export kernel data structures, their attributes, and thelinkages between them to userspace.”转载 2016-09-07 17:22:18 · 364 阅读 · 0 评论