KR20220038053A - 커널 지원을 가진 지속 가능한 서비스들에 기초하여 회복성 운영 시스템을 구축하는 방법 - Google Patents

커널 지원을 가진 지속 가능한 서비스들에 기초하여 회복성 운영 시스템을 구축하는 방법 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
English (en)
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/ko

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

일 실시예에서, 방법은 서비스에 대한 체크포인트를 참조하는 핸들을 생성하는 것, 핸들을 서비스로 전송하는 것으로서, 상기 핸들은 체크포인트에서 서비스의 하나 이상의 상태들을 저장하기 위해 서비스에 의해 사용되도록 구성되는, 상기 핸들을 전송하는 것, 서비스가 재시작될 필요가 있음을 결정하는 것, 서비스를 재시작하는 것, 체크포인트에 대한 핸들을 액세스하는 것, 및 체크포인트에 대한 핸들을 재시작된 서비스로 전송하는 것으로서, 상기 체크포인트에 대한 핸들은 하나 이상의 상태들을 회복시키기 위해 재시작된 서비스에 의해 사용되도록 구성되는, 상기 핸들을 재시작된 서비스로 전송하는 것을 포함한다.

Description

커널 지원을 가진 지속 가능한 서비스들에 기초하여 회복성 운영 시스템을 구축하는 방법
본 개시는 일반적으로 운영 시스템들에 관한 것이다.
운영 시스템(OS)은 컴퓨터 하드웨어 및 소프트웨어 리소스들을 관리하고 컴퓨터 프로그램들에 대한 공통 서비스들을 제공하는 시스템 소프트웨어이다. 시간-공유 운영 시스템들은 시스템의 효율적인 사용을 위해 태스크들을 스케줄링하며 또한 프로세서 시간, 대용량 저장, 인쇄, 및 다른 리소스들의 비용 할당을 위한 회계 소프트웨어를 포함할 수 있다. 입력과 출력 및 메모리 할당과 같은 하드웨어 기능들을 위해, 운영 시스템은 프로그램들과 컴퓨터 하드웨어 사이에서 중재자로서 동작하지만, 애플리케이션 코드는 일반적으로 하드웨어에 의해 직접 실행되며 빈번하게 OS 기능으로의 시스템 호출들을 하거나 또는 그것에 의해 중단된다. 운영 시스템들은 컴퓨터를 포함하는 많은 디바이스들 - 휴대 전화들 및 비디오 게임 콘솔들에서 웹 서버들 및 슈퍼 컴퓨터들에 이르는 - 에서 발견된다.
컴퓨팅 시, 프로세스는 하나 또는 많은 스레드들에 의해 실행되고 있는 컴퓨터 프로그램의 인스턴스이다. 그것은 프로그램 코드 및 그것의 활동을 포함한다. 운영 시스템(OS)에 의존하여, 프로세스는 지시들을 동시에 실행하는 다수의 실행 스레드들로 이루어질 수 있다. 컴퓨터 프로그램은 지시들의 수동형 모음이지만, 프로세스는 이들 지시들의 실제 실행이다. 여러 프로세스들은 동일한 프로그램과 연관될 수 있으며; 예를 들어, 동일한 프로그램의 여러 인스턴스들을 여는 것은 종종 하나 이상의 프로세스가 실행되는 것을 야기한다. 프로세스 관리는 임의의 현대 운영 시스템(OS)의 통합형 부분이다. OS는 프로세스들에 리소스들을 할당하고, 프로세스들이 정보를 공유하고 교환할 수 있게 하고, 다른 프로세스들로부터 각각의 프로세스의 리소스들을 보호하며 프로세스들 간에 동기화를 가능하게 해야 한다. 이들 요건들을 충족시키기 위해, OS는 각각의 프로세스에 대한 데이터 구조를 유지해야 하며, 이것은 상기 프로세스의 상태 및 리소스 소유권을 기술하고, OS가 각각의 프로세스에 대한 제어를 행사할 수 있게 한다.
특정한 실시예들에서, 컴퓨팅 시스템의 운영 시스템은 운영 시스템을 재시작하지 않고 마이크로커널에서 충돌 서비스를 효과적으로 회복시킬 수 있다. 운영 시스템은 다수의 서비스들을 구동할 수 있지만 그것들 중 일부가 충돌하거나 또는 재시작되어야 한다면, 관련 데이터는 손실될 수 있으며 이것은 시스템이 재시작되어야 하는 경우 운영 시스템에 해로울 수 있다. 이러한 이슈를 처리하기 위해, 본 출원에서 개시된 실시예들은 운영 시스템을 재시작하지 않고 충돌 서비스를 재시작하며 그것의 충돌-전 상태를 회복시킬 수 있는 회복성 운영 시스템을 구축할 수 있다. 필수적인 기술은 마이크로커널에 의해 제공된 API를 통해 마이크로커널과의 특수한 계약을 수립함으로써 각각의 서비스의 상태를 유지하는 것을 포함할 수 있다. 계약은 서비스가 그것의 상태, 특히 자동으로 복구될 수 없는 상태를 체크포인트할 수 있는 메모리의 특수 페이지들을 제공할 수 있다. 또한, 하나의 서비스로 제공된 페이지들은 충돌이 있는 경우 상태를 변질시킬 기회가 적도록 다른 서비스들로 제공된 페이지들로부터 분리될 수 있다. 제한으로서가 아닌 예로서, 운영 시스템에서의 론처 서비스(launcher service)는 론칭되었으며 현재 활발히 실행 중인 서비스들 모두를 추적할 책임이 있을 수 있다. 운영 시스템이 서비스 리스트를 구현할 때, 그것은 론칭된 서비스들 모두를 반복하도록 론처 서비스에 요청할 수 있다. 충돌이 있을 때, 운영 시스템은, 커널 API를 통해, 동일한 페이지 또는 페이지들의 세트에서 론처 서비스에 대한 체크포인트를 찾으며 체크포인트에 대한 핸들을 얻을 수 있다. 론처 서비스의 재시작 동안, 로더 서비스는 새롭게-시작된 론처 서비스로 핸들을 전달할 것이다. 핸들을 통해, 론처 서비스는 충돌 이전의 상태를 검색할 수 있다. 본 개시는 특정한 방식들로 특정한 시스템들을 통해 특정한 상태를 회복시키는 것을 설명하지만, 본 개시는 임의의 적절한 방식으로 임의의 적절한 시스템을 통해 임의의 적절한 상태를 회복시키는 것을 고려한다.
특정한 실시예들에서, 운영 시스템은, 제1 서비스에 대해, 체크포인트를 참조하는 핸들을 생성할 수 있다. 운영 시스템은 그 후 핸들을 제1 서비스로 전송할 수 있다. 상기 핸들은 상기 체크포인트에서 서비스의 하나 이상의 상태들을 저장하기 위해 제1 서비스에 의해 사용되도록 구성될 수 있다. 특정한 실시예들에서, 상기 운영 시스템은 제1 서비스가 재시작될 필요가 있음을 결정할 수 있다. 상기 운영 시스템은 그 후 제1 서비스를 재시작할 수 있다. 상기 운영 시스템은 또한 체크포인트에 대한 핸들을 액세스할 수 있다. 특정한 실시예들에서, 상기 운영 시스템은 상기 체크포인트에 대한 핸들을 재시작된 제1 서비스로 전송할 수 있다. 상기 체크포인트에 대한 핸들은 하나 이상의 상태들을 회복시키기 위해 재시작된 제1 서비스에 의해 사용되도록 구성될 수 있다.
본 발명의 실시예들은 인공 현실 시스템을 포함하거나 또는 그것과 함께 구현될 수 있다. 인공 현실은 사용자로의 프리젠테이션 이전에 몇몇 방식으로 조정되어 온 현실의 형태이며, 이것은 예컨대 가상 현실(VR), 증강 현실(AR), 혼합 현실(MR), 하이브리드 현실, 또는 그것의 몇몇 조합 및/또는 파생물을 포함할 수 있다. 인공 현실 콘텐트는 완전히 생성된 콘텐트 또는 캡처된 콘텐트(예컨대, 실-세계 사진들)와 조합된 생성 콘텐트를 포함할 수 있다. 인공 현실 콘텐트는 비디오, 오디오, 햅틱 피드백, 또는 그것의 몇몇 조합을 포함할 수 있으며, 그 중 임의의 것은 다일 채널에서 또는 다수의 채널들에서(뷰어에게 3-차원 효과를 생성하는 스테레오 비디오와 같은) 제공될 수 있다. 부가적으로, 몇몇 실시예들에서, 인공 현실은 예컨대, 인공 현실에서 콘텐트를 생성하기 위해 사용되며 및/또는 인공 현실에서 사용되는(예컨대, 그것에 활동들을 수행하는) 애플리케이션들, 제품들, 액세서리들, 서비스들, 또는 그것의 몇몇 조합과 연관될 수 있다. 인공 현실 콘텐트를 제공하는 인공 현실 시스템은, 호스트 컴퓨터 시스템에 연결된 헤드-장착 디스플레이(HMD), 독립형 HMD, 이동 디바이스 또는 컴퓨팅 시스템, 또는 하나 이상의 뷰어들에게 인공 현실 콘텐트를 제공할 수 있는 임의의 다른 하드웨어 플랫폼을 포함한, 다양한 플랫폼들 상에서 구현될 수 있다.
본 발명에 따르면, 방법이 제공되고 있으며, 상기 방법은 컴퓨팅 디바이스 상에서 실행하는 운영 시스템에 의해: 제1 서비스에 대해, 체크포인트를 참조하는 핸들을 생성하는 것; 상기 핸들을 상기 제1 서비스로 전송하는 것으로서, 상기 핸들은 상기 체크포인트에서 상기 제1 서비스의 하나 이상의 상태들을 저장하기 위해 상기 제1 서비스에 의해 사용되도록 구성되는, 상기 핸들을 제1 서비스로 전송하는 것; 상기 제1 서비스가 재시작될 필요가 있음을 결정하는 것; 상기 제1 서비스를 재시작하는 것; 상기 체크포인트에 대한 핸들을 액세스하는 것; 및 상기 체크포인트에 대한 핸들을 상기 재시작된 제1 서비스로 전송하는 것으로서, 상기 체크포인트에 대한 핸들은 상기 하나 이상의 상태들을 회복시키기 위해 상기 재시작된 제1 서비스에 의해 사용되도록 구성되는, 상기 핸들을 상기 재시작된 제1 서비스로 전송하는 것을 포함한다.
선택적으로, 상기 제1 서비스는 모니터와 연관된다. 선택적으로, 상기 제1 서비스가 재시작될 필요가 있음을 결정하는 것은 상기 모니터에 기초한다.
선택적으로, 상기 방법은, 상기 체크포인트에 대한 제1 키를 생성하는 것을 추가로 포함한다. 선택적으로, 상기 체크포인트에 대한 핸들을 액세스하는 것은 상기 제1 키에 기초한다.
선택적으로, 상기 제1 서비스는 상기 운영 시스템의 구성요소이다.
선택적으로, 상기 제1 서비스가 재시작될 필요가 있음을 결정하는 것은 상기 제1 서비스가 무응답이라는 표시에 기초한다.
선택적으로, 상기 핸들을 액세스하는 것은 복수의 서비스들에 대응하는 복수의 엔티티들을 포함한 서비스-키 인덱스를 액세스하는 것을 포함한다. 선택적으로, 상기 서비스-키 인덱스에서의 각각의 엔트리는 서비스 식별자 및 상기 서비스 식별자와 연관된 키를 포함한다.
상기 제1 서비스는 선택적으로 제1 서비스 식별자와 연관될 수 있다.
선택적으로, 상기 핸들을 액세스하는 것은 상기 제1 서비스 식별자에 기초하여, 상기 서비스-키 인덱스로부터 제1 키를 식별하는 것을 추가로 포함한다.
선택적으로, 상기 핸들을 액세스하는 것은, 상기 식별된 제1 키에 기초하여, 복수의 서비스들과 연관된 복수의 체크포인트들을 참조하는 복수의 핸들들로부터 상기 핸들을 검색하는 것을 추가로 포함한다.
선택적으로, 상기 하나 이상의 상태들 각각은 데이터 아이템 또는 핸들 중 하나 이상을 포함한다.
선택적으로, 상기 제1 서비스를 재시작하는 것은 하나 이상의 커널들 또는 제2 서비스들을 재시작하는 것을 요구하지 않는다. 선택적으로, 상기 하나 이상의 마이크로커널들 또는 제2 서비스들은 운영 시스템의 구성요소들이다.
본 발명에 따르면, 소프트웨어를 포함하는 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어가 추가로 제공되고 있으며, 상기 소프트웨어는 실행될 때: 제1 서비스에 대해, 체크포인트를 참조하는 핸들을 생성하고; 상기 핸들을 상기 제1 서비스로 전송하는 것으로서, 상기 핸들은 상기 체크포인트에서 제1 서비스의 하나 이상의 상태들을 저장하기 위해 상기 제1 서비스에 의해 사용되도록 구성되는, 상기 핸들을 제1 서비스로 전송하고; 상기 제1 서비스가 재시작될 필요가 있음을 결정하고; 상기 제1 서비스를 재시작하고; 상기 체크포인트에 대한 핸들을 액세스하며; 상기 체크포인트에 대한 핸들을 상기 재시작된 제1 서비스로 전송하는 것으로서, 상기 체크포인트에 대한 핸들은 상기 하나 이상의 상태들을 회복시키기 위해 상기 재시작된 제1 서비스에 의해 사용되도록 구성되는, 상기 핸들을 재시작된 제1 서비스로 전송하도록 동작 가능하다.
선택적으로, 상기 제1 서비스는 모니터와 연관된다. 상기 제1 서비스가 재시작될 필요가 있음을 결정하는 것은 선택적으로 상기 모니터에 기초할 수 있다.
선택적으로, 상기 소프트웨어는 또한 실행될 때 상기 체크포인트에 대한 제1 키를 생성하도록 동작 가능하다.
선택적으로, 상기 핸들을 액세스하는 것은 복수의 서비스들에 대응하는 복수의 엔트리들을 포함한 서비스-키 인덱스를 액세스하는 것을 포함할 수 있다. 선택적으로 상기 서비스-키 인덱스에서 각각의 엔트리는 서비스 식별자 및 상기 서비스 식별자와 연관된 키를 포함한다.
상기 제1 서비스는 제1 서비스 식별자와 연관될 수 있다.
상기 핸들을 액세스하는 것은 선택적으로, 상기 제1 서비스 식별자에 기초하여, 상기 서비스-키 인덱스로부터 제1 키를 식별하는 것을 추가로 포함할 수 있다.
상기 핸들을 액세스하는 것은 선택적으로, 상기 식별된 제1 키에 기초하여, 복수의 서비스들과 연관된 복수의 체크포인트들을 참조하는 복수의 핸들들로부터 상기 핸들을 검색하는 것을 추가로 포함할 수 있다.
선택적으로, 상기 하나 이상의 상태들 각각은 데이터 아이템 또는 핸들 중 하나 이상을 포함한다.
본 발명에 따르면, 시스템이 추가로 제공되고 있으며; 상기 시스템은: 하나 이상의 프로세서들 및 상기 프로세서들에 의해 실행 가능한 지시들을 포함한 상기 프로세서들에 결합된 비-일시적 메모리로서, 상기 프로세서들은 상기 지시들을 실행할 때: 제1 서비스에 대해, 체크포인트를 참조하는 핸들을 생성하고; 상기 핸들을 상기 제1 서비스로 전송하는 것으로서, 상기 핸들은 상기 체크포인트에서 상기 제1 서비스의 하나 이상의 상태들을 저장하기 위해 상기 제1 서비스에 의해 사용되도록 구성되는, 상기 핸들을 제1 서비스로 전송하고; 상기 제1 서비스가 재시작될 필요가 있음을 결정하고; 상기 제1 서비스를 재시작하고; 상기 체크포인트에 대한 핸들을 액세스하며; 상기 체크포인트에 대한 핸들을 상기 재시작된 제1 서비스로 전송하는 것으로서, 상기 체크포인트에 대한 핸들은 상기 하나 이상의 상태들을 회복시키기 위해 상기 재시작된 제1 서비스에 의해 사용되도록 구성되는, 상기 핸들을 재시작된 제1 서비스로 전송하도록 동작 가능한, 상기 비-일시적 메모리를 포함한다.
본 출원에서 개시된 실시예들은 단지 예들이며, 본 개시의 범위는 그것들에 제한되지 않는다. 특정한 실시예들은 본 출원에서 개시된 실시예들의 구성요소들, 요소들, 특징들, 기능들, 동작들, 또는 단계들의 모두, 일부를 포함하거나 또는 포함하지 않을 수 있다. 본 발명에 따른 실시예들은 특히 방법, 저장 매체, 시스템 및 컴퓨터 프로그램 제품에 관한 첨부된 청구항들에서 개시되며, 여기에서 하나의 청구항 카테고리, 예컨대 방법에서 언급된 임의의 특징은 또한 청구항 카테고리, 예컨대 시스템에서 또한 주장될 수 있다. 첨부된 청구항들에서 종속성들 또는 역 참조들은 단지 형식적인 이유들로 택하여진다. 그러나, 임의의 이전 청구항들(특히 다수의 종속성들)에 대한 의도적인 역 참조에서 기인한 임의의 주제가 또한 주장될 수 있으며, 따라서 청구항들 및 그것의 특징들의 임의의 조합이 개시되며 첨부된 청구항들에서 택하여진 종속성들에 관계없이 주장될 수 있다. 주장될 수 있는 주제는 첨부된 청구항들에서 제시된 바와 같은 특징들의 조합들뿐만 아니라 청구항들에서의 특징들의 임의의 다른 조합을 또한 포함하며, 청구항들에서 언급된 각각의 특징은 청구항들에서의 임의의 다른 특징 또는 다른 특징들의 조합과 조합될 수 있다. 더욱이, 본 출원에서 설명되거나 또는 묘사된 실시예들 및 특징들 중 임의의 것은 별개의 청구항에서 및/또는 본 출원에서 설명되거나 또는 묘사된 임의의 실시예 또는 특징과 또는 첨부된 청구항들의 특징들 중 임의의 것과 임의의 조합하여 주장될 수 있다.
도 1은 서비스를 재시작하는 것과 연관된 핸들 테이블 값들의 재구성의 예시적인 다이어그램 흐름을 예시한다.
도 2는 서비스의 상태들을 회복시키기 위한 예시적인 방법을 예시한다.
도 3은 예시적인 컴퓨터 시스템을 예시한다.
특정한 실시예들에서, 컴퓨팅 시스템의 운영 시스템은 운영 시스템을 재시작하지 않고 마이크로커널에서 충돌 서비스를 효과적으로 복구할 수 있다. 운영 시스템은 다수의 서비스들을 구동할 수 있지만 그것들 중 일부가 충돌하거나 또는 재시작되어야 한다면, 관련 데이터는 손실될 수 있으며 이것은 시스템이 재시작되어야 하는 경우 운영 시스템에 해로울 수 있다. 이러한 이슈를 처리하기 위해, 본 출원에서 개시된 실시예들은 운영 시스템을 재시작하지 않고 충돌 서비스를 재시작하며 그것의 충돌-전 상태를 회복시킬 수 있는 회복성 운영 시스템을 구축할 수 있다. 필수적인 기술은 마이크로커널에 의해 제공된 API를 통해 마이크로커널과의 특수한 계약을 수립함으로써 각각의 서비스의 상태를 유지하는 것을 포함할 수 있다. 계약은 서비스가 그것의 상태, 특히 자동으로 복구될 수 없는 상태를 체크포인트할 수 있는 메모리의 특수 페이지들을 제공할 수 있다. 또한, 하나의 서비스로 제공된 페이지들은 충돌이 있는 경우 상태를 변질시킬 기회가 적도록 다른 서비스들로 제공된 페이지들로부터 분리될 수 있다. 제한으로서가 아닌 예로서, 운영 시스템에서의 론처 서비스는 론칭되었으며 현재 활발히 실행 중인 서비스들 모두를 추적할 책임이 있을 수 있다. 운영 시스템이 서비스 리스트를 구현할 때, 그것은 론칭된 서비스들 모두를 반복하도록 론처 서비스에 요청할 수 있다. 충돌이 있을 때, 운영 시스템은, 커널 API를 통해, 동일한 페이지 또는 페이지들의 세트에서 론처 서비스에 대한 체크포인트를 찾으며 체크포인트에 대한 핸들을 얻을 수 있다. 론처 서비스의 재시작 동안, 로더 서비스는 새롭게-시작된 론처 서비스로 핸들을 전달할 것이다. 핸들을 통해, 론처 서비스는 충돌 이전의 상태를 검색할 수 있다. 본 개시는 특정한 방식들로 특정한 시스템들을 통해 특정한 상태를 회복시키는 것을 설명하지만, 본 개시는 임의의 적절한 방식으로 임의의 적절한 시스템을 통해 임의의 적절한 상태를 회복시키는 것을 고려한다.
특정한 실시예들에서, 운영 시스템은, 제1 서비스에 대해, 체크포인트를 참조하는 핸들을 생성할 수 있다. 운영 시스템은 그 후 핸들을 제1 서비스로 전송할 수 있다. 핸들은 체크포인트에서 제1 서비스의 하나 이상의 상태들을 저장하기 위해 제1 서비스에 의해 사용되도록 구성될 수 있다. 특정한 실시예들에서, 운영 시스템은 제1 서비스가 재시작될 필요가 있음을 결정할 수 있다. 운영 시스템은 그 후 제1 서비스를 재시작할 수 있다. 운영 시스템은 또한 체크포인트에 대한 핸들을 액세스할 수 있다. 특정한 실시예들에서, 운영 시스템은 체크포인트에 대한 핸들을 재시작된 제1 서비스로 전송할 수 있다. 체크포인트에 대한 핸들은 하나 이상의 상태들을 회복시키기 위해 재시작된 제1 서비스에 의해 사용되도록 구성될 수 있다.
특정한 실시예들에서, 제1 서비스는 운영 시스템의 구성요소일 수 있다. 제1 서비스는 운영 시스템의 마이크로커널로부터 분리될 수 있다. 그 결과, 제1 서비스가 충돌할지라도, 그것은 전체 운영 시스템에 충돌하지 않을 것이다. 분리 단독으로는, 그러나, 충돌 서비스들을 복구하기 위한 메커니즘이 있을 필요가 있으므로, 시스템 신뢰성을 개선하기에 충분하지 않을 수 있다. 부가적으로, 마이크로커널들에 기초한 운영 시스템은 마이크로커널들에 저장장치를 갖지 않을 수 있다. 마이크로커널들은 메모리를 제외한 IO로의 액세스를 갖지 않을 수 있으며, 이것은 충돌 서비스를 복구하기 위한 메커니즘을 요구할 수 있다. 본 출원에서 개시된 실시예들은 서비스와 연관된 상태들을 저장하는 체크포인트에 기초한 이러한 메커니즘을 제공하여, 마이크로커널들이 서비스 충돌들 후 운영 시스템이 상태를 회복시킬 필요가 있는 경우에 서비스의 상태를 추적할 수 있게 한다. 본 개시는 특정한 방식들로 특정한 시스템들에서 특정한 서비스들을 설명하지만, 본 개시는 임의의 적절한 방식으로 임의의 적절한 시스템에서 임의의 적절한 서비스를 고려한다.
특정한 실시예들에서, 새로운 서비스가 시작할 때마다, 관리 서비스는 새로운 서비스에 몇몇 핸들들을 할당할 수 있다. 제한으로서가 아닌 예로서, 관리 서비스는 로더 서비스를 포함할 수 있다. 핸들들은 프로세스들, 스레드들, 소켓들, 채널들 또는 인터럽트들과 같은 커널 오브젝트들을 참조하기 위해 시스템 호출들에 의해 사용될 수 있다. 특정한 실시예들에서, 핸들들은 체크포인트들을 참조할 수 있다. 특정한 실시예들에서, 핸들은 특정한 프로세스에 의해 사용 중인 핸들들을 추적하기 위해 유형(작업, 프로세스, 소켓, 채널, 인터럽트 등), 핸들과 연관된 액세스 권한들, 커널 오브젝트에 대한 포인터, 내부 참조 카운트, 상태 플래그(자유, 활성, 폐쇄 등), 링크 리스트 또는 비트맵을 포함한 다음의 속성들을 가질 수 있다. 각각의 서비스에 핸들을 할당하는 기술적 이점은 그것이 상이한 서비스들 사이에 엄격한 격리를 제공한다는 것을 포함할 수 있다. 이때, 핸들은 서비스들에 걸쳐 고유하지 않지만, 핸들과 연관된 동일한 핸들 값은 상이한 서비스들에서 상이한 커널 오브젝트들을 참조할 수 있다. 본 개시는 특정한 방식들로 특정한 시스템들에서 특정한 핸들들을 설명하지만, 본 개시는 임의의 적절한 방식으로 임의의 적절한 시스템에서 임의의 적절한 핸들을 고려한다.
특정한 실시예들에서, 하나 이상의 상태들 각각은 데이터 아이템 또는 핸들 중 하나 이상을 포함할 수 있다. 특정한 실시예들에서, 메모리 영역들(예컨대, 페이지들)은 서비스와 연관된 도메인에 기초하여 그것의 상태들을 체크포인트하도록 요청하는 서비스에 제공될 수 있다. 메모리 영역들은 상태들을 저장하기 위해 사용될 수 있다. 도메인 내에서, 각각의 서비스는 서비스의 특수한 페이지들에 대응하는 그 자신의 어드레스 스팬을 가질 수 있다. 마이크로커널은 어드레스 스팬으로 상태를 체크포인트하며 서비스가 재시작할 때 그것을 회복시킬 수 있다. 제한으로서가 아닌 예로서, 론처 서비스는 등록된 상태 버킷을 포함할 수 있는, 도메인 1일 수 있다. 론처 서비스가 충돌할 때, 운영 시스템(예컨대, 로더 서비스를 통해)은 서비스와 연관된 페이지들에 대해 마이크로커널에 요청할 수 있다. 마이크로커널은 체크포인트를 참조하는 핸들을 반환할 수 있다. 핸들에 기초하여, 체크포인트는 도메인 1에 속하는 페이지들을 검색하기 위해 액세스될 수 있다. 본 개시는 본 개시는 특정한 방식들로 특정한 시스템들에서 특정한 메모리 영역들을 설명하지만, 본 개시는 임의의 적절한 방식으로 임의의 적절한 시스템에서 임의의 적절한 메모리 영역을 고려한다.
특정한 실시예들에서, 제1 서비스는 제1 서비스의 유형에 기초하여 어떤 상태를 체크포인트할지를 결정할 수 있다. 제한으로서가 아닌 예로서, 론처 서비스에 대해, 그것은 많은 데이터를 가질 수 있다. 론처 서비스는 얼마나 많은 메모리가 소비되고 있는지 및 얼마나 많은 다른 리소스들이 여전히 이용 가능한지에 대한 상태들을 추적할 수 있다. 이들 상태들은 회복시키기 용이하며 따라서 론처 서비스는 그것들을 체크포인트하지 않을 수 있다. 론처 서비스는 대신에 회복시키기에 더 어려운 상태들을 체크포인트할 수 있다. 특정한 실시예들에서, 운영 시스템은 체크포인트에 대한 제1 키를 추가로 생성할 수 있다. 나중에 체크포인트에 대한 핸들을 액세스하는 것은 제1 키에 기초할 수 있다. 본 개시는 특정한 방식들로 특정한 시스템들을 통해 특정한 상태들을 저장하는 것을 기술하지만, 본 개시는 임의의 적절한 방식들로 임의의 적절한 시스템을 통해 임의의 적절한 상태를 저장하는 것을 고려한다.
특정한 실시예들에서, 제1 서비스는 모니터와 연관될 수 있다. 제1 서비스가 재시작될 필요가 있다고 결정하는 것은 모니터에 기초할 수 있다. 특정한 실시예들에서, 제1 서비스가 재시작될 필요가 있다고 결정하는 것은 제1 서비스가 무응답이라는 표시에 기초할 수 있다. 제한으로서가 아닌 예로서, 서비스의 충돌은 서비스가 무응답이게 할 수 있다. 특정한 실시예들에서, 제1 서비스를 재시작하는 것은 하나 이상의 마이크로커널들 또는 제2 서비스들을 재시작하도록 요구하지 않을 수 있다. 하나 이상의 마이크로커널들 또는 제2 서비스들은 운영 시스템의 구성요소들일 수 있다. 본 개시는 특정한 방식들로 특정한 시스템들을 통해 특정한 재시작들을 결정하는 것을 설명하지만, 본 개시는 임의의 적절한 방식으로 임의의 적절한 시스템을 통해 임의의 적절한 재시작을 결정하는 것을 고려한다.
특정한 실시예들에서, 핸들을 액세스하는 것은 복수의 서비스들에 대응하는 복수의 엔트리들을 포함한 서비스-키 인덱스를 액세스하는 것을 포함할 수 있다. 서비스-키 인덱스에서 각각의 엔트리는 서비스 식별자 및 상기 서비스 식별자와 연관된 키를 포함할 수 있다. 특정한 실시예들에서, 제1 서비스는 제1 서비스 식별자와 연관될 수 있다. 따라서, 핸들을 액세스하는 것은 다음의 단계들을 추가로 포함할 수 있다. 첫 번째로, 운영 시스템은, 제1 서비스 식별자에 기초하여, 서비스-키 인덱스로부터 제1 키를 식별할 수 있다. 운영 시스템은 그 후, 식별된 제1 키에 기초하여, 복수의 서비스들과 연관된 복수의 체크포인트들을 참조하는 복수의 핸들들로부터 상기 핸들을 검색할 수 있다. 본 개시는 특정한 방식들로 특정한 시스템들을 통해 특정한 인덱스들을 액세스하는 것을 설명하지만, 본 개시는 임의의 적절한 방식으로 임의의 적절한 시스템을 통해 임의의 적절한 인덱스를 액세스하는 것을 고려한다.
도 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)을 재생성함으로써 이들 핸들들이 재시작된 서비스에서 여전히 활성 핸들들임을 보장할 필요가 있을 수 있다. 본 개시는 특정한 방식들로 특정한 핸들 테이블들을 재생성하는 특정한 다이어그램 흐름을 설명하지만, 본 개시는 임의의 적절한 방식으로 임의의 적절한 핸들 테이블을 재생성하는 임의의 적절한 다이어그램 흐름을 고려한다.
도 2는 서비스의 상태들을 회복시키기 위한 예시적인 방법(200)을 예시한다. 방법은 단계 210에서 시작할 수 있으며, 여기에서 운영 시스템은 제1 서비스에 대해, 체크포인트를 참조하는 핸들을 생성할 수 있다. 단계 220에서, 운영 시스템은 핸들을 제1 서비스로 전송할 수 있으며, 여기에서 상기 핸들은 체크포인트에서 제1 서비스의 하나 이상의 상태들을 저장하기 위해 제1 서비스에 의해 사용되도록 구성된다. 단계 230에서, 운영 시스템은 제1 서비스가 재시작될 필요가 있다고 결정할 수 있다. 단계 240에서, 운영 시스템은 제1 서비스를 재시작할 수 있다. 단계 250에서, 운영 시스템은 체크포인트에 대한 핸들을 액세스할 수 있다. 단계 260에서, 운영 시스템은 체크포인트에 대한 핸들을 재시작된 제1 서비스로 전송할 수 있으며, 여기에서 체크포인트에 대한 핸들은 하나 이상의 상태들을 회복시키기 위해 재시작된 제1 서비스에 의해 사용되도록 구성된다. 특정한 실시예들은 적절한 경우, 도 2의 방법의 하나 이상의 단계들을 반복할 수 있다. 본 개시는 도 2의 방법의 특정한 단계들을 특정한 순서로 발생하는 것으로서 설명하고 예시하지만, 본 개시는 임의의 적절한 순서로 발생하는 도 2의 방법의 임의의 적절한 단계들을 고려한다. 게다가, 본 개시는 도 2의 방법의 특정한 단계들을 포함한 서비스의 상태들을 회복시키기 위한 예시적인 방법을 설명하고 예시하지만, 본 개시는 적절한 경우, 도 2의 방법의 단계들의 모두, 일부를 포함하거나, 또는 포함하지 않을 수 있는, 임의의 적절한 단계들을 포함한 서비스의 상태들을 회복시키기 위한 임의의 적절한 방법을 고려한다. 더욱이, 본 개시는 도 2의 방법의 특정한 단계들을 실행하는 특정한 구성요소들, 디바이스들, 또는 시스템들을 설명하고 예시하지만, 본 개시는 도 2의 방법의 임의의 적절한 단계들을 실행하는 임의의 적절한 구성요소들, 디바이스들, 또는 시스템들의 임의의 적절한 조합을 고려한다.
본 발명의 실시예들은 인공 현실 시스템을 포함하거나 또는 그것과 함께 구현될 수 있다. 인공 현실은 사용자로의 프리젠테이션 이전에 몇몇 방식으로 조정되어 온 현실의 형태이며, 이것은 예컨대 가상 현실(VR), 증강 현실(AR), 혼합 현실(MR), 하이브리드 현실, 또는 그것의 몇몇 조합 및/또는 파생물을 포함할 수 있다. 인공 현실 콘텐트는 완전히 생성된 콘텐트 또는 캡처된 콘텐트(예컨대, 실-세계 사진들)와 조합된 생성 콘텐트를 포함할 수 있다. 인공 현실 콘텐트는 비디오, 오디오, 햅틱 피드백, 또는 그것의 몇몇 조합을 포함할 수 있으며, 그 중 임의의 것은 다일 채널에서 또는 다수의 채널들에서(뷰어에게 3-차원 효과를 생성하는 스테레오 비디오와 같은) 제공될 수 있다. 부가적으로, 몇몇 실시예들에서, 인공 현실은 예컨대, 인공 현실에서 콘텐트를 생성하기 위해 사용되며 및/또는 인공 현실에서 사용되는(예컨대, 그것에 활동들을 수행하는) 애플리케이션들, 제품들, 액세서리들, 서비스들, 또는 그것의 몇몇 조합과 연관될 수 있다. 인공 현실 콘텐트를 제공하는 인공 현실 시스템은, 호스트 컴퓨터 시스템에 연결된 헤드-장착 디스플레이(HMD), 독립형 HMD, 이동 디바이스 또는 컴퓨팅 시스템, 또는 하나 이상의 뷰어들에게 인공 현실 콘텐트를 제공할 수 있는 임의의 다른 하드웨어 플랫폼을 포함한, 다양한 플랫폼들 상에서 구현될 수 있다.
도 3은 예시적인 컴퓨터 시스템(300)을 예시한다. 특정한 실시예들에서, 하나 이상의 컴퓨터 시스템들(300)은 본 출원에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 수행한다. 특정한 실시예들에서, 하나 이상의 컴퓨터 시스템들(300)은 본 출원에서 설명되거나 또는 예시된 기능을 제공한다. 특정한 실시예들에서, 하나 이상의 컴퓨터 시스템들(300) 상에서 구동하는 소프트웨어는 본 출원에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 수행하거나 또는 본 출원에서 설명되거나 또는 예시된 기능을 제공한다. 특정한 실시예들은 하나 이상의 컴퓨터 시스템들(300)의 하나 이상의 부분들을 포함한다. 본 출원에서, 컴퓨터 시스템에 대한 참조는 적절한 경우, 컴퓨팅 디바이스를 포함하며, 그 반대 또한 마찬가지일 수 있다. 게다가, 컴퓨터 시스템에 대한 참조는 적절한 경우, 하나 이상의 컴퓨터 시스템들을 포함할 수 있다.
본 개시는 임의의 적절한 수의 컴퓨터 시스템들(300)을 고려한다. 본 개시는 임의의 적절한 물리적 형태를 취하는 컴퓨터 시스템(300)을 고려한다. 제한으로서가 아닌 예로서, 컴퓨터 시스템(300)은 내장형 컴퓨터 시스템, 시스템-온-칩(SOC), 단일-보드 컴퓨터 시스템(SBC)(예를 들어, 컴퓨터-온-모듈(COM) 또는 시스템-온-모듈(SOM)과 같은), 데스크탑 컴퓨터 시스템, 랩탑 또는 노트북 컴퓨터 시스템, 대화형 키오스크, 메인프레임, 컴퓨터 시스템들의 메시, 이동 전화, 개인용 디지털 보조기(PDA), 서버, 태블릿 컴퓨터 시스템, 증강/가상 현실 디바이스, 또는 이들 중 둘 이상의 조합일 수 있다. 적절한 경우, 컴퓨터 시스템(300)은 하나 이상의 컴퓨터 시스템들(300)을 포함하고; 통합형 또는 분산형이고; 다수의 위치들을 포괄하고; 다수의 기계들을 포괄하고; 다수의 데이터 센터들을 포괄하거나; 또는 하나 이상의 네트워크들에서 하나 이상의 클라우드 구성요소들을 포함할 수 있는, 클라우드에 존재할 수 있다. 적절한 경우, 하나 이상의 컴퓨터 시스템들(300)은 상당한 공간적 또는 시간적 제한 없이, 본 출원에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 수행할 수 있다. 제한으로서가 아닌 예로서, 하나 이상의 컴퓨터 시스템들(300)은 본 출원에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 실시간으로 또는 배치 모드에서 수행할 수 있다. 하나 이상의 컴퓨터 시스템들(300)은 적절한 경우, 본 출원에서 설명되거나 또는 예시된 하나 이상의 방법들의 하나 이상의 단계들을 상이한 시간들에서 또는 상이한 위치들에서 수행할 수 있다.
특정한 실시예들에서, 컴퓨터 시스템(300)은 프로세서(302), 메모리(304), 저장장치(306), 입력/출력(I/O) 인터페이스(308), 통신 인터페이스(310), 및 버스(312)를 포함한다. 본 개시는 특정한 배열로 특정한 수의 특정한 구성요소들을 가진 특정한 컴퓨터 시스템을 설명하고 예시하지만, 본 개시는 임의의 적절한 배열로 임의의 적절한 수의 임의의 적절한 구성요소들을 가진 임의의 적절한 컴퓨터 시스템을 고려한다.
특정한 실시예들에서, 프로세서(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)을 포함할 수 있다. 본 개시는 특정한 프로세서를 설명하고 예시하지만, 본 개시는 임의의 적절한 프로세서를 고려한다.
특정한 실시예들에서, 메모리(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)을 포함할 수 있다. 본 개시는 특정한 메모리를 설명하고 예시하지만, 본 개시는 임의의 적절한 메모리를 고려한다.
특정한 실시예들에서, 저장장치(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)을 포함할 수 있다. 본 개시는 특정한 저장장치를 기술하고 예시하지만, 본 개시는 임의의 적절한 저장장치를 고려한다.
특정한 실시예들에서, 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 인터페이스를 고려한다.
특정한 실시예들에서, 통신 인터페이스(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)을 포함할 수 있다. 본 개시는 특정한 통신 인터페이스를 설명하고 예시하지만, 본 개시는 임의의 적절한 통신 인터페이스를 고려한다.
특정한 실시예들에서, 버스(312)는 컴퓨터 시스템(300)의 구성요소들을 서로 결합하는 하드웨어, 소프트웨어, 또는 둘 모두를 포함한다. 제한으로서가 아닌 예로서, 버스(312)는 가속화 그래픽 포트(AGP) 또는 다른 그래픽 버스, 강화된 산업 표준 아키텍처(EISA) 버스, 프론트-사이드 버스(FSB), HYPERTRANSPORT(HT) 상호연결, 산업 표준 아키텍처(ISA) 버스, INFINIBAND 상호연결, 로우-핀-카운트(LPC) 버스, 메모리 버스, 마이크로 채널 아키텍처(MCA) 버스, 주변 구성요소 상호연결(PCI) 버스, PCI-익스프레스(PCIe) 버스, 직렬 고급 기술 접속(SATA) 버스, 비디오 전자장치 표준 협회 로컬(VLB) 버스, 또는 또 다른 적절한 버스 또는 이들 중 둘 이상의 조합을 포함할 수 있다. 버스(312)는 적절한 경우, 하나 이상의 버스들(312)을 포함할 수 있다. 본 개시는 특정한 버스를 설명하고 예시하지만, 본 개시는 임의의 적절한 버스 또는 상호연결을 고려한다.
본 출원에서, 컴퓨터-판독 가능한 비-일시적 저장 매체 또는 미디어는 적절한 경우, 하나 이상의 반도체-기반 또는 다른 집적 회로들(IC들)(예를 들어, 필드-프로그램 가능한 게이트 어레이들(FPGA들) 또는 애플리케이션-특정 IC들(ASIC들)과 같은), 하드 디스크 드라이브들(HDD들), 하이브리드 하드 드라이브들(HHD들), 광학 디스크들, 광학 디스크 드라이브들(ODD들), 자기-광학 디스크들, 자기-과학 드라이브들, 플로피 디스켓들, 플로피 디스크 드라이브들(FDD들), 자기 테이프들, 고체-상태 들이브들(SSD들), RAM-드라이브들, SECURE DIGITAL 카드들 또는 드라이브들, 임의의 다른 적절한 컴퓨터-판독 가능한 비-일시적 저장 미디어, 또는 이들 중 둘 이상의 임의의 적절한 조합을 포함할 수 있다. 컴퓨터-판독 가능한 비-일시적 저장 매체는 적절한 경우, 휘발성, 비-휘발성, 또는 휘발성 및 비-휘발성의 조합일 수 있다.
본 출원에서, "또는"은 달리 명확하게 표시되거나 또는 맥락에 의해 달리 표시되지 않는다면, 포괄적이며 배타적이지 않다. 그러므로, 본 출원에서, "A 또는 B"는 달리 명확하게 표시되거나 또는 맥락에 의해 달리 표시되지 않는다면, "A, B, 또는 둘 모두"를 의미한다. 그러므로, 본 출원에서, "A 및 B"는 달리 명확하게 표시되거나 또는 맥락에 의해 달리 표시되지 않는다면, "A 및 B, 공동으로 또는 각기"를 의미한다.
본 개시의 범위는 이 기술분야에서 통상의 기술자가 이해할 본 출원에서 설명되거나 또는 예시된 예시적인 실시예들에 대한 모든 변화들, 대체들, 변형들, 변경들, 및 수정들을 포함한다. 본 개시의 범위는 본 출원에서 설명되거나 또는 예시된 예시적인 실시예들에 제한되지 않는다. 게다가, 본 개시는 본 출원에서의 각각의 실시예들을 특정한 구성요소들, 요소들, 특징, 기능들, 동작들, 또는 단계들을 포함하는 것으로 설명하고 예시하지만, 이들 실시예들 중 임의의 것은 이 기술분야에서 통상의 기술자가 이해할 본 출원에서 다른 곳에 설명되거나 또는 예시된 구성요소들, 요소들, 특징들, 기능들, 동작들, 또는 단계들 중 임의의 것의 임의의 조합 또는 순열을 포함할 수 있다. 더욱이, 특정한 기능을 수행하도록 적응되고, 배열되고, 가능하고, 구성되고, 가능화되고, 동작 가능하거나 또는 동작적인 장치 또는 시스템 또는 장치 또는 시스템의 구성요소에 대한 첨부된 청구항들에서의 참조는, 상기 장치, 시스템, 또는 구성요소가 그렇게 적응되고, 배열되고, 가능하고, 구성되고, 가능화되고, 동작 가능하거나, 또는 동작적인 한, 그것 또는 상기 특정한 기능이 활성화되고, 턴 온되거나, 또는 잠금 해제되는지에 관계없이, 상기 장치, 시스템, 구성요소를 포함한다. 부가적으로, 본 개시는 특정한 실시예들을 특정한 이점들을 제공하는 것으로 설명하거나 또는 예시하지만, 특정한 실시예들은 이들 이점들 중 일부, 또는 모두를 제공하거나, 또는 제공하지 않을 수 있다.

