线程概念 线程和进程区别(Linux下)

本文详细介绍了线程和进程的概念,线程作为轻量级进程在Linux中的实现,以及线程间的共享和独立资源。线程间的通信灵活,创建和销毁成本较低,而进程是资源分配的基本单元。多线程在处理CPU密集型和IO密集型任务时有其优势,但多进程提供了更高的独立性和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

线程概念,轻量级进程,线程的独有与共享

进程与线程


线程概念,轻量级进程,线程的独有与共享

线程概念:线程是进程中的一条执行流程

轻量级进程:在一部分操作系统的概念中,进程是只有一个线程/轻量级进程的进程,系统为每个进程分配了一个pcb(进程控制块),是一个task_struct结构体,其中包含了很多描述信息实现操作系统对程序运行的管理和调度。  而在Linux中,线程是进程中的一条执行流程,是CPU调度的基本单元,但因为linux下执行流是通过pcb实现的,也就是说一个进程中可以有多个执行流pcb,并且这些pcb还共享了很多程序运行所需资源,因此linux下的pcb就起了一个新名字——轻量级进程。

线程之间的独有与共享

共享:

虚拟地址空间(便于线程之间通信)

信号处理方式(都能收到,谁拿到时间片谁处理)

IO信息(共享文件描述信息)

工作路径(创在同一个地方)

独有:

栈 ——vfork(), 创建出来后父进程会阻塞,直到子进程退出,原因是他们共享了同一个虚拟地址空间,也就是说用同一个栈。

寄存器(因为涉及到切换调度,需要知道上次运行到的位置,可以说是上下文数据)

errno(一个线程出现问题,一个线程成功完成,如果共用,那么就会变成两个线程都成功完成)

信号屏蔽器

进程与线程

进程与线程的区别:

1.进程是操作系统进行资源分配的基本单元

2.线程是操作系统进行cpu调度的基本单元

进程和线程在创建时的区别:

fork() , 创建新的虚拟地址和新的资源空间

create_thread() , 创建pcb, 新的虚拟地址空间,指向同一片资源

多进程与多线程在多任务处理中的优缺点:

多线程:

1.线程间通信非常灵活(包含进程间通信方式在内,全局,传参)

2.线程的创建与销毁成本更低,因为线程资源大多共享

3.线程间的切换调度成本低

多进程:

1.独立性高,稳定性强(一个线程出错导致整个进程退出)

多进程与多线程的共同优点

也就是多任务使用多执行流处理的优点

CPU密集型程序:程序中几乎都是CPU数据运算,那么这种程序可以更好利用多核CPU资源,但CPU也不是越多越好,否则会增加切换调度成本。

IO密集型程序:程序中几乎都是IO操作,分为等待IO就绪和数据拷贝过程,同时操作可以重叠等待时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值