KR20220038053A - How to build a resilient operating system based on sustainable services with kernel support - Google Patents

How to build a resilient operating system based on sustainable services with kernel support Download PDF

Info

Publication number
KR20220038053A
KR20220038053A KR1020227000867A KR20227000867A KR20220038053A KR 20220038053 A KR20220038053 A KR 20220038053A KR 1020227000867 A KR1020227000867 A KR 1020227000867A KR 20227000867 A KR20227000867 A KR 20227000867A KR 20220038053 A KR20220038053 A KR 20220038053A
Authority
KR
South Korea
Prior art keywords
service
handle
checkpoint
restarted
key
Prior art date
Application number
KR1020227000867A
Other languages
Korean (ko)
Inventor
베른하르트 포스
바딤 빅터 스피박
Original Assignee
페이스북 테크놀로지스, 엘엘씨
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 페이스북 테크놀로지스, 엘엘씨 filed Critical 페이스북 테크놀로지스, 엘엘씨
Publication of KR20220038053A publication Critical patent/KR20220038053A/en

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/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/482Application

Abstract

일 실시예에서, 방법은 서비스에 대한 체크포인트를 참조하는 핸들을 생성하는 것, 핸들을 서비스로 전송하는 것으로서, 상기 핸들은 체크포인트에서 서비스의 하나 이상의 상태들을 저장하기 위해 서비스에 의해 사용되도록 구성되는, 상기 핸들을 전송하는 것, 서비스가 재시작될 필요가 있음을 결정하는 것, 서비스를 재시작하는 것, 체크포인트에 대한 핸들을 액세스하는 것, 및 체크포인트에 대한 핸들을 재시작된 서비스로 전송하는 것으로서, 상기 체크포인트에 대한 핸들은 하나 이상의 상태들을 회복시키기 위해 재시작된 서비스에 의해 사용되도록 구성되는, 상기 핸들을 재시작된 서비스로 전송하는 것을 포함한다. In one embodiment, a method comprises creating a handle referencing a checkpoint for a service, sending the handle to the service, wherein the handle is configured to be used by the service at the checkpoint to store one or more states of the service sending the handle, determining that a service needs to be restarted, restarting the service, accessing the handle to the checkpoint, and sending the handle to the checkpoint to the restarted service. sending the handle to the restarted service, wherein the handle to the checkpoint is configured for use by the restarted service to restore one or more states.

Figure P1020227000867
Figure P1020227000867

Description

커널 지원을 가진 지속 가능한 서비스들에 기초하여 회복성 운영 시스템을 구축하는 방법How to build a resilient operating system based on sustainable services with kernel support

본 개시는 일반적으로 운영 시스템들에 관한 것이다.BACKGROUND This disclosure relates generally to operating systems.

운영 시스템(OS)은 컴퓨터 하드웨어 및 소프트웨어 리소스들을 관리하고 컴퓨터 프로그램들에 대한 공통 서비스들을 제공하는 시스템 소프트웨어이다. 시간-공유 운영 시스템들은 시스템의 효율적인 사용을 위해 태스크들을 스케줄링하며 또한 프로세서 시간, 대용량 저장, 인쇄, 및 다른 리소스들의 비용 할당을 위한 회계 소프트웨어를 포함할 수 있다. 입력과 출력 및 메모리 할당과 같은 하드웨어 기능들을 위해, 운영 시스템은 프로그램들과 컴퓨터 하드웨어 사이에서 중재자로서 동작하지만, 애플리케이션 코드는 일반적으로 하드웨어에 의해 직접 실행되며 빈번하게 OS 기능으로의 시스템 호출들을 하거나 또는 그것에 의해 중단된다. 운영 시스템들은 컴퓨터를 포함하는 많은 디바이스들 - 휴대 전화들 및 비디오 게임 콘솔들에서 웹 서버들 및 슈퍼 컴퓨터들에 이르는 - 에서 발견된다. An operating system (OS) is system software that manages computer hardware and software resources and provides common services for computer programs. Time-sharing operating systems schedule tasks for efficient use of the system and may also include accounting software for cost allocation of processor time, mass storage, printing, and other resources. For hardware functions such as input and output and memory allocation, the operating system acts as an intermediary between programs and computer hardware, but application code is usually executed directly by the hardware and frequently makes system calls to OS functions or interrupted by it Operating systems are found on many devices, including computers, from cell phones and video game consoles to web servers and supercomputers.

컴퓨팅 시, 프로세스는 하나 또는 많은 스레드들에 의해 실행되고 있는 컴퓨터 프로그램의 인스턴스이다. 그것은 프로그램 코드 및 그것의 활동을 포함한다. 운영 시스템(OS)에 의존하여, 프로세스는 지시들을 동시에 실행하는 다수의 실행 스레드들로 이루어질 수 있다. 컴퓨터 프로그램은 지시들의 수동형 모음이지만, 프로세스는 이들 지시들의 실제 실행이다. 여러 프로세스들은 동일한 프로그램과 연관될 수 있으며; 예를 들어, 동일한 프로그램의 여러 인스턴스들을 여는 것은 종종 하나 이상의 프로세스가 실행되는 것을 야기한다. 프로세스 관리는 임의의 현대 운영 시스템(OS)의 통합형 부분이다. OS는 프로세스들에 리소스들을 할당하고, 프로세스들이 정보를 공유하고 교환할 수 있게 하고, 다른 프로세스들로부터 각각의 프로세스의 리소스들을 보호하며 프로세스들 간에 동기화를 가능하게 해야 한다. 이들 요건들을 충족시키기 위해, OS는 각각의 프로세스에 대한 데이터 구조를 유지해야 하며, 이것은 상기 프로세스의 상태 및 리소스 소유권을 기술하고, OS가 각각의 프로세스에 대한 제어를 행사할 수 있게 한다. In computing, a process is an instance of a computer program being executed by one or many threads. It contains the program code and its activities. Depending on the operating system (OS), a process may consist of multiple threads of execution executing instructions concurrently. A computer program is a passive collection of instructions, but a process is the actual execution of these instructions. Multiple processes may be associated with the same program; For example, opening multiple instances of the same program often causes more than one process to run. Process management is an integral part of any modern operating system (OS). The OS must allocate resources to processes, enable processes to share and exchange information, protect each process's resources from other processes, and enable synchronization between processes. To meet these requirements, the OS must maintain a data structure for each process, which describes the state and resource ownership of that process, and allows the OS to exercise control over each process.

특정한 실시예들에서, 컴퓨팅 시스템의 운영 시스템은 운영 시스템을 재시작하지 않고 마이크로커널에서 충돌 서비스를 효과적으로 회복시킬 수 있다. 운영 시스템은 다수의 서비스들을 구동할 수 있지만 그것들 중 일부가 충돌하거나 또는 재시작되어야 한다면, 관련 데이터는 손실될 수 있으며 이것은 시스템이 재시작되어야 하는 경우 운영 시스템에 해로울 수 있다. 이러한 이슈를 처리하기 위해, 본 출원에서 개시된 실시예들은 운영 시스템을 재시작하지 않고 충돌 서비스를 재시작하며 그것의 충돌-전 상태를 회복시킬 수 있는 회복성 운영 시스템을 구축할 수 있다. 필수적인 기술은 마이크로커널에 의해 제공된 API를 통해 마이크로커널과의 특수한 계약을 수립함으로써 각각의 서비스의 상태를 유지하는 것을 포함할 수 있다. 계약은 서비스가 그것의 상태, 특히 자동으로 복구될 수 없는 상태를 체크포인트할 수 있는 메모리의 특수 페이지들을 제공할 수 있다. 또한, 하나의 서비스로 제공된 페이지들은 충돌이 있는 경우 상태를 변질시킬 기회가 적도록 다른 서비스들로 제공된 페이지들로부터 분리될 수 있다. 제한으로서가 아닌 예로서, 운영 시스템에서의 론처 서비스(launcher service)는 론칭되었으며 현재 활발히 실행 중인 서비스들 모두를 추적할 책임이 있을 수 있다. 운영 시스템이 서비스 리스트를 구현할 때, 그것은 론칭된 서비스들 모두를 반복하도록 론처 서비스에 요청할 수 있다. 충돌이 있을 때, 운영 시스템은, 커널 API를 통해, 동일한 페이지 또는 페이지들의 세트에서 론처 서비스에 대한 체크포인트를 찾으며 체크포인트에 대한 핸들을 얻을 수 있다. 론처 서비스의 재시작 동안, 로더 서비스는 새롭게-시작된 론처 서비스로 핸들을 전달할 것이다. 핸들을 통해, 론처 서비스는 충돌 이전의 상태를 검색할 수 있다. 본 개시는 특정한 방식들로 특정한 시스템들을 통해 특정한 상태를 회복시키는 것을 설명하지만, 본 개시는 임의의 적절한 방식으로 임의의 적절한 시스템을 통해 임의의 적절한 상태를 회복시키는 것을 고려한다. In certain embodiments, the operating system of the computing system can effectively restore crash service in the microkernel without restarting the operating system. The operating system can run a number of services, but if some of them crash or have to be restarted, the associated data can be lost, which can be detrimental to the operating system if the system needs to be restarted. To address this issue, the embodiments disclosed in this application may build a resilient operating system capable of restarting a crash service and restoring its pre-crash state without restarting the operating system. Essential skills may include maintaining the state of each service by establishing special contracts with the microkernel through APIs provided by the microkernel. A contract may provide special pages of memory that a service may checkpoint its state, particularly a state that cannot be recovered automatically. In addition, pages provided by one service may be separated from pages provided by other services so that there is little chance of changing the state in case of a conflict. By way of example and not limitation, a launcher service in the operating system may be responsible for tracking all of the services that have been launched and are currently actively running. When the operating system implements a service list, it may ask the launcher service to iterate through all of the launched services. When there is a conflict, the operating system, through the kernel API, can find a checkpoint for the launcher service on the same page or set of pages and obtain a handle to the checkpoint. During restart of the launcher service, the loader service will pass the handle to the newly-started launcher service. Through the handle, the launcher service can retrieve the state before the crash. While this disclosure describes restoring a particular state through particular systems in particular ways, this disclosure contemplates restoring any suitable state through any suitable system in any suitable manner.

특정한 실시예들에서, 운영 시스템은, 제1 서비스에 대해, 체크포인트를 참조하는 핸들을 생성할 수 있다. 운영 시스템은 그 후 핸들을 제1 서비스로 전송할 수 있다. 상기 핸들은 상기 체크포인트에서 서비스의 하나 이상의 상태들을 저장하기 위해 제1 서비스에 의해 사용되도록 구성될 수 있다. 특정한 실시예들에서, 상기 운영 시스템은 제1 서비스가 재시작될 필요가 있음을 결정할 수 있다. 상기 운영 시스템은 그 후 제1 서비스를 재시작할 수 있다. 상기 운영 시스템은 또한 체크포인트에 대한 핸들을 액세스할 수 있다. 특정한 실시예들에서, 상기 운영 시스템은 상기 체크포인트에 대한 핸들을 재시작된 제1 서비스로 전송할 수 있다. 상기 체크포인트에 대한 핸들은 하나 이상의 상태들을 회복시키기 위해 재시작된 제1 서비스에 의해 사용되도록 구성될 수 있다. In certain embodiments, the operating system may create, for the first service, a handle referencing the checkpoint. The operating system may then send the handle to the first service. The handle may be configured for use by the first service to store one or more states of the service at the checkpoint. In certain embodiments, the operating system may determine that the first service needs to be restarted. The operating system may then restart the first service. The operating system may also access the handle to the checkpoint. In certain embodiments, the operating system may send a handle to the checkpoint to the restarted first service. The handle to the checkpoint may be configured for use by the restarted first service to restore one or more states.

