进程和线程的区别

  • A+
所属分类:linux技术
摘要

作者:joeKong
版权:本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。

作者:joeKong

版权:本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。

——————————————————————————————————————————

首先,linux上的application是作为一个process进行启动的。Process的管理是OS(在本例中为Linux)的重要角色,OS负责process的调度,中断,信号控制,优先级控制,进程切换,状态管理,内存管理等。

什么是process?

porcess是在CPU上运行的,并且可以使用Linux内核所控制的任何Resource来完成其任务。

什么是thread?

线程是从单个进程创建的最小执行单元。不同的线程可以从同一进程中并行的被启动。

线程可以共享例如memory和打开的文件等的资源。不同的线程也可以访问同一个应用程序的数据。这是一个很大的差异,因为进程无法共享资源。换句话说,这也意味着线程不应该在同一时间内更改共享资源,否则会产生数据不整合等的异常。因此,线程锁和并行处理的控制是应用程序的责任。在进行应用程序编程的时候需要额外注意。

进程和线程之间的区别。

如前所述,进程无法共享资源。因此,您需要复制资源才可以启动一个进程。而线程只需要极少的上下文就可以进行启动和切换,所以,从性能的角度来看,启动线程是更快速的。但另一方面,从任务调度的角度来看,进程和线程具有相似的特性,因此Linux内核将以相同的方式处理他们。

进程和线程的区别