(作业2)mykernel实验指导(操作系统是如何工作的)
作业题目:
详细分析该精简内核的源代码并给出实验截图,撰写一篇署名博客,并在博客文章中注明“真实姓名(与最后申请证书的姓名务必一致) + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”,博客内容的具体要求如下:
-
题目自拟,内容围绕操作系统是如何工作的进行;
-
博客中需要使用实验截图
-
博客内容中需要仔细分析进程的启动和进程的切换机制
-
总结部分需要阐明自己对“操作系统是如何工作的”理解。
作答区:
1. 代码下载地址(由孟老师提供):https://github.com/mengning/mykernel。这里不粘出代码。如果想在Windows下查看,可以点击上面的链接,具体的文件参照下图:
注:mypcb.h是一些结构体、常量的定义和函数的声明,简单看看即可。
2. 按照要求,输入如下命令:
cd LinuxKernel/linux-3.9.4 qemu -kernel arch/x86/boot/bzImage
cd mykernel
输入vi mymain.c,可以看到有如下两个函数:
void __init my_start_kernel(void); // 初始化进程0,并用for循环创建更多的进程(1~n),汇编代码启动进程0 void my_process(void); // 每10000000次进行一次判断:如果需要调度,则调用my_schedule()。并输出相应提示语句
输入vi mymain.c,可以看到有如下两个函数:
void my_timer_handler(void); // 周期性执行该时钟中断处理程序,设置时间片大小,时间片用完时设置一下调度标志 void my_schedule(void); // if两个正在运行的进程之间做进程上下文切换,else切换到一个新进程的方法
3. 执行程序截图
4. 老实说这篇博文比较水,有点应付作业的意思,没有自己的见解因为没太听懂。博主需要时间消化、理解一下。因为作业上交的期限要到了,就先写到这里。好歹证明咱学习过、思考过。如果有好的文章不妨推荐给我一下。谢谢大家。
作者:李春霖
原创作品转载请注明出处
《Linux内核分析》MOOC课程地址:http://mooc.study.163.com/course/USTC-1000029000