使用锁定机制的高效任务调度的制作方法

文档序号:9635140阅读:224来源:国知局
使用锁定机制的高效任务调度的制作方法
【技术领域】
[0001] 本发明一般地涉及计算系统,更具体地说,涉及用于针对在计算环境中的多个线 程之间需要锁的并行操作,使用锁定机制进行高效任务调度的系统和方法。
【背景技术】
[0002] 在当今社会中,计算机系统普遍存在。可以在工作场所、家里或学校中发现计算机 系统。计算机系统可以包括数据存储系统或盘存储系统,以便处理和存储数据。考虑到当 今社会中对计算机的依赖性持续增加,计算机技术必须在许多方面都有所发展以便跟上增 加的需求。重要研究和开发工作的一个特定主题是并行性,即,多个任务的并行执行。
[0003] 已开发多种计算机软件和硬件技术以促进增加的并行处理。从软件角度来看,已 开发多线程操作系统和内核,这允许在多个"线程"中同时执行计算机程序,以使得可以基 本同时执行多个任务。线程通常表示程序的独立执行路径。例如,对于电子商务计算机应 用,可能将不同线程分配给不同客户,以使得在单独的线程中处理每个客户的特定电子商 务交易。从硬件角度来看,计算机越来越依赖多个微处理器来提供增加的工作负载能力。此 外,已开发某些微处理器,它们支持并行执行多个线程的能力,从而有效地提供可通过使用 多个微处理器获得的许多相同性能增益。

【发明内容】

