【问题标题】:Operating System Basics操作系统基础
【发布时间】:2015-09-24 03:20:19
【问题描述】:

我正在阅读流程管理,我有几个疑问-

  • I/O 请求是什么意思,例如 - 一个进程正在执行并且 因此它处于运行状态,如果它处于等待状态则处于等待状态 I/O 请求的完成。我不明白 I/O 请求的含义,你能 请举例说明。
  • 另一个疑问是 - 假设一个进程正在执行并且突然 发生中断,然后进程停止执行并将被 进入就绪状态,是否有可能开始了其他进程 在处理中断的同时执行它?

【问题讨论】:

  • 听起来你的作业需要帮助!
  • @Shaunak-这不是作业,

标签: process operating-system


【解决方案1】:

关于第一个问题:

一种简单的思考方式...
您的计算机有很多组件。 CPU、硬盘、网卡、声卡、gpu等。所有这些都并行工作,彼此独立。它们通常也比 CPU 慢。
这意味着,每当一个进程发出的调用(在操作系统端)最终与外部设备通信时,操作系统没有必要等待结果,因为该操作需要时间完成可能是永恒的(从 CPU 的角度来看)。
因此,操作系统启动进程请求的任何通信(称为 IO 请求),将进程标记为等待 IO,并将执行切换到另一个进程,以便 CPU 可以做一些有用的事情,而不是坐在那里等待 IO 请求完成。
当外部设备完成任何请求的操作时,它会产生一个中断,因此操作系统会被告知工作已完成,然后它可以再次将阻塞的进程标记为就绪。

这当然是一个非常简化的视图,但这是主要思想。它允许 CPU 做有用的工作,而不是等待 IO 请求完成。

关于第二个问题:

这很棘手,即使对于单 CPU 机器也是如此,并且取决于操作系统如何处理中断。
为简化代码,例如,一个简单的操作系统可能会在发生中断时一次性处理中断,然后在中断处理完成时恢复它认为合适的任何进程。所以在这种情况下,在中断处理完成之前不会运行其他进程。

在实践中,由于性能和延迟原因,事情变得有点复杂。
如果您将中断生命周期视为 CPU 的另一项任务(从中断开始到操作系统认为处理完成),您可以有效地编写中断处理代码以与其他事情并行运行。
只需将中断视为操作系统启动另一个任务(即中断处理)的通知。它在中断开始时获取所需的任何上下文,然后继续与其他进程并行处理该任务。

【讨论】:

    【解决方案2】:

    I/O 请求通常只意味着请求执行 Input 、 Output 或两者。确切的含义取决于您的上下文,例如 HTTP、网络、控制台操作,或者可能是 CPU 中的某个进程。

    一个进程正在等待 IO: 假设您正在用 C 语言编写一个程序以在命令行上接受用户名,然后想要打印回“Hello User”。您的代码将进入等待状态,直到用户输入他们的姓名并按 Enter 键。这是一个更高级别的示例,但即使在您的计算机处理器中执行的非常低级别的进程上也可以按照相同的基本原理工作

    当电流中断并等待某些东西时,处理器可以在其他进程上工作吗?是的!你最好希望它确实如此。这就是调度算法和堆栈的用途。然而,真正的答案取决于您使用的架构,它是否支持并行或串行处理等。

    【讨论】:

      最近更新 更多