43 进程的初步实现(下)
参考
问题-如何通过进行上下文恢复进程执行?如何使得进程运行于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 阅读(92) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)