<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/drizztzou</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; drizztzou]]></copyright><item><title><![CDATA[Linux内核&驱动学习笔记(三) ]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1657528</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1657528</guid><author>drizztzou</author><pubDate>Tue, 19 Jun 2007 11:11:00 +0800</pubDate><description><![CDATA[Linux是如何处理中断的呢？今天系统的整理一下这个问题。    中断系统的初始化    中断到来时的处理流程    软中断    Linux对Arm和X86在中断处理上的不同中断系统的初始化 中断到来时的处理流程 软中断 Linux对Arm和X86在中断处理上的不同  ]]></description><category></category></item><item><title><![CDATA[Arm学习笔记（二）]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1657518</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1657518</guid><author>drizztzou</author><pubDate>Tue, 19 Jun 2007 11:05:00 +0800</pubDate><description><![CDATA[三、Arm CPU内核探秘   四、调试方法 五、Arm汇编技巧与内嵌汇编  ]]></description><category></category></item><item><title><![CDATA[Linux slab 分配器详解]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1652909</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1652909</guid><author>drizztzou</author><pubDate>Thu, 14 Jun 2007 22:03:00 +0800</pubDate><description><![CDATA[  良好的操作系统性能部分依赖于操作系统有效管理资源的能力。在过去，堆内存管理器是实际的规范，但是其性能会受到内存碎片和内存回收需求的影响。现在，Linux® 内核使用了源自于 Solaris 的一种方法，但是这种方法在嵌入式系统中已经使用了很长时间了，它是将内存作为对象按照大小进行分配。本文将探索 slab 分配器背后所采用的思想，并介绍这种方法提供的接口和用法。内存管理的目标是提供]]></description><category></category></item><item><title><![CDATA[Linux内核&驱动学习笔记(二) ]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1652598</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1652598</guid><author>drizztzou</author><pubDate>Thu, 14 Jun 2007 16:49:00 +0800</pubDate><description><![CDATA[2007.6.14  pmLinux是如何管理内存的？今天系统的整理一下这个问题。    物理内存是如何组织的     如何分配和释放物理内存     虚拟内存到物理内存的映射     进程的地址空间是怎么样的     虚拟内存是如何组织的     如何分配和释放虚拟内存     启动时内存的分配     什么是slab     什么是页缓存 物]]></description><category></category></item><item><title><![CDATA[Linux设备轮询机制分析 ]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1652588</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1652588</guid><author>drizztzou</author><pubDate>Thu, 14 Jun 2007 16:44:00 +0800</pubDate><description><![CDATA[一、设备轮询机制的基本思想所谓的设备轮询机制实际上就是利用网卡驱动程序提供的NAPI机制加快网卡处理数据包的速度，因为在大流量的网络环境当中，标准的网卡中断加上逐层的数据拷贝和系统调用会占用大量的CPU资源，而真正用于处理这些数据的资源却很少。一个基本的想法是对于大流量网络，如果发现一个DMA传输中断（这表明一个网络数据通过DMA通道到达了DMA缓冲区），则首先关闭网卡的中断模式，]]></description><category></category></item><item><title><![CDATA[Linux 内核调试器内幕 ]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1652319</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1652319</guid><author>drizztzou</author><pubDate>Thu, 14 Jun 2007 15:03:00 +0800</pubDate><description><![CDATA[调试内核问题时，能够跟踪内核执行情况并查看其内存和数据结构是非常有用的。Linux 中的内置内核调试器 KDB 提供了这种功能。在本文中您将了解如何使用 KDB 所提供的功能，以及如何在 Linux 机器上安装和设置 KDB。您还将熟悉 KDB 中可以使用的命令以及设置和显示选项。Linux 内核调试器（KDB）允许您调试 Linux 内核。这个恰如其名的工具实质上是内核代码的补丁，它允许高手]]></description><category></category></item><item><title><![CDATA[Linux内核网络设备操作部分阅读笔记 ]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1652303</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1652303</guid><author>drizztzou</author><pubDate>Thu, 14 Jun 2007 14:59:00 +0800</pubDate><description><![CDATA[一、网络设备的初始化网络设备初始化就是调用具有__init 前缀的net_dev_init函数完成的，网络设备初始化包含两个部分（在linux内核2.4办源代码分析大全一书的第550页有详细说明），就是：在系统初始化期间对系统已知的网络设备进行初始化过程，也就是，我们在编译内核时选择编入内核的那部分网卡设备就会在这个时候逐个进行初始化工作。系统中已知的网络设备都存储在一个全局表中，]]></description><category></category></item><item><title><![CDATA[Linux内核内存池管理技术实现分析 ]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1652283</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1652283</guid><author>drizztzou</author><pubDate>Thu, 14 Jun 2007 14:52:00 +0800</pubDate><description><![CDATA[一、Linux系统内核内存管理简介 Linux将物理内存也划分成固定大小的页面，由数据结构page管理，有多少页面就有多少page结构，它们又作为元素组成一个数组mem_map[]。slab：在操作系统的运作过程中，经常会涉及到大量对象的重复生成、使用和释放问题。对象生成算法的改进，可以在很大程度上提高整个系统的性能。在Linux系统中所用到的对象，比较典型的例子是inod]]></description><category></category></item><item><title><![CDATA[Linux2.6 驱动设计――从 2.4 到 2.6 ]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1652263</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1652263</guid><author>drizztzou</author><pubDate>Thu, 14 Jun 2007 14:44:00 +0800</pubDate><description><![CDATA[由于 2.6 内核在驱动框架，底层调用上和 2.4 内核有很多差别，所以本文主要是为程序员提供 2.4 到 2.6 迁移的指导。 2.6 和 2.4 主要的不同在于 ?  内核的 API 变化，增加了不少新功能（例如 mem pool ） ?  提供 sysfs 用于描述设备树 ?  驱动模块从 .o 变为 .ko 移植 hello word 下面是一个最简单的 2.4 驱动：]]></description><category></category></item><item><title><![CDATA[Arm学习笔记（一）]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1651666</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1651666</guid><author>drizztzou</author><pubDate>Thu, 14 Jun 2007 10:27:00 +0800</pubDate><description><![CDATA[一、概述Arm芯片具有RISC体系的一般优点，比如：    具有大量的寄存器     绝大多数操作都在寄存器中进行，通过Load/Store的体系结构在内存和寄存器间传递数据     寻址方式简单     采用固定长度的指令格式  Arm体系采用了一些特别的技术，在保证高性能的同时尽量减小芯片体积，降低芯片功耗：    在同一条数据处理指令中包含算术逻辑处理]]></description><category></category></item><item><title><![CDATA[C语言嵌入式系统编程修炼之内存操作]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1651302</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1651302</guid><author>drizztzou</author><pubDate>Wed, 13 Jun 2007 23:51:00 +0800</pubDate><description><![CDATA[数据指针　　在嵌入式系统的编程中，常常要求在特定的内存单元读写内容，汇编有对应的MOV指令，而除C/C++以外的其它编程语言基本没有直接访问绝对地址的能力。在嵌入式系统的实际调试中，多借助C语言指针所具有的对绝对地址单元内容的读写能力。以指针直接操作内存多发生在如下几种情况：　　(1) 某I/O芯片被定位在CPU的存储空间而非I/O空间，而且寄存器对应于某特定地址；　　(2) 两个CPU之间以双端]]></description><category></category></item><item><title><![CDATA[什么是堆？什么是栈？]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1651300</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1651300</guid><author>drizztzou</author><pubDate>Wed, 13 Jun 2007 23:48:00 +0800</pubDate><description><![CDATA[一 英文名称     堆和栈是C/C++编程中经常遇到的两个基本概念。先看一下它们的英文表示：堆――heap栈――stack二 从数据结构和系统两个层次理解     在具体的C/C++编程框架中，这两个概念并不是并行的。深入到汇编级进行研究就会发现，栈是机器系统提供的数据结构，而堆是由C/C++函数库提供的。这两个概念可以从数据结构和系统两个层次去理解：1、从数据结构层次理解，栈是一种先进]]></description><category></category></item><item><title><![CDATA[ARM汇编语言面试题 ]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1651278</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1651278</guid><author>drizztzou</author><pubDate>Wed, 13 Jun 2007 23:26:00 +0800</pubDate><description><![CDATA[    What registers are used to store the program counter and linker register? A: r15 and r14 are used to store the program counter and linker register, respectively.    What is r13 ofter]]></description><category></category></item><item><title><![CDATA[ 2.6内核Makefile简单语法与应用]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1649297</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1649297</guid><author>drizztzou</author><pubDate>Tue, 12 Jun 2007 16:19:00 +0800</pubDate><description><![CDATA[1.1        概述2.6 的Makefile的写法和应用相对于2.4有了一些变化，可能对于很多人来说，因为找不到相关的文档，都是模仿内核中已有的文件来写自己的 Makefile。其实，在内核的Documentation / kbuild目录下面，还是有对内核Makefile语法的详细说明的。在这里就2.6内核中Makefile最常见的应用情况做一个简单的翻译和归纳介 绍。 2.]]></description><category></category></item><item><title><![CDATA[网络处理的软中断机制分析 ]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1648361</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1648361</guid><author>drizztzou</author><pubDate>Mon, 11 Jun 2007 23:30:00 +0800</pubDate><description><![CDATA[内核默认软中断机制分析（process_backlog）首先需要介绍的就是netif_rx（在net/core/dev.c中定义）函数，这个函数在网卡驱动程序与linux内核之间建立了一道桥梁，将网卡接收上来的数据包（sk_buff形式）插入内核维护的接收缓冲区队列当中：int netif_rx(struct sk_buff *skb){       int this_cpu = ]]></description><category></category></item><item><title><![CDATA[Linux内核NAPI机制分析 ]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1648359</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1648359</guid><author>drizztzou</author><pubDate>Mon, 11 Jun 2007 23:25:00 +0800</pubDate><description><![CDATA[NAPI 是 Linux 上采用的一种提高网络处理效率的技术，它的核心概念就是不采用中断的方式读取数据，而代之以首先采用中断唤醒数据接收的服务程序，然后 POLL 的方法来轮询数据。随着网络的接收速度的增加，NIC 触发的中断能做到不断减少，目前 NAPI 技术已经在网卡驱动层和网络层得到了广泛的应用，驱动层次上已经有 E1000 系列网卡，RTL8139 系列网卡，3c50X 系列等主流的网络适]]></description><category></category></item><item><title><![CDATA[Linux主要shell命令详解 ]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1648355</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1648355</guid><author>drizztzou</author><pubDate>Mon, 11 Jun 2007 23:21:00 +0800</pubDate><description><![CDATA[shell是用户和Linux操作系统之间的接口。Linux中有多种shell，其中缺省使用的是Bash。 本章讲述了shell的工作原理，shell的种类，shell的一般操作及Bash的特性。 　什么是shell Linux系统的shell作为操作系统的外壳，为用户提供使用操作系统的接口。它是命令语言、 命令解释程序及程序设计语言的统称。 shell是用户和Linux内核之间的接口程序，如果把L]]></description><category></category></item><item><title><![CDATA[Linux 汇编语言开发指南 ]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1648352</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1648352</guid><author>drizztzou</author><pubDate>Mon, 11 Jun 2007 23:20:00 +0800</pubDate><description><![CDATA[一、简介 作为最基本的编程语言之一，汇编语言虽然应用的范围不算很广，但重要性却勿庸置疑，因为它能够完成许多其它语言所无法完成的功能。就拿 Linux 内核来讲，虽然绝大部分代码是用 C 语言编写的，但仍然不可避免地在某些关键地方使用了汇编代码，其中主要是在 Linux 的启动部分。由于这部分代码与硬件的关系非常密切，即使是 C 语言也会有些力不从心，而汇编语言则能够很好扬长避短，最大限度地发挥硬件]]></description><category></category></item><item><title><![CDATA[Linux 调试技术 ]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1648351</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1648351</guid><author>drizztzou</author><pubDate>Mon, 11 Jun 2007 23:17:00 +0800</pubDate><description><![CDATA[您可以用各种方法来监控运行着的用户空间程序：可以为其运行调试器并单步调试该程序，添加打印语句，或者添加工具来分析程序。本文描述了几种可以用来调试在 Linux 上运行的程序的方法。我们将回顾四种调试问题的情况，这些问题包括段错误，内存溢出和泄漏，还有挂起。 本文讨论了四种调试 Linux 程序的情况。在第 1 种情况中，我们使用了两个有内存分配问题的样本程序，使用 MEMWATCH 和 Yet A]]></description><category></category></item><item><title><![CDATA[使用kgdb调试linux内核及内核模块]]></title><link>https://blog.youkuaiyun.com/drizztzou/article/details/1648350</link><guid>https://blog.youkuaiyun.com/drizztzou/article/details/1648350</guid><author>drizztzou</author><pubDate>Mon, 11 Jun 2007 23:16:00 +0800</pubDate><description><![CDATA[1. 几种内核调试工具比较kdb：只能在汇编代码级进行调试；     优点是不需要两台机器进行调试。gdb：在调试模块时缺少一些至关重要的功能，它可用来查看内核的运行情况，包括反汇编内核函数。kgdb：能很方便的在源码级对内核进行调试，缺点是kgdb只能进行远程调试，它需要一根串口线及两台机器来调试内核(也可以是在同一台主机上用vmware软件运行两个操作系统来调试)使用kdb和g]]></description><category></category></item></channel></rss>