首页> 中国专利> 允许用户方式处理在特许执行方式下操作的方法和装置

允许用户方式处理在特许执行方式下操作的方法和装置

摘要

公开了一种允许用户方式处理在特许执行方式下进行操作的方法。申请人的方法提供了一种包括特许执行方式和非特许执行方式的操作系统、以及多个在非特许执行方式下操作的用户方式串。计算设备接收来自第一用户方式串的在特许执行方式下进行操作以执行一个或多个指定任务的请求。申请人的方法授权第一用户方式串在特许执行方式下进行操作,并且第一用户方式串使用特许执行方式执行上述一个或多个指定任务。申请人的方法继续允许第一用户方式串在完成上述一个或多个指定任务之后在特许执行方式下进行操作。

著录项

  • 公开/公告号CN1713141A

    专利类型发明专利

  • 公开/公告日2005-12-28

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN200510068480.6

  • 发明设计人 斯蒂芬·L.·布里尼克;许宇程;

    申请日2005-04-28

  • 分类号G06F9/44;

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人吴丽丽

  • 地址 美国纽约

  • 入库时间 2023-12-17 16:46:38

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-06-22

    未缴年费专利权终止 IPC(主分类):G06F9/44 授权公告日:20080820 终止日期:20150428 申请日:20050428

    专利权的终止

  • 2008-08-20

    授权

    授权

  • 2006-02-22

    实质审查的生效

    实质审查的生效

  • 2005-12-28

    公开

    公开

说明书

技术领域

本发明涉及一种允许用户方式串、即用户方式处理、在特许执行模式下进行操作的方法和装置。

背景技术

计算机处理器和相关操作系统具有两种不同级别的资源和保护是经常的。一种级别称为非特许方式或用户方式,由各种操作系统组成部分、应用程序及其他所谓的“用户”处理或程序使用。在这一级别,操作系统和计算机处理器阻止执行线程执行某些安全性重要的操作。此外还阻止线程直接访问许多系统资源。非特许执行方式的目的是尽可能地隔离用户处理以便使它不会受到其他用户处理或操作系统功能的干扰。

用户方式驱动程序在其中执行包括受保护的子系统代码的其他应用程序代码的非特许处理器方式下运行。用户方式驱动程序除了通过进行系统调用(syscall)外不能访问系统数据,其中系统调用随后会调用系统服务。虽然用户处理自身可能崩溃,但是它应当不能使其他程序或操作系统崩溃。

另一执行级别称为特许方式、系统方式或内核方式。重要的操作系统组成部分在内核方式下实现。内核方式组成部分负责如虚拟内存管理、对中断和异常作出响应、调度执行线程、使多处理器的动作同步及其他重要或敏感功能之类的事情。这种从系统方式中执行的组成部分通常被统称为“内核”。

内核方式驱动程序运行作为操作系统的支持一个或多个受保护的子系统的可执行基础操作系统组成部分的一部分。用户方式和内核方式驱动程序具有不同的结构、不同的入口点和不同的系统接口。一台设备要求用户方式还是内核方式驱动程序取决于设备的类型和已经在操作系统中为它提供的支持。某些设备驱动程序能够完全或部分地在用户方式下运行。用户方式驱动程序具有无限的堆栈空间,可以访问一个或多个API,并且更容易调试。

大部分设备驱动程序在内核方式下运行。内核方式驱动程序能够执行某些受到保护的操作,并且能够访问用户方式驱动程序不能访问的系统结构。然而,增加的访问使得调试更加困难,并且造成系统恶化的可能性更大。当代码在特许内核方式环境下运行时,操作系统故意地对数据完整性和请求有效性执行较少的检查。

发明内容

申请人的发明包括一种允许用户方式处理在特许执行方式下进行操作的方法。申请人的方法提供了一种计算设备、一种包括特许执行方式和非特许执行方式的操作系统、以及多个在非特许执行方式下操作的用户方式串。

