您的位置:首页 > 其它

浅谈线程与进程的相似与不同

2015-09-23 18:24 246 查看
线程与进程的相似之处

线程在很多地方与进程相似。线程和进程都有ID、寄存器组、状态以及优先权。它们与之关联的信息块,称做线程块(thread block)和进程信息块(process information block)。线程和子进程共享父进程的资源。进程打开的资源,线程和父进程的子进程可以立即访问。不需要额外的初始化或准备。创建后,线程和进程是与父或创建者独立的实体。父和子进程、线程和创建者一起竞争使用处理器。进程的创建者或线程对它的创建施加一些控制。创建者可以销毁、挂起、回复和更改进程或线程的优先权。线程和进程可以改变自己的属性和创建新的资源。他们不能访问其他进程资源,或其他进程的线程的资源。

线程与进程的不同之处

尽管线程与进程有许多地方相似,但在许多重要的地方,两者却不相同。因为线程为轻量级进程,所以线程与进程的主要不同之处为:线程没有自己的地址空间(adress space)。如果进程创建多个线程,所有的线程都将包含在它的地址空间中。这就是为什么它们如此容易共享资源,以及为什么可以访问进程内存的原因。进程有自己的地址空间。子进程只有数据片段的拷贝。对变量的修改不会影响父进程的数据。为了让父进程和子进程共享内存,必须创建一个共享内存区域。父和子进程必须使用进程间通信机制(如管道)在两者间通信和传递数据。

通过读取和写入进程变量,统一进程的线程可以传递和使用它们处理的数据。

对其他进程的控制限制于父—子关系。子进程对两者之间无控制。进程内的线程被看作同位体,而且处于相等的级别。不管是哪一个线程创建可哪一个线程,进程内的任何线程可以销毁、挂起、恢复或更改其他线程的优先权。线程也要对整个进程施加控制。进程内的任何线程可以通过销毁主线程来销毁该进程。

销毁主线程将导致该进程的所有线程销毁。对主线程的修改可能影响进程的所有线程。对进程优先权的更改将改变进程内继承了优先权但没有作修改的所有线程的优先权。下面总结了线程与进程间的相似与不同之处。

进程与线程的相似之处:

进程与线程都有ID、寄存器组、状态以及优先权。

进程与线程都有信息块。

进程与线程都与父进程共享资源。

进程与线程在创建后都是独立的实体。

进程与线程创建者对它们施加控制。

进程与线程都可以在创建后更改属性,创建新的资源。

进程与线程都不能直接访问其他无关进程或线程的资源。

进程与线程的不同之处:

进程有一个地址空间;线程没有地址空间。

父和子进程必须使用进程间通信机制,同一进程的线程通过读取和写入数据到进程变量来通信。

子进程对任何其他子进程不施加控制。进程的线程被看作同位体,并对进程的其他线程施加控制。

子进程不能对父进程施加控制。进程的所有线程都可以对主线程施加控制,并因此影响到整个进程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: