首页 > 其他 > 详细

基于mykernel 2.0编写一个操作系统内核

时间:2020-05-11 20:58:05      阅读:43      评论:0      收藏:0      [点我收藏+]

一、实验准备

  在实验开始之前,需要虚拟化一个x86-64的CPU硬件平台

  使用实验事先准备的虚拟cpu平台,在Ubuntu18.04LTS操作系统上依次运行以下命令行

wget https://raw.github.com/mengning/mykernel/master/mykernel-2.0_for_linux-5.4.34.patch
sudo apt install axel
axel -n 20 https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.34.tar.xz
xz -d linux-5.4.34.tar.xz
tar -xvf linux-5.4.34.tar
cd linux-5.4.34
patch -p1 < ../mykernel-2.0_for_linux-5.4.34.patch
sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev
make defconfig
make -j$(nproc)
sudo apt install qemu
qemu-system-x86_64 -kernel arch/x86/boot/bzImage
  
 以下是配置过程中的部分截图以及配置完成后的运行截图
技术分享图片

 

 技术分享图片

 

 

 

技术分享图片

 

 

 二、实验过程

  实验的主体是通过修改目录 /linux-5.4.34/mykernel下的mymain.c和myinterrupt.c文件

  从而实现多进程与进程切换的功能

  首先我们需要为新文件写个头文件mypcb.h

  该头文件定义了线程和进程控制块PCB的结构

技术分享图片

 

 

 

  新的mymain.c和myinterrupt.c文件如下:

技术分享图片

 

 

 

技术分享图片

 

 

 

三、实验结果

  添加多进程与进程调度模块之后

  对原有的虚拟CPU平台重新编译

  再次运行的结果如下

技术分享图片

 

 

 

四、实验感想

  通过此次实验,首先我对cpu中的各个寄存器的功能有了更深的印象;其次通过手动添加嵌套汇编语言的C代码,使我对进程切换时相关堆栈的操作以及寄存器内容的变动有了更深入的理解;最后,这次实验使我对linux系统内核的认识更加清晰,不再有畏难情绪,也对操作系统的内核有了更高的兴趣。

 

基于mykernel 2.0编写一个操作系统内核

原文:https://www.cnblogs.com/codingrookie/p/12871290.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!