并发编程:理解进程与线程

目录

一、进程和线程

1.进程(Process)

2.线程(Thread)

二、PCB中的一些重要属性

三、进程和线程的状态

四、进程和线程的区别


一、进程和线程

1.进程(Process)

        进程是一个已经跑起来的程序,在计算机中程序关于某段数据的一次运行活动就是进程。进程是资源分配的基本单位。是操作系统的基础。其中PCB 是进程存在的唯一标识,个进程的存在,必然会有一个 PCB,如果进程消失了,那么 PCB 也会随之消失。

2.线程(Thread)

        多进程可以实现并发编程效果也非常理想,但是多进程编程模型有着明显缺点:进程太重量,效率不高。时间总是消耗在申请资源上。因此人们需要一种轻型的进程来解决上述问题,减少进程在创建,销毁和切换上的时空开销,由此引入了线程也叫轻量级进程。

        线程不能独立存在,而是要依附于进程。进程可以包含一个线程,也可以包含多个线程。一个进程在最开始的时候至少要有一个线程,这个线程负责完成执行代码的工作。也可以根据需要创建出更多的线程 从而实现并发编程的效果。一个进程中是可以有多个线程,每个线程都是可以独立的进行调度。

二、PCB中的一些重要属性

1.pid(进程标识符):同一时刻不同进程之间的pid是不同的

2.内存指针:进程持有的内存资源

3.文件描述符表:进程持有的硬盘资源

4.状态:创建状态,就绪状态,运行状态,阻塞状态,结束状态

5.优先级:进程的优先级越低,其优先级数值就越大,就具有最高的优先级。在执行进程时,为了确定哪个进程先执行,系统会将每个进程的优先级进行比较。优先级较低的进程要让优先级较高的进程先执行,当系统中的所有进程都设置了优先级后,系统就会选择优先级最高的进程先执行。系统在调度进程时,会根据进程的优先级来决定哪个进程先执行。当多个进程同时处于就绪状态时,系统会根据进程的优先级来选择执行哪个进程。

6.上下文:进程从cpu离开之前需要保存现场,把当前cpu中各种寄存器的状态都记录在内存中,等到下次进程回到cpu上执行的时候此时就可以把些寄存器的值,恢复回去,进程就会沿着上次执行到的位置,继续往后执行。

7.记账信息:通过优先级机制,对不同的进程分配了不同权重的资源。有可能会出现极端的情况,所有的资源都给某个进程,其他进程一点都没捞着。为此记账信息会记录当前进程持有cpu的情况(在cpu执行多久了)可以作为操作系统调度进程的参考数据,调整优先级。

三、进程和线程的状态

        就绪状态:可运行的状态,由于其他进程正在运行而暂时停止运行,等待分配到了CPU便开始运行。

        运行状态:正在占用CPU,进程正在运行。

        阻塞状态:由于进程处于某种条件,在条件满足之前无法继续执行。在该事件发生前即使把CPU分配给该进程,也无法运行。

四、进程和线程的区别

1.进程中包含线程,一个进程里面可以有一个线程,也可以有多个线程;

2.进程和线程都是用来实现并发编程的,但是线程比进程更轻量,更高效;

3.同一个进程的线程之间,共用同一份的资源,省去了申请资源的开销;

4.进程和进程之间,具有独立性,一个进程挂了,不会影响到别人,线程和线程之中,是可能会相互影响。

5.进程是资源分配的基本单位,线程是调度执行的基本单位

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TISNIW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值