课堂练习3.3:进程的调度

news2024/11/18 23:32:08

3-6 课堂练习3.3:进程的调度

在内存中一般存放着数目远大于计算机 CPU 个数的进程,进程调度的作用是选择合适的进程来使用CPU,进程调度器对系统性能有重要影响。本实训分析Linux 0.11的进程调度算法,该操作系统采用了一种时间片与优先级相结合的调度算法,在当前进程的时间片用完后会进行调度,调度时会选择剩余时间片最大的就绪进程。

第1关第一次由时钟中断引发的进程调度

任务描述

本关任务回答问题: 第一次由时钟中断引发进程调度时: 1.当时 bochs 虚拟机输出的 0/1 字符串是什么?(忽略空格) 2.该次中断是第几次时钟中断?当时处于几号进程的上下文? 该进程的剩余时间片是多少? 3.1 号进程当时处于什么状态?1 号进程控制块的 alarm 成员的值是多少?该定时器截止时间到了吗?

相关知识

为了完成本关任务,你需要掌握: 1.如何跟踪到由时钟中断引发的进程调度; 2.如何查看进程的剩余时间片; 3.如何查看 1 号进程的信息; 4.进程控制块中的 alarm 成员的作用是什么?

实验准备

本关卡使用版本 1 内核进行分析,内核文件存放在/data/workspace/myshixun/exp1中,使用 gdb 进行调试。

实验过程及答案

实验过程
ls /data/workspace/myshixun/exp1
cp /data/workspace/myshixun/exp1/1.tgz ~/os

cd os/linux-0.11-lab
tar -zxvf ../1.tgz 1

rm -rf cur
ln -s 1 cur
ls

cd 1/linux
make

cd ../..
./rungdb

另开一个终端

cd os/linux-0.11-lab
./mygdb

答案

第2关前三次进程调度

任务描述

本关任务回答问题:

  • 第一次进程调度时,当前进程是几号进程?内核函数调用栈的栈底函数是什么?其上一层函数是什么?0 号进程处于什么状态?1 号进程处于什么状态?选中了几号进程?

  • 第二次进程调度时,当前进程是几号进程?内核函数调用栈的栈底函数是什么?其上一层函数是什么?0 号进程处于什么状态?1 号进程处于什么状态?选中了几号进程?

  • 第三次进程调度时,当前进程是几号进程?内核函数调用栈的栈底函数是什么?其上一层函数是什么?0 号进程处于什么状态?1 号进程处于什么状态?选中了几号进程?

相关知识

为了完成本关任务,你需要掌握: 1.Linux 0.11 的进程调度算法是怎样的; 2.在执行一次 pause 系统调用时,可能引发几次进程调度; 3.如何查看进程的剩余时间片; 4.如何查看 1 号进程的信息。

环境准备

本关卡使用版本 1 内核进行分析,可以直接使用上一关卡的环境,使用 gdb 进行调试。

实验过程及答案

可以直接使用上一关卡的环境,使用 gdb 进行调试,如果需要配置请按如下操作。

实验过程
ls /data/workspace/myshixun/exp1
cp /data/workspace/myshixun/exp1/1.tgz ~/os

cd os/linux-0.11-lab
tar -zxvf ../1.tgz 1

rm -rf cur
ln -s 1 cur
ls

cd 1/linux
make

cd ../..
./rungdb

另开一个终端

cd os/linux-0.11-lab
./mygdb

答案

3-7 课后作业3.3:进程的调度

在内存中一般存放着数目远大于计算机 CPU 个数的进程,进程调度的作用是选择合适的进程来使用CPU,进程调度器对系统性能有重要影响。本实训分析Linux 0.11的进程调度算法,该操作系统采用了一种时间片与优先级相结合的调度算法,在当前进程的时间片用完后会进行调度,调度时会选择剩余时间片最大的就绪进程。

第1关版本1.2内核的进程调度过程分析

任务描述

