- 博客(8)
- 收藏
- 关注
原创 内核中的early_initcall
在内核初始化时,从start_kernel主函数开始,一步步进行调用do_pre_smp_initcalls函数会调用early_initcall,而do_basic_setup会调用其他的initcall。在学习网络在内核中实现时,发现在初始化时会使用early_initcall(“func”)来对函数进行表示,如spawn_ksoftirqd函数,其是为per-CPU创建内核线程。//即我们在调用module_init时,相当于调用__define_initcall(fn, 6)
2025-03-03 12:30:57
860
原创 iptables 和 netfilter 详解
iptables和netfilteriptables是Linux 上最常用的防火墙工具,iptables 与协议栈内有包过滤功能的 hook 交互来完成工作。这些内核 hook 构成了 netfilter 框架每个进入网络系统的包(接收或发送)在经过协议栈时都会触发这些 hook,程序可以通过注册 hook 函数的方式在一些关键路径上处理网络流量。iptables 相关的内核模块在这些 hook 点注册了处理函数,因此可以通过配置 iptables 规则来使得网络流量符合防火墙规则。
2024-10-12 11:17:06
1911
原创 体验进程的生命周期
用来终止进程,执行对应的内核函数do_exit(),该函数回收与进程相关的各种内核数据结构,把进程的状态设为TASK_ZOMBIE,并把其所有的子进程都托付给init进程,最后调用schedule()函数,选择新的进程执行。某些时候父进程要等待子进程执行结束后才能继续运行,或者子进程的功能是为父进程提供了下一步执行的先决条件,这时需要进程间的同步,就是要协调好进程,使之以安排好的次序依次执行。fork() 函数会新生成一个进程,调用 fork 函数的进程为父进程,新生成的进程为子进程。
2023-10-02 15:18:25
144
1
原创 C++强制类型转换
C++中强制类型转换的四种函数:静态转换(static_cast)、动态转换(dynamic_cast)、常量转换(const_cast)、重新解释转换(reinterpret_cast)
2022-03-27 14:26:19
1260
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人