Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 过程及;线程调度开销_Linux_Windows_Multithreading - Fatal编程技术网

Linux 过程及;线程调度开销

Linux 过程及;线程调度开销,linux,windows,multithreading,Linux,Windows,Multithreading,说到日程安排,有几件事我不太明白: 我假设每个进程/线程都有一个时间窗口,只要它是CPU限制的。一旦窗口结束,它将被调出并运行另一个进程/线程。这个假设正确吗?有没有棒球场号码,现代个人电脑的窗口有多长?我假设大约100毫秒?换出去的开销是多少?几毫秒左右 操作系统是按进程调度还是按单个内核线程调度?安排每个进程并在该时间窗口内运行该进程可用的任何线程将更有意义。这样可以最小化进程上下文切换。我的理解正确吗 每个线程运行的时间与其他系统时间(如RAM访问、网络访问、HD I/O等)相比如何 如果

说到日程安排,有几件事我不太明白:

  • 我假设每个进程/线程都有一个时间窗口,只要它是CPU限制的。一旦窗口结束,它将被调出并运行另一个进程/线程。这个假设正确吗?有没有棒球场号码,现代个人电脑的窗口有多长?我假设大约100毫秒?换出去的开销是多少?几毫秒左右
  • 操作系统是按进程调度还是按单个内核线程调度?安排每个进程并在该时间窗口内运行该进程可用的任何线程将更有意义。这样可以最小化进程上下文切换。我的理解正确吗
  • 每个线程运行的时间与其他系统时间(如RAM访问、网络访问、HD I/O等)相比如何
  • 如果我正在读取一个套接字(阻塞),我的线程将被交换,直到数据可用,然后会触发一个硬件中断,数据将被移动到RAM(由CPU或NIC(如果它支持DMA))中。假设线程在处理传入数据时不一定会被交换回来,对吗
  • 我问的主要是Linux,但我想这些信息也适用于Windows

    我意识到这是一堆不同的问题,我试图澄清我对这个话题的理解

    我假设每个进程/线程都有一个时间窗口,只要它是CPU限制的。一旦窗口结束,它将被调出并运行另一个进程/线程。这个假设正确吗?有没有棒球场号码,现代个人电脑的窗口有多长?我假设大约100毫秒?换出去的开销是多少?几毫秒左右

    不会。几乎所有现代操作系统都使用抢占,允许突然需要工作的交互进程(因为用户按了键,从磁盘读取了数据,或者接收到了网络数据包)中断CPU限制的任务

    操作系统是按进程调度还是按单个内核线程调度?安排每个进程并在该时间窗口内运行该进程可用的任何线程将更有意义。这样可以最小化进程上下文切换。我的理解正确吗

    这是一个复杂的优化决策。与更改地址空间的成本相比,清除指令和数据缓存的成本通常很大,因此这并不像您想象的那么重要。通常,在所有准备运行的线程中,首先选择要调度的线程,并且进程粘性可能是一种优化,影响调度在哪个内核上

    每个线程运行的时间与其他系统时间(如RAM访问、网络访问、HD I/O等)相比如何

    显然,线程必须运行大量的RAM访问,因为切换线程需要大量这样的访问。硬盘驱动器和网络I/O的速度通常足够慢,以至于等待这类事情的线程会被重新调度

    快速SSD会改变一些事情。我最近看到的一件事是,长期以来备受珍视的优化,即使用大量CPU来避免磁盘访问,这可能比在某些现代机器上进行磁盘访问更糟糕

    我假设每个进程/线程都有一个时间窗口,只要它是CPU限制的。一旦窗口结束,它将被调出并运行另一个进程/线程。这个假设正确吗?有没有棒球场号码,现代个人电脑的窗口有多长?我假设大约100毫秒?换出去的开销是多少?几毫秒左右

    不会。几乎所有现代操作系统都使用抢占,允许突然需要工作的交互进程(因为用户按了键,从磁盘读取了数据,或者接收到了网络数据包)中断CPU限制的任务

    操作系统是按进程调度还是按单个内核线程调度?安排每个进程并在该时间窗口内运行该进程可用的任何线程将更有意义。这样可以最小化进程上下文切换。我的理解正确吗

    这是一个复杂的优化决策。与更改地址空间的成本相比,清除指令和数据缓存的成本通常很大,因此这并不像您想象的那么重要。通常,在所有准备运行的线程中,首先选择要调度的线程,并且进程粘性可能是一种优化,影响调度在哪个内核上

    每个线程运行的时间与其他系统时间(如RAM访问、网络访问、HD I/O等)相比如何

    显然,线程必须运行大量的RAM访问,因为切换线程需要大量这样的访问。硬盘驱动器和网络I/O的速度通常足够慢,以至于等待这类事情的线程会被重新调度

    快速SSD会改变一些事情。我最近看到的一件事是,长期以来备受珍视的优化,即使用大量CPU来避免磁盘访问,这可能比在某些现代机器上进行磁盘访问更糟糕

    我假设每个进程/线程都有一个时间窗口,只要它是CPU限制的。一旦窗口结束,它将被调出并运行另一个进程/线程。这个假设正确吗?有没有棒球场号码,现代个人电脑的窗口有多长?我假设大约100毫秒?换出去的开销是多少?几毫秒左右

    不会。几乎所有现代操作系统都使用抢占,允许突然需要工作的交互进程(因为用户按了键,从磁盘读取了数据,或者接收到了网络数据包)中断CPU限制的任务

    操作系统是按进程调度还是按单个内核线程调度?这会让我