黑马程序员技术交流社区

标题: 关于进程与线程 [打印本页]

作者: 魏昂    时间: 2012-3-26 14:17
标题: 关于进程与线程
如果说 当我们打开了了一个程序时就开启了一个进程,而 一个进程里可以有多个顺序流 每个流则为一个线程 。 那么,是不是线程是在进程的基础上的、没有进程就没有线程?
作者: 陈建凡    时间: 2012-3-26 14:30
一个进程 包含一个以上的线程,线程是最小的程序单位!
作者: 许飞翔    时间: 2012-3-26 14:33
一个程序至少有一个进程,一个进程至少有一个线程.
作者: anyanyhai    时间: 2012-3-26 14:34
进程是程序执行的一个实例,比如说,10个用户同时执行IE,那么就有10个独立的进程(尽管他们共享同一个可执行代码)。

            进程不是什么?一个没有运行的程序不是一个进程。

            进程的特点:每一个进程都有自己的独立的一块内存空间、一组资源系统。其内部数据和状态都是完全独立的。

            怎么看待进程?进程的优点是提高CPU运行效率,在同一时间内执行多个程序,即并发执行。但是从严格上讲,也不是绝对的同一时刻执行多个程序,只不过CPU在执行时通过时间片等调度算法不同进程高速切换。进程类似于人类,是被产生的,有或长或短的有效生命,可以产生一个或多个子进程,最终都要消亡的。每个子进程都只有一个父进程。在这里顺带提下,Linux里通过调用fork()函数产生子进程。子进程在创建时,它几乎和父进程相同。它是从父进程的地址空间copy过来的。尽管它们可以共享有程序代码的页,但是它们各自有独立的数据空间。对子进程内存的修改不会影响父进程,反之亦然。

           什么是守护进程?在系统的引导的时候会开启很多服务,这些服务就叫做守护进程,也叫后台服务程序,它的生命周期较长,在系统关闭时终止。这个在linux中经常提到init进程,超级守护进程。

  线程的概念:一个线程是进程的一个顺序执行流。      

       同类的多个线程共享一块内存空间和一组系统资源,线程本身的数据通常只有CPU的寄存器数据,以及一个供程序执行时的堆栈。线程在切换时负荷小,因此,线程也被称为轻负荷进程。一个进程中可以包含多个线程。

作者: anyanyhai    时间: 2012-3-26 14:39
理解概念就搞定了
作者: 张小庆    时间: 2012-3-26 16:07
一个进程中至少有一个线程。应该是没有线程就没有进程吧。
作者: 逝去的记忆ヽ    时间: 2012-6-11 23:12
首先我们要理解进程和线程的概念:

进程:是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.

线程:是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.

         线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),

         但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.

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

而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉

所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作

只能用线程,不能用进程。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2