操作系统——多进程与进程调度
实验目的:
多进程的实现机理与进程调度
实验内容:
1. 多进程问题,如何扩展单进程到多进程,如何扩展中断支持多进程?
2. 如何实现系统调用
3. 进程调度问题,弄清楚实现调度的基本思路
实验环境:
VMware + Ubuntu32位
实验步骤:
1.多进程问题,如何扩展单进程到多进程,如何扩展中断支持多进程?
1)进程体
首先需要不止一个进程体,所以先实现两个不同的进程体。
2)相关变量和宏
需要实现一个进程的运行需要4个变量&宏:进程表,进程体,GDT,TSS。
与之前单进程的进程初始化步骤完全相同,但我们为了方便,构造一个循环来进行初始化步骤,使得以后每多一个进程只需要添加一次循环即可。
3)进程表与初始化
在定义了以上结构体与宏定义之后,即可以开始初始化进程。
可以看到其实和上一次实验区别不大,也就是加了个循环…
4)LDT
算法与单进程类似,只是使用了一个循环来完成多进程的LDT填充问题。
5)中断处理程序
在单进程中我们的中断处理程序有两个任务,一个是打印字符,一个是从进程表中读取或写入寄存器值,以此恢复或保存进程运行状态。多进程同理,但是