目录
一、进程和线程
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.进程是资源分配的基本单位,线程是调度执行的基本单位