
200
|
第六章
然而,有時,用戶或應用程式會想要把行程與處理器結合在一起。這是因為行程具有強
烈的快取區敏感性,而且想要停留在相同的處理器上。結合一個行程與一個特定的處理
器,讓核心按照此關係行事,稱為設定一個
硬傾向
(
hard affinity
)。
sched_getaffinity() 與 sched_setaffinity()
行程會繼承其父行程的 CPU 傾向,預定狀況下,行程可以運行在任何 CPU 之上。Linux
提供了兩個系統呼叫,可用於取得和設定一個行程的「硬傾向」:
#define _GNU_SOURCE
#include <sched.h>
typedef struct cpu_set_t;
size_t CPU_SETSIZE;
void CPU_SET (unsigned long cpu, cpu_set_t *set);
void CPU_CLR (unsigned long cpu, cpu_set_t *set);
int CPU_ISSET (unsigned long cpu, cpu_set_t *set);
void CPU_ZERO (cpu_set_t *set);
int sched_setaffinity (pid_t pid, size_t setsize,
const cpu_set_t *set);
int sched_getaffinity (pid_t pid, size_t setsize,
cpu_set_t *set);
sched_getaffinity() ...