![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux网络技术内幕
文章平均质量分 77
ggzwtj
GG大婶
展开
-
通知链
内核的很多子系统之间有很强的相互依赖性,因此,其中一个子系统侦测到的或者产生的事件,其他的子系统可能很感兴趣。为了实现这种交互需求,Linux使用了所谓的通知链。通知链上的是一个个的notifiter_block结构:struct notifier_block { int (*notifier_call)(struct notifier_block *, unsigned long, v原创 2011-11-08 08:33:48 · 1582 阅读 · 0 评论 -
系统调用
有些工作如果只是在用户空间是没有办法完成的,比如取得时间、操作文件等,这个时候就需要系统调用了。而一般的系统调用的过程是:我们的程序调用C库包装好的一些函数,这些函数去执行系统调用,然后再把返回的结果给我们看。现在有一个问题就出现了:用户空间是不能去访问内存空间的,那么怎么去运行内核空间中的代码呢?具体的过程如下: 首先程序触发int 0x80软中断陷入内核态。 然原创 2011-11-09 22:20:26 · 497 阅读 · 0 评论 -
网络设备初始化
内核的选项解析完之后便进入各个子系统初始化函数调用阶段。kernel_init通过do_basic_setup调用do_initcalls函数完成。下面我们先来看do_initcalls的代码:static void __init do_initcalls(void){ initcall_t *call; int count = preempt_count(); for (call原创 2011-11-08 20:53:31 · 1346 阅读 · 0 评论