CN114174995A - 用于拆分存储堆栈的系统和方法 - Google Patents

用于拆分存储堆栈的系统和方法 Download PDF

Info

Publication number
CN114174995A
CN114174995A CN202080055581.2A CN202080055581A CN114174995A CN 114174995 A CN114174995 A CN 114174995A CN 202080055581 A CN202080055581 A CN 202080055581A CN 114174995 A CN114174995 A CN 114174995A
Authority
CN
China
Prior art keywords
application
service
data
access
persistent storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080055581.2A
Other languages
English (en)
Inventor
A·M·罗杰斯
B·珀斯
G·库尔特索沃
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Meta Platforms Technologies LLC
Original Assignee
Facebook Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Facebook Technologies LLC filed Critical Facebook Technologies LLC
Publication of CN114174995A publication Critical patent/CN114174995A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

在一些实施例中,方法包括启动应用程序作为操作系统的用户空间内的第一进程。应用程序将与操作系统相关联的数据存储系统实例化。方法还包括启动块设备服务作为操作系统的用户空间内的第二进程,块设备服务被配置为管理计算设备的持久性存储设备。附加地,方法包括由操作系统的内核从应用程序接收系统调用请求以与块设备服务通信,系统调用请求由应用程序使用数据存储系统生成、并且包括访问持久性存储设备的访问请求。方法还包括响应于系统调用请求,经由IPC信道,向应用程序提供对块设备服务的访问。

Description

