论文部分内容阅读
传统超标量处理器在典型程序指令流中不能发掘出更多的并行性,阻碍了单核处理器性能的提升。多核处理器成为继续提升系统性能的一种新技术途径,为构建高性能处理器提供了良好的硬件基础。为充分发挥多核处理器的高性能优势,需要设计更好的操作系统策略与之匹配,这就给操作系统的设计者提出了新的技术挑战。内存管理作为操作系统的重要组成部分,对构建高性能多核操作系统起着至关重要的作用。在Linux操作系统中,其内核代码是开放的,使内核数据结构及算法的改进成为可能,为多核处理器内存管理的研究提供了一个良好实验平台。Linux操作系统内存管理主要采用分页式管理方式,其典型算法为Buddy算法和SLAB算法。但是,在Buddy算法中由于某些连续内存块不能满足伙伴块的要求,导致内存中出现了许多较大的不能进行合并的连续内存块,降低了内存利用率。基于Buddy算法的不足,本文提出了一种部分延迟放宽合并算法,通过将连续的内存块进行合并,为内存分配提供了充足的空间,减少了系统中的内存碎片,提高了多核处理器内存利用率;同时,在原伙伴的基础上,通过将空闲链表分为伙伴忙空闲链表和伙伴闲空闲链表,延迟了伙伴块的合并时间,减少了内存的分裂与合并频率,提高了系统的运行时间。SLAB算法通过将频繁分配释放的对象缓存起来提高了内存系统的空间和时间性能,但是该算法对缓冲区内存的回收比较复杂。本文在原有SLAB算法的基础上引入了本地SLAB队列,通过本地SLAB队列和半满SLAB队列的使用,减少了自旋锁的使用,降低了核间共享内存的争用,提高了多核处理器内存访问的速度。为验证算法的可行性、高效性,本文在Linux系统中采用SimOS模拟器搭建了实验平台,在实验平台上使用不同的内存管理算法进行了测试。测试结果表明:新算法减少了内存碎片的产生,提高了多核处理器系统的并行性。