【问题标题】:How the operating system deals with applications that demands multiple actions操作系统如何处理需要多个操作的应用程序
【发布时间】:2013-05-21 12:43:34
【问题描述】:

我正在研究操作系统,而这个疑问在我的脑海中盘旋了将近一整周,我在书(操作系统概念 - Silberschatz)中找不到答案。 问题是操作系统如何处理需要执行许多操作的进程?例如在电脑中播放视频,视频必须经过处理,音频必须经过处理,视频必须发送到显示器(I/O操作),音频必须发送到音频盒(I/O操作) ) 等等。

在具有单个 CPU 的计算机中,这本书说处理器一次只能运行一个进程,因此要处理视频,操作系统将为前面列出的每个操作都有一个线程,问题是如何操作系统执行它们? (Linux或Windows)它是否一次执行每一个并交换它们(处理视频,将其发送到监视器,处理音频,将音频发送到音频盒等)但执行速度如此之快以至于难以察觉还是同时执行它们(同时处理音频和视频)?我认为我对这个问题的主要疑问可以翻译为“两个线程可以在单个 CPU 计算机上同时执行吗?”

欢迎对我对这些概念的理解进行任何更正和澄清。

【问题讨论】:

    标签: multithreading process operating-system


    【解决方案1】:

    它是否一次执行每一个并交换它们(处理视频,将其发送到监视器,处理音频,将音频发送到音频盒等)但执行速度太快以至于无法察觉或确实它同时执行它们(同时处理音频和视频)?

    它在它们之间切换的速度足够快,以至于难以察觉。在现代操作系统上,这主要通过三种方式完成:

    • Preemption,任务只是被操作系统内核的调度程序挂起以运行不同的进程。这通常在称为时间片的固定时间用完时完成。
    • 当一个进程开始等待来自网络、磁盘或大多数其他来源的 IO 时,许多操作系统会立即挂起它。只有当 IO 的结果可用时,该进程才会恢复运行。
    • Cooperative multitasking,当进程向操作系统表明它愿意等待时。

    每个操作系统的细节都不同,桌面操作系统、服务器操作系统、嵌入式和实时操作系统之间也有很大差异。

    两个线程可以在单CPU计算机上同时执行吗?

    concurrency vs. parallelism 上查看这个 SO 问题。

    【讨论】:

    • 感谢您提供简洁的答案和非常有用的链接。
    • 另请注意,许多 I/O 操作比 CPU 执行它们的速度要慢得多,因此从人类的角度来看,设备会收到稳定、恒定的样本流(除非系统负载过重加载不相关的原因)。
    猜你喜欢
    • 2011-09-30
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 2017-08-14
    相关资源
    最近更新 更多