西安电科大张帅豪:优化OS31:优先级调度与捐赠机制研究
需积分: 0 137 浏览量
更新于2024-08-04
收藏 1.12MB DOCX 举报
本次报告是西安电子科技大学操作系统课程设计的一部分,由学生张帅豪(学号18030100101)在2020年度完成。实验主题为"Priority-schedulingTask2",主要目标是解决由锁(lock)引起的优先级反转问题,并在此基础上引入优先级捐赠机制来预防这一问题。
实验的核心内容包括以下几个部分:
1. 优先级结构设计:设计了一个包含原优先级和被捐赠所需的锁信息的结构体pri_stack,采用栈结构来处理可能的多重捐赠。这涉及到thread结构体的扩展,新增了block_sema(用于记录被信号量阻塞)和block_lock(用于记录等待的锁)两个成员。
2. 初始化和优先级管理:在init_thread()函数中,除了常规初始化外,还需要初始化新添加的优先级结构。在thread_set_priority()函数中,增加了对线程是否被捐赠的判断,确保捐赠后的优先级更新正确。
3. PV操作与锁操作:在P操作中,若信号量为0,线程会被阻塞并记录阻塞信号量;V操作时,解锁后清空阻塞信息。在acquire锁操作中,检查信号量状态并执行优先级捐赠,而在release锁时根据捐赠状态进行不同处理,如优先级还原、移除记录等。
4. 优先级捐赠函数实现:这个函数涉及复杂逻辑,首先检查被捐赠者是否在ready_list或block_list中。如果是ready_list中的线程,需要调整其位置。如果被捐赠者还在信号量等待队列中且被锁阻塞,需要相应地调整其位置并触发递归捐赠过程。
通过这个实验,学生不仅熟悉了优先级捐赠算法,还锻炼了修改内核代码的能力,深入理解了操作系统中线程调度和资源管理的关键环节。在解决优先级反转问题的同时,也展示了对操作系统内核设计和并发控制原理的深刻理解和实践应用。
2022-08-08 上传
2022-08-03 上传
2022-08-03 上传
2022-08-03 上传
2022-08-08 上传
2022-08-08 上传
2022-08-08 上传
2022-08-08 上传
2022-08-08 上传
普通网友
- 粉丝: 23
- 资源: 319
最新资源
- StarModAPI: StarMade 模组开发的Java API工具包
- PHP疫情上报管理系统开发与数据库实现详解
- 中秋节特献:明月祝福Flash动画素材
- Java GUI界面RPi-kee_Pilot:RPi-kee专用控制工具
- 电脑端APK信息提取工具APK Messenger功能介绍
- 探索矩阵连乘算法在C++中的应用
- Airflow教程:入门到工作流程创建
- MIP在Matlab中实现黑白图像处理的开源解决方案
- 图像切割感知分组框架:Matlab中的PG-framework实现
- 计算机科学中的经典算法与应用场景解析
- MiniZinc 编译器:高效解决离散优化问题
- MATLAB工具用于测量静态接触角的开源代码解析
- Python网络服务器项目合作指南
- 使用Matlab实现基础水族馆鱼类跟踪的代码解析
- vagga:基于Rust的用户空间容器化开发工具
- PPAP: 多语言支持的PHP邮政地址解析器项目