我正在尝试用 C 编写操作系统生产者消费者问题。我得到了上面提到的“分段错误”。这里很难解释一切,所以我把代码贴在了github上。看一眼会让你更好地了解我想问的问题。
Github 链接:https ://github.com/Shad0walker/Producer-Consumer.git
我的文件顺序:(
prod_cons_s.c
主文件)
sem.h (includes threads.h)
threads.h (includes q.h)
q.h (includes TCB.h)
这是我面临的确切问题。
当我尝试执行 V 操作并将睡眠进程从 SemQ 带回 RunQ 时,出现此错误。这是生产者消费者的场景。
我有一个带有生产者-> 消费者-> 消费者-> 生产者-> 消费者的 RunQ。
- 第一个生产者生产一个项目。成功
- 消费者消费该物品。成功
- 这个消费者调用
P(&EMPTY)
信号量计数器并将其降低到 -1。从而从 RunQ 中删除此消费者进程并将其添加到 SemQ。上下文与在 RunQ 中运行下一个进程(生产者)的 CPU 交换。成功 - 现在,当下一个生产者运行时,最后它应该调用
V(&EMPTY)
将信号量计数器恢复为 0,并将步骤 3 中的休眠进程带回 RunQ。ERROR
这是我收到此错误的地方。任何帮助将不胜感激!