[0004] 在一个实施例中,提供一种用于在计算环境中通过至少一个处理器设备使用锁定 机制进行高效任务调度的方法。在一个实施例中,仅作为举例,如果针对所述锁定机制自旋 的任务的数量小于在多个线程之间需要锁的并行操作的预定阈值,则允许新任务针对所述 锁定机制自旋。
[0005] 在另一个实施例中,提供一种用于在计算环境中通过至少一个处理器设备使用锁 定机制进行高效任务调度的计算机系统。所述计算机系统包括计算机可读介质和处理器, 所述处理器可操作以与所述计算机可读介质通信。在一个实施例中,仅作为举例,如果针对 所述锁定机制自旋的任务的数量小于在多个线程之间需要锁的并行操作的预定阈值,则所 述处理器允许新任务针对所述锁定机制自旋。
[0006] 在另一实施例中,提供一种用于在计算环境中通过至少一个处理器设备使用锁定 机制进行高效任务调度的计算机程序产品。所述计算机可读存储介质具有存储在其上的计 算机可读程序代码部分。所述计算机可读程序代码部分包括第一可执行部分,其在针对所 述锁定机制自旋的任务的数量小于在多个线程之间需要锁的并行操作的预定阈值的情况 下,允许新任务针对所述锁定机制自旋。
[0007] 除了上述示例性方法实施例之外,还提供其它示例性系统和计算机产品实施例并 且提供相关优点。已提供上述概要以便以简化形式引入概念的选择,下面在"具体实施方 式"中进一步描述这些概念。此"
【发明内容】
"并非旨在标识所要求保护的主题的关键特性或 基本特性,也并非旨在用于帮助确定所要求保护的主题的范围。所要求保护的主题并不限 于解决"【背景技术】"中描述的任何或全部缺点的实施方式。
【附图说明】
[0008] 为了容易地理解本发明的优点,将通过参考在附图中示出的特定实施例给出上面 简要描述的本发明的更具体的说明。要理解,这些附图仅示出本发明的典型实施例,并且因 此不被视为其范围的限制,将通过使用附图以额外特殊性和细节描述和解释本发明,这些 附图是:
[0009] 图1是示出其中可以实现本发明的各个方面的具有实例存储设备的计算系统环 境的框图;
[0010] 图2是示出根据本发明的其中可以实现本发明的各个方面的计算机系统中的数 据存储系统的示例性硬件结构的框图;
[0011] 图3是示出其中可以实现本发明的各个方面的用于使用锁定机制进行高效任务 调度的示例性方法的流程图;以及
[0012] 图4是示出其中可以实现本发明的各个方面的用于使用锁定机制进行高效任务 调度的其它示例性方法的流程图。
【具体实施方式】
[0013] 在一个实施例中,多处理计算机系统中的架构是分布式共享存储器架构。分布式 共享存储器架构包括多个节点,处理器和存储器位于这些节点中。多个节点经由耦合在其 间的网络通信。当被视为一个整体时,包括在多个节点中的存储器形成计算机系统的共享 存储器。可以使用目录标识哪些节点已缓存对应于特定地址的数据的副本。可以经由检查 目录生成一致性活动。在一个实施例中,分布式共享存储器系统是可伸缩的,从而克服与共 享总线架构关联的各种限制。因为许多处理器访问都在一个节点中完成,所以与共享总线 架构为了获得可比较性能而必须针对其共享总线提供的带宽要求相比,节点通常针对网络 具有低得多的带宽要求。节点可以在高时钟频率和带宽下操作,从而在需要时访问网络。可 以向网络添加其它节点而不影响节点的本地带宽。借助逻辑分区,共享资源(被称为"系统 管理程序"或分区管理器)管理逻辑分区并促进将资源分配给不同逻辑分区。例如,分区管 理器可以将诸如处理器、工作站适配器、存储设备、存储空间、网络适配器之类的资源分配 给各分区,以便支持每个逻辑分区以与单独物理计算机基本相同的方式进行相对独立的操 作。
[0014] 此外,在一个实施例中,大型数据库和因特网交易应用需要并行服务器,这些服 务器能够在具有二十到一百个处理器或更多处理器的机器上运行。此外,在一个实施例 中,以某种方式的并行编程可以涉及使用最低级别的锁定。锁是提供互相排斥的基元 (primitive),它们允许数据结构保持处于一致状态。在一个实施例中,如果没有锁定机制, 则执行的多个线程可能同时修改数据结构。如果没有深思熟虑并且通常复杂的无锁算法, 则结果通常是崩溃或挂起,因为进入非预期程序状态。因为无锁算法的创建极其困难,所以 大多数程序都使用锁。如果更新数据结构缓慢,则选择的锁是某种类型的互斥(例如,互相 排斥)。当这些线程阻塞时,它们将控制转移到操作系统。这允许当第一个线程休眠时,另 一个线程运行并且可能取得进展。这种控制转移包括一对上下文切换,它们是相当缓慢的 操作。因此,如果锁持有时间预计很短,则这可能不是最快的方法。
[0015] 在一个实施例中,自旋锁(spin-lock)操作可以用于并行操作,并且自旋锁操作 可以与软件锁关联,程序使用软件锁以便确保每次只有一个并行进程可以访问存储器的关 键区域。在一个实施例中,自旋锁可以用于互相排斥。自旋锁是这样的锁:其导致尝试获得 该锁的线程简单地在循环中等待("自旋"),同时反复检查该锁是否可用。因为线程保持活 动但未执行有用任务,所以此类锁的使用是一种忙等待。在获得之后,自旋锁可以被持有到 它们被显式释放,然而在某些实现中,如果正在等待(持有锁)的线程阻塞或"转到休眠", 则自旋锁可以被自动释放。
[0016] 在一个实施例中,自旋锁(例如,信号量(semaphore))可以被实现为变量或令牌, 该变量或令牌与指向数据结构的共享指针关联,并且可由多个线程读取以便判定指针当前 是否由线程之一使用。每当线程读取指示没有其它线程当前正在使用指针的信号量时,该 线程能够将信号量设置为一个值,该值向所有其它线程指示指针当前在使用中(被称为 "获得"信号量的过程)。因此,当另一个线程希望访问数据结构,但检测到信号量由另外一 个线程持有时,需要该线程一直等待,直到另外一个线程释放信号量以便指示其它线程可 再次访问指针(并且因此访问数据结构)。在一个实施例中,在任何给定时间仅允许一个线 程持有信号量。
[0017] 此外,在一个实施例中,自旋锁将"自旋"并且反复检查以便查看锁是否被解锁,而 不是上下文切换。自旋非常快速,因此解锁-锁定对之间的延迟很小。但是,自旋不完成任 何工作,因此如果花费的时间变得很多,则可能不如休眠互斥高效。因此,本发明提供一种 解决方案,其1)通过在始终自旋的同时减少CPU周期的浪费,提高计算效率,并且2)如果 任务不能立即获得锁,则允许任务避免转到休眠并且始终重新分派任务。
[0018] 因此,本发明用于在计算环境中通过至少一个处理器设备使用锁定机制进行高效 任务调度。在一个实施例中,仅作为举例,如果针对锁定机制
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1