在内核版本 1.2(1.2.tgz)运行时,如果忽略掉空格,那么输出的字符序列用正则表达式描述是 010(10100)*,如下图所示:

本关任务回答问题: 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 内核进行分析,版本 1.2 内核相对于版本 1 内核只修改了 schedule 函数,使得 0 号进程和 1 号进程交替执行,修改内容如下: 在1/linux/kernel/sched.c中对以下内容进行修改。

@@ -107,6 +107,14 @@
     int i,next,c;
     struct task_struct ** p;
 
+    if (current == task[0])
+        next = 1;
+    else 
+        next = 0;
+    task[next]->counter = 15;
+    switch_to(next);
+    return;
+
 /* check alarm, wake up any interruptible tasks that have got a signal */
 
     for(p = &LAST_TASK ; p > &FIRST_TASK ; --p)

实验过程及答案

实验过程
ls /data/workspace/myshixun/exp2
cp /data/workspace/myshixun/exp2/1.2.tgz ~/os

cd os/linux-0.11-lab
tar -zxvf ../1.2.tgz 1.2

rm -rf cur
ln -s 1.2 cur
ls

cd 1.2/linux
make

cd ../..
./rungdb

另开一个终端

cd os/linux-0.11-lab
./mygdb

答案

第2关两个进程的严格交替输出

任务描述

本关任务: 只修改版本 1.2 内核的 schedule 函数,使得 0 号进程和 1 号进程严格交替输出信息,如下图所示:

,

相关知识

为了完成本关任务,你需要掌握: 1.Linux 0.11 的进程调度算法是怎样的; 2.如何判断产生进程调度的原因; 3.如果发生由系统调用中的延迟调度产生的进程调度,如何分析具体是由哪个系统调用的执行引发的; 4.在执行一次 pause 系统调用时,可能引发几次进程调度。

实验准备

本关卡使用版本 1.2 内核进行分析,版本 1.2 内核相对于版本 1 内核只修改了 schedule 函数,使得 0 号进程和 1 号进程交替执行,修改内容如下: 在1/linux/kernel/sched.c中对以下内容进行修改。

@@ -107,6 +107,14 @@
     int i,next,c;
     struct task_struct ** p;
 
+    if (current == task[0])
+        next = 1;
+    else 
+        next = 0;
+    task[next]->counter = 15;
+    switch_to(next);
+    return;
+
 /* check alarm, wake up any interruptible tasks that have got a signal */
 
     for(p = &LAST_TASK ; p > &FIRST_TASK ; --p)

实验过程及答案

可以直接使用上一关卡的环境,使用 gdb 进行调试,如果需要配置请按如下操作。

实验过程
ls /data/workspace/myshixun/exp2
cp /data/workspace/myshixun/exp2/1.2.tgz ~/os

cd os/linux-0.11-lab
tar -zxvf ../1.2.tgz 1.2

rm -rf cur
ln -s 1.2 cur
ls

cd 1.2/linux
make

cd ../..
./rungdb

另开一个终端

cd os/linux-0.11-lab
./mygdb

打开桌面上vscode 改为如下所示

3-8 课后作业3.3.2:进程的调度

在内存中一般存放着数目远大于计算机 CPU 个数的进程,进程调度的作用是选择合适的进程来使用CPU,进程调度器对系统性能有重要影响。本实训分析Linux 0.11的进程调度算法,该操作系统采用了一种时间片与优先级相结合的调度算法,在当前进程的时间片用完后会进行调度,调度时会选择剩余时间片最大的就绪进程。

第1关版本 0 内核中的进程调度分析

任务描述

当程序 01.c 运行时(在版本 0 内核中),会在父子两个进程(假设分别为 6 号和 7 号进程)中分别输出字符串01。 请问:从 6 号进程刚创建完 7 号进程开始,在接下来的 9 次进程调度中,每次调度时,6 号和 7 号进程的剩余时间片是多少?选中的新进程是几号?

