(作业2)mykernel实验指导(操作系统是如何工作的)

时间:2021-07-09 03:09:22

作业题目: 

详细分析该精简内核的源代码并给出实验截图,撰写一篇署名博客,并在博客文章中注明“真实姓名(与最后申请证书的姓名务必一致) + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”,博客内容的具体要求如下: 

  • 题目自拟,内容围绕操作系统是如何工作的进行;

  • 博客中需要使用实验截图

  • 博客内容中需要仔细分析进程的启动和进程的切换机制

  • 总结部分需要阐明自己对“操作系统是如何工作的”理解。

作答区:

1. 代码下载地址(由孟老师提供):https://github.com/mengning/mykernel。这里不粘出代码。如果想在Windows下查看,可以点击上面的链接,具体的文件参照下图:

(作业2)mykernel实验指导(操作系统是如何工作的)

注:mypcb.h是一些结构体、常量的定义和函数的声明,简单看看即可。

2. 按照要求,输入如下命令:

cd LinuxKernel/linux-3.9.4
qemu
-kernel arch/x86/boot/bzImage
cd mykernel

(作业2)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. 执行程序截图

(作业2)mykernel实验指导(操作系统是如何工作的)

4. 老实说这篇博文比较水,有点应付作业的意思,没有自己的见解因为没太听懂。博主需要时间消化、理解一下。因为作业上交的期限要到了,就先写到这里。好歹证明咱学习过、思考过。如果有好的文章不妨推荐给我一下。谢谢大家。

 

 

作者:李春霖

原创作品转载请注明出处

《Linux内核分析》MOOC课程地址:http://mooc.study.163.com/course/USTC-1000029000