操作系统如何处理需要多个操作的应用程序

时间:2013-05-26 14:00:01

标签: multithreading process operating-system

我正在研究操作系统,我脑子里已经怀疑了将近一个星期,而且我在书中找不到答案(操作系统概念 - Silberschatz)。 问题是操作系统如何处理需要执行许多操作的进程?例如要在计算机中播放视频,必须处理视频,必须处理音频,必须将视频发送到监视器(I / O操作),音频必须发送到音频盒(I / O操作) ) 等等。

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

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

1 个答案:

答案 0 :(得分:1)

  

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

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

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

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

  

两个线程可以在一台CPU计算机上并发执行吗?

concurrency vs. parallelism上查看此SO问题。