Toggle navigation
Midk9t's Blog
All Posts
life
tech
开发日志
每周见闻
睡前笔记
Midk9t's Blog
浅谈为什么进程阻塞时不占用CPU
内核接收数据流程 讨论这个问题,我们需要先大致回顾一下内核接收数据时的过程: 网卡接收数据后,通过DMA写入内核的ring buffer,然后通过软中断和硬中断通知内核有数据到达。 内核派出一个专门线程ksoftirqd 从ring buffer中获取数据帧,用sk_buff表示,然后传入网络协议栈进行处理。 协议栈按照MAC→IP→TCP/UDP的顺序逐层校验sk_buff的报文头,判断是否是发给本机用户程序的数据。 内核按照源目端口和源目IP四元组找到对应的Socket,把数据写入Socket的接收缓冲区。 用户进程对应的系统调用把内核Socket缓冲区的数据拷贝到应用层的缓冲区,然后唤醒用户进程。 Linux的进程调度 在Linux中,进程大致有7种状态:
Posted by Midk9t's Blog on Thursday, December 15, 2022
so many things to try, so little time
FEATURED TAGS
backend
go
kubernetes
prometheus
python
raft
分布式系统
网络
运维
LAST POSTS
记录如何用gluetun+litellm搭建身处海外的大模型网关
kube-backup: 基于ArgoWorkflow与Restic的k8s简单备份方案
【每周见闻】202502 week2
【每周见闻】202502 week1
GitOps与ArgoCD入门