본 발명의 실시예들은 인공 현실 시스템을 포함하거나 또는 그것과 함께 구현될 수 있다. 인공 현실은 사용자로의 프리젠테이션 이전에 몇몇 방식으로 조정되어 온 현실의 형태이며, 이것은 예컨대 가상 현실(VR), 증강 현실(AR), 혼합 현실(MR), 하이브리드 현실, 또는 그것의 몇몇 조합 및/또는 파생물을 포함할 수 있다. 인공 현실 콘텐트는 완전히 생성된 콘텐트 또는 캡처된 콘텐트(예컨대, 실-세계 사진들)와 조합된 생성 콘텐트를 포함할 수 있다. 인공 현실 콘텐트는 비디오, 오디오, 햅틱 피드백, 또는 그것의 몇몇 조합을 포함할 수 있으며, 그 중 임의의 것은 다일 채널에서 또는 다수의 채널들에서(뷰어에게 3-차원 효과를 생성하는 스테레오 비디오와 같은) 제공될 수 있다. 부가적으로, 몇몇 실시예들에서, 인공 현실은 예컨대, 인공 현실에서 콘텐트를 생성하기 위해 사용되며 및/또는 인공 현실에서 사용되는(예컨대, 그것에 활동들을 수행하는) 애플리케이션들, 제품들, 액세서리들, 서비스들, 또는 그것의 몇몇 조합과 연관될 수 있다. 인공 현실 콘텐트를 제공하는 인공 현실 시스템은, 호스트 컴퓨터 시스템에 연결된 헤드-장착 디스플레이(HMD), 독립형 HMD, 이동 디바이스 또는 컴퓨팅 시스템, 또는 하나 이상의 뷰어들에게 인공 현실 콘텐트를 제공할 수 있는 임의의 다른 하드웨어 플랫폼을 포함한, 다양한 플랫폼들 상에서 구현될 수 있다. Embodiments of the present invention may include or be implemented with an artificial reality system. Artificial reality is a form of reality that has been adjusted in some way prior to presentation to a user, such as virtual reality (VR), augmented reality (AR), mixed reality (MR), hybrid reality, or some combination thereof and / or derivatives. Artificial reality content may include fully generated content or generated content combined with captured content (eg, real-world photos). Artificial reality content may include video, audio, haptic feedback, or some combination thereof, any of which may be in a single channel or in multiple channels (such as stereo video creating a three-dimensional effect to the viewer). ) can be provided. Additionally, in some embodiments, artificial reality is, for example, used to create content in and/or used in (eg, performing activities on) applications, products, accessories in artificial reality. , services, or some combination thereof. An artificial reality system that provides artificial reality content may include a head-mounted display (HMD) coupled to a host computer system, a standalone HMD, a mobile device or computing system, or any other capable of providing artificial reality content to one or more viewers. It may be implemented on a variety of platforms, including hardware platforms.

본 발명에 따르면, 방법이 제공되고 있으며, 상기 방법은 컴퓨팅 디바이스 상에서 실행하는 운영 시스템에 의해: 제1 서비스에 대해, 체크포인트를 참조하는 핸들을 생성하는 것; 상기 핸들을 상기 제1 서비스로 전송하는 것으로서, 상기 핸들은 상기 체크포인트에서 상기 제1 서비스의 하나 이상의 상태들을 저장하기 위해 상기 제1 서비스에 의해 사용되도록 구성되는, 상기 핸들을 제1 서비스로 전송하는 것; 상기 제1 서비스가 재시작될 필요가 있음을 결정하는 것; 상기 제1 서비스를 재시작하는 것; 상기 체크포인트에 대한 핸들을 액세스하는 것; 및 상기 체크포인트에 대한 핸들을 상기 재시작된 제1 서비스로 전송하는 것으로서, 상기 체크포인트에 대한 핸들은 상기 하나 이상의 상태들을 회복시키기 위해 상기 재시작된 제1 서비스에 의해 사용되도록 구성되는, 상기 핸들을 상기 재시작된 제1 서비스로 전송하는 것을 포함한다.According to the present invention, there is provided a method comprising, by an operating system executing on a computing device: creating, for a first service, a handle referencing a checkpoint; sending the handle to the first service, the handle being configured to be used by the first service to store one or more states of the first service at the checkpoint to do; determining that the first service needs to be restarted; restarting the first service; accessing a handle to the checkpoint; and sending a handle to the checkpoint to the restarted first service, wherein the handle to the checkpoint is configured to be used by the restarted first service to restore the one or more states. and transmitting to the restarted first service.

선택적으로, 상기 제1 서비스는 모니터와 연관된다. 선택적으로, 상기 제1 서비스가 재시작될 필요가 있음을 결정하는 것은 상기 모니터에 기초한다.Optionally, the first service is associated with a monitor. Optionally, determining that the first service needs to be restarted is based on the monitor.

선택적으로, 상기 방법은, 상기 체크포인트에 대한 제1 키를 생성하는 것을 추가로 포함한다. 선택적으로, 상기 체크포인트에 대한 핸들을 액세스하는 것은 상기 제1 키에 기초한다.Optionally, the method further comprises generating a first key for the checkpoint. Optionally, accessing the handle to the checkpoint is based on the first key.

선택적으로, 상기 제1 서비스는 상기 운영 시스템의 구성요소이다.Optionally, the first service is a component of the operating system.

선택적으로, 상기 제1 서비스가 재시작될 필요가 있음을 결정하는 것은 상기 제1 서비스가 무응답이라는 표시에 기초한다.Optionally, determining that the first service needs to be restarted is based on an indication that the first service is unresponsive.

선택적으로, 상기 핸들을 액세스하는 것은 복수의 서비스들에 대응하는 복수의 엔티티들을 포함한 서비스-키 인덱스를 액세스하는 것을 포함한다. 선택적으로, 상기 서비스-키 인덱스에서의 각각의 엔트리는 서비스 식별자 및 상기 서비스 식별자와 연관된 키를 포함한다.Optionally, accessing the handle comprises accessing a service-key index comprising a plurality of entities corresponding to the plurality of services. Optionally, each entry in the service-key index includes a service identifier and a key associated with the service identifier.

상기 제1 서비스는 선택적으로 제1 서비스 식별자와 연관될 수 있다. The first service may optionally be associated with a first service identifier.

선택적으로, 상기 핸들을 액세스하는 것은 상기 제1 서비스 식별자에 기초하여, 상기 서비스-키 인덱스로부터 제1 키를 식별하는 것을 추가로 포함한다. Optionally, accessing the handle further comprises identifying a first key from the service-key index based on the first service identifier.

선택적으로, 상기 핸들을 액세스하는 것은, 상기 식별된 제1 키에 기초하여, 복수의 서비스들과 연관된 복수의 체크포인트들을 참조하는 복수의 핸들들로부터 상기 핸들을 검색하는 것을 추가로 포함한다.Optionally, accessing the handle further comprises retrieving the handle from a plurality of handles that reference a plurality of checkpoints associated with a plurality of services based on the identified first key.

선택적으로, 상기 하나 이상의 상태들 각각은 데이터 아이템 또는 핸들 중 하나 이상을 포함한다. Optionally, each of said one or more states includes one or more of a data item or a handle.

선택적으로, 상기 제1 서비스를 재시작하는 것은 하나 이상의 커널들 또는 제2 서비스들을 재시작하는 것을 요구하지 않는다. 선택적으로, 상기 하나 이상의 마이크로커널들 또는 제2 서비스들은 운영 시스템의 구성요소들이다. Optionally, restarting the first service does not require restarting one or more kernels or second services. Optionally, the one or more microkernels or second services are components of an operating system.

본 발명에 따르면, 소프트웨어를 포함하는 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어가 추가로 제공되고 있으며, 상기 소프트웨어는 실행될 때: 제1 서비스에 대해, 체크포인트를 참조하는 핸들을 생성하고; 상기 핸들을 상기 제1 서비스로 전송하는 것으로서, 상기 핸들은 상기 체크포인트에서 제1 서비스의 하나 이상의 상태들을 저장하기 위해 상기 제1 서비스에 의해 사용되도록 구성되는, 상기 핸들을 제1 서비스로 전송하고; 상기 제1 서비스가 재시작될 필요가 있음을 결정하고; 상기 제1 서비스를 재시작하고; 상기 체크포인트에 대한 핸들을 액세스하며; 상기 체크포인트에 대한 핸들을 상기 재시작된 제1 서비스로 전송하는 것으로서, 상기 체크포인트에 대한 핸들은 상기 하나 이상의 상태들을 회복시키기 위해 상기 재시작된 제1 서비스에 의해 사용되도록 구성되는, 상기 핸들을 재시작된 제1 서비스로 전송하도록 동작 가능하다. According to the present invention, there is further provided one or more computer-readable non-transitory storage media comprising software, wherein the software, when executed: creates, for a first service, a handle referencing a checkpoint; sending the handle to the first service, the handle being configured to be used by the first service to store one or more states of the first service at the checkpoint; ; determine that the first service needs to be restarted; restart the first service; access a handle to the checkpoint; sending a handle to the checkpoint to the restarted first service, wherein the handle to the checkpoint is configured to be used by the restarted first service to restore the one or more states. operable to transmit the first service.

선택적으로, 상기 제1 서비스는 모니터와 연관된다. 상기 제1 서비스가 재시작될 필요가 있음을 결정하는 것은 선택적으로 상기 모니터에 기초할 수 있다. Optionally, the first service is associated with a monitor. Determining that the first service needs to be restarted may optionally be based on the monitor.

선택적으로, 상기 소프트웨어는 또한 실행될 때 상기 체크포인트에 대한 제1 키를 생성하도록 동작 가능하다.Optionally, the software is also operable to generate a first key for the checkpoint when executed.

선택적으로, 상기 핸들을 액세스하는 것은 복수의 서비스들에 대응하는 복수의 엔트리들을 포함한 서비스-키 인덱스를 액세스하는 것을 포함할 수 있다. 선택적으로 상기 서비스-키 인덱스에서 각각의 엔트리는 서비스 식별자 및 상기 서비스 식별자와 연관된 키를 포함한다. Optionally, accessing the handle may include accessing a service-key index comprising a plurality of entries corresponding to the plurality of services. Optionally, each entry in the service-key index includes a service identifier and a key associated with the service identifier.

상기 제1 서비스는 제1 서비스 식별자와 연관될 수 있다. The first service may be associated with a first service identifier.

상기 핸들을 액세스하는 것은 선택적으로, 상기 제1 서비스 식별자에 기초하여, 상기 서비스-키 인덱스로부터 제1 키를 식별하는 것을 추가로 포함할 수 있다. Accessing the handle may optionally further include identifying a first key from the service-key index based on the first service identifier.

상기 핸들을 액세스하는 것은 선택적으로, 상기 식별된 제1 키에 기초하여, 복수의 서비스들과 연관된 복수의 체크포인트들을 참조하는 복수의 핸들들로부터 상기 핸들을 검색하는 것을 추가로 포함할 수 있다. Accessing the handle may optionally further include, based on the identified first key, retrieving the handle from a plurality of handles referencing a plurality of checkpoints associated with a plurality of services.

선택적으로, 상기 하나 이상의 상태들 각각은 데이터 아이템 또는 핸들 중 하나 이상을 포함한다.Optionally, each of said one or more states includes one or more of a data item or a handle.

본 발명에 따르면, 시스템이 추가로 제공되고 있으며; 상기 시스템은: 하나 이상의 프로세서들 및 상기 프로세서들에 의해 실행 가능한 지시들을 포함한 상기 프로세서들에 결합된 비-일시적 메모리로서, 상기 프로세서들은 상기 지시들을 실행할 때: 제1 서비스에 대해, 체크포인트를 참조하는 핸들을 생성하고; 상기 핸들을 상기 제1 서비스로 전송하는 것으로서, 상기 핸들은 상기 체크포인트에서 상기 제1 서비스의 하나 이상의 상태들을 저장하기 위해 상기 제1 서비스에 의해 사용되도록 구성되는, 상기 핸들을 제1 서비스로 전송하고; 상기 제1 서비스가 재시작될 필요가 있음을 결정하고; 상기 제1 서비스를 재시작하고; 상기 체크포인트에 대한 핸들을 액세스하며; 상기 체크포인트에 대한 핸들을 상기 재시작된 제1 서비스로 전송하는 것으로서, 상기 체크포인트에 대한 핸들은 상기 하나 이상의 상태들을 회복시키기 위해 상기 재시작된 제1 서비스에 의해 사용되도록 구성되는, 상기 핸들을 재시작된 제1 서비스로 전송하도록 동작 가능한, 상기 비-일시적 메모리를 포함한다. According to the present invention, there is further provided a system; The system comprises: one or more processors and a non-transitory memory coupled to the processors comprising instructions executable by the processors, when the processors execute the instructions: for a first service, see a checkpoint create a handle to ; sending the handle to the first service, the handle being configured to be used by the first service to store one or more states of the first service at the checkpoint and; determine that the first service needs to be restarted; restart the first service; access a handle to the checkpoint; sending a handle to the checkpoint to the restarted first service, wherein the handle to the checkpoint is configured to be used by the restarted first service to restore the one or more states. and the non-transitory memory operable to transmit to the first service.

