1.2022/4/18 : 解决临界区冲突的几种算法尝试
thread1:Peterson算法的软件实现
thread2:硬件实现,内联汇编使用XCHG指令
在thread1 的基础上实现一个优先级转置问题的复现
实现过程中遇到的问题:
1.pthread库提供的FIFO调度算法不是抢占式的调度(目前可查的资料中都显示FIFO是抢占式的调度,所以未实现出抢占式优先级调度。
2.修改调度算法后必须使用管理员模式运行,否则无法正常运行(在用户模式下不能直接修改调度算法)
运行方式 sudo ./xxx
3.直接运行此代码的话会发现count仍然不等于100000,发生这种现象是因为在虚拟机上运行该程序的时候是多核运行的,并不能模拟单核运行该程序,所以需要在运行时限制程序在某一cpu上运行。
4.然后想要复现优先级转置的问题的话,可以借用sleep让低优先级的进程进入临界区后陷入等待态,然后高优先级进程将运行,之后就卡死了(其实这样的模拟是非常无聊的,因为没有实现抢占式调度,所以就是一个很nt的模拟过程……