![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux kernel
文章平均质量分 80
drizztzou
这个作者很懒,什么都没留下…
展开
-
Linux 内核的文件 Cache 管理机制介绍
文件 Cache 管理是 Linux 内核中一个很重要并且较难理解的组成部分。本文详细介绍了 Linux 内核中文件 Cache 管理的各个方面,希望能够对开发者理解相关代码有所帮助。1 前言自从诞生以来,Linux 就被不断完善和普及,目前它已经成为主流通用操作系统之一,使用得非常广泛,它与 Windows、UNIX 一起占据了操作系统领域几乎所有的市场份额。特别是在高性能计算领域,Li转载 2007-05-25 23:58:00 · 502 阅读 · 0 评论 -
基于PCI总线的中断机制研究
1 概述 高性能PC机一般以PCI总线为系统总线。由于PCI总线协议较为复杂,因此在开发PCI扩展卡时常采用专用的PCI接口芯片。常见的PCI接口芯片有AMCC公司的S59XX系列和PLX公司的PLX905X系列,其中PLX9052(文中称为9052)使用广泛。 在应用开发中,常常使用中断作为CPU和外设间交换数据的方式。但由于PCI总线具有即插即用特性,即PCI设备的存储器空间、I转载 2007-06-07 10:39:00 · 1168 阅读 · 1 评论 -
汇编语言超浓缩教程
对初学者而言,汇编的许多命令太复杂,往往学习很长时间也写不出一个漂漂亮亮的程序,以致妨碍了我们学习汇编的兴趣,不少人就此放弃。所以我个人看法学汇编,不一定要写程序,写程序确实不是汇编的强项,大家不妨玩玩DEBUG,有时CRACK出一个小软件比完成一个程序更有成就感(就像学电脑先玩游戏一样)。某些高深的指令事实上只对有经验的汇编程序员有用,对我们而言,太过高深了。为了使学习汇编语言有个好的开始,你必转载 2007-06-07 10:46:00 · 490 阅读 · 0 评论 -
Linux 2.6.19.x 内核编译配置选项简介
Code maturity level options代码成熟度选项Prompt for development and/or incomplete code/drivers 显示尚在开发中或尚未完成的代码与驱动.除非你是测试人员或者开发者,否则请勿选择 General setup常规设置Local version - append to kernel release 在内核版本后面加转载 2007-06-07 10:48:00 · 480 阅读 · 0 评论 -
udev与硬件抽象层HAL的实现原理
相对于linux来说,udev还是一个新事物。然而,尽管它03年才出现,尽管它很低调(J),但它无疑已经成为linux下不可或缺的组件了。udev是什么?它是如何实现的?最近研究Linux设备管理时,花了一些时间去研究udev的实现。 udev是什么?u 是指user space,dev是指device,udev是用户空间的设备驱动程序吗?最初我也这样认为,调试内核空间的程序要比调试用户空转载 2007-06-11 22:44:00 · 3539 阅读 · 1 评论 -
网络处理的软中断机制分析
内核默认软中断机制分析(process_backlog)首先需要介绍的就是netif_rx(在net/core/dev.c中定义)函数,这个函数在网卡驱动程序与linux内核之间建立了一道桥梁,将网卡接收上来的数据包(sk_buff形式)插入内核维护的接收缓冲区队列当中:int netif_rx(struct sk_buff *skb){ int this_cpu =转载 2007-06-11 23:30:00 · 1074 阅读 · 0 评论 -
Linux内核内存池管理技术实现分析
一、Linux系统内核内存管理简介 Linux将物理内存也划分成固定大小的页面,由数据结构page管理,有多少页面就有多少page结构,它们又作为元素组成一个数组mem_map[]。slab:在操作系统的运作过程中,经常会涉及到大量对象的重复生成、使用和释放问题。对象生成算法的改进,可以在很大程度上提高整个系统的性能。在Linux系统中所用到的对象,比较典型的例子是inod转载 2007-06-14 14:52:00 · 1543 阅读 · 0 评论 -
Linux设备轮询机制分析
一、设备轮询机制的基本思想所谓的设备轮询机制实际上就是利用网卡驱动程序提供的NAPI机制加快网卡处理数据包的速度,因为在大流量的网络环境当中,标准的网卡中断加上逐层的数据拷贝和系统调用会占用大量的CPU资源,而真正用于处理这些数据的资源却很少。一个基本的想法是对于大流量网络,如果发现一个DMA传输中断(这表明一个网络数据通过DMA通道到达了DMA缓冲区),则首先关闭网卡的中断模式,转载 2007-06-14 16:44:00 · 2514 阅读 · 0 评论 -
Linux内核NAPI机制分析
NAPI 是 Linux 上采用的一种提高网络处理效率的技术,它的核心概念就是不采用中断的方式读取数据,而代之以首先采用中断唤醒数据接收的服务程序,然后 POLL 的方法来轮询数据。随着网络的接收速度的增加,NIC 触发的中断能做到不断减少,目前 NAPI 技术已经在网卡驱动层和网络层得到了广泛的应用,驱动层次上已经有 E1000 系列网卡,RTL8139 系列网卡,3c50X 系列等主流的网络适转载 2007-06-11 23:25:00 · 1089 阅读 · 0 评论 -
Linux内核网络设备操作部分阅读笔记
一、网络设备的初始化网络设备初始化就是调用具有__init 前缀的net_dev_init函数完成的,网络设备初始化包含两个部分(在linux内核2.4办源代码分析大全一书的第550页有详细说明),就是:在系统初始化期间对系统已知的网络设备进行初始化过程,也就是,我们在编译内核时选择编入内核的那部分网卡设备就会在这个时候逐个进行初始化工作。系统中已知的网络设备都存储在一个全局表中,转载 2007-06-14 14:59:00 · 1239 阅读 · 0 评论 -
Linux内核&驱动学习笔记(二)
2007.6.14 pmLinux是如何管理内存的?今天系统的整理一下这个问题。 物理内存是如何组织的 如何分配和释放物理内存 虚拟内存到物理内存的映射 进程的地址空间是怎么样的 虚拟内存是如何组织的 如何分配和释放虚拟内存 启动时内存的分配 什么是slab 什么是页缓存 物原创 2007-06-14 16:49:00 · 1445 阅读 · 0 评论 -
Linux slab 分配器详解
良好的操作系统性能部分依赖于操作系统有效管理资源的能力。在过去,堆内存管理器是实际的规范,但是其性能会受到内存碎片和内存回收需求的影响。现在,Linux® 内核使用了源自于 Solaris 的一种方法,但是这种方法在嵌入式系统中已经使用了很长时间了,它是将内存作为对象按照大小进行分配。本文将探索 slab 分配器背后所采用的思想,并介绍这种方法提供的接口和用法。内存管理的目标是提供转载 2007-06-14 22:03:00 · 1081 阅读 · 0 评论 -
零拷贝技术研究与实现
一.基本概念零拷贝(zero-copy)基本思想是:数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现CPU的零参与,彻底消除CPU在这方面的负载。实现零拷贝用到的最主要技术是DMA数据传输技术和内存区域映射技术。如图1所示,传统的网络数据报处理,需要经过网络设备到操作系统内存空间,系统内存空间到用户应用程序空间这两次拷贝,同时还需要经历用户向系统发出的系统调用。而零转载 2007-06-11 22:21:00 · 1247 阅读 · 0 评论 -
大内高手--对内存的认识与使用
我一直认为作为一个在linux下工作的C程序员,若对内存有深刻的认识,不但程序的性能会更高,运行更稳定,编程速度也会更快。反之亦有相反的效果,有时一些内存错误让你摸不着头脑,不但大大降低开发速度,开发出来的软件稳定性也值得怀疑。 为了提高组员的编程水平,去年我制定了一系列的培训计划,并负责主讲部分重要课程,其中基础类课程中,有一堂关于内存的课程。当时的讲稿写得很粗略,后来的新同事说看不明白转载 2007-06-11 22:52:00 · 3997 阅读 · 0 评论 -
使用kgdb调试linux内核及内核模块
1. 几种内核调试工具比较kdb:只能在汇编代码级进行调试; 优点是不需要两台机器进行调试。gdb:在调试模块时缺少一些至关重要的功能,它可用来查看内核的运行情况,包括反汇编内核函数。kgdb:能很方便的在源码级对内核进行调试,缺点是kgdb只能进行远程调试,它需要一根串口线及两台机器来调试内核(也可以是在同一台主机上用vmware软件运行两个操作系统来调试)使用kdb和g原创 2007-06-11 23:16:00 · 1008 阅读 · 1 评论 -
Linux内核&驱动学习笔记(一)
2007.6.4.am今天讨论到内核启动阶段对外部设备初始化的过程,于是粗略的看了一下相关代码,得到以下一些印象(未必正确,希望大家指正):1.对外部设备初始化代码出现的地方应该是init()进程 (bootloader->start汇编->decompress->start_kernel()->rest_init()->kernel_thread()->init()原创 2007-06-04 15:12:00 · 497 阅读 · 0 评论 -
嵌入式Linux内核启动部分代码分析
本文通过整理之前研发的一个项目(ARM7TDMI +uCLinux),分析内核启动过程及需要修改的文件,以供内核移植者参考。整理过程中也同时参考了众多网友的帖子,在此谢过。由于整理过程匆忙,难免错误及讲解的不够清楚之处,请各位网友指正,这里提前谢过。本文分以下部分进行介绍:1. Bootloader及内核解压2. 内核启动方式介绍3. 内核启动地址的确定4. arch/armnommu/kerne转载 2007-06-04 13:49:00 · 691 阅读 · 0 评论 -
用U-BOOT构建嵌入式系统的引导装载程序
1 U-BOOT简介 U-BOOT是由德国的工程师Wolfgang Denk从8XXROM代码发展而来的,它支持很多处理器,比如PowerPC、ARM、MIPS和x86。目前,U-BOOT源代码在sourceforge网站的社区服务器中,Internet上有一群自由开发人员对其进行维护和开发,它的项目主页是http://sourceforge.net/projects/U-BOOT。U-BOOT转载 2007-06-07 10:53:00 · 751 阅读 · 0 评论 -
Linux 关机重启流程分析
linux下的关机和重启流程对于一般的桌面应用和网络服务器来说并不重要,但是在用户自己定义的嵌入式系统内核中就有一定的研究意义,通过了解Linux 关机重启的流程,我们对它可以修改和自定义,甚至以此为基础开发出全新的功能来。1.概述在linux下的关机和重启可能由两种行为引发,一是通过用户编程,一是系统自己产生的消息。用户和系统进行交互的方式也有两个,一个是系统调用:sys_reboot,转载 2007-05-26 09:19:00 · 694 阅读 · 0 评论 -
Linux bootloader 编写方法
对于移植 linux 到其它开发板的人来说,编写 boot loader 是一个不可避免的过程。对于学习linux的人来讲,编写 bootloader 也是一个很有挑战性的工作。本文通过对 linux引导协议进行分析,详细阐述了如何编写一个可以在 i386 机器上引导 2.4.20内核的基本的bootloader。1.概述linux运行在保护模式下,但是当机器启动复位的时候却处于实模式下。转载 2007-05-26 09:21:00 · 481 阅读 · 0 评论 -
Linux2.6 内核的 Initrd 机制解析
Linux 的 initrd 技术是一个非常普遍使用的机制,linux2.6 内核的 initrd 的文件格式由原来的文件系统镜像文件转变成了 cpio 格式,变化不仅反映在文件格式上, linux 内核对这两种格式的 initrd 的处理有着截然的不同。本文首先介绍了什么是 initrd 技术,然后分别介绍了 Linux2.4 内核和 2.6 内核的 initrd 的处理流程。最后通过对 Lin转载 2007-05-26 09:09:00 · 390 阅读 · 0 评论 -
Linux 引导过程内幕
引导 Linux® 系统的过程包括很多阶段。不管您是引导一个标准的 x86 桌面系统,还是引导一台嵌入式的 PowerPC® 机器,很多流程都惊人地相似。本文将探索 Linux 的引导过程,从最初的引导到启动第一个用户空间应用程序。在本文介绍的过程中,您将学习到各种与引导有关的主题,例如引导加载程序、内核解压、初始 RAM 磁盘以及 Linux 引导的其他一些元素。早期时,启动一台计算机意味着转载 2007-05-26 09:15:00 · 413 阅读 · 0 评论 -
Linux 调度器内幕
Linux® 内核继续不断发展并采用新技术,在可靠性、可伸缩性和性能方面获得了长足的发展。2.6 版本的内核最重要的特性之一是由 Ingo Molnar 实现的调度器。这个调度器是动态的,可以支持负载均衡,并以恒定的速度进行操作 —— O(1)。本文将介绍 Linux 2.6 调度器的这些属性以及更多内容。本文将回顾一下 Linux 2.6 的任务调度器及其最重要的一些属性。在深入介绍调度器的转载 2007-05-26 09:16:00 · 361 阅读 · 0 评论 -
嵌入式系统 Boot Loader 技术内幕
本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― Boot Loader 的概念、软件设计的主要任务以及结构框架等内容。1. 引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader转载 2007-05-26 09:18:00 · 494 阅读 · 0 评论 -
Linux 内核中的 Device Mapper 机制
本文结合具体代码对 Linux 内核中的 device mapper 映射机制进行了介绍。Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机制下,用户可以很方便的根据自己的需要制定实现存储资源的管理策略,当前比较流行的 Linux 下的逻辑卷管理器如 LVM2(Linux Volume Manager 2 version)、EVMS(En转载 2007-05-26 09:14:00 · 523 阅读 · 0 评论 -
DMA
Direct Memory Access(存储器直接访问)。这是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为"DMA控制器"的控制下进行的。CPU除了在数据传输开始和结束时做一点处理外,在传输过程中CPU可以进行其他的工作。这样,在大部分时间里,CPU和输入输出都处于并行操作。因此,使整个计算机系统的效率大大提高。转载 2007-06-01 10:43:00 · 418 阅读 · 0 评论 -
XScale PXA270在Linux下的FPGA设备驱动
摘要 以ACEX1K50为例,介绍FPGA在Intel XScale PXA270微处理器系统上的应用。通过内存映射机制实现ACEX1K50在Linux下的设备驱动;通过用户应用程序实现对ACEX1K50设备的操作,为FPGA在嵌入式领域的应用提供一种方法。引言 Intel公司推出的XScale采用ARM V5TE结构,是Strong ARM的升级换代产品。XScale PXA270处理器最转载 2007-06-05 16:13:00 · 859 阅读 · 0 评论 -
Linux网卡数据包的接收
一、从网卡说起这并非是一个网卡驱动分析的专门文档,只是对网卡处理数据包的流程进行一个重点的分析。这里以Intel的e100驱动为例进行分析。大多数网卡都是一个PCI设备,PCI设备都包含了一个标准的配置寄存器,寄存器中,包含了PCI设备的厂商ID、设备ID等等信息,驱动程序使用来描述这些寄存器的标识符。如下:转载 2007-06-07 10:30:00 · 3086 阅读 · 0 评论 -
在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
本系列文章包括两篇,它们文详细地介绍了 Linux 系统下用户空间与内核空间数据交换的九种方式,包括内核启动参数、模块参数与 sysfs、sysctl、系统调用、netlink、procfs、seq_file、debugfs和relayfs,并给出具体的例子帮助读者掌握这些技术的使用。本文是该系列文章的第一篇,它介绍了内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink,并结转载 2007-06-07 10:35:00 · 639 阅读 · 0 评论 -
在 Linux 下用户空间与内核空间数据交换的方式,第 2 部分: procfs、seq_file、debugfs和relayfs
本系列文章包括两篇,它们文详细地地介绍了Linux系统下用户空间与内核空间数据交换的九种方式,包括内核启动参数、模块参数与sysfs、sysctl、系统调用、netlink、procfs、seq_file、debugfs和relayfs,并给出具体的例子帮助读者掌握这些技术的使用。本文是该系列文章的第二篇,它介绍了procfs、seq_file、debugfs和relayfs,并结合给出的例子程序转载 2007-06-07 10:38:00 · 683 阅读 · 0 评论 -
Linux 内核软中断(softirq)执行分析
今天无意中看了眼 2.6 内核的软中断实现,发现和以前我看到的大不相同(以前也是走马观花,不大仔细),可以说改动很大。连 softirq 的调用点都不一样了,以前是三个调用点,今天搜索了一下源代码,发现在多出了ksoftirqd 这个东西后,softirq 在系统中的调用点仅是在 ISR 返回时和使用了 local_bh_enable() 函数后被调用了。网卡部分的显示调用,我觉得应该不算是系统中转载 2007-06-07 10:42:00 · 467 阅读 · 0 评论 -
IA32上Linux内核中断机制分析
中断是计算机与外界联系的唯一途径。本文将分析在IA-32体系结构上的Linux内核对待中断系统的处理,针对的是2.6内核,引用的代码则具体则是2.6.14的。一。几个相关概念的澄清1, 中断信号:在电路级别来说,中断就是输送到CPU的INTR引脚上的电平信号。2, 可编程中断控制器(PIC,Programmable Interrupt Controller):PIC是在计算机外部设备与CPU之间的转载 2007-06-07 10:43:00 · 760 阅读 · 0 评论 -
Linux内核&驱动学习笔记(三)
Linux是如何处理中断的呢?今天系统的整理一下这个问题。 中断系统的初始化 中断到来时的处理流程 软中断 Linux对Arm和X86在中断处理上的不同中断系统的初始化 中断到来时的处理流程 软中断 Linux对Arm和X86在中断处理上的不同原创 2007-06-19 11:11:00 · 1050 阅读 · 0 评论