内核开发
文章平均质量分 65
hanwei_1049
这个作者很懒,什么都没留下…
展开
-
内核等待队列
相信很多写程序的人都写过 socket 的程序。当我们 open 一个 socket 之后,接着去读取这个 socket,如果此时没有任何资料可供读取,那 read 就会 block 住。(这是没有加上 O_NONBLOCK 的情形),直到有资料可读取才会传回来。在 Linux kernel 里有一个数据结构可以帮助我们做到这样的功能。这个数据结构就是这里要跟各位介绍的 wait queu转载 2009-03-15 15:25:00 · 364 阅读 · 0 评论 -
(转载)深入Linux网络核心堆栈
创建时间:2003-08-22文章属性:翻译文章提交:raodan (raod_at_30san.com)==Phrack Inc.== 卷标 0x0b, 期刊号 0x3d, Phile #0x0d of 0x0f|=---------------------=[ 深入Linux网络核心堆栈 ]=-----------------------=||=----------转载 2009-03-15 23:20:00 · 437 阅读 · 0 评论 -
Linux调度器(schedule函数)
1:在进程却换前,scheduler做的事情Schedule所作的事情是用某一个进程替换当前进程。(1) 关闭内核抢占,初始化一些局部变量。need_resched:preempt_disable( );prev = current;rq = this_rq( );当前进程current被保存在prev,和当前CPU相关的runqueue的地址保存在rq中。(2) 检查prev没转载 2009-03-15 22:56:00 · 2751 阅读 · 0 评论 -
(转载)零拷贝技术研究与实现收藏
零拷贝技术研究与实现作者:梁健(firstdot)E-MAIL:firstdot@163.com一.基本概念零拷贝(zero-copy)基本思想是:数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现CPU的零参与,彻底消除CPU在这方面的负载。实现零拷贝用到的最主要技术是DMA数据传输技术和内存区域映射技术。如图1所示,传统的网络数据报处理,需要经过转载 2009-03-15 22:50:00 · 543 阅读 · 0 评论 -
自旋锁在内核中的实现
自旋锁是相对于SMP系统而言的。在单处理器中只要保证在临界区时不发生进程调度(包括进程抢占), 禁止中断,或者即使开启中断,只要中断例程与临界区无冲突,在或者临界区只有一条指令(中断只发生在指令之间,并不会打断一条执行中的指令),就会保持操作的同步。但是在SMP中,情况就会变的复杂的多, 考虑下面一种情况:1. CPU0中的某一个进程从内存A处读取了一个值, 然后对它进行了修改。2. CPU1中的转载 2009-03-15 17:18:00 · 2798 阅读 · 1 评论 -
非编译到kernel中的驱动程序为什么非要定义:__attribute__((alias(#x)))
非编译到kernel中的驱动程序为什么非要定义:__attribute__((alias(#x)))别名问题非编译到kernel中的驱动程序为什么非要定义:#define MODULE本篇为《linux启动时对编译进内核驱动模块的加载》的姊妹篇,主要是module模式下驱动的加载分析.#ifndef MODULE# define MODULE#endif定义#define MODULE是为了i转载 2009-03-15 11:52:00 · 703 阅读 · 0 评论 -
Linux驱动入门收藏
内核版本: 2.4.22阅读此文的目的: 学会编写Linux设备驱动。阅读此文的方法: 阅读以下2个文件: hello.c,asdf.c。此文假设读者:已经能用C语言编写Linux应用程序,理解"字符设备文件, 块设备文件, 主设备号, 次设备号",会写简单的Shell脚本和Makefile。1. "hello.c"--------------------------------/** 这是我转载 2009-03-14 23:46:00 · 353 阅读 · 0 评论 -
DMA
当我们向计算机中加入了一块新的声卡或其它适配卡时,安装程序可能会提醒我们应该选择一个DMA通道。那DMA是什么呢? DMA(Direct Memory Access),即直接存储器存取,是一种快速传送数据的机制。数据传递可以从适配卡到内存,从内存到适配卡或从一段内存到另一段内存。DMA技术的重要 性在于,利用它进行数据传送时不需要CPU的参与。每台电脑主机板上都有DMA控制器,通常计算机对其编程,转载 2009-03-15 00:02:00 · 351 阅读 · 0 评论 -
Linux PROC文件系统详细介绍
proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。它的目录结构如下: 目录名称 目录内容 apm 高级电源管理信息转载 2009-03-14 23:59:00 · 416 阅读 · 0 评论 -
网络处理的软中断机制分析
内核默认软中断机制分析(process_backlog)首先需要介绍的就是netif_rx(在net/core/dev.c中定义)函数,这个函数在网卡驱动程序与linux内核之间建立了一道桥梁,将网卡接收上来的数据包(sk_buff形式)插入内核维护的接收缓冲区队列当中:int netif_rx(struct sk_buff *skb){ int this_转载 2009-03-15 21:41:00 · 436 阅读 · 0 评论 -
kernel_thread
内核线程实际上就是一个共享父进程地址空间的进程,它有自己的系统堆栈.内核线程和进程都是通过do_fork()函数来产生的,系统中规定的最大进程数与线程数由fork_init来决定:[/arch/kernel/process.c/fork_init()]void __init fork_init(unsigned long mempages){#ifndef __HAVE_ARCH_TASK_STR转载 2009-03-15 17:41:00 · 1505 阅读 · 0 评论 -
(转载)Linux 汇编语言开发指南 收藏
一、简介 作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但重要性却勿庸置疑,因为它能够完成许多其它语言所无法完成的功能。就拿 Linux 内核来讲,虽然绝大部分代码是用 C 语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中主要是在 Linux 的启动部分。由于这部分代码与硬件的关系非常密切,即使是 C 语言也会有些力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥硬转载 2009-03-15 23:22:00 · 396 阅读 · 0 评论