2020-2021-1 20209328 《Linux内核原理与分析》第三周作业

1.实验内容
完成一个简单的时间片轮转多道程序内核代码。在Github中拷贝代码对原代码进行修改并重新按照步骤进行。
2.实验过程
根据老师的实验指导在实验楼环境下打开shell,
cd LinuxKernel/linux-3.9.4
rm -rf mykernel
patch -p1 < ../mykernel_for_linux3.9.4sc.patch
make allnoconfig
make
qemu -kernel arch/x86/boot/bzImage
然后 cd mykernel
看到原mymain.c和myinterrupt.c,


运行的结果如下:

之后修改mymain.c和myinterrupt.c,并加入mypcb.h。
现在的mymain.c和myinterrupt.c,


运行结果如下:

实验过程遇到的问题
第二次想重新运行的时候运行结果与第一次不同

自己分析可能是因为patch -p1 < ../mykernel_for_linux3.9.4sc.patch
make allnoconfig加入了时间片轮转多道程序内核代码的运行环境,
然后向同学进行询问:
3.学到的知识
前面的实验已经涉及到了计算机3个非常重要的基础性概念中的两个:1是存储程序计算机,他基本上是所有计算机的基础性的逻辑框架;另一个就是堆栈。
还有一个非常基础性的概念就是中断,他们3个可以叫做计算机的三大法宝。
堆栈的相关寄存器:ESP、EBP。堆栈的基本操作:push、pop。堆栈里面的特别关键的就是函数调用堆栈框架。
内嵌汇编:
Asm( 汇编器模板(Assembler templAte)
: 输出操作数 可选
: 输入操作数 可选
: 占用的寄存器 可选
);
代码与对应的寄存器

posted @ 2020-10-25 11:08  matahh  阅读(88)  评论(0编辑  收藏  举报