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

news/2024/10/13 15:55:23

张晓攀+原创作品转载请注明出处+《Linux内核分析》MOOC课程https://mooc.study.163.com/course/1000029000

一、实验楼上实验二——mykernel实验指导(操作系统是如何工作的)

1.使用实验楼的虚拟机打开shell输入所给命令


这段代码的意思是应用一个补丁文件到Linux内核源代码,配置并编译内核,然后使用QEMU虚拟机启动该内核。

·cd ~/LinuxKernel/linux-3.9.4:进入Linux内核3.9.4的源码目录。注意路径区分大小写。

·rm -rf mykernel:删除名为“mykernel”的文件或文件夹(如果存在的话)。

pa·tch -p1 < ../mykernel_for_linux3.9.4sc.patch:应用补丁文件“mykernel_for_linux3.9.4sc.patch”,该补丁位于上级目录。-p1表示忽略补丁路径中的第一级目录。

·make allnoconfig:生成一个包含所有选项默认关闭的配置文件。这是为了快速配置一个最小化的内核。

·make:编译内核,这个过程可能需要一些时间。

·qemu --kernel arch/x86/boot/bzImage:使用QEMU启动编译生成的内核镜像“bzImage”。


输入最后一条指令可以看到程序陷入了死循环:

2.完成一个简单的时间片轮转多道程序内核代码

①创建mypcb.h文件,定义进程控制块的结构,并提供一个调度函数的原型

②修改mymain.c文件,实现内核代码的入口,负责初始化内核的各个组成部分

③修改myinterrupt.c文件,实现中断控制,并增加对进程切换时的my_schedule函数

④完成上述操作后重新进行make编译内核

可以看到:一个简单的时间片轮转多道程序内核代码成功实现。

二、相关问题

问:Linux中的时间片轮转是什么,有何作用?

答:时间片轮转(Round Robin, RR) 是 Linux 等操作系统中常用的进程调度算法之一,主要用于多任务系统中调度多个进程的执行顺序。

1. 时间片轮转的基本概念

  • 时间片(Time Slice/Quantum):每个进程在 CPU 上运行时,被分配到的时间长度,称为时间片。它是一个固定的时间单位,例如 10 毫秒。
  • 轮转(Round Robin):操作系统按照一个循环队列的方式,将各个就绪态的进程轮流分配到 CPU 上执行。每个进程在其时间片用完后,如果还没有完成任务,就会被置于就绪队列的末尾,等待下一次被调度。

2. 时间片轮转调度的工作原理

时间片轮转调度的基本流程如下:

 ①**初始状态**:所有就绪态的进程按照进入队列的顺序排成一个循环队列。

​ ②时间片分配:调度器从队列头部选择一个进程,并分配一个时间片让它运行。

​ ③执行与切换

  • 如果进程在时间片内完成任务(例如,I/O请求或退出),则调度器会选择队列中的下一个进程。
  • 如果进程在时间片结束时还未完成,则会被挂起并放回队列末尾,同时调度器选择下一个进程执行。

​ ④重复:调度器不断重复这个过程,从而在多个进程之间进行切换。

3. 时间片轮转的作用

时间片轮转在操作系统中的作用包括以下几点:

  • 提高系统响应速度:由于每个进程都能在短时间内获得 CPU 时间片,用户可以感觉到系统反应很快。对于交互式系统,时间片轮转可以让用户任务(如按键、点击)得到快速响应。
  • 公平性:每个进程按照顺序得到执行时间,没有进程会被长时间地独占 CPU,这使得各个任务能够公平地获得执行机会。所有进程都能按顺序获得时间片,即使某些进程需要更多的时间来完成工作。
  • 避免饥饿(Starvation):时间片轮转的方式确保每个进程都能够在一定时间内得到执行,不会出现某些进程长期得不到执行的情况,从而避免了饥饿现象。
  • 适用于时间敏感任务:由于时间片轮转调度器会在每个时间片结束后切换到下一个进程,因此它特别适用于那些需要频繁响应的任务(如用户界面程序)。

4. 时间片长度的选择