用于拆分存储堆栈的系统和方法
技术领域
本公开整体涉及设备上的一个或多个应用程序的管理,以及对授予这些应用程序的底层设备的物理硬件的访问。
背景技术
移动计算设备(诸如智能手机、平板电脑或膝上型计算机)可以包括用于确定其位置、方向或取向的功能,诸如GPS接收器、指南针、陀螺仪或加速度计。这样的设备还可以包括用于无线通信的功能,诸如蓝牙通信、近场通信(NFC)或红外(IR)通信或者与无线局域网(WLAN)或蜂窝电话网络的通信。这样的设备还可以包括一个或多个相机、扫描仪、触摸屏、麦克风或扬声器。移动计算设备还可以执行软件应用程序,诸如游戏、web浏览器或社交网络应用程序。利用社交网络应用程序,用户可以与社交网络中的其他用户联系、交流和共享信息。
移动计算设备或者任何其他计算设备可以充当一个或多个应用程序的主机,一个或多个应用程序也被称为客户端应用程序。应用程序可以在一个或多个虚拟机上运行,一个或多个虚拟机在计算设备上操作。出于安全目的,应用程序通常被限制直接访问计算设备的底层硬件。内核可以被放置在底层硬件和应用程序之间,以帮助管理底层硬件的通信和资源分配。鉴于其功能,内核具有高级别的特权,允许它促进将设备资源分配给客户端应用程序。
发明内容
所公开的主题的目的和优点将在以下的描述中阐明。所公开的主题的其他优点将通过书面描述和权利要求以及附图中特别指出的方法和系统来实现和获得。
本发明的实施例可以包括人工现实系统或结合人工现实系统来实现。人工现实是在呈现给用户之前已以某种方式进行调整的现实形式,可以包括例如虚拟现实(VR)、增强现实(AR)、混合现实(MR)、混合式现实或其一些组合和/或衍生物。人工现实内容可以包括完全生成的内容或者与所捕获的内容(例如,真实世界的照片)结合生成的内容。人工现实内容可以包括视频、音频、触觉反馈或它们的某种组合,并且可以在单个信道或多个信道中呈现其中的任一个(诸如向观看者产生三维效果的立体视频)。附加地,在一些实施例中,人工现实可以与例如用于在人工现实中创建内容和/或用于在人工现实中使用(例如,在其中执行活动)的应用、产品、配件、服务或其某种组合相关联。提供人工现实内容的人工现实系统可以在各种平台上实现,包括与主机计算机系统连接的头戴式显示器(HMD)、独立的HMD、计算设备或计算系统或者能够向一个或多个观看者提供人工现实内容的任何其他硬件平台。
在某些实施例中,方法或系统可以被用来允许在计算设备上运行的一个或多个应用程序使用减少的资源来访问计算设备的底层硬件。例如,微内核可以被用于为客户端应用程序提供对位于内核中的磁盘驱动装置的访问。为了帮助减少微内核处理的通信量,每个客户端应用程序可以被提供有数据存储系统,数据存储系统可以在应用程序自己的进程中实例化。可以是文件系统库或密钥值存储装置的数据存储系统位于内部,这可以经过单个进程间通信(IPC)信道来帮助一个或多个客户端应用程序与也被称为持久性存储设备的计算设备的底层硬件进行交互。
当使用微内核时,某些实施例利用位于用户空间服务中的块设备服务。块设备服务可以管控提供对计算设备的底层硬件的访问的磁盘驱动装置。为了获得对计算系统的底层硬件的访问,在某些实施例中,位于一个或多个客户端应用程序中的数据存储系统可以使用IPC信道与微内核通信。微内核将接收访问请求并代表客户端应用程序与块设备服务通信来提供所请求的访问。让数据存储系统、诸如文件系统库或密钥值存储装置位于客户端应用程序中有助于减少微内核执行的处理量,以为客户端应用程序提供对底层硬件的访问。
在某些实施例中,计算设备的方法可以包括启动应用程序作为操作系统的用户空间内的第一进程。应用程序可以将与操作系统相关联的数据存储系统实例化。方法还可以包括启动块设备服务,作为操作系统的用户空间内的第二进程,块设备服务被配置为管理计算设备的持久性存储设备。附加地,方法可以包括由操作系统的内核,从应用程序接收系统调用请求,以经由IPC信道与块设备服务通信。系统调用请求可以包括访问持久性存储设备的访问请求。此外,方法可以包括响应于系统调用请求,经由IPC信道向应用程序提供对块设备服务的访问。
在一些实施例中,内核可以响应于系统调用请求而向块设备服务发送访问请求。应用程序可以基于所提供的对块设备服务的访问,在持久性存储设备的数据块上读取或写入数据。在某些实施例中,作为设置的一部分,请求可以从应用程序发送到逻辑卷服务。应用程序然后可以在计算设备的持久性存储设备处接收一个或多个数据块的分配。逻辑卷服务可以向块设备服务通知一个或多个数据块在持久性存储设备处的分配。逻辑卷服务可以将应用程序的一个或多个数据块与分配给在操作系统的用户空间内作为第三进程操作的另一应用程序的一个或多个其他数据块进行协调。因此,在某些实施例中,逻辑卷服务将数据块分配给应用程序和另一应用程序两者。换言之,应用程序和另一应用程序均可以共享逻辑卷服务分配的数据块。优选地,块设备服务足够安全,以与计算设备的硬件对接。客户端应用程序还可以向逻辑卷服务发送附加访问请求。作为响应,客户端应用程序可以在计算设备的持久性存储设备处接收一个或多个附加数据块的附加分配。
在某些实施例中,一个或多个计算机可读非暂时性存储介质体现软件,软件在被执行时可操作为启动应用程序作为操作系统的用户空间内的第一进程。应用程序可以将与操作系统相关联的数据存储系统实例化。软件还可操作用于启动块设备服务作为操作系统的用户空间内的第二进程,块设备服务被配置为管理计算设备的持久性存储设备。附加地,软件可操作用于通过操作系统的内核接收应用程序经由IPC信道与块设备服务通信的系统调用请求,系统调用请求包括访问持久性存储设备的访问请求。此外,软件可操作用于响应于系统调用请求,经由IPC信道向应用程序提供对块设备服务的访问。
在某些实施例中,系统包括一个或多个处理器,以及与一个或多个处理器耦合的一个或多个计算机可读非暂时性存储介质。系统包括在由一个或多个处理器执行时可操作为使得系统启动应用程序作为操作系统的用户空间内的第一进程的指令。应用程序可以将与操作系统相关联的数据存储系统实例化。系统还可以包括在由一个或多个处理器执行时可操作为使得系统启动块设备服务作为操作系统的用户空间内的第二进程的指令,块设备服务被配置为管理计算设备的持久性存储设备。附加地,系统可以包括在由一个或多个处理器执行时可操作为使得系统通过操作系统的内核从应用程序接收系统调用请求,以经由IPC信道来与块设备服务通信的指令。系统调用请求可以包括访问持久性存储设备的访问请求。此外,系统可以包括在由一个或多个处理器执行时可操作为使得系统响应于系统调用请求,经由IPC信道向应用程序提供对块设备服务的访问的指令。
在某些实施例中,方法或系统可以被用于允许密钥值存储装置将文件存储服务或系统旁路。在这样的实施例中,密钥值存储装置可以在不必首先向文件存储服务或系统发送消息的情况下,与持久性存储设备通信。例如,密钥值存储装置可以被用于管理应用程序在持久性存储设备上的读写能力。密钥值存储装置可以在一个或多个应用程序中实例化。在一些实施例中,应用程序可以将密钥值存储装置和文件存储服务两者实例化。应用程序然后可以选择是使用密钥值存储装置还是文件存储服务来访问持久性存储设备。
在某些实施例中,计算设备的方法可以包括启动应用程序作为操作系统的用户空间内的第一进程。方法还可以包括在操作系统的内核处,经由IPC信道从密钥值存储装置接收系统调用请求。系统调用请求可以包括访问计算设备的持久性存储装置的访问请求。附加地,方法可以包括准许密钥值存储装置访问持久性存储装置。密钥值存储装置可以向应用程序提供对计算设备的持久性存储装置的访问。
在某些实施例中,一个或多个计算机可读非暂时性存储介质体现软件,软件在被执行时可操作以启动应用程序作为操作系统的用户空间内的第一进程。软件还可操作用于在操作系统的内核处,经由IPC信道从密钥值存储装置接收系统调用请求。系统调用请求可以包括访问计算设备的持久性存储装置的访问请求。附加地,软件可操作以准许密钥值存储装置对持久性存储装置的访问。密钥值存储装置可以向应用程序提供对计算设备的持久性存储装置的访问。
在某些实施例中,系统包括一个或多个处理器,以及与一个或多个处理器耦合的一个或多个计算机可读非暂时性存储介质。系统包括在由一个或多个处理器执行时可操作为使得系统启动应用程序作为操作系统的用户空间内的第一进程的指令。系统还可以包括在由一个或多个处理器执行时可操作为使得系统在操作系统的内核处经由IPC信道从密钥值存储装置接收系统调用请求的指令。系统调用请求可以包括访问计算设备的持久性存储装置的访问请求。附加地,系统可以包括在由一个或多个处理器执行时可操作为使得系统准许密钥值存储装置访问持久性存储装置的指令,其中密钥值存储装置向应用程序提供对计算设备的持久性存储装置的访问。
本文所公开的实施例仅是示例,并且本公开的范围不限于此。特定实施例可以包括本文所公开的实施例的组件、元件、特征、功能、操作或步骤的全部、一些或不包括它们。根据本发明的实施例在针对方法、存储介质、系统和计算机程序产品的所附权利要求中公开,其中在一个权利要求类别(例如方法)中提及的任何特征可以在另一权利要求类别(例如系统)中被要求保护。仅出于形式原因选择所附权利要求中的从属关系或引用。然而,不论在所附权利要求中选择的从属关系如何,也可以要求保护由有意回溯到任何先前权利要求(特别是多重从属关系)而产生的任何主题,使得权利要求及其特征的任何组合被公开并且可以被要求保护。可以要求保护的主题不仅包括所附权利要求中列出的特征的组合,还包括权利要求中的任何其他特征的组合,其中权利要求中提到的每个特征可以与任何其他特征或权利要求中其他特征的组合进行组合。此外,本文描述或描绘的任何实施例和特征可以在单独的权利要求中和/或与本文描述或描绘的任何实施例或特征或与所附权利要求的任何特征的任何组合中要求保护。
附图说明
图1图示了在计算设备上运行的客户端应用程序的示例。
图2图示了根据某些实施例在计算设备上运行的客户端应用程序的示例。
图3图示了根据某些实施例的流程图的示例。
图4图示了根据某些实施例的系统流程图的示例。
图5图示了根据某些实施例的系统流程图的示例。
图6图示了根据某些实施例的系统流程图的示例。
图7图示了根据某些实施例的流程图的示例。
图8图示了在计算设备上运行的密钥值存储装置的示例。
图9图示了在计算设备上运行的客户端应用程序的示例。
图10图示了根据某些实施例的流程图的示例。
图11图示了与社交网络系统相关联的示例网络环境。
图12图示了示例计算机设备和/或计算机系统。
具体实施方式
诸如增强现实设备的计算设备可以减少为在设备上运行的一个或多个应用程序提供对底层硬件的访问所消耗的资源量。例如,当在设备上运行的内核是微内核时,一些实施例可以代替可以作为用户空间服务进行操作的集中式文件服务器。相反,某些实施例可以采用与操作系统相关联的一个或多个应用程序,这些应用程序包括或实例化数据存储系统,诸如文件系统库或密钥值存储装置。如下所述,一个或多个应用程序内包括的数据存储系统可以帮助减少由微内核处理的通信量以及IPC信道的数量。
在一些其他实施例中,计算设备消耗的资源量也可以通过一起移除文件系统、并且取而代之的是依靠密钥值存储装置,将虚拟存储空间映射到设备的底层硬件的一个或多个存储块来减少。这样做可以允许在计算设备上操作的客户端应用程序使用密钥值存储装置来读取和写入持久性存储设备,诸如磁盘驱动装置。如下所述,密钥值存储装置可以在客户端应用程序中实例化,从而进一步减少微内核所经历的处理量。在某些实施例中,密钥值存储装置和文件系统库可以在一个或多个应用中实例化,允许应用程序选择是否将文件系统库的密钥值存储装置用于给定操作。在这样的实施例中,对应于密钥值存储装置位于文件系统库的顶部上,密钥值存储装置和文件系统库可以是对等的,位于相同的空间中,如图8所示。
内核通常是由计算设备的操作系统使用的基于软件的程序,用于将在计算设备上运行的软件应用程序连接到底层硬件。鉴于它可以访问底层硬件,内核通常以特权模式运行。在某些实施例中,内核可以是单片内核或微内核。当使用单片内核时,操作系统提供的许多或所有服务可以被包括在内核中。例如,内核可以包括数据存储系统,诸如文件系统库或密钥值存储装置、虚拟存储器的调度程序和设备驱动程序。鉴于操作系统提供的许多或所有服务被包括在单片内核中,单片内核的大小可能很大。另一方面,微内核包括用于实现操作系统的最少功能,诸如例如低复杂度的存储器管理和/或IPC信道代码。操作系统的所有其他功能可以从内核内删除,并且被重新定位为在内核外部的用户空间中作为单独服务来操作。例如,微内核可以与位于用户空间中的文件服务器和/或块设备服务(也被称为设备驱动程序服务)进行通信。一个或多个客户端应用程序可以使用IPC信道,经由微内核来与位于用户空间中的任何服务进行通信。IPC信道可以允许经由微内核在不同用户服务之间、和/或一个或多个应用程序与给定用户服务之间进行通信。
图1图示了在计算设备上运行的客户端应用程序的示例。具体地,图1图示了利用集中式文件服务器的计算设备的实施例。如图1所示,计算设备可以包括硬件140以及将硬件140连接到设备上运行的操作系统的微内核130。在一个非限制性示例中,操作系统可以在计算设备上操作的虚拟机上运行。因为图1所示的计算设备使用微内核,多个服务可以在用户空间中操作,而不是位于内核本身中。微内核可以在用户空间服务与客户端应用程序之间对接。如图1所示,三个应用程序111、112、113可以在用户空间中操作。在某些其他实施例中,任何其他数量的应用程序可以在用户空间内操作。
图1图示了在用户空间中操作的三个服务。例如,集中式文件服务器或文件主机系统121可以被用于为所有客户端应用程序提供对磁盘驱动装置的访问。在某些实施例中,文件服务器121可以是受信任的用户空间服务,其具有允许服务器控制如何在计算设备上存储和检索数据的高级别特权。文件服务器121可以帮助分离输入数据并将其存储在计算设备的存储器中。例如,当客户端应用请求访问所存储的数据时,文件服务器121可以提供指示存储数据的位置的地址。使用所提供的地址,应用程序可以从计算设备的存储器中检索所存储的数据。在一个非限制性示例中,当运行虚拟操作系统的虚拟机在计算设备上操作时,文件服务器121可以帮助将虚拟机以及在其中产生的虚拟地址引导到反映计算设备的底层存储器的底层地址。换言之,文件服务器121可以将虚拟存储空间映射到计算设备的底层硬件的一个或多个存储块。在一些实施例中,文件服务器121可以是虚拟文件服务器。
文件服务器121可以用作位于微内核外部的集中式文件系统主机服务。为了访问设备的持久性存储装置,图1中所示的应用程序111、112和113需要经由IPC信道来与集中式文件系统主机服务121通信。集中式文件系统主机服务121然后将经由另一IPC信道来与块设备服务122通信。块设备服务122(也被称为磁盘驱动服务)也可以被包括在计算设备的用户空间内。块设备服务122可以帮助管理对持久性存储设备的访问,持久性存储设备也被称为底层设备的存储器或磁盘驱动装置。为了与持久性存储设备交互,客户端应用程序可以向块设备服务122发送请求,块设备服务122然后可以准许或拒绝请求。
密钥服务123,也被称为密钥值存储装置,可以被包括作为用户空间服务。密钥服务123可以与文件服务器121一起用于为客户端应用程序提供对持久性存储设备的访问。换言之,密钥服务123可以将虚拟存储空间映射到计算设备的底层硬件的一个或多个存储块。当文件服务器121使用地址时,密钥服务123使用字典或哈希表来将密钥链接到数据在存储器中的存储位置。客户端应用程序111、112、113中的每一个可以使用IPC信道,经由微内核或者使用不通过微内核的单独信道来与密钥服务123通信。
如图1所示,两条通信被用于向客户端应用程序提供对计算设备的底层持久性存储装置的访问。例如,在图1所示的实施例中,客户端应用程序111向微内核130发送请求访问持久性存储设备的数据块的消息。消息可以采取微内核130从客户端应用程序111接收的系统调用的形式。微内核130然后可以代表客户端应用程序111向文件服务器121发送消息。客户端应用程序111和文件服务器121之间经由微内核的连接可以被认为是第一IPC信道。文件服务器121可以检索持久性存储设备中所请求数据块的地址,并且将地址转发到微内核130。微内核130然后可以将包括所检索的地址的通信发送到块设备服务122。块设备服务122然后可以向客户端应用程序111提供对所请求的计算设备的持久性存储装置(也被称为持久性存储设备)的访问。文件服务器121与块设备服务122之间经由微内核130的连接可以被认为是第二IPC信道。如图1的行中所示,客户端应用程序111、112和113中的每一个与集中式文件服务器121通信来访问块设备服务122。
如上所述,在图1中所示的计算设备中,访问持久性存储设备的数据块可能需要经由微内核使用两个不同的IPC信道—客户端应用程序与文件服务器之间的第一信道以及文件服务器和块设备服务之间的第二信道。包括两个不同IPC信道的这两条通信可能需要大量开销和主机资源,从而被转化为功耗。附加地,图1所示的计算设备要求将纯文本数据从客户端应用程序111、112、113传输到集中式文件服务器121。纯文本数据然后可以在文件服务器121中被加密并且被传输到块设备服务122。数据从客户端应用程序到文件服务器的该纯文本传输能产生允许恶意行为者访问数据的安全漏洞。
为了克服一些上述困难,在某些实施例中,诸如文件系统库或密钥值存储装置的数据存储系统可以被实例化或位于应用程序内。换言之,数据存储系统(诸如文件系统库或密钥值存储装置)可以被包括在应用程序进程中。代替使用如图1所示的集中式文件服务器121,一个或多个应用程序可以实例化与如图2所示的操作系统相关联的数据存储系统,诸如文件系统库或密钥值存储装置。图2图示了根据某些实施例在计算设备上运行的应用程序的示例。具体地,图2图示了硬件240、微内核230和块设备服务222,它们对应于硬件140、微内核130和块设备服务122。然而,与图1相比,2不具有作为用户空间服务呈现的集中式文件服务器。相反,在图2中,客户端应用程序211、212和213各自利用它们自己的文件系统库和/或与操作系统相关联的密钥值存储装置来实例化。文件库可以是虚拟文件系统客户端库。将文件系统库或密钥值存储装置放置在应用程序本身内可以允许一个或多个应用程序使用单个IPC信道来访问块设备服务222。这可以允许客户端应用程序使用单个IPC信道来请求访问持久性存储设备。
在某些实施例中,诸如客户端应用程序211、212和213的应用程序可以作为操作系统的用户空间内的第一进程启动。如图2所示,应用程序可以将与操作系统相关联的文件系统库和/或密钥值存储装置实例化。块设备服务222然后可以作为操作系统的用户空间内的第二进程启动。客户端应用程序可能希望访问位于底层持久性存储设备内的数据。客户端应用程序(诸如客户端应用程序211)可以在内部与其文件存储库通信,检索适当的存储器地址,并且将系统调用请求传输到微内核。微内核230因此从应用程序接收系统调用请求,以经由IPC信道来与块设备服务222通信。系统调用请求包括访问持久性存储设备的访问请求。响应于所接收的系统调用请求,微内核230可以将请求转发或发送到块设备服务222,并且经由IPC信道向客户端应用程序提供对块设备服务222的访问。
在某些实施例中,文件系统主机可以作为单独/中央组件被移除,并且每个文件系统库和/或密钥值存储装置可以在应用程序自己的进程内被实例化。如图2所示,这样做可以允许客户端应用程序经由单个IPC信道来与磁盘驱动装置或持久性存储设备交互。在仅使用单个IPC信道的实施例中,由主机使用的资源数量可以被减少,从而进一步减少系统开销并节省资源。IPC信道可以利用客户端应用程序的数据存储系统和块设备服务之间的共享存储器区域。
如图2的实施例中所示,诸如文件系统库和/或密钥值存储装置的数据存储系统在客户端应用程序内被实例化,可以帮助提供应用程序211、212或213与块设备服务222之间的安全通信。在如图1所示使用集中式文件服务器时,客户端应用程序111、112和113使用IPC信道,经由微内核将经解密的请求传输到文件服务器121。一旦请求在集中式文件服务器121处被接收,请求就可以被加密并且被传输到块设备服务122。在图2所示的实施例中,另一方面,其中文件系统库位于客户端应用程序211、212和213内,请求可以作为客户端应用程序进程的一部分被加密。换言之,每个客户端应用程序可以使用自己的密钥来加密自己的数据。从客户端应用程序通过IPC信道传输到块设备服务222的任何请求或消息因此可以被加密。因此,将数据存储系统(诸如文件系统库和/或密钥值存储装置)实例化在应用程序进程中不仅有助于减少系统开销和计算设备消耗的资源数量,而且有助于在客户端应用程序和块设备服务之间提供安全、经加密的通信。所传输的加密数据然后被存储在块设备222处。在一些实施例中,最初写入加密数据的客户端应用程序可能是唯一可以解密数据的客户端应用程序。
如上所述,在某些实施例中,每个客户端应用程序可以使用个性化密钥来加密其自己的数据。每个客户端应用程序的数据存储系统(诸如文件系统库)中存储的数据可以使用密钥进行加密。密钥可以在密钥服务223初始设置期间被提供给客户端应用程序。例如,如果第一客户端应用程序利用第一密钥加密其数据,则不能访问第一密钥的第二客户端应用程序能够访问数据。共享数据的两个或更多个客户端应用程序可以使用共享密钥来加密数据,每个客户端应用程序可以访问共享密钥。在一些其他实施例中,应用程序可以使用单独的IPC信道来共享数据,而不共享它们的加密密钥。
为了帮助管理位于不同客户端应用程序中的数据存储系统,可以使用逻辑卷服务221,也被称为存储服务。逻辑卷服务221可以是作为在微内核230外部运行的单独进程的用户空间服务。在某些实施例中,在设置期间,客户端应用程序可以向逻辑卷服务221发送请求。逻辑卷服务221可以帮助设置在客户端应用程序211、212或213与块设备服务222之间经由微内核230的IPC信道。换言之,当应用程序被分配表示提供给给定客户端应用程序的虚拟磁盘的一个或多个数据块时,逻辑卷服务221可以代表客户端应用程序断开IPC信道来阻止设备服务222。所分配的数据块可以与IPC信道相关联,当服务输入/输出请求时,块设备服务222可以使用IPC信道来将传入的数据块地址转换为磁盘相关的块地址。一旦客户端应用程序和块设备服务之间的IPC信道被连接,客户端应用程序就可以在无需与逻辑卷服务通信的情况下,经由块设备服务来访问持久性存储设备。
计算设备的持久性存储设备可以包括一个或多个数据块,客户端应用程序可以在一个或多个数据块上读取或写入数据。一个或多个数据块可以表示提供给一个或多个客户端应用程序的虚拟磁盘。逻辑卷服务221可以帮助将计算设备的持久性存储设备处的一个或多个数据块或资源块分配、保留或分配给一个或多个应用程序。换言之,逻辑卷服务221可以帮助对磁盘设备、磁盘驱动装置或持久性存储设备分立逻辑区域进行分区。例如,第一客户端应用程序可以被分配诸如计算设备的磁盘驱动装置的持久性存储设备的数据块1-9,第一客户端应用程序可以对数据块1-9进行读取、写入或丢弃。数据块可以是可以映射到持久性存储设备、磁盘驱动装置或磁盘设备的虚拟块。数据块1-9可以专门保留给单个客户端应用程序,也可以在多个客户端应用程序之间共享。在一些实施例中,数据块可以排他地保留给单个客户端应用程序,以在数据块上写入,而数据块可以在多个客户端应用程序之间共享来读取数据块。在一个或多个数据块被分配之后,逻辑卷服务221可以通知块设备服务222该分配。
在以上示例中,第一客户端应用程序211可以被分配磁盘驱动装置或磁盘设备的数据块1-9。在一个非限制性示例中,数据块1-9可以转换为持久性存储设备空间或磁盘空间的4-8兆位段。第二客户端212然后可以在其设置期间向逻辑卷服务221发送请求。响应于请求,逻辑卷服务221可以向第二客户端212分配数据块10-18。块设备服务222可以被通知第一客户端应用程序被分配数据块1-9并且第二客户端应用程序被分配数据块10-18。属于给定应用程序的所分配的数据块可以被视为虚拟磁盘。在某些实施例中,给定应用程序可以被允许仅读取和/或写入已分配给它们的那些数据块。
在一些实施例中,第一客户端211可能需要来自持久性存储设备的附加资源。为了获得附加资源,第一客户端211可以向逻辑卷服务221传输或发送消息,请求附加数据块。逻辑卷服务221然后可以确定是否分配附加数据块以及分配多少附加数据块。例如,当逻辑卷服务221从第一客户端211接收到对附加数据块的请求时,逻辑卷服务221可以将数据块19-27分配给第一客户端211。逻辑卷服务221可以保留它已准许的所有数据块分配记录。
在某些实施例中,块设备服务222可以负责执行数据块的分配。例如,如果第三客户端应用程序213尝试访问数据块1-9中的任一个,则块设备服务222可以拒绝第三客户端应用程序213访问,因为数据块1-9已被第一客户端应用程序211保留。如果为第一客户端211保留一个或多个数据块,则这些数据块可以为第一客户端211锁定。在另一示例中,块设备服务222可以临时准许第三客户端应用程序213访问数据块1-9中的一个或多个。
在某些实施例中,块设备服务222可以在客户端应用程序之间协商以允许访问一个或多个共享数据块。例如,逻辑卷服务221可以为第一客户端应用程序211分配数据块1-9,同时为第二客户端应用程序212分配共享块数据4-6。虽然第一客户端应用程序211可以主要拥有或使用数据块1-9,但是第二客户端应用程序212可以向块设备服务222发送请求,请求允许读取数据块5。块设备服务222可以向第一客户端应用程序211发送通知另一客户端应用程序正在寻求使用数据块5。在一些实施例中,块设备服务222可以简单地拒绝第二客户端应用程序212的请求。在另一实施例中,块设备服务222可以接受第二客户端应用程序212的请求并限制第一客户端应用程序211永久或临时的时间量。在一个非限制性示例中,在接收到由块设备服务222发送的通知时,第一客户端应用程序211可以放弃访问和/或被限制访问数据块5。
然而,在其他实施例中,块设备服务222可以通知第一客户端应用程序211它将被限制或阻止访问数据块5。第一客户端应用程序211可以被限制或阻止,直到第二客户端应用程序212读取或写入数据块5。例如,块设备服务222可以使用定时器,并通知第一客户端应用程序211它将被限制访问数据块5,直到定时器到期。在定时器失效之后,第一客户端应用程序211可以向块设备服务222发送请求来请求重新获得对数据块5的访问。块设备服务222然后可以将数据块5重新分配给第一客户端应用程序211。然而,在另一实施例中,在定时器失效时,块设备服务222可以自动准许第一客户端应用程序211访问数据块5。
块设备服务222可以在请求访问相同数据块的客户端应用程序之间进行协商。例如,块设备服务222可以确定准许对最需要访问数据块的任何客户端应用程序的访问。在做出这样的确定时,块设备服务222可以利用可以帮助块设备服务确定哪个客户端应用程序的访问请求应首先被准许的优先级方案。例如,优先级方案可以是块设备服务222将优先级给予具有在内部与块设备服务222排队的更多请求的客户端应用程序。在某些实施例中,由块设备服务222执行的协商可能需要有限的时间量。可以插入暂停来允许协商。例如,一旦访问数据块5的请求被第二客户端应用程序212接收,定时器就可以启动。在定时器到期之前,数据块5将保持对第一客户端应用程序211的访问,以允许块设备服务222进行协商。
在某些实施例中,每个数据存储系统可以具有由数据存储系统发送到块设备服务222的请求的内部缓存或队列。换言之,当客户端应用程序向块设备服务222发送访问请求时,请求可以被放入队列。任何其他访问请求可以被放置在初始请求后面的队列中。一旦给定请求被块设备服务222拒绝或准许,请求就可以从队列中移除。所发送的、接收的和/或完成的应用程序请求的队列可以被内部保存在块设备服务222和/或应用程序本身中。
图3图示了根据某些实施例的流程图的示例。具体地,图3图示了客户端进程301,其可以包括与图2所示的客户端应用程序211相对应的应用程序310。客户端进程301可以包括客户端应用程序310、密钥/值存储装置/库330和文件系统库320。在某些实施例中,密钥/值存储装置/库330和/或文件系统库320可以被包括在客户端应用程序310中。文件系统库320可以包括如上所述的缓冲缓存库340和/或逻辑卷库350。逻辑卷库350可以负责将来自卷相关逻辑块地址的输入或输出请求转换为磁盘相关物理地址。逻辑卷库350可以与块加密库360和缓冲缓存库340交互。使用在逻辑卷库350中提供的转换,客户端进程可以与块设备服务303直接通信来执行实际的磁盘输入/输出。
逻辑卷库350可以与逻辑卷服务进程302和块设备服务进程303通信,其可以分别包括逻辑卷服务221和块设备服务222。逻辑卷服务进程302可以负责管理动态可调整大小的逻辑卷或动态分区,以供文件系统和结构化存储客户端使用。块设备服务进程303可以负责与硬件块设备通信,并且将块读/写/丢弃接口暴露给上面的层。
图4图示了根据某些实施例的系统流程图的示例。具体地,图4图示了客户端请求打开文件的操作。客户端410可以对应于应用程序211、212和213。客户端410、虚拟文件系统库420、文件系统库430和逻辑卷库440可以被包括在客户端应用程序进程中,而块设备服务450可以是位于用户空间中的单独服务。
如图4所示,客户端410可以向虚拟文件系统库420发送打开文件请求。虚拟文件系统库420可以检查确定文件是否已打开。如果虚拟文件系统库420确定文件尚未打开,则虚拟文件系统库420可以尝试将路径映射到卷。卷可以是先前已分配给客户端应用程序410的一个或多个数据块。虚拟文件系统库420然后可以向文件系统库430发送打开文件请求。可以在客户端应用程序410中实例化的文件系统库430可以向逻辑卷库440传输批量读取块请求。逻辑卷库440然后可以尝试读取块缓存。如果在块缓存中没有找到文件,则逻辑卷库440可以将磁盘读取块请求传输到块设备服务450。
块设备服务450可以将卷块映射到磁盘块并且从物理介质(诸如持久性存储设备)读取块。块设备服务450然后可以将块数据传输到逻辑卷库440。如果数据被加密,则逻辑卷库440可以继续解密数据。逻辑卷库440可以利用经解密的数据更新块缓存,并且将块数据传输到文件库系统430。文件系统库430可以解析块数据,并且以文件系统节点数据结构的形式将数据传输到虚拟文件系统库420。文件上下文可以从虚拟文件系统库420传输到客户端410。
图5图示了根据某些实施例的系统流程图的示例。具体地,图5图示了客户端请求读取文件的操作。客户端510可以对应于应用程序211、212和213。客户端510、虚拟文件系统库520、文件系统库530和逻辑卷库540均可以被包括在客户端应用程序进程中,而块设备服务550可以是位于用户空间中的单独服务。如图5所示,客户端510可以向虚拟文件系统库520发送对打开文件上下文的读取请求。虚拟文件系统库520可以在文件系统节点上传输读取请求。文件系统库530然后可以尝试将文件扩展区映射到块,并且向逻辑卷库540发送块读取请求。逻辑卷库540可以尝试从块缓存复制数据。如果逻辑卷库540无法从块缓存复制数据,则逻辑卷库540可以将读取块请求传输到块设备服务550。块设备服务550可以将卷块重新映射到磁盘块,并且从物理介质读取经重新映射的块。如图5所示,块设备服务550可以将块数据传输到逻辑卷库540。如果块数据被加密,则逻辑卷库540可以解密数据。逻辑卷库540可以使用经解密的数据来更新块缓存。在更新块缓存之后,逻辑卷库540可以将文件数据传输到客户端510。
图6图示了根据某些实施例的系统流程图的示例。具体地,图6图示了客户端请求在磁盘驱动装置或磁盘设备上写入的操作。客户端610、虚拟文件系统库620、文件系统库630和逻辑卷库640均可以被包括在客户端应用程序进程中,而块设备服务650可以是位于用户空间中的单独服务。客户端610可以对应于应用程序211、212和213。客户端应用程序610可以向虚拟文件系统库620传输用于打开文件上下文的写入请求。虚拟文件系统库620可以将文件系统节点上的写入请求发送到文件系统库630。文件系统库630可以尝试将文件范围映射到块。文件系统库630可以将写入块请求传输到逻辑卷库640。逻辑卷库640然后可以尝试将数据复制到块缓存。
在某些实施例中,逻辑卷库640可以通知客户端应用程序610写入缓存是一致的。逻辑卷库640然后可以尝试加密块数据。写入块请求可以从逻辑卷库640传输到块设备服务650。块设备服务650可以将卷块重新映射到磁盘块,并且将经重新映射的块写入物理介质。块设备服务650可以通知逻辑卷库640对磁盘的块写入已完成。写入是持久的通知然后可以经由文件系统库630和虚拟文件系统库620从逻辑卷库640传输到客户端610。
图7图示了根据某些实施例的流程图的示例。具体地,图7图示了由如图2所示的运行操作系统的计算设备执行的方法的示例。在步骤710中,应用程序(也被称为客户端应用程序)可以作为操作系统的用户空间内的第一进程启动。应用程序可以将与操作系统相关联的文件系统库实例化。在步骤720中,请求可以在应用程序设置期间向逻辑卷服务发送。在步骤730中,应用程序可以在计算设备的持久性存储设备处接收一个或多个数据块的分配。逻辑卷服务可以向块设备服务通知一个或多个数据块在持久性存储设备上的分配。在某些实施例中,逻辑卷服务将应用程序的一个或多个数据块与分配给在操作系统的用户空间内作为第三进程操作的另一应用程序的一个或多个其他数据块进行协调。块设备服务可以足够安全,以与主机计算设备的硬件对接。
在步骤740处,块设备服务可以在用户空间内启动。块设备服务可以被配置为管理持久性存储设备。如步骤750所示,操作系统的内核可以接收来自应用程序的系统调用请求,以经由IPC信道来与块设备服务通信。系统调用请求可以包括访问持久性存储设备的访问请求。在步骤760中,应用程序可以响应于系统调用请求,经由IPC信道来提供对块设备服务的访问。在一些实施例中,当需要时,应用程序可以向逻辑卷服务发送附加访问请求。作为响应,应用程序可以在计算设备的持久性存储设备处接收一个或多个附加数据块的附加分配。
响应于系统调用请求,内核可以向块设备服务发送访问请求。一旦被授予访问,应用程序就可以基于所提供的对块设备服务的访问,在持久性存储设备的数据块上读取或写入数据。在一些实施例中,逻辑卷服务可以将一个或多个数据块分配给被称为应用程序和另一应用程序的两个不同应用程序。应用程序和另一应用程序可以共享一个或多个块。在一些实施例中,逻辑卷服务可以从另一客户端接收另一访问请求来访问持久性存储设备。逻辑卷服务然后可以基于持久性存储设备处的一个或多个数据块的分配来确定准许或拒绝另一访问请求。如以上关于图2所描述的,在另一应用程序写入或读取一个或多个数据块之后,持久性存储设备的一个或多个数据块可以被重新分配给应用程序。
在某些实施例中,用于计算设备(诸如增强现实设备)的操作系统可以包括堆叠在一起的持久性存储设备(被称为磁盘驱动装置或磁盘设备)、文件存储服务和密钥值存储装置。图8图示了在计算设备上运行的密钥值存储的示例。具体地,图8图示了堆叠在一起的密钥值存储数据库仓库810、文件存储服务820(也被称为文件系统服务)、磁盘驱动装置或磁盘设备830以及硬件840。密钥值存储数据库仓库810可以类似于图3中的密钥/值库330。如图8所示,密钥值存储数据库仓库810可以被堆叠在文件存储服务或系统820上,这意味着文件存储服务820充当密钥值存储数据库仓库810和磁盘驱动装置830之间的中介。文件存储服务820和磁盘驱动装置830均可以位于内核空间中。在其他实施例中,文件存储服务820和/或磁盘驱动装置830可以是用户空间服务。
以下描述的某些实施例可以帮助减少图8中所示的堆叠存储装置所使用的资源量。具体来说,由于文件系统和闪存转换层的读写放大效应,可能会产生高开销和浪费的输入/输出周期。为了帮助降低开销量并减少浪费的输入/输出周期和元数据更新的数量,一些实施例可以允许密钥值存储库将文件存储服务旁路并且与磁盘驱动装置直接通信。例如,密钥值存储数据库仓库810可以经由单个IPC信道与磁盘驱动装置830通信。鉴于密钥值存储数据库仓库810和磁盘驱动装置830之间的直接通信,在某些实施例中,文件存储服务820可以被完全去除。另一方面,在某些实施例中,各自与磁盘驱动装置830直接通信的文件存储服务820和/或密钥值存储数据库仓库810可以被客户端应用程序使用。允许密钥值存储数据库仓库810与磁盘驱动装置830通信可以帮助减少计算设备使用的资源数量。
密钥值存储数据库仓库810可以是使用数组或哈希表来存储和检索数据的数据库。数组或哈希表例如可以包括与值相关联的密钥。密钥可以是客户端分配的任意数据块,而相关联的值可以是任何形式的数据或有效载荷。与文件存储库不同,在某些密钥值存储数据库仓库中,不能执行数据的索引和/或多路复用,并且不存在目录结构。相反,密钥值存储装置可以具有与应用程序关联的密钥的可搜索索引。在一个非限制性示例中,索引中的密钥可以被绑定到应用程序标识符,应用程序标识符可以被用于搜索索引。一旦密钥被找到并且相关联的有效载荷被检索,有效载荷就可以被用于通知应用程序其已被分配的持久性存储设备的一个或多个数据块的位置。在某些实施例中,密钥值存储装置可以包括指示其在持久性存储设备中的位置的内部结构。
图9图示了在计算设备上运行的客户端应用程序的示例。具体地,图9示出了可以在客户端应用程序内实例化密钥值存储数据库的非限制性实施例。在其他实施例中,未在图9中示出,密钥值存储数据库可以是位于客户端应用程序外部的用户空间服务。应用程序911(也被称为客户端应用程序)可以包括密钥值存储数据库仓库和文件系统库。应用程序911因此可以选择是否经由密钥值存储/库和/或单独的文件系统库或任何其他数据存储系统与存储装置对接。在某些实施例中,数据块可以被分配给每个数据存储系统。例如,密钥值存储/库和文件系统库可以被分配磁盘驱动装置或磁盘设备的不同数据块。换言之,文件系统库和密钥值存储装置可以各自被分配或分发一定范围的块(可以被称为卷或分区)。分配给文件系统库和密钥值存储装置的块范围可以是不连续的。与应用程序911不同,应用程序912可以仅包括密钥值存储装置。
在某些实施例中,应用程序911和/或912可以作为操作系统的用户空间内的第一进程确定。在设置期间,应用程序911和/或912可以向逻辑卷服务921发送请求。应用程序911、912然后可以从逻辑卷服务921接收第一或第二一个或多个数据块在计算设备的持久性存储装置(诸如磁盘驱动装置)处的分配。在一些实施例中,应用程序可以将密钥值存储装置和/或与操作系统相关联的文件系统实例化。在其他实施例中,与操作系统相关联的密钥值存储装置可以是位于客户端应用程序外部的用户空间服务。
密钥值存储装置可以帮助管理分配给应用程序的一个或多个数据块。一个或多个数据块可以表示提供给给定客户端应用程序的虚拟磁盘。虚拟磁盘可以具有指示磁盘是否由文件系统和/或密钥值存储装置管理的标识符。在某些实施例中,密钥值存储装置可以将虚拟存储空间映射到分配给应用程序的磁盘驱动装置的分配部分或分区内的一个或多个数据块。这可以允许客户端应用程序在不使用文件存储系统的情况下,仅使用密钥值存储装置来读取和/或写入持久性存储装置,诸如磁盘驱动装置或磁盘设备。
在一些实施例中,操作系统的内核930可以接收由密钥值存储装置或文件系统生成的系统调用请求。系统调用请求可以包括访问计算设备的持久性存储装置的访问请求。系统调用可以经由IPC信道来接收和/或发送。在一个非限制性示例中,内核930可以是微内核。在另一非限制性示例中,内核可以是单片内核。如图9所示,IPC信道可以将密钥值存储装置连接到块设备服务922。在一些实施例中,块设备服务922、逻辑卷服务921、内核930和硬件940可以对应于块设备服务222、逻辑卷服务221、内核230和硬件240。
在某些实施例中,块设备服务922可以作为操作系统的用户空间内的第二进程启动。块设备服务可以被配置为管理计算设备的持久性存储设备。换言之,块设备服务可以被用于管理持久性存储装置分配给密钥值存储装置的一个或多个第一数据块,以及持久性存储装置分配给文件系统的一个或多个第二数据块。密钥值存储装置或文件系统可以响应于系统调用请求经由IPC信道来提供对块设备服务的访问。例如,密钥值存储装置可以被准许对一个或多个第一数据块的访问,或者文件系统可以被准许对一个或多个第二数据块的访问。一个或多个第一和第二数据块可以彼此不同,并且可以被映射到计算设备的持久性存储设备的不同部分。密钥值存储装置可以被准许访问持久性存储装置。密钥值存储装置可以为应用程序提供对计算设备的持久性存储装置的访问,持久性存储装置可以称为持久性存储设备,诸如磁盘驱动装置或磁盘设备。
如上所述,密钥值存储装置可以被分配一个或多个第一数据块。在某些实施例中,诸如磁盘驱动装置或磁盘设备的整个持久性存储设备可以被分配给密钥值存储装置。密钥值存储装置可以将磁盘驱动装置视为一个文件,密钥值存储装置的值被映射到所分配的一个或多个数据块,作为一个文件的离散分区。在一些实施例中,由密钥值存储装置管理的一个或多个数据块中的每一个的大小可以被保持较大,从而减少磁盘驱动装置的分区数量。例如,块的范围可以在64KB和1MB之间。备选地,块可以是磁盘驱动装置内的任何其他范围。这可以允许密钥值存储装置更好地管理持久性存储设备。在一个非限制性示例中,密钥值存储装置可以使用日志结构化的合并树。使用日志结构化的合并树可以允许写入大的、顺序的数据块,这有利于减少闪存写入操作,从而改进性能和闪存部件的使用寿命。
图10图示了根据某些实施例的流程图的示例。具体地,图10图示了由例如如图9所示的运行操作系统的计算设备执行的方法的示例。在步骤1010中,应用程序可以作为操作系统的用户空间内的第一进程启动。应用程序可以将与操作系统相关联的密钥值存储装置和文件系统实例化。在步骤1020中,请求可以在应用程序设置期间被发送到逻辑卷服务。在步骤1030中,应用程序可以在计算设备的持久性存储设备处接收第一一个或多个数据块针对密钥值存储装置的分配,并且在持久性存储设备处接收第二一个或多个数据块针对文件系统的分配。在步骤1040中,块设备服务可以作为操作系统的用户空间内的第二进程启动。逻辑卷服务可以向块设备服务通知一个或多个第一数据块和一个或多个第二数据块在持久性存储设备处的分配。在某些实施例中,块设备服务可以被配置为管理计算设备的持久性存储装置。响应于系统调用请求,密钥值存储装置和文件系统可以经由IPC信道来提供对一个或多个第一数据块或一个或多个第二数据块的访问。在步骤1050中,作为第二进程在操作系统的用户空间内运行的块设备服务可以管理持久性存储装置分配给密钥值存储装置的一个或多个第一数据块,以及持久性存储装置分配给第一系统的一个或多个第二数据块。
操作系统的内核可以接收如步骤1060所示的由密钥值存储装置或文件系统生成的系统调用请求。系统调用请求可以包括访问计算设备的持久性存储装置的访问请求。在一些实施例中,系统调用请求可以经由IPC信道来接收。内核可以是微内核或单片内核。在步骤1070中,块设备服务可以响应于访问请求,准许密钥值存储装置对一个或多个第一数据块的访问或者文件系统对一个或多个第二数据块的访问。第一数据块可以是第一范围的数据块,而一个或多个第二数据块可以是第二范围的数据块。密钥值然后可以被用于在持久性存储设备的一个或多个第一数据块上读取或写入数据,而文件系统可以被用于在持久性存储设备的一个或多个第二数据块上读取或写入。在一个非限制性示例中,密钥值存储装置可以使用日志结构化的合并树来管理一个或多个数据块。在一些非限制性实施例中,应用程序可以基于它想要访问、读取和/或写入的一个或多个第一或第二数据块,在密钥值存储装置或文件系统库之间进行选择或抉择。
特定实施例可以根据需要,重复图7和图10的方法的一个或多个步骤。尽管本公开描述和图示了图7和与10的方法以特定顺序发生的特定步骤,但是本公开预期图7和图10的方法以任何合适的顺序发生的任何合适的步骤。此外,尽管本公开描述和图示了根据某些实施例的用于访问物理硬件的示例方法(包括图7和图10所示的方法步骤),但是本公开根据需要,预期根据某些实施例的用于访问物理硬件的包括任何合适步骤的任何合适的方法,合适步骤可以包括图7和图10的方法的所有步骤、一些步骤或不包括任何步骤。此外,尽管本公开描述和图示了执行图7和图10的方法的特定步骤的特定组件、设备或系统,但是本公开预期用于执行图7和图10的方法的任何合适步骤的任何合适组件、设备或系统的任何合适的组合。
图11图示了与社交网络系统相关联的示例网络环境1100。具体地,网络环境1100可以包括虚拟机和虚拟硬件组件(包括虚拟驱动程序)可以在其上运行的计算设备。网络环境1100包括用户1110、客户端系统1120、社交网络系统1160和第三方系统1180,它们由网络1140经过连接1150和1170彼此连接。连接1130被用于连接网络1140和移动客户端系统1120。尽管图11图示了用户1110、客户端系统1120、社交网络系统1160、第三方系统1180和网络1140的特定布置,但是本公开预期用户1110、客户端系统1120、社交网络系统1160、第三方系统1180和网络1140的任何合适的布置。作为示例而非限制,客户端系统1120、社交网络系统1160和第三方系统1180中的两个或更多个可以将网络1140旁路而彼此直接连接。作为另一示例,客户端系统1120、社交网络系统1160和第三方系统1180中的两个或更多个可以整体或部分地彼此物理地或逻辑地位于同一位置。此外,尽管图11图示了特定数量的用户1110、客户端系统1120、社交网络系统1160、第三方系统1180和网络1140,但是本公开预期任何合适数量的用户1110、客户端系统1120、社交网络系统1160、第三方系统1180和网络1140。作为示例而非限制,网络环境1100可以包括多个用户1110、客户端系统1120、社交网络系统1160、第三方系统1180和网络1140。
在特定实施例中,用户1110可以是与社交网络系统1160交互或通信或者通过社交网络系统1160交互或通信的个人(人类用户)、实体(例如,企业、公司或第三方应用程序)或组(例如,个人或实体的组)。在特定实施例中,社交网络系统1160可以是管控在线社交网络的网络可寻址计算系统。社交网络系统1160可以生成、存储、接收和发送社交网络数据,诸如例如用户简档数据、概念简档数据、社交图信息或者与在线社交网络有关的其他合适的数据。社交网络系统1160可以由网络环境1100的其他组件直接或经由网络1140访问。在特定实施例中,社交网络系统1160可以包括授权服务器(或其他合适的组件),授权服务器例如通过设置适当的隐私设置,允许用户1110选择加入或退出,他们的动作由社交网络系统1160记录或与其他系统(例如,第三方系统1180)共享。用户的隐私设置可以确定与用户相关联的哪些信息可以被记录、与用户相关联的信息如何被记录、与用户相关联的信息何时可以被记录、谁可以记录与用户相关联的信息、与谁相关联的信息可以与用户共享以及出于什么目的可以记录或共享与用户相关联的信息。授权服务器可以被用于通过阻止、数据哈希、匿名或其他适当的技术来强制实施社交网络系统1160的用户的一个或多个隐私设置。在特定实施例中,第三方系统1180可以是可以管控使用AR或VR的游戏应用程序的网络可寻址计算系统。第三方系统1180可以生成、存储、接收和发送系统数据,例如与游戏应用程序有关的数据。第三方系统1180可以由网络环境1100的其他组件直接或经由网络1140访问。在特定实施例中,一个或多个用户1110可以使用一个或多个客户端系统1120来访问数据、将数据发送到社交网络系统1160或第三方系统1180以及从社交网络系统1160或第三方系统1180接收数据。客户端系统1120可以经由网络1140或者经由第三方系统来直接访问社交网络系统1160或第三方系统1180。作为示例而非限制,客户端系统1120可以经由社交网络系统1160来访问第三方系统1180。客户端系统1120可以是任何合适的计算设备,诸如例如个人计算机、膝上型计算机、蜂窝电话、智能手机、平板电脑或增强/虚拟现实设备。
本公开预期了任何合适的网络1140。作为示例而非限制,网络1140的一个或多个部分可以包括自组织网络、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线局域网(WLAN)、广域网(WAN)、无线广域网(WWAN)、城域网(MAN)、互联网的一部分、公共交换电话网络(PSTN)的一部分、蜂窝电话网络或其中两个或更多个的组合。网络340可以包括一个或多个网络。
链路或信道1150、1170可以将客户端系统1120、社交网络系统1160和第三方系统1180连接到通信网络1140或彼此连接。链路1130连接移动客户端系统1120和网络1140。本公开预期任何合适的链路1130、1150、1170。在特定实施例中,一个或多个链路1130、1150、1170可以包括一个或多个有线线路(诸如例如数字用户线(DSL)或有线电缆数据服务接口规范(DOCSIS))、无线(诸如例如Wi-Fi或全球微波接入互操作性(WiMAX))或光纤(诸如例如同步光学网络(SONET)或同步数字分层(SDH))链路。在特定实施例中,一个或多个链路1130、1150、1170可以各自包括自组织网络、内联网、外联网、VPN、LAN、WLAN、WAN、WWAN、MAN、互联网的一部分、PSTN的一部分、基于蜂窝技术的网络、基于卫星通信技术的网络、另一链路1130、1150、1170或者两个或更多个这样的链路1130、1150、1170的组合。链路1130、1150、1170不必在整个网络环境1130、1150、1170中相同。一个或多个第一链路1130、1150、1170可以在一个或多个方面与一个或多个第二链路1130、1150、1170不同。
图12图示了示例计算机系统1200。在特定实施例中,一个或多个计算机系统1200执行本文描述或图示的一个或多个方法的一个或多个步骤。在一些实施例中,一个或多个计算机系统1200提供在本文中描述或图示的功能。在某些实施例中,在一个或多个计算机系统1200上运行的软件执行本文描述或图示的一个或多个方法的一个或多个步骤,或者提供本文描述或图示的功能。特定实施例包括一个或多个计算机系统1200的一个或多个部分。在本文中,对计算机系统的引用可以涵盖计算设备,并且根据需要反之亦然。此外,根据需要,对计算机系统的引用可以包括一个或多个计算机系统。
本公开预期任何合适数量的计算机系统1200。本公开预期采用任何合适物理形式的计算机系统1200。作为示例而非限制,计算机系统1200可以是嵌入式计算机系统、片上系统(SOC)、单板计算机系统(SBC)(诸如例如,计算机模块(COM)或系统级模块(SOM))、台式计算机系统、膝上型计算机或笔记本计算机系统、交互式信息亭、大型机、计算机系统网格、移动电话、个人数字助理(PDA)、服务器、平板电脑系统、增强/虚拟现实设备或其中两个或更多个的组合。根据需要,计算机系统1200可以包括一个或多个计算机系统1200;是单一的或分布式的;跨越多个位置;跨越多个机器;跨越多个数据中心;或者驻留在云中,云可以包括一个或多个网络中的一个或多个云组件。根据需要,一个或多个计算机系统1200可以在没有实质空间或时间限制的情况下执行本文描述或图示的一个或多个方法的一个或多个步骤。作为示例而非限制,一个或多个计算机系统1200可以实时或以批处理模式执行本文描述或图示的一个或多个方法的一个或多个步骤。根据需要,一个或多个计算机系统1200可以在不同时间或在不同位置执行本文描述或图示的一个或多个方法的一个或多个步骤。
在特定实施例中,计算机系统1200包括处理器1202、存储器1204、存储装置1206、输入/输出(I/O)接口1208、通信接口1210和总线1212。尽管本公开描述并图示了特定计算机系统在特定布置中具有特定数量的特定组件,但是本公开预期在任何合适布置中具有任何合适数量的任何合适组件的任何合适计算机系统。
在特定实施例中,处理器1202包括用于执行指令的硬件,诸如构成计算机程序的指令。作为示例而非限制,为了执行指令,处理器1202可以从内部寄存器、内部缓存、存储器1204或存储装置1206检索(或获取)指令;解码并执行它们;并且然后将一个或多个结果写入内部寄存器、内部缓存、存储器1204或存储装置1206。在特定实施例中,处理器1202可以包括用于数据、指令或地址的一个或多个内部缓存。本公开预期处理器1202根据需要包括任何合适数量的任何合适的内部缓存。作为示例而非限制,处理器1202可以包括一个或多个指令缓存、一个或多个数据缓存以及一个或多个转换后备缓冲器(TLB)。指令缓存中的指令可以是存储器1204或存储装置1206中的指令的副本,并且指令缓存可以加速处理器1202对这些指令的检索。数据缓存中的数据可以是存储器1204或存储装置1206中针对在处理器1202上执行以进行操作的指令的数据的副本;在处理器1202处执行的先前指令由处理器1202处执行的后续指令访问或用于写入存储器1204或存储装置1206的结果;或其他合适的数据。数据缓存可加速处理器1202的读取或写入操作。TLB可以加速处理器1202的虚拟地址转换。在特定实施例中,处理器1202可以包括用于数据、指令或地址的一个或多个内部寄存器。本公开预期处理器1202根据需要包括任何合适数量的任何合适的内部寄存器。根据需要,处理器1202可以包括一个或多个算术逻辑单元(ALU);是多核处理器;或者包括一个或多个处理器1202。尽管本公开描述和图示了特定处理器,但是本公开预期任何合适的处理器。
在特定实施例中,存储器1204包括用于存储供处理器1202执行的指令或供处理器1202操作的数据的主存储器。作为示例而非限制,计算机系统1200可以将指令从存储装置1206或另一源(诸如例如另一计算机系统1200)加载到存储器1204。处理器1202然后可以将指令从存储器1204加载到内部寄存器或内部缓存。为了执行指令,处理器1202可以从内部寄存器或内部缓存中检索指令并对它们进行解码。在指令执行期间或之后,处理器1202可以将一个或多个结果(其可以是中间或最终结果)写入内部寄存器或内部缓存。处理器1202然后可以将这些结果中的一个或多个写入存储器1204。在特定实施例中,处理器1202仅执行一个或多个内部寄存器或内部缓存或存储器1204(与存储装置1206或其他位置相对)中的指令并且仅对一个或多个内部寄存器或内部缓存或存储器1204(与存储装置1206或其他位置相对)中的数据操作。一个或多个存储器总线(其可以各自包括地址总线和数据总线)可以将处理器1202耦合到存储器1204。如下所述,总线1214可以包括一个或多个存储器总线。在特定实施例中,一个或多个存储器管理单元(MMU)驻留在处理器1202与存储器1204之间,并且利于由处理器1202请求的对存储器404的访问。在特定实施例中,存储器1204包括随机存取存储器(RAM)。根据需要,RAM可以是易失性存储器。根据需要,该RAM可以是动态RAM(DRAM)或静态RAM(SRAM)。此外,根据需要,RAM可以是单端口或多端口RAM。本公开预期任何合适的RAM。根据需要,存储器1204可以包括一个或多个存储器404。尽管本公开描述和图示了特定存储器,但是本公开预期任何合适的存储器。
在特定实施例中,存储装置1206包括针对数据或指令的大容量存储装置。作为示例而非限制,存储装置1206可以包括硬盘驱动装置(HDD)、软盘驱动装置、闪存、光盘、磁光盘、磁带或通用串行总线(USB)驱动装置或其中两个或多个的组合。根据需要,存储装置406可以包括可移动或不可移动(或固定)介质。根据需要,存储装置406可以在计算机系统1200的内部或外部。在特定实施例中,存储装置1206是非易失性固态存储器。在特定实施例中,存储装置1206包括只读存储器(ROM)。根据需要,该ROM可以是经掩码编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可更改ROM(EAROM)或闪存或其中两个或更多个的组合。本公开预期采用任何合适的物理形式的大容量存储装置1206。根据需要,存储装置1206可以包括便于处理器1202与存储装置1206之间的通信的一个或多个存储控制单元。根据需要,存储装置1206可以包括一个或多个存储装置1206。尽管本公开描述和图示了特定存储装置,但是本公开预期任何合适的存储装置。
在特定实施例中,I/O接口1208包括硬件、软件或两者,为计算机系统1200和一个或多个I/O设备之间的通信提供一个或多个接口。根据需要,计算机系统1200可以包括这些I/O设备中的一个或多个。这些I/O设备中的一个或多个可以实现人与计算机系统1200之间的通信。作为示例而非限制,I/O设备可以包括键盘、小键盘、麦克风、监视器、鼠标、打印机、扫描仪、扬声器、相机、触控笔、平板电脑、触摸屏、轨迹球、摄像机、其他合适的I/O设备或其中两个或多个的组合。I/O设备可以包括一个或多个传感器。本公开预期用于它们的任何合适的I/O设备和任何合适的I/O接口1208。根据需要,I/O接口1208可以包括一个或多个设备或软件驱动程序,使得处理器1202能够驱动这些I/O设备中的一个或多个。根据需要,I/O接口1208可以包括一个或多个I/O接口408。尽管本公开描述和图示了特定的I/O接口,但是本公开预期任何合适的I/O接口。
在特定实施例中,通信接口1210包括硬件、软件或两者,为计算机系统1200与一个或多个其他计算机系统1200或一个或更多网络之间的通信(诸如例如,基于分组的通信)提供一个或多个接口。作为示例而非限制,通信接口1210可以包括用于与以太网或其他有线网络通信的网络接口控制器(NIC)或网络适配器,或者用于与网络通信的无线NIC(WNIC)或无线适配器,诸如WI-FI网络。本公开预期任何合适的网络和任何合适的通信接口1210。作为示例而非限制,计算机系统1200可以与自组织网络、个人区域网(PAN)、局域网(LAN)、广域网(WAN)、城域网(MAN)或互联网的一个或多个部分或其中两个或多个的组合进行通信。这些网络中的一个或多个的一个或多个部分可以是有线的或无线的。作为示例,计算机系统1200可以与无线PAN(WPAN)(诸如例如,BLUETOOTH WPAN)、WI-FI网络、WI-MAX网络、蜂窝电话网络(诸如例如,全球移动通信系统(GSM)网络)或其他合适的无线网络或其中两个或多个的组合进行通信。根据需要,计算机系统1200可以包括用于任何这些网络的任何合适的通信接口1210。根据需要,通信接口1210可以包括一个或多个通信接口1210。尽管本公开描述和图示了特定通信接口,但是本公开预期任何合适的通信接口。
在特定实施例中,总线1212包括将计算机系统1200的组件彼此耦合的硬件、软件或两者。作为示例而非限制,总线412可以包括加速图形端口(AGP)或其他图形总线、增强型工业标准架构(EISA)总线、前端总线(FSB)、HYPERTRANSPORT(HT)互连、工业标准架构(ISA)总线、INFINIBAND互连、低引脚数(LPC)总线、存储器总线、微通道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCIe)总线、串行高级技术附件(SATA)总线、视频电子标准协会本地(VLB)总线或其他合适的总线或其中两个或多个的组合。根据需要,总线1212可以包括一个或多个总线1212。尽管本公开描述和图示了特定总线,但本公开预期任何合适的总线或互连。
在本文中,根据需要,一个或多个计算机可读非暂时性存储介质可以包括一个或多个基于半导体的或其他集成电路(IC)(诸如例如,现场可编程门阵列(FPGA)或应用特定IC(ASIC))、硬盘驱动装置(HDD)、混合硬盘驱动装置(HHD)、光盘、光盘驱动装置(ODD)、磁光盘、磁光驱动装置、软盘、软盘驱动装置(FDD)、磁带、固态驱动装置(SSD)、RAM驱动装置、安全数字卡或驱动装置、任何其他合适的计算机可读非暂时性存储介质或者其中两个或多个的任何合适组合。根据需要,计算机可读非暂时性存储介质可以是易失性、非易失性或易失性和非易失性的组合。
在本文中,除非另有明确说明或上下文另有说明,否则“或者”是包含性而非排他性的。因此,在本文中,除非另有明确说明或上下文另有说明,否则“A或B”是指“A、B或两者”。此外,除非另有明确说明或上下文另有说明,否则“和”既是联合的又是多个的。因此,在本文中,除非另有明确说明或上下文另有说明,否则“A和B”是指“A和B,共同或分别”。
本公开的范围涵盖本领域普通技术人员将理解的对本文描述或图示的示例实施例的所有改变、替换、变化、变更和修改。本公开的范围不限于本文描述或图示的示例实施例。此外,尽管本公开将本文中的相应实施例描述和图示为包括特定组件、元件、特征、功能、操作或步骤,但是这些实施例中的任一个可以包括任何组件、元件、特征、功能、操作的任何组合或排列,或者本领域普通技术人员将理解的本文任何地方描述或图示的步骤。此外,在所附权利要求中对适用于、布置为、能够、配置为、启用、可操作或操作以执行特定功能的装置或系统或装置或系统的组件的引用涵盖装置、系统、组件,无论它或该特定功能是否被激活、导通或解锁,只要该装置、系统或组件如此适配、布置、能够、配置、启用、可操作或可操作。附加地,尽管本公开将特定实施例描述或图示为提供特定优点,但是特定实施例可以不提供、提供一些或所有这些优点。

