Socket与系统调用深度分析
系统linux-5.0.1 32位 为加快大家查看源码的调用关系 提供 https://elixir.bootlin.com/linux/v5.0.1/source/net/ipv4/tcp_ipv4.c#L202 以下调试都是基于下图的理解进行的,针对图中1,2两个点,博文主要解决四个问题 1 int 0x80中断向量是如何与中断向量表绑定的? 2 socketAPI是如何进入内核调用socket 接口的? 3 socket接口是如何与传输层协议绑定的? 4 sokcet接口是如何调用具体协议的 Linux 引导过程综述 BIOS->Bootloader->内核初始化:体系结构相关部分-><内核初始化:体系结构无关部分> 内核初始化:体系结构相关部分 1 内核映像结构 2 初始化与保护模式 3 自解压内核 <4 startup_32(head_32.c)> startup_32(head_32.c) 1 初始化参数(设置段的值,清楚BSS,初始化栈) 2 开启分页机制 3 初始化 Eflags 4 检查处理器类型 5 载入 GDT、IDT <6 i386_start_kernel> i386_start_kernel 执行与体系结构无关部分的内核初始化 1 检查中断向量表(IDT)是否已经启动,em,IDT要被初始化第一次 <2 调用start