相关知识

为了完成本关任务,你需要掌握: 1.如何将文件放入 bochs 虚拟机; 2.如何跟踪到一个程序(在版本 0 内核中)的开始运行; 3.如何跟踪到一个进程刚创建完; 4.Linux 0.11 的进程调度算法是怎样的; 5.如何在每次进程调度时自动显示剩余时间片和新进程号。

实验准备

本关卡使用版本 0 内核进行分析,01.c 存放在/data/workspace/myshixun/exp5中。

实验过程及答案

实验过程
ls /data/workspace/myshixun/exp2
cp /data/workspace/myshixun/exp2/1.2.tgz ~/os

cd os/linux-0.11-lab
tar -zxvf ../1.2.tgz 1.2

rm -rf cur
ln -s 1.2 cur
ls

cd 1.2/linux
make

cd ../..
./rungdb

另开一个终端

cd os/linux-0.11-lab
./mygdb

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

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

相关文章

redis主从复制【面试必看】

在分布式系统中,希望使用多个服务器来部署redis,存在以下几种redis的部署方式 主从模式主从哨兵集群模式 主从模式 在若干个redis节点中,有的是主节点,有的是从节点 假设有三个物理服务器(称为是三个节点&#xff…

MongoDB中的$type操作符和limit与skip方法

本文主要介绍MongoDB中的$type操作符和limit与skip方法。 目录 MongoDB的$type操作符MongoDB的limit方法MongoDB的skip方法 MongoDB的$type操作符 MongoDB中的$type操作符用于检查一个字段的类型是否与指定的类型相匹配。它可以用于查询和投影操作。 $type操作符可以与以下数…

2.2 网络多线程(私聊、群发、发送文件、推送新闻、离线留言)

文章目录 一、私聊1.1 分析1.2 客户端1.2.1 MessageClientService 私聊类1.2.2 ClientConnectServerThread 线程类 1.3 服务端1.3.1 ServerConnectClientThread 线程类 1.4功能演示 二、群发消息2.1 分析2.2 客户端2.2.1 MessageClientService类2.2.2 ClientConnectServerThrea…

★102. 二叉树的层序遍历

102. 二叉树的层序遍历 很巧妙的,又学习了一种层次遍历的方法,就是说根据当前的队列的长度去遍历,遍历的当前队列的长度就是该层次的节点个数。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* Tr…

基于JavaWeb+SSM+Vue童装商城小程序系统的设计和实现

基于JavaWebSSMVue童装商城小程序系统的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 Lun文目录 目 录 摘 要 III Abstract 1 1 系统概述 2 1.1 概述 3 1.2课题意义 4 1.3 主要内容 5…

GoldWave注册机 最新中文汉化破解版-安装使用教程

GoldWave是一个功能强大的数字音乐编辑器,是一个集声音编辑、播放、录制和转换的音频工具。它还可以对音频内容进行转换格式等处理。它体积小巧,功能却无比强大,支持许多格式的音频文件,包括WAV、OGG、VOC、 IFF、AIFF、 AIFC、AU…

Temu卖家如何获取流量?Temu新手卖家流量来源哪里?——站斧浏览器

流量对于每个平台来说都是很重要的,那么Temu卖家如何获取流量?流量来源哪里? Temu卖家如何获取流量? 1、优化产品标题和描述:在Temu平台上,买家通常通过搜索关键词来寻找他们感兴趣的产品。因此&#xff…

curl 18 HTTP/2 stream

cd /Users/haijunyan/Desktop/CustomKit/KeepThreadAlive/KeepThreadAlive //Podfile所在文件夹 git config --global https.postBuffer 10485760000 git config --global http.postBuffer 10485760000 pod install https://blog.csdn.net/weixin_41872403/article/details/86…

(七)Python 命令模式

文章目录 1 命令模式简介2 命令模式的特点和目的2.1 命令模式通常使用以下术语:2.1.1 命令模式的UML类图 2.2 命令模式的主要目的如下2.3 命令模式可用于以下各种情景: 3 命令模式python代码示例4 命令模式的优点和缺点4.1 优点4.2 缺点 1 命令模式简介 正如我们在上一章中所看…

【Com通信】Com模块详细介绍

目录 前言 1. Com模块功能介绍 2.关键概念理解 3.功能详细设计 3.1 Introduction 3.2 General Functionality 3.2.1 AUTOSAR COM basis 3.2.2 Signal Values 3.2.3 Endianness Conversion and Sign Extension 3.2.4 Filtering 3.2.5 Signal Gateway 3.3 Normal Ope…

Jenkins入门手册

目录 第一章、Jenkins是什么? 1、Jenkins的由来 1.1 、Jenkins 的目标 第二章、Jenkins安装与配置 2、Jenkins 安装 3、Jenkins 配置 3.1 系统管理 3.1.1 、提示信息 3.1.1.1 、Utf-8 编码 3.1.1.2 、新的版本 3.1.1.3、安全设置 3.1.2、系统设置 3…

Go语言深度优先搜索(DFS)

Go 语言代码段实现了深度优先搜索(DFS)算法,该算法用于遍历图数据结构。以下是代码的主要要点和执行流程的总结: 深度优先搜索函数 (DFS): 接收图的邻接表 (map[int][]int)、访问记录 (map[int]bool) 和当前节点作为参数。将当前…

go sort.Search()

函数 func Search(n int, f func(int) bool) int {} 函数作用 通过二分法查找,找到已经排序好的数组[0,n)中第一个使f为true的索引,如果没有找到返回n 为什么要用二分查找? 因为二分查找相比普通依次遍历而言,速度能有巨幅提升…

延时消息+递归导致重复消费爆炸问题

背景 公司所用消息队列为RoucketMQ,版本为4.x。最近公司有业务需要,将某个处理延迟到第二天的白天再进行。由于4.x版本队列,默认延时时间是按等级来延时的,默认有18个等级,如下图: 默认的延时等级&#xff…

我对迁移学习的一点理解(系列2)

文章目录 我对迁移学习的一点理解 我对迁移学习的一点理解 源域和目标域是相对的概念,指的是在迁移学习任务中涉及到的两个不同的数据集或领域。 源域(Source Domain)通常指的是已经进行过训练和学习的数据集,它被用来提取特征、…

盒马补贴量价-2021KDD

概述: 电商商品定价三个关键问题: 在只有观测数据的时候,怎么构建价格弹性,现在来看这就是一个反事实推断的问题,不仅是如何做的问题,还有如何评估的问题。长周期的规划决策问题怎么建模 & 求解&#…

基于状态机的单片机编程

前言 在设计锂离子电池充电器时,对于以前的根据系统状态进行判断,置标志位的方法,会显得程序臃肿,且架构混乱,变量交错复杂,移植困难。 所以结合实际项目,给出了一种基于状态机的编程方法。 …

线程上下文切换

线程上下文切换 巧妙地利用了时间片轮转的方式, CPU 给每个任务都服务一定的时间,然后把当前任务的状态保存下来,在加载下一任务的状态后,继续服务下一任务,任务的状态保存及再加载, 这段过程就叫做上下文切换。时间片轮转的方式…

对String类的操作 (超细节+演示)

[本节目标] 1.认识String类 2.了解String类的基本用法 3.熟练掌握String类的常见操作 4.认识字符串常量池 5.认识StringBuffer和StringBuilder 1.String类的重要性 在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针&…

差异计算基础知识 - 了解期末业务操作、WIP 和差异

原文地址:Basics of variance calculation-Understanding Period End activities, WIP and Variances | SAP Blogs 大家好, 这是我在成本核算方面的第六份文件,旨在解释期末的差异计算和相关活动。 我将引导您完成期末活动和差异计算。在本文…