Claims (15)

1.一种方法,包括通过在计算设备上执行的操作系统:
启动应用程序作为所述操作系统的用户空间内的第一进程,其中所述应用程序将与所述操作系统相关联的数据存储系统实例化;
启动块设备服务作为在所述操作系统的所述用户空间内的第二进程,所述块设备服务被配置为管理所述计算设备的持久性存储设备;
由所述操作系统的内核,接收系统调用请求,以经由进程间通信(IPC)信道来与所述块设备服务通信,其中所述系统调用请求由所述应用程序使用所述数据存储系统生成、并且包括访问所述持久性存储设备的访问请求;以及
响应于所述系统调用请求,为所述应用程序提供经由所述IPC信道对所述块设备服务的访问。
2.根据权利要求1所述的方法,其中所述数据存储系统是文件系统库或密钥值存储装置。
3.根据权利要求1所述的方法,还包括:
由所述内核响应于所述系统调用请求,向所述块设备服务发送所述访问请求。
4.根据权利要求1所述的方法,还包括:
基于所提供的对所述块设备服务的所述访问,在所述持久性存储设备的数据块上读取或写入数据。
5.根据权利要求1所述的方法,还包括:
在所述应用程序的设置期间,向逻辑卷服务发送请求;以及
在所述应用程序处接收一个或多个数据块在所述计算设备的所述持久性存储设备处的分配。
6.根据权利要求5所述的方法,并且以下项之一:
a)其中所述逻辑卷服务向所述块设备服务通知所述一个或多个数据块在所述持久性存储设备处的分配;或者
b)其中所述逻辑卷服务将所述应用程序的所述一个或多个数据块与分配给另一应用程序的一个或多个其他数据块进行协调,所述另一应用程序在所述操作系统的所述用户空间内作为第三进程操作;或者
c)其中所述逻辑卷服务将所述一个或多个数据块分配给所述应用程序和另一应用程序,其中所述应用程序和所述另一应用程序共享所述一个或多个数据块;在这种情况下,可选地进一步包括:
在所述另一应用程序写入或读取所述数据块之后,将所述持久性存储设备处的所述一个或多个数据块重新分配给所述应用程序。
7.根据权利要求1所述的方法,还包括:
接收由另一应用程序访问所述持久性存储设备的另一访问请求;以及
基于一个或多个数据块在所述持久性存储设备处的分配来确定准许或拒绝所述另一访问请求。
8.根据权利要求1所述的方法,其中所述块设备服务足够安全,以与所述计算设备的硬件对接。
9.根据权利要求5所述的方法,还包括:
向所述逻辑卷服务发送附加访问请求;以及
在所述应用程序处接收一个或多个附加数据块在所述计算设备的所述持久性存储设备处的附加分配。
10.一种体现软件的一个或多个计算机可读非暂时性存储介质,所述软件在被执行时是可操作的,以:
启动应用程序作为操作系统的用户空间内的第一进程,其中所述应用程序将与所述操作系统相关联的数据存储系统实例化;
启动块设备服务作为所述操作系统的所述用户空间内的第二进程,所述块设备服务被配置为管理所述计算设备的持久性存储设备;
由所述操作系统的内核,接收系统调用请求,以经由进程间通信(IPC)信道来与所述块设备服务通信,其中所述系统调用请求由所述应用程序使用所述数据存储系统生成、并且包括访问所述持久性存储设备的访问请求;以及
响应于所述系统调用请求,为所述应用程序提供经由所述IPC信道对所述块设备服务的访问。
11.根据权利要求10所述的介质,并且以下项之一:
a)其中所述数据存储系统是文件系统库或密钥值存储装置;或者
b)进一步包括:
由所述内核响应于所述系统调用请求,向所述块设备服务发送所述访问请求;或者
c)进一步包括:
基于所提供的对所述块设备服务的访问,在所述持久性存储设备的数据块上读取或写入数据。
12.根据权利要求10所述的介质,还包括:
在所述应用程序的设置期间向逻辑卷服务发送请求;以及
在所述应用程序处接收一个或多个数据块在所述计算设备的持久性存储设备处的分配。
13.根据权利要求12所述的介质,其中所述逻辑卷服务向所述块设备服务通知所述一个或多个数据块在所述持久性存储设备处的分配。
14.一种系统,包括:
一个或多个处理器;以及
一个或多个计算机可读非暂时性存储介质,被耦合到所述一个或多个处理器,并且包括指令,所述指令在由所述一个或多个处理器执行时是可操作的,以使得所述系统:
启动应用程序作为操作系统的用户空间内的第一进程,其中所述应用程序将与所述操作系统相关联的数据存储系统实例化;
启动块设备服务作为所述操作系统的所述用户空间内的第二进程,所述块设备服务被配置为管理所述计算设备的持久性存储设备;
由所述操作系统的内核,从所述应用程序接收系统调用请求,以经由进程间通信(IPC)信道来与所述块设备服务通信,其中所述系统调用请求由所述应用程序使用所述数据存储系统生成、并且包括访问所述持久性存储设备的访问请求;以及
响应于所述系统调用请求,为所述应用程序提供经由所述IPC信道对所述块设备服务的访问。
15.根据权利要求14所述的系统,其中所述数据存储系统是文件系统库或密钥值存储装置。
CN202080055581.2A 2019-09-05 2020-08-08 用于拆分存储堆栈的系统和方法 Pending CN114174995A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/561,798 2019-09-05
US16/561,798 US11194706B2 (en) 2019-09-05 2019-09-05 System and method for split storage stack
PCT/US2020/045533 WO2021045868A1 (en) 2019-09-05 2020-08-08 System and method for split storage stack

