20242828《Linux内核原理与分析》第三周作业

20242828《Linux内核原理与分析》第三周作业

实验准备

# 注意路径是区分大小的
$ 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
  • patch -p1 < ../mykernel_for_linux3.9.4sc.patch
    使用 patch 命令应用补丁文件 mykernel_for_linux3.9.4sc.patch 到当前目录下的内核源码。-p1 选项用于指定补丁的路径层次。

  • make allnoconfig
    生成一个最小化配置文件,该配置文件禁用了内核中的所有可选配置选项。allnoconfig 会创建一个“最小配置”内核。

  • make
    开始编译内核,使用默认的 Makefile 配置。该过程可能需要较长时间,因为这会根据配置生成内核及其模块。

  • qemu -kernel arch/x86/boot/bzImage
    使用 QEMU 启动刚编译好的内核镜像。bzImage 是 Linux 内核的可引导镜像文件,位于 arch/x86/boot/ 目录下。

实验步骤:

1、使用实验楼的虚拟机打开 shell,进入到linux-3.9.4文件夹下

2、删除名为 mykernel 的文件夹及其所有内容。删除此文件夹通常是为了确保之后的编译过程是从干净的状态开始。

3、使用 patch 命令应用补丁文件 mykernel_for_linux3.9.4sc.patch 到当前目录下的内核源码


4、生成一个最小化配置文件,该配置文件禁用了内核中的所有可选配置选项。

5、make开始编译内核,使用默认的 Makefile 配置

6、使用 QEMU 启动刚编译好的内核镜像。出现死循环,可以看到my_start_kernel这个内核的初始化入口点在执行,同时my_timer_handler时钟中断处理程序周期性执行。

6、进入mykernel文件夹下修改 mymain.c(主函数)、myinterrupt.c(中断控制函数),并且新增内容mypcb.h(进程控制块)



7、回到上一级目录make重新编译内核

8、使用 QEMU 启动刚编译好的内核镜像。qemu -kernel arch/x86/boot/bzImage

总结

时间片轮转(Time Slice Round-Robin) 是 Linux 内核中最简单和常见的调度算法之一,通常用于实时系统或公平调度中的一部分。其核心思想是:每个可运行的进程都会被分配一个固定的时间片(Time Slice),即该进程可以连续执行的最大时间量。时间片结束后,调度器强制暂停该进程,并将 CPU 分配给下一个就绪队列中的进程,从而实现多任务处理和公平性。它确保了多任务系统中每个进程都能公平地分配 CPU 资源,但同时面临时间片长度的权衡问题。通过与现代调度器(如 CFS)的结合,Linux 实现了高效、灵活的任务调度,从而能处理各种类型的工作负载。

实验中遇到的问题及解决方案:

实验中在mykernel目录下使用make会报错,一定要返回到上一目录后再使用make即可解决问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值