随笔分类 -  Linux进程管理

参考博客&文档&书籍
摘要:https://www.cnblogs.com/LoyenWang/ https://www.cnblogs.com/linhaostudy/[]() https://elixir.bootlin.com/linux[]() https://my.oschina.net/u/3857782 http 阅读全文
posted @ 2021-03-29 14:23 将军之盾 阅读(62) 评论(0) 推荐(0)
switch_to及ret_from_sys_call控制任务的切换与返回
摘要:当进程A在用户态下执行着,出现了系统调用(int 0x80),CPU转而执行_system_call(system_call.s L80)中断处理过程, _system_call 保持了进程A在用户态时的现场信息,然后执行call _sys_call_table(, %eax, 4)指令,当执行完本指令时,进程 A请求的系统调用已经完成了,_system_call剩下的代码是该系统调用中断处理过程的退出阶段。 当执行到jne reschedule时,处于内核态的进程A希望主动放弃CPU,实现进程调度,reschedule代码如下: reschedule: pushl $ret_from_sy. 阅读全文
posted @ 2011-05-12 06:26 将军之盾 阅读(1012) 评论(0) 推荐(1)
任务0的内核堆栈,用户堆栈
摘要:描述任务0的内核堆栈和用户堆栈是如何产生的: 1, linux0.11系统共使用了4种堆栈:系统初始化时临时使用的堆栈;供内核程序自己使用的堆栈(内核堆栈),只有一个,位于系统 地址空间固定的位置,也就是后来任务0的用户态堆栈;每个任务通过系统调用,执行内核程序时使用的堆栈,也即任务的内核态 堆栈,每个任务都有自己独立的内核态堆栈;任务在用户态执行的堆栈,位于任务(进程)地址空间末端,即任务的用户态堆栈 2, 从head.s程序起,系统正式在保护模式下运行,此时堆栈段被设置为内核数据段(0x10),堆栈指针esp设置成指向use_stack 数组的顶端,保留1页内存作为堆栈使用。head.s. 阅读全文
posted @ 2011-04-28 19:40 将军之盾 阅读(871) 评论(0) 推荐(0)
linux0.11 引导启动程序目录boot/分析
摘要:boot/包含三个汇编文件:bootsect.s,setup.s,head.s。bootsect.s程序是磁盘引导块程序,编译后会驻留在磁盘的第一个扇区中(引导扇区,0磁道,0磁头,第一个扇区),在PC加电ROM-BIOS自检后,将被BIOS加载到内存0X7C00处执行。setup.s程序主要用于读取机器的硬件配置参数,把内核模块system移动到适当的内存位置处。head.s程序会被编译连接在system模块的最前部分,主要进行硬件设备的探测设置和内存管理页面的初始化设置。 BIOS: PC上电后,执行ROM-BIOS中0XFFFF0处代码,将编译后的bootsect模块加载到0X7C00. 阅读全文
posted @ 2011-04-18 19:44 将军之盾 阅读(417) 评论(0) 推荐(0)