论文部分内容阅读
计算机的运行速度和程序执行效率在这几年得到了飞速的发展,一方面是由于广大硬件制造商在处理器和内存访问速度上的不断改进,另一方面则是因为操作系统体系架构的不断更新。线程从其诞生以来一直在操作系统执行速度提升方面起着非常重要的作用,从最初的单核心处理器上的模拟多线程到现在的多核心处理器上的真实多线程,线程在操作系统中的位置不断提升,已经成为了系统运行效率的一个重要考量标准。改进线程的模型,优化进程内线程管理方式成为操作系统结构研究与性能优化的发展趋势。本文从进程与线程的基本理论出发,介绍了现存的三种线程模型并分析了每种模型的内部机构和主流的实现方法,比较了它们之间的优缺点。然后对目前主流操作系统中线程库实现进行研究,先分析了Windows操作系统中进程与线程的管理方式,主要将研究重点放在其数据结构层次的分析、线程在进程地址空间内的组织以及带有抢占功能的优先级调度策略上,详细地描述了Windows系统创建进程和线程的函数运行过程。然后分析了Linux操作系统的实现机制,着重剖析了系统中进程与线程共用的数据结构“进程描述符”的内部组织结构,并描述了操作系统如何从无到有创建一个可运行进程的过程。接着联系Linux系统在线程支持方面的改进,分析了使用在该系统上的两代线程库LinuxThread和NPTL (Native POSIX Thread Library)的实现思想和对比变化。然后通过对Solaris线程库的实现分析,结合前两个操作系统研究所得,确定本文中新线程库的实现方向。在完成理论分析及设计方案后,本文对自行设计的新多对多模型线程库进行具体介绍。从线程库设计目标的确定过程出发,主要对线程库的数据结构设计POSIX兼容函数的实现、负载均衡设计和异步I/O引入几个方向做全面介绍,提供了一个可行的线程库设计流程的记录。最后通过对新线程库的性能测试,分析设计中的所得与不足,并提出了可行的后续优化方案。