进程与线程的概念详解

    科技2023-09-18  99

    一、进程

    1、概念理解

     说起进程这个概念,让很多经常使用计算机的人感到陌生,那么到底什么是进程呢?直白地讲,进程就是应用程序的启动实例。比如我们运行一个游戏,打开一个软件或者开启了一个下载,都是相当于开启了一个进程,每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。进程在操作系统中是一个非常抽象、非常重要、非常难以理解的概念。对进程概念的深入透彻的理解,有助于理解操作系统中的各种机制原理。

    2、引入

    那为什么我们要引入进程这个概念呢?   提起程序这个概念,大家再也熟悉不过了,程序与进程概念是不可分的。程序是为了完成某项任务编排的一个计算机可识别语句的集合,它告诉计算机如何执行,因此程序是需要运行的。 程序运行过程中需要占有计算机的各种资源才能运行下去。如果某一时刻,系统中只有一道程序,即单道程序系统,程序则在整个运行过程中独占计算机全部资源, 整个程序运行的过程就非常简单了,管理起来也非常容易。就象整个一套房子住了一个人,他想看电视就看电视,想去卫生间就去卫生间,没人和他抢占资源。但为了提高资源利用率和系统处理能力,现代计算机系统都是多道程序系统,即多道程序同时执行。程序的同时执行带来了一些新的问题,如资源的共享与竞争,它会改变程序的执行速度。就象多个人同时住一套房子,当你想去卫生间的时候,如果此时卫生间里有人,你就得等待,影响了你的生活节奏。如果程序执行速度不当,就会导致程序的执行结果失去封闭性和可再现性,这是我们不希望看到的。因此应该采取措施来制约、控制各并发程序段的执行速度。由于程序是静态的,我们看到的程序是存储在存储介质上的,它无法反映出程序执行过程中的动态特性,而且程序在执行过程中是不断申请资源,程序作为共享资源的基本单位是不合适的,所以需要引入一个概念,它能描述程序的执行过程而且可以作为共享资源的基本单位,这个概念就是进程。

    3、进程的特征

    动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。 并发性:任何进程都可以同其他进程一起并发执行 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位; 异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进 结构特征:进程由程序、数据和进程控制块三部分组成; 多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果; 但是执行过程中,程序不能发生改变。

    4、进程的三种基本状态

    a> 就绪状态:进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。就绪进程可以按多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。b> 运行状态:进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。在没有其他进程可以 执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。c> 阻塞状态:由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生 前即使把处理机分配给该进程,也无法运行。

    二、线程

    1、线程的由来

     每个进程都有自己的地址空间,即进程空间,在网络或多用户换机下,一个服务器通常需要接收大量不确定数量用户的并发请求,为每一个请求都创建一个进程显然行不通(系统开销大响应用户请求效率低),因此操作系统中线程概念就这样被被引进来了。  举个例子,我们打开腾讯管家,腾讯管家本身就是一个程序也就是说它就是一个进程,它里面有很多的功能,例如查杀病毒、清理垃圾、电脑加速等,按照单线程来说,你想要清理垃圾的同时还要病毒查杀,此时如果系统为你的这两个请求再创建两个进程的话,很显然会导致系统开销变大,如果有更多这样的请求的话,那么将会消耗大量系统资源,直接导致系统的响应速度变慢。

    2、概念

     在一个进程中,每个独立的功能都需要独立的去运行,这时又需要把当前这个进程划分成多个运行区域,每个独立的小区域(小单元)称为一个线程。依旧来举个栗子,比如说360杀毒软件,安全体检电脑的同时又可以清理电脑中的垃圾。那么这里的安全体检是360杀毒软件中的一个线程,清理电脑中的垃圾也是一个线程。

    3、 特点

    (1)轻型实体 线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。 线程的实体包括程序、数据和TCB。线程是动态概念,它的动态特性由线程控制块TCB(Thread Control Block)描述。TCB包括以下信息:

    线程状态。当线程不运行时,被保存的现场资源。一组执行堆栈。存放每个线程的局部变量主存区。访问同一个进程中的主存和其它资源。 用于指示被执行指令序列的程序计数器、保留局部变量、少数状态参数和返回地址等的一组寄存器和堆栈。

    (2)独立调度和分派的基本单位。 在多线程OS中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小(在同一进程中的)。 (3)可并发执行。 在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。 (4)共享进程资源。 在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚地址;此外,还可以访问进程所拥有的已打开文件、定时器、信号量机构等。由于同一个进程内的线程共享内存和文件,所以线程之间互相通信不必调用内核。 摘自百度

    三、进程与线程的区别

    1. 地址空间:

    同一进程的所有线程共享本进程的地址空间,而不同的进程之间的地址空间是独立的。

    2. 资源拥有:

    同一进程的所有线程共享本进程的资源,如内存,CPU,IO等。进程之间的资源是独立的,无法共享。

    3. 执行过程:

    每一个进程可以说就是一个可执行的应用程序,每一个独立的进程都有一个程序执行的入口,顺序执行序列。但是线程不能够独立执行,必须依存在应用程序中,由程序的多线程控制机制进行控制。

    4. 健壮性:

    因为同一进程的所以线程共享此线程的资源,因此当一个线程发生崩溃时,此进程也会发生崩溃。 但是各个进程之间的资源是独立的,因此当一个进程崩溃时,不会影响其他进程。因此进程比线程健

    四、栗子(哈哈)

    单CPU:一台单核处理器计算机 = 一个车间; 多CPU:一台多核处理器计算机 = 一座工厂; 进程:一个车间 = 一个进程; (即一个运行的程序) 线程:车间内一个工人 = 一个线程; 多进程:一座工厂可以同时运行多个车间; 多线程:车间内多个工人同时工作分作完成各自的任务。 进程与线程:一个进程可以包括多个线程。 CPU和进程:单CPU只能同时运行单个进程,多CPU可以同时运行多个进程。

    你只管往前走,            其它的交给时间。                      一分一秒,                           一滴泪的时间。

    Processed: 0.015, SQL: 8