Linux TCP/IP 协议栈源码分析

一.linux内核网络栈代码的准备知识 1. linux内核ipv4网络部分分层结构: BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件 主要有:/net/socket.c /net/protoc...

2013-02-25 10:48:20

阅读数 2931

评论数 1

linux 页面的回收

关于页面的使用 在之前的一些文章中,我们了解到linux内核会在很多情况下分配页面。 1、内核代码可能调用alloc_pages之类的函数,从管理物理页面的伙伴系统(管理区zone上的free_area空闲链表)上直接分配页面(见《linux内核内存管理浅析》)。比如:驱动程序可能用这种方式来...

2012-05-02 14:09:04

阅读数 2279

评论数 0

Linux中断处理流程

看了一些网络上关于linux中断实现的文章,感觉有一些写的非常好,在这里首先感谢他们的无私付出,然后也想再补充自己对一些问题的理解。先从函数注册引出问题吧。 一、中断注册方法 在linux内核中用于申请中断的函数是request_irq(),函数原型在Kernel/irq/manage.c中定...

2012-04-17 11:49:34

阅读数 11828

评论数 0

深入Linux内核网络堆栈

前一段时间看到这篇帖子,确实很经典,于是翻出了英文原版再读,顺便再翻译出来供大家学习,这篇文章的中文版也早都有了,不过出于完全理解的目的,我还是将它翻译了出来,加进了自己的代码,虽然在上一周的翻译过程中,我尽量保留文章的原汁原味,但错误肯定在所难免,在末尾附上原文和我自己调试通过的代码,已经够构运...

2012-04-15 14:37:49

阅读数 1252

评论数 0

模块与变量导出

今天折腾红外模块发现个奇怪的现象,当以模块的方式编译红外源码时,不能通过说hkvs_root_dir undefined,但是以build-in方式编译没有任何问题,起初想不通,正好买了本新书ILDD,第一章就是讲内核模块加载的原理,看了看,明白了,原来内核的build-in可以看成整个一个大模块...

2012-04-13 19:33:09

阅读数 1255

评论数 0

kmalloc 与vmalloc

kmalloc()和vmalloc()介绍 kmalloc() 用于申请较小的、连续的物理内存 1. 以字节为单位进行分配,在中 2. void *kmalloc(size_t size, int flags)分配的内存物理地址上连续,虚拟地址上自然连续 3. gfp_mask标志:什么...

2012-04-13 17:21:09

阅读数 3373

评论数 0

TCP IP 协议分析

一.linux内核网络栈代码的准备知识   1. linux内核ipv4网络部分分层结构:   BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件   主要有:/net/socket.c ...

2012-04-02 11:41:55

阅读数 917

评论数 0

音视频播放原理

当初看VLC代码花了不少时间,其中很大的原因是不太了解视频播放的基本原理。现在看来,几乎所有的视频播放器,如VLC、MPlayer、Xine,包括DirectShow,在播放视频的原理和架构上都是非常相似的,理解这个对理解VLC的源码会有事半功倍的效果。     大致的来说,播放一个视频分为4个...

2012-03-21 10:22:01

阅读数 1708

评论数 0

ping广播地址个系统的反应

1、MS的Windows系操作系统全部不会应答 2、Unix系的Solaris系统会应答 3、IOS系统会应答 4、同样Unix系的FreeBSD不会应答 5、基于FreeBSD的JUNOS系统估计会应答 6、Linux系的服务器也全部没有应答 7、不管基于何种...

2012-03-19 20:40:26

阅读数 1108

评论数 0

tcpdump使用说明

第一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.     ...

2012-03-19 15:27:01

阅读数 824

评论数 0

网卡参数说明

自从和无盘开始打交道,学到了n多知识,无论是软件层面还是硬件层面,无论是理论还是实践层面,之前很多人认为无盘很复杂,而我也受其“误导”认为无盘很复杂,但实际上用下来发现,其实无盘确实很简单,而所谓的无盘复杂,更多的是理论和经验的结合,以前在网上也看到过很多无盘教程,当时不以为然,不当回事,总觉得自...