计算设备接收来自第一用户方式串的在特许执行方式下进行操作以执行一个或多个指定任务的请求。申请人的方法授权第一用户方式串在特许执行方式下进行操作,并且第一用户方式串使用特许执行方式执行上述一个或多个指定任务。申请人的方法继续允许第一用户方式串在完成上述一个或多个指定任务之后在特许执行方式下进行操作。

附图说明

通过阅读以下结合附图给出的详细说明,将会更好地理解本发明,在附图中类似的参考标识符用来表示类似的单元,并且其中:

图1是显示了申请人的信息存储和检索系统的一个实施例的方框图;

图2是概括了申请人的方法的步骤的流程图;

图3是显示了在用户方式操作系统组成部分和内核方式操作系统组成部分之间的关系的方框图。

具体实施方式

参见例图,类似的数字对应于图中描绘的类似部件。本发明将被描述为实现在一个包括两个或更多群集的信息存储和检索系统中,其中那些群集中的每一个都包括一个或多个处理器、一个或多个数据高速缓存、以及一个或多个非易失性存储设备。然而,对申请人的方法的下列描述并不意味着把申请人的发明限制到通常的数据处理系统或者包括多个群集的数据处理系统,这是因为本发明在此能够被应用于授权在计算设备中设置的操作系统中设置的串在特许执行方式下进行操作。

在图1所示的实施例中,申请人的信息存储和检索系统100包括第一群集101A和第二群集101B。每个群集分别包括一个处理器部分130/140和一个输入/输出部分160/170。每个群集中的内部PCI总线分别经由处理器部分130/140和设备I/O部分160/170之间的远程I/O电桥155/165进行连接。

信息存储和检索系统100进一步包括多个设置在四个主机架(host bays)101、106、111和116中的主机适配器102-105、107-110、112-115、和117-120。每个主机适配器可以包括一个或多个光纤信道端口、一个或多个FICON端口、一个或多个ESCON端口、或者一个或多个SCSI端口。每个主机适配器通过一条或多条公共平台互连总线121连接到两个群集,从而使每个群集能够处理来自任一主机适配器的I/O。

处理器部分130包括微代码131、处理器132、高速缓存134和操作系统135。在某些实施例中,处理器部分130进一步包括存储器133。在某些实施例中,存储器设备133包括随机存取存储器。在某些实施例中,存储器设备133包括非易失性存储器。

处理器部分140包括微代码141、处理器142、高速缓存144和操作系统145。在某些实施例中,处理器部分140进一步包括存储器143。在某些实施例中,存储器设备143包括随机存取存储器。在某些实施例中,存储器设备143包括非易失性存储器。

I/O部分160包括非易失性存储器(“NVS”)162和NVS电池164。I/O部分170包括NVS 172和NVS电池174。

I/O部分160进一步包括多个设备适配器,诸如设备适配器165、166、167和168,并且包括组织成两个阵列、即阵列“A”和阵列“B”的16个盘驱动器。图1所示的实施例显示了两个磁盘阵列。在其他实施例中,申请人的信息存储和检索系统包括大于两个的硬盘阵列。每个驱动器阵列对于主计算机来说看来像是一个或多个逻辑驱动器。

在某些实施例中,阵列“A”和“B”利用RAID协议。在某些实施例中,阵列“A”和“B”包括其中阵列不是依照RAID进行配置的并且有时被称作JBOD阵列、即“Just a Bunch Of Dish(仅仅是一串盘)”的阵列。如本领域技术人员将会理解的那样,RAID(独立盘冗余阵列,Redundant Array of Independent Disks)排列包括按盘驱动器阵列配置的独立的盘驱动器,以获得优于单个大驱动器的性能、容量和可靠性。

在图1所示的实施例中,磁盘阵列“A”包括盘驱动器181、182、183、191、192、193和194。磁盘阵列“B”包括盘驱动器185、186、187、188、196、197和198。

