Pintos Project1:Thread 实验报告

本文是关于Pintos Project1的实验报告,详细介绍了在Ubuntu环境下安装Pintos的步骤,包括Bochs的安装、环境变量配置等。实验主要涉及三个任务:重新实现timer_sleep()函数以避免忙等待,实现优先级调度以按优先级执行线程,以及实现多级反馈调度。在实现多级反馈调度中,讨论了计算线程优先级的公式和关键函数。
摘要由CSDN通过智能技术生成

Pintos Project1:Thread 实验报告

github地址:https://github.com/RebekahYuuu/OS_Experiments_Pintos_01

一、Pintos简介

Pintos是80x86架构的简单操作系统框架。它支持内核线程,加载和运行用户程序以及文件系统,但它以非常简单的方式实现所有这些。
实验环境为:Ubuntu 16.04 bochs-2.6.6

二、Ubuntu下安装Pintos

1、安装bochs

  • sudo su获取root用户权限
  • 解压bochs压缩包
    进入你的bochs压缩包所在的目录输入命令:tar zxvf bochs-2.6.6.tar.gz
  • 安装一些必要的软件包
    进入解压后的bochs文件夹
    sudo apt-get install aptitude
    sudo aptitude install build-essential
    sudo apt-get install libx11-dev
    sudo apt-get install xserver-xorg-dev
    sudo apt-get install xorg-dev
  • 配置bochs
    ./configure - - enable-gdb-stub
  • 编译bochs 命令:make
  • 安装 命令:sudo make install

2、安装Pintos

  1. 进入pintos压缩包所在目录
  2. 解压pintos 命令:tar zxvf pintos.tar.gz
  3. 进入解压后的pintos文件夹下的pintos/src/threads目录
  4. 编译 命令:make

3、配置环境变量

  1. 进入home目录,打开文本编辑器软件 命令:gedit
  2. 点选编辑器上的”open”,然后到/home/…(你的用户名)目录下找到文件”.bashrc”,默认情况你是看不到的,要右键你的用户名文件夹,勾选上“显示隐藏文件”才能看到
  3. 在“.bashrc”文件的最后新增一行,输入以下内容并保存:
    export PATH=”$PATH:/home/用户名/pintos/src/utils”
  4. 在该目录下输入以下命令:bash
  5. 进入root目录,修改root下的.bashrc文件,操作和修改/home/用户名下的.bashrc文件是一样的,新添的内容也是完全一样的
  6. 在root目录下输入以下命令:bash

4、修改调试器文件

  1. 进入pintos/src/utils目录,打开文本编辑器 命令:gedit
  2. 找到并打开pintos-gdb文件,在第4行修改如下并保存:
    GDBMACROS=/home/用户名/pintos/src/misc/gdb-macros
  3. 再进入pintos下的/threads目录编译 命令:cd …/threads,回车后再输入:make

5、测试

在这里插入图片描述

三、实验步骤

Mission1.重新实现timer_sleep()函数

1、分析

(1). timer_sleep()函数

暂停执行调用线程,直到时间提前至少x个计时器滴答。除非系统处于空闲状态,否则线程不需要在x个刻度之后唤醒。在等待适当的时间后,将它放在就绪队列中。
timer_sleep() 对于实时操作的线程非常有用,例如每秒闪烁一次光标。
参数to timer_sleep()以计时器刻度表示,而不是以毫秒或任何其他单位表示。TIMER_FREQ每秒有计时器滴答,其中TIMER_FREQ是定义的宏 devices/timer.h。

(2). 目标

timer_sleep函数使用忙等的方法,用一个while循环不断向cpu发出请求,判断是否过了足够时间长度,有忙等成分。通过修改pintos的线程休眠函数来保证pintos不会在一个线程休眠时忙等待。

(3). 分析过程

查看源码可知,intr_get_level()函数可以返回当前中断处于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值