进程和线程的区别详解

本文详细阐述了进程在系统中的管理,包括进程控制块(PCB)的构成,如PID、内存指针和文件描述符表。介绍了线程的引入背景及其与进程的区别,强调了线程的轻量级特性及潜在的线程安全问题。

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

                                          

  • 🎥 个人主页:Dikz12
  • 📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香
  • 欢迎大家👍点赞✍评论⭐收藏

目录

 进程

进程在系统中是如何管理的

 进一步认识PCB

线程

 能否一直增加线程数目来提高效率

进程和线程的区别 


 进程

 进程:就是正在运行的程序.

 通过这个图片,可以看到每个进程想要执行,都需要消耗一定的系统资源。

每个进程,都是系统资源分配的基本单位.

进程在系统中是如何管理的

 主要考虑两个方面:

1.描述:就是使用类 / 结构体,把被管理的一个对象,这个属性都表示出来。(系统专门有一个结构体描述进程得属性,这个结构体被称为“进程控制块”--PCB).

2.组织:使用数据结构,类似于双向链表 这样的数据结构,把这些表示出来的对象,串起来.(方便后续的增删改查).

想更明确的认识进程特性,就需要进一步认识PCB里面的属性!!!

 进一步认识PCB

 1.pid:进程的身份标识. 

 每一个进程都会有一个pid,同一时刻,不同进程之间的pid是不同的.

2.内存指针

  每个进程在运行的时候,都会分配一定的内存空间.这样的内存空间,具体在哪里,以及分配的空间有哪些部分,每个部分都是干什么的???都是有一组指针来进行区分的.

也就是描述了进程的“内存资源”是什么样子的.

3.文件描述符表

 类似于顺序表 这样的数据结构,和文件有关 => 硬盘 有关.

一个进程也会涉及到硬盘操作,就需要按照文件来操作,进程都操作了那些文件就是通过文件描述符表.描述了进程持有的“硬盘资源”.

 PCB中还引入了一些属性,用来支持操作系统实现 进程调度 的效果.

1.进程的状态 (比如:就绪、阻塞.....)

2.进程的优先级 . (有些进程会给更高的优先级,优先调度)

3.进程的上下文. (可以理解为:读档、存档.)

4.进程的记账信息 (通过优先级机制,对不同的进程分配了不同权重的资源)

线程

 引入多个进程的初心是什么??

实现并发编程 (现在是多核CPU时代)

 多进程,实现并发编程,也有明显的缺点.太重量。效率不高。

如果频繁的创建 /  销毁 进程,开销是不容忽视了.

为了解决上述问题,就引入了“线程”(Thread),也叫做“轻量级进程”.

 所以,每个线程,都是可以独立的进行调度的,每一个线程,也有状态,优先级,上下文,记账信息......。一个进程,使用PCB表示,一个进程可能使用一个PCB,也可能使用多个PCB表示,每个PCB对应到一个线程上;前面谈到的,pid、内存指针、文件描述符表也是共用同一份的。

创建线程就不需要重新申请资源了. 直接使用分配给进程的资源,省去了资源分配的开销,所以创建效率就更高了!!!

 能否一直增加线程数目来提高效率

所以,线程多了,可能会产冲突,被称为“线程不安全问题”。

如果某个线程抛出异常,没有妥善处理,就可能把整个进程搞崩溃,其它线程也会因此消失.

进程和线程的区别 

1.进程是资源分配的基本单位;线程是调度执行的基本单位。

2.进程包含线程,一个进程至少有一个线程,也可以有多个。

3.进程 和 线程 都是用来实现 并发编程, 线程比进程更高效、更轻量。

4. 进程 和 进程 之间具有独立性,一个挂了不会影响到另一个;同一个进程的 线程和 线程之间是可能相互影响的。 (线程安全问题 + 线程异常)

评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值