进程的调配算法研究,此为报名帖,组织好人,就开工讨论,写代码公布代码,讨论 修改,群内交流共同学习进步
最近的一个想法
只考虑两种状态 运行和非运行态 用BOOL值BOOL_FLAG 00000000 这个8位的值的最右第一个值来表示 运行OR非运行
进程的优先级用BOOL_FLAG 的第二和第三位来表示这个 进程的优先级 第四个位来表示进程的中断挂起和待命运行的状态
算法
1.分配进程的时间片值,设置为20秒
2.进程在时间片的表现情况
a 进程用完 所有的时间片
b 进程收到中断信号,转入中断历程 讲中断历程加入到等待运行队列中,并置进程的挂起位,建立中断映射表,用于中断完成返回时 置进程的挂起位
c 进程时间片完,将进程加入到执行过后的待排队列中 等待运行队列完后,从这个队列加载并形成新的等待运行队列
d 检查中断映射表,讲挂起位为 待命运行状态的程序,加入到等待运行队列中
数据结构
1.进程模块的简化结构
typedef struct proc{
short bool_flag; /进程的标志位
unsigned int addr; /程序指令偏移地址
unsigned int lp; / 进城的PID值,这个是用来标记进程的
unsigned int addr_mk /程序在虚拟内存中的位置,用于加载进程相关数据
typedef struct {} 这个结构体用于保护现场 这个地方还没想好
}proc;
给出一个数据结构抽象 实现还希望各位参与讨论
给出建设性的意见,一起完成这个东西。
进程切换的模拟过程
1. 指定程序执行点 ,从虚拟内存中的代码段读出 指令偏移后的指令加载到内存中,加载数据部分,恢复现场,置指令EIP的值
2.程序片用完后保存现场,并置指令EIP
[ 本帖最后由 朱三哥 于 2012-12-31 18:28 编辑 ]