中国网管论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

网管赚钱丨推荐设2345主页游戏攻略/CS/LOL/DNFLinux常用命令大全云计算/云技术频道
IP地址在线计算器网管软件,网管工具论坛积分购买 
查看: 1028|回复: 0

[分享交流] 兄/弟连Linux教程--进程和线程的区别

[复制链接]
发表于 2017-6-5 00:01:47 | 显示全部楼层 |阅读模式
兄/弟连Linux教程--进程和线程的区别
        学习Linux来说并不是一件简单的事情,之前作为一个非常著名的网管大神,遇到Linux的时候还是表示胡一脸的蒙蔽,真正系统学习了之后才知道这个非常乏味却又充满未知的领域是多么的吸引我的注意。希望在学习的道路上大家一起努力。当然想要培训的同学尽量还是严谨的选择,在国内培训学校中兄/弟连(linux.itxdl.cn/linux)还靠谱点。

【兄/弟连教育】专注IT培训11年,学习5个月包就业! 毕业拿高薪!兄/弟连Linux云计算培训(linux.itxdl.cn/linux),0学费入学,毕业后还款。让学习零压力!欢迎联系赵老师电话 1771-011-6169/

        线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。

"进程——资源分配的最小单位,线程——程序执行的最小单位"
进程从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集。
进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量, 但线程没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对 于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

总的来说就是:进程有独立的地址空间,线程没有单独的地址空间(同一进程内的线程共享进程的地址空间)。(下面的内容摘自Linux下的多线程编程)

使用多线程的理由之一是和进程相比,它是一种非常"节俭"的多任务操作方式。我们知道,在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种"昂贵"的多任务工作方式。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。据统计,总的说来,一个进程的开销大约是一个线程开销的30倍左右,当然,在具体的系统上,这个数据可能会有较大的区别。
使用多线程的理由之二是线程间方便的通信机制。 对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程 之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。当然,数据的共享也带来其他一些问题,有的变量不能同时被两个线程 所修改,有的子程序中声明为static的数据更有可能给多线程程序带来灾难性的打击,这些正是编写多线程程序时最需要注意的地方。

除了以上所说的优点外,不和进程比较,多线程程序作为一种多任务、并发的工作方式,当然有以下的优点:
提高应用程序响应。这对图形界面的程序尤其有意义,当一个操作耗时很长时,整个系统都会等待这个操作,此时程序不会响应键盘、鼠标、菜单的操作,而使用多线程技术,将耗时长的操作(time consuming)置于一个新的线程,可以避免这种尴尬的情况。
使多CPU系统更加有效。操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。进入兄/弟连的途径有很多,希望大家能把握机会。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2345

QQ|小黑屋|手机版|Archiver|网管之家 ( 沪ICP备08026629号 ) 

GMT+8, 2017-9-26 19:07

Powered by Discuz! X3.1

© 1999-2014 bitsCN.com

快速回复 返回顶部 返回列表