2022年9月1日

Linux0.11 sleep_on函数分析

摘要: /* * 将当前进程设置为不可中断的睡眠状态 * 只能通过wake_up进行唤醒 * */ void sleep_on(struct task_struct **p) { struct task_struct *tmp; if (!p) return; /* * task[0]不允许睡眠 */ if 阅读全文

posted @ 2022-09-01 17:48 sudochen 阅读(238) 评论(0) 推荐(0)

Linux0.11 move_to_user_mode分析

摘要: /* * IRET * 当使用IRET指令返回到相同保护级别的任务时,也就是当前的CS中的DPL和堆栈中的DPL相同时 * IRET会从堆栈弹出代码段选择子及指令指针分别到CS与IP寄存器, * 并弹出标志寄存器内容到EFLAGS寄存器。 * * 当使用IRET指令返回到一个不同的保护级别时,也就是 阅读全文

posted @ 2022-09-01 14:24 sudochen 阅读(153) 评论(3) 推荐(0)

Linux0.11内核栈切换的一些问题分析

摘要: 在网上流传的方法如下 以及如下 以上两个代码段,当进行第一次fork时,看似没有问题,但是如果在Linux0.11上的根文件系统里编译Linux0.11源码时,可能会出现一些程序错误,我们深入分析会发现,在后续的任务调度中,当程序执行到switch_to时,理论上来说是需要保护所有的寄存器现场,但如 阅读全文

posted @ 2022-09-01 13:40 sudochen 阅读(127) 评论(0) 推荐(0)

导航