首页 > 其他分享 >09_实验八_拓展实验三

09_实验八_拓展实验三

时间:2023-12-07 23:33:20浏览次数:50  
标签:优先级 09 拓展 键盘 命令 线程 实验 控制台

拓展实验三:线程调度算法改进

实验目的

实现多级反馈队列调度算法

实验步骤

  1. 实现时间片轮转调度算法。

  2. 修改时间片的大小 TICKS_OF_TIME_SLICE 为 100,方便观察执行后的效果。

  3. 在控制台命令“rr”的处理函数中,将 Sleep 时间更改为 200*1000,这样可以有充足的时间查看优先级降低后的效果。

  4. 修改线程控制块(TCB)结构体,在其中新增两个成员,一个是线程整个生命周期中合计使用的时间片数量,另一个是线程的初始时间片数量。

  5. 修改“rr”命令在控制台输出的内容和格式,不再显示线程计数,而是显示线程初始化时间片的大小,已使用时间片的合计数量,剩余时间片的数量。注意,在调用fprintf 函数格式化字符时,需要在字符串的末尾增加一个空格,否则会导致输出异常。

  6. 在实现多级反馈队列调度算法后(注意:数字越大,优先级越高,反之,数字越小,优先级越低),使用实验 6 中提供的“rr”命令,查看各个线程的优先级逐步降低的过程。

  7. 由于 EOS 没有提供鼠标,可以使用键盘事件或者控制台命令使线程优先级提升。由于键盘事件与线程之间没有建立一个明确的会话关系,所以还需要解决使用键盘事件提升哪个线程优先级的问题。一个简单的方式是,在键盘的中断处理程序中(在io/driver/keyboard.c 文件的 396 行的 KbdIsr 函数),如果当前线程(注意不能是 2 号线程)处于运行状态并且优先级大于 0 小于 8 的话(由于空闲线程的优先级为 0,不能更改该线程的优先级,如果当前线程的优先级为 8,没有必要再做提升线程优先级的操作),按下空格键,响应键盘事件后,就将其优先级提升为默认的优先

  8. 级即可。关于键盘中断相关的内容可以参考实验 12。

  9. 使用控制台命令提升线程优先级,在 EOS 操作系统中实现一个“up ThreadID”命令,通过输入的线程 ID 来提升对应线程的优先级。在实现命令的过程中需要做如下判断:需要提升线程的优先级应该大于 0 并且小于 8,如果是处于就绪状态的线程,需要先将该线程移出队列,然后设置该线程的优先级为默认值 8,并设置线程的初始时间片大小和剩余时间片大小,如果是处于运行状态或阻塞状态的线程,直接设置线程的优先级即可。测试提升线程优先级命令的方法:在控制台窗口 1 执行 rr时,可以按 Ctrl + F2 切换到控制台窗口 2,然后输入“up 24”命令,按回车执行该命令,按 Ctrl + F1 切换到控制台窗口 1,可以查看 ID 为 24 的线程优先级已

实验过程

实现时间片轮转调度算法

标签:优先级,09,拓展,键盘,命令,线程,实验,控制台
From: https://www.cnblogs.com/binbinzhidao/p/17884257.html

相关文章

  • 实验四 Web服务器2
    实验四Web服务器2基于华为鲲鹏云服务器CentOS中(或Ubuntu),使用LinuxSocket实现:1.Web服务器的客户端服务器,提交程序运行截图2.实现GET即可,请求,响应要符合HTTP协议规范3.服务器部署到华为云服务器,浏览器用本机的4.把服务器部署到试验箱。(加分项)web_server.c1#include......
  • 实验四 Web服务器2
    server.c#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#definePORT8080#defineBUFFER_SIZE1024intmain(){   int......
  • 实验四 Web服务器1
    Web服务器1-socket编程实验内容基于华为鲲鹏云服务器CentOS中(或Ubuntu),使用LinuxSocket实现:time服务器的客户端服务器,提交程序运行截图echo服务器的客户端服务器,提交程序运行截图,服务器把客户端传进来的内容加入“服务器进程pid你的学号姓名echo:”返回给客户端服务器......
  • Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) MySql字符集及校对规则不
    查询时报错--用于解决报错>1267-Illegalmixofcollations(utf8mb4_0900_ai_ci,IMPLICIT)and(utf8mb4_general_ci,IMPLICIT)foroperation'='这个错误是由于在进行比较操作时涉及到不同的字符集和校对规则(collations)。涉及到了utf8mb4_0900_ai_ci和utf8mb4_general......
  • 实验四 Web服务器1-socket编程
    实验四Web服务器1-socket编程基于华为鲲鹏云服务器CentOS中(或Ubuntu),使用LinuxSocket实现:1.time服务器的客户端服务器,提交程序运行截图2.echo服务器的客户端服务器,提交程序运行截图,服务器把客户端传进来的内容加入“服务器进程pid你的学号姓名echo:”返回给客户端3.......
  • 实验四 Web服务器1-socket编程
    time服务器time客户端echo服务器echo客户端......
  • 实验四 Web服务器2
    基于华为鲲鹏云服务器CentOS中(或Ubuntu),使用LinuxSocket实现:1.Web服务器的客户端服务器,提交程序运行截图2.实现GET即可,请求,响应要符合HTTP协议规范3.服务器部署到华为云服务器,浏览器用本机的4.把服务器部署到试验箱。(加分项)Web服务器代码(wbs.c)#include<stdio.h>#incl......
  • 实验四 Web服务器1-socket编程
    基于华为鲲鹏云服务器CentOS中(或Ubuntu),使用LinuxSocket实现:1.time服务器的客户端服务器,提交程序运行截图3.服务器部署到华为云服务器,客户端用Ubuntu虚拟机。time服务器代码(tms.c)#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include......
  • 实验四 Web服务器2
    基于华为鲲鹏云服务器CentOS中(或Ubuntu),使用LinuxSocket实现:Web服务器的客户端服务器,提交程序运行截图实现GET即可,请求,响应要符合HTTP协议规范服务器部署到华为云服务器,浏览器用本机的把服务器部署到试验箱。(加分项)web服务器与客户端web_server.c#include<stdio.h>#inc......
  • 实验四 Web服务器1-socket编程
    基于华为鲲鹏云服务器CentOS中(或Ubuntu),使用LinuxSocket实现:1.time服务器的客户端服务器,提交程序运行截图2.echo服务器的客户端服务器,提交程序运行截图,服务器把客户端传进来的内容加入“服务器进程pid你的学号姓名echo:”返回给客户端3.服务器部署到华为云服务器,客户端......