【问题标题】:Does printf() invoke the short term scheduler to schedule another process in ready queue?printf() 是否调用短期调度程序来调度就绪队列中的另一个进程?
【发布时间】:2014-03-21 20:06:57
【问题描述】:

当一个进程尝试输出到控制台(使用 printf)时,它是否会受到 I/O 事件的影响,它将被发送到等待队列,因此,短期调度程序开始行动并选择另一个进程来执行cpu时间
上下文切换是否发生在控制台输出事件中?

【问题讨论】:

    标签: io operating-system scheduler context-switch


    【解决方案1】:

    您需要进行手动同步。您不能假设它是线程安全的。 如果需要,单独的线程不会同时访问流,您需要使用互斥体包装输出。

    【讨论】:

      【解决方案2】:

      当然,如果 I/O 流被另一个正在执行输出的线程锁定,它可能会这样做。

      不要使用您所说的“短期调度程序”。控制台流可能会受到互斥体的保护,并在线程请求 I/O 时以“通常”的方式被线程锁定/解锁。

      【讨论】:

      • 短期调度程序(也称为 CPU 调度程序)决定在时钟中断、I/O 中断之后执行(分配 CPU)哪些就绪的内存中进程、操作系统调用或其他形式的信号
      猜你喜欢
      • 2019-04-13
      • 2012-02-18
      • 2019-05-18
      • 2015-09-21
      • 1970-01-01
      • 2019-01-01
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多