kernel 新手
文章平均质量分 76
hankwangwang
这个人很懒,什么都没有留下
展开
-
深入分析 Linux 内核链表
杨沙洲 (pubb@163.net)国防科技大学计算机学院2004 年 8 月 01 日本文详细分析了 2.6.x 内核中链表结构的实现,并通过实例对每个链表操作接口进行了详尽的讲解。一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总转载 2007-10-09 13:46:00 · 1524 阅读 · 4 评论 -
关于linux内核中的"__attribute__ ((packed))"
来源: http://jimmy-lee.blog.hexun.com/8001013_d.html __attrubte__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐。 #define __u8 unsigned char #define __u16 unsigned short /* __attribute__ ((packed))原创 2009-04-23 10:49:00 · 4190 阅读 · 0 评论 -
Linux 异步IO机制
Linux的I/O机制经历了一下几个阶段的演进:1. 同步阻塞I/O: 用户进程进行I/O操作,一直阻塞到I/O操作完成为止。2. 同步非阻塞I/O: 用户程序可以通过设置文件描述符的属性O_NONBLOCK,I/O操作可以立即返回,但是并不保证I/O操作成功。3. 异步事件阻塞I/O: 用户进程可以对I/O事件进行阻塞,但是I/O操作并不阻塞。通过select/poll/epoll等函数调用来达转载 2009-04-20 17:28:00 · 10717 阅读 · 2 评论 -
揭开Linux操作系统的Swap交换区之谜
作者: cc, 出处:IT专家网论坛, 责任编辑: 罗丽艳, 2009-04-08 09:37 Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。 Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,S转载 2009-04-09 09:26:00 · 1247 阅读 · 1 评论 -
R_X86_64_32 & could not read symbols: Bad value
R_X86_64_32 & could not read symbols: Bad value编译在suse64位平台上,libx.a是一个静态库,可以编译成功,但另一动态库链接它时报如下错误:/usr/lib64/gcc/x86_64-suse-linux/4.1.0/../../../../x86_64-suse-linux/bin/ld: /usr/local/libx.转载 2009-04-14 19:16:00 · 9552 阅读 · 1 评论 -
在x64位Linux上生成动态链接库必须使用编译选项-fPIC的问题
2008年09月26日 星期五 16:33在 Linux 下制作动态链接库,“标准” 的做法是编译成位置无关代码(Position Independent Code,PIC),然后链接成一个动态链接库。经常遇到的一个问题是 -fPIC 是不是必需,因为好像不加经常也能正常运行,只是创建 .so 的时候会有一个警告。搜索、试验了一下,答案似乎是这样:(1) 通常的建议是始终加上转载 2009-04-14 19:32:00 · 2582 阅读 · 1 评论 -
深入理解linux系统下proc文件系统内容
作者:佚名 来源:互联网内容摘要:Linux系统上的/proc目录是一种文件系统,即proc文件系统。 Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其转载 2009-04-01 18:11:00 · 5077 阅读 · 0 评论 -
Linux 内核中的 GCC 特性
Linux 内核中的 GCC 特性了解用于 C 语言的 GCC 扩展文档选项打印本页将此页作为电子邮件发送英文原文级别: 中转载 2009-04-11 09:32:00 · 1025 阅读 · 0 评论 -
深度介绍Linux内核是如何工作的
转自:http://news.csdn.net/n/20090327/124513.html比如lsmod的输出在我们的电脑上显示了一个名叫isofs的卸载模块,它的使用次数是零而且没有依赖模块,(isofs是一个模块,它支持CD上使用的ISO系统文件格式)这种情况下,kernel会允许我们卸载模块:# modprobe -r is 【Csdn 3月27日编译】本文发表于Linux F原创 2009-03-29 14:20:00 · 1579 阅读 · 0 评论 -
kernel基本功练习
【kernel基本功练习1】gcc的扩展语法 ,有空的时候注意一下。【kernel基本功练习1】gcc的扩展语法 ,有空的时候注意一下。在linux 的世界, 用的都是GCC(GNU gcc) , 在看kernel代码的时候, 可能会看到一些比较怪异的写法, 这些都不是ANSI c的写法, 但是我们现在要看懂linux kernel里面的一些代码, 就必须熟悉GNU gcc的扩展语法。转载 2009-03-27 06:58:00 · 1812 阅读 · 0 评论 -
与内存管理相关的几个宏
from:http://hi.baidu.com/wzt85/blog/item/26e9ba08ec9cf535e8248816.html 这几个宏把无符号整数转换成对应的类型 #define __pte(x) ((pte_t) { (x) } ) #define __pmd(x) ((pmd_t) { (x) } ) #define __pgd(x) ((pgd_t)转载 2008-12-16 12:30:00 · 3124 阅读 · 0 评论 -
kernel_thread函数简单分析
http://hi.baidu.com/wzt85/blog/item/c1f7b75515bc01c1b645ae17.html kernel_thread函数的作用是产生一个新的线程内核线程实际上就是一个共享父进程地址空间的进程,它有自己的系统堆栈.内核线程和进程都是通过do_fork()函数来产生的,系统中规定的最大进程数与线程数由fork_init来决定:[/arc转载 2008-12-16 12:28:00 · 7919 阅读 · 2 评论 -
内核通知链 学习笔记
最近在看《深入理解Linux网络内幕》一书,学习了一下书中讲到的内核通知链方面的知识,写了一个读书笔记和一点代码来加深理解,希望能够对大家有一点帮助。内核通知链在网络方面得到了广泛的使用。1.通知链表简介 大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣。为了满足这个需求,也即是让某个子系统在发生某个事件时通知其它的子系统,Linux内核提供了通知链的机制。通知转载 2008-12-14 17:16:00 · 1093 阅读 · 0 评论 -
在内核中寻找内核符号表
from:http://hi.baidu.com/wzt85/blog/item/eb8546f2a64e7616b17ec548.html 在用户空间中可以用如下方法得到:1. 从 System.map 文件直接得到地址。 例如,要得到 do_fork 的地址,可以在命令行执行 $grep do_fork /usr/src/linux/System.map 。2. 使用 nm 命令。转载 2008-12-16 12:31:00 · 1962 阅读 · 0 评论 -
Copy_from_user函数详细分析
from:http://hi.baidu.com/wzt85/blog/item/1f29731ba4b317ffae513316.html copy_from_user函数的目的是从用户空间拷贝数据到内核空间,失败返回没有被拷贝的字节数,成功返回0.这么简单的一个函数却含盖了许多关于内核方面的知识,比如内核关于异常出错的处理.从用户空间拷贝数据到内核中时必须非常小心,如果用户空间的数据地转载 2008-12-16 12:29:00 · 37266 阅读 · 2 评论 -
基于LINUX内核中的TCP/IP的核心过程分析
http://blog.chinaunix.net/u2/64681/showart_1432551.html·内核中的TCP的追踪分析-1-追踪TCP(IPV4)的socket的初始化·内核中的TCP的追踪分析-2-追踪TCP(IPV4)的socket的创建·内核中的TCP的追踪分析-3-TCP(IPV4)的socket的地址绑定·内核中的TCP的追踪分析-4-TCP(IPV4)的socke转载 2008-12-06 10:04:00 · 1482 阅读 · 0 评论 -
Linux下 /proc/maps 文件分析
From:http://blog.csdn.net/wenxy1/archive/2008/12/23/3591243.aspx /proc//maps查看进程的虚拟地址空间是如何使用的。该文件有6列,分别为:地址:库在进程里地址范围权限:虚拟内存的权限,r=读,w=写,x=,s=共享,p=私有;偏移量:库在进程里地址范围设备:映像文件的主设备号和次设备号;节点:映像文件的节点号;路径:转载 2009-04-23 11:40:00 · 18183 阅读 · 0 评论 -
Linux 2.6 调度系统分析
级别: 初级杨沙洲 (pubb@163.net), 国防科技大学计算机学院, 2004 年 4 月2004 年 4 月 01 日本文从 Linux 2.4 调度系统的缺陷入手,详细分析了 Linux 2.6 调度系统的原理和实现细节,并对与调度系统相关的负载平衡、NUMA 结构以及实时性能进行了分析和评价。文末,作者从调度系统的发展和实现出发,对 Linux 的发展特点和方向提出了自己转载 2009-04-27 14:05:00 · 1736 阅读 · 0 评论 -
Linux 内存管理系统:初始化
作者:Joe Knapka臭翻:colyli内存管理系统的初始化处理流程分为三个基本阶段:激活页内存管理 在swapper_pg_dir中初始化内核的页表 初始化一系列和内存管理相关的内核数据 Turning On Paging (i386)启动分页机制(i386)Kernel 代码被加载到物理地址0x100000(1MB),在分页机制打开后被重新映射到PAGE_OFFSET + 0x10转载 2009-04-27 22:28:00 · 2264 阅读 · 0 评论 -
select, poll和epoll的区别
select()系统调用提供一个机制来实现同步多元I/O:#include #include #include int select (int n,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,struct timeval *timeout);FD_CLR(int fd, fd_set *set);FD_ISSET(int fd,原创 2010-05-20 15:30:00 · 2259 阅读 · 0 评论 -
Linux内核中task_struct的中文介绍(2.4内核的)
转载 2009-06-01 08:55:00 · 1508 阅读 · 0 评论 -
tcp会话劫持
前言通常,大家所说的入侵,都是针对一台主机,在获得管理员权限后,就很是得意;其实,真正的入侵是占领整个内部网络。针对内部网络的攻击方法比较多,但比较有效的方法非ARP欺骗、DNS欺骗莫属了。但是,不管使用什么技术,无非都是抓取目标的数据包,然后分析出敏感数据。如果目标内部采用的是共享式网络(采用HUB集线器连网),那只需要把网卡设置为“混杂模式”,挂上嗅探器(Sniffer),就能简听到你想得到的转载 2009-05-19 23:24:00 · 10425 阅读 · 1 评论 -
memcache 的总体轮廓一览
memcache的server模型以及分布式的一些概念、算法很值得研究最近打算读一读源代码,先转一下其他同学的一些看法/////////////////////////////////////////////////////////////////1.关于本文档 本文档所有的分析都是在1.2版本之上,偶尔会提到比较1.1版本.其他版本没有阅读. 一个星期时间的转载 2009-05-21 06:34:00 · 2951 阅读 · 0 评论 -
libevent跨平台事件驱动库简介
最近因为工作的原因,后台服务器的压力越来越大,需要对项目后台的服务器进行重构,对已有的服务器的通讯模块进行重构,增加其性能.libevent产生的背景通常我们在建立服务器的处理模型的时候,主要是下面集中模型; (1) a new Connection 进来,用 fork() 产生一个 Process 处理。 (2) a new Connection 进来,用 pthrea转载 2009-05-21 14:01:00 · 5551 阅读 · 0 评论 -
关于buffer overflow
可能是唯一一篇gb的写overflow的文章,好像译至aleph1的那篇文章 zer9提到后我才想起来把他贴上来,呵呵 Buffer Overflow 机理剖析 使用Buffer Overflow 方法来入侵目的主机是黑客们经常采用的一种手段,本文将几篇介绍其机理的文章作了一些加工整理, 对它的机理作出了由浅入深的剖析. 本文分为下面几个部分, 朋友们可以按照自己的兴趣选择不同的章节: 关于堆栈的转载 2009-05-19 23:18:00 · 7451 阅读 · 0 评论 -
Linux系统调用列表
雷镇 (leicool@21cn.com)2002 年 3 月本文列出了大部分常见的Linux系统调用,并附有简要中文说明。以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的。按照惯例,这个列表以man pages第2转载 2009-05-19 22:52:00 · 1715 阅读 · 0 评论 -
Linux下函数调用堆栈帧的详细解释
从逻辑上讲进程的堆栈是由多个堆栈帧构成的,其中每个堆栈帧都对应一个函数调用。当函数调用发生时,新的堆栈帧被压入堆栈;当函数返回时,相应的堆栈帧从堆栈中弹出。尽管堆栈帧结构的引入为在高级语言中实现函数或过程这样的概念提供了直接的硬件支持,但是由于将函数返回地址这样的重要数据保存在程序员可见的堆栈中,因此也给系统安全带来了极大的隐患。历史上最著名的缓冲区溢出攻击可能要算是1988年11月2日的Mo原创 2009-05-19 22:47:00 · 6153 阅读 · 5 评论 -
linux软、硬链接的详细区别
linux系统下提供ln指令来进行文件链接。文件链接主要分为硬链接和软链接。 硬链接:由于linux下的文件是通过索引节点(Inode)来识别文件,硬链接可以认为是一个指针,指向文件索引节点的指针,系统并不为它重新分配inode。每添加一个一个硬链接,文件的链接数就加1。 可以用:ln命令来建立硬链接。语法: ln [options] existingfile newfi原创 2009-05-12 19:53:00 · 3827 阅读 · 0 评论 -
Linux 的虚拟文件系统(强烈推荐)
1 引言 Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等。通过使用同一套文件 I/O 系统 调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系统格式;更进一步,对文件的 操作可以跨文件系统而执行。如图 1 所示,我们可以使用 cp 命令从 vfat 文件系统格式的硬盘拷贝数据到 ext3 文件系统格式的硬盘;而这样的转载 2009-05-05 23:06:00 · 2921 阅读 · 0 评论 -
一点点感受
哈哈,两年前开始学习linux内核的东东,当时觉得好难好难,硬着头皮看了两本,之后期间断断续续的学习了总之,印象中好难,好多数据结构 两年了,最近又看了一遍,突然觉得好清晰,突然觉得好多概念比脑海中之前的影像简单多了,好多内核的方法真的好巧妙,那帮子家伙太聪明了 ^_^,继续学习,虽然不做内核开发,但是对于平时的后台开发还是非常有好处的,一些算法思路也可以用到自己程序里;对底层原创 2009-04-27 22:53:00 · 1787 阅读 · 3 评论 -
linux内存的使用与page buffer
可以将linux看作一个用来管理资源的程序,而其他应用程序跑在其上,linux管理应用程序的内存分配,回收,等等。为了管理,它首先需要给自己分配静态的内存空间:代码段空间,mem_map[]空间等等。然后它把剩余的其他RAM用buddy系统进行动态管理。linux内核的pagetable swapper_pg_dir将虚拟地址0xC0000000~0xC0000000+896M映射转载 2009-04-27 22:26:00 · 2322 阅读 · 0 评论 -
内核如何访问用户空间
内核得到用户传来的, void *p,需要访问它?copy_to_user的实现:copy_to_user__copy_to_user__copy_to_user_inatomic __put_user_size __put_user_asm/__copy_to_user_ll__copy_to_user_ll or __copy_user一般很少使用__转载 2009-04-27 22:14:00 · 3722 阅读 · 0 评论 -
glibc中malloc的详细解释
glibc中的malloc实现:The main properties of the algorithms are:* For large (>= 512 bytes) requests, it is a pure best-fit allocator, with ties normally decided via FIFO (i.e. least recently used).* Fo原创 2009-04-27 22:06:00 · 14799 阅读 · 0 评论 -
Linux 内存管理 -- 高端内存的映射方式
高端内存是指物理地址大于 896M 的内存。对于这样的内存,无法在“内核直接映射空间”进行映射。为什么?因为“内核直接映射空间”最多只能从 3G 到 4G,只能直接映射 1G 物理内存,对于大于 1G 的物理内存,无能为力。实际上,“内核直接映射空间”也达不到 1G, 还得留点线性空间给“内核动态映射空间” 呢。因此,Linux 规定“内核直接映射空间” 最多映射 896M 物理内存。对 于高端内转载 2009-04-27 22:40:00 · 3190 阅读 · 0 评论 -
影响 h00lyshit 成功的几个因素
导读: 1.内核CONFIG_BINFMT_AOUT选项被设置为n或内核不支持a.out (Assembler.OUTput)格式,会出现错误failed: Exec format error 现在distro的内核不加入a.out的支持的,比如fedora的内核: $cat /boot/config-2.6.14-1.1637_FC4 | grep AOUT # CONFIG_B转载 2008-12-07 13:51:00 · 1559 阅读 · 0 评论 -
IP包碎片重组过程
(1) 当内核接收到本地的IP包, 在传递给上层协议处理之前, 先进行碎片重组.IP包片段之间的标识号(id)是相同的. 当IP包片偏量(frag_off)第14位(IP_MF)为1时, 表示该IP包有后继片段. 片偏量的低13位则为该片段在完整数据包中的偏移量, 以8字节为单位. 当IP_MF位为0时, 表示IP包是最后一块碎片.(2) 碎片重组由重组队列完成, 每一重组队转载 2008-11-23 22:15:00 · 4997 阅读 · 0 评论 -
linux可执行文件的内容分析工具nm objdump readelf ar ldd
http://www.ibm.com/developerworks/cn/aix/library/au-unixtools.html级别: 中级Bill Zimmerly (bill@zimmerly.com), 自由撰稿人兼知识工程师, Author2007 年 3 月 06 日UNIX(R) 系统中运行的程序遵守一种称为目标文件格式的精心设计。了解更多关于目标文件格式的内容,以转载 2007-12-25 22:58:00 · 29004 阅读 · 0 评论 -
linux内核学习笔记(六)进程调度
Linux 内核笔记 – 进程调度关键词: Linux 内核 进程调度 Linux 内核笔记 – 进程调度原文链接:http://www.linuxforum.net/forum/showthreaded.php?Cat=&Board=linuxK&Number=294463&pag转载 2007-11-29 17:20:00 · 2560 阅读 · 1 评论 -
linux内核学习笔记(三)
2.系统调用及参数传递过程发言者:小白 发言时间:2002-06-29 08:36:451.系统调用函数接口是如何转化为陷入命令系统调用是通过一条陷入指令进入核心态,然后根据传给核心的系统调用号为索引在系统调用表中找到相映的处理函数入口地址。这里将详细介绍这一过程。我们以x86为例说明:由于陷入指令是一条特殊指令,而且依赖与操作系统实现的平台,如在x86中转载 2007-11-29 17:05:00 · 1542 阅读 · 0 评论 -
linux内核学习笔记(一)
<!--Class name of articleTime specify sun icon or moon iconin front of date-time text. Corresponding to class name sun & moon-->liunx网友学习文章(1) 2007-04-02 18:59:06 大转载 2007-11-29 16:37:00 · 1609 阅读 · 0 评论