본 출원에서 개시된 실시예들은 단지 예들이며, 본 개시의 범위는 그것들에 제한되지 않는다. 특정한 실시예들은 본 출원에서 개시된 실시예들의 구성요소들, 요소들, 특징들, 기능들, 동작들, 또는 단계들의 모두, 일부를 포함하거나 또는 포함하지 않을 수 있다. 본 발명에 따른 실시예들은 특히 방법, 저장 매체, 시스템 및 컴퓨터 프로그램 제품에 관한 첨부된 청구항들에서 개시되며, 여기에서 하나의 청구항 카테고리, 예컨대 방법에서 언급된 임의의 특징은 또한 청구항 카테고리, 예컨대 시스템에서 또한 주장될 수 있다. 첨부된 청구항들에서 종속성들 또는 역 참조들은 단지 형식적인 이유들로 택하여진다. 그러나, 임의의 이전 청구항들(특히 다수의 종속성들)에 대한 의도적인 역 참조에서 기인한 임의의 주제가 또한 주장될 수 있으며, 따라서 청구항들 및 그것의 특징들의 임의의 조합이 개시되며 첨부된 청구항들에서 택하여진 종속성들에 관계없이 주장될 수 있다. 주장될 수 있는 주제는 첨부된 청구항들에서 제시된 바와 같은 특징들의 조합들뿐만 아니라 청구항들에서의 특징들의 임의의 다른 조합을 또한 포함하며, 청구항들에서 언급된 각각의 특징은 청구항들에서의 임의의 다른 특징 또는 다른 특징들의 조합과 조합될 수 있다. 더욱이, 본 출원에서 설명되거나 또는 묘사된 실시예들 및 특징들 중 임의의 것은 별개의 청구항에서 및/또는 본 출원에서 설명되거나 또는 묘사된 임의의 실시예 또는 특징과 또는 첨부된 청구항들의 특징들 중 임의의 것과 임의의 조합하여 주장될 수 있다.The embodiments disclosed in the present application are merely examples, and the scope of the present disclosure is not limited thereto. Certain embodiments may or may not include all, some, or all of the components, elements, features, functions, operations, or steps of the embodiments disclosed in this application. Embodiments according to the invention are disclosed in the appended claims, in particular relating to a method, a storage medium, a system and a computer program product, wherein any feature mentioned in one claim category, eg a method, is also disclosed in a claim category, eg system can also be asserted in Dependencies or back references in the appended claims are taken for formal reasons only. However, any subject matter that results from an intentional back-reference to any previous claims (especially multiple dependencies) may also be claimed, thus the claims and any combination of features thereof being disclosed and appended claims. can be asserted irrespective of the dependencies chosen from Claimable subject matter also includes combinations of features as set forth in the appended claims as well as any other combination of features in the claims, each feature recited in the claims being any It may be combined with other features or combinations of other features. Moreover, any of the embodiments and features described or depicted in this application may be in a separate claim and/or any of the embodiments or features described or depicted in this application and or of the features of the appended claims. Any and any combination may be claimed.

도 1은 서비스를 재시작하는 것과 연관된 핸들 테이블 값들의 재구성의 예시적인 다이어그램 흐름을 예시한다.
도 2는 서비스의 상태들을 회복시키기 위한 예시적인 방법을 예시한다.
도 3은 예시적인 컴퓨터 시스템을 예시한다.
1 illustrates an example diagram flow of reconfiguration of handle table values associated with restarting a service.
2 illustrates an example method for restoring states of service.
3 illustrates an example computer system.

특정한 실시예들에서, 컴퓨팅 시스템의 운영 시스템은 운영 시스템을 재시작하지 않고 마이크로커널에서 충돌 서비스를 효과적으로 복구할 수 있다. 운영 시스템은 다수의 서비스들을 구동할 수 있지만 그것들 중 일부가 충돌하거나 또는 재시작되어야 한다면, 관련 데이터는 손실될 수 있으며 이것은 시스템이 재시작되어야 하는 경우 운영 시스템에 해로울 수 있다. 이러한 이슈를 처리하기 위해, 본 출원에서 개시된 실시예들은 운영 시스템을 재시작하지 않고 충돌 서비스를 재시작하며 그것의 충돌-전 상태를 회복시킬 수 있는 회복성 운영 시스템을 구축할 수 있다. 필수적인 기술은 마이크로커널에 의해 제공된 API를 통해 마이크로커널과의 특수한 계약을 수립함으로써 각각의 서비스의 상태를 유지하는 것을 포함할 수 있다. 계약은 서비스가 그것의 상태, 특히 자동으로 복구될 수 없는 상태를 체크포인트할 수 있는 메모리의 특수 페이지들을 제공할 수 있다. 또한, 하나의 서비스로 제공된 페이지들은 충돌이 있는 경우 상태를 변질시킬 기회가 적도록 다른 서비스들로 제공된 페이지들로부터 분리될 수 있다. 제한으로서가 아닌 예로서, 운영 시스템에서의 론처 서비스는 론칭되었으며 현재 활발히 실행 중인 서비스들 모두를 추적할 책임이 있을 수 있다. 운영 시스템이 서비스 리스트를 구현할 때, 그것은 론칭된 서비스들 모두를 반복하도록 론처 서비스에 요청할 수 있다. 충돌이 있을 때, 운영 시스템은, 커널 API를 통해, 동일한 페이지 또는 페이지들의 세트에서 론처 서비스에 대한 체크포인트를 찾으며 체크포인트에 대한 핸들을 얻을 수 있다. 론처 서비스의 재시작 동안, 로더 서비스는 새롭게-시작된 론처 서비스로 핸들을 전달할 것이다. 핸들을 통해, 론처 서비스는 충돌 이전의 상태를 검색할 수 있다. 본 개시는 특정한 방식들로 특정한 시스템들을 통해 특정한 상태를 회복시키는 것을 설명하지만, 본 개시는 임의의 적절한 방식으로 임의의 적절한 시스템을 통해 임의의 적절한 상태를 회복시키는 것을 고려한다.In certain embodiments, the operating system of the computing system can effectively restore crashed services in the microkernel without restarting the operating system. The operating system can run a number of services, but if some of them crash or have to be restarted, the associated data can be lost, which can be detrimental to the operating system if the system needs to be restarted. To address this issue, the embodiments disclosed in this application may build a resilient operating system capable of restarting a crash service and restoring its pre-crash state without restarting the operating system. Essential skills may include maintaining the state of each service by establishing special contracts with the microkernel through APIs provided by the microkernel. A contract may provide special pages of memory that a service may checkpoint its state, particularly a state that cannot be recovered automatically. In addition, pages provided by one service may be separated from pages provided by other services so that there is little chance of changing the state in case of a conflict. By way of example and not limitation, a launcher service in an operating system may be responsible for keeping track of all services that have been launched and are currently actively running. When the operating system implements a service list, it may ask the launcher service to iterate through all of the launched services. When there is a conflict, the operating system, through the kernel API, can find a checkpoint for the launcher service on the same page or set of pages and obtain a handle to the checkpoint. During restart of the launcher service, the loader service will pass the handle to the newly-started launcher service. Through the handle, the launcher service can retrieve the state before the crash. While this disclosure describes restoring a particular state through particular systems in particular ways, this disclosure contemplates restoring any suitable state through any suitable system in any suitable manner.

특정한 실시예들에서, 운영 시스템은, 제1 서비스에 대해, 체크포인트를 참조하는 핸들을 생성할 수 있다. 운영 시스템은 그 후 핸들을 제1 서비스로 전송할 수 있다. 핸들은 체크포인트에서 제1 서비스의 하나 이상의 상태들을 저장하기 위해 제1 서비스에 의해 사용되도록 구성될 수 있다. 특정한 실시예들에서, 운영 시스템은 제1 서비스가 재시작될 필요가 있음을 결정할 수 있다. 운영 시스템은 그 후 제1 서비스를 재시작할 수 있다. 운영 시스템은 또한 체크포인트에 대한 핸들을 액세스할 수 있다. 특정한 실시예들에서, 운영 시스템은 체크포인트에 대한 핸들을 재시작된 제1 서비스로 전송할 수 있다. 체크포인트에 대한 핸들은 하나 이상의 상태들을 회복시키기 위해 재시작된 제1 서비스에 의해 사용되도록 구성될 수 있다. In certain embodiments, the operating system may create, for the first service, a handle referencing the checkpoint. The operating system may then send the handle to the first service. The handle may be configured for use by the first service to store one or more states of the first service at a checkpoint. In certain embodiments, the operating system may determine that the first service needs to be restarted. The operating system may then restart the first service. The operating system can also access the handle to the checkpoint. In certain embodiments, the operating system may send a handle to the checkpoint to the restarted first service. The handle to the checkpoint may be configured for use by the restarted first service to restore one or more states.

특정한 실시예들에서, 제1 서비스는 운영 시스템의 구성요소일 수 있다. 제1 서비스는 운영 시스템의 마이크로커널로부터 분리될 수 있다. 그 결과, 제1 서비스가 충돌할지라도, 그것은 전체 운영 시스템에 충돌하지 않을 것이다. 분리 단독으로는, 그러나, 충돌 서비스들을 복구하기 위한 메커니즘이 있을 필요가 있으므로, 시스템 신뢰성을 개선하기에 충분하지 않을 수 있다. 부가적으로, 마이크로커널들에 기초한 운영 시스템은 마이크로커널들에 저장장치를 갖지 않을 수 있다. 마이크로커널들은 메모리를 제외한 IO로의 액세스를 갖지 않을 수 있으며, 이것은 충돌 서비스를 복구하기 위한 메커니즘을 요구할 수 있다. 본 출원에서 개시된 실시예들은 서비스와 연관된 상태들을 저장하는 체크포인트에 기초한 이러한 메커니즘을 제공하여, 마이크로커널들이 서비스 충돌들 후 운영 시스템이 상태를 회복시킬 필요가 있는 경우에 서비스의 상태를 추적할 수 있게 한다. 본 개시는 특정한 방식들로 특정한 시스템들에서 특정한 서비스들을 설명하지만, 본 개시는 임의의 적절한 방식으로 임의의 적절한 시스템에서 임의의 적절한 서비스를 고려한다. In certain embodiments, the first service may be a component of an operating system. The first service may be separated from the microkernel of the operating system. As a result, even if the first service crashes, it will not crash the entire operating system. Separation alone, however, may not be sufficient to improve system reliability as there needs to be a mechanism to recover conflicting services. Additionally, an operating system based on microkernels may not have storage in microkernels. Microkernels may not have access to IO other than memory, which may require a mechanism to recover service from crashes. Embodiments disclosed in this application provide such a mechanism based on checkpoint that stores state associated with a service, so that microkernels can track the state of a service in case the operating system needs to restore state after service crashes. let there be While this disclosure describes particular services in particular systems in particular ways, this disclosure contemplates any suitable service in any suitable system in any suitable manner.

특정한 실시예들에서, 새로운 서비스가 시작할 때마다, 관리 서비스는 새로운 서비스에 몇몇 핸들들을 할당할 수 있다. 제한으로서가 아닌 예로서, 관리 서비스는 로더 서비스를 포함할 수 있다. 핸들들은 프로세스들, 스레드들, 소켓들, 채널들 또는 인터럽트들과 같은 커널 오브젝트들을 참조하기 위해 시스템 호출들에 의해 사용될 수 있다. 특정한 실시예들에서, 핸들들은 체크포인트들을 참조할 수 있다. 특정한 실시예들에서, 핸들은 특정한 프로세스에 의해 사용 중인 핸들들을 추적하기 위해 유형(작업, 프로세스, 소켓, 채널, 인터럽트 등), 핸들과 연관된 액세스 권한들, 커널 오브젝트에 대한 포인터, 내부 참조 카운트, 상태 플래그(자유, 활성, 폐쇄 등), 링크 리스트 또는 비트맵을 포함한 다음의 속성들을 가질 수 있다. 각각의 서비스에 핸들을 할당하는 기술적 이점은 그것이 상이한 서비스들 사이에 엄격한 격리를 제공한다는 것을 포함할 수 있다. 이때, 핸들은 서비스들에 걸쳐 고유하지 않지만, 핸들과 연관된 동일한 핸들 값은 상이한 서비스들에서 상이한 커널 오브젝트들을 참조할 수 있다. 본 개시는 특정한 방식들로 특정한 시스템들에서 특정한 핸들들을 설명하지만, 본 개시는 임의의 적절한 방식으로 임의의 적절한 시스템에서 임의의 적절한 핸들을 고려한다. In certain embodiments, whenever a new service starts, the management service may allocate some handles to the new service. By way of example and not limitation, the management service may include a loader service. Handles can be used by system calls to reference kernel objects such as processes, threads, sockets, channels or interrupts. In certain embodiments, handles may refer to checkpoints. In certain embodiments, a handle may contain a type (job, process, socket, channel, interrupt, etc.), access rights associated with the handle, a pointer to a kernel object, an internal reference count, It can have the following properties, including status flags (free, active, closed, etc.), link list or bitmap. A technical advantage of assigning a handle to each service may include that it provides strict isolation between different services. Here, the handle is not unique across services, but the same handle value associated with a handle may refer to different kernel objects in different services. While this disclosure describes particular handles in particular systems in particular ways, this disclosure contemplates any suitable handle in any suitable system in any suitable manner.