Publications (1)

Publication Number Publication Date
CN114174995A true CN114174995A (zh) 2022-03-11

Family

ID=74104159

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080055581.2A Pending CN114174995A (zh) 2019-09-05 2020-08-08 用于拆分存储堆栈的系统和方法

Country Status (6)

Country Link
US (1) US11194706B2 (zh)
EP (1) EP4026003A1 (zh)
JP (1) JP2022546906A (zh)
KR (1) KR20220057568A (zh)
CN (1) CN114174995A (zh)
WO (1) WO2021045868A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024041338A1 (zh) * 2022-08-23 2024-02-29 华为技术有限公司 访问数据的方法及电子设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11966343B2 (en) 2021-07-19 2024-04-23 Samsung Electronics Co., Ltd. Universal mechanism to access and control a computational device

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6523058B1 (en) 1998-09-29 2003-02-18 Stmicroelectronics Inc. State machine driven transport protocol interface
US7140015B1 (en) 1999-09-29 2006-11-21 Network Appliance, Inc. Microkernel for real time applications
US7143260B2 (en) * 2002-12-20 2006-11-28 Veritas Operating Corporation Intermediate descriptions of intent for storage allocation
US8924964B2 (en) 2010-11-01 2014-12-30 Microsoft Corporation Dynamic allocation and assignment of virtual environment
US8924986B2 (en) 2011-09-01 2014-12-30 American Megatrends, Inc. Methods, devices and computer program products for confluence of multiple operating systems
US9703582B1 (en) 2012-09-07 2017-07-11 Tellabs Operations, Inc. Share access of allocated storage space via in-memory file system between virtual machines
KR102044023B1 (ko) 2013-03-14 2019-12-02 삼성전자주식회사 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법
CN104424034A (zh) 2013-09-04 2015-03-18 华为技术有限公司 硬件资源访问方法及装置
US20170097771A1 (en) 2015-10-01 2017-04-06 Netapp, Inc. Transaction log layout for efficient reclamation and recovery
US10255180B2 (en) * 2015-12-11 2019-04-09 Netapp, Inc. Server-based persistence management in user space
US9697144B1 (en) * 2016-08-23 2017-07-04 Red Hat, Inc. Quality of service enforcement and data security for containers accessing storage
US10360149B2 (en) 2017-03-10 2019-07-23 Oracle International Corporation Data structure store in persistent memory
US11137924B2 (en) 2017-08-25 2021-10-05 Vmware, Inc. Distributed file storage system supporting accesses from multiple container hosts
US11016932B2 (en) * 2017-09-21 2021-05-25 Alibaba Group Holding Limited Systems, methods, and apparatuses for simplifying filesystem operations utilizing a key-value storage system
US20200364100A1 (en) * 2019-05-14 2020-11-19 Microsoft Technology Licensing, Llc Memory abstraction for lock-free inter-process communication

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024041338A1 (zh) * 2022-08-23 2024-02-29 华为技术有限公司 访问数据的方法及电子设备

