2011年5月20日

多进程的进程表初始化

摘要: PUBLICchartask_stack[STACK_SIZE_TOTAL]//在global.c中task_stack其实是一个有着STACK_SIZE_TOTAL大小的数组。task_stack是这个数组名 用这个数组作为堆栈。----------------------------------------------------------TASK*p_task= task_table;PROCESS*p_proc= proc_table;char*p_task_stack= task_stack + STACK_SIZE_TOTAL; //进程堆栈,是一个数组。数组的起始地址+偏移量, 阅读全文

posted @ 2011-05-20 23:00 wanghj_dz 阅读(449) 评论(0) 推荐(0) 编辑

丰富中断程序,以及中断与进程运行的关系

摘要: 进程A在运行,时钟中断发生。中断会读取TSS中ring0的esp。该esp指向进程A进程表的regs的最后,并且把进程A运行的cs,eip,ss,sp,eflags等信息压入到esp指向的进程表。执行中断程序执行中断程序最后一个iredt指令,因为现在esp指向进程表的cs,eip等参数,所以会把刚刚保存进进程表的进程A的参数压出到寄存器。返回到进程A继续执行。--------------------------------------------------------------------------其实,即便我们打开了时钟中断,时钟中断也只会发生一次,因为我们没有将中断结束位EOI置为 阅读全文

posted @ 2011-05-20 15:17 wanghj_dz 阅读(597) 评论(0) 推荐(0) 编辑

进程的进程表、进程体、GDT、TSS的关系,以及进程表的初始化

摘要: 关系见P252,图6-9进程表与GDT的关系:进程表里的LDT Selector对应GDT中的一个描述符,而这个描述符所指向的内存空间就存在与进程表内。进程表与进程体的关系:进程表是进程的描述,进程运行过程中如果被中断,各个寄存器的值都会被保存进进程表中。使用到进程表堆栈。但是,在我们的第一个进程开... 阅读全文

posted @ 2011-05-20 08:29 wanghj_dz 阅读(3330) 评论(0) 推荐(0) 编辑

导航