2012-10-25 65 views
1

我在用sched.h进行Linux调度并碰到一些问题。Linux进程和线程调度

据我所知,Linux调度程序在调度时不会以不同的方式处理线程和进程。线程就像共享公共资源的进程一样。好吧,假设我有Process-A,它被设置为CPU核心0并设置了SCHED_FIFO属性;这将运行,直到另一个更高优先级的任务开始。如果Process-A创建一个新线程,线程是否会继承相同的属性? (即用SCHED_FIFO属性绑定到CPU 0,还是默认?)

谢谢!

回答

4

可实际上一个简单的程序测试,但是从各种手册页:

sched_setaffinity

通过fork创建子(2)继承了其父的CPU关联掩码。 亲和力掩码跨execve(2)保存。

pthread_create

新的线程继承调用线程的能力的副本设置 (见 能力(7))和CPU关系掩码(见了sched_setaffinity(2))。

sched_setscheduler

子进程继承跨越 叉(2)调度策略和参数。 跨execve(2)保留调度策略和参数。