进程控制块
数据结构
在本课程和其它课程中,大家应该对进程控制块(Process Control Block,PCB)有了一定的了解,实验3开始操作系统提供对多进程的支 持,简单介绍一下lab3中的进程控制块。
对于实验二的TrapFrame,我们变成了StackFrame。
可以看出,StackFrame保存了陷入中断之前程序的状态(主要是硬件保存的内容)。
组织数据结构
PCB数组
对于每个进程都会有一个进程控制块PCB。那么如何组织这个数据结构?
为了快速访问,我们可以把它设置成一个数组,如下:
这样就可以通过PID作为索引,用数组下标快速访问相应的进程控制块。内核进程会占据0号pcb,剩下的分配给用户进程。同样为了简单,我们默认每个pcb 对应进程的内存空间固定, pcb[i] 对应的进程内存起始地址为 (i + 1) * 0x100000 ,大小为 0x100000
关于管理空闲进程
为了回答上面的问题,这里给出一个时间复杂度O(n)的朴素做法。
Last updated