특정한 실시예들에서, 하나 이상의 상태들 각각은 데이터 아이템 또는 핸들 중 하나 이상을 포함할 수 있다. 특정한 실시예들에서, 메모리 영역들(예컨대, 페이지들)은 서비스와 연관된 도메인에 기초하여 그것의 상태들을 체크포인트하도록 요청하는 서비스에 제공될 수 있다. 메모리 영역들은 상태들을 저장하기 위해 사용될 수 있다. 도메인 내에서, 각각의 서비스는 서비스의 특수한 페이지들에 대응하는 그 자신의 어드레스 스팬을 가질 수 있다. 마이크로커널은 어드레스 스팬으로 상태를 체크포인트하며 서비스가 재시작할 때 그것을 회복시킬 수 있다. 제한으로서가 아닌 예로서, 론처 서비스는 등록된 상태 버킷을 포함할 수 있는, 도메인 1일 수 있다. 론처 서비스가 충돌할 때, 운영 시스템(예컨대, 로더 서비스를 통해)은 서비스와 연관된 페이지들에 대해 마이크로커널에 요청할 수 있다. 마이크로커널은 체크포인트를 참조하는 핸들을 반환할 수 있다. 핸들에 기초하여, 체크포인트는 도메인 1에 속하는 페이지들을 검색하기 위해 액세스될 수 있다. 본 개시는 본 개시는 특정한 방식들로 특정한 시스템들에서 특정한 메모리 영역들을 설명하지만, 본 개시는 임의의 적절한 방식으로 임의의 적절한 시스템에서 임의의 적절한 메모리 영역을 고려한다.In certain embodiments, each of the one or more states may include one or more of a data item or a handle. In certain embodiments, memory regions (eg, pages) may be provided to a service requesting to checkpoint its states based on a domain associated with the service. Memory areas may be used to store states. Within a domain, each service may have its own address span corresponding to special pages of the service. The microkernel can checkpoint state into address spans and restore it when the service is restarted. By way of example and not limitation, the launcher service may be domain 1, which may include a registered state bucket. When a launcher service crashes, the operating system (eg, via a loader service) can make a request to the microkernel for pages associated with the service. The microkernel may return a handle referencing the checkpoint. Based on the handle, the checkpoint can be accessed to retrieve pages belonging to domain 1. While this disclosure describes particular memory regions in particular systems in particular ways, this disclosure contemplates any suitable memory region in any suitable system in any suitable manner.

특정한 실시예들에서, 제1 서비스는 제1 서비스의 유형에 기초하여 어떤 상태를 체크포인트할지를 결정할 수 있다. 제한으로서가 아닌 예로서, 론처 서비스에 대해, 그것은 많은 데이터를 가질 수 있다. 론처 서비스는 얼마나 많은 메모리가 소비되고 있는지 및 얼마나 많은 다른 리소스들이 여전히 이용 가능한지에 대한 상태들을 추적할 수 있다. 이들 상태들은 회복시키기 용이하며 따라서 론처 서비스는 그것들을 체크포인트하지 않을 수 있다. 론처 서비스는 대신에 회복시키기에 더 어려운 상태들을 체크포인트할 수 있다. 특정한 실시예들에서, 운영 시스템은 체크포인트에 대한 제1 키를 추가로 생성할 수 있다. 나중에 체크포인트에 대한 핸들을 액세스하는 것은 제1 키에 기초할 수 있다. 본 개시는 특정한 방식들로 특정한 시스템들을 통해 특정한 상태들을 저장하는 것을 기술하지만, 본 개시는 임의의 적절한 방식들로 임의의 적절한 시스템을 통해 임의의 적절한 상태를 저장하는 것을 고려한다.In certain embodiments, the first service may determine which state to checkpoint based on the type of first service. By way of example and not limitation, for a launcher service, it may have a lot of data. The launcher service can keep track of how much memory is being consumed and how many other resources are still available. These states are easy to restore and thus the launcher service may not checkpoint them. The launcher service may instead checkpoint states that are more difficult to restore. In certain embodiments, the operating system may further generate a first key for the checkpoint. Accessing the handle to the checkpoint later may be based on the first key. While this disclosure describes storing particular states via particular systems in particular ways, this disclosure contemplates storing any suitable state via any suitable system in any suitable manner.

특정한 실시예들에서, 제1 서비스는 모니터와 연관될 수 있다. 제1 서비스가 재시작될 필요가 있다고 결정하는 것은 모니터에 기초할 수 있다. 특정한 실시예들에서, 제1 서비스가 재시작될 필요가 있다고 결정하는 것은 제1 서비스가 무응답이라는 표시에 기초할 수 있다. 제한으로서가 아닌 예로서, 서비스의 충돌은 서비스가 무응답이게 할 수 있다. 특정한 실시예들에서, 제1 서비스를 재시작하는 것은 하나 이상의 마이크로커널들 또는 제2 서비스들을 재시작하도록 요구하지 않을 수 있다. 하나 이상의 마이크로커널들 또는 제2 서비스들은 운영 시스템의 구성요소들일 수 있다. 본 개시는 특정한 방식들로 특정한 시스템들을 통해 특정한 재시작들을 결정하는 것을 설명하지만, 본 개시는 임의의 적절한 방식으로 임의의 적절한 시스템을 통해 임의의 적절한 재시작을 결정하는 것을 고려한다.In certain embodiments, the first service may be associated with a monitor. Determining that the first service needs to be restarted may be based on the monitor. In certain embodiments, determining that the first service needs to be restarted may be based on an indication that the first service is unresponsive. By way of example and not limitation, a conflict of a service may cause the service to become unresponsive. In certain embodiments, restarting the first service may not require restarting the one or more microkernels or the second services. One or more microkernels or second services may be components of an operating system. Although this disclosure describes determining particular restarts via particular systems in particular ways, this disclosure contemplates determining any suitable restarts via any suitable system in any suitable manner.

특정한 실시예들에서, 핸들을 액세스하는 것은 복수의 서비스들에 대응하는 복수의 엔트리들을 포함한 서비스-키 인덱스를 액세스하는 것을 포함할 수 있다. 서비스-키 인덱스에서 각각의 엔트리는 서비스 식별자 및 상기 서비스 식별자와 연관된 키를 포함할 수 있다. 특정한 실시예들에서, 제1 서비스는 제1 서비스 식별자와 연관될 수 있다. 따라서, 핸들을 액세스하는 것은 다음의 단계들을 추가로 포함할 수 있다. 첫 번째로, 운영 시스템은, 제1 서비스 식별자에 기초하여, 서비스-키 인덱스로부터 제1 키를 식별할 수 있다. 운영 시스템은 그 후, 식별된 제1 키에 기초하여, 복수의 서비스들과 연관된 복수의 체크포인트들을 참조하는 복수의 핸들들로부터 상기 핸들을 검색할 수 있다. 본 개시는 특정한 방식들로 특정한 시스템들을 통해 특정한 인덱스들을 액세스하는 것을 설명하지만, 본 개시는 임의의 적절한 방식으로 임의의 적절한 시스템을 통해 임의의 적절한 인덱스를 액세스하는 것을 고려한다. In certain embodiments, accessing the handle may include accessing a service-key index comprising a plurality of entries corresponding to the plurality of services. Each entry in the service-key index may include a service identifier and a key associated with the service identifier. In certain embodiments, the first service may be associated with a first service identifier. Accordingly, accessing the handle may further include the following steps. First, the operating system may identify the first key from the service-key index, based on the first service identifier. The operating system may then retrieve, based on the identified first key, the handle from the plurality of handles referencing a plurality of checkpoints associated with the plurality of services. While this disclosure describes accessing particular indices through particular systems in particular ways, this disclosure contemplates accessing any suitable index through any suitable system in any suitable manner.

도 1은 서비스를 재시작하는 것과 연관된 핸들 테이블 값들의 재구성의 예시적인 다이어그램 흐름(100)을 예시한다. 특정한 실시예들에서, 핸들은 오브젝트를 가리킬 수 있으며 마이크로커널(104)에서 실제 오브젝트(102) 자체로 구성될 수 있다. 마이크로커널(104)은 새로운 서비스에 대한 하나 이상의 핸들들과 연관된 핸들 테이블(106)을 생성할 수 있다. 도 1에 디스플레이된 바와 같이, 새로운 서비스는 두 개의 핸들들, 즉 H1 및 H2를 가질 수 있는 S1로 표시될 수 있다. 핸들 테이블(T1)은 두 개의 핸들들에 대해 생성될 수 있다. 마이크로커널(104)은 핸들들을 서비스에 대한 핸들 테이블(106)에서의 핸들 값들로 변환할 필요가 있을 수 있다. 그러므로, 핸들은 마이크로커널(104)이 핸들 테이블(106)을 통해 인덱싱할 수 있는 불분명한 정수를 가질 수 있다. 특정한 실시예들에서, 각각의 핸들은 핸들 테이블(106)에 저장된 정보를 가질 수 있다. 핸들과 연관된 정보는 핸들 ID(108)를 포함할 수 있으며, 이것은 인덱스, 생성 필드, 및 오프셋 필드를 추가로 포함할 수 있다. 도 1에 표시된 바와 같이, 각각의 핸들은 오브젝트(102)를 가리킬 수 있으며, 즉 H1은 오브젝트 1(obj1)을 가리키며 H2는 오브젝트 2(obj2)를 가리킨다. 핸들 테이블(106)에서 각각의 핸들에 대한 핸들 값들은 서비스가 재시작하는 경우 변할 수 있다. 그러나, 핸들들의 인덱스는 동일한 채로 있을 수 있다. 다시 말해서, 서비스가 전에 가졌던 불분명한 정수는 재생성된 핸들 테이블(106)에서의 어떤 것에 매핑되지 않을 수 있으며 마이크로커널(104)은 핸들이 가리키는 오브젝트(102)의 위치를 찾을 수 없을 수 있다. 그 결과, 운영 시스템에 의해 제공된 지속 가능한 서비스는 상태를 체크포인트할 때, 핸들들의 리스트가 마이크로커널(104)에 또한 저장되어야 하며 핸들 테이블(106)은 서비스가 재시작할 때 이들 핸들들에 대해 재생성되어야 한다는 것을 보장해야 한다. 도 2에 디스플레이되는 바와 같이, 마이크로커널(104)은 체크포인트 결함 면적(110)에서 오브젝트들(102)을 가리키는 두 개의 핸들들을 저장할 수 있다. 도 1에 디스플레이되는 바와 같이, 두 개의 핸들들을 저장하는 것은 핸들들의 레코드, 즉 H'1 및 H'2를 야기할 수 있다. 특정한 실시예들에서, 서비스가 충돌할 때, 그것의 핸들 테이블(106)은 사라질 수 있다. 서비스가 재시작할 때, 그것은 특별한 공간(즉, 체크포인트 결함 영역(110))을 되찾을 수 있다. 도 1에 표시된 바와 같이, 재시작된 서비스는 SN +1로서 표시된다. 재시작된 서비스는 두 개의 핸들들(Hr 및 Hs)을 할당받을 수 있다. 마이크로커널(104)은 도 1에서 TN+1로 표시된, 재시작된 서비스에 대한 핸들 테이블(106)을 재생성함으로써 이들 핸들들이 재시작된 서비스에서 여전히 활성 핸들들임을 보장할 필요가 있을 수 있다. 본 개시는 특정한 방식들로 특정한 핸들 테이블들을 재생성하는 특정한 다이어그램 흐름을 설명하지만, 본 개시는 임의의 적절한 방식으로 임의의 적절한 핸들 테이블을 재생성하는 임의의 적절한 다이어그램 흐름을 고려한다.1 illustrates an example diagram flow 100 of reconfiguration of handle table values associated with restarting a service. In certain embodiments, the handle may point to an object and may consist of the real object 102 itself in the microkernel 104 . The microkernel 104 may create a handle table 106 associated with one or more handles to the new service. As displayed in FIG. 1 , the new service may be represented by S 1 , which may have two handles, H 1 and H 2 . A handle table T 1 may be created for two handles. The microkernel 104 may need to convert handles to handle values in the handle table 106 for the service. Thus, the handle may have an opaque integer that the microkernel 104 may index through the handle table 106 . In certain embodiments, each handle may have information stored in the handle table 106 . Information associated with the handle may include a handle ID 108 , which may further include an index, create field, and an offset field. 1 , each handle may point to an object 102 , ie, H 1 points to object 1 (obj 1 ) and H 2 points to object 2 (obj 2 ). The handle values for each handle in the handle table 106 may change when the service restarts. However, the indexes of the handles may remain the same. In other words, an opaque integer that the service had before may not map to anything in the regenerated handle table 106 and the microkernel 104 may not be able to locate the object 102 the handle points to. As a result, when a durable service provided by the operating system checkpoints state, a list of handles must also be stored in the microkernel 104 and the handle table 106 is recreated for these handles when the service restarts. should be guaranteed to be As displayed in FIG. 2 , the microkernel 104 may store two handles pointing to the objects 102 in the checkpoint defect area 110 . As displayed in FIG. 1 , storing two handles may result in a record of handles, ie H′ 1 and H′ 2 . In certain embodiments, when a service crashes, its handle table 106 may disappear. When the service restarts, it may reclaim the special space (ie, checkpoint faulty area 110 ). As indicated in FIG. 1 , the restarted service is indicated as S N +1 . The restarted service may be assigned two handles (H r and H s ). The microkernel 104 may need to ensure that these handles are still active handles in the restarted service by re-creating the handle table 106 for the restarted service, denoted T N+1 in FIG. 1 . While this disclosure describes a particular diagram flow for re-creating particular handle tables in particular ways, this disclosure contemplates any suitable diagram flow for re-creating any suitable handle table in any suitable manner.

