西电计算机操作系统课程设计pintos-pro1.docx
- 快到碗里来个人认证 |
- 2021-10-20 发布|
- 1.42 MB|
- 6页
精品文档
精品文档
PAGE / NUMPAGES
精品文档
西安电子科技大学
操作系统课程设计
(2016年度)
实
验
报
告
实验名称: Alarm-Clock
班 级:
姓 名:
学 号:一、实验内容
重新实现timer_sleep()函数,避免“忙等待”的发生
二、分析及设计
Timer_sleep 函数原型:
Void timer_sleep (int64_t ticks) { //ticks为等待的时间长度
int64_t start = timer_ticks (); //记录开始时的系统时间
ASSERT (intr_get_level () == INTR_ON);
while(timer_elapsed(start) <ticks) //如果 elapse(流逝)的时间>=ticks时就返回。
thread_yield (); //否则将持续占用 cpu。
}
Timer_sleep函数使用忙等待的方法,用一个while循环不断地请求CPU来判断是否经过了足够的时间长度。如果elapse足够的时间长度后则返回。
timer_interrupt 函数原型
static void
timer_interrupt (struct intr_frame *args UNUSED){//UNUSED是一个宏,表示参数没用
enum intr_level old_level; //和先前一样,记录原来的中断状态
old_level=intr_disable(); //forreach函数要求关中断。
ticks++;
thread_foreach (block_check, 0);
intr_set_level (old_level); //恢复中断
thread_tick (); //交给操作系统出发中断并且调度新的线程进驻 cpu。
}
pint