为了使信息存储和检索系统的微代码,例如微代码131(图1),访问硬件和直接管理数据结构与高速缓存,在执行那个微代码时需要特许执行方式访问。为了将系统的微代码编译为在Linux下运行的用户方式二进制应用程序,申请人已经修改了Linux内核的PowerPC分支,以允许具有根许可(UID 0)的用户方式应用程序利用处理器、诸如处理器132(图1)在特许执行方式下执行。

下面参见图2,在步骤210,申请人的方法提供了一种计算设备,它包括处理器、多个用户串、以及包括特许执行方式和非特许执行方式的操作系统。在某些实施例中,步骤210中的计算设备包括信息存储和检索系统、例如系统100。

在步骤220,多个用户串中的一个、即第一用户方式串请求在特许执行方式下进行操作以执行一个或多个指定任务。例如,用户串可以请求在特许执行方式下进行操作以在不允许系统中断时执行微代码。在某些实施例中,步骤220中的请求包括允许请求用户串在“priv_usermode”、即特许执行方式下进行操作的请求。

在某些实施例中,步骤220中的请求通过一个最优先的系统调用激活。在其他实施例中,申请人的“priv_usermode”机制通过一个设备驱动器接口激活。在某些实施例中,具有根级别访问的处理能够经由proc文件、例如“/proc/user_privmode”、设置/查询“user_privmode”状态。

在某些实施例中,申请人的方法从步骤220转到步骤250。在其他实施例中,申请人的方法从步骤220转到步骤230,在其中申请人的方法确定请求串是否被授权使用特许执行方式。在某些实施例中,系统的微代码、例如微代码131、包括一个查找表,它指示哪些用户方式串被授权在特许执行方式下进行操作。在某些实施例中,被授权在特许执行方式下操作的用户方式串包括一个这样指示的标志。

如果在步骤230中申请人的方法确定为请求串不被允许在特许执行方式下进行操作,则该方法从步骤230转到步骤240,在步骤240中该方法拒绝步骤220中的在特许执行方式下进行操作的请求。或者,如果在步骤230中申请人的方法确定为请求串被允许在特许执行方式下进行操作,则该方法从步骤230转到步骤250,在步骤250中该方法授权请求串在特许执行方式下进行操作。

在某些实施例中,请求用户串使用‘echo“1”>/proc/user_privmode’函数激活user_privmode机制。在处理向proc文件中的写入时,user_privmode内核模块修改位于processsestask_struct中的一个标志。这个标志最初被设置为0,以指示user_privmode机制未被激活。调用函数“current-is_priv_user”会将该标志设置为1。在把这个标志设置为1之后,该标志能够由返回到用户状态的内核异常代码进行检查。在某些实施例中,在把这个标志设置为1之后,该标志能够由用于设置监控位(supervisor bit)的内核异常/ret_to_user代码进行检查。

在步骤260,甚至在请求串已经完成步骤220中的一个或多个指定任务之后,申请人的方法继续允许步骤220中的请求串在特许执行方式下进行操作。在某些实施例中,直到计算设备、诸如信息存储和检索系统100被关闭时才撤销对请求串在特许执行方式下进行操作的授权。

在申请人的装置和方法的某些实施例中,申请人的计算设备、例如系统100、利用一个操作系统、例如操作系统135(图1)和/或145(图1)。在某些实施例中,该操作系统包括Linux的修改。如本领域技术人员将会认识到的那样,Linux是一种最初由Linus Torvalds在全世界开发者的帮助下创建的自由Unix型操作系统。在GNU公众许可下开发,用于Linux的源编码可自由地获得。

如本领域技术人员将进一步认识到的那样,并且下面参见图3,Linux包括多个在非特许执行方式下操作的操作系统组成部分,包括组成部分310。操作系统用户方式组成部分310包括例如各种用户方式串。操作系统用户方式组成部分310与多个应用程序、例如应用程序340、应用程序350、应用程序360等进行接口。

