2 Tanenbaum的书“现代操作系统”对线程的质疑

时间:2015-05-09 14:31:01

标签: multithreading operating-system

我正在阅读Operating Systems By Tanenbaum

  1. 怀疑1
  2. 我找到了这个段落

      

    到目前为止,我们已经看到了两种可能的设计:多线程Web服务器和单线程Web服务器。假设线程不可用,但系统设计人员发现单线程导致的性能损失是不可接受的。如果读取系统调用的非阻塞版本可用,则可以采用第三种方法。当请求进入时,唯一的线程会检查它。如果可以从缓存中满足,那么很好,但如果没有,则启动非阻塞磁盘操作。   服务器在表中记录当前请求的状态,然后继续获取下一个事件。下一个事件可以是对新工作的请求,也可以是磁盘对先前操作的回复。如果是新工作,那就开始了。如果是来自磁盘的回复,则从表中获取相关信息并处理回复。对于非阻塞磁盘I / O,回复可能必须采取信号或中断的形式。

    它表示它将启动磁盘读取并返回。 我有一个奇怪的疑问,如果是单线程,谁实际上是在运行磁盘读操作?是否不需要有人在单独的线程/进程中管理它(这也是不可能的,因为只有一个线程可用)。(我已经在nodejs中读到线程池中的底层线程管理它)。

    1. 怀疑2
    2.   

      我们可以考虑并行流程,而不是考虑中断,定时器和上下文切换。

      作者的意思是什么?

1 个答案:

答案 0 :(得分:1)

  1. 这是由I / O硬件处理的:你向它发送一个命令,告诉它你想要做什么读/写,并使用不同的硬件完成它,并在完成时向主处理器发出信号(然后可以酌情作出回应)。

  2. 这意味着要考虑更高层次的事情;其他事情是关于如何实现所需并行性的实现细节。