LinuxマシンでCプログラムで定期的に指定する特定のCPUでプロセスを実行しようとしています。プログラム内でプロセスを実行する必要のある特定のCPUを指定する方法がわかりません。
コマンドラインでこれを行う方法について読んでいますが、C自体のプログラム内でこれを行う方法についてはあまりわかりません。
私task_struct
はディレクトリにあることを知っていinclude/linux/sched.h
ます。構造体を調べると、CPUに関する複数のフィールドが表示されます。しかし、私は(CのプロセスのPCBにアクセスするために)タスク/プロセス情報にアクセスすることはアドバイスされていないか、まったく簡単ではないことを読んでいます。
「現在の」マクロについても読んでいますが、これが私の問題に関連しているかどうかはわかりません。
私のプログラムは本当にシンプルで、基本的には特定のCPUで定期的にタスクを実行する方法を示すテストです。
この単純な仕様を実現する方法を知っている人はいますか?
あなたがやろうとしているこのことは、スレッドのピン留めと呼ばれます。
sched_setaffinityが必要なようです。getpid()
システムコールを使用して、アプリケーション内から呼び出すことができます。
#include <sched.h>
int sched_setaffinity(pid_t pid, size_t cpusetsize,
const cpu_set_t *mask);
int sched_getaffinity(pid_t pid, size_t cpusetsize,
cpu_set_t *mask);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加