进程与线程经常会放到一起提及,不管是学习linux、python还是其他语言,进程和线程都会用到,那么他们之间有什么练习和区别呢?今天小猿圈linux老师就说一下他们之间的关系。
一、定义
进程(Process):是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。它的执行需要系统分配资源创建实体之后,才能进行。
线程(Threading):也叫作轻量级进程,是一个基本的CPU执行单元,也是程序执行过程中的最小的单元。线程的特点就是在不需要独立资源的情况下就可以运行。
二、功能
每一个程序都至少有一个线程,若程序只有一个线程,那么就是程序本身。
单线程的进程可以简单的认为只有一个线程的进程。
一个进程在同一时间只做一件事,有了多线程后一个进程同一时间可以做多件事。
每个线程可以处理不同的事务。
无论系统有几个CPU,即使进程运行在单CPU上,多线程也可以是进程并发处理多个事务。
一个线程阻塞不会影响到另一个线程。
多线程的进程可以尽可能的利用系统CPU资源。
但也不是线程越多越好,线程越好,CPU分配给每个线程的时间片就越少。
进程在执行过程中拥有独立的内存单元,而同一个进程中的多个线程共享内存,拥有自己的栈空间,拥有独立的执行序列。分配资源时的对象必须是进程,不会给一个线程单独分配系统管理的资源。
进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,多进程环境中,任何一个进程的终止,不会影响到其他进程。而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,线程间是彼此依存的。多线程环境中,父线程终止,全部子线程被迫终止(没有了资源)。
进程和线程小编从定义和功能来说他们区别,不了解他们区别的小伙伴,现在对进程和线程有了新的认识吧linux自学交流1群:819805410,想要深入了解进程和线程,以及怎么创建线程,可以去小猿圈学习一下深层次的东西,希望你们可以对操作系统有深入的了解。
网友评论