2012-03-15 15:15:48

阅读数 6312

评论数 0

strace用法说明

strace命令详解 strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用。   strace 显示这些调用的参数并返回符号形式的值。strace 从内核接收信息,而且不需要以任何特殊的方式来构建内核。   下面记录几个常用 option .   1 -f -F选...

2012-03-15 10:38:05

阅读数 17546

评论数 0

老辈程序员的忠告

首先这边文章是我转载来的,因为CSDN转载来的文章不允许上首页。但是这篇文章真的不错,希望更多的程序员看到。所以我我选择文章类型为原创,还望本文作者不要怪罪于我。 展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告 走过的路,回忆起来是那么曲折,把自己的一些心得体...

2012-03-14 14:55:12

阅读数 1140

评论数 0

kobject的理解

在LINUX中最让人不解的大概就是/sys下面的内容了 下面首先让我们来创建一个简单的platform设备,并从这个设备的视角进行深入,在此篇文章的深入过程中,我们只看kobeject的模型 我所使用的内核版本号为2.6.26,操作系统的内核版本号为2.6.27-7,暂未发现2.6.27-...

2012-03-11 19:15:27

阅读数 4048

评论数 0

slab slub和内存管理

内核对象缓冲区管理 Linux 内核在运行过程中,常常会需要经常使用一些内核的数据结构(对象)。例如,当进程的某个线程第一次打开一个文件的时候,内核需要为该文件分配一个称为 file 的数据结构;当该文件被最终关闭的时候,内核必须释放此文件所关联的 file 数据结构。这些小块存储空间并不只...

2012-03-11 19:03:36

阅读数 3901

评论数 0

lmbench的使用方法

一、引言 要评价一个系统的性能,通常有不同的指标,相应的会有不同的测试方法和测试工具,一般来说为了确保测试结果的公平和权威性,会选用比较成熟的商业测试软件。但在特定情形下,只是想要简单比较不同系统或比较一些函数库性能时,也能够从开源世界里选用一些优秀的工具来完成这个任务,本文就通过lmbench...

2012-03-08 10:37:17

阅读数 19411

评论数 1

根文件系统的加载

前言: 本篇文章以S3C6410公版的Linux BSP和U-Boot来进行分析,文中所有提及的名词和数据都是以该环境为例,所有的代码流程也是以该环境为例来进行分析。哈哈。如果有不正确或者不完善的地方,欢迎前来拍砖留言或者发邮件到guopeixin@126.com进行讨论,先行谢过。 ...

2012-03-07 20:40:33

阅读数 2696

评论数 0

根文件系统的挂载流程分析

一:前言 前段时间在编译kernel的时候发现rootfs挂载不上。相同的root选项设置旧版的image却可以。为了彻底解决这个问题。研究了一下rootfs的挂载过程。特总结如下,希望能给这部份知识点比较迷茫的朋友一点帮助。 二:rootfs的种类 总的来说,rootfs分为两种:虚拟ro...

2012-03-07 19:47:36

阅读数 1328

评论数 0

对自己说

偶然间看到的,觉得不错,保存一下,用来警示自己。感觉程序员更应该多注意这些细节 一:沉稳 (1)不要随便显露你的情绪。 (2)不要逢人就诉说你的困难和遭遇。 (3)在征询别人的意见之前,自己先思考,但不要先讲。 (4)不要一有机会就唠叨你的不满。 (5)重要的决定尽量有别人商量...

2012-03-07 18:47:23

阅读数 495

评论数 0

内核空间与用户空间的内存映射

严格来说,对于内核空间不能称为内存映射,应为内存重映射才对,例如将pci设备的内存空间映射到处理器的地址空间,其处理步骤如下: request_mem_region(start,n,name) #define request_mem_region(start,n,name) __reque...

2012-03-01 17:31:19

阅读数 1609

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