0

我正在尝试用 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。

  1. 第一个生产者生产一个项目。成功
  2. 消费者消费该物品。成功
  3. 这个消费者调用P(&EMPTY)信号量计数器并将其降低到 -1。从而从 RunQ 中删除此消费者进程并将其添加到 SemQ。上下文与在 RunQ 中运行下一个进程(生产者)的 CPU 交换。成功
  4. 现在,当下一个生产者运行时,最后它应该调用V(&EMPTY)将信号量计数器恢复为 0,并将步骤 3 中的休眠进程带回 RunQ。ERROR

这是我收到此错误的地方。任何帮助将不胜感激!

4

0 回答 0