首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

你真的理解多程序,多任务,多线程和多处理之间的区别吗?

多重编程–一台计算机一次运行多个程序(例如同时运行Excel和Firefox)。

多处理–一台计算机一次使用多个CPU。

多任务处理–任务共享一个公共资源(例如1个CPU)。

多线程是多任务的扩展。

1.多重编程

在现代计算系统中,通常有多个要执行的并发应用程序进程。现在,操作系统的责任是有效和高效地管理所有进程。

操作系统最重要的方面之一是多程序。

在计算机系统中,有多个等待执行的进程,即它们正在等待将CPU分配给它们并开始执行的时间。这些过程也称为作业。现在,主内存太小,无法容纳所有这些进程或作业。因此,这些过程最初保留在称为作业池的区域中。该作业池由所有等待分配主内存和CPU的进程组成。

CPU从所有这些等待的作业中选择一个作业,将其从作业池移至主内存并开始执行。处理器执行一项作业,直到它被某个外部因素中断或执行I / O任务为止。

2.多处理

在单处理器系统中,一次仅执行一个进程。

多处理是在单个计算机系统中使用两个或多个CPU(处理器)。该术语还指系统在单个计算机系统中支持一个以上处理器的能力。现在,由于有多个处理器可用,因此可以一次执行多个进程。这些多处理器共享计算机总线,有时还共享时钟,内存和外围设备。

多重编程和多重处理之间的区别

一个系统可以通过同时运行多个程序来进行多重编程,也可以通过拥有多个物理处理器来进行多处理。多重处理和多重编程之间的区别在于,多重处理基本上是在多个处理器上同时执行多个进程,而多重编程是将多个程序保留在主存储器中,并仅使用单个CPU并行执行它们。

多重处理是通过并行处理发生的,而多重编程是通过从一个过程切换到另一个过程而发生的(现象称为上下文切换)。

3.多任务处理

顾名思义,多任务处理是指一次执行多个任务(例如,进程,程序,线程等)。在现代操作系统中,我们能够播放MP3音乐,在Microsoft Word中编辑文档,同时浏览Google Chrome,这是通过多任务处理来完成的。

多任务处理是多程序设计的逻辑扩展。多任务与多编程不同的主要方式是,多编程仅基于上下文切换的概念进行工作,而多任务则基于时间共享以及上下文切换的概念。

多任务系统的工作

在时间共享系统中,为每个进程分配了一些特定的时间量,该时间量意味着该进程要执行的时间。假设有4个进程P1,P2,P3,P4准备执行。因此,它们每个都被分配了一定的时间量,例如5纳秒(5 ns)的时间量。当一个进程开始执行(例如P2)时,它将执行该时间段(5 ns)。5 ns后,CPU在指定的时间范围内开始执行另一个进程(例如P3)。

因此,CPU使进程在它们之间共享时间片并相应地执行。只要一个进程的时间量到期,另一进程就会开始执行。

这里基本上也发生了上下文切换,但是发生得如此之快,以至于用户可以在运行每个程序时分别与它们交互。这样,给用户一种幻觉,即多个进程/任务正在同时执行。但是实际上在一个特定的时间仅执行一个进程/任务。在多任务处理中,时间共享是最好的体现,因为每个正在运行的进程仅占用相当一部分CPU时间。

4.多线程

线程是CPU利用率的基本单位。多线程是一种执行模型,它允许单个进程具有在该进程的“上下文”中并发运行的多个代码段(即线程)。

例如VLC媒体播放器,其中一个线程用于打开VLC媒体播放器,一个线程用于播放特定歌曲,另一个线程用于向播放列表添加新歌曲。

多线程是一种过程,一次可以管理一个以上的用户,并可以管理同一用户的多个请求,而不必拥有多个程序副本。

多线程系统的工作

示例1

假设有一个处理客户端请求的Web服务器。现在,如果它作为一个单线程进程执行,那么它将一次将无法处理多个请求。首先,一个客户端将发出其请求并完成其执行,然后服务器才能处理另一个客户端请求。这确实是一项昂贵,费时且累人的工作。为了避免这种情况,可以使用多线程。

现在,每当有新的客户请求出现时,Web服务器就简单地创建一个新线程来处理该请求,并恢复其执行以听到更多的客户请求。因此,Web服务器的任务是侦听新的客户端请求并为每个单独的请求创建线程。每个新创建的线程都会处理一个客户端请求,从而减轻了Web服务器的负担。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201102A0H8PZ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券