操作系统小组实验

这篇博客详细介绍了操作系统小组实验的内容,包括环境配置、任务要求和函数实现。实验中,小组成员需要实现多级反馈调度和timer_sleep函数,通过在Pintos操作系统中进行配置、编译、调试。timer_sleep函数的实现涉及线程阻塞、时间计数以及在时钟中断中检测和唤醒线程。多级反馈调度则要求动态调整线程优先级,通过浮点运算计算线程优先级,并在timer_interrupt中更新。实验结果显示所有测试用例均通过。
摘要由CSDN通过智能技术生成

操作系统小组实验

组长 杨晓军 16281272

组员 巫 勐 16281271
王昊飞 16281269
张天悦 16281153
孙睿 16281079

mission1

一、环境配置

1.安装bochs
指令:
Install bochs
$ tar zxvf bochs-2.4.5.tar.gz
$ cd bochs-2.4.5
$./configure --enable-gdb-stub • $ make
$ sudo make install
详解:
Bochs和pintos下载到ubuntu系统下的home/qing(变成你的用户名)

打开终端(应用程序—附件—终端),输入命令:sudo passwd root,系统提示你输入root用户的新密码,输入两次后成功激活root用户,以后你就可以用root用户登陆了。
通过终端进入bochs所在的位置:cd /home/qing(最前面加/,表示绝对路径)

解压bochs:tar zxvf bochs-2.4.5.tar.gz

解压后,从位置–计算机----file system—home----qing,可以看到文件已经被解压成为文件夹
2.下面安装和运行pintos
指令
Install and run Pintos
$ tar zxvf pintos2011.tar.gz
$ cd pintos/src/threads
•$ make
•$cd build
$ …/…/utils/pintos – run alarm-multiple
详解:
首先和bochs一样,进入所在的位置,解压

解压后进入pintos/src/threads,编译

编译后,进入build目录,运行测试用例alarm-multiple

3.用gdb来调试pintos

指令
$ cd /pintos/src/threads/build
$ …/…/utils/pintos --gdb -s – run alarm-multiple
详解:

输入如下命令:…/…/utils/pintos --gdb -s – run alarm-multiple(注意run和前面的横杠之间有空格)(配置好环境变量后可直接用pintos命令)
终端中显示等待连接。
这时候,我们打开另一个终端,进入pintos的build目录,输入命令:gdb kernel.o(注意是英文字母o,不是数字0)
这样我们就进入了gdb
输入命令:targetremote localhost:1234,连接刚刚开启的程序(注意冒号后有空格)
然后输入:continue

4.安装完成
在这里插入图片描述

二、任务要求

重新实现timer_sleep函数
最后目标就是在threads/中跑make check的时候, 27个test全pass。

三、函数实现

实现思路:
调用timer_sleep的时候直接把线程阻塞掉,然后给线程结构体加一个成员ticks_blocked来记录这个线程被sleep了多少时间, 然后利用操作系统自身的时钟中断(每个tick会执行一次)加入对线程状态的检测, 每次检测将ticks_blocked减1, 如果减到0就唤醒这个线程。

具体代码

/* Sleeps for approximately TICKS timer ticks. Interrupts must
be turned on. */
void
timer_sleep (int64_t ticks)
{
if (ticks <= 0)
{
return;
}
ASSERT (intr_get_level () == INTR_ON);
enum intr_level old_level = intr_disable ();
s

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值