diff --git a/README.md b/README.md index 6d8df84..4d93af0 100644 --- a/README.md +++ b/README.md @@ -20,4 +20,26 @@ ### 效果 ![](assets/实验三演示.gif) ### 原理 -在swap_fifo.c文件中,修改_fifo_swap_out_victim(或者新建一个函数)。当需要换出页面时,从链表尾部取出一个页面,如果这个页面的访问位是1,那么将其访问位改为0,并放到链表头部。接着再从链表尾部检测下一个页面,直到找到一个访问位为0页面的作为换出的页面。(测试函数_fifo_check_swap也需要略微更改) \ No newline at end of file +在swap_fifo.c文件中,修改_fifo_swap_out_victim(或者新建一个函数)。当需要换出页面时,从链表尾部取出一个页面,如果这个页面的访问位是1,那么将其访问位改为0,并放到链表头部。接着再从链表尾部检测下一个页面,直到找到一个访问位为0页面的作为换出的页面。(测试函数_fifo_check_swap也需要略微更改) + +## 实验四 +无编程作业。 + +## 实验五 +无编程作业。 + +## 实验六 +### 题目 +编程实现理论课中的彩票进程调度算法。(算法的描述以及实现思路可以参考理论课教材和课程PPT) +### 效果 +![](assets/实验六演示.gif) +### 原理 +在default_sched.c文件中,新建彩票进程调度的几个函数。将进程的优先级作为彩票数量,在入队和出队时维护运行队列中的优先级总和,当需要选择下一个调度的进程时,从0到优先级总和的范围中选取一个随机数,之后把运行队列中进程优先级逐个相加,直到大于此随机数,这说明此随机数在这个进程拥有的彩票范围内。 + +## 实验七 +### 题目 +利用信号量机制实现读者写者问题的同步关系。(算法的描述以及实现思路可以参考理论课教材和课程PPT) +### 效果 +![](assets/实验七演示.gif) +### 原理 +读者和读者不需要互斥,读者和写者需要互斥,写者和写者需要互斥。维护当前读者数量的变量,当大于0时写者需要等待,当有写者在写时其他进程需要等待。在主进程中随机创建读者进程和写者进程,并随机延迟,这样就能体现出读者和写者在不同情况下的互斥与同步是否正确。 diff --git a/assets/实验七演示.gif b/assets/实验七演示.gif new file mode 100644 index 0000000..424f4f9 Binary files /dev/null and b/assets/实验七演示.gif differ diff --git a/assets/实验六演示.gif b/assets/实验六演示.gif new file mode 100644 index 0000000..64e9833 Binary files /dev/null and b/assets/实验六演示.gif differ