当前位置:懂科普 >

综合知识

> linux线程同步和进程同步的区别

linux线程同步和进程同步的区别

linux线程同步和进程同步的区别

1.区别:

2.1、多进程中数据共享复杂、同步简单,而多线程中数据共享简单、同步复杂;

3.2、多进程占用内存多、切换复杂、速度慢、CPU利用率低,而多线程占用内存少、切换简单、CPU利用率高;

4.3、多进程的编程简单、调试简单,而多线程的编程复杂、调试复杂。

小编还为您整理了以下内容,可能对您也有帮助:

麻烦解释一下linux下进程和线程有什么区别和联系,linux下多线程和多进程通信的实现方法,请通俗解释

兄弟看到你这么高的分我就找了些资料:也算是对昨天学的知识总结一下吧

一、先说概念不管是windows还是linux下的进程和线程概念都是一样的,只是管理进程和线程的方式不一样,这个是前提,到时候你可别问我windows下进程和线程啊。这个涉及到操作系统原理。下面给你解答。

说道进程不得不提作业这个名词 ,我想兄弟你电脑里不会有一个程序吧对不?当你的系统启动完毕后你看看你的任务管理器里是不是有很多进程呢?那么多程序是怎么调如内存呢?能理解吗?这里要明白程序和进程的关系,程序是你磁盘上的一个文件,当你需要它时进入内存后才成为进程,好比QQ在磁盘上就是一个文件而已,只有进入了内存才成为进程,进程是活动的。QQ要扫描你文件啊,记录你聊天记录啊,偷偷上传个啥东西什么的你也不知道对不,他是活动的。这个能明白吗?

再看作业,这个作业可不是你写作业的那个作业啊。系统一看好家伙你个QQ那么大的家伙你想一下子进入内存啊?没门!慢慢来嘛,系统就把QQ程序分为好几块,这几块不能乱分的,要符合自然结构就是循环啦选择啦这样的结构,你把人家循环结构咔嚓截断了,怎么让人家QQ运行啊?这就是作业要一块一块的进入内存,同时要为作业产生JCB(JOB CONTROL BLOCK)作业控制块,你进入内存不能乱跑啊,要听系统的话,你要是进入系统自己的内存。框一下,内存不能读写 对话框就出来了,严重点直接蓝脸给你!你懂得。这是window下的,linux下直接给你报错!没事了就!所一系统通过jcb控制进程。JCB包含了进程号优先级好多内容,你打开你的windows任务管理器看看进程是不是有好多属性啊?那就是PCB(PRCESS,CONTROL BLOCK)同理作业也包含那些内容只是多少而已。下面写出进程特点:

1、进程是分配计算机资源最小的单位。你想啊人是要用程序干活的吧?你把程序调入内存成了就成了进程,所以说进程是分配资源的最小单位。你在linux下打开终端输入top命令看是不是有好多进程?

2、进程有操作系统为作业产生。有“父进程”产生“子进程”之间是父子关系,并可以继续向下产生“子进程”。还拿QQ来说,你双击QQ.exe。QQ启动了输入账号密码打开主界面了。这时候你要聊天,QQ进程赶紧产生个“儿子”说 “儿子你去陪主人聊天去吧。这样子进程产生了。突然你想看美女要传照片这时候那个”儿子“有”生“了一个”儿子“说”儿子“你去传照片。那个“儿子领到任务去传照片了。这时你想关了QQ,QQ提示你说”你还有个“儿子”和“孙子”还在干活呢你真要结束吗?你蒽了确定。QQ对他“儿子”(你聊天窗口)说:”儿子啊对不起了,主人要关闭我你也不能活啊“咔嚓一下”儿子“死了,儿子死之前对他儿子说:“儿子啊你爷爷不让我活了,你也别活了咔嚓孙子也死了。最后世界安静了。这就是进程的父子关系。能明白吗?记住:进程之活动在内存中。不能使用CPU,只管分配资源。

再说线程:线程也产生在内存中并且在内存中存在相当长的时间,但它的活动区域主要在CPU中,并且运行和灭亡都存在于CPU中,可以这么说,线程是程序中能被系统调度进入CPU中最小程序单位,它能直接使用进程分配的CPU的资源。

还拿QQ来说当你要传文件时QQ总要判断一下文件的扩展名吧,ok这时那个”儿子“赶紧对它爸爸说我需要一个线程判断扩展名QQ赶紧对一个管这个的线程说:”快点去CPU里计算下那个扩展名是什么然后向主人报告计算完了就“死了”消亡了,但是它的线程还在内存中!还等着你下一次传文件然后计算然后消亡!

线程之间是相互的。一个在CPU,一个在内存里还能有关系吗对不?CPU在每一个瞬间只能进入一个线程,当线程进入CPU时立即产生一个新的线程,新线程仍停留在内存中,就好比上面那个传文件还会等着你再传文件再计算扩展名。

线程相对线程是的,但它在内存中并不是的,这就好比你不开QQ能用QQ传输文件吗?它只存在与进程分配的资源中,也就是说计算扩展名这个线程只能停留在QQ这个进程中,不能跑到别的进程里!!相当于程序产生了新的进程和线程,进程向CPU申请资源,再有线程来使用,他们都是为程序服务的只是分工不同!

因为你没提问linux下是怎么管理进程和线程的所以我就不回答了,这个问题我建议你还是看看《笨兔兔的故事》里面讲到了linux是怎么管理进程和线程的。挺幽默的比我说得还好。

你第二个问题说实话我回答不了你!我想你现在连进程和线程还没理解第二个你更理解不了了你说对不?我猜的其实你用C/C++不管是在windows下编程还是在Linux下编程思想都是一样的对吧,如果你理解了在windows下线程间通信,在linux更没问题了!

参考资料:黑客手册2009合订本非安全第一二季244页,245页,328页,329页,398页,399页

浅谈操作系统原理 (一 二三)

ubuntu中文论坛 笨兔兔的故事

http://forum.ubuntu.org.cn/viewtopic.php?f=120&t=267518

希望我的回答你能理解

什么是进程?和线程区别?

1、本质不同

进程是资源的分配和调度的一个单元,而线程是CPU调度的基本单元。

2、数量不同

同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进行至少包括一个线程。

3、过程不同

进程的创建调用fork或者vfork,而线程的创建调用pthread_create,进程结束后它拥有的所有线程都将销毁,而线程的结束不会影响同个进程中的其他线程的结束。

4、属性不同

线程有自己的私有属性TCB,线程id,寄存器、硬件上下文,而进程也有自己的私有属性进程控制块PCB,这些私有属性是不被共享的,用来标示一个进程或一个线程的标志。

1、功能不同

进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

2、工作原理不同

在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

线程是调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux平台的POSIX Thread;或者由内核与用户进程,如Windows 7的线程,进行混合调度。

3、作用不同

进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。

通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为运行和调度的基本单位。

进程的特征:

1、动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。

2、并发性:任何进程都可以同其他进程一起并发执行

3、性:进程是一个能运行的基本单位,同时也是系统分配资源和调度的单位;

4、异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自的、不可预知的速度向前推进

5、结构特征:进程由程序、数据和进程控制块三部分组成。

多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。

线程和进程的关系和区别

线程和进程的关系和区别分别如下:

一、线程与进程的关系

(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程;

(2)资源分配给进程,同一进程内的所有线程共享该进程的所有资源;

(3)线程在执行过程中需要协作同步。不同进程中的线程之间要利用消息通信的方法实现同步;

(4)处理机分配给线程,即真正在处理机上运行的是线;

(5)线程是进程的一个执行单元,也是进程内的可调用实体。

二、线程和进程的区别:

进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有的地址空间,一个进程崩溃后,在保护模式下不会对其他进程产生影响,而线程只是一个进程中的不同执行路径。

线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

快速了解线程与进程:

计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。

背后的含义就是,单个CPU一次只能运行一个任务。进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。

一个车间里,可以有很多工人。他们协同完成一个任务。线程就好比车间里的工人。一个进程可以包括多个线程。车间的空间是工人们共享的,比如许多房间是每个工人都可以进出的。这象征一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。

线程和进程有什么区别

线程和进程有什么区别?

线程和进程有什么区别?

在计算机科学领域,线程和进程是两个重要而又常见的概念。然而,许多人对这两个概念的区别不是很清楚。本文将详细介绍线程和进程的定义、特点和区别。

一、线程的定义和特点

线程是指操作系统中一个单独的执行流程。一个进程可以包含多个线程。每个线程可以执行不同的任务,但它们共享进程的资源和内存空间。因此,线程间通信和同步较为容易。

线程的创建比进程轻量级,消耗的系统资源也少。线程可以在进程内被创建和撤销,因此线程的创建和撤销比进程快。在多核处理器系统中,多个线程可以在不同的CPU核心上并行执行,从而提高了程序的性能。

二、进程的定义和特点

进程是指在计算机中运行的一个正在进行中程序的实例。每个进程都有自己的地址空间、代码和数据段,因此进程间相互,不能直接访问对方的内存和数据。进程间通信和同步比较困难,需要采用一些特殊的技术。

由于每个进程有的地址空间和系统资源,因此创建和撤销进程的开销比较大。不过,在现代操作系统中,进程有自己的管理机制,可以有效避免进程之间的资源冲突和安全问题。

三、线程和进程的区别

线程和进程有以下主要区别:

1.资源占用:进程拥有的内存空间和系统资源,而线程共享进程的内存和部分系统资源,比如文件、打开的端口等。

2.创建和销毁开销:线程的创建和销毁比进程轻量级,速度更快。

3.执行能力:进程和线程都可以执行任务,但线程的执行能力比进程弱。线程必须在进程中运行,依靠进程来获得资源和管理。

4.通信和同步:线程之间通信和同步比较容易,而进程之间通信和同步比较困难。

5.安全性:线程间的安全问题更容易解决,因为线程共享内存,同步和互斥较容易实现。进程间的安全问题则更为复杂,需要特殊处理。

综上所述,线程和进程是两个不同的概念,各自有自己的特点和优缺点。在实际的程序设计中,开发者需要综合考虑程序的特点、资源使用和安全问题,选择合适的线程和进程模型来实现具体的任务。

  • 文章版权属于文章作者所有,转载请注明 https://dongkepu.com/zonghezhishi/p7dgy7.html