linux kernel 基础
aaronychen
性格适中,爱好运动
展开
-
Linux对I/O端口资源的管理
Linux对I/O端口资源的管理摘要 本文主要从内核实现的角度分析Linux 2.4.0内核IO子系统中对IO端口资源的管理的实现原理。本文是为那些想要深入分析Linux的IO子系统的读者和设备驱动程序开发人员而写的。(2002-10-08 14:14:05)By 阿开 Copyright © 2002 by 詹荣开 E-mail:zhanrk@sohu.com Linux-2.4.0转载 2008-01-29 21:47:00 · 1339 阅读 · 0 评论 -
内核中的 likely() 与 unlikely()
在 2.6 内核中,随处可以见到 likely() 和 unlikely() 的身影,那么为什么要用它们?它们之间有什么区别? 首先要明确: if(likely(value)) 等价于 if(value) if(unlikely(value)) 也等价于 if(value)也就是说 likely() 和 unlikely() 从阅读和理解转载 2008-08-28 10:49:00 · 1158 阅读 · 0 评论 -
inux内核引导参数
1.“boot=” 此参数指明包含引导扇区的设备名(如:/dev/had),若此项忽略,则从当前的根分区中读取引导扇区。2.“root=” 此参数告诉内核启动时以哪个设备作为根文件系统使用,其设定值为构造内核时根文件系统的设备名,可用的设备名有: (1)/dev/hdaN~/dev/hddN:ST-506兼容硬盘,a到d上的N个分区 (2)/dev/sdaN~/dev/sdeN:SCS转载 2008-08-01 10:08:00 · 1249 阅读 · 0 评论 -
Linux内核可装载模块对设备驱动的影响
从 2.4 到 2.6,Linux 内核在可装载模块机制、设备模型、一些核心 API 等方面发生较大改变,设备驱动开发人员面临着将驱动从 2.4 移植到 2.6 内核,或是使驱动同时支持2.4 与 2.6 内核的任务。站在设备驱动开发人员的角度,驱动由一个或几个外部可加载内核模块组成,本文针对 2.6 内核里模块机制的改变对编写设备驱动程序的影响,从内核模块的编译、装载时的版本检查、初始化与退出、转载 2008-05-08 10:37:00 · 982 阅读 · 0 评论 -
System.map详解
system.map内容格式为:线性地址 类型 符号具体内容如下: 00100000 A phys_startup_32 c0100000 T startup_32 c0100000 A _text 注:表示内核代码第一个字节的地址 c01000c6 t checkCPUtype c0100147 t is486 c010014e t is386 c0100199原创 2008-05-08 10:36:00 · 5190 阅读 · 0 评论 -
Linux内存管理
Linux内存管理摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存地使用方法。力求从外自内、水到渠成地引导网友分析Linux地内存管理与使用。在本章最后我们给出一个内存映射地实例,帮助网友们理解内核内存管理与用户内存管理之间地关系,希望大家最终能驾驭Linux内存管理。前言内存管理一向是所有操原创 2008-05-08 10:31:00 · 1509 阅读 · 1 评论 -
Linux中断解析
Linux中断解析摘要:本章将向读者依次解释中断概念,解析Linux中的中断实现机理以及Linux下中断如何被使用。作为实例我们第一将向《i386体系结构》一章中打造的系统加入一个时钟中断;第二将为大家注解RTC中断,希望通过这两个实例可以帮助读者掌握中断相关的概念、实现和编程方法。中断是什么中断的汉语解释是半中间发生阻隔、停顿或故障而断开。那么,在计算机系统中,我们为什么需要“阻隔、转载 2008-05-07 13:51:00 · 1462 阅读 · 0 评论 -
arch,processor和mach的关系
解读内核时,有很多近似的词需要区分。不能正确理解将会陷入一片混乱状态。这3个词,我们不给出中文。直接描述其含义。arch:内核目录里面有专用的目录,代表了一种架构。arch是硬件里面最大的分类,那些硬件可以归到同一个arch里面呢?这个取决于指令集。 采用相同硬件指令集的处理器属于同一个arch。同时arch的种类决定了gcc的种类,不同的arch目录必须采用不同的gcc编译。编译arm架构,转载 2008-04-30 10:41:00 · 1263 阅读 · 0 评论 -
中断与软中断简要分析
中断与软中断简要分析在分析linux内核的中断,软中断时,先应该明确这样一个派生关系:irq ==> softirq ==> tasklet ==> bottom half ==> task queue------------------------|==> timer中断是最初的原动力。分时系统依赖于时钟中断来定时重新调度可以运行的程序。外设通过中断来通知cpu处理相关的任务。中断处原创 2008-04-30 10:35:00 · 1297 阅读 · 0 评论 -
Linux 初始 RAM 磁盘(initrd)概述
Linux 初始 RAM 磁盘(initrd)概述 学习 initrd 的剖析转载 2008-04-09 15:13:00 · 2120 阅读 · 0 评论 -
读写某个设备上的寄存器的过程
以2.6.22为例, 访问某个设备上的寄存器的一般步骤为(假设该寄存器的物理地址为 phy_addr,要访问的大小为个4字节, 这可从datasheet上查到):1 res_mem = request_mem_resouce(phy_addr, 4, "name"); 这个函数检查以phy_addr开始的4个字节是否在系统的资源树中可用, 如可用则申请它, 如不可用则返回失败.2 vir原创 2008-03-18 15:55:00 · 3401 阅读 · 0 评论 -
如何交叉编译应用程序,技巧,注意事项
如何交叉编译应用程序,技巧,注意事项。最近大家都涉及交叉编译应用程序,感觉大家的路子有点偏,觉得有必要纠正一下。 一般的应用程序编译的步骤无外呼 ./configure && make && make install 但是对于交叉编译不能照搬,尤其要注意不能轻易make install(当然如果指定了 --prefix就无所谓了, 否则可能会覆盖标准路径的程序就惨了) 这里有两个思路转载 2008-03-18 10:45:00 · 4062 阅读 · 0 评论 -
linux内核启动地址的确定
内核编译链接过程是依靠vmlinux.lds文件,以arm为例vmlinux.lds文件位于kernel/arch/arm/vmlinux.lds,但是该文件是由vmlinux-armv.lds.in生成的,根据编译选项的不同源文件还可以是vmlinux-armo.lds.in,vmlinux-armv-xip.lds.in。vmlinux-armv.lds的生成过程在kernel/arch/ar转载 2008-01-29 21:51:00 · 2144 阅读 · 0 评论 -
devfs、sysfs、udev介绍
devfs、sysfs、udev介绍一、devfslinux下有专门的文件系统用来对设备进行管理,devfs和sysfs就是其中两种。在2.6内核以前一直使用的是devfs,devfs挂载于/dev目录下,提供了一种类似于文件的方法来管理位于/dev目录下的所有设备,我们知道/dev目录下的每一个文件都对应的是一个设备,至于当前该设备存在与否先且不论,而且这些特殊文件是位于根文件系转载 2008-09-19 17:05:00 · 17017 阅读 · 5 评论