第1关:版本1.2内核的进程调度过程分析
本关任务回答问题: 1.从输出第 2 个字符1
到输出第 3 个字符1
,产生了几次调度?各调度的原因是什么? 2.从输出第 3 个字符1
到输出第 4 个字符1
,产生了几次调度?各调度的原因是什么? 3.从各进程的第二次循环开始,在一次循环期间,0 号进程会产生几次调度?1 号进程会产生几次调度?
相关知识
为了完成本关任务,你需要掌握: 1.Linux 0.11 的进程调度算法是怎样的; 2.如何跟踪到输出第 2 个字符1
; 3.如何判断产生进程调度的原因; 4.如果发生由系统调用中的延迟调度产生的进程调度,如何分析具体是由哪个系统调用的执行引发的; 5.在执行一次 pause 系统调用时,可能引发几次进程调度。
编程要求
根据相关知识,修改版本 1.2 内核回答问题:(gdb 调试过程中输入单词请一次输入正确,如果字母输入错误请重新输入整条命令,否则会影响评测结果!!!) 通过 gdb 调试查找答案,将第三关的答案填写在/data/workspace/myshixun/第三关.txt
中。 第一次由时钟中断引发进程调度时: 1.从输出第 2 个字符 1
到输出第 3 个字符1
,产生了几次调度?各调度的原因是什么? 2.从输出第 3 个字符 1
到输出第 4 个字符 1
,产生了几次调度?各调度的原因是什么? 3.从各进程的第二次循环开始,在一次循环期间,0 号进程会产生几次调度?1 号进程会产生几次调度?
测试说明
平台会对你的操作进行检测,同时会对文档的内容进行检测。请完成操作并且填写文档内容之后再点击评测。
第2关:两个进程的严格交替输出
相关知识
为了完成本关任务,你需要掌握: 1.Linux 0.11 的进程调度算法是怎样的; 2.如何判断产生进程调度的原因; 3.如果发生由系统调用中的延迟调度产生的进程调度,如何分析具体是由哪个系统调用的执行引发的; 4.在执行一次 pause 系统调用时,可能引发几次进程调度。
编程要求
根据相关知识,只修改版本 1.2 内核的 schedule 函数,使得 0 号进程和 1 号进程严格交替输出信息。
单独做没有环境的话:
接着第一关的环境:
打开vscode打开如下文件夹路径:
改成这样