问答题 线程和进程有什么区别?举例说明它们分别适用的系统环境。
【正确答案】
【答案解析】进程是程序的执行过程,是竞争和分配计算机系统资源的基本单位。线程是进程中的一个程序执行单元。一个进程可以包含多个线程,进程中的程序可以由多个线程并发地执行,因此线程是进程中的并发执行机制。进程中的多个线程共享进程的地址空间和其他资源。线程和进程之间的最大区别是它们的运行、管理和通信开销。创建进程需要建立进程的地址空间,而线程不需要,因为它共享进程的地址空间。在处理机调度过程中,进程切换包括切换CPU执行现场和进程地址空间,而同一进程下的线程切换只需要切换CPU执行现场。由于共享进程的地址空间,同一进程下的线程之间可以直接进行数据交换,不需要调用操作系统的内核通信函数。
多线程并行程序适用于共享存储结构的多处理机系统(SMP),因为这类系统能够很好地支持线程对进程地址空间和资源的物理共享,而多进程并行程序适用于松散耦合的多处理机系统。 [解析] 需要了解和掌握线程、进程的基本概念以及它们之间的关系。操作系统为了支持多道程序的运行和管理,引入了进程概念和进程管理机制。为了加快应用程序的执行速度,提出了并行程序的设计思想。将一个大的应用程序或大作业分解成若干个能够并行处理的子任务,由执行主程序的进程创建多个子进程,每个子进程执行一个子任务。利用进程的并发性,使得多个子进程的I/O过程与CPU计算过程相互重叠,从而提高处理机利用率,加快应用程序的运行速度。
在多处理机系统中,为了进一步提高并行程序的运行效率。引入了线程概念和线程管理机制。线程是进程中的一个程序执行单元。线程包含CPU执行线程和执行堆栈,可以独立地执行程序。进程中的程序可以由多个线程并发地执行,进程中的多个线程共享进程的地址空间和其他资源,包括程序、数据、文件、通信端口等。正是由于线程对进程的地址空间和资源的共享,明显地减少了并行开销(包括线程创建、切换和通信),非常有利于并行程序的开发和运行。