面试必问问题之多进程与多线程的区别(超详细) 您所在的位置:网站首页 异步和多线程区别是什么 面试必问问题之多进程与多线程的区别(超详细)

面试必问问题之多进程与多线程的区别(超详细)

2024-07-07 18:41| 来源: 网络整理| 查看: 265

要想了解什么是多进程和多线程,首先要明白为什么会出现进程和线程,下面我会一步步进行说明。

为什么要引入进程

学过操作系统的应该会知道,多道程序设计的特点是多道,宏观上并行,微观上串行,而引入多道批处理系统就是为了提高系统资源的利用率,尽量使cpu处于繁忙状态,使各种资源能够得到充分利用,那么这样会出现什么情况呢?在多道程序同时运行的环境下,允许多个程序并发执行,此时他们将失去封闭性,并具有间断性及不可再现性的特征,程序本身是一组执行特定功能的指令的集合,是一个静态的概念,无法描述程序在内存中何时执行,何时停顿,也无法看出它与其它执行程序的关系,因此,程序这个静态的概念已不能如实反映程序并发执行过程的特征,为了能够更好的描述和控制程序的并发执行,实现操作系统的并发性和共享性,我们引入了进程这一概念。 为了更好的理解进程,需要明白并发和并行的区别。 并发是指两个或多个事件在同一时间间隔内发生,比如早上8:00-9:00这一时间间隔内你先洗漱然后再吃饭就是指的吃饭和洗漱这两个事件并发,但是为什么说多道程序设计下是微观上并行呢,可以这么理解,操作系统把这一时间间隔看成了一个时刻,那么在这一时刻,操作系统只知道你干完了吃饭和洗漱这两件事,并且操作系统是通过分时来实现并发的。 并行是指在同一时刻完成两种或者以上的工作,需要硬件的支持,比如早上8:00-9:00这一时间间隔内你一边玩手机,一边吃饭,那么这两个事件就是并行。通俗点理解就是并发是指两个事件或多个事件有先后顺序的执行,而并行是指两个事件或多个事件同时进行的。

什么是多进程

多进程就是指计算机同时执行多个进程,一般是同时运行多个软件。前面提到了引入进程就是为了能够更好的描述程序的并发执行,可想而知,进程是与资源有关的,所以进程就是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。进程实体是由程序段,相关数据段和PCB组成,而PCB是进程控制块,是为了使参与并发执行的程序能独立运行而专门配置的一个数据结构,注意PCB是进程存在的唯一标志。进程有用户进程和系统进程之分,其中凡是用于完成操作系统的各种功能的进程就是系统进程,而所有由用户启动的进程都是用户进程。

为什么要引入线程

前面提到过进程是与资源有关的,而进程又是动态的,因此进程进行切换时需要占用系统较多的开销,影响了系统的并发性能,那么有没有什么办法可以尽量的降低系统开销呢,于是引入了线程,尽量减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能。

什么是多线程

多线程就是指一个进程中同时有多个线程正在执行 线程是一个基本的cpu执行单元,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,可以与同属于一个进程的其他线程共享进程所拥有的全部资源。引入线程之后,进程只作为除cpu以外系统资源的分配单元,线程则作为处理机的分配单元。 线程的实现可以分为用户级线程和内核级线程,在用户级线程中,有关线程管理的所有工作都有应用程序完成,内核意识不到线程的存在。在内核级线程中,线程管理的所有工作都是内核完成,应用程序无权管理线程。因此可以理解为多线程是一种执行模型,包括多对一模型,一对一模型,多对多模型。 多对一模型:将多个用户级线程映射到一个内核级线程,线程管理在用户空间完成。 优点:线程管理是在用户空间进行的,对于线程的管理不涉及内核的服务,因此效率比较高。 缺点:由于用户级线程对操作系统不可见,即多个用户级线程实际上操作系统只会认为其只有一个用户级线程,当一个用户级线程在使用内核服务时被阻塞,那么整个进程都会被阻塞,即其他的用户级线程也不能运行了。另外,此模式下,多个线程不能并行地运行在多处理机上。 一对一模型:将每个用户级线程映射到一个内核级线程。 优点:当一个线程被阻塞时,允许另一个线程继续执行,所以并发性能较强。 缺点:每创建一个用户级线程都需要创建一个内核级线程,这样导致了创建线程的开销较大,会影响程序的性能。 多对多模型:将n个用户级线程映射到m个内核级线程,要求m



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有