第三章 分布式进程管理
1.进程和线程的比较
进程定义为执行中的程序。未引入线程前是资源分配单位(存储器、文件)和CPU调度单位(分配)单位。引入线程后,线程为CPU调度单位,而进程只作为其他资源分配单位。
线程是CPU调度单位,拥有线程状态、寄存器上下文和栈这些资源,同线程一样也有就绪、阻塞和执行三种状态。
(1)对于地址空间和其他资源来说,进程间是相互独立的,同一进程的各线程共享该进程地址空间和其他资源(某进程内的线程在其它进程内不可见)
(2)在通信上,进程间通信通过IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信–需要进程同步和互斥手段的辅助,以保证数据的一致性。
(3)在调度上,线程上下文切换比进程上下文切换要快得多。线程是CPU调度单位,而进程只作为其他资源分配单位。线程的创建时间比进程短;线程的终止时间比进程短;同进程内线程切换时间比进程短。
因此,多线程能提高性能;线程不像进程间那样会彼此隔离,并受到系统自动提供的保护,因此多线程应用程序开发需要付出更多努力。
2.多线程服务器的优点?
多线程技术不仅能够显著地简化服务器代码,还能够使得应用并行技术来开发高性能的服务器变得更加容易,即使在单处理器上也是如此。多线程能够保留顺序处理的思路,使用阻塞性系统调用,仍然能到达并行处理的目的。使用阻塞系统调用使编程更容易,并行处理能提高系统的性能。
3.代码迁移的动机有哪些?