オペレーティング システムのプロデューサー コンシューマーの問題を 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 があります。
- 最初の生産者がアイテムを生産します。成功
- 消費者はそのアイテムを消費します。成功
- このコンシューマーが呼び出し
P(&EMPTY)
て、セマフォ カウンターを -1 に下げます。これにより、このコンシューマ プロセスが RunQ から削除され、SemQ に追加されます。コンテキストは、RunQ で次のプロセス (プロデューサー) を実行している CPU と交換されます。成功 - 次のプロデューサが実行されると、最終的に
V(&EMPTY)
セマフォ カウンタを 0 に戻し、STEP 3 のスリープ プロセスを RunQ に戻すように呼び出します。ERROR
ここで、このエラーが発生しています。どんな助けでも大歓迎です!!!