进程和线程

目录

进程

线程 

进程和线程的区别


进程

什么是进程?

每个应用程序运行在操作系统上时, 操作系统会提供一种抽象,好像系统上只有这个程序在运行,所有的硬件资源都被这个程序在使用。

这种假象是通过抽象了一个进程的概念来完成的。


进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程。

同时,进程又是操作系统进行资源分配的基本单位。

在操作系统中,进程是程序执行的实体,它代表了程序在执行时的状态。一个进程通常包括以下几个部分:

1. **程序代码**:这是程序的指令集合,存储在磁盘上,只有在执行时才会被加载到内存中。

2. **进程控制块(PCB)**:操作系统用来管理进程的数据结构,包含了进程的标识符、状态、优先级、程序计数器、寄存器集合、CPU时间等信息。

3. **内存空间**:进程在执行时,会占用一定的内存空间,用于存储程序的代码、数据和堆栈等。

4. **资源**:进程在执行过程中可能会使用到的文件、设备等系统资源。

5. **进程状态**:进程在生命周期中会有不同的状态,如就绪、运行、等待(阻塞)和终止等。

当一个程序被加载到内存中,并且开始执行时,操作系统会为它创建一个进程。这个进程会按照程序的指令执行,直到程序完成执行或者被操作系统终止。因此,进程是程序在操作系统中运行的动态实例。


线程 

线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个进程可以包含多个线程,它们共享进程的资源,如内存空间和文件句柄,但每个线程都有自己的执行栈和程序计数器。

线程可以看作是轻量级的进程,每个进程都包含一个或多个线程,线程也是一个要执行的任务。

当一个进程内的所有线程都结束时,这个进程才结束。

进程是操作系统资源分配的基本单位,一个进程中的线程之间会共享分配给进程的资源。

线程是CPU调度和执行的单位,可以并发执行。

第一个线程创建的时候(和进程一起创建的时候)申请资源,后续再创建线程,不涉及到资源申请操作。

如果一个进程中有5个线程,就有5份这样的数据,但是这5个线程共用同一个文件描述表和内存指针。

注意:

虽然提高线程的数目能够提升效率,但也不是”线性增长”,线程到达一定数目后,就算线程再多,也没法起到作用,反而会拖慢程序的性能。

线程安全:

一个线程抛出异常,可能会使所有的线程都无法继续工作。

当多个线程访问共享数据时,需要确保线程安全,以防止数据损坏。

关于线程的调度问题:

是操作系统内核控制的,程序员在应用程序这个层次无法感知,也无法干预。

线程的创建和管理是现代操作系统和编程语言提供的基本功能,它们允许程序以并发的方式执行,提高资源利用率和程序性能。在多核处理器上,线程可以真正并行执行,进一步提高计算效率。


进程和线程的区别

1.进程包含线程

2.进程是操作系统资源分配的基本单位

3.线程是操作系统调度执行的基本单位

4.进程之间存在父子关系,线程之间不存在

5.进程开销大,线程开销小

6.进程是独立运行的,一个进程崩溃不会直接影响到其他进程,线程之间是相互依赖的,同一进程下的一个线程崩溃可能会影响到其他线程。

7.进程是由操作系统进行调度的,进程间的切换是操作系统的工作。线程是由进程调度的,线程的调度可以由操作系统完成,也可以由线程库完成。


请点一个免费的赞~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值