【问题标题】:Operation Systems: How process move from device' queue(waiting) to ready queue?操作系统:进程如何从设备的队列(等待)移动到就绪队列?
【发布时间】:2016-07-13 15:22:17
【问题描述】:

当一个进程正在cpu中运行,突然要等待I\O, 然后调度程序将其状态(程序计数器,寄存器..)保存到PCB中,然后将他添加到进程等待I\O的设备队列中。

什么时候进程知道从等待(设备)队列移动到就绪队列? 如果我在代码中执行 Thread.Sleep(50000),进程是否会移至等待队列?

谢谢!

【问题讨论】:

    标签: process operating-system readystate


    【解决方案1】:

    使用的术语都是教学性的。这是如何完成的完全取决于操作系统。

    从由于挂起的 I/O 导致无法执行到进入读取执行状态的过程因系统而异。

    如果您正在执行阻塞(同步)I/O,则每个进程(或线程)只能有一个待处理的阻塞 I/O 调用。完成后,该过程应该是可执行的。这将发生在 I/O 请求完成的中断处理程序中。

    在某些系统上,完成 I/O 会提高进程(或线程)的优先级。在这样的系统中,进程将领先于其他正在等待的进程,因为它们耗尽了自己的 CPU 量(而不是自愿让出 CPU)。

    许多进程状态变化发生在定时器中断服务期间。 O/S 将在 CPU 上安排定期中断。定时器中断处理程序通常会查找需要唤醒的休眠进程、已排队等待完成的 I/O 请求以及进程切换。

    【讨论】:

    • 你的回答很好,直到最后 1/2 段进入“定时器中断”、“量子”FUD-land:(
    • 嗨,它对我有很大帮助!谢谢!,但我不明白“定时器中断处理程序”是什么意思?再次感谢!
    • 大部分操作系统工作都在中断处理程序中处理;设备中断或定时器中断。操作系统设置一个定时器中断以间隔关闭。定时器中断处理程序是操作系统进行强制进程切换的地方。轮到你了。现在轮到别人了。
    猜你喜欢
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    相关资源
    最近更新 更多