도 2는 서비스의 상태들을 회복시키기 위한 예시적인 방법(200)을 예시한다. 방법은 단계 210에서 시작할 수 있으며, 여기에서 운영 시스템은 제1 서비스에 대해, 체크포인트를 참조하는 핸들을 생성할 수 있다. 단계 220에서, 운영 시스템은 핸들을 제1 서비스로 전송할 수 있으며, 여기에서 상기 핸들은 체크포인트에서 제1 서비스의 하나 이상의 상태들을 저장하기 위해 제1 서비스에 의해 사용되도록 구성된다. 단계 230에서, 운영 시스템은 제1 서비스가 재시작될 필요가 있다고 결정할 수 있다. 단계 240에서, 운영 시스템은 제1 서비스를 재시작할 수 있다. 단계 250에서, 운영 시스템은 체크포인트에 대한 핸들을 액세스할 수 있다. 단계 260에서, 운영 시스템은 체크포인트에 대한 핸들을 재시작된 제1 서비스로 전송할 수 있으며, 여기에서 체크포인트에 대한 핸들은 하나 이상의 상태들을 회복시키기 위해 재시작된 제1 서비스에 의해 사용되도록 구성된다. 특정한 실시예들은 적절한 경우, 도 2의 방법의 하나 이상의 단계들을 반복할 수 있다. 본 개시는 도 2의 방법의 특정한 단계들을 특정한 순서로 발생하는 것으로서 설명하고 예시하지만, 본 개시는 임의의 적절한 순서로 발생하는 도 2의 방법의 임의의 적절한 단계들을 고려한다. 게다가, 본 개시는 도 2의 방법의 특정한 단계들을 포함한 서비스의 상태들을 회복시키기 위한 예시적인 방법을 설명하고 예시하지만, 본 개시는 적절한 경우, 도 2의 방법의 단계들의 모두, 일부를 포함하거나, 또는 포함하지 않을 수 있는, 임의의 적절한 단계들을 포함한 서비스의 상태들을 회복시키기 위한 임의의 적절한 방법을 고려한다. 더욱이, 본 개시는 도 2의 방법의 특정한 단계들을 실행하는 특정한 구성요소들, 디바이스들, 또는 시스템들을 설명하고 예시하지만, 본 개시는 도 2의 방법의 임의의 적절한 단계들을 실행하는 임의의 적절한 구성요소들, 디바이스들, 또는 시스템들의 임의의 적절한 조합을 고려한다. 2 illustrates an example method 200 for restoring states of service. The method may begin at step 210 , where the operating system may create, for the first service, a handle referencing the checkpoint. In step 220, the operating system may send a handle to the first service, wherein the handle is configured to be used by the first service to store one or more states of the first service at a checkpoint. In step 230, the operating system may determine that the first service needs to be restarted. In step 240 , the operating system may restart the first service. At step 250, the operating system can access the handle to the checkpoint. At step 260 , the operating system may send a handle to the checkpoint to the restarted first service, wherein the handle to the checkpoint is configured for use by the restarted first service to restore one or more states. Certain embodiments may repeat one or more steps of the method of FIG. 2 as appropriate. While this disclosure describes and illustrates specific steps of the method of FIG. 2 as occurring in a specific order, this disclosure contemplates any suitable steps of the method of FIG. 2 occurring in any suitable order. Moreover, while this disclosure describes and illustrates an exemplary method for restoring states of service, including specific steps of the method of FIG. 2 , this disclosure includes, where appropriate, all, some, or all of the steps of the method of FIG. Any suitable method for restoring states of service is contemplated, including any suitable steps, which may or may not include. Moreover, while this disclosure describes and illustrates specific components, devices, or systems performing specific steps of the method of FIG. 2 , this disclosure provides for any suitable configuration for performing any suitable steps of the method of FIG. 2 . Any suitable combination of elements, devices, or systems is contemplated.

본 발명의 실시예들은 인공 현실 시스템을 포함하거나 또는 그것과 함께 구현될 수 있다. 인공 현실은 사용자로의 프리젠테이션 이전에 몇몇 방식으로 조정되어 온 현실의 형태이며, 이것은 예컨대 가상 현실(VR), 증강 현실(AR), 혼합 현실(MR), 하이브리드 현실, 또는 그것의 몇몇 조합 및/또는 파생물을 포함할 수 있다. 인공 현실 콘텐트는 완전히 생성된 콘텐트 또는 캡처된 콘텐트(예컨대, 실-세계 사진들)와 조합된 생성 콘텐트를 포함할 수 있다. 인공 현실 콘텐트는 비디오, 오디오, 햅틱 피드백, 또는 그것의 몇몇 조합을 포함할 수 있으며, 그 중 임의의 것은 다일 채널에서 또는 다수의 채널들에서(뷰어에게 3-차원 효과를 생성하는 스테레오 비디오와 같은) 제공될 수 있다. 부가적으로, 몇몇 실시예들에서, 인공 현실은 예컨대, 인공 현실에서 콘텐트를 생성하기 위해 사용되며 및/또는 인공 현실에서 사용되는(예컨대, 그것에 활동들을 수행하는) 애플리케이션들, 제품들, 액세서리들, 서비스들, 또는 그것의 몇몇 조합과 연관될 수 있다. 인공 현실 콘텐트를 제공하는 인공 현실 시스템은, 호스트 컴퓨터 시스템에 연결된 헤드-장착 디스플레이(HMD), 독립형 HMD, 이동 디바이스 또는 컴퓨팅 시스템, 또는 하나 이상의 뷰어들에게 인공 현실 콘텐트를 제공할 수 있는 임의의 다른 하드웨어 플랫폼을 포함한, 다양한 플랫폼들 상에서 구현될 수 있다.Embodiments of the present invention may include or be implemented with an artificial reality system. Artificial reality is a form of reality that has been adjusted in some way prior to presentation to a user, such as virtual reality (VR), augmented reality (AR), mixed reality (MR), hybrid reality, or some combination thereof and / or derivatives. Artificial reality content may include fully generated content or generated content combined with captured content (eg, real-world photos). Artificial reality content may include video, audio, haptic feedback, or some combination thereof, any of which may be in a single channel or in multiple channels (such as stereo video creating a three-dimensional effect to the viewer). ) can be provided. Additionally, in some embodiments, artificial reality is, for example, used to create content in and/or used in (eg, performing activities on) applications, products, accessories in artificial reality. , services, or some combination thereof. An artificial reality system that provides artificial reality content may include a head-mounted display (HMD) coupled to a host computer system, a standalone HMD, a mobile device or computing system, or any other capable of providing artificial reality content to one or more viewers. It may be implemented on a variety of platforms, including hardware platforms.

도 3은 예시적인 컴퓨터 시스템(300)을 예시한다. 특정한 실시예들에서, 하나 이상의 컴퓨터 시스템들(300)은 본 출원에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 수행한다. 특정한 실시예들에서, 하나 이상의 컴퓨터 시스템들(300)은 본 출원에서 설명되거나 또는 예시된 기능을 제공한다. 특정한 실시예들에서, 하나 이상의 컴퓨터 시스템들(300) 상에서 구동하는 소프트웨어는 본 출원에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 수행하거나 또는 본 출원에서 설명되거나 또는 예시된 기능을 제공한다. 특정한 실시예들은 하나 이상의 컴퓨터 시스템들(300)의 하나 이상의 부분들을 포함한다. 본 출원에서, 컴퓨터 시스템에 대한 참조는 적절한 경우, 컴퓨팅 디바이스를 포함하며, 그 반대 또한 마찬가지일 수 있다. 게다가, 컴퓨터 시스템에 대한 참조는 적절한 경우, 하나 이상의 컴퓨터 시스템들을 포함할 수 있다.3 illustrates an example computer system 300 . In certain embodiments, one or more computer systems 300 perform one or more steps of one or more methods described or illustrated herein. In certain embodiments, one or more computer systems 300 provide the functionality described or illustrated herein. In certain embodiments, software running on one or more computer systems 300 performs one or more steps of one or more methods described or illustrated herein or provides functionality described or illustrated herein. . Certain embodiments include one or more portions of one or more computer systems 300 . In this application, reference to a computer system includes, where appropriate, computing devices and vice versa. Moreover, reference to a computer system may include one or more computer systems, where appropriate.

