Skip to content

Commit

Permalink
feat(lab/5): expected queue behavior
Browse files Browse the repository at this point in the history
  • Loading branch information
GZTimeWalker committed May 22, 2024
1 parent 5bf2d3e commit 9e9f2bb
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions docs/labs/0x05/tasks.md
Original file line number Diff line number Diff line change
Expand Up @@ -688,6 +688,8 @@ pub fn sys_sem(args: &SyscallArgs, context: &mut ProcessContext) {

- 在每个线程生产或消费的时候,输出相关的信息。

你可能需要使用信号量或自选锁来实现一个互斥锁,保证操作和信息输出之间不会被打断。

- 在生产者和消费者完成上述操作后,使用 `sys_exit(0)` 直接退出。

- 最终使用父进程等待全部的子进程退出后,输出消息队列的消息数量。
Expand All @@ -701,6 +703,12 @@ pub fn sys_sem(args: &SyscallArgs, context: &mut ProcessContext) {
- 在队列为空时,消费者是否被阻塞?
- 在队列满时,生产者是否被阻塞?

!!! question "分别设置队列容量为 `1, 4, 8, 16`,记录观察生产者和消费者的行为:"

1. 队列的元素计数是否没有超过容量?
2. 生产者和消费者是否能够交替工作?
3. 尝试观察到多个生产者或消费者同时进行同种操作的情况。

#### 哲学家的晚饭

假设有 5 个哲学家,他们的生活只是思考和吃饭。这些哲学家共用一个圆桌,每位都有一把椅子。在桌子中央有一碗米饭,在桌子上放着 5 根筷子。
Expand Down

0 comments on commit 9e9f2bb

Please sign in to comment.