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 に戻そうとすると、このエラーが発生します。これは、生産者と消費者のシナリオです。

Producer -> Consumer -> Consumer -> Producer -> Consumer の RunQ があります。

  1. 最初の生産者がアイテムを生産します。成功
  2. 消費者はそのアイテムを消費します。成功
  3. このコンシューマーが呼び出しP(&EMPTY)て、セマフォ カウンターを -1 に下げます。これにより、このコンシューマ プロセスが RunQ から削除され、SemQ に追加されます。コンテキストは、RunQ で次のプロセス (プロデューサー) を実行している CPU と交換されます。成功
  4. 次のプロデューサが実行されると、最終的にV(&EMPTY)セマフォ カウンタを 0 に戻し、STEP 3 のスリープ プロセスを RunQ に戻すように呼び出します。ERROR

ここで、このエラーが発生しています。どんな助けでも大歓迎です!!!

4

0 に答える 0