在操作系统中,进程通常被看作是系统资源的分配单位和独立运行的基本单位。一个任务就是一个进程;线程则是一个比较新的概念,它具有提高系统资源利用率、改善用户之间的通讯效率等显著的作用。因为一个进程中间可以有一个或多个线程的存在,所以可以看出两者之间具有很多的相似之处,那两者又有什么区别和作用呢?
【考题题干】请说明线程和进程有什么区别?
【试题分析】多线程是实现并发机制的一种有效手段。进程和线程一样,都是实现并发的一个基本单位。线程和进程的主要差别体现在以下2个方面。
q 同样作为基本的执行单元,线程是比进程更小的执行单位。
q 每个进程都有一段专用的内存区域。一个进程崩溃后,在保护模式下不会对其他进程产生影响,线程是进程内部单一的一个顺序控制流。与此相反,线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,线程却共享内存单元(包括代码和数据),通过共享的内存单元来实现数据交换、实时通信与必要的同步操作。
【深入学习】进程是程序的一次动态执行过程,它经历了从代码加载、执行到执行完毕的一个完整过程,这个过程也是进程本身从产生、发展到最终消亡的过程。多进程操作系统能同时运行多个进程(程序),由于CPU具备分时机制,所以每个进程都能循环获得自己的CPU时间片。由于CPU执行速度非常快,使得所有程序好象是在“同时”运行一样。使用进程最常见的例子就是一边看电影一边听音乐,两种操作同时进行。大家可以通过Windows操作系统的资源管理器来查看这些个进程,如图10.2所示,但是在这里值得注意的是,这个进程是属于操作系统的。
图10.2 进程
线程是比进程更小的能独立运行的基本单位。所谓多线程是指一个进程在执行过程中可以产生多个线程,这些线程可以同时存在、同时运行,形成多条执行线索。线程自己基本上不拥有系统资源,但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。一个进程可能包含了多个同时执行的线程。
线程在执行过程中与进程还是有区别的。进程在执行过程中拥有独立的内存单元,每个独立的进程都有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。