Time will tell.
进程的定义
进程是正在运行的程序的实例,比如说开了一个QQ进程、开了一个微信。
它是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,他是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本分配单元,也是基本执行单元,进程是一个实体,是一个’执行中的程序’。
进程的特点
1)并发性
任何进程都可以同其他进程一起,并发执行。
2)独立性
进程是一个能独立运行的基本单元,同时也是系统分配资源和调度的独立结构。
3)异步性
由于进程之间相互制约,使进程具有执行的间断性,也就是说,进程按照各自独立的,不可预知的速度向前推进。
组成部分
进程由程序,数据,和进程控制三部分组成。
线程定义
线程是进程中的实体,一个进程可以拥有多个线程。比如说一个QQ进程中,传输文字开了一个线程,传输语音开了一个线程,弹出对话框又开了一个线程。
一个线程必须拥有一个父进程,线程不拥有系统资源,只有运行必须的一些数据结构,他与父进行的其他线程共享该进程的其他全部资源,线程可以创建和撤销线程,从而实现进程的并发执行。一般线程具有就绪、阻塞、运行3种基本状态。
线程的基本操作
1)派生
线程在进程中派生出来,他即可由进程派生,也可由线程派生。
2)阻塞
如果一个线程,在执行过程中需要等待某个事件的发生,则被阻塞。
3)激活
如果阻塞线程的事件发生,则该线程被激活并进入就绪队列。
4)调度
选择一个就绪线程进入执行状态。
5)结束
如果一个线程执行结束,他的寄存器上下文以及堆栈中的内容被释放。
两者宏观上的区别
1)进程是运行中的程序,线程是进程的内部一个执行序列。
2)进程是资源分配的单元,线程是执行单元。
3)进程间切换代价大,线程间切换代价小。
4)进行拥有资源多,线程拥有资源少。
5)多个线程共享进程的资源。
打个比喻:
开个QQ,这是一个进程;开了迅雷,这又是一个进程。
在QQ的这个进程里,传输文字开一个线程、传输语音开了一个线程、弹出对话框又开了一个线程。
所以,运行某个软件就相当于开了一个进程。在这个软件运行的过程里(或者在这个进程里),多个工作支撑完成QQ的运行,那么这“多个工作”分别有一个线程。
所以一个进程管着多个线程。通俗的讲:“进程是爹妈,管着众多线程孩子。”
两者微观上的区别
1)地址空间和其他资源:
进程间相互独立,同一进程的各线程之间共享数据,某进程内的线程在其他进程不可见。
2)通信:
进程间通信IPC(进程间通信),线程间可以直接读写进程数据段来进行通信,但是需要进程同步和互斥手段的辅助,来保证数据的一致性。
3)切换和调度:
线程上下文切换比进行上下文切换要快的多。
4)在多线程OS中,进程是一个不可执行的实体。
絮叨
好啦,以上就是今天跟大家的一点小科普,希望本篇文章能对你起到有所帮助。另外,如果你喜欢软件测试这个行业的话,可以加入我们175317069一起学习,这里有行业深潜多年的测试人技术分析讲解。也会有我整理的各项软件测试进阶资料发昂,涵盖了测试技术、开发及环境搭建类、HR面试3大方面。
喜欢的话,欢迎【评论】、【点赞】、【关注】礼貌三连~
Time will tell.(时间会证明一切)