首页
学习
活动
专区
工具
TVP
发布

Linux内核及编程语言底层相关技术研究

专栏作者
139
文章
317474
阅读量
71
订阅数
三分钟速览cpu,socket,core,thread等术语之间的关系
当我们在看技术文档时,经常会发现很多有关cpu的术语,比如cpu、cpu socket、cpu core、hyper-threading等,乱乱的分不清楚,这篇文章我带大家用三分钟时间,快速的过一遍各种术语代表什么,以及它们之间的关系。
KINGYT
2020-10-30
7.1K0
Linux系统研究 - 操作系统是如何管理tcp连接的 (2)
接上一篇文章 Linux系统研究 - 操作系统是如何管理tcp连接的 (1),我们再来继续讲。
KINGYT
2019-11-07
3.1K1
Linux系统研究 - 操作系统是如何管理tcp连接的 (1)
首先,在linux内核的网络模块里维护着一个全局实例,用来存储所有和tcp相关的socket:
KINGYT
2019-11-07
2.3K0
多进程可以监听同一端口吗
从文档中可以看到,该参数允许多个socket绑定到同一本地地址,即使socket是处于listen状态的。
KINGYT
2019-08-13
3.2K0
socket的SO_REUSEADDR参数全面分析
1. 使用这个参数后,bind操作是可以重复使用local address的,注意,这里说的是local address,即ip加端口组成的本地地址,也就是说,两个本地地址,如果有任意ip或端口部分不一样,它们本身就是可以共存的,不需要使用这个参数。
KINGYT
2019-08-09
2.5K0
read方法返回0后还会有epollin事件吗
当read方法返回0,即我们收到了对方发给我们的fin包,使我们的socket处于RCV_SHUTDOWN状态,此后,该socket还会有epollin事件发生吗?
KINGYT
2019-08-06
2.4K0
socket的epollin/epollout是何时触发的
本篇文章的问题是,在 EPOLLET 模式下,socket的 EPOLLIN 和 EPOLLOUT 是何时触发的?
KINGYT
2019-08-06
6.2K0
对又一个epoll问题的全面分析
该方法最主要的目的是,当客户端建立tcp连接到服务端时,服务端立即调用shutdown方法,关闭其send方向。
KINGYT
2019-08-05
1K0
epoll和shutdown使用不当可能导致死循环
本来是在研究epoll的另一个问题的,结果发现这个问题,所以这篇文章就先写这个问题吧。
KINGYT
2019-08-02
1.7K0
对上一篇文章中tcp问题的进一步思考
上篇文章 一个有关tcp的非常有意思的问题 中我们讲到,在tcp建立连接后,如果一端关闭了连接,另一端的第一次write还是可以写成功的,文章中也分析了造成这种现象的具体原因。
KINGYT
2019-07-22
5270
一个有关tcp的非常有意思的问题
在tcp建立连接后,先主动关闭其服务端,之后再在客户端下对其socket进行写操作,正常思维都会认为,这个写操作肯定会返回错误吧?
KINGYT
2019-07-22
8150
Linux tcp/ip 源码分析 - close
该方法先通过fd找到对应的file,再调用filp_close方法对file进行close。
KINGYT
2019-06-03
2.2K0
Linux tcp/ip 源码分析 - accept
3. 将sock->type赋值给newsock->type,type值为SOCK_STREAM。
KINGYT
2019-06-03
1.8K0
Linux epoll 源码分析 2
继上一篇 Linux epoll 源码分析 1,我们来继续看下 epoll_ctl 方法。
KINGYT
2019-05-30
1.5K0
Linux tcp/ip 源码分析 - socket
Linux下的tcp编程中,第一步就是要创建socket,本文将从源码角度看下socket是如何被创建的。
KINGYT
2019-05-30
5.6K0
Linux tcp/ip 源码分析 - bind
// net/socket.c SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen) { struct socket *sock; struct sockaddr_storage address; ... sock = sockfd_lookup_light(fd, &err, &fput_needed); if (sock) { err = move_addr_to_kernel(umyaddr, addrlen, &address); if (err >= 0) { ... if (!err) err = sock->ops->bind(sock, (struct sockaddr *) &address, addrlen); } ... } return err; }
KINGYT
2019-05-30
2.4K0
Linux tcp/ip 源码分析 - listen
// net/socket.c SYSCALL_DEFINE2(listen, int, fd, int, backlog) { struct socket *sock; ... int somaxconn; sock = sockfd_lookup_light(fd, &err, &fput_needed); if (sock) { somaxconn = sock_net(sock->sk)->core.sysctl_somaxconn; if ((unsigned int)backlog > somaxconn) backlog = somaxconn; ... if (!err) err = sock->ops->listen(sock, backlog); ... } return err; }
KINGYT
2019-05-30
1.5K0
Linux tcp/ip 源码分析 - connect
由第一篇文章可以知道,sock->ops->connect指向的方法为inet_stream_connect。
KINGYT
2019-05-30
1.9K0
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档