论文部分内容阅读
在计算机技术飞快成长的今天,处理器多核技术也得到了丰富和发展,并在我们的身边影响着我们的日常生活。现在,计算机硬件的指标的日渐提升,计算机系统的复杂程度也水涨船高,所以操作系统必须努力做出及时的、有效的改善,以达到硬件资源利用率的最大化的目的,而调度系统作为操作系统中最为重要的子系统之一,它性能的表现面临着严峻的考验,选择什么样的算法,如何进行调度、在出现负载不平衡时,SMP调度系统如何做出调整,以及进行怎样的调整,才能使得软件与硬件相得益彰,这些都值得我们去深思,去探索。本文首先对课题的背景进行了研究,概述了进程并行操作的两项技术:同时多线程SMT(Simultaneous Multi-Threading)和片上多处理器CMP(Chip Multi-Processor),并对进程、线程和它们状态之间的转换进行了介绍,接着对常见的调度策略和调度算法的基本知识进行了学习,并研究了一些Linux内核中的普遍用到的数据结构和宏操作,方便进行下一步的研究工作。其次,以Linux2.6.36内核为研究对象,细致的分析了它目前所使用的调度机制,完全公平调度系统CFS和与多核相关的SMP调度系统,为了对调度系统有一个整体的认识,本文对内核中关于CFS的数据结构和重要函数进行了剖析,并对CFS的工作原理进行了研究,为下一步地研究做准备。再次,通过两条主线:Linux检查系统中负载情况的时机,和针对出现负载不平衡时做出调整的策略,本文对Linux kernel中SMP的实现进行了解析,并概括了SMP的工作流程,并根据SMP的分析对已有调度系统的模型进行了改进。最后,利用调度模型和对调度原理的分析,本文提出了一个针对SMP调度系统的基于唤醒信号的优化方案,以便于进一步的提升高速缓存的利用率。在原有的内核基础上,借助FUTEX锁机制,对优化方案进行了设计,对并Linux的相关源码进行了修改,对优化方案进行了实现,然后对使用了优化方案的内核系统和标准的内核系统分别进行了对比测试,并对结果进行了验证和分析。