Minix进程管理部分的问题 看不懂,能不能說清楚一點。書上是不是說這兩個地方不一至。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在中断产生的时候都要把当前正在运行的进程的寄存器值保存到process table中,也就是proc[]中的某一个数组元。当前进程如果是用户级,中断产生以后将自动切换内层堆栈。如果内层堆栈指针恰好指向每一个进程的process table中用于保护现场的那部分数据块,具体说就是proc[i].p_reg,那么中断产生后保护现场的过程就很简单,就用几个push就结了。实际上save()35854 !* save *就是这样做的。那么每一个进程的内层堆栈开头那一部分,应该分别映射到数组proc[]中各个不同地方,而不可能是连续的。但是每一个进程所对应的内层堆栈都不同:tss.ss0是一样的,只是sp值不一样。所有进程的内层堆栈都从t_stack开始连续分配,而且每个进程的内层堆栈大小ttp->stksize也是不一样的。proc[].p_reg是离散,不连续的,大小也是固定的;t_stack[]却是连续的,每个进程所占用的大小也是不一样的。两者是相互矛盾的。再有一点,内层堆栈除了用来保护现场,剩余部分要给中断程序使用,如果process table和内层堆栈是结合在一起的,这样岂不是会把proc[]中与保护现场无关的内容冲掉了? 使用ADO创建了一个数据库,如何对该数据库具有可以从其他数据库复制表的权限 请教高手~~ 图像的镂空显示 高分请教-----用什么实现FTP服务器 共享文件夹问题 有人使用过excel提供的编程接口吗?你遇到过这样的问题吗?感觉mic好像很... Emacs下载完成后,但不知怎样用 MFC 怎样将编辑框内容动态写入文件。。。 关于多线程采集视频和处理的问题 有谁用过GNU MP开发ISAPI? 怎样保存历史记录? vc++Debugg程序运行完系统(Ixplorer)出错问题-第4次提问--拜托看清贴子内容,别给无用答案--以前答案没有解决问题
如果内层堆栈指针恰好指向每一个进程的process table中用于保护现场的那部分数据块,具体说就是proc[i].p_reg,那么中断产生后保护现场的过程就很简单,就用几个push就结了。实际上save()35854 !* save *就是这样做的。那么每一个进程的内层堆栈开头那一部分,应该分别映射到数组proc[]中各个不同地方,而不可能是连续的。
但是每一个进程所对应的内层堆栈都不同:tss.ss0是一样的,只是sp值不一样。所有进程的内层堆栈都从t_stack开始连续分配,而且每个进程的内层堆栈大小ttp->stksize也是不一样的。
proc[].p_reg是离散,不连续的,大小也是固定的;t_stack[]却是连续的,每个进程所占用的大小也是不一样的。两者是相互矛盾的。
再有一点,内层堆栈除了用来保护现场,剩余部分要给中断程序使用,如果process table和内层堆栈是结合在一起的,这样岂不是会把proc[]中与保护现场无关的内容冲掉了?