进程通常被定义为一个正在运行的程序的实例,它由两个部分组成:
* 一个组成部分是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方。
* 另一个组成部分是地址空间,它包含所有可执行模块或DLL模块的代码和数据。它还包含动态内存分配的空间。如线程堆栈和堆栈分配空间。
进程是不活泼的。若要使进程完成某项操作,它必须拥有一个在它的环境中运行的线程,该线程负责执行包含在进程的地址空间中的代码。实际上,单个进程可能包含若干个线程,所有这些线程都“同时”执行进程地址空间中的代码。为此,每个线程都有它自己的一组CPU寄存器和它自己的堆栈。每个进程至少拥有一个线程,来执行进程的地址空间中的代码。如果没有线程来执行进程的地址空间中的代码,那么进程就没有存在的理由了,系统就将自动撤消该进程和它的地址空间。
若要使所有这些线程都能运行,操作系统就要为每个线程安排一定的CPU时间。它通过以一种循环方式为线程提供时间片(称为量程),从而造成一种假象,仿佛所有线程都是同时运行的一样。
当创建一个进程时,系统会自动创建它的第一个线程,称为主线程。然后,该线程可以创建其他的线程,而这些线程又能创建更多的线程。
---------------------------------------------------------------摘自 《Windows 核心编程》
进程有三大部分:代码段、数据段、PCB(进程控制段)。
操作系统正是通过PCB来管理这多个进程。在这样的系统里,进程是操作系统独立调度和分派的基本单位,又是一个可拥有资源的独立单位。
线程:系统调度和分派的基本单位。
进程和线程有如下不同:
进程可以拥有资源,线程共享进程拥有的资源
进程间的切换必须保存PCB
---------------------------------------------------------------
微软官方对进程和线程的定义:
进程:用最简洁的话来说,进程就是一个正在执行的程序,一个或多个线程在进程中运行,线程是操作系统分配CPU运算时间的最小单位。每一个进程都提供了运行一个程序所必需的资源,一个进程具有4GB的虚拟地址空间(Windows NT Server Enterprise Edition及Windows 2000 Advanced Server中低3GB虚拟地址空间供进程使用,高1GB供操作系统的内核代码使用。Windows NT/2000中低2GB供进程使用,高2GB供操作系统内核代码使用。Windows9X:0——64K只读空间用来装入Microsoft DOS信息,64K——4M装入DOS的兼容代码,4M——2GB的私有空间供进程使用,2GB——3GB的共享空间装入各种DLL代码,3GB——4GB为共享的系统内核代码空间,其中共享的2GB——4GB的空间是99%的“内存无效页错误”、“General Protect Error(GPE)”及蓝屏的罪魁祸首。),可执行代码,数据,对象句柄,环境变量,优先权以及设置最大化最小化的功能。每一个进程都从一个主线程开始执行,但可以在它所拥有的线程中创建额外的线程。一个进程的所有线程共享进程的虚拟地址空间和系统资源,一个线程的资源包括线程的机器寄存器设置,内核堆栈,线程环境变量和进程虚拟地址中的用户堆栈。
---------------------------------------------------------------
两者的区别。根据定义,进程为一个数据结构及能在其上进行的一次操作,它有两个基本特征,一个是进程是可用有资源的独立单位,第二个是进程同时又是一个可以独立调度和分派的基本单位,这两个基本属性使之能够独立运行,也能够并发运行。但是在并发运行的时候,系统还需要执行一系列操作:
1、需要创建进程,并为之分配其所必需的资源。
2、撤销进程,对资源进行回收。
3、进程切换,它需要保留当前进程的CPU环境和设置新选中进程的CPU环境,为此需要花费不少处理时间。正因为进程拥有资源,所以在并发执行进程的时候,在创建、撤销和切换种,系统需要付出较大的开销,因此,系统中设置的进程不能太多,进程切换的频率也不能过高,这就限制了并发程度的提高。为了解决这一问题,于是产生并引入了线程概念。
线程是进程中的一个实体,它的基本思想是将程序的执行和资源分开,只拥有一点必不可少的资源。一个进程可用有多个线程,但它可以和同属于同一进程的其他线程共享进程所拥有的所有的资源,同一进程中的线程之间可以并发执行。这样的话,并发程度可以获得显著的提高。线程也具有许多进程所具有的特征,因此被称为轻型进程。
---------------------------------------------------------------网上收集
posted on 2008-04-27 12:36
Mr. Michael.Q 阅读(263)
评论(0) 编辑 收藏