我发现了一个问题的答案在这里 。 但我不明白,在回答一些想法。 例如,轻量进程,据说与其他进程共享其逻辑地址空间。 这是什么意思? 我可以理解2个线程同样的情况:他们都共享一个地址空间,因此两者可以阅读BSS段(例如)的任何变量。 但是,我们有很多不同的BSS部分不同工序的,我不知道如何分享他们。
Answer 1:
从MSDN, 线程和进程 :
进程在操作系统中存在的并对应于哪些用户看到的程序或应用程序。 一个线程,而另一方面,存在的过程中。 出于这个原因,线程有时被称为轻量进程。 每个进程包括一个或多个线程的。
Answer 2:
我不知道,答案是正确的位置,所以让我发表我的版本。
有流程之间的差异 - LWP(轻量级进程)和用户线程。 我会离开的流程定义一边,因为这或多或少知道并关注LWP vs user threads
。 LWP是什么本质上都堪称当今线程。 最初,用户线程意味着是由应用程序本身的管理和内核不知道什么的线程。 LWP,在另一方面,是调度和执行内核的一个单元。
例如:让我们假设系统有3个运行的进程和调度是循环无优先级。 你有1个处理器/核心。
选项1。 你必须使用一个LWP 2个用户线程。 这意味着,从操作系统的角度,你有一个调度单元。 完全有4 LWP运行(3个其他+ 1对你的)。 您的LWP获得的总CPU时间1/4,因为你有2个用户线程,他们每个人得到的CPU总时间的1/8(取决于具体的实现)
选项2。 你有2 LWP。 从操作系统的角度来看,你有两种调度单位。 完全有5 LWP运行。 您的LWP获得的总CPU时间EACH 1/5和CPU的应用程序中获取的2/5。
另一种粗糙的区别 - LWP具有PID(进程ID),用户线程没有。
出于某种原因,命名得到了一点混乱,我们指的LWP的线程。
还有很多的差异,但请,请参阅幻灯片。 http://www.cosc.brocku.ca/Offerings/4P13/slides/threads.ppt
编辑:
张贴后,我发现了一个很好的文章,解释更详细的一切,是更好的英语比我写的。 http://www.thegeekstuff.com/2013/11/linux-process-and-threads/
Answer 3:
IMO,LWP是内核线程结合,其可以创建和在用户上下文中执行。
如果我没有记错的话,你可以将用户线程在单个LWP潜在地增加并发的水平,而不涉及系统调用。
Answer 4:
螺纹基本任务有一个目标和足够的信息分配给执行特定的任务。 一种方法可以尽可能快地做其工作创建多个线程。 例如节目的一部分,可能需要输入输出,一部分可能需要权限。
用户级线程是指那些可以通过线程库来处理。
在另一方面内核级线程 (这需要处理hadrware)也被称为LWP(轻量级进程),以最大限度地利用系统等系统不只是在一个系统调用停止。
Answer 5:
线程进程中运行。
每个过程可以包含一个或多个线程。
如果内核不知道在这个过程中运行的线程什么,我们在用户空间运行的线程,因此没有多处理能力是可用的。
在另一方面,我们可以在内核空间运行的线程; 这意味着每个处理一个不同的CPU上运行。 这使我们多处理,但你可以假设它是在操作系统资源方面更加昂贵。
最后,还有的是位于中间的某个地方的解决方案; 我们组线程一起到LWP。 每个组不同的CPU上运行,但该组中的线程可以不被多处理。 这是因为在这个版本的内核只知道大概的群体(这是多道),但没有关于它们所包含的线程。 希望这是非常明显的。
Answer 6:
一个进程包含在其中的一个或多个线程和线程可以做任何事情的过程可以做到的。 一个进程共享内也边线相同的地址空间,因为它使用相同的代码部分,数据部分和OS资源,因为它的线程之间的通信的成本低,所以这些线的所有特征使它成为“轻量级进程”。
Answer 7:
从这里 。 每个LWP是在内核池内核资源,而且装拆在每个线程的线程。 出现这种情况的线程调度或创建和销毁。
Answer 8:
基于的Tanenbaum的书“分布系统”,重量轻过程通常被称为用户级线程和内核级线程的一个混合形式。 的LWP运行在单个工艺的上下文中,并且可以存在每个进程数的LWP。 此外,每个LWP可以运行自己的(用户级)线程。 多线程应用程序由创建线程(与线程库包),并随后分配每个线程的LWP构成。
使用这种混合方法的最大优点是创建,销毁和同步线程是相对便宜,并且不需要任何内核干预。 在那旁边,提供一个进程有足够的轻量级进程,阻塞系统调用将不会暂停整个过程。