首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux内核书籍

《Linux设备驱动》   --  也就是我们所说的LDD3了; 适合一定基础的人阅读,深入学习Linux不可或缺的知识; 《UNIX环境高级编程》 这本书并不是面对linux内核的书,但是我是从最基础看这本书逐步入门的...; 《Linux内核完全剖析》 本书对早期Linux内核(v0.12)全部代码文件进行了详细、全面的注释和说明,旨在帮助读者用较短的时间对Linux的工作机理获得全面而深刻的理解,为进一步学习和研究Linux...虽然选择的版本较低,但该内核已能够正常编译运行,并且其中已包括了Linux工作原理的精髓。...《Linux那些事》 由复旦一群大神所写,团队为fudan_adc,主要写了我是xxx系列,本人比较喜欢对USB 部分的描述,不得不说大神就是大神。...《Linux设备驱动开发详解》 由华清远见出身的大神所写,宋宝华大神所写,华清远见出来的技术杠杠的。 《深入理解计算机操作系统》 当然啦,不得不说大学学过的操作系统啊!!!!

3.9K60

Linux网络编程书籍

而linux就是受其影响。。。。 ? 第五版是2012年出的,也比较新。...写的非常好,建议一定要买!可作入门,但即使是高手,也应看看,学习作者分析问题的方法和思想。其实是无数次印刷了,经典不能错过。...本书称不上非常的通俗,但是在有一定的基础的情况下还是比较容易看懂的。本书是世面上极少见的讲述内部网关路由技术的经典书籍,内容极为丰富。...网络体系结构:linux内核中网络协议的设计与实现》 ?...一本在kernel实现网络功能的基础书籍,最好还是看英文版的,翻译的实在太烂了。有条件的还是看原版吧,没办法啊,中国的此类书籍基本上落后老美3-4年。结合linux源代码分析一书收获更多。

3.5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux内核源码分析方法

    Linux内核源码分析方法 一、内核源码之我见 Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次。...我也是通过一个项目接触了Linux内核源码的分析,从源码的分析工作中,我受益颇多。除了获取相关的内核知识外,也改变了我对内核代码的过往认知: 1.内核源码的分析并非“高不可攀”。...内核源码分析的难度不在于源码本身,而在于如何使用更合适的分析代码的方式和手段。...这里所说的一切资源是指无论是Baidu、Google大型网络搜索引擎,还是操作系统原理教材和专业书籍,亦或是他人提供的经验和资料,甚至是Linux源码提供的文档、注释和源码标识符的名称(不要小看代码中的标识符的命名...目前的Linux源码会把模块相关的文档说明保存在源码目录的documention的文件夹下,如果待分析的模块没有文档说明,这多少会增加定位关键源码文件的难度,但是不会导致我们找不到我们要分析的源码。

    5.4K70

    Linux tcpip 源码分析 - write

    上面的文章已经分析了tcp建立的整个过程,下面我们来看下write是如何实现tcp写的。...// include/linux/fs.h static inline ssize_t call_write_iter(struct file *file, struct kiocb *kio,...调用这个方法的第三个参数为方法msg_data_left的返回值,该值为我们最开始调用write时,传入的要写的数据长度。...do_error的逻辑大体上为,如果当前写成功的字节数大于0,则正常返回当前写成功的字节数,如果等于0,则调用sk_stream_error方法,获取当前应该返回给用户的错误码并赋值给err,最后返回err...进入while循环,循环继续的条件为当前剩余要写的字节数大于0。 5. 设置copy变量的值为0,该变量用于表示这次while循环可拷贝的字节数。 6.

    2.2K30

    Linux tcpip 源码分析 - close

    上一篇文章我们分析了shutdown方法的实现,这里我们再看下close方法。...先将file->f_count字段减1,再判断该字段的值是否为0,如果是,则继续执行if内的逻辑。 2. 调用init_task_work方法,设置file销毁的回调函数为____fput。 3....调用task_work_add方法,将销毁该文件的task放到待执行的任务队列中。 最终____fput方法会被回调,继续执行文件的close逻辑。...,找到对应的file指针,然后再调用__fput方法,传入这个file参数。...本文为了代码上的简便,省略了很多内存释放的逻辑。 与shutdown方法相比,close方法不仅会根据当前状态决定是否要发送fin消息,还会释放该socket涉及到的一系列内存。

    2.2K100

    Linux epoll 源码分析 3

    在上一篇文章 Linux epoll 源码分析 2 中,我们分析了 epoll_ctl 的 ep_insert 方法,在这里我们继续看下 ep_remove 和 ep_modify 方法。...struct file *file = epi->ffd.file; ... // 将epitem从tcp socket的事件变动通知队列中移除 ep_unregister_pollwait...return 0; } 该方法的逻辑和ep_insert方法里的逻辑比较像,它先覆盖epitem中epoll_event的旧值,然后检查该文件当前已经就绪的事件,如果这些事件中有我们感兴趣的事件,则把epitem...放到eventpoll的rdllist队列中,最后通知因调用epoll_wait堵塞的线程,它们可以继续执行了。...至此,epoll的所有逻辑都已讲完。 有关tcp在何种情况下,会通知给epoll何种事件,我们会在其他文章中详细讲解。

    1.8K30

    Linux tcpip 源码分析 - read

    之后又调用call_read_iter方法,传入这些新的参数,继续执行read逻辑 // include/linux/fs.h static inline ssize_t call_read_iter...设置变量seq的值,使其持有tp->copied_seq字段的地址,tp->copied_seq字段用于表示下一个要拷贝给用户的数据的seq是多少。 4....进入while循环,该循环继续的条件为len>0,即剩余要拷贝给用户的数据的字节数大于0。 6....当tcp层收到数据后,会将数据放到sk->sk_receive_queue队列中,等待用户读取,该部分逻辑的详细分析,我们以后会另开文章详细讲解。 7....seq的值,即下一个要拷贝字节的位置,copied的值,即已经拷贝的字节数,len的值,即剩余要拷贝的字节数,最后,根据情况决定是否要将skb从sk->sk_receive_queue队列中移除。

    3.1K20

    Linux tcpip 源码分析 - connection termination

    前两篇文章中我们讲到,shutdown和close方法会发送fin消息给对方,开始tcp连接的关闭流程,现在我们从源码角度看下tcp连接关闭的具体过程,以及中间发送的消息和涉及到的各种状态。...下面看下服务端如何处理fin消息的。 由之前的文章可知,ip层在收到消息之后,会通过回调tcp_v4_rcv方法将消息转给tcp层。...设置sk的flag为SOCK_DONE。 3....由上可见,谁先发起的tcp连接关闭请求,谁最终就会进入到TIME_WAIT状态,在写服务器端代码时,这个是要注意的。 现在剩下最后一步,即服务端ack消息的处理。...至此,服务端的sk就已经完全关闭。 客户端的sk等TIME_WAIT状态的定时超时之后,也会自动关闭。 这样,tcp连接的关闭流程就完整了。

    2K10
    领券