본 개시는 임의의 적절한 수의 컴퓨터 시스템들(300)을 고려한다. 본 개시는 임의의 적절한 물리적 형태를 취하는 컴퓨터 시스템(300)을 고려한다. 제한으로서가 아닌 예로서, 컴퓨터 시스템(300)은 내장형 컴퓨터 시스템, 시스템-온-칩(SOC), 단일-보드 컴퓨터 시스템(SBC)(예를 들어, 컴퓨터-온-모듈(COM) 또는 시스템-온-모듈(SOM)과 같은), 데스크탑 컴퓨터 시스템, 랩탑 또는 노트북 컴퓨터 시스템, 대화형 키오스크, 메인프레임, 컴퓨터 시스템들의 메시, 이동 전화, 개인용 디지털 보조기(PDA), 서버, 태블릿 컴퓨터 시스템, 증강/가상 현실 디바이스, 또는 이들 중 둘 이상의 조합일 수 있다. 적절한 경우, 컴퓨터 시스템(300)은 하나 이상의 컴퓨터 시스템들(300)을 포함하고; 통합형 또는 분산형이고; 다수의 위치들을 포괄하고; 다수의 기계들을 포괄하고; 다수의 데이터 센터들을 포괄하거나; 또는 하나 이상의 네트워크들에서 하나 이상의 클라우드 구성요소들을 포함할 수 있는, 클라우드에 존재할 수 있다. 적절한 경우, 하나 이상의 컴퓨터 시스템들(300)은 상당한 공간적 또는 시간적 제한 없이, 본 출원에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 수행할 수 있다. 제한으로서가 아닌 예로서, 하나 이상의 컴퓨터 시스템들(300)은 본 출원에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 실시간으로 또는 배치 모드에서 수행할 수 있다. 하나 이상의 컴퓨터 시스템들(300)은 적절한 경우, 본 출원에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 상이한 시간들에서 또는 상이한 위치들에서 수행할 수 있다. This disclosure contemplates any suitable number of computer systems 300 . This disclosure contemplates computer system 300 taking any suitable physical form. By way of example, and not limitation, computer system 300 may be an embedded computer system, a system-on-chip (SOC), a single-board computer system (SBC) (eg, a computer-on-module (COM) or a system- on-modules (SOMs), desktop computer systems, laptop or notebook computer systems, interactive kiosks, mainframes, meshes of computer systems, mobile phones, personal digital assistants (PDAs), servers, tablet computer systems, augmented/ It may be a virtual reality device, or a combination of two or more thereof. Where appropriate, computer system 300 includes one or more computer systems 300 ; integrated or distributed; encompasses multiple locations; encompasses multiple machines; span multiple data centers; or may reside in a cloud, which may include one or more cloud components in one or more networks. Where appropriate, one or more computer systems 300 may perform one or more steps of one or more methods described or illustrated herein without significant spatial or temporal limitations. By way of example and not limitation, one or more computer systems 300 may perform one or more steps of one or more methods described or illustrated herein in real time or in batch mode. One or more computer systems 300 may perform one or more steps of one or more methods described or illustrated herein at different times or at different locations, as appropriate.

특정한 실시예들에서, 컴퓨터 시스템(300)은 프로세서(302), 메모리(304), 저장장치(306), 입력/출력(I/O) 인터페이스(308), 통신 인터페이스(310), 및 버스(312)를 포함한다. 본 개시는 특정한 배열로 특정한 수의 특정한 구성요소들을 가진 특정한 컴퓨터 시스템을 설명하고 예시하지만, 본 개시는 임의의 적절한 배열로 임의의 적절한 수의 임의의 적절한 구성요소들을 가진 임의의 적절한 컴퓨터 시스템을 고려한다. In certain embodiments, computer system 300 includes processor 302 , memory 304 , storage 306 , input/output (I/O) interface 308 , communication interface 310 , and a bus ( 312). While this disclosure describes and exemplifies specific computer systems having a specific number of specific components in a specific arrangement, this disclosure contemplates any suitable computer system having any suitable number of any suitable components in any suitable arrangement. do.

특정한 실시예들에서, 프로세서(302)는 컴퓨터 프로그램을 구성하는 것들과 같은, 지시들을 실행하기 위한 하드웨어를 포함한다. 제한으로서가 아닌 예로서, 지시들을 실행하기 위해, 프로세서(302)는 내부 레지스터, 내부 캐시, 메모리(304), 또는 저장장치(306)로부터 지시들을 검색(또는 인출)하고; 그것들을 디코딩하고 실행하며; 그 후 하나 이상의 결과들을 내부 레지스터, 내부 캐시, 메모리(304), 또는 저장장치(306)로 기록할 수 있다. 특정한 실시예들에서, 프로세서(302)는 데이터, 지시들, 또는 어드레스들을 위한 하나 이상의 내부 캐시들을 포함할 수 있다. 본 개시는 적절한 경우, 임의의 적절한 수의 임의의 적절한 내부 캐시들을 포함한 프로세서(302)를 고려한다. 제한으로서가 아닌 예로서, 프로세서(302)는 하나 이상의 지시 캐시들, 하나 이상의 데이터 캐시들, 및 하나 이상의 변환 색인 버퍼들(TLB들)을 포함할 수 있다. 지시 캐시들에서 지시들은 메모리(304) 또는 저장장치(306)에서의 지시들의 사본들일 수 있으며, 지시 캐시들은 프로세서(302)에 의한 이들 지시들의 검색의 속도를 높일 수 있다. 데이터 캐시들에서의 데이터는 동작하도록 프로세서(302)에서 실행한 지시들에 대한 메모리(304) 또는 저장장치(306)에서의 데이터의 사본들; 프로세서(302)에서 실행한 뒤이은 지시들에 의한 액세스를 위해 또는 메모리(304) 또는 저장장치(306)로 기록하기 위해 프로세서(302)에서 실행된 이전 지시들의 결과들; 또는 다른 적절한 데이터일 수 있다. 데이터 캐시들은 프로세서(302)에 의한 판독 또는 기록 동작들의 속도를 높일 수 있다. TLB들은 프로세서(302)에 대한 가상-어드레스 변환의 속도를 높일 수 있다. 특정한 실시예들에서, 프로세서(302)는 데이터, 지시들, 또는 어드레스들에 대한 하나 이상의 내부 레지스터들을 포함할 수 있다. 본 개시는 적절한 경우, 임의의 적절한 수의 임의의 적절한 내부 레지스터들을 포함한 프로세서(302)를 고려한다. 적절한 경우, 프로세서(302)는 하나 이상의 산술 논리 유닛들(ALU들)을 포함하고; 다중-코어 프로세서이거나; 또는 하나 이상의 프로세서들(302)을 포함할 수 있다. 본 개시는 특정한 프로세서를 설명하고 예시하지만, 본 개시는 임의의 적절한 프로세서를 고려한다.In certain embodiments, processor 302 includes hardware for executing instructions, such as those comprising a computer program. By way of example and not limitation, to execute instructions, processor 302 retrieves (or fetches) instructions from an internal register, internal cache, memory 304 , or storage 306 ; decode and execute them; One or more results may then be written to an internal register, internal cache, memory 304 , or storage 306 . In certain embodiments, the processor 302 may include one or more internal caches for data, instructions, or addresses. This disclosure contemplates a processor 302 including any suitable number of any suitable internal caches, where appropriate. By way of example and not limitation, processor 302 may include one or more instruction caches, one or more data caches, and one or more translation lookaside buffers (TLBs). Instructions in instruction caches may be copies of instructions in memory 304 or storage 306 , and instruction caches may speed up retrieval of these instructions by processor 302 . Data in data caches may include copies of data in memory 304 or storage 306 for instructions executed by processor 302 to act; the results of previous instructions executed by the processor 302 for access by instructions executed by the processor 302 or for writing to the memory 304 or storage 306 ; or other suitable data. Data caches may speed up read or write operations by the processor 302 . TLBs may speed up virtual-to-address translation for processor 302 . In certain embodiments, the processor 302 may include one or more internal registers for data, instructions, or addresses. This disclosure contemplates a processor 302 including any suitable number of any suitable internal registers, where appropriate. Where appropriate, processor 302 includes one or more arithmetic logic units (ALUs); is a multi-core processor; or one or more processors 302 . While this disclosure describes and illustrates a particular processor, this disclosure contemplates any suitable processor.

특정한 실시예들에서, 메모리(304)는 프로세서(302)가 실행할 지시들 또는 프로세서(302)가 동작할 데이터를 저장하기 위한 메인 메모리를 포함한다. 제한으로서가 아닌 예로서, 컴퓨터 시스템(300)은 저장장치(306) 또는 또 다른 소스(예를 들어, 또 다른 컴퓨터 시스템(300)과 같은)로부터 메모리(304)로 지시들을 로딩할 수 있다. 프로세서(302)는 그 후 메모리(304)로부터 내부 레지스터 또는 내부 캐시로 지시들을 로딩할 수 있다. 지시들을 실행하기 위해, 프로세서(302)는 내부 레지스터 또는 내부 캐시로부터 지시들을 검색하며 그것들을 디코딩할 수 있다. 지시들의 실행 동안 또는 그 후, 프로세서(302)는 하나 이상의 결과들(중간 또는 최종 결과들일 수 있는)을 내부 레지스터 또는 내부 캐시로 기록할 수 있다. 프로세서(302)는 그 후 이들 결과들 중 하나 이상을 메모리(304)로 기록할 수 있다. 특정한 실시예들에서, 프로세서(302)는 하나 이상의 내부 레지스터들 또는 내부 캐시들에서 또는 메모리(304)에서의 지시들만을 실행하며(저장장치(306) 또는 다른 곳과 대조적으로) 단지 하나 이상의 내부 레지스터들 또는 내부 캐시들에서 또는 메모리(304)에서의 데이터만을 동작시킬 수 있다(저장장치(306) 또는 다른 곳과 대조적으로). 하나 이상의 메모리 버스들(각각은 어드레스 버스 및 데이터 버스를 포함할 수 있다)은 메모리(304)에 프로세서(302)를 결합할 수 있다. 버스(312)는 이하에서 설명되는 바와 같이, 하나 이상의 메모리 버스들을 포함할 수 있다. 특정한 실시예들에서, 하나 이상의 메모리 관리 유닛들(MMU들)은 프로세서(302)와 메모리(304) 사이에 존재하며 프로세서(302)에 의해 요청된 메모리(304)로의 액세스들을 가능하게 한다. 특정한 실시예들에서, 메모리(304)는 랜덤 액세스 메모리(RAM)를 포함할 수 있다. 이러한 RAM은 적절한 경우, 휘발성 메모리일 수 있다. 적절한 경우, 이러한 RAM은 동적 RAM(DRAM) 또는 정적 RAM(SRAM)일 수 있다. 게다가, 적절한 경우, 이러한 RAM은 단일-포트형 또는 다중-포트형 RAM일 수 있다. 본 개시는 임의의 적절한 RAM을 고려한다. 메모리(304)는 적절한 경우, 하나 이상의 메모리들(304)을 포함할 수 있다. 본 개시는 특정한 메모리를 설명하고 예시하지만, 본 개시는 임의의 적절한 메모리를 고려한다.In certain embodiments, memory 304 includes main memory for storing instructions for processor 302 to execute or data for processor 302 to operate on. By way of example and not limitation, computer system 300 may load instructions into memory 304 from storage 306 or another source (eg, such as another computer system 300 ). Processor 302 may then load instructions from memory 304 into an internal register or internal cache. To execute the instructions, the processor 302 may retrieve the instructions from an internal register or internal cache and decode them. During or after execution of instructions, processor 302 may write one or more results (which may be intermediate or final results) to an internal register or internal cache. The processor 302 may then write one or more of these results to the memory 304 . In certain embodiments, processor 302 executes only instructions in memory 304 or in one or more internal registers or internal caches (as opposed to storage 306 or elsewhere) and only executes instructions in one or more internal registers or internal caches (as opposed to storage 306 or elsewhere). It may only operate on data in registers or internal caches or in memory 304 (as opposed to storage 306 or elsewhere). One or more memory buses, each of which may include an address bus and a data bus, may couple the processor 302 to the memory 304 . Bus 312 may include one or more memory buses, as described below. In certain embodiments, one or more memory management units (MMUs) reside between the processor 302 and the memory 304 and enable accesses to the memory 304 requested by the processor 302 . In certain embodiments, memory 304 may include random access memory (RAM). Such RAM may be volatile memory, where appropriate. Where appropriate, such RAM may be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, where appropriate, such RAM may be a single-port type or a multi-port type RAM. This disclosure contemplates any suitable RAM. Memory 304 may include one or more memories 304 as appropriate. While this disclosure describes and illustrates particular memories, this disclosure contemplates any suitable memory.

특정한 실시예들에서, 저장장치(306)는 데이터 또는 지시들에 대한 대용량 저장장치를 포함한다. 제한으로서가 아닌 예로서, 저장장치(306)는 하드 디스크 드라이브(HDD), 플로피 디스크 드라이브, 플래시 메모리, 광학 디스크, 자기-광학 디스크, 자기 테이프, 또는 범용 직렬 버스(USB) 드라이브 또는 이들 중 둘 이상의 조합을 포함한다. 저장장치(306)는 적절한 경우, 착탈 가능한 또는 착탈 가능하지 않은(또는 고정된) 미디어를 포함할 수 있다. 저장장치(306)는 적절한 경우, 컴퓨터 시스템(300)의 내부 또는 외부에 있을 수 있다. 특정한 실시예들에서, 저장장치(306)는 비-휘발성, 고체-상태 메모리이다. 특정한 실시예들에서, 저장장치(306)는 판독-전용 메모리(ROM)를 포함한다. 적절한 경우, 이러한 ROM은 마스크-프로그램된 ROM, 프로그램 가능한 ROM(PROM), 소거 가능한 PROM(EPROM), 전기적으로 소거 가능한 PROM(EEPROM), 전기적으로 변경 가능한 ROM(EAROM), 또는 플래시 메모리 또는 이들 중 둘 이상의 조합을 포함한다. 본 개시는 임의의 적절한 물리적 형태를 취하는 대용량 저장장치(306)를 고려한다. 저장장치(306)는 적절한 경우, 프로세서(302)와 저장장치(306) 간의 통신을 가능하게 하는 하나 이상의 저장 제어 유닛들을 포함할 수 있다. 적절한 경우, 저장장치(306)는 하나 이상의 저장장치들(306)을 포함할 수 있다. 본 개시는 특정한 저장장치를 기술하고 예시하지만, 본 개시는 임의의 적절한 저장장치를 고려한다.In certain embodiments, storage 306 includes mass storage for data or instructions. By way of example, and not limitation, storage device 306 may be a hard disk drive (HDD), floppy disk drive, flash memory, optical disk, magneto-optical disk, magnetic tape, or universal serial bus (USB) drive, or both. Combinations of the above are included. Storage 306 may include removable or non-removable (or fixed) media as appropriate. Storage 306 may be internal or external to computer system 300 as appropriate. In certain embodiments, storage 306 is a non-volatile, solid-state memory. In certain embodiments, storage 306 includes read-only memory (ROM). Where appropriate, such ROM may be mask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM), electrically changeable ROM (EAROM), or flash memory or any of these Combinations of two or more are included. This disclosure contemplates mass storage 306 taking any suitable physical form. Storage 306 may include one or more storage control units that enable communication between processor 302 and storage 306 , where appropriate. Where appropriate, storage 306 may include one or more storage devices 306 . While this disclosure describes and illustrates specific storage devices, this disclosure contemplates any suitable storage device.

특정한 실시예들에서, I/O 인터페이스(308)는 컴퓨터 시스템(300)과 하나 이상의 I/O 디바이스들 간의 통신을 위해 하나 이상의 인터페이스들을 제공하는, 하드웨어, 소프트웨어, 또는 둘 모두를 포함한다. 컴퓨터 시스템(300)은 적절한 경우, 이들 I/O 디바이스들 중 하나 이상을 포함할 수 있다. 이들 I/O 디바이스들 중 하나 이상은 사람과 컴퓨터 시스템(300) 간의 통신을 가능하게 할 수 있다. 제한으로서가 아닌 예로서, I/O 디바이스는 키보드, 키패드, 마이크로폰, 모니터, 마우스, 프린터, 스캐너, 스피커, 스틸 카메라, 스타일러스, 태블릿, 터치 스크린, 트랙볼, 비디오 카메라, 또 다른 적절한 I/O 디바이스 또는 이들 중 둘 이상의 조합을 포함할 수 있다. I/O 디바이스는 하나 이상의 센서들을 포함할 수 있다. 본 개시는 임의의 적절한 I/O 디바이스들 및 그것들을 위한 임의의 적절한 I/O 인터페이스들(308)을 고려한다. 적절한 경우, I/O 인터페이스들(308)은 프로세서(302)가 이들 I/O 디바이스들 중 하나 이상을 구동할 수 있게 하는 하나 이상의 디바이스 또는 소프트웨어 드라이버들을 포함할 수 있다. I/O 인터페이스(308)는 적절한 경우, 하나 이상의 I/O 인터페이스들(308)을 포함할 수 있다. 본 개시는 특정한 I/O 인터페이스를 설명하고 예시하지만, 본 개시는 임의의 적절한 I/O 인터페이스를 고려한다.In certain embodiments, I/O interface 308 includes hardware, software, or both, that provides one or more interfaces for communication between computer system 300 and one or more I/O devices. Computer system 300 may include one or more of these I/O devices as appropriate. One or more of these I/O devices may enable communication between a person and the computer system 300 . By way of example and not limitation, an I/O device may be a keyboard, keypad, microphone, monitor, mouse, printer, scanner, speaker, still camera, stylus, tablet, touch screen, trackball, video camera, other suitable I/O device. or a combination of two or more thereof. An I/O device may include one or more sensors. This disclosure contemplates any suitable I/O devices and any suitable I/O interfaces 308 for them. Where appropriate, I/O interfaces 308 may include one or more device or software drivers that enable processor 302 to drive one or more of these I/O devices. I/O interface 308 may include one or more I/O interfaces 308 as appropriate. While this disclosure describes and illustrates specific I/O interfaces, this disclosure contemplates any suitable I/O interface.

