
Linux 内核研究
文章平均质量分 60
collide
这个作者很懒,什么都没留下…
展开
-
sk_buff祥解
Socket Buffers - sk_buff One of the problems of having many layers of network protocols, each one using the services of another, is that each protocol needs to add protocol headers and tails to da原创 2004-09-29 08:55:00 · 4276 阅读 · 0 评论 -
linux 设备驱动程序 时间流 之 延迟执行 -2
关于短延迟:延迟通过使用jiffies达不到目的,只能使用内核函数:udelay(unsigned long usecs);mdelay(unsigned long msecs);前者用软件循环指定的微妙数,后者调用前者达到延迟毫秒级。udelay函数只能用于获取较短的时间延迟,因为loops_per_second值的精度只有8位,所以,当计算更长的延迟时会积累出相当大的误差。尽管最大能允许的延迟原创 2004-09-27 22:17:00 · 4316 阅读 · 1 评论 -
Basic Internet Protocol Routing
介绍关于ip路由的基本概念和内部的数据结构。 linux为路由维护三种数据结构,一种用于与本节点直接物理相连的节点的路由,其它的两种用于与其它间接节点相邻的情况。 前者叫做neighbor table,它保存着通往每一个节点的所用的设备和协议的种类,linux使用arp协议来维护该表。其中的每个条目都是soft state。 linux使用后两种路由表来维原创 2004-10-01 22:34:00 · 1402 阅读 · 0 评论 -
The Routing Cache
原创 2004-10-04 19:16:00 · 1017 阅读 · 0 评论 -
The proc File System:
The proc File System: 在这篇摘抄的文章里,我们主要介绍一下此文件系统是如何工作的,以及现有的网络代码是如何使用这个文件系统的,以及我们在程序中如何写,使用proc entry。Overview: proc文件系统在很多程序中被频繁的使用,尽管它被设计成像其它文件系统那样有目录结构和inode,但事实上,是一些注册了的函数,它们提供了重要的系统变量的信息。 proc原创 2004-10-06 13:01:00 · 1923 阅读 · 0 评论 -
ip包的接收过程概要
接收过程: 从网络上到来的数据,通过网卡接收,此时网卡会向系统发出中断,告诉系统处理。系统得知数据到来时,在中断处理中把数据从网卡的缓存中读到内存中交由链路层处理,链路层把数据放到自己的backlog对列中,然后把bh_base中的network flag置位,就是利用bottom half机制。 当进程调度器(process schduler)看到network fl原创 2004-09-30 17:10:00 · 1569 阅读 · 0 评论 -
linux module简介
Linux modules:简介: linux 2.0版本以后都支持模块化,因为内核中的一部分常驻在内存中,(如最常使用的进程,如scheduler等),但是其它的进程只是在需要的时候才被载入。如MS-DOS文件系统只有当mount此类系统的时候才需要,这种按需加载,就是模块。它能使内核保持较小的体积,虽然可以把所有的东东都放在内核中,这样的话,我们就不需要模块了,但是这样通常是有特殊的用途(所有原创 2004-10-06 11:41:00 · 17714 阅读 · 2 评论 -
切记,切记
作为一名Linux开发人员,对Linux下的名词要有了解,最好是非常清晰的知道它是什么东西,拿来做什么的。每一个名词都代表着一个资源,也代表着一个Linux的潮流,如果听都没听过就去开发相关领域的应用,那只能是瞎摸,吃力又不讨好。举个例子,欲在Linux下支持一款软Modem或一种打印机,而Linux的发行版或是厂家都是没有驱动的,那么一般会出现三种开发人员:一:习惯地要厂家想想办原创 2004-10-08 09:04:00 · 2254 阅读 · 1 评论 -
ip包在linux 2.4内核中的旅程。
1.中断处理函数中:网卡收到一帧------------------------〉引发中断-------------------〉cpu调用相应的中断处理函数(指向此网卡驱动中的相应的处理函数)(把此packet读到ram中)--------------------〉呼叫netif_rx函数来打上timestamp,并把此skb放入到cpu设置的队列中-----------------à标记软原创 2005-01-28 22:07:00 · 3341 阅读 · 0 评论 -
我-linux-自己的os(演示版)-(类似linux 0.01)
我利用半个月的零散时间写了一个模拟任务切换的程序: 特色: 1。工作在保护模式(没的说) 2。GDT/IDT都有 3。有时钟中断处理程序 4。有系统调用中断(int 0x60),目前包含3个系统调用,两个没有实际用途,一个在屏幕显示字符。 5。有键盘中断处理程序 6。有两个任务,能够进行任务切换。 晚上我会把代码和软盘image和虚拟机上的截图传上来。 我想在下一个版本要加入的功能: 1。 增加分原创 2005-07-20 21:48:00 · 2635 阅读 · 0 评论 -
uc/os-II阅读心得
uc/os-II是一个很好的,可用于学习的开源的实时操作系统。通过两个星期的阅读,我的一些心得如下:(还没有看完~~~)1. 通过ECB来实现进程的通信,例如之上的信号量/互斥信号量/消息队列/邮箱都是建立在ECB的基础上的。但是以上四种方法都是局限于进程间对一个资源/事件的互斥/同步访问的。2. 通过事件标志来实现进程间同时对多种资源/事件的互斥/同步访问。弥补了1中的不足。原创 2005-09-03 00:01:00 · 2809 阅读 · 0 评论 -
linux 设备驱动程序 时间流 总结
第 6 章 时间流至此,我们基本知道怎样编写一个功能完整的字符模块了。现实中的设备驱动程序,除了实现必需的操作外还要做更多工作,如计时、内存管理,硬件访问等等。幸好,内核中提供的许多机制可以简化驱动程序开发者的工作,我们将在后面几章陆续讨论驱动程序可以访问的一些内核资源。本章,我们先来看看内核代码是如何对时间问题进行处理的。按复杂程度递增排列,该问题包括: 理解内核时间机制 如何原创 2004-09-27 20:16:00 · 3384 阅读 · 0 评论 -
Linux内核2.4.x的网络接口源码的结构
一.前言 Linux的源码里,网络接口的实现部份是非常值得一读的,通过读源码,不仅对网络协议会有更深的了解,也有助于在网络编程的时候,对应用函数有更精确的了解和把握。 本文把重点放在网络接口程序的总体结构上,希望能作为读源码时一些指导性的文字。 本文以Linux2.4.16内核作为讲解的对象,内核源码可以在http://www.kernel.org上下载。我读源码时参考的是http://原创 2004-09-25 18:15:00 · 2526 阅读 · 0 评论 -
Linux Bottome Half Handler 机制详细解析
Interrupts Handling Interrupts are used to allow the hardware to communicate with the operating system. Here, a brief explanation of the principles governing the execution of an interrupt is given原创 2004-09-29 09:20:00 · 1828 阅读 · 0 评论 -
linux 的计时器机制,补充
任何的cpu如果要支持操作系统的话,必须有一个可编程的内部计时器,周期性的给系统发出定时器中断,这种周期性的定时器中断叫做system clock tick,linux对时间管理是通过使用jiffies为单位的,这是一个内核中的全局变量,每次定时器中断到来它的值自增1。 linux有两种类型的系统计时器, 第一种,也是比较旧的方案,是一个含有32个指向t原创 2004-09-29 10:29:00 · 1801 阅读 · 0 评论 -
ip包的接受/发送/转发
Receiving IP PacketsAt boot time, the network drivers are built into the kernel and initialized. This results in a series of device data structures linked together in the dev_base list.Each device d原创 2004-09-29 10:53:00 · 1935 阅读 · 0 评论 -
IP分片重组的分析和常见碎片攻击 v0.2
标题:IP分片重组的分析和常见碎片攻击 v0.2作者:yawl@nsfocus.com主页: www.nsfocus.com时间:v0.1:2000/07; v0.2:2000/09一前言本文对linux的IP组装算法进行了分析,因为IP碎片经常用于DOS等攻击,在文章后面我结合了一些攻击方法进行了更进一步的说明。内核主要参考版本是2.2.16,另外简要的原创 2004-09-29 21:15:00 · 3732 阅读 · 0 评论 -
路由缓冲表的基本结构
1) 在Linux内核中, 将IP包的路由称为"目的入口"(dst_entry),目的入口反映了相邻的外部主机在主机内部的一种"映象", IP包首先注入到目的入口中, 经过一系列IP包过滤器,最后注入到目的入口的帧头缓冲入口或邻居入口, 通过ARP缓冲创建硬件帧头后发送到设备驱动程序上.2) 路由缓冲表就是IP路由入口表, 它是转发表路由规则的实例化. 在查询IP路由时,系统先在路由缓冲表中查询,原创 2004-09-26 09:45:00 · 2061 阅读 · 0 评论 -
网络包的接收过程
1) 网卡设备驱动程序将硬件中断中接收到数据帧存入sk_buff结构, 然后检查硬件帧头,识别帧类型, 放入接收队列, 激活接收软中断作进一步处理. 接收软中断(net_rx_action)提取接收包,根据它所在的设备和协议类型传递给各自的包处理器. 包处理器用dev_add_pack()注册,如果注册的设备号是零则表明它接收所有设备的包, 如果注册的包类型是(ETH_P_ALL), 则表示它接收原创 2004-09-26 19:23:00 · 4374 阅读 · 0 评论 -
linux 设备驱动程序 时间流 之 延迟执行 --转载
3 延迟执行 设备驱动程序经常需要将某些特定代码延迟一段时间后执行――通常是为了让硬件能完成某些任务。这一节将介绍许多实现延迟的不同技术,哪种技术最好取决于实际环境中的具体情况。我们将介绍所有的这些技术并指出各自的优缺点。 一件需要考虑的很重要的事情是所需的延迟长度是否多于一个时钟滴答。较长的延迟可以利用系统时钟;较短的延迟通常必须通过软件循环来获得。 6.3.1 长延迟 如果想把执行延迟若干原创 2004-09-27 20:46:00 · 4504 阅读 · 0 评论 -
linux 设备驱动程序 时间流 之 延迟执行 -1
一:自己通过循环实现: a) j = jiffies + jit_delay * HZ; while( jiffes /* nothing */; // 忙,不允许调度器调度 缺点:如果在代码执行前,关了时钟中断的话,则jiffes不会得到更新,死循环的啊!而且增大了系统的负荷,任何其他程序得不到调度。 b) j = jiff原创 2004-09-27 20:52:00 · 1526 阅读 · 0 评论 -
ip包的发送概要
发送数据: 应用程序要发送的数据通过调用系统调用把数据传递给socket。socket检查连接的类型以便呼叫合适的send函数(一般是INET)。send函数检查socket的状态,以及协议的类型,然后把数据传递给传输层的函数(通常是tcp或udp)。传输层的协议为这些数据创建一个sk_buffer类型的skb,把数据拷贝到skb中,并在skb中加入传输层协议的头部(例如端口号原创 2004-09-30 16:31:00 · 1324 阅读 · 0 评论 -
走进linux内核-1
一:Linux内核的组织形式为整体式结构,即整个Linux内核由很多的过程组成,每个过程都可以单独编译,然后用连接程序将其与其它的过程连接在一起,组成一个单一的目标程序。这种结构的特点是效率较高,每个过程对其它过程是可见的。二:Linux的进程调度方式简单有效,用户进程采用的是简单的动态优先级调度方式,而unix采用的是多级反馈调度方式。对于内核中的例程,采用bottom half handl原创 2004-09-22 10:44:00 · 1371 阅读 · 0 评论 -
some linux books I have read.
部分原创 2005-09-10 20:56:00 · 2517 阅读 · 0 评论