目录
进程
线程
进程和线程的区别
进程
什么是进程?
每个应用程序运行在操作系统上时, 操作系统会提供一种抽象,好像系统上只有这个程序在运行,所有的硬件资源都被这个程序在使用。
这种假象是通过抽象了一个进程的概念来完成的。
进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程。
同时,进程又是操作系统进行资源分配的基本单位。
在操作系统中,进程是程序执行的实体,它代表了程序在执行时的状态。一个进程通常包括以下几个部分:
1. **程序代码**:这是程序的指令集合,存储在磁盘上,只有在执行时才会被加载到内存中。
2. **进程控制块(PCB)**:操作系统用来管理进程的数据结构,包含了进程的标识符、状态、优先级、程序计数器、寄存器集合、CPU时间等信息。
3. **内存空间**:进程在执行时,会占用一定的内存空间,用于存储程序的代码、数据和堆栈等。
4. **资源**:进程在执行过程中可能会使用到的文件、设备等系统资源。
5. **进程状态**:进程在生命周期中会有不同的状态,如就绪、运行、等待(阻塞)和终止等。
当一个程序被加载到内存中,并且开始执行时,操作系统会为它创建一个进程。这个进程会按照程序的指令执行,直到程序完成执行或者被操作系统终止。因此,进程是程序在操作系统中运行的动态实例。
线程
线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个进程可以包含多个线程,它们共享进程的资源,如内存空间和文件句柄,但每个线程都有自己的执行栈和程序计数器。
线程可以看作是轻量级的进程,每个进程都包含一个或多个线程,线程也是一个要执行的任务。
当一个进程内的所有线程都结束时,这个进程才结束。
进程是操作系统资源分配的基本单位,一个进程中的线程之间会共享分配给进程的资源。
线程是CPU调度和执行的单位,可以并发执行。
第一个线程创建的时候(和进程一起创建的时候)申请资源,后续再创建线程,不涉及到资源申请操作。
如果一个进程中有5个线程,就有5份这样的数据,但是这5个线程共用同一个文件描述表和内存指针。
注意:
虽然提高线程的数目能够提升效率,但也不是”线性增长”,线程到达一定数目后,就算线程再多,也没法起到作用,反而会拖慢程序的性能。
线程安全:
一个线程抛出异常,可能会使所有的线程都无法继续工作。
当多个线程访问共享数据时,需要确保线程安全,以防止数据损坏。
关于线程的调度问题:
是操作系统内核控制的,程序员在应用程序这个层次无法感知,也无法干预。
线程的创建和管理是现代操作系统和编程语言提供的基本功能,它们允许程序以并发的方式执行,提高资源利用率和程序性能。在多核处理器上,线程可以真正并行执行,进一步提高计算效率。
进程和线程的区别
1.进程包含线程
2.进程是操作系统资源分配的基本单位
3.线程是操作系统调度执行的基本单位
4.进程之间存在父子关系,线程之间不存在
5.进程开销大,线程开销小
6.进程是独立运行的,一个进程崩溃不会直接影响到其他进程,线程之间是相互依赖的,同一进程下的一个线程崩溃可能会影响到其他线程。
7.进程是由操作系统进行调度的,进程间的切换是操作系统的工作。线程是由进程调度的,线程的调度可以由操作系统完成,也可以由线程库完成。
请点一个免费的赞~~