心渐渐失空

导航

统计

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");
}

posted on   心渐渐失空  阅读(183)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示