2013-12-18 30 views
0

我可以用一个例子更好地解释这个问题,所以我正在使用它?线程是否在用户进程中获得自己的时间片?

假设我们的系统是循环调度系统,每个时间间隔执行10ms。如果我们在程序中创建了两个线程,每个线程都会执行10ms,或者两个线程都执行10ms?

如果他们组合了10ms,那么谁管理线程之间的上下文切换?

注:我不是在说这里的内核线程。

+0

我想,既然每个线程视为一个任务,所以每个线程将获得它自己的时间片即10毫秒的时间间隔。切换基于时间片进行。 –

回答

0

在Linux中,线程与系统中的每个其他线程竞争CPU。在POSIX术语中,线程具有系统争用范围。

因此,对于您的示例,每个线程将获得10ms。

您可以通过检查:

  1. 试图设置(通过pthread_attr_setscope)的争用范围属性PTHREAD_SCOPE_PROCESS - 应该导致错误。
  2. 通过pthread_getattr_np获得一个线程attrbutes并通过pthread_attr_getscope是 争范围检查是PTHREAD_SCOPE_SYSTEM
0

是他们也确实有一个时间片。

在linux中,线程vye用于内存,CPU等资源或正在等待发生某些I/O事件。这些线程根据资源的可用性经历各种状态,如空闲,活动,准备就绪。这一切工作都由“流程管理子系统”来完成,流程管理子系统由流程调度器组成,并管理流程执行及其状态。 也可以操作进程可以保存像CPU这样的资源的时间段。 或者进程的优先级可以改变(例如“nice”)。

-Sumeet

相关问题