Also Published As

Publication number Publication date
JP2022546906A (ja) 2022-11-10
KR20220057568A (ko) 2022-05-09
WO2021045868A1 (en) 2021-03-11
EP4026003A1 (en) 2022-07-13
US11194706B2 (en) 2021-12-07
US20210073116A1 (en) 2021-03-11

Similar Documents

Publication Publication Date Title
US11487551B2 (en) System and method for key value store
US11321452B2 (en) Execution environment virtualization method and apparatus and virtual execution environment access method and apparatus
CN108701058B (zh) 虚拟化传感器
US20210144147A1 (en) System and method for externally-delegated access control and authorization
WO2018157757A1 (en) Unified resource management in a data center cloud architecture
US20070277179A1 (en) Information Processing Apparatus, Communication Processing Method, And Computer Program
WO2017139140A1 (en) Container credentialing by host
US20150244717A1 (en) Trusted virtual computing system
US11507285B1 (en) Systems and methods for providing high-performance access to shared computer memory via different interconnect fabrics
CN114174995A (zh) 用于拆分存储堆栈的系统和方法
US11010309B2 (en) Computer system and method for executing one or more software applications, host computer device and method for a host computer device, memory device and method for a memory device and non-transitory computer readable medium
KR20180124582A (ko) 모바일 클라우드 시스템 및 그 동작 방법
US20200073691A1 (en) Secure and efficient memory sharing for guests
US9772776B2 (en) Per-memory group swap device
US11934567B2 (en) Preventing unauthorized translated access using address signing
US20160162399A1 (en) Systems and methods for providing improved latency in a non-uniform memory architecture
US10242174B2 (en) Secure information flow
US11429412B2 (en) Guest protection from application code execution in kernel mode
US10356131B2 (en) Service chaining for multiple uplink bridges
JP2022099241A (ja) ハードウェアの信頼できる実行環境の待ち時間の低減
US10891056B2 (en) Virtualization of memory compute functionality
US20150106884A1 (en) Memcached multi-tenancy offload
US11119931B1 (en) Data pipeline for microkernel operating system
US20230188338A1 (en) Limiting use of encryption keys in an integrated circuit device
US11573719B2 (en) PMEM cache RDMA security

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: California, USA

Applicant after: Yuan Platform Technology Co.,Ltd.

Address before: California, USA

Applicant before: Facebook Technologies, LLC