时间片长度的选择对系统性能有很大影响:

  • 时间片过短
    • 进程在 CPU 上运行的时间很短,频繁的进程切换会导致大量的上下文切换开销,浪费系统资源。
    • 系统的整体吞吐量可能下降,因为 CPU 花费更多时间在切换进程而非实际工作上。
  • 时间片过长
    • 进程长时间占据 CPU,可能会导致其他进程等待的时间变长,降低系统的响应速度。
    • 系统不再表现为“轮转”式调度,变得更像是先来先服务(FCFS)的调度方式,影响到交互式任务的体验。

一般来说,时间片长度需要在系统响应速度和上下文切换开销之间进行权衡。现代操作系统中,时间片的长度通常设定为 10 到 100 毫秒之间。

5. 时间片轮转的适用场景

  • 多任务系统:时间片轮转特别适合多任务环境,如桌面操作系统(Windows、Linux)和智能手机系统(Android、iOS)。
  • 交互式任务:适用于图形用户界面程序和需要快速响应用户操作的任务,因为它可以保证每个用户任务都能快速得到CPU执行。
  • 没有明确优先级的任务:对于任务没有显著优先级差异的情况,时间片轮转可以均衡处理每个任务的执行时间。

总结

时间片轮转是一种简单而有效的调度算法,它通过为每个进程分配一定的时间片并按顺序轮流调度,确保了多任务系统中每个任务的公平性和系统的快速响应。它在保证公平性和避免饥饿方面非常有用,但在高负载情况下,时间片的选择需要谨慎,以避免过多的上下文切换。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/71098.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

正义使者其五

最正义的一集\(\Huge{能参加高校校园行,好!}\)

2024-2025-1 20241407《计算机基础与程序设计》第三周学习总结

这个作业属于哪个课程 2024-2025-1计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第三周作业这个作业的目标 学习数字分类与计数法、位置计数法、进制转换、模拟数据与数字数据、压缩与解压、数字化、信息安全作业正文 https://www.cnblogs.com/wang…

TowardsDataScience-博客中文翻译-2019-三十五-

TowardsDataScience 博客中文翻译 2019(三十五)原文:TowardsDataScience Blog 协议:CC BY-NC-SA 4.0如何保护云中的健康数据原文:https://towardsdatascience.com/how-to-secure-health-data-in-the-cloud-541fbdad811a?source=collection_archive---------16-----------…

TowardsDataScience-博客中文翻译-2019-三十三-

TowardsDataScience 博客中文翻译 2019(三十三)原文:TowardsDataScience Blog 协议:CC BY-NC-SA 4.0如何用 Python 编写公平抛硬币的代码原文:https://towardsdatascience.com/how-to-code-a-fair-coin-flip-in-python-d54312f33da9?source=collection_archive---------7…

TowardsDataScience-博客中文翻译-2019-六十-

TowardsDataScience 博客中文翻译 2019(六十)原文:TowardsDataScience Blog 协议:CC BY-NC-SA 4.0堆叠分类器以提高预测性能原文:https://towardsdatascience.com/stacking-classifiers-for-higher-predictive-performance-566f963e4840?source=collection_archive------…

TowardsDataScience-博客中文翻译-2016-2018-三十一-

TowardsDataScience 博客中文翻译 2016~2018(三十一)原文:TowardsDataScience Blog 协议:CC BY-NC-SA 4.0主成分分析:你的教程和代码原文:https://towardsdatascience.com/principal-component-analysis-your-tutorial-and-code-9719d3d3f376?source=collection_archive-…

TowardsDataScience-博客中文翻译-2016-2018-三十八-

TowardsDataScience 博客中文翻译 2016~2018(三十八)原文:TowardsDataScience Blog 协议:CC BY-NC-SA 4.0Python 属性的原因和方式原文:https://towardsdatascience.com/the-why-and-how-of-python-properties-b791817cf4b9?source=collection_archive---------3--------…

2024-2025-1 20241327 《计算机基础与程序设计》第三周学习总结

作业信息 |2024-2025-1-计算机基础与程序设计)| |-- |- |2024-2025-1计算机基础与程序设计第二周作业)| |快速浏览一遍教材计算机科学概论(第七版),课本每章提出至少一个自己不懂的或最想解决的问题并在期末回答这些问题 |作业正文|https://www.cnblogs.com/shr060414/p/18…