文本描述
操作系统课程设计
实验名称:Priority-scheduling Task2
一、实验内容
1.解决由lock造成的优先级反转问題;
in synch.k slmct loci {
struct thread *holdct,Thread holding knk (for debugging) *■
semaphore semaphore. /* Binary scm^horc conuolling access
J,__________________________| :
2.在实验二的基础上,加入优先级捐赠机制,防止系统在高优先级线程所 需资源被低优先级线程占有时出现优先级反转问題;
3.通过本实验的完成,熟悉优先级捐赠算法,锻炼自己修改内核代码的能 力。
二、分析及设计
1.实现优先级捐赠问題,首先需要考虑保存原优先级的问題:因此需
要定义一个包含原先优先级和被捐贈时捐赠者需要什么锁两个成员的结 构体pri_stack,并在thread结构体中加入类型为struct pri_stack的
成员;考虑到多重捐贈的情况,该成员是栈结构;
2.在thread 结构体中加入block_sema、block_lock两个成员,分别 记录被哪个信号董阻塞、在等待哪个lock;
3. 修改init_thread〇函数,使其在初始化时同时初始化这些新加入 的成员;
4. 在调用thread_set_priority()时,为了保证线程在捐赠完毕时其