进程与线程

1.进程 

进程就是任务,是跑起来的程序 

用PCB(进程代码块)来描述进程 。每一个进程至少有一个PCB

进程的意义就是:让操作系统可以同时执行多个任务。 (不必说:要打开另一个程序,只能关闭当前程序。)实现了“并发编程(并行+并发)”的效果。

1.进程创建时:申请PCB  \rightarrow 为新进程分配资源(内存+文件) \rightarrow  初始化PCB \rightarrow将PCB插入就绪队列

2.进程销毁是:把PCB从链表上删除  \rightarrow 将PCB记录里对应的资源(内存+文件)释放  \rightarrow 销毁PCB 

3.进程的创建和销毁以及 切换,都需要消耗大量的资源。难道:一个服务器程序,每来一个客户端,就创建一个进程,走了就销毁。效率太低(分配资源这个事情,对操作系统来说是个大活(蓝色处))。

4.为了防止进程创建销毁效率低下 \rightarrow 线程

2.线程 

意义:防止频繁创建销毁进程导致的效率低下 

进程包含线程 。 一个线程对应一个PCB

如图

 (该图来自别人的csdn,本人在原基础上编辑了下  -> 侵权删)

 同一进程的多个线程,共享同一份资源(内存+文件)

本质:线程运行的本质就是函数的执行。函数运行时信息是保存在栈帧中的,因此每个线程都有自己独立的、私有的栈区 。由于操作系统可随时暂停线程的运行,所以需要保存线程运行的信息,这些信息就保存在线程的程序计数器中,下一次再运行该线程就能知道它从哪儿暂停以及该从哪儿继续执行(线程上下文) 

如图类比:进程就是一个工厂,线程就是流水线,多个流水线共享工厂里的操作说明书、工具、一些零部件等(按照需求来拿共享部分里的东西)  

1.(  一个进程可有多个线程【多个PCB】 )+  (   进程里有共享部分【内存+文件】) \rightarrow  这些PCB里的内存指针、文件描述符表 ,其实是同一份东西,都指向共享部分,每个PCB按照需求去共享部分拿即可。  

2.而状态、上下文、优先级、记账信息,则是每个PCB(线程)自己有一份

创建进程时默认至少有一个线程(流水线),该图有3个线程。销毁时:只用销毁掉一个不用线程;创建时:只用多加一个线程即可,大大减少了开销。所有把 线程称为“轻量级进程”

创建/销毁线程的开销比创建/销毁进程的开销小

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值