
作者: 程刚
摘要: 本文主要分析多核处理器的Linux操作系统的任务调度,讨论面对多核处理器时操作系统必须解决的关键问题,并在此基础上进一步提出新的多核处理器. 基础任务调度算法.
关键字: 多核;处理器;任务

CLC编号: TP332文档标识码: A物品编号: 1007-9599(2012)18-0000-02
当前,随着计算机技术的飞速发展,多核处理器已变得越来越流行. 在这种多核架构下,如何更好地利用无核并充分探索处理器的效率已成为关键问题. 当处理器是单核时,处理器仅需要根据既定算法按顺序处理每个任务,但是当面对多核处理器时,该方法显然效率低下,从而极大地浪费了计算能力. 为此,我们必须考虑面对多核处理器时如何更好地将大量任务分配给处理器核心,以充分利用处理器并提高资源利用率.
对于单核处理器,我们已经有大量成熟的算法,例如先到先服务,循环调度等. 显然,这些算法不能满足多核的任务调度要求处理器. 任务到达时应将哪个核心分配给该任务;完成分配后是否有必要调整整个处理器的负载以实现每个内核的负载平衡;任务完成后,会有大面积的内核空闲,并且一些内核的负载太重并且大量任务被阻塞. 面对由多核处理器引起的新问题,我们必须探索新的处理器任务调度算法.

由于处理器的调度是由操作系统实现的,因此CMP系统的当前成熟操作系统是Linux,Windows和MacOS. 通过分析现有操作系统的多核任务调度,我们依次使用它. 考虑到当前Linux系统的开源,我们集中于Linux系统的分析. 当然,对于多核处理,Linux当前更为经典. Linux.
Linux系统调度多个内核时,它将为每个内核和性能创建一个活动的就绪队列,并将就绪任务分为140个优先级,其中较高的100个优先级用于实时任务,而较低的40个优先级分配给普通用户任务. 每个准备好的任务都有一个时间片. 时间片用完后,任务将转移到内核的等待就绪队列中,并重新分配时间片. 如果内核的活动就绪队列的所有任务的时间片均已完成,则内核的等待就绪队列将转换为活动就绪队列. 为了确保每个任务都能公平地使用核心. Linux处理器内核的负载平衡主要通过以下两种方式实现. 一种是从最繁忙的内核中获取任务,以在一个内核上的任务全部完成后执行,另一种是执行所有任务. 有任务时,请定期检查以下所有内核,并且是否存在不平衡情况,任务迁移就会发生.
对于Microsoft的经典Windows 7,它主要使用一种称为NUMA的技术,这是一种分布式内存访问技术. 使用该技术,处理器可以同时访问不同的存储器地址. 具体来说,为处理器的每个内核分配了本地内存地址空间,但是内核也可以访问所有物理内存. 这样,在传统的多核和集中式内存系统结构上多处理器调度,可以提高访问效率,并促进了核之间的保护.

通常,Linux充分利用了多核处理器,但是当面对复杂程序的多个任务时,不考虑让这些任务尽可能在同一内核上运行,以避免由于迁移而造成的低效率. . 从以上分析可以看出,在多核处理器上调度任务时,应尝试确保同一程序的多个任务在同一核上运行,以降低缓存未命中率,促进数据通信,并减少任务迁移次数;同时,还需要尽可能保证每个核的负载平衡,以提高处理器的利用率,提高系统性能. 因此多处理器调度,为了充分发挥多核处理器的性能,必须完美解决上述两个看似矛盾和统一的问题.
2结论
在最坏的情况下,如果程序有多个长任务,则此时将进行迁移以提高效率;如果是多个短期任务,则迁移不会导致效率降低.

基于上述调度策略,初步实验表明可以大大提高处理器的效率,但是对多核系统的研究还需要进一步思考.
参考文献:
[1](美国)洛夫,陈立军,康华译. Linux内核设计与实现(原书第3版),2011,6,1
[p] [2](美国)科门(Cormen,T.H.)等着,潘金贵等. 算法简介(原书第二版). 2006.9.1.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-186153-1.html
我红旗系列远中近距离导弹就位
个人至于那么在乎么
期待期待