linux kernel
文章平均质量分 74
geekster
被教育业
展开
-
linux中 likely与unlikely
转自http://blog.csdn.net/tommy_wxie/article/details/7384641看内核时总遇到if(likely( )){}或是if(unlikely( ))这样的语句,最初不解其意,现在有所了解,所以也想介绍一下。likely() 与 unlikely()是内核(我看的是2.6.22.6版本,2.6的版本应该都有)中定义的两个宏。位于/inclu转载 2013-04-03 11:41:34 · 532 阅读 · 0 评论 -
内核中的原子上下文
内核的一个基本原则就是:在中断或者说原子上下文中,内核不能访问用户空间,而且内核是不能睡眠的。也就是说在这种情况下,内核是不能调用有可能引起睡眠的任何函数。一般来讲原子上下文指的是在中断或软中断中,以及在持有自旋锁的时候。内核提供了四个宏来判断是否处于这几种情况里:#define in_irq() (hardirq_count()) //在处理硬中断中#define in_sof转载 2013-10-09 09:59:56 · 780 阅读 · 0 评论 -
mmap详解
内存映射,简而言之就是将内核空间的一段内存区域映射到用户空间。映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,相反,内核空间对这段区域的修改也直接反映用户空间。那么对于内核空间与用户空间两者之间需要大量数据传输等操作的话效率是非常高的。当然,也可以将内核空间的一段内存区域同时映射到多个进程,这样还可以实现进程间的共享内存通信。系统调用mmap()就是用来实现上面说的内存映射。最转载 2013-10-08 13:23:59 · 1375 阅读 · 0 评论 -
linux字符设备驱动总结之:全自动创建设备及节点
/*************************************************************************************************** linux字符设备驱动总结之:全自动创建设备及节点看了LDD3,深入浅出LDD,以及各个博文,还是需要总结下的。张永辉 2012年10月9转载 2013-09-08 21:46:43 · 647 阅读 · 0 评论 -
linux中的 IO端口映射和IO内存映射
CPU地址空间(一)地址的概念1)物理地址:CPU地址总线传来的地址,由硬件电路控制其具体含义。物理地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上 (如显存、BIOS等)。在程序指令中的虚拟地址经过段映射和页面映射后,就生成了物理地址,这个物理地址被放到CPU的地址线上。 物理地址空间,一部分给物理RAM(内存)用,一部分给总线用,这是由硬件设计来转载 2013-09-08 19:56:22 · 6289 阅读 · 0 评论 -
class_create() & device_create
本章节将介绍 class_create class_destroy 使用下一章介绍“device_create device_destroy 使用==mknod及通过class_create自动创建设备节点”========================================================================struct cla转载 2013-09-08 21:13:38 · 1298 阅读 · 0 评论 -
dev、devfs、 udev和sysfs之间的关系
一、/dev存储的是linux可以认识的所有的文件设备名,无论这个设备有没有在系统里。为了解决/dev目录过大的问题,就 产生了devfs,但devfs是基因内核的,有很多无法解决的问题(参考前面的文章),所以就出现了udev。而udev对设备在/dev目录下的命名 依赖于sysfs所提供的规则信息,这些规则信息由用户提供。sysfs是在2.6内核时加进linux内核的。sysfs就是我们系统加载转载 2013-09-08 20:58:59 · 1964 阅读 · 0 评论 -
klogd和syslogd
我们可以看到LINUX系统信息日志的途径基本有以下2种:1>dmesg查看----这个命令比较常见2>/var/log/下的文件那下面我们就从这个2个途径着手,一步步的走下去.首先,我们来看dmesg这个常见的命令背后隐藏的是什么!!1> 先让我们来MAN一下这个家伙从LINUX提供的手册,我们可以得知一条最重要的信息dmesg是从kerne转载 2013-08-30 10:57:09 · 767 阅读 · 0 评论 -
mmap函数使用
UNIX网络编程第二卷进程间通信对mmap函数进行了说明。该函数主要用途有三个:1、将一个普通文件映射到内存中,通常在需要对文件进行频繁读写时使用,这样用内存读写取代I/O读写,以获得较高的性能;2、将特殊文件进行匿名内存映射,可以为关联进程提供共享内存空间;3、为无关联的进程提供共享内存空间,一般也是将一个普通文件映射到内存中。函数:void *mmap(void *star转载 2013-07-16 17:56:21 · 783 阅读 · 0 评论 -
关于Linux Cache与Direct IO
A file is simply a collection of data stored on media. When a process wants to access data from a file, the operating system brings the data into main memory, the process reads it, alters it and store转载 2013-06-25 20:49:49 · 1752 阅读 · 0 评论 -
Difference between Cache and Buffer
Key difference: A cache transparently stores data so that future requests for that data can be served faster. A buffer, on the other hand, temporarily stores data while the data is the process of mo转载 2013-07-03 17:28:12 · 800 阅读 · 0 评论 -
Nand Flash驱动, ECC, MTD, FTL, 文件系统
特点Nand flash存储结构为chip->(plane)->block->page>byte。page分为数据区和oob(out of band),oob用于存放ecc码、标记坏块和文件系统备用等。Nand flash的物理特性决定了每一个bit只能从1变为0,不能从0变为1。Nand flash在出厂和使用过程中可能出现某些bit错误,所以采用了ecc的纠错和检错方法。在转载 2013-05-28 22:00:24 · 5520 阅读 · 0 评论 -
VFS文件系统之二: VFS的数据结构
(1)基本概念 从本质上讲,文件系统是特殊的数据分层存储结构,它包含文件、目录和相关的控制信息。为了描述这结构,Linux引入一些基本概念:A,文件:一组在逻辑上具有完整意义的信息项的系列。另外,在Linux中,除了普通文件,其他诸如目录、设备、套接字等也以文件被对待。总之,“一切皆文件”。B,目录:目录好比一个文件夹,用来容纳相关文件。因为目录可以包含子目录,所转载 2013-05-28 21:59:11 · 834 阅读 · 0 评论 -
VFS文件系统之一:VFS与MTD
(1)VFS文件系统 操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:与文件管理有关的软件、被管理的文件以及实施文件管理所需的数据结构。一个分区或磁盘能作为文件系统使用前,需要初始化,并将记录数据结构写到磁盘上。这个过程就叫建立文件系统。嵌入式LINUX的文件系统包括如下:ext2、ext3、vfat、ntfs、iso9660、jf转载 2013-05-28 21:58:31 · 1078 阅读 · 0 评论 -
get_ds, set_fs, get_fs函数的使用
在linux内核编程时,进行系统调用(如文件操作)时如果要访问用户空间的参数,可以用set_fs,get_ds等函数实现访问。get_ds获得kernel的内存访问地址范围(IA32是4GB),set_fs是设置当前的地址访问限制值,get_fs是取得当前的地址访问限制值。进程由用户态进入核态,linux进程的task_struct结构中的成员addr_limit也应该由0xBFFFFFFF变为0转载 2013-05-16 22:39:53 · 850 阅读 · 0 评论 -
Linux内核--内核地址空间分布和进程地址空间
内核地址空间分布直接映射区:线性空间中从3G开始最大896M的区间,为直接内存映射区,该区域的线性地址和物理地址存在线性转换关系:线性地址=3G+物理地址。动态内存映射区:该区域由内核函数vmalloc来分配,特点是:线性空间连续,但是对应的物理空间不一定连续。vmalloc分配的线性地址所对应的物理页可能处于低端内存,也可能处于高端内存。永久内存映射区:该区域可访转载 2013-04-09 11:50:45 · 653 阅读 · 0 评论 -
为什么中断上下文不可以休眠
先把中断处理流程给出来1.进入中断处理程序--->2.保存关键上下文---->3.开中断(sti指令)--->4.进入中断处理程序的handler--->5.关中断(cli指令)---->6.写EOI寄存器(表示中断处理完成)---->7.开中断。复制代码硬中断:对应于上图的1、2、3步骤,在这几个步骤中,所有中断是被屏蔽的,如果在这个时候睡眠了,操作系统不转载 2013-09-24 22:08:21 · 1466 阅读 · 0 评论