43 进程的初步实现(下)

参考

https://blog.51cto.com/13475106/category6.html及狄泰软件相关课程

 

问题-如何通过进行上下文恢复进程执行?如何使得进程运行于3特权级
1.恢复上下文数据-通过任务数据结构中的寄存器值恢复上下文,几种esp寄存器记忆pop指令恢复通用寄存器(通过汇编中的栈操作指令以及RegValue结构体变量,设置寄存器的值),每次pop向高地址四个字节,需要注意的是启动一个新任务可以看作特殊的任务切换,切换的目标任务上下文信息中通过寄存器的值为0.
操作系统-进程的初步实现
操作系统-进程的初步实现
2.特权级转移(高-低)
在调用门中retf从高特权级返回低特权级,于此类似,iret指令也能从高特权级返回底特权级。在这里的操作是将esp指向目标内存位置(eip,cs,eflags,esp,ss),借助iret指令降特权级执行
在中断于中断返回时可以知道,在中断发生时,可从底特权级转移到高特权级,中断返回时,从高特权级转移到低特权级
操作系统-进程的初步实现
3.中断访问程序返回时的栈变化--iret命令操作的寄存器
操作系统-进程的初步实现
4.代码的执行方案如下
操作系统-进程的初步实现
5.进程启动"函数"
参数是任务数据结构的地址,esp+200/202表示偏移
操作系统-进程的初步实现
详细的代码放置以下链接:https://pan.baidu.com/s/1altDhV-kJNWamUcc4r5oEw 提取码:h2ao

操作系统-进程的初步实现

posted on 2021-04-21 14:26  lh03061238  阅读(112)  评论(0)    收藏  举报

导航