进程是什么,线程又是什么,进程与线程的区别是什么

今天学习Python的时候看到了进程与线程部分,突然问自己什么是进程什么是线程,他们的区别又是什么。但是想了想,还是发现脑子里面并没有很具体的一个定义与区别。当时想的是进程不就是比较小的程序单位吗,线程不就是比进程更轻量级的更小的进程吗。。。但是,其实我自己也知道这肯定不对,但是符合很大一部分同学对进程与线程的概念了。but,咱们不能这么简单粗暴不求甚解啊,又不是陶渊明。然后咱不耻下问,跑去问度娘,发现答案也不对,比我之前的理解高明不到哪里去,so,翻出了吃灰好久的操作系统教材

先看看什么是进程,进程的特征又是什么,为什么需要进程

首先,在多道程序环境下,程序的执行属于并发执行,此时它们将失去其封闭性,并有间断性以及不可再现性的特征所以,这样的话程序并发就失去了意义。通常情况下程序是不能并发执行的,但是我们又希望它们能够并发执行,这个时候就出现了进程这个东东。

先看看进程的定义

1.进程是程序的一次执行
2.进程是一个程序及其数据在处理机上顺序执行时所发生的活动
3.进程是程序在一个数据集合上运行的过程,他是系统进行资源分配和调度的一个独立单位

接下来看看进程的特征:

1.结构特征
进程实体由程序段,相关的数据段和PCB(progress control block)三部分构成程序实体。多数情况下说的进程实际上都是讲得进程实体。创建进程实际上是创建进程实体中的PCB,撤销进程也是撤销进程中的PCB
2.动态性
看定义就知道,进程是程序的执行过程,必须不能是死的
3.并发性
多个进程同存于内存中,能在一段时间内同时运行。具体参见创建进程的初衷
4.独立性
能独立运行、独立分配资源和独立接受调用
5.异步性
进程按各自独立的,不可预知的速度向前推进。或者说进程实体按异步方式运行

进程的三种基本状态

1.就绪
2.执行
3.阻塞

进程到此为止

线程

为什么需要线程?
由于进程是一个资源拥有者,因而在创建、撤销和切换中,都涉及到资源分配切换和释放等,系统必须为之付出交大的时空开销,所以限制了更高程度的并发量。这个时候就引入了线程的概念

线程是什么
由于线程拥有许多进程所具有的特征,所以被称为轻型进程或者进程元。传统进程只拥有一个线程,在引入线程的操作系统中一般情况下一个进程会拥有若干个线程,至少一个。

进程与线程的区别

线程是轻型进程
一个进程可拥有多个线程
具体比较:
1.调度
进程拥有资源
线程作为调度和分派的基本单位
同一进程中线程的切换不会引起进程的切换。
进程间的线程切换则会引起进程切换从而导致资源切换等
2.并发性
进程:进程和进程之间可并发执行
线程:除了进程间的并发执行还可以线程之间并发执行
所以线程的并发性更高
3.拥有资源
前面说了,线程并不能拥有资源,只有进程才拥有资源
4.系统开销
进程创建、切换和撤销都会导致系统为之创建或者回收进程控制卡以及资源,但是线程的创建以及线程间的切换并不会引起系统做这些事儿,所以线程的系统开销明显更小。

猜你喜欢

转载自blog.csdn.net/c2496649361/article/details/80655068