특정한 실시예들에서, 통신 인터페이스(310)는 컴퓨터 시스템(300) 및 하나 이상의 다른 컴퓨터 시스템들(300) 또는 하나 이상의 네트워크들 사이에서 통신(예를 들어, 패킷-기반 통신과 같은)을 위한 하나 이상의 인터페이스들을 제공하는 하드웨어, 소프트웨어, 또는 둘 모두를 포함한다. 제한으로서가 아닌 예로서, 통신 인터페이스(310)는 이더넷 또는 다른 와이어-기반 네트워크와 통신하기 위한 네트워크 인터페이스 제어기(NIC) 또는 네트워크 어댑터 또는 WI-FI 네트워크와 같은, 무선 네트워크와 통신하기 위한 무선 NIC(WNIC) 또는 무선 어댑터를 포함할 수 있다. 본 개시는 임의의 적절한 네트워크 및 그것을 위한 임의의 적절한 통신 인터페이스(310)를 고려한다. 제한으로서가 아닌 예로서, 컴퓨터 시스템(300)은 애드 혹 네트워크, 개인 영역 네트워크(PAN), 근거리 네트워크(LAN), 광역 네트워크(WAN), 대도시 영역 네트워크(MAN), 또는 인터넷의 하나 이상의 부분들 또는 이들 중 둘 이상의 조합과 통신할 수 있다. 이들 네트워크들 중 하나 이상의 하나 이상의 부분들은 유선 또는 무선일 수 있다. 예로서, 컴퓨터 시스템(300)은 무선 PAN(WPAN)(예를 들어, BLUETOOTH WPAN과 같은), WI-FI 네트워크, WI-MAX 네트워크, 셀룰러 전화 네트워크(예를 들어, 이동 통신들을 위한 전역적 시스템(GSM) 네트워크), 또는 다른 적절한 무선 네트워크 또는 이들 중 둘 이상의 조합과 통신할 수 있다. 컴퓨터 시스템(300)은 적절한 경우, 이들 네트워크들 중 임의의 것을 위한 임의의 적절한 통신 인터페이스(310)를 포함할 수 있다. 통신 인터페이스(310)는 적절한 경우, 하나 이상의 통신 인터페이스들(310)을 포함할 수 있다. 본 개시는 특정한 통신 인터페이스를 설명하고 예시하지만, 본 개시는 임의의 적절한 통신 인터페이스를 고려한다.In certain embodiments, communication interface 310 is one for communication (eg, such as packet-based communication) between computer system 300 and one or more other computer systems 300 or one or more networks. hardware, software, or both providing the above interfaces. By way of example and not limitation, communication interface 310 may include a network interface controller (NIC) for communicating with an Ethernet or other wire-based network or a wireless NIC for communicating with a wireless network, such as a network adapter or WI-FI network ( WNIC) or wireless adapter. This disclosure contemplates any suitable network and any suitable communication interface 310 therefor. By way of example, and not limitation, computer system 300 may be an ad hoc network, a personal area network (PAN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), or one or more portions of the Internet. or a combination of two or more of these. One or more portions of one or more of these networks may be wired or wireless. By way of example, computer system 300 may include a wireless PAN (WPAN) (eg, BLUETOOTH WPAN), a WI-FI network, a WI-MAX network, a cellular telephone network (eg, a global system for mobile communications). (GSM) network), or other suitable wireless network, or a combination of two or more thereof. Computer system 300 may include any suitable communication interface 310 for any of these networks, where appropriate. Communication interface 310 may include one or more communication interfaces 310 as appropriate. Although this disclosure describes and illustrates specific communication interfaces, this disclosure contemplates any suitable communication interface.

특정한 실시예들에서, 버스(312)는 컴퓨터 시스템(300)의 구성요소들을 서로 결합하는 하드웨어, 소프트웨어, 또는 둘 모두를 포함한다. 제한으로서가 아닌 예로서, 버스(312)는 가속화 그래픽 포트(AGP) 또는 다른 그래픽 버스, 강화된 산업 표준 아키텍처(EISA) 버스, 프론트-사이드 버스(FSB), HYPERTRANSPORT(HT) 상호연결, 산업 표준 아키텍처(ISA) 버스, INFINIBAND 상호연결, 로우-핀-카운트(LPC) 버스, 메모리 버스, 마이크로 채널 아키텍처(MCA) 버스, 주변 구성요소 상호연결(PCI) 버스, PCI-익스프레스(PCIe) 버스, 직렬 고급 기술 접속(SATA) 버스, 비디오 전자장치 표준 협회 로컬(VLB) 버스, 또는 또 다른 적절한 버스 또는 이들 중 둘 이상의 조합을 포함할 수 있다. 버스(312)는 적절한 경우, 하나 이상의 버스들(312)을 포함할 수 있다. 본 개시는 특정한 버스를 설명하고 예시하지만, 본 개시는 임의의 적절한 버스 또는 상호연결을 고려한다.In certain embodiments, bus 312 includes hardware, software, or both that couple components of computer system 300 together. By way of example, and not limitation, bus 312 may be an accelerated graphics port (AGP) or other graphics bus, an enhanced industry standard architecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT) interconnect, an industry standard Architecture (ISA) Bus, INFINIBAND Interconnect, Low-Pin-Count (LPC) Bus, Memory Bus, Micro Channel Architecture (MCA) Bus, Peripheral Component Interconnect (PCI) Bus, PCI-Express (PCIe) Bus, Serial an advanced technology access (SATA) bus, a Video Electronics Standards Association Local (VLB) bus, or another suitable bus, or a combination of two or more thereof. Bus 312 may include one or more buses 312 as appropriate. Although this disclosure describes and illustrates a particular bus, this disclosure contemplates any suitable bus or interconnection.

