linux0.01代码阅读
代码地址:
https://cdn.kernel.org/pub/linux/kernel/Historic/linux-0.01.tar.gz
代码目录:
main函数:
代码中的命名解释:
CMOS:存储计算机基本硬件设置(如日期、时间、启动顺序等)的半导体存储器,CMOS_READ从硬件时间存储的固件读取时间,存储到startup_time中
trap:陷阱,中断的一种,用户态一些操作会被动触发的中断叫做陷阱(内存缺页、除法错误等)
intr:中断
idt:中断向量表描述符
set_intr_gate:设置中断向量表
set_trap_gate:设置中断向量表
set_system_gate:设置系统调用(0x80中断)处理函数
tty:串口终端,用于字符输出的设备
gotoxy:移动字符光标位置的函数
tss:用于保存任务的上下文信息的结构
ltr(addr):x86指令,将指定位置的tss加载到CPU寄存器;上下文切换时使用
lldt(addr):x86指令,加载局部描述符表(Local Descriptor Table,LDT,用于存储任务的局部段描述符)
gdt:全局描述符表
buffer_init:初始化系统buffer
hd_interrupt:硬盘中断处理函数
sti:x86指令,用于设置处理器的中断标志位,允许处理器响应外部中断
move_to_user_mode():切换到用户态的函数
pause():去执行调度函数,相当于主动让出CPU使用权
schedule()
for task_list:
// 遍历信号,修改进程状态
for task_list:
// 找到第一个可运行进程
switch_to() // 切换上下文
// fork出init进程
fork:
copy_process
task_struct p = get_free_page
init task_struct p
copy_mem
copy_page_tables
set_tss_desc
set_ldt_desc
task[nr] = p; /* do this last, just in case */
return last_pid;
// wait/wait_pid/sys_waitpid...
// 内存屏障,主动防止CPU并行优化把指令顺序打乱
static inline void sync(void)
{
asm volatile ("sync" ::: "memory");
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构