Linux内核阅读
qauzy
这个作者很懒,什么都没留下…
展开
-
读内核源码(Linux 4.9.9)之共享内存的实现
1 共享内存使用1.1 共享内存头文件#include#include1.2 共享内存APIint shmget(key_t key,size_t size,int shmflg);@key : 提供一个参数key,它有效地为共享内存段命名,@size : 以字节为单位指定需要共享的内存容量@shmflg : 是权限标志,它的作用与open函数的mo原创 2018-01-22 20:18:01 · 1277 阅读 · 0 评论 -
读内核(Linux4.9.9)之epoll内核实现简单分析记录
1 epoll三个系统调用函数原型#include <sys/epoll.h>int epoll_create(int size);int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);int epoll_wait(int epfd, struct epoll_event* event...原创 2017-03-26 19:10:56 · 705 阅读 · 0 评论 -
内核添加调试信息
Systemtap需要添加kernel-debuginfo和utrace支持,添加一下选项,重新编译内核CONFIG_KPROBE=yCONFIG_DEBUG_INFO=yCONFIG_DEBUG_FS=yCONFIG_RELAY=yCONFIG_KPROBE_EVENT=yCONFIG_UPROBE_EVENT=yC原创 2018-01-17 18:35:54 · 1284 阅读 · 0 评论 -
读Linux内核(4.9.9)之TCP连接三次握手
简单介绍TCP连接建立的三次握手。第一次:客户端发送SYN报文,主动发起连接请求,SYN=1,seq=x第二次:服务端收到SYN报文,回复ACK报文,SYN=1, ACK=1,seq=y ,ack=x+1第三次:客户端收到服务端ACK,回复ACK报文,SYN=1, ACK=1,seq=x+1 ,ack=y+1,连接连接建立下面我们进入内核源码,分析这个过程在内核中的实现。首先客户端调用connec...原创 2018-02-21 01:28:55 · 1492 阅读 · 0 评论 -
读Linux内核(4.9.9)之socket调用分析
我们知道要读写一个文件可以使用open调用,得到文件描述符,然后就可以用read读文件,使用write写文件。而socket就相当于open(事实上linux为了实践万物皆文件实现了一个虚拟文件系统sockfs,socket系统调用之后就是在sockfs文件系统上建立了一个文件,只是这个文件是特殊的socket文件,我们先不去探究sockfs文件系统,我现在只需知道socket之后建立一个特殊的s...原创 2016-03-23 16:59:59 · 2634 阅读 · 0 评论 -
读Linux内核(4.9.9)之bind系统调用
在调用socket成功返回后,我们得到与socket关联的文件描述符。然后我们以该描述符和sockaddr地址结构对象为参数调用bind,就实现了socket对象地址的绑定。那这个绑定到底是个什么意思?这个绑定操作是必须吗?绑定操作之后,socket对象又发生了什么?也许还有更多的疑问,我们在协议栈的源码寻找答案。先贴上bind系统调用的源码:/* * Bind a name to a sock...原创 2016-03-23 22:05:00 · 2106 阅读 · 0 评论 -
Linux内核协议栈(附4) accept得到新的socket的本端端口号是什么?
背景:前两天有个人跟我争论accept之后新得到的描述连接的socket的端口是多少。我说是原来监听的端口,因为我之前经常用netstat查看连接,例如ssh,端口22,所有客户端与服务端建立的连接,服务端都是22。而那位同仁认为是随机获取可用端口,理由是如果端口相同怎么区分连接呢?当时脑子抽筋,没办法反驳。真是那句话,虽然你不对,但是我却找不到理由反驳你,只怪当时没有细看。现在我们整理下:有两种...原创 2016-04-01 21:19:16 · 1749 阅读 · 1 评论 -
读Linux内核(4.9.9)之环形缓冲区实现kfifo
kfifo实现了环形缓冲区(RingBuffer),提供了无锁的单生产/单消费模式的共享队列;也就是如果只有一个写入者,一个读取者,是不需要锁的。 对于多个写入者,一个读取者,只需要对写入者上锁。 反之,如果有多个读取者,一个写入者,只需要对读取者上锁。在老的内核中直接定义了kfifo结构体,在新的内核中通过了一些稍显复杂的宏进行间接定义。我们先看下kfifo的原型__kfifo :struct ...原创 2018-03-05 20:43:31 · 2034 阅读 · 0 评论