0

Is it possible for a parent process to start and stop a child (forked) process in Unix?

I want to implement a task scheduler (see here) which is able to run multiple processes at the same time which I believe requires either separate processes or threads.

How can I stop the execution of a child process and resume it after a given amount of time?

(If this is only possible with threads, how are threads implemented?)

4

3 に答える 3

2

シグナルを使用して、単純なスケジューラーの模倣を作成できます。権限がある場合は、停止信号(SIGSTOP)がプロセスの実行を停止し、続行信号(SIGCONT)がプロセスの実行を続行します。

シグナルを使用すると、「スケジューリング」をきめ細かく制御することはできませんが、OSグレードのスケジューラーはこの実行の目的ではないと思います。

kill(2)およびsignal(7)のマニュアルページを確認してください。WebでUnixシグナルを使用するためのガイドもたくさんあります。

于 2008-12-23T02:22:50.483 に答える
1

シグナルを使用することもできますが、通常のUNIXの世界では、おそらくセマフォを使用する方が簡単です。他のプロセスを進行させないようにセマフォを設定すると、スケジューラーは通常の過程でセマフォを交換します。セマフォをクリアすると、再び実行できるようになります。

もちろん、スレッドでもまったく同じことができます。唯一の劇的な違いは、重量級のコンテキストスイッチを節約できることです。

于 2008-12-23T02:33:07.187 に答える
0

補足:signal()を使用している場合、UNIXによって動作が異なる場合があります。Linuxを使用している場合は、シグナルマンページの「Portability」セクションと、推奨されるsigactionマンページを確認してください。

于 2008-12-23T02:41:21.290 に答える