KR20150143871A - 프리-히팅된 소프트웨어 설치 - Google Patents

프리-히팅된 소프트웨어 설치 Download PDF

Info

Publication number
KR20150143871A
KR20150143871A KR1020157034347A KR20157034347A KR20150143871A KR 20150143871 A KR20150143871 A KR 20150143871A KR 1020157034347 A KR1020157034347 A KR 1020157034347A KR 20157034347 A KR20157034347 A KR 20157034347A KR 20150143871 A KR20150143871 A KR 20150143871A
Authority
KR
South Korea
Prior art keywords
updates
installation
computing system
packages
software
Prior art date
Application number
KR1020157034347A
Other languages
English (en)
Other versions
KR101723763B1 (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 KR20150143871A publication Critical patent/KR20150143871A/ko
Application granted granted Critical
Publication of KR101723763B1 publication Critical patent/KR101723763B1/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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/67
    • 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

Landscapes

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

Abstract

프리-히팅된 소프트웨어 설치를 위한 방법 및 장치의 일부 실시예들이 제시되었다. 일 실시예에서, 소프트웨어에 대한 업데이트들의 패키지들이 컴퓨팅 시스템의 컴퓨팅 환경의 배경 동작에서 원격 소스로부터 컴퓨팅 시스템으로 다운로드된다. 그 후, 업데이트들의 패키지들의 설치가 소프트웨어 업데이트들에 커밋하지 않고 격리된 방식으로 배경 동작에서 자동으로 개시된다.

Description

프리-히팅된 소프트웨어 설치{PRE-HEATED SOFTWARE INSTALLATION}
본 발명의 실시예들은 컴퓨터에 소프트웨어를 설치하는 것에 관한 것으로, 특히, 새로운 버전의 소프트웨어로 컴퓨팅 시스템을 업데이트하는 것에 관한 것이다.
컴퓨팅 시스템들 및 각종 소프트웨어 애플리케이션들의 업데이트들은 요즘 컴퓨팅 세계에서는 실재적인 필수 사항들이다. 개발자들은 우리가 사용하는 컴퓨터 시스템들 및 애플리케이션들의 품질, 효율 및 기능을 향상시키기 위해 끊임없이 작업하고 있다. 전형적으로, 컴퓨팅 시스템들의 업데이트들의 설치는 긴 시간이 걸린다. 또한, 업데이트들의 설치 중에, 컴퓨팅 시스템에서 실행중인 다른 애플리케이션들 또는 프로세스들이 중단 또는 방해될 수 있다. 따라서, 컴퓨팅 시스템들의 사용자들은 자신의 작업의 긴 중단을 방지하기 위해 프롬프팅될 때 업데이트들의 설치를 종종 연기한다.
본 발명의 일부 실시예들은 소프트웨어에 대한 이용가능한 업데이트들을 자동으로 다운로드하고 다운로드된 업데이트들의 설치를 개시하는 단계를 포함한다. 일 실시예에서, 소프트웨어에 대한 업데이트들의 패키지들이 컴퓨팅 시스템의 컴퓨팅 환경의 배경 동작에서 원격 소스로부터 컴퓨팅 시스템으로 다운로드된다. 그 후, 업데이트들의 패키지들의 설치가 컴퓨팅 시스템을 소프트웨어 업데이트들에 커밋하게 하지 않고 격리된 방식으로 배경 동작에서 자동으로 개시된다. 배경 동작은 프론트에 위치한 사용자 인터페이스 요소들(예를 들어, 프론트 윈도)을 제어하고 입력 포커스(예를 들어, 키보드 및 마우스 또는 터치 입력들이 현재 사용자가 상호 작용하고 있는 프론트에 위치한 프로세스를 향함)를 가진 다른 프로세스들과 사용자가 상호 작용할 수 있는 동안 실행되는 동작일 수 있다. 다시 말해서, 전경 프로세스 또는 동작은 사용자 입력들(예를 들어, 키보드, 마우스, 터치 입력 등)을 수신할 수 있지만, 배경 동작이 사용자에게 가시적일 수 있더라도 배경 동작은 사용자 입력들을 수신하지 않는다.
본 발명의 일부 실시예들은 소프트웨어 업데이트들을 미리 설치하기 위한 방법을 포함한다. 일 실시예에서, 컴퓨팅 시스템의 소프트웨어에 대한 업데이트들의 집합의 설치의 일부분만이 컴퓨팅 시스템에서 현재 실행 중인 프로세스들을 방해하지 않고 실행된다. 그 후, 컴퓨팅 시스템의 사용자에게 업데이트들의 집합이 통지되고, 사용자가 업데이트들의 전체 집합을 긍정적으로 허용 또는 승인할 때까지 업데이트들의 전체 집합의 설치의 완료는 보류된다.
본 발명의 일부 실시예들은 소프트웨어 업데이트들을 미리 설치하기 위한 장치를 포함한다. 일 실시예에서, 장치는 소프트웨어의 명령들 및 데이터를 저장하기 위한 컴퓨터 판독가능한 저장 디바이스, 소프트웨어에 대한 업데이트들을 다운로드하도록 네트워크를 통해 컴퓨팅 머신에 통신 연결되게 하기 위한 네트워크 인터페이스, 및 프로세싱 디바이스를 포함한다. 프로세싱 디바이스는 소프트웨어의 기존 명령들 및 데이터를 겹쳐 쓰지 않고 컴퓨터 판독가능한 저장 디바이스의 예비된 영역(a reserved area)에서 업데이트들을 미리 설치하도록 동작한다.
본 발명의 일부 실시예들은 소프트웨어 업데이트들을 미리 설치하기 위한 방법을 포함한다. 일 실시예에서, 소프트웨어에 대한 업데이트들은 컴퓨팅 시스템의 배경 동작에서 실행 중인 프로세스를 통해 컴퓨팅 시스템에 부분적으로 설치된다. 그 후, 컴퓨팅 시스템의 사용자는 업데이트들을 통지받는다. 다른 실시예에서, 컴퓨팅 시스템은 배경 동작 전에 또는 배경 동작 중에 배경 동작을 사용자에게 통지할 수 있다. 업데이트들의 사용자 승인에 응답해서, 업데이트들의 설치가 컴퓨팅 시스템에서 완료된다. 일부 실시예들에서, 사용자는 업데이트들의 일부분을 승인할 수 있다. 응답으로, 업데이트들을 미리 설치하기 위해 지금까지 실행된 작업은 취소될 수 있으며, 승인된 업데이트들만이 설치된다.
상술된 방법들 중 하나 이상의 방법들을 실행하는 각종 디바이스들, 및 프로세싱 시스템에 의해 실행될 때, 프로세싱 시스템이 상기 방법들을 실행하도록 야기하는 머신 판독가능한 매체가 또한 기술된다.
다른 방법들, 디바이스들 및 컴퓨터 판독가능한 저장 매체가 또한 기술된다.
이하의 설명은 본 발명의 실시예들의 구현들의 일례로서 제공된 실례들을 가진 도면들의 설명을 포함한다. 도면들은 제한이 아니라 일례로서 이해되어야만 한다. 본 명세서에서 사용된 바와 같이, 하나 이상의 "실시예들"에 대한 참조는 본 발명의 적어도 하나의 구현에 포함된 특정한 특징, 구조, 또는 특성을 기술하는 것으로 이해될 것이다. 따라서, 본 명세서에 나타나는 "in some embodiments(일부 실시예들에서)" 또는 "in an alternate embodiments(다른 실시예들에서)" 등의 구절들은 본 발명의 각종 실시예들 및 구현들을 기술하며, 반드시 모두 동일한 실시예를 나타내는 것은 아니다. 그러나, 또한 반드시 상호 배타적인 것도 아니다.
도 1a-1b는 각종 실시예들에 따른 컴퓨팅 시스템에서의 소프트웨어 업데이트들의 프리-히팅된 설치를 위한 프로세스의 흐름도를 도시한다.
도 2a-2b는 각종 실시예들에 따른 컴퓨팅 시스템에서의 소프트웨어 업데이트들의 프리-히팅된 설치를 위한 프로세스의 흐름도를 도시한다.
도 3a-3b는 각종 실시예들에 따른 컴퓨팅 시스템에서의 소프트웨어 업데이트들의 프리-히팅된 설치를 위한 프로세스의 흐름도를 도시한다.
도 4는 프리-히팅된 소프트웨어 설치에서 사용될 수 있는 컴퓨팅 시스템의 컴퓨터 판독가능한 저장 디바이스의 일 실시예를 도시한 블록도이다.
도 5는 본 발명의 일부 실시예들에서 사용될 수 있는 컴퓨팅 디바이스의 일 실시예이다.
본 명세서에 기술된 실시예들은 새로운 소프트웨어 및/또는 소프트웨어의 업데이트들을 컴퓨팅 시스템에 설치하는 것을 용이하게 한다. 설명을 명백하고 간결하게 유지하기 위해, 본 명세서에 기술된 실시예들은 소프트웨어(예를 들어, 운영 체제, 사용자 애플리케이션들 등)에 대한 업데이트들의 설치를 종종 언급할 것이다. 그러나, 실시예들은 업데이트들의 설치로 제한되지는 않는다. 본 명세서에 기술된 방법들, 기술들, 시스템들, 컴포넌트들 등이 또한 새로운 애플리케이션들에 사용될 수 있다.
일부 실시예들에서, 컴퓨팅 시스템에서의 소프트웨어에 대한 업데이트들의 설치 프로세스가 개시되고 업데이트들을 컴퓨팅 시스템의 사용자에게 알리거나 또는 통지하기 전에 컴퓨팅 시스템의 현재 버전의 소프트웨어를 방해하지 않고 가능한 한 많이 실행된다. 따라서, 실행된 설치 프로세스의 상기 일부분은 또한 업데이트들의 미리 설치, 또는 업데이트들의 설치의 프리-히팅(pre-heating)이라고 할 수 있다. 업데이트들의 설치를 프리-히팅한 후에, 사용자는 업데이트들을 통지받고, 사용자가 업데이트들을 승인할 것인지를 질문받는다. 사용자가 업데이트들을 승인하면, 설치 프로세스는 컴퓨팅 시스템에 업데이트들을 커밋하도록 완료된다. 다른 경우, 사용자가 업데이트들을 거부하면, 프리-히팅 중에 실행된 작업은 취소될 수 있다.
일부 실시예들에서, 사용자가 업데이트들의 일부를 승인하고, 나머지 업데이트들을 거부하면, 프리-히팅 중에 실행된 작업은 취소될 수 있으며, 설치 프로세스는 승인된 업데이트들만을 설치하도록 재개시될 수 있다. 다른 실시예에서, 프리-히팅은 업데이트들의 다수의 미리결정된 조합들의 미리 설치를 포함할 수 있다. 사용자가 승인한 업데이트들의 조합이 이러한 미리결정된 조합들 중 하나이면, 업데이트들의 이 조합의 설치는 사용자 승인 시 완료될 수 있다. 다른 경우, 업데이트들의 미리결정된 조합들의 미리 설치 중에 실행된 작업은 취소될 수 있으며, 설치 프로세스는 승인된 업데이트들만을 설치하도록 재개시될 수 있다.
업데이트들을 사용자에게 통지하기 전에 업데이트들의 설치의 적어도 일부분을 실행함으로써, 업데이트들의 사용자 승인 시 실행될 나머지 업데이트들의 설치를 위한 작업은 상당히 감소된다. 그 결과, 사용자가 인식하는 업데이트들의 설치에 소비되는 시간이 상당히 더 짧아져서, 업데이트 설치와 관련된 사용자 경험을 향상시킨다. 더욱이, 설치 프로세스의 일부 또는 거의 대부분이 컴퓨팅 시스템에서 실행중인 다른 프로세스들 또는 사용자를 방해하지 않고 배경에서 실행되었기 때문에, 업데이트들의 설치에 의해 야기되는 사용자에 대한 방해가 감소된다. 짧아진 사용자 인식 설치 시간 및 감소된 사용자 방해에 따라, 사용자들은 컴퓨팅 시스템에서의 소프트웨어에 대한 업데이트들을 승인할 가능성이 더 많다.
도 1a-1b는 각종 실시예들에 따른 컴퓨팅 시스템에서의 소프트웨어 업데이트들의 프리-히팅된 설치를 위한 프로세스의 흐름도를 도시한다. 프로세스는 소프트웨어, 하드웨어, 펌웨어, 또는 상술된 바의 임의의 조합을 포함하는 프로세싱 로직에 의해 실행될 수 있다. 예를 들어, 프로세스는 후술되는 바와 같이 도 5에 도시된 컴퓨팅 디바이스로 구현된 프로세싱 로직에 의해 실행될 수 있다.
도 1a를 참조하면, 프로세싱 로직은 컴퓨팅 시스템의 배경에서 소프트웨어에 대한 업데이트들을 위해 컴퓨팅 시스템을 원격 소스에 연결한다(프로세싱 블록 110). 원격 소스는, 무선 네트워크들 및/또는 유선 네트워크들을 통해, 컴퓨팅 시스템에 연결된 서버, 퍼스널 컴퓨터 등의 다른 컴퓨팅 디바이스일 수 있다. 네트워크들은 LAN(local area network), WAN(wide area network), 이더넷 등을 포함할 수 있다. 소프트웨어에 대한 업데이트들은 소프트웨어에 대한 업그레이들, 새로운 버전들의 소프트웨어, 소프트웨어의 보안 패치들 등을 포함할 수 있다. 프로세싱 로직은 컴퓨팅 시스템의 배경에서 컴퓨팅 시스템을 원격 소스에 연결해서, 컴퓨팅 시스템에서 실행중인 현재 프로세스들을 방해하지 않음을 주지하라. 따라서, 컴퓨팅 시스템의 사용자는 프로세싱 로직이 무엇을 하고 있는지를 알지 못할 수 있다. 일부 실시예들에서, 프로세싱 로직은 이용가능한 업데이트들을 검출하기 위해 원격 소스에 정기적으로 질의할 수 있다.
원격 소스에서 이용가능한 업데이트들의 메타데이터에 기초하여, 프로세싱 로직은 어떤 업데이트(들)가 컴퓨팅 시스템에 적합한지를 결정한다(프로세싱 블록 112). 메타데이터의 일부 일례들은 버전 번호들, 허가 또는 자격 정보, 시스템 요구 사항들 등을 포함할 수 있다. 그 후, 프로세싱 로직은 원격 소스로부터 컴퓨팅 시스템으로 적합한 업데이트들의 패키지들을 다운로드한다(프로세싱 블록 114).
일부 실시예들에서, 프로세싱 로직은 컴퓨팅 시스템의 컴퓨터 판독가능한 저장 디바이스(예를 들어, 디스크)의 임시 영역에서 다운로드된 패키지들의 설치를 개시한다(프로세싱 블록 116). 프로세싱 로직은 업데이트들의 설치를 위해 디스크에서 이 임시 영역을 예비했을 수 있다. 또한, 업데이트들이 커밋되기 전에 이 임시 영역에 부분적으로 설치된 업데이트들이 컴퓨팅 시스템에서 현재 버전의 소프트웨어를 겹쳐 쓰거나 간섭하지 않도록, 디스크에서의 이 임시 영역은 디스크의 나머지로부터 격리될 수 있다. 이와 같이 하여, 이 임시 영역은 샌드박스라고 할 수 있으며, 부분적으로 설치된 업데이트들은 또한 샌드박싱된 것으로 언급될 수 있다. 설치는 설치 프로세스의 일부로서 압축 해제될 압축된 파일들의 다운로드를 포함할 수 있으며; 더욱이, 설치 프로세스는, 자기 하드 드라이브 또는 비휘발성 반도체 메모리 등의, 저장 디바이스의, 실행가능한 소프트웨어를 포함하는, 파일들의 구성을 포함할 수 있다. 설치는 폴더들 또는 디렉토리들, 등록 엔트리들(예를 들어, Microsoft Windows의), 구성 파일 엔트리들, 및 링크들 또는 바로가기들, 및 이러한 항목들의 부분집합의 생성 또는 변경을 또한 포함할 수 있다. 프로세싱 로직은 임시 영역에서 다운로드된 패키지들을 사용해서 시스템 캐시를 구축할 수 있다(프로세싱 블록 118). 일부 실시예들에서, 미리 초기화된 상태를 구성하는 컴퓨터 판독가능한 저장 디바이스의 메모리 조각은 세이브 오프되고(saved off), 그 후 다시 판독되고, 다른 노고 없이 사용될 수 있다. 디스크에 직렬화될 수 있는, 이 메모리 조각은 캐시이다. 예를 들어, 프로세싱 로직은 패키지들(압축 및/또는 암호화되었을 수 있음)로부터 업데이트들의 파일들을 추출하고, 필요한 경우, 이 파일들을 압축 해제 및/또는 해독하며, 후에 임시 영역에서 미리결정된 계층으로 이 파일들을 배열할 수 있으며, 이 계층은 컴퓨팅 시스템에서 현재 사용중인 시스템 캐시의 유사한 파일들의 계층을 미러링한다.
일부 실시예들에서, 업데이트를 필요로 하는 2개의 상이한 캐시들, 즉, 커널/kext 캐시 및 dyld 공유 캐시가 있다. 커널/kext 캐시는 커널 공간에서 실행할 필요가 있는 (컴퓨팅 시스템 및/또는 제3자들의 운영 체제의 벤더에 의해 제공될 수 있는) 드라이버 코드와 관련된다. dyld 공유 캐시는 컴퓨팅 시스템의 사용자 공간에서 애플리케이션들에 의해 사용되는 공유 코드 라이브러리들과 관련된다. 양 캐시들은 시스템이 차후 부팅 또는 애플리케이션 론치 사이클들 중에 종래의 더 많은 시간 소모적 초기화 프로세스에 걸쳐 실행되는 것을 방지한다. 캐시들과 관련된 다른 세부 사항들은, 그 전체가 참조용으로 본 명세서에 인용된, 발명인들 마이클 스미스(Michael Smith) 및 죠셉 소콜, 주니어(Joseph Sokol, Jr.)에 의한, "운영 체제를 부팅하기 위한 방법(Method for Booting an Operating System)"이라는 제목의, 미국 특허 번호 제7,607,000호에서 발견될 수 있다.
다음으로, 프로세싱 로직은 이용가능한 업데이트들을 컴퓨팅 시스템의 사용자에게 알린다(프로세싱 블록 120). 상기 프로세스는 업데이트들의 미리 설치 또는 업데이트들의 설치의 프리-히팅이라고 할 수 있다. 일부 실시예들에서, 프로세싱 로직은 이용가능한 업데이트들을 사용자에게 통지하기 위해 메시지를 디스플레이하도록 사용자 인터페이스(예를 들어, 그래픽 사용자 인터페이스)를 생성할 수 있다. 사용자 인터페이스는 사용자가 이용가능한 업데이트들을 승인할지 또는 거부할지를 사용자가 나타낼 수 있게 또한 할 수 있다. 일부 실시예들에서, 사용자 인터페이스는 사용자가 승인 또는 거부를 위해 이용가능한 업데이트들의 부분집합을 선택할 수 있게 하기 위해 사용자 인터페이스 컨트롤(예를 들어, 버튼들, 체크박스들, 드롭-다운 메뉴들 등)을 포함할 수 있다. 다시 말해서, 이용가능한 모든 업데이트들을 승인 또는 거부하는 대신, 사용자는 설치할 특정 업데이트들만을 선택함으로써 프로세스를 커스터마이즈할 수 있다.
업데이트들을 미리 설치하고 이용가능한 업데이트들을 사용자에게 알린 후에, 프로세싱 로직은 업데이트들에 관한 사용자 입력을 대기한다(프로세싱 블록 122). 블록 124에서, 프로세싱 로직은 임의의 사용자 입력이 수신되는지를 결정한다. 없으면, 프로세싱 로직은 블록 122로 돌아가서 계속해서 사용자 입력을 기다린다. 다른 경우, 프로세싱 로직은 도 1b의 블록 126으로 이행한다.
도 1b를 참조하면, 프로세싱 로직은 모든 이용가능한 업데이트들의 설치를 사용자가 승인하는지를 검사한다(프로세싱 블록 126). 그렇다면, 프로세싱 로직은 모든 업데이트들을 커밋한다(프로세싱 블록 128). 예를 들어, 프로세싱 로직은 현재 시스템 캐시를 대체하기 위해 임시 영역에서 구축된 시스템 캐시를 파일 시스템으로 교환함으로써 업데이트들의 설치를 완성 또는 완료할 수 있다. 일부 실시예들에서, 프로세싱 로직은 임시 영역에서 새롭게 구축된 시스템 캐시를 포인팅하도록 현재 시스템 캐시를 포인팅하는 포인터를 변경하고, 현재 시스템 캐시를 삭제할 수 있다. 일부 실시예들에서, 프로세싱 로직은 현재 시스템 캐시를 대체하기 위해 현재 시스템 캐시를 삭제하고 현재 시스템 캐시의 로케이션으로 새롭게 구축된 시스템 캐시를 이동하도록 단일 어토믹 동작(예를 들어, 쇼브 동작(a shove operation))을 실행할 수 있다. 소프트웨어 설치 완료와 관련된 다른 세부 사항들은, 그 전체가 참조용으로 본 명세서에 인용된, 발명인들 잭 알. 매튜(Jack R. Matthew) 및 죤 알. 창(John R. Chang)에 의한, 2008년 9월 30일에 출원된, "소프트웨어의 컴퓨터로의 설치(Installation of Software onto a Computer)"라는 제목의, 미국 특허 출원 일련 번호 제12/242,348호에서 발견될 수 있다. 선택적으로, 프로세싱 로직은 업데이트들을 효과적으로 하기 위해 필요한 경우 컴퓨팅 시스템을 재시작할 수 있다(프로세싱 블록 130).
일부 실시예들에서, 사용자가 블록 126에서 이용가능한 모든 업데이트들의 설치를 승인하지 않으면, 프로세싱 로직은 사용자가 이용가능한 업데이트들의 부분집합의 설치를 승인하는지를 또한 검사할 수 있다(프로세싱 블록 132). 사용자가 이용가능한 업데이트들의 부분집합의 설치를 승인하면, 프로세싱 로직은 구축된 시스템 캐시를 취소할 수 있다(프로세싱 블록 134). 예를 들어, 프로세싱 로직은 디스크의 임시 영역에서 구축된 시스템 캐시를 간단히 삭제할 수 있다. 그 후, 프로세싱 로직은 사용자가 어떤 업데이트들을 승인하는지에 기초하여 시스템 캐시를 재구축할 수 있다(프로세싱 블록 136). 그 후, 프로세싱 로직은 사용자에 의해 승인된 업데이트들만을 커밋한다(프로세싱 블록 138). 일부 실시예들에서, 프로세싱 로직은 임시 영역에서 새롭게 구축된 시스템 캐시를 포인팅하도록 현재 시스템 캐시를 포인팅하는 포인터를 변경하고, 현재 시스템 캐시를 삭제할 수 있다. 일부 실시예들에서, 프로세싱 로직은 현재 시스템 캐시를 대체하기 위해 현재 시스템 캐시를 삭제하고 현재 시스템 캐시의 로케이션으로 새롭게 구축된 시스템 캐시를 이동하도록 단일 어토믹 동작(예를 들어, 쇼브 동작)을 실행할 수 있다. 선택적으로, 프로세싱 로직은 업데이트들을 효과적으로 하기 위해 필요한 경우 컴퓨팅 시스템을 재시작할 수 있다(프로세싱 블록 140).
블록 132에서, 사용자가 심지어 이용가능한 업데이트들의 부분집합도 승인하지 않는다고 프로세싱 로직이 결정하면, 즉, 사용자가 모든 이용가능한 업데이트들을 거부하면, 프로세싱 로직은 구축된 시스템 캐시를 취소할 수 있다(프로세싱 블록 142). 일부 실시예들에서, 프로세싱 로직은 차후 사용을 위해 컴퓨팅 시스템에 다운로드된 패키지들을 보유한다(프로세싱 블록 144). 예를 들어, 프로세싱 로직은 다시 차후에 업데이트들을 검사할 수 있으며, 제2 집합의 업데이트들을 찾을 수 있다. 또한, 프로세싱 로직은 이전에 다운로드된 패키지들의 일부가 제2 집합의 업데이트들을 설치하는데 여전히 필요하다고 결정할 수 있으며, 따라서, 이전에 다운로드된 패키지들이 후에 사용될 수 있다.
도 2a-2b는 각종 실시예들에 따른 컴퓨팅 시스템에서의 소프트웨어 업데이트들의 프리-히팅된 설치를 위한 프로세스의 흐름도를 도시한다. 상기 프로세스와 같이, 이 프로세스는 소프트웨어, 하드웨어, 펌웨어, 또는 상술된 바의 임의의 조합을 포함하는 프로세싱 로직에 의해 실행될 수 있다. 예를 들어, 프로세스는 후술되는 바와 같이 도 5에 도시된 컴퓨팅 디바이스로 구현된 프로세싱 로직에 의해 실행될 수 있다.
도 2a를 참조하면, 프로세싱 로직은 컴퓨팅 시스템의 배경에서 소프트웨어에 대한 업데이트들을 위해 컴퓨팅 시스템을 원격 소스에 연결한다(프로세싱 블록 210). 원격 소스는, 무선 네트워크들 및/또는 유선 네트워크들을 통해, 컴퓨팅 시스템에 연결된 서버, 퍼스널 컴퓨터 등의 다른 컴퓨팅 디바이스일 수 있다. 네트워크들은 LAN(local area network), WAN(wide area network), 이더넷 등을 포함할 수 있다. 소프트웨어에 대한 업데이트들은 소프트웨어에 대한 업그레이드들, 새로운 버전들의 소프트웨어, 소프트웨어의 보안 패치들 등을 포함할 수 있다. 프로세싱 로직은 컴퓨팅 시스템의 배경에서 컴퓨팅 시스템을 원격 소스에 연결해서, 컴퓨팅 시스템에서 실행중인 현재 프로세스들을 방해하지 않음을 주지하라. 따라서, 컴퓨팅 시스템의 사용자는 프로세싱 로직이 무엇을 하고 있는지를 알지 못할 수 있다.
원격 소스에서 이용가능한 업데이트들의 메타데이터에 기초하여, 프로세싱 로직은 어떤 업데이트(들)가 컴퓨팅 시스템에 적합한지를 결정한다(프로세싱 블록 212). 메타데이터의 일부 일례들은 상술되었다. 그 후, 프로세싱 로직은 원격 소스로부터 컴퓨팅 시스템으로 적합한 업데이트들의 패키지들을 다운로드한다(프로세싱 블록 214).
일부 실시예들에서, 프로세싱 로직은 컴퓨팅 시스템의 컴퓨터 판독가능한 저장 디바이스의 임시 영역에서 다운로드된 패키지들의 설치를 개시한다(프로세싱 블록 216). 업데이트들의 모든 가능한 조합에 대해, 프로세싱 로직은 임시 영역에서 샌드박싱된, 다운로드된 패키지들을 사용해서 시스템 캐시를 구축한다(프로세싱 블록 218). 시스템 캐시의 일부 실시예들의 세부 사항들은 상술되었다. 업데이트들의 각각의 조합에 대해 구축된 시스템 캐시는 또한 샌드박싱된다. 즉, 시스템 캐시는 임시 영역에서 구축된 다른 시스템 캐시들과 격리된다. 이 시스템 캐시들이 설치 시간에 구축됨에 따라, 컴퓨팅 시스템이 동적으로 될 수 있음을 주지하라. 다시 말해서, 상이한 커널 확장들 및 라이브러리들은 상이한 전개들에 걸쳐 존재할 수 있다. 예를 들어, 동일한 운영 체제의 복사본을 각각 가지지만, 하나의 복사본은 하드웨어 제품을 지원하도록 제3자 커널 확장을 가질 수 있는 반면, 다른 하나는 갖지 않은, 2개의 시스템들이 있을 수 있다. 다른 일례에서, 상이한 dyld 공유 캐시를 필요로 할 수 있는 하나 이상의 미리 선택된 사용자 애플리케이션들이 딸려 있는 더 새로운 버전의 시스템 공유 라이브러리를 둘 다 가진 2개의 컴퓨팅 시스템들이 있을 수 있다.
다음으로, 프로세싱 로직은 이용가능한 업데이트들을 컴퓨팅 시스템의 사용자에게 알린다(프로세싱 블록 220). 상기 프로세스는 업데이트들의 미리 설치 또는 업데이트들의 설치의 프리-히팅이라고 할 수 있다. 일부 실시예들에서, 프로세싱 로직은 이용가능한 업데이트들을 사용자에게 통지하기 위해 메시지를 디스플레이하도록 사용자 인터페이스(예를 들어, 그래픽 사용자 인터페이스)를 생성할 수 있다. 사용자 인터페이스의 일부 실시예들의 세부 사항들은 상술되었다.
업데이트들을 미리 설치하고 이용가능한 업데이트들을 사용자에게 알린 후에, 프로세싱 로직은 업데이트들에 관한 사용자 입력을 대기한다(프로세싱 블록 222). 블록 224에서, 프로세싱 로직은 임의의 사용자 입력이 수신되는지를 결정한다. 없으면, 프로세싱 로직은 블록 222로 돌아가서 계속해서 사용자 입력을 기다린다. 다른 경우, 프로세싱 로직은 도 2b의 블록 226으로 이행한다.
도 2b를 참조하면, 프로세싱 로직은 모든 이용가능한 업데이트들의 설치를 사용자가 승인하는지를 검사한다(프로세싱 블록 226). 그렇다면, 프로세싱 로직은 모든 업데이트들을 커밋한다(프로세싱 블록 228). 예를 들어, 프로세싱 로직은 현재 시스템 캐시를 대체하기 위해 임시 영역에서 구축된 시스템 캐시를 파일 시스템으로 교환함으로써 업데이트들의 설치를 완성 또는 완료할 수 있다. 일부 실시예들에서, 프로세싱 로직은 임시 영역에서 새롭게 구축된 시스템 캐시를 포인팅하도록 현재 시스템 캐시를 포인팅하는 포인터를 변경하고, 현재 시스템 캐시를 삭제할 수 있다. 일부 실시예들에서, 프로세싱 로직은 현재 시스템 캐시를 대체하기 위해 현재 시스템 캐시를 삭제하고 현재 시스템 캐시의 로케이션으로 새롭게 구축된 시스템 캐시를 이동하도록 단일 어토믹 동작(예를 들어, 쇼브 동작)을 실행할 수 있다. 선택적으로, 프로세싱 로직은 업데이트들을 효과적으로 하기 위해 필요한 경우 컴퓨팅 시스템을 재시작할 수 있다(프로세싱 블록 230).
일부 실시예들에서, 사용자가 블록 226에서 이용가능한 모든 업데이트들의 설치를 승인하지 않으면, 프로세싱 로직은 사용자가 이용가능한 업데이트들의 부분집합의 설치를 승인하는지를 또한 검사할 수 있다(프로세싱 블록 232). 사용자가 이용가능한 업데이트들의 부분집합의 설치를 승인하면, 프로세싱 로직은 사용자가 승인한 업데이트들의 조합과 일치하는 임시 영역에서 구축된 시스템 캐시를 찾는다(프로세싱 블록 234). 그 후, 프로세싱 로직은 승인된 업데이트들의 조합을 커밋하기 위해 찾아진 시스템 캐시로 현재 시스템 캐시를 대체할 수 있다(프로세싱 블록 236). 일부 실시예들에서, 프로세싱 로직은 임시 영역에서 찾아진 시스템 캐시를 포인팅하도록 현재 시스템 캐시를 포인팅하는 포인터를 변경하고, 현재 시스템 캐시를 삭제할 수 있다. 일부 실시예들에서, 프로세싱 로직은 현재 시스템 캐시를 대체하기 위해 현재 시스템 캐시를 삭제하고 현재 시스템 캐시의 로케이션으로 찾아진 시스템 캐시를 이동하도록 단일 어토믹 동작(예를 들어, 쇼브 동작)을 실행할 수 있다. 프로세싱 로직은 업데이트들의 다른 조합들에 대해 임시 영역에서 구축된 나머지 시스템 캐시들을 또한 삭제 또는 제거할 수 있다. 마지막으로, 프로세싱 로직은 업데이트들을 효과적으로 하기 위해 필요한 경우 컴퓨팅 시스템을 재시작할 수 있다(프로세싱 블록 238). 시스템 캐시가 업데이트들을 사용자에게 알리기 전에 추측에 근거하여 구축되었기 때문에, 사용자 인식 업데이트 시간(사용자가 선택된 업데이트들을 승인함으로부터 선택된 업데이트들을 커밋할 때까지 실행될 수 있음)이 종래의 업데이트 설치 시간보다 더 짧다. 또한, 업데이트들의 미리 설치 중에 추측에 근거하여 구축된 시스템 캐시들은 또한 상이한 커널 확장들 및 라이브러리들이 상이한 전개들에 걸쳐 존재할 수 있게 한다.
블록 232에서, 사용자가 어떠한 이용가능한 업데이트들도 승인하지 않는다고 프로세싱 로직이 결정하면, 즉, 사용자가 모든 이용가능한 업데이트들을 거부하면, 프로세싱 로직은 구축된 시스템 캐시들을 취소할 수 있다(프로세싱 블록 242). 일부 실시예들에서, 프로세싱 로직은 차후 사용을 위해 컴퓨팅 시스템에 다운로드된 패키지들을 보유한다(프로세싱 블록 244). 예를 들어, 프로세싱 로직은 다시 차후에 업데이트들을 검사할 수 있으며, 제2 집합의 업데이트들을 찾을 수 있다. 또한, 프로세싱 로직은 이전에 다운로드된 패키지들의 일부가 제2 집합의 업데이트들을 설치하는데 여전히 필요하다고 결정할 수 있으며, 따라서, 이전에 다운로드된 패키지들이 후에 사용될 수 있다.
도 3a-3b는 각종 실시예들에 따른 컴퓨팅 시스템에서의 소프트웨어 업데이트들의 프리-히팅된 설치를 위한 프로세스의 흐름도를 도시한다. 상기 프로세스와 같이, 이 프로세스는 소프트웨어, 하드웨어, 펌웨어, 또는 상술된 바의 임의의 조합을 포함하는 프로세싱 로직에 의해 실행될 수 있다. 예를 들어, 프로세스는 후술되는 바와 같이 도 5에 도시된 컴퓨팅 디바이스로 구현된 프로세싱 로직에 의해 실행될 수 있다.
도 3a를 참조하면, 프로세싱 로직은 컴퓨팅 시스템의 배경에서 소프트웨어에 대한 업데이트들을 위해 컴퓨팅 시스템을 원격 소스에 연결한다(프로세싱 블록 310). 원격 소스는, 무선 네트워크들 및/또는 유선 네트워크들을 통해, 컴퓨팅 시스템에 연결된 서버, 퍼스널 컴퓨터 등의 다른 컴퓨팅 디바이스일 수 있다. 네트워크들은 LAN(local area network), WAN(wide area network), 이더넷 등을 포함할 수 있다. 소프트웨어에 대한 업데이트들은 소프트웨어에 대한 업그레이드들, 새로운 버전들의 소프트웨어, 소프트웨어의 보안 패치들 등을 포함할 수 있다. 프로세싱 로직은 컴퓨팅 시스템의 배경에서 컴퓨팅 시스템을 원격 소스에 연결해서, 컴퓨팅 시스템에서 실행중인 현재 프로세스들을 방해하지 않음을 주지하라. 따라서, 컴퓨팅 시스템의 사용자는 프로세싱 로직이 무엇을 하고 있는지를 알지 못할 수 있다.
원격 소스에서 이용가능한 업데이트들의 메타데이터에 기초하여, 프로세싱 로직은 어떤 업데이트(들)가 컴퓨팅 시스템에 적합한지를 결정한다(프로세싱 블록 312). 메타데이터의 일부 일례들은 상술되었다. 그 후, 프로세싱 로직은 원격 소스로부터 컴퓨팅 시스템으로 적합한 업데이트들의 패키지들을 다운로드한다(프로세싱 블록 314).
일부 실시예들에서, 프로세싱 로직은 컴퓨팅 시스템의 컴퓨터 판독가능한 저장 디바이스의 임시 영역에서 다운로드된 패키지들의 설치를 개시한다(프로세싱 블록 316). 업데이트들의 가능한 조합들의 미리결정된 집합에 대해, 프로세싱 로직은 임시 영역에서 샌드박싱된, 다운로드된 패키지들을 사용해서 이 조합들 각각에 대한 시스템 캐시를 구축한다(프로세싱 블록 318). 시스템 캐시의 일부 실시예들의 세부 사항들은 상술되었다. 통상, 가능한 조합들의 미리결정된 집합은 모든 적합한 업데이트들의 조합 및 적합한 업데이트들의 하나 이상의 인기 있는 조합들을 포함한다. 다시 말해서, 프로세싱 로직은 다수의 시스템 캐시들을 추측에 근거하여 구축하고, 그 중 하나가 후에 사용자에 의해 승인되는 업데이트들을 커밋하기 위해 선택될 수 있다. 업데이트들의 각각의 조합에 대해 구축된 시스템 캐시는 또한 샌드박싱된다. 즉, 시스템 캐시는 임시 영역에서 구축된 다른 시스템 캐시들과 격리된다. 그 후, 프로세싱 로직은 이용가능한 업데이트들을 컴퓨팅 시스템의 사용자에게 알린다(프로세싱 블록 320). 상기 프로세스는 업데이트들의 미리 설치 또는 업데이트들의 설치의 프리-히팅이라고 할 수 있다. 일부 실시예들에서, 프로세싱 로직은 이용가능한 업데이트들을 사용자에게 통지하기 위해 메시지를 디스플레이하도록 사용자 인터페이스(예를 들어, 그래픽 사용자 인터페이스)를 생성할 수 있다. 사용자 인터페이스의 일부 실시예들의 세부 사항들은 상술되었다.
업데이트들을 미리 설치하고 이용가능한 업데이트들을 사용자에게 알린 후에, 프로세싱 로직은 업데이트들에 관한 사용자 입력을 대기한다(프로세싱 블록 322). 블록 324에서, 프로세싱 로직은 임의의 사용자 입력이 수신되는지를 결정한다. 없으면, 프로세싱 로직은 블록 322로 돌아가서 계속해서 사용자 입력을 기다린다. 다른 경우, 프로세싱 로직은 도 3b의 블록 326으로 이행한다.
도 3b를 참조하면, 프로세싱 로직은 모든 이용가능한 업데이트들의 설치를 사용자가 승인하는지를 검사한다(프로세싱 블록 326). 그렇다면, 프로세싱 로직은 모든 업데이트들을 커밋한다(프로세싱 블록 328). 예를 들어, 프로세싱 로직은 현재 시스템 캐시를 대체하기 위해 임시 영역에서 구축된 시스템 캐시를 파일 시스템으로 교환함으로써 업데이트들의 설치를 완성 또는 완료할 수 있다. 일부 실시예들에서, 프로세싱 로직은 임시 영역에서 새롭게 구축된 시스템 캐시를 포인팅하도록 현재 시스템 캐시를 포인팅하는 포인터를 변경하고, 현재 시스템 캐시를 삭제할 수 있다. 일부 실시예들에서, 프로세싱 로직은 현재 시스템 캐시를 대체하기 위해 현재 시스템 캐시를 삭제하고 현재 시스템 캐시의 로케이션으로 새롭게 구축된 시스템 캐시를 이동하도록 단일 어토믹 동작(예를 들어, 쇼브 동작)을 실행할 수 있다. 선택적으로, 프로세싱 로직은 업데이트들을 효과적으로 하기 위해 필요한 경우 컴퓨팅 시스템을 재시작할 수 있다(프로세싱 블록 330).
일부 실시예들에서, 사용자가 블록 326에서 모든 이용가능한 업데이트들의 설치를 승인하지 않으면, 프로세싱 로직은 사용자가 이용가능한 업데이트들의 부분집합의 설치를 승인하는지를 또한 검사할 수 있다(프로세싱 블록 332). 사용자가 이용가능한 업데이트들의 부분집합의 설치를 승인하면, 프로세싱 로직은 승인된 부분집합이 미리결정된 조합들 중 하나인지를 검사한다(프로세싱 블록 333). 그렇다면, 프로세싱 로직은 사용자가 승인한 업데이트들의 조합과 일치하는 임시 영역에서 구축된 시스템 캐시를 찾는다(프로세싱 블록 334). 그 후, 프로세싱 로직은 승인된 업데이트들의 조합을 커밋하기 위해 찾아진 시스템 캐시로 현재 시스템 캐시를 대체할 수 있다(프로세싱 블록 336). 일부 실시예들에서, 프로세싱 로직은 임시 영역에서 찾아진 시스템 캐시를 포인팅하도록 현재 시스템 캐시를 포인팅하는 포인터를 변경하고, 현재 시스템 캐시를 삭제할 수 있다. 일부 실시예들에서, 프로세싱 로직은 현재 시스템 캐시를 대체하기 위해 현재 시스템 캐시를 삭제하고 현재 시스템 캐시의 로케이션으로 찾아진 시스템 캐시를 이동하도록 단일 어토믹 동작(예를 들어, 쇼브 동작)을 실행할 수 있다. 프로세싱 로직은 업데이트들의 다른 조합들에 대해 임시 영역에서 구축된 나머지 시스템 캐시들을 또한 삭제 또는 제거할 수 있다. 마지막으로, 프로세싱 로직은 승인된 업데이트들을 효과적으로 하기 위해 필요한 경우 컴퓨팅 시스템을 재시작할 수 있다(프로세싱 블록 338). 시스템 캐시가 업데이트들을 사용자에게 알리기 전에 추측에 근거하여 구축되었기 때문에, 사용자 인식 업데이트 시간(사용자가 선택된 업데이트들을 승인함으로부터 선택된 업데이트들을 커밋할 때까지 실행될 수 있음)이 종래의 업데이트 설치 시간 보다 더 짧다. 또한, 업데이트들의 미리 설치 중에 추측에 근거하여 구축된 시스템 캐시들은 또한 상이한 커널 확장들 및 라이브러리들이 상이한 전개들에 걸쳐 존재할 수 있게 한다.
그러나, 블록 333에서 승인된 부분집합이 미리결정된 조합들 중 하나가 아니라고 프로세싱 로직이 결정하면, 프로세싱 로직은 구축된 모든 시스템 캐시들을 취소할 수 있으며(프로세싱 블록 335), 사용자가 어떤 업데이트들을 승인하는지에 기초하여 시스템 캐시를 재구축하고(프로세싱 블록 339), 사용자가 승인한 업데이트들만을 커밋한다(프로세싱 블록 340). 마지막으로, 프로세싱 로직은 승인된 업데이트들을 효과적으로 하기 위해 필요한 경우 컴퓨팅 시스템을 재시작할 수 있다(프로세싱 블록 338).
블록 332에서, 사용자가 어떠한 이용가능한 업데이트들도 승인하지 않는다고 프로세싱 로직이 결정하면, 즉, 사용자가 모든 이용가능한 업데이트들을 거부하면, 프로세싱 로직은 구축된 시스템 캐시들을 취소할 수 있다(프로세싱 블록 342). 일부 실시예들에서, 프로세싱 로직은 차후 사용을 위해 컴퓨팅 시스템에 다운로드된 패키지들을 보유한다(프로세싱 블록 344). 예를 들어, 프로세싱 로직은 다시 차후에 업데이트들을 검사할 수 있으며, 제2 집합의 업데이트들을 찾을 수 있다. 또한, 프로세싱 로직은 이전에 다운로드된 패키지들의 일부가 제2 집합의 업데이트들을 설치하는데 여전히 필요하다고 결정할 수 있으며, 따라서, 이전에 다운로드된 패키지들이 후에 사용될 수 있다.
도 4는 본 발명의 일부 실시예들에 따른 프리-히팅된 소프트웨어 설치에서 사용될 수 있는 컴퓨팅 시스템의 컴퓨터 판독가능한 저장 디바이스의 일 실시예를 도시한 블록도이다. 컴퓨터 판독가능한 저장 디바이스(400)는 컴퓨팅 시스템의 하드 디스크를 포함할 수 있다. 컴퓨터 판독가능한 저장 디바이스(400)는 컴퓨팅 시스템의 현재 파일 시스템(410)을 저장한다. 또한, 현재 파일 시스템(410)으로부터 격리된 임시 영역(420)은 업데이트들의 미리 설치를 위해 예비된다. 업데이트들의 미리 설치 중에, 시스템 캐시(425)가 현재 파일 시스템(410)의 계층을 미러링한 디렉토리들의 계층으로 업데이트들과 연관된 파일들을 조직 및 저장함으로써 임시 영역(420)에서 구축될 수 있다. 추가의 시스템 캐시들이 업데이트들의 상이한 조합들에 대해 임시 영역(420)에서 구축될 수 있다.
사용자가 모든 업데이트들을 승인하면, 임시 영역(420)에서 구축된 시스템 캐시(425)는 현재 파일 시스템(410)으로 교환될 수 있다. 사용자가 모든 업데이트들을 거부하면, 구축된 시스템 캐시(425)는 삭제될 수 있다. 사용자가 업데이트들의 부분집합만을 승인하면, 구축된 시스템 캐시(425)는 삭제될 수 있으며, 업데이트들의 승인된 부분집합이 스크래치로부터 설치될 수 있다. 일부 실시예들에서, 업데이트들의 미리결정된 조합들에 대응하는 다수의 시스템 캐시들이 구축된 경우, 업데이트들의 승인된 부분집합이 업데이트들의 미리결정된 조합들 중 하나라면, 구축된 시스템 캐시들 중 하나는 업데이트들의 승인된 부분집합을 커밋하는데 사용될 수 있다. 소프트웨어 업데이트들의 미리 설치의 일부 실시예들의 세부 사항들은 상술되었다.
도 5는 본 명세서에 기술된 각종 실시예들을 구현하기에 적합한 컴퓨팅 환경을 도시한 블록도이다. 총괄하여, 이 컴포넌트들은, 범용 컴퓨터 시스템들(예를 들어, 서버들, 퍼스널 컴퓨터들, 랩탐 컴퓨터들 등) 및 특별 핸드헬드 컴퓨터 디바이스들(예를 들어, 퍼스널 디지털 어시스턴트들(PDAs), 스마트 폰들 등)을 포함하지만 이들로만 제한되지 않는 광범위한 범주의 하드웨어 시스템들을 나타내도록 의도된다.
컴퓨팅 시스템(500)은 버스(580)를 통해 서로 연결된 프로세서(510), I/O 디바이스들(540), 메인 메모리(520) 및 플래시 메모리(530)를 포함한다. 시스템 메모리(RAM), 및 비휘발성 저장 디바이스들(예를 들어, 자기 또는 광 디스크들) 중 하나 또는 그 이상을 포함할 수 있는 메인 메모리(520)는 프로세서(510)에 의해 사용될 명령들 및 데이터를 저장한다. 또한, 네트워크 인터페이스들(570) 및 데이터 스토리지(560)는 버스(580)를 통해 서로 연결된다. 데이터 스토리지(560)는 본 명세서에 기술된 구조화된 데이터(예를 들어, 접촉 정보, 캘린더 등)를 저장한다.
컴퓨팅 시스템(500)의 각종 컴포넌트들은 각종 실시예들에서 재구성될 수 있으며, 일부 실시예들은 상기 컴포넌트들 전부를 요구하거나 포함하지 않을 수 있다. 게다가, 추가 프로세서들(예를 들어, 디지털 신호 프로세서, 그래픽 프로세서 등), 저장 디바이스들, 메모리들, 네트워크/통신 인터페이스들 등의 추가 컴포넌트들이 시스템(500)에 포함될 수 있다.
일부 실시예들에서, 상술된 바와 같이 본 발명에 따른 프리-히팅된 소프트웨어 설치 또는 소프트웨어 업데이트들의 미리 설치를 위한 방법들 및 장치들이 도 5의 컴퓨팅 시스템(500)에 의해 실행되는 일련의 소프트웨어 루틴들로 구현될 수 있다. 이 소프트웨어 루틴들은 프로세서(510) 등의 하드웨어 시스템의 프로세싱 시스템에 의해 실행되는 복수의 또는 일련의 명령들을 포함한다. 처음에, 일련의 명령들은 데이터 스토리지 디바이스(560), 메모리(520), 및/또는 플래시(530)에 저장된다.
본 명세서에 기술된 각종 컴포넌트들은 본 명세서에 기술된 기능들을 실행하기 위한 수단일 수 있다. 본 명세서에 기술된 각각의 컴포넌트는 소프트웨어, 하드웨어, 또는 이들의 조합을 포함한다. 컴포넌트들은 소프트웨어 모듈들, 하드웨어 모듈들, 특별 목적 하드웨어(예를 들어, 애플리케이션 특정 하드웨어, 주문형 반도체들(ASICs), 디지털 신호 프로세서들(DSPs) 등), 내장형 제어기들, 하드와이어 회로 등으로서 구현될 수 있다. 소프트웨어 콘텐츠(예를 들어, 데이터, 명령들, 구성 등)는, 실행될 수 있는 명령들을 나타내는 콘텐츠를 제공하는, 컴퓨터 판독가능한 매체를 포함하는 제조품을 통해 제공될 수 있다. 콘텐츠는 컴퓨터가 본 명세서에 기술된 각종 기능들/동작들을 실행하게 야기할 수 있다. 컴퓨터 판독가능한(또는 머신 판독가능한 또는 전자적으로 액세스 가능한) 매체는, 기록 가능/기록 불가능 매체(예를 들어, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 디바이스들 등) 등의, 컴퓨팅 디바이스(예를 들어, 컴퓨터, PDA, 전자 시스템 등)에 의해 액세스 가능한 형태로 정보를 제공(즉, 저장 및/또는 전송)하는 임의의 메커니즘을 포함한다. 콘텐츠는 직접 실행가능한한 ("객체" 또는 "실행가능한" 형태), 소스 코드 등일 수 있다. 컴퓨터 판독가능한 매체는 콘텐츠가 다운로드될 수 있는 스토리지 또는 데이터베이스를 또한 포함할 수 있다. 컴퓨터 판독가능한 매체는 판매 시 또는 배달시 콘텐츠가 저장되어 있는 디바이스 또는 제품을 또한 포함할 수 있다. 따라서, 콘텐츠가 저장되어 있는 디바이스의 배달, 또는 통신 매체를 통해 다운로드할 콘텐츠의 제공은 본 명세서에 기술된 이러한 콘텐츠를 가진 제조품을 제공하는 것으로 이해될 수 있다.
본 명세서에 기술된 바 외에, 각종 변경들이 본 발명의 범위로부터 벗어나지 않은 채로 본 발명의 기술된 실시예들 및 구현들에 대해 이루어질 수 있다. 따라서, 본 명세서의 실례들 및 일례들은 제한적인 의미가 아니라 예시적인 의미로 해석되어야만 한다. 본 발명의 범위는 오직 이하의 청구항들을 참조해서만 판단되어야만 한다.

Claims (15)

  1. 프로세싱 디바이스에 의해 수행되는 컴퓨터 구현 방법으로서,
    컴퓨팅 시스템에 의해, 상기 컴퓨팅 시스템의 컴퓨팅 환경의 배경 동작에서, 상기 컴퓨팅 시스템으로부터 원격에 있는 소스로부터 상기 컴퓨팅 시스템상의 소프트웨어에 대한 업데이트들의 하나 이상의 패키지들을 다운로드하는 단계; 및
    상기 컴퓨팅 시스템에 의해, 상기 업데이트들을 커밋팅(committing)하지 않고 고립된 방식으로 상기 배경 동작에서 자동적으로 상기 업데이트들의 상기 패키지들을 설치하는 것을 개시하는 단계 - 상기 패키지들의 설치를 개시하는 단계는 업데이트들의 미리결정된 조합에 대응하는 복수의 시스템 캐시들을 구축하는 단계를 포함하고, 각각의 시스템 캐시는 상기 컴퓨팅 시스템상에서 사용 중인 시스템 캐시의 계층을 미러링하는 계층을 가짐 -
    를 포함하는 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 업데이트들의 상기 패키지들의 설치를 개시하는 단계 이후에,
    상기 업데이트들에 대한 사용자의 승인 시, 상기 업데이트들의 상기 패키지들의 설치를 완료하는 것에 의해 상기 소프트웨어에 대한 업데이트들을 커밋팅하는 단계를 더 포함하는 컴퓨터 구현 방법.
  3. 제1항에 있어서,
    상기 업데이트들의 상기 패키지들의 설치를 개시하는 단계 이후에,
    상기 업데이트들에 대한 사용자의 거절 시, 지금까지 수행된 상기 업데이트들의 상기 패키지들의 설치를 되돌리는(undoing) 단계를 더 포함하는 컴퓨터 구현 방법.
  4. 제3항에 있어서,
    상기 지금까지 수행된 상기 업데이트들의 상기 패키지들의 설치를 되돌리는 단계 이후에, 상기 컴퓨팅 시스템에 다운로드된 상기 업데이트들의 상기 패키지들을 보유하는 단계를 더 포함하는 컴퓨터 구현 방법.
  5. 제3항에 있어서,
    상기 지금까지 수행된 상기 업데이트들의 상기 패키지들의 설치를 되돌리는 단계 이후에, 거절된 상기 업데이트들과 연관된 하나 이상의 파일들을 삭제하는 단계를 더 포함하는 컴퓨터 구현 방법.
  6. 제1항에 있어서, 상기 컴퓨팅 시스템상의 소프트웨어에 대한 상기 업데이트들의 하나 이상의 패키지들은 압축된 포맷인 컴퓨터 구현 방법.
  7. 제6항에 있어서, 상기 업데이트들의 상기 패키지들을 설치하는 것을 개시하는 단계 이후에,
    상기 업데이트들의 상기 패키지들을 압축해제하는 단계; 및
    압축해제된 상기 패키지들을 사용하여 상기 컴퓨팅 환경의 상기 배경 동작에서 상기 복수의 시스템 캐시들을 구축하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  8. 제1항에 있어서, 상기 업데이트들의 상기 패키지들의 설치는 상기 컴퓨팅 시스템의 사용자들에게 알리지 않고 개시되는 컴퓨터 구현 방법.
  9. 제1항에 있어서, 상기 업데이트들의 상기 패키지들의 설치는 상기 컴퓨팅 시스템의 현재 버전의 소프트웨어를 방해하지 않고 개시되는 컴퓨터 구현 방법.
  10. 제1항에 있어서,
    상기 업데이트들의 상기 패키지들의 설치는,
    상기 컴퓨팅 시스템의 일시적인 저장 공간에 상기 업데이트들의 미리결정된 조합들 중 적어도 하나에 대한 시스템 캐시를 구축하는 것; 및
    상기 업데이트들의 미리결정된 조합들 중 적어도 하나에 대한 승인에 응답하여, 상기 시스템 캐시를 상기 컴퓨팅 시스템의 현재 시스템 캐시와 스와핑(swapping)하는 것에 의해 상기 업데이트들의 상기 패키지들의 설치를 완료하는 것
    을 포함하는 컴퓨터 구현 방법.
  11. 제10항에 있어서, 상기 업데이트들의 미리결정된 조합들 중 적어도 하나에 대한 상기 시스템 캐시를 구축하는 것은, 업데이트들의 전체 집합에 대한 시스템 캐시를 구축하는 것을 포함하는 컴퓨터 구현 방법.
  12. 제1항에 있어서, 상기 컴퓨팅 시스템상의 상기 소프트웨어는 하나 이상의 사용자 애플리케이션들을 포함하는 컴퓨터 구현 방법.
  13. 제1항에 있어서, 상기 컴퓨팅 시스템상의 상기 소프트웨어는 운영 체제 소프트웨어를 포함하는 컴퓨터 구현 방법.
  14. 명령어들을 저장하는 비일시적 컴퓨터 판독가능 매체로서, 상기 명령어들은, 하나 이상의 프로세서들에 의해 실행되는 경우, 상기 하나 이상의 프로세서들로 하여금 제1항 내지 제13항 중 어느 한 항의 컴퓨터 구현 방법을 수행하도록 하는, 비일시적 컴퓨터 판독가능 매체.
  15. 제1항 내지 제13항 중 어느 한 항의 컴퓨터 구현 방법을 수행하는 수단들을 포함하는 장치.
KR1020157034347A 2010-12-01 2011-11-22 프리-히팅된 소프트웨어 설치 KR101723763B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/958,236 2010-12-01
US12/958,236 US9378007B2 (en) 2010-12-01 2010-12-01 Pre-heated software installation
PCT/US2011/061908 WO2012074848A1 (en) 2010-12-01 2011-11-22 Pre-heated software installation

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020137014148A Division KR101575695B1 (ko) 2010-12-01 2011-11-22 프리-히팅된 소프트웨어 설치

Publications (2)

Publication Number Publication Date
KR20150143871A true KR20150143871A (ko) 2015-12-23
KR101723763B1 KR101723763B1 (ko) 2017-04-05

Family

ID=45418769

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020137014148A KR101575695B1 (ko) 2010-12-01 2011-11-22 프리-히팅된 소프트웨어 설치
KR1020157034347A KR101723763B1 (ko) 2010-12-01 2011-11-22 프리-히팅된 소프트웨어 설치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020137014148A KR101575695B1 (ko) 2010-12-01 2011-11-22 프리-히팅된 소프트웨어 설치

Country Status (9)

Country Link
US (2) US9378007B2 (ko)
EP (1) EP2646907B1 (ko)
JP (1) JP5796755B2 (ko)
KR (2) KR101575695B1 (ko)
CN (2) CN103229144B (ko)
AU (1) AU2011336953B2 (ko)
BR (1) BR112013013286A2 (ko)
MX (1) MX336862B (ko)
WO (1) WO2012074848A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8505003B2 (en) 2010-04-28 2013-08-06 Novell, Inc. System and method for upgrading kernels in cloud computing environments
US20130055234A1 (en) * 2011-08-30 2013-02-28 Verizon Patent And Licensing Inc. Media manager upgrading
US8826264B1 (en) * 2012-06-28 2014-09-02 Emc Corporation Non-disruptive upgrade of applications
US8855605B2 (en) 2012-09-25 2014-10-07 Dropbox Inc. Associating a particular account configuration during the out of box experience for a mobile device
US9727326B2 (en) 2013-03-15 2017-08-08 Apple Inc. Providing customized notifications for security software updates
US9672023B2 (en) 2013-03-15 2017-06-06 Apple Inc. Providing a unified update center for security software updates and application software updates
EP2827275A1 (en) * 2013-07-16 2015-01-21 Gemalto SA Method for transferring user data between two instances of an application
JP2015103105A (ja) 2013-11-26 2015-06-04 株式会社リコー 通信装置、通信システム、及び通信プログラム
JP2015103106A (ja) * 2013-11-26 2015-06-04 株式会社リコー 通信装置、及び通信プログラム
CN104092555B (zh) * 2013-12-04 2017-09-12 腾讯数码(天津)有限公司 一种更新参数值的方法、装置和系统
KR101651854B1 (ko) * 2013-12-26 2016-08-30 주식회사 엘지유플러스 푸시 메시지를 이용한 소프트웨어 업그레이드 방법 및 장치
CN104932916A (zh) * 2015-05-18 2015-09-23 杭州魔品科技有限公司 苹果应用快速安装方法
CN106557379B (zh) * 2015-09-30 2021-05-18 北京奇虎科技有限公司 一种静默安装包的生成方法和装置
US10067757B2 (en) * 2015-11-20 2018-09-04 Google Llc Dynamic update of an application in compilation and deployment with hot-swapping
US10209976B2 (en) 2015-12-30 2019-02-19 Dropbox, Inc. Automated application installation
WO2017139956A1 (zh) * 2016-02-18 2017-08-24 吴伟东 手机软件更新方法及系统
US10362013B2 (en) 2016-05-27 2019-07-23 Dropbox, Inc. Out of box experience application API integration
US10613849B2 (en) * 2016-09-23 2020-04-07 Visa International Service Association Update migration system and method
CN108733391A (zh) * 2017-04-18 2018-11-02 北京京东尚科信息技术有限公司 一种资源动态配置的方法和装置
US11379414B2 (en) * 2017-07-11 2022-07-05 Okera, Inc. Generation of data configurations for a multiple application service and multiple storage service environment
US10437580B2 (en) 2017-09-11 2019-10-08 Apple Inc. Software updating methods and systems
CN109413186B (zh) * 2018-10-31 2021-07-30 Oppo广东移动通信有限公司 应用程序更新方法、终端、服务器及系统
EP3915912A1 (en) * 2020-05-29 2021-12-01 KONE Corporation A people conveyor system and a method for updating software of a people conveyor component in a people conveyor system
CN112052022A (zh) * 2020-09-02 2020-12-08 深圳创维-Rgb电子有限公司 智能电视系统更新方法、装置、智能电视和可读存储介质
AU2022427252A1 (en) * 2021-12-31 2024-05-23 Lg Electronics Inc. Method for upgrading home appliance, and device for implementing same

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060130045A1 (en) * 2004-11-19 2006-06-15 Jonathan Wesley Systems and methods for dynamically updating computer systems
US20060184926A1 (en) * 2002-07-17 2006-08-17 Yan Or Deployment of applications in a multitier compute infrastructure
JP2007148656A (ja) * 2005-11-25 2007-06-14 Fuji Xerox Co Ltd 情報処理装置、プログラム更新方法
JP2009217656A (ja) * 2008-03-12 2009-09-24 Hitachi Ltd 情報機器におけるソフトウェア更新システム

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6437621A (en) * 1987-07-20 1989-02-08 Ibm Updating of program
US6151643A (en) 1996-06-07 2000-11-21 Networks Associates, Inc. Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer
US6282709B1 (en) 1997-11-12 2001-08-28 Philips Electronics North America Corporation Software update manager
US6167567A (en) 1998-05-05 2000-12-26 3Com Corporation Technique for automatically updating software stored on a client computer in a networked client-server environment
US6353926B1 (en) 1998-07-15 2002-03-05 Microsoft Corporation Software update notification
US6397385B1 (en) 1999-07-16 2002-05-28 Excel Switching Corporation Method and apparatus for in service software upgrade for expandable telecommunications system
EP1096374A2 (en) * 1999-11-01 2001-05-02 Citicorp Development Center, Inc. Method and system for simultancous and unattended installation of software on a self-service financial transaction terminal
EP1160666A3 (en) 2000-04-27 2005-03-23 Ncr International Inc. Switching versions of software in a system background
US7574481B2 (en) 2000-12-20 2009-08-11 Microsoft Corporation Method and system for enabling offline detection of software updates
US7523142B2 (en) * 2001-12-17 2009-04-21 Sap Ag Systems, methods and articles of manufacture for upgrading a database with a shadow system
US7814476B2 (en) * 2002-10-31 2010-10-12 Oracle America, Inc. Systems and methods for updating software
US7607000B1 (en) 2003-05-13 2009-10-20 Apple Inc. Method for booting an operating system
US8555271B2 (en) * 2003-10-29 2013-10-08 Qualcomm Incorporated Method, software and apparatus for application upgrade during execution
US7574706B2 (en) 2003-12-15 2009-08-11 Microsoft Corporation System and method for managing and communicating software updates
US20060075001A1 (en) 2004-09-30 2006-04-06 Canning Jeffrey C System, method and program to distribute program updates
US7716660B2 (en) * 2004-12-14 2010-05-11 Microsoft Corporation Method and system for downloading updates
US7581029B2 (en) * 2005-06-20 2009-08-25 Intel Corporation Updating machines while disconnected from an update source
CN1892587A (zh) * 2005-07-08 2007-01-10 福菱电子股份有限公司 一种嵌入式控制器及其更新固件的方法
US7970017B2 (en) 2005-07-13 2011-06-28 At&T Intellectual Property I, L.P. Peer-to-peer synchronization of data between devices
US8286159B2 (en) * 2005-12-22 2012-10-09 Alan Joshua Shapiro Method and apparatus for gryphing a data storage medium
US8578332B2 (en) * 2007-04-30 2013-11-05 Mark Murray Universal microcode image
US20080301667A1 (en) 2007-05-30 2008-12-04 Google Inc. Dynamically Updating Software Applications on a Device
CN101222534A (zh) * 2007-11-28 2008-07-16 连云港杰瑞深软科技有限公司 零售信息终端
US20090193409A1 (en) 2008-01-24 2009-07-30 Microsoft Corporation Per User Updates
US8694550B2 (en) 2008-06-06 2014-04-08 Apple Inc. Merging file directories
US8341384B2 (en) 2008-06-06 2012-12-25 Apple Inc. Installation of software onto a computer
US8200634B2 (en) * 2008-10-08 2012-06-12 Sap Ag Zero downtime maintenance using a mirror approach
JP2010191786A (ja) * 2009-02-19 2010-09-02 Fujitsu Ten Ltd 車載装置
US8484728B2 (en) * 2009-06-03 2013-07-09 Apple Inc. Managing securely installed applications
US8949737B2 (en) * 2009-10-28 2015-02-03 Red Hat, Inc. Centralized application package distribution
US20110265072A1 (en) 2010-04-27 2011-10-27 Jack Matthew Dynamic Installation of Files for Running Programs
US20110289499A1 (en) * 2010-05-19 2011-11-24 Microsoft Corporation Techniques to automatically update software applications
CN101895873B (zh) * 2010-07-14 2015-08-12 中兴通讯股份有限公司 移动终端的Java应用的更新方法、服务器和移动终端

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060184926A1 (en) * 2002-07-17 2006-08-17 Yan Or Deployment of applications in a multitier compute infrastructure
US20060130045A1 (en) * 2004-11-19 2006-06-15 Jonathan Wesley Systems and methods for dynamically updating computer systems
JP2007148656A (ja) * 2005-11-25 2007-06-14 Fuji Xerox Co Ltd 情報処理装置、プログラム更新方法
JP2009217656A (ja) * 2008-03-12 2009-09-24 Hitachi Ltd 情報機器におけるソフトウェア更新システム

Also Published As

Publication number Publication date
EP2646907B1 (en) 2019-11-13
US10489146B2 (en) 2019-11-26
BR112013013286A2 (pt) 2016-09-06
US20160306621A1 (en) 2016-10-20
CN106201613A (zh) 2016-12-07
KR20130085052A (ko) 2013-07-26
CN103229144B (zh) 2016-06-01
WO2012074848A1 (en) 2012-06-07
JP2013544416A (ja) 2013-12-12
AU2011336953A1 (en) 2013-05-09
CN103229144A (zh) 2013-07-31
KR101575695B1 (ko) 2015-12-08
US20120144382A1 (en) 2012-06-07
MX2013005599A (es) 2013-06-13
AU2011336953B2 (en) 2015-12-24
JP5796755B2 (ja) 2015-10-21
EP2646907A1 (en) 2013-10-09
CN106201613B (zh) 2020-04-14
KR101723763B1 (ko) 2017-04-05
MX336862B (es) 2016-02-04
US9378007B2 (en) 2016-06-28

Similar Documents

Publication Publication Date Title
KR101723763B1 (ko) 프리-히팅된 소프트웨어 설치
US20170322796A1 (en) Device and method for updating firmware and firmware update system
US9851993B2 (en) Virtual machine template optimization
US9405523B2 (en) Automated build and deploy system
CA2894094C (en) Managing software suite component versions
KR101917934B1 (ko) 제로 다운시간 배치 및 롤백
AU2011329096A1 (en) Networked recovery system
US20150067668A1 (en) Installation engine and package format
EP3115917A1 (en) Information processing apparatus, method, and program
US20140164386A1 (en) Intelligent software installation
US20210182047A1 (en) Installing Patches During Upgrades
US9852029B2 (en) Managing a computing system crash
EP2907064B1 (en) License information access based on developer profiles
JP7289940B2 (ja) プログラムのセット、記憶媒体、及び情報処理方法
JP2014002600A (ja) プログラム、通信装置及びインストール方法
US20210191705A1 (en) Installing Multiple Patches During Upgrades
CN117769703A (zh) 无停机安全数据库迁移技术
US9378210B2 (en) Managing the writing of a dataset to a data storage device

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
FPAY Annual fee payment

Payment date: 20200227

Year of fee payment: 4