본 출원에서, 컴퓨터-판독 가능한 비-일시적 저장 매체 또는 미디어는 적절한 경우, 하나 이상의 반도체-기반 또는 다른 집적 회로들(IC들)(예를 들어, 필드-프로그램 가능한 게이트 어레이들(FPGA들) 또는 애플리케이션-특정 IC들(ASIC들)과 같은), 하드 디스크 드라이브들(HDD들), 하이브리드 하드 드라이브들(HHD들), 광학 디스크들, 광학 디스크 드라이브들(ODD들), 자기-광학 디스크들, 자기-과학 드라이브들, 플로피 디스켓들, 플로피 디스크 드라이브들(FDD들), 자기 테이프들, 고체-상태 들이브들(SSD들), RAM-드라이브들, SECURE DIGITAL 카드들 또는 드라이브들, 임의의 다른 적절한 컴퓨터-판독 가능한 비-일시적 저장 미디어, 또는 이들 중 둘 이상의 임의의 적절한 조합을 포함할 수 있다. 컴퓨터-판독 가능한 비-일시적 저장 매체는 적절한 경우, 휘발성, 비-휘발성, 또는 휘발성 및 비-휘발성의 조합일 수 있다. In the present application, a computer-readable non-transitory storage medium or media, where appropriate, includes one or more semiconductor-based or other integrated circuits (ICs) (eg, field-programmable gate arrays (FPGAs) or application-specific ICs (such as ASICs), hard disk drives (HDDs), hybrid hard drives (HHDs), optical disks, optical disk drives (ODDs), magneto-optical disks, Magnetic-science drives, floppy diskettes, floppy disk drives (FDDs), magnetic tapes, solid-state drives (SSDs), RAM-drives, SECURE DIGITAL cards or drives, any other suitable computer-readable non-transitory storage media, or any suitable combination of two or more thereof. A computer-readable non-transitory storage medium can be volatile, non-volatile, or a combination of volatile and non-volatile, where appropriate.

본 출원에서, "또는"은 달리 명확하게 표시되거나 또는 맥락에 의해 달리 표시되지 않는다면, 포괄적이며 배타적이지 않다. 그러므로, 본 출원에서, "A 또는 B"는 달리 명확하게 표시되거나 또는 맥락에 의해 달리 표시되지 않는다면, "A, B, 또는 둘 모두"를 의미한다. 그러므로, 본 출원에서, "A 및 B"는 달리 명확하게 표시되거나 또는 맥락에 의해 달리 표시되지 않는다면, "A 및 B, 공동으로 또는 각기"를 의미한다.In this application, "or" is inclusive and not exclusive, unless clearly indicated otherwise or otherwise indicated by context. Therefore, in this application, "A or B" means "A, B, or both," unless expressly indicated otherwise or otherwise indicated by context. Therefore, in this application, "A and B" means "A and B, jointly or each," unless expressly indicated otherwise or otherwise indicated by context.

본 개시의 범위는 이 기술분야에서 통상의 기술자가 이해할 본 출원에서 설명되거나 또는 예시된 예시적인 실시예들에 대한 모든 변화들, 대체들, 변형들, 변경들, 및 수정들을 포함한다. 본 개시의 범위는 본 출원에서 설명되거나 또는 예시된 예시적인 실시예들에 제한되지 않는다. 게다가, 본 개시는 본 출원에서의 각각의 실시예들을 특정한 구성요소들, 요소들, 특징, 기능들, 동작들, 또는 단계들을 포함하는 것으로 설명하고 예시하지만, 이들 실시예들 중 임의의 것은 이 기술분야에서 통상의 기술자가 이해할 본 출원에서 다른 곳에 설명되거나 또는 예시된 구성요소들, 요소들, 특징들, 기능들, 동작들, 또는 단계들 중 임의의 것의 임의의 조합 또는 순열을 포함할 수 있다. 더욱이, 특정한 기능을 수행하도록 적응되고, 배열되고, 가능하고, 구성되고, 가능화되고, 동작 가능하거나 또는 동작적인 장치 또는 시스템 또는 장치 또는 시스템의 구성요소에 대한 첨부된 청구항들에서의 참조는, 상기 장치, 시스템, 또는 구성요소가 그렇게 적응되고, 배열되고, 가능하고, 구성되고, 가능화되고, 동작 가능하거나, 또는 동작적인 한, 그것 또는 상기 특정한 기능이 활성화되고, 턴 온되거나, 또는 잠금 해제되는지에 관계없이, 상기 장치, 시스템, 구성요소를 포함한다. 부가적으로, 본 개시는 특정한 실시예들을 특정한 이점들을 제공하는 것으로 설명하거나 또는 예시하지만, 특정한 실시예들은 이들 이점들 중 일부, 또는 모두를 제공하거나, 또는 제공하지 않을 수 있다. The scope of the present disclosure includes all changes, substitutions, variations, alterations, and modifications to the exemplary embodiments described or illustrated in this application as will be understood by those skilled in the art. The scope of the present disclosure is not limited to the exemplary embodiments described or illustrated in this application. Moreover, although this disclosure describes and illustrates each embodiment in this application as including specific components, elements, feature, functions, operations, or steps, any of these embodiments may include any combination or permutation of any of the components, elements, features, functions, operations, or steps described or illustrated elsewhere in this application as would be understood by one of ordinary skill in the art there is. Moreover, reference in the appended claims to an apparatus or system or component of an apparatus or system adapted, arranged, capable, configured, enabled, operable or operative to perform a particular function, As long as the device, system, or component is so adapted, arranged, enabled, configured, enabled, operable, or operative, it or the particular function is activated, turned on, or locked including the devices, systems and components, whether or not released. Additionally, while this disclosure describes or illustrates certain embodiments as providing certain advantages, certain embodiments may provide some, all, or none of these advantages.

Claims (15)

방법에 있어서,
컴퓨팅 디바이스 상에서 실행하는 운영 시스템에 의해:
제1 서비스에 대해, 체크포인트를 참조하는 핸들을 생성하는 단계;
상기 핸들을 상기 제1 서비스로 전송하는 단계로서, 상기 핸들은 상기 체크포인트에서 상기 제1 서비스의 하나 이상의 상태들을 저장하기 위해 상기 제1 서비스에 의해 사용되도록 구성되는, 상기 핸들을 제1 서비스로 전송하는 단계;
상기 제1 서비스가 재시작될 필요가 있음을 결정하는 단계;
상기 제1 서비스를 재시작하는 단계;
상기 체크포인트에 대한 핸들을 액세스하는 단계; 및
상기 체크포인트에 대한 핸들을 재시작된 제1 서비스로 전송하는 단계로서, 상기 체크포인트에 대한 핸들은 상기 하나 이상의 상태들을 회복시키기 위해 상기 재시작된 제1 서비스에 의해 사용되도록 구성되는, 상기 체크포인트에 대한 핸들을 재시작된 제1 서비스로 전송하는 단계를 포함하는, 방법.
In the method,
by an operating system running on the computing device:
creating, for the first service, a handle referencing the checkpoint;
sending the handle to the first service, wherein the handle is configured to be used by the first service to store one or more states of the first service at the checkpoint. transmitting;
determining that the first service needs to be restarted;
restarting the first service;
accessing a handle to the checkpoint; and
sending a handle to the checkpoint to a restarted first service, wherein the handle to the checkpoint is configured for use by the restarted first service to restore the one or more states. sending a handle to the restarted first service.
제1항에 있어서, 상기 제1 서비스는 모니터와 연관되며, 상기 제1 서비스가 재시작될 필요가 있음을 결정하는 것은 상기 모니터에 기초하는, 방법.The method of claim 1 , wherein the first service is associated with a monitor, and wherein determining that the first service needs to be restarted is based on the monitor. 제1항에 있어서, 상기 체크포인트에 대한 제1 키를 생성하는 단계를 더 포함하며, 상기 체크포인트에 대한 핸들을 액세스하는 것은 상기 제1 키에 기초하는, 방법.The method of claim 1 , further comprising generating a first key for the checkpoint, wherein accessing the handle to the checkpoint is based on the first key. 제1항에 있어서, 상기 제1 서비스는 상기 운영 시스템의 구성요소이며; 및/또는 상기 제1 서비스가 재시작될 필요가 있음을 결정하는 것은 상기 제1 서비스가 무응답이라는 표시에 기초하는, 방법.The method of claim 1 , wherein: the first service is a component of the operating system; and/or determining that the first service needs to be restarted is based on an indication that the first service is unresponsive. 제1항에 있어서, 상기 핸들을 액세스하는 단계는 복수의 서비스들에 대응하는 복수의 엔티티들을 포함한 서비스-키 인덱스를 액세스하는 단계를 포함하며, 상기 서비스-키 인덱스에서의 각각의 엔트리는 서비스 식별자 및 상기 서비스 식별자와 연관된 키를 포함하고;
상기 제1 서비스는 제1 서비스 식별자와 연관되며, 상기 핸들을 액세스하는 단계는:
상기 제1 서비스 식별자에 기초하여, 상기 서비스-키 인덱스로부터 제1 키를 식별하는 단계; 및 상기 식별된 제1 키에 기초하여, 복수의 서비스들과 연관된 복수의 체크포인트들을 참조하는 복수의 핸들들로부터 상기 핸들을 검색하는 단계를 더 포함하는, 방법.
2. The method of claim 1, wherein accessing the handle comprises accessing a service-key index comprising a plurality of entities corresponding to a plurality of services, wherein each entry in the service-key index is a service identifier. and a key associated with the service identifier;
The first service is associated with a first service identifier, and accessing the handle comprises:
identifying a first key from the service-key index based on the first service identifier; and retrieving the handle from a plurality of handles that reference a plurality of checkpoints associated with a plurality of services based on the identified first key.
제1항에 있어서, 상기 하나 이상의 상태들 각각은 데이터 아이템 또는 핸들 중 하나 이상을 포함하는, 방법.The method of claim 1 , wherein each of the one or more states comprises one or more of a data item or a handle. 제1항에 있어서, 상기 제1 서비스를 재시작하는 것은 하나 이상의 마이크로커널들 또는 제2 서비스들을 재시작하는 것을 요구하지 않으며, 상기 하나 이상의 마이크로커널들 또는 제2 서비스들은 상기 운영 시스템의 구성요소들인, 방법.The method of claim 1 , wherein restarting the first service does not require restarting one or more microkernels or second services, the one or more microkernels or second services being components of the operating system. method. 소프트웨어를 포함하는 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어에 있어서,
상기 소프트웨어는 실행될 때:
제1 서비스에 대해, 체크포인트를 참조하는 핸들을 생성하고;
상기 핸들을 상기 제1 서비스로 전송하고 - 상기 핸들은 상기 체크포인트에 상기 제1 서비스의 하나 이상의 상태들을 저장하기 위해 상기 제1 서비스에 의해 사용되도록 구성됨 -;
상기 제1 서비스가 재시작될 필요가 있음을 결정하고;
상기 제1 서비스를 재시작하고;
상기 체크포인트에 대한 핸들을 액세스하고;
상기 체크포인트에 대한 핸들을 재시작된 제1 서비스로 전송하도록 동작 가능하며,
상기 체크포인트에 대한 핸들은 상기 하나 이상의 상태들을 회복시키기 위해 상기 재시작된 제1 서비스에 의해 사용되도록 구성되는, 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어.
One or more computer-readable non-transitory storage media comprising software, comprising:
When the software is run:
create, for the first service, a handle referencing the checkpoint;
send the handle to the first service, the handle configured for use by the first service to store one or more states of the first service at the checkpoint;
determine that the first service needs to be restarted;
restart the first service;
access a handle to the checkpoint;
operable to transmit a handle to the checkpoint to the restarted first service;
and the handle to the checkpoint is configured to be used by the restarted first service to restore the one or more states.
제11항에 있어서, 상기 제1 서비스는 모니터와 연관되며, 상기 제1 서비스가 재시작될 필요가 있음을 결정하는 것은 상기 모니터에 기초하는, 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어.The one or more computer-readable non-transitory storage media of claim 11 , wherein the first service is associated with a monitor, and wherein determining that the first service needs to be restarted is based on the monitor. 제11항에 있어서, 상기 소프트웨어는 또한 실행될 때 상기 체크포인트에 대한 제1 키를 생성하도록 동작 가능하며, 상기 체크포인트에 대한 핸들을 액세스하는 것은 상기 제1 키에 기초하는, 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어.The one or more computer-readable files of claim 11 , wherein the software is further operable to generate a first key for the checkpoint when executed, and wherein accessing a handle to the checkpoint is based on the first key. Possible non-transitory storage media. 제11항에 있어서, 상기 제1 서비스는 상기 운영 시스템의 구성요소이며; 및/또는 상기 제1 서비스가 재시작될 필요가 있음을 결정하는 것은 상기 제1 서비스가 무응답이라는 표시에 기초하는, 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어.12. The method of claim 11, wherein the first service is a component of the operating system; and/or determining that the first service needs to be restarted is based on an indication that the first service is unresponsive. 제11항에 있어서, 상기 핸들을 액세스하는 것은 복수의 서비스들에 대응하는 복수의 엔트리들을 포함한 서비스-키 인덱스를 액세스하는 것을 포함하며, 상기 서비스-키 인덱스에서 각각의 엔트리는 서비스 식별자 및 상기 서비스 식별자와 연관된 키를 포함하고,
상기 제1 서비스는 제1 서비스 식별자와 연관되며, 상기 핸들을 액세스하는 것은:
상기 제1 서비스 식별자에 기초하여, 상기 서비스-키 인덱스로부터 제1 키를 식별하는 것; 및 상기 식별된 제1 키에 기초하여, 복수의 서비스들과 연관된 복수의 체크포인트들을 참조하는 복수의 핸들들로부터 상기 핸들을 검색하는 것을 더 포함하는, 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어.
12. The method of claim 11, wherein accessing the handle comprises accessing a service-key index comprising a plurality of entries corresponding to a plurality of services, wherein each entry in the service-key index includes a service identifier and the service a key associated with the identifier;
The first service is associated with a first service identifier, and accessing the handle comprises:
identifying a first key from the service-key index based on the first service identifier; and, based on the identified first key, retrieving the handle from a plurality of handles referencing a plurality of checkpoints associated with a plurality of services. .
제11항에 있어서, 상기 하나 이상의 상태들 각각은 데이터 아이템 또는 핸들 중 하나 이상을 포함하는, 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어.The one or more computer-readable non-transitory storage media of claim 11 , wherein each of the one or more states comprises one or more of a data item or a handle. 시스템에 있어서,
하나 이상의 프로세서들; 및
상기 프로세서들에 의해 실행 가능한 지시들을 포함한 상기 프로세서들에 결합된 비-일시적 메모리를 포함하며,
상기 프로세서들은 상기 지시들을 실행할 때:
제1 서비스에 대해, 체크포인트를 참조하는 핸들을 생성하고;
상기 핸들을 상기 제1 서비스로 전송하고 - 상기 핸들은 상기 체크포인트에서 상기 제1 서비스의 하나 이상의 상태들을 저장하기 위해 상기 제1 서비스에 의해 사용되도록 구성됨 -;
상기 제1 서비스가 재시작될 필요가 있음을 결정하고;
상기 제1 서비스를 재시작하고;
상기 체크포인트에 대한 핸들을 액세스하고;
상기 체크포인트에 대한 핸들을 재시작된 제1 서비스로 전송하도록 동작 가능하며,
상기 체크포인트에 대한 핸들은 상기 하나 이상의 상태들을 회복시키기 위해 상기 재시작된 제1 서비스에 의해 사용되도록 구성되는, 시스템.
In the system,
one or more processors; and
a non-transitory memory coupled to the processors comprising instructions executable by the processors;
When the processors execute the instructions:
create, for the first service, a handle referencing the checkpoint;
send the handle to the first service, the handle configured for use by the first service to store one or more states of the first service at the checkpoint;
determine that the first service needs to be restarted;
restart the first service;
access a handle to the checkpoint;
operable to transmit a handle to the checkpoint to the restarted first service;
and the handle to the checkpoint is configured for use by the restarted first service to restore the one or more states.
제14항에 있어서, 상기 지시들은, 상기 하나 이상의 프로세서들에 의해 실행될 때, 상기 시스템으로 하여금 제2항 내지 제8항 중 어느 한 항의 방법을 수행하게 하는, 시스템.15. The system of claim 14, wherein the instructions, when executed by the one or more processors, cause the system to perform the method of any one of claims 2-8.
KR1020227000867A 2019-08-01 2020-07-24 How to build a resilient operating system based on sustainable services with kernel support KR20220038053A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/529,678 US11366720B2 (en) 2019-08-01 2019-08-01 Building a resilient operating system based on durable services with kernel support
US16/529,678 2019-08-01
PCT/US2020/043571 WO2021021660A1 (en) 2019-08-01 2020-07-24 Building a resilient operating system based on durable services with kernel support

Publications (1)

Publication Number Publication Date
KR20220038053A true KR20220038053A (en) 2022-03-25

Family

ID=72139659

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227000867A KR20220038053A (en) 2019-08-01 2020-07-24 How to build a resilient operating system based on sustainable services with kernel support

Country Status (6)

Country Link
US (1) US11366720B2 (en)
EP (1) EP4007952A1 (en)
JP (1) JP2022542212A (en)
KR (1) KR20220038053A (en)
CN (1) CN114041120A (en)
WO (1) WO2021021660A1 (en)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6401216B1 (en) * 1998-10-29 2002-06-04 International Business Machines Corporation System of performing checkpoint/restart of a parallel program
US7685172B2 (en) * 2007-04-27 2010-03-23 International Business Machines Corporation In-flight file descriptors checkpoint
US8549543B2 (en) * 2008-09-30 2013-10-01 International Business Machines Corporation Virtualize, checkpoint, and restart POSIX IPC objects during checkpointing and restarting of a software partition
US9507668B2 (en) * 2014-10-30 2016-11-29 Netapp, Inc. System and method for implementing a block-based backup restart
US9606877B2 (en) * 2015-05-18 2017-03-28 Facebook, Inc. Restoring non-transactional messages in queues for advertisement data flow processing
US11093332B2 (en) * 2019-05-03 2021-08-17 Dell Products L.P. Application checkpoint and recovery system

Also Published As

Publication number Publication date
WO2021021660A1 (en) 2021-02-04
US20210034408A1 (en) 2021-02-04
CN114041120A (en) 2022-02-11
US11366720B2 (en) 2022-06-21
EP4007952A1 (en) 2022-06-08
JP2022542212A (en) 2022-09-30

Similar Documents

Publication Publication Date Title
US10652020B2 (en) Switching data sources during rolling upgrade of a leader-based distributed service with minimal disruptions
CN102652308A (en) Efficient loading of data into memory of computing system
US11467920B2 (en) Methods and systems to index file data of virtual machine (VM) image
CN111108487B (en) Hypervisor direct memory access
US20120159482A1 (en) Seamless application integration apparatus and method
US10324747B1 (en) Distributed configuration checking and troubleshooting in data center using best practices rules
US10609177B2 (en) Consolidated cloud system for virtual machine
US20190235899A1 (en) Tracking virtual machine data
US11366720B2 (en) Building a resilient operating system based on durable services with kernel support
US9594707B2 (en) Data input/output (I/O) handling for computer network communications links
US10698716B2 (en) Virtual machine state recorder
US20160026567A1 (en) Direct memory access method, system and host module for virtual machine
US10990439B1 (en) Tracing task execution across services in microkernel-based operating systems
US20180011661A1 (en) Data locality in a hyperconverged computing system
US11099758B2 (en) Memory management of computing devices
US10572365B2 (en) Verification for device management
US10613890B2 (en) Efficient I/O request handling