时间:2014.06.25
位置:基础
-------------------------------------------------------------------------
一、简述
进程Process和线程Thread是操作系统的基本概念。抽象而重要。下面从几个方面来分析进程和线程的差别。
-------------------------------------------------------------------------
二、分析
进程可觉得是程序运行时的一个实例。是系统进行资源分配的独立实体,每一个进程拥有独立的地址空间,所以一个进程无法直接訪问还有一个进程的变量和数据结构。假设希望让一个进程訪问还有一个进程的资源,须要使用进程间通信,比方:共享存储系统,消息传递系统,管道通信系统等。
一个进程能够拥有多个线程,每一个线程使用其所属的栈空间。线程与进程最基本的差别是:同一个进程内的多个线程会共享部分状态,即多个线程能够读写同一块内存。换句话说就是进程的内存空间是共享的。每一个线程都能够使用这些共享内存,当然。这当中也有某些共享内存在线程之间尽管共享。但各线程需相互排斥或满足一定条件才干訪问。
于是就有了相互排斥锁,防止对个线程同一时候读写某一块内存区域。还有些内存仅仅能供给固定数目的线程使用。好比一个房间定义仅仅能容纳n个人,解决的办法是在门口挂n把钥匙。每一个进去时就取一把。出来时把钥匙放回,一旦后面有人想进去而钥匙架已空。就得在门口排队等待。这就是信号量。用来保证多个线程互不冲突,相互排斥锁是信号量的一种特殊情况(n=1),因此全然可用后者取代前置,但相互排斥锁简单高效。在必须保证资源独占的场景下。我们採用相互排斥锁。
,而一个进程是无法直接訪问还有一个进程的内存的。同一时候,每一个线程还拥有自己的寄存器和栈,其它线程能够读写这些栈内存。
线程是进程的一个特定运行路径。当一个线程改动了进程中的资源时。其兄弟线程能够马上看到这样的变化。
-------------------------------------------------------------------------
三、总结
1.进程是系统进行资源分配的基本单位。有独立的内存地址空间;线程是CPU调度的基本单位,没有单独的地址空间,有独立的栈。局部变量。寄存器和程序计数器等。
2.创建进程的开销大,包含创建虚拟地地址空间需要大量的系统资源;小的开销,以创建一个线程。基本上只存在一个内核对象和一个堆栈。
3.的方法,不能直接访问的处理的资源以及;相同的过程的多个线程内的资源共享的方法
4.这个过程切换的开销大,线程切换开销;进程间通信的开销大,线程之间小的通信开销。
5.线程属于进程,你不能独立运作,每个进程具有至少一个螺纹,这是主线程。