Claims (15)

  1. 방법에 있어서,
    컴퓨팅 디바이스 상에서 실행하는 운영 시스템에 의해:
    제1 서비스에 대해, 체크포인트를 참조하는 핸들을 생성하는 단계;
    상기 핸들을 상기 제1 서비스로 전송하는 단계로서, 상기 핸들은 상기 체크포인트에서 상기 제1 서비스의 하나 이상의 상태들을 저장하기 위해 상기 제1 서비스에 의해 사용되도록 구성되는, 상기 핸들을 제1 서비스로 전송하는 단계;
    상기 제1 서비스가 재시작될 필요가 있음을 결정하는 단계;
    상기 제1 서비스를 재시작하는 단계;
    상기 체크포인트에 대한 핸들을 액세스하는 단계; 및
    상기 체크포인트에 대한 핸들을 재시작된 제1 서비스로 전송하는 단계로서, 상기 체크포인트에 대한 핸들은 상기 하나 이상의 상태들을 회복시키기 위해 상기 재시작된 제1 서비스에 의해 사용되도록 구성되는, 상기 체크포인트에 대한 핸들을 재시작된 제1 서비스로 전송하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 제1 서비스는 모니터와 연관되며, 상기 제1 서비스가 재시작될 필요가 있음을 결정하는 것은 상기 모니터에 기초하는, 방법.
  3. 제1항에 있어서, 상기 체크포인트에 대한 제1 키를 생성하는 단계를 더 포함하며, 상기 체크포인트에 대한 핸들을 액세스하는 것은 상기 제1 키에 기초하는, 방법.
  4. 제1항에 있어서, 상기 제1 서비스는 상기 운영 시스템의 구성요소이며; 및/또는 상기 제1 서비스가 재시작될 필요가 있음을 결정하는 것은 상기 제1 서비스가 무응답이라는 표시에 기초하는, 방법.
  5. 제1항에 있어서, 상기 핸들을 액세스하는 단계는 복수의 서비스들에 대응하는 복수의 엔티티들을 포함한 서비스-키 인덱스를 액세스하는 단계를 포함하며, 상기 서비스-키 인덱스에서의 각각의 엔트리는 서비스 식별자 및 상기 서비스 식별자와 연관된 키를 포함하고;
    상기 제1 서비스는 제1 서비스 식별자와 연관되며, 상기 핸들을 액세스하는 단계는:
    상기 제1 서비스 식별자에 기초하여, 상기 서비스-키 인덱스로부터 제1 키를 식별하는 단계; 및 상기 식별된 제1 키에 기초하여, 복수의 서비스들과 연관된 복수의 체크포인트들을 참조하는 복수의 핸들들로부터 상기 핸들을 검색하는 단계를 더 포함하는, 방법.
  6. 제1항에 있어서, 상기 하나 이상의 상태들 각각은 데이터 아이템 또는 핸들 중 하나 이상을 포함하는, 방법.
  7. 제1항에 있어서, 상기 제1 서비스를 재시작하는 것은 하나 이상의 마이크로커널들 또는 제2 서비스들을 재시작하는 것을 요구하지 않으며, 상기 하나 이상의 마이크로커널들 또는 제2 서비스들은 상기 운영 시스템의 구성요소들인, 방법.
  8. 소프트웨어를 포함하는 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어에 있어서,
    상기 소프트웨어는 실행될 때:
    제1 서비스에 대해, 체크포인트를 참조하는 핸들을 생성하고;
    상기 핸들을 상기 제1 서비스로 전송하고 - 상기 핸들은 상기 체크포인트에 상기 제1 서비스의 하나 이상의 상태들을 저장하기 위해 상기 제1 서비스에 의해 사용되도록 구성됨 -;
    상기 제1 서비스가 재시작될 필요가 있음을 결정하고;
    상기 제1 서비스를 재시작하고;
    상기 체크포인트에 대한 핸들을 액세스하고;
    상기 체크포인트에 대한 핸들을 재시작된 제1 서비스로 전송하도록 동작 가능하며,
    상기 체크포인트에 대한 핸들은 상기 하나 이상의 상태들을 회복시키기 위해 상기 재시작된 제1 서비스에 의해 사용되도록 구성되는, 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어.
  9. 제11항에 있어서, 상기 제1 서비스는 모니터와 연관되며, 상기 제1 서비스가 재시작될 필요가 있음을 결정하는 것은 상기 모니터에 기초하는, 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어.
  10. 제11항에 있어서, 상기 소프트웨어는 또한 실행될 때 상기 체크포인트에 대한 제1 키를 생성하도록 동작 가능하며, 상기 체크포인트에 대한 핸들을 액세스하는 것은 상기 제1 키에 기초하는, 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어.
  11. 제11항에 있어서, 상기 제1 서비스는 상기 운영 시스템의 구성요소이며; 및/또는 상기 제1 서비스가 재시작될 필요가 있음을 결정하는 것은 상기 제1 서비스가 무응답이라는 표시에 기초하는, 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어.
  12. 제11항에 있어서, 상기 핸들을 액세스하는 것은 복수의 서비스들에 대응하는 복수의 엔트리들을 포함한 서비스-키 인덱스를 액세스하는 것을 포함하며, 상기 서비스-키 인덱스에서 각각의 엔트리는 서비스 식별자 및 상기 서비스 식별자와 연관된 키를 포함하고,
    상기 제1 서비스는 제1 서비스 식별자와 연관되며, 상기 핸들을 액세스하는 것은:
    상기 제1 서비스 식별자에 기초하여, 상기 서비스-키 인덱스로부터 제1 키를 식별하는 것; 및 상기 식별된 제1 키에 기초하여, 복수의 서비스들과 연관된 복수의 체크포인트들을 참조하는 복수의 핸들들로부터 상기 핸들을 검색하는 것을 더 포함하는, 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어.
  13. 제11항에 있어서, 상기 하나 이상의 상태들 각각은 데이터 아이템 또는 핸들 중 하나 이상을 포함하는, 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어.
  14. 시스템에 있어서,
    하나 이상의 프로세서들; 및
    상기 프로세서들에 의해 실행 가능한 지시들을 포함한 상기 프로세서들에 결합된 비-일시적 메모리를 포함하며,
    상기 프로세서들은 상기 지시들을 실행할 때:
    제1 서비스에 대해, 체크포인트를 참조하는 핸들을 생성하고;
    상기 핸들을 상기 제1 서비스로 전송하고 - 상기 핸들은 상기 체크포인트에서 상기 제1 서비스의 하나 이상의 상태들을 저장하기 위해 상기 제1 서비스에 의해 사용되도록 구성됨 -;
    상기 제1 서비스가 재시작될 필요가 있음을 결정하고;
    상기 제1 서비스를 재시작하고;
    상기 체크포인트에 대한 핸들을 액세스하고;
    상기 체크포인트에 대한 핸들을 재시작된 제1 서비스로 전송하도록 동작 가능하며,
    상기 체크포인트에 대한 핸들은 상기 하나 이상의 상태들을 회복시키기 위해 상기 재시작된 제1 서비스에 의해 사용되도록 구성되는, 시스템.
  15. 제14항에 있어서, 상기 지시들은, 상기 하나 이상의 프로세서들에 의해 실행될 때, 상기 시스템으로 하여금 제2항 내지 제8항 중 어느 한 항의 방법을 수행하게 하는, 시스템.
KR1020227000867A 2019-08-01 2020-07-24 커널 지원을 가진 지속 가능한 서비스들에 기초하여 회복성 운영 시스템을 구축하는 방법 KR20220038053A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/529,678 2019-08-01
US16/529,678 US11366720B2 (en) 2019-08-01 2019-08-01 Building a resilient operating system based on durable services with kernel support
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 (ko) 2022-03-25

Family

ID=72139659

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227000867A KR20220038053A (ko) 2019-08-01 2020-07-24 커널 지원을 가진 지속 가능한 서비스들에 기초하여 회복성 운영 시스템을 구축하는 방법

Country Status (6)

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

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
EP4007952A1 (en) 2022-06-08
WO2021021660A1 (en) 2021-02-04
JP2022542212A (ja) 2022-09-30
US11366720B2 (en) 2022-06-21
US20210034408A1 (en) 2021-02-04
CN114041120A (zh) 2022-02-11

Similar Documents

Publication Publication Date Title
US10652020B2 (en) Switching data sources during rolling upgrade of a leader-based distributed service with minimal disruptions
US11467920B2 (en) Methods and systems to index file data of virtual machine (VM) image
CN111108487B (zh) 管理程序直接存储器访问
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