0

我正在研究操作系统,几乎整整一周都在我的脑海里有这个疑问,我在书(操作系统概念 - Silberschatz)中找不到答案。问题是操作系统如何处理需要执行许多操作的进程?例如,要在计算机中播放视频,必须处理视频,必须处理音频,必须将视频发送到监视器(I/O 操作),必须将音频发送到音频盒(I/O操作)等。

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

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

4

1 回答 1

1

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

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

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

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

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

查看这个关于并发与并行的 SO 问题。

于 2013-05-26T14:12:47.697 回答