Linux并发(线程特征)

版权声明:本文为博主原创文章,转载请注明出处,微信公众号:秘籍酷 https://blog.csdn.net/vincent040/article/details/50921068

进程跟线程有很多不同,其中一个最重要的差异是:每个进程都有自己独立的内存空间,但每条线程却全都挤在一个公共的内存空间之中。

 

拓展:

线程实际上是应用层的概念,在Linux内核中,所有的调度实体都被称为任务(task),他们之间的区别是:有些任务自己拥有一套完整的资源,而有些任务彼此之间共享一套资源。

图5-16 进程中的线程

 

如上图所示,左边是一个标准进程,他拥有自己的一套完整的资源——包括内存空间、文件、信号挂起队列等等,这些资源全部由PCB(即内核结构体task_struct)统一管理,这整一套数据结构,以及他们的动态变化就是一个进程。

 

对于右边,可以看到有两个PCB结构体共享很多资源,而一个PCB对应系统中的一个任务,是系统调度器的调度对象,系统在调度的时候并不关心这些PCB究竟是独立拥有一套资源还是跟别人共享,因此右边的多个调度实体(线程)的进程就比单个调度实体的进程可以获得更多的CPU资源来管理和操作他们的资源。这是多线程给我们的最初的印象。

 

——选自林世霖新书《Linux环境编程图文指南》

展开阅读全文

没有更多推荐了,返回首页