单CPU环境中如何实现多进程并行工作?
原创作品转载请注明出处 原创作者 ShenYue(沈乐) 实验日期 20160306 实验名称 完成一个简单的时间片轮转多道程序内核代码 实验来源 《 Linux 内核分析》 MOOC 课程 http://mooc.study.163.com/course/USTC-1000029000 操作系统单程序的函数调用使用的是 堆栈机制 , 通过 ebp esp eip 指针的进栈出栈来切换不同的栈帧 ( 执行上下文 ), 然而单 CPU 只能有唯一的执行流 , 多进程环境中不可能让单一进程 ” 独占 ” , 如何实现多进程并行工作 , 在其他进程使用 CPU 的时候可以 ” 抢占 ” 执行资源 ? 答案就是 interrupt( 中断机制 ). 下面是一个关于 时间片轮转的操作系统内核实验 , 由于 Linux 内核代码本身提供了预留的接口用于开发者定义自己的系统启动函数和时钟中断处理函数 , 所以简单地实际这样的函数来进行中断处理动作就可以模拟周期性地时间中断 ” 抢占 ” 系统启动进程的过程 . 登录实验楼的环境 , 其中已经事先安装好了 GCC 的运行环境 ,QEMU 硬件模拟环境和 Linux 内核编译源码 . 定义 my_start_kernel, 周期性地在内核态打印 my_start_kernel here 的字符串 . 定义timer interrupt的回调函数my