简单的时间片轮转多道程序内核代码浅析(一)

本实验是在linux环境下进行的,大家可以在实验楼的实验二来看到一个简单的时间片轮转多道程序内核代码

https://www.shiyanlou.com/courses/195

如果是自己的linux环境,可以按照以下步骤

简单的时间片轮转多道程序内核代码浅析(一)

简单的时间片轮转多道程序内核代码浅析(一)

完成mykernel的运行以后,在其同名目录下,会有myinterrupt和mymain 两个c程序文件

首先打开mymain.c

里面只有一个函数,其他都是相关头文件,完成的工作就是初始化。


简单的时间片轮转多道程序内核代码浅析(一)

这个函数操作系统的入口,这里面是一个无限循环,每隔10万次(由于现在cpu执行太快,所以将这个值设置偏大),执行一次print "my_start_kernel here"


打开myinterrupt.c

简单的时间片轮转多道程序内核代码浅析(一)

myinterrupt.c  也是类似,前面有许多头文件,这里面的函数更容易,即每次时钟中断产生一个print。中断处理,怎么样获取时钟中断,进入时钟中断入口等行为操作系统内核已经帮我们处理好了,所以我们只需要做一些,中断发生时的动作即可。


这样,当前有一个CPU执行C代码的上下文环境,同时具有中断处理程序的上下文环境模拟一个硬件平台,以及初始化的任务完成,

之后我会在mymain.c基础上继续写进程描述PCB和进程链表管理等代码,在myinterrupt.c的基础上完成进程切换代码,讲解一个可运行的小OS kernel。


张何灿+ 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000