包括用户方式串的在非特许执行方式下操作的多个操作系统组成部分与包括内核方式串的在特许执行方式下操作的多个操作系统组成部分320进行通信。内核方式操作系统组成部分320尤其与一个或多个系统硬件设备330进行通信。如本领域技术人员将会认识到的那样,多个操作系统内核方式组成部分320有时被统称为“内核”。

PowerPC linux内核使用MSR寄存器中的MSP_PR位以确定被中断的处理是否正在内核或用户方式空间中执行。因此,如果用户方式处理在MSP_PR打开时执行,则内核可能不正确地假定代码实际上在内核中。为了避免这个问题,申请人的user_privmode代码在到内核的入口上执行,并且将会在内核代码返回到用户空间时执行。此时,检查隐藏在task_struct中的额外变量,并且必要时在任一内核代码检查正在执行的代码包括用户代码还是内核代码之前从SRR1、即用户上下文MSR中删除MSR_PR位。将额外变量添加到task_struct中,并且保存在8KB内核堆栈的末端。

表1描述了申请人的操作系统在linux/sched.h中包括的某些修改。

                            表1

u32 is_priv_user/*该处理是否被允许是priv_user*/u32 priv_user_mode/*该处理当前是否为priv_user*//*priv_user=在监控方式打开时运行的用户方式代码*/

在到Linux内核中的任一入口上执行的代码位于包括在每个PowerPC异常之前的宏EXCEPTION_PROLOG中。表2描述了申请人的操作系统在linux/arc/ppc/kernel/head.S中包括的某些修改。

                             表2

mfsprr 21,SPRG3;/*task_struct中的Grab phys addr*/lwz r20,IS PRIV USER OFFSET(r21)cmpwi 0,r20,0;beq lf;/*如果priv_user_mode没有打开,则跳过*/mfspr SRR1,r20;andi r20,r20(~MSR_PR);/*从被中断的处理MSR中删除MSR_PR位*/mtspr SRR1,r201:

表3描述了对linux/arch/ppc/kernel/entry/S的修改,其中其代码在从Linux内核异常处理程序返回到用户方式时执行。

                                 表3

mfspr r21,SPRG3/*task_struct中的Grab phys addr*/lwz r20,IS_PRIV_USER_OFFSET(r21)cmpwi 0.r20,0beq lf/*如果priv user mode没有打开,则跳过*/mfspr SRR1,r20ori r20,r20 MSR_PR/*打开在用户处理中的MSR_PR以使它具有特lir20,1stw r20,IS_PRIV_MODE_OFFSET(r21)/*标记这个处理是具有priv的用户方式*/mtspr SPR1,r201:

在某些实施例中,可以将图2中描述的各个步骤进行组合、删除或者重新排序。

在某些实施例中,申请人的发明包括驻留在存储器133(图1)中的指令,其中那些指令由处理器132(图1)执行以执行图2中描述的步骤220、230、240、250和260,其中步骤220包括接收来自用户方式串的请求。在其他实施例中,申请人的发明包括驻留在任何其他计算机程序产品中的指令,其中那些指令由系统100之外的或者在系统100内部的计算机执行以执行图2中描述的步骤220、230、240、250和260,其中步骤220包括接收来自用户方式串的请求。不论是哪种情况,上述指令都可以被编码在一个信息存储媒体、包括例如磁信息存储介质、光信息存储介质、电信息存储介质等中。通过“电子存储介质”,申请人是指例如诸如PROM、EPROM、EEPROM、FlashPROM、压缩闪存、灵巧介质等之类的设备。

虽然已经详细地举例说明了本发明的优选实施例,但是显然本领域技术人员可以在不背离下列权利要求所阐述的本发明的范围的情况下对那些实施例进行修改和改进。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号