生产者消费者:程序接收信号SIGSEGV,Segmentation Fault

时间:2013-11-02 08:32:23

标签: c semaphore producer-consumer

我正在尝试用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. 第一个制作人制作一个项目。 SUCCESS
  2. 消费者使用该项目。 SUCCESS
  3. 此消费者调用P(&EMPTY)并将信号量计数器打到-1。从而从RunQ中删除此消费者进程并将其添加到SemQ。上下文与运行RunQ中的下一个进程(Producer)的CPU交换。 SUCCESS
  4. 现在,当下一个生产者运行时,它应该调用V(&EMPTY)将信号量计数器恢复为0并将STEP 3中的休眠进程恢复为RunQ。ERROR
  5. 这是我收到此错误的地方。 任何帮助将非常感谢!!!

0 个答案:

没有答案