KR20060061204A - 비교적 한정된 저장 공간을 갖는 컴퓨팅 디바이스 및 그운영 체제/파일 시스템 - Google Patents

비교적 한정된 저장 공간을 갖는 컴퓨팅 디바이스 및 그운영 체제/파일 시스템 Download PDF

Info

Publication number
KR20060061204A
KR20060061204A KR1020050023605A KR20050023605A KR20060061204A KR 20060061204 A KR20060061204 A KR 20060061204A KR 1020050023605 A KR1020050023605 A KR 1020050023605A KR 20050023605 A KR20050023605 A KR 20050023605A KR 20060061204 A KR20060061204 A KR 20060061204A
Authority
KR
South Korea
Prior art keywords
file
storage device
virtual
computing device
virtual address
Prior art date
Application number
KR1020050023605A
Other languages
English (en)
Other versions
KR101150032B1 (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 KR20060061204A publication Critical patent/KR20060061204A/ko
Application granted granted Critical
Publication of KR101150032B1 publication Critical patent/KR101150032B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65DCONTAINERS FOR STORAGE OR TRANSPORT OF ARTICLES OR MATERIALS, e.g. BAGS, BARRELS, BOTTLES, BOXES, CANS, CARTONS, CRATES, DRUMS, JARS, TANKS, HOPPERS, FORWARDING CONTAINERS; ACCESSORIES, CLOSURES, OR FITTINGS THEREFOR; PACKAGING ELEMENTS; PACKAGES
    • B65D85/00Containers, packaging elements or packages, specially adapted for particular articles or materials
    • B65D85/70Containers, packaging elements or packages, specially adapted for particular articles or materials for materials not otherwise provided for
    • B65D85/804Disposable containers or packages with contents which are mixed, infused or dissolved in situ, i.e. without having been previously removed from the package
    • B65D85/808Disposable containers or packages with contents which are mixed, infused or dissolved in situ, i.e. without having been previously removed from the package for immersion in the liquid to release part or all of their contents, e.g. tea bags
    • AHUMAN NECESSITIES
    • A23FOODS OR FOODSTUFFS; TREATMENT THEREOF, NOT COVERED BY OTHER CLASSES
    • A23FCOFFEE; TEA; THEIR SUBSTITUTES; MANUFACTURE, PREPARATION, OR INFUSION THEREOF
    • A23F3/00Tea; Tea substitutes; Preparations thereof
    • A23F3/16Tea extraction; Tea extracts; Treating tea extract; Making instant tea
    • A23F3/30Further treatment of dried tea extract; Preparations produced thereby, e.g. instant tea
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65BMACHINES, APPARATUS OR DEVICES FOR, OR METHODS OF, PACKAGING ARTICLES OR MATERIALS; UNPACKING
    • B65B29/00Packaging of materials presenting special problems
    • B65B29/02Packaging of substances, e.g. tea, which are intended to be infused in the package
    • B65B29/04Attaching, or forming and attaching, string handles or tags to tea bags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Mechanical Engineering (AREA)
  • Polymers & Plastics (AREA)
  • Food Science & Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Chemical & Material Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

컴퓨팅 디바이스는 프로세서, 실행가능 파일을 갖는 기억 장치, 상기 프로세서를 위하여 상기 기억 장치상의 적소에서 상기 파일을 실행하기 위한 파일 시스템을 포함한다. 파일은 기억 장치상에서 복수의 비 인접 프래그먼트로 분할되고, 컴퓨팅 디바이스는, 상기 기억 장치상의 파일의 프래그먼트의 물리적 어드레스와 상기 프로세서에 의해 이용되는 대응하는 가상 어드레스간에서 변환을 위해 프로세서와 기억 장치간에 삽입된 가상 어드레스 변환기를 포함한다.
컴퓨팅 디바이스, 가상 기억 장치, 파일, 프래그먼트, 물리적 어드레스

Description

비교적 한정된 저장 공간을 갖는 컴퓨팅 디바이스 및 그 운영 체제/파일 시스템{COMPUTING DEVICE WITH RELATIVELY LIMITED STORAGE SPACE AND OPERATING/FILE SYSTEM THEREOF}
전술한 요약 뿐만 아니라 후술될 본 발명의 상세한 설명은 첨부된 도면을 참조하여 판독되면 보다 잘 이해될 것이다. 본 발명을 기술하기 위해 바람직한 실시에의 도면이 도시된다. 이해된 바와 같이, 그러나 본 발명은 도시된 정확한 배열 및 수단에 한정되지 않는다.
도 1은 본 발명 또는 그 일부의 특징이 포함된 범용 컴퓨티 시스템을 나타내는 블록도이다.
도 2는 애플리케이션 및 파일 시스템을 포함하는 데이터 및 상기 데이터와 관련된 메타데이터가 저장된 기억 장치를 구비한 컴퓨팅 디바이스를 나타내는 블록도이다.
도 3은 본 발명의 일 실시예에 따라 기억 장치 상의 애플리케이션을 업데이할 때, 도 2의 컴퓨팅 디바이스와 관련하여 수행되는 주요 단계를 나타내는 흐름도이다.
도 4는 청크로 세분된 도 2의 기억 장치 상의 섹터를 나타내는 블록도이고, 도 4a는 본 발명의 일 실시예에 따른 도 4의 청크와 각 파일의 각 프레그먼트에 대 한 최소 블록 크기에 따라 저장된 파일을 나타내는 블록도이다.
도 5는 본 발명의 일 실시예에 따른 파일의 널 데이터 세그먼트가 사실상 저장되지 않은 스파스 구현(sparse implementation)에 따라 도 2의 기억 장치 상에 저장된 파일을 나타내는 블록도이다.
도 6은 본 발명의 일 실시예에 따른 도 5의 파일 저장의 스파스 구현과 관련하여 수행되는 주요 단계를 나타내는 흐름도이다.
도 7은 본 발명의 일 실시예에 따라 도 2의 기억 장치 상에 저장되고 절절하게 실행가능한 파일을 나타내는 블록도이다.
도 8은 본 발명의 일 실시예에 따라 도 7의 파일을 적절히 실행하는 것과 관련하여 수행되는 주요 단게를 나태내는 흐름도이다.
<도면의 주요 부분에 대한 부호의 설명>
120 ; 컴퓨터
121 : 프로세싱 유닛
132 : 하드 디스크 드라이브
133 : 자기 디스크 드라이브
140 : 키보드
150 : 메모리
154 : 모뎀
162 : 기억 장치
[관련 출원 상호 참조]
본 출원은 2004년 3월 24일자 미국 가출원 제 60/555,104, 60/555,392, 60/555,155 및 60/555,102에 대한 우선권을 주장한다.
[기술분야]
본 발명은 전반적으로 컴퓨팅 디바이스에 관한 것으로서, 특히, 예를 들어, 컴퓨팅 디바이스용 운영 체제가 저장되는 비교적 작은 하드 디스크 또는 RAM(Random Acces Memory)을 구비한 휴대용 컴퓨팅 디바이스(a portable computing device)와 같이 비교적 한정된 저장 공간을 갖는 컴퓨팅 디바이스에 관한 것이다. 보다 구체적으로, 본 발명은 그러한 컴퓨팅 디바이스 및 그 운영 체제/파일 시스템에 관한 것으로서, 특히 비교적 안전하고 효율적인 방식으로 파일 시스템 동작을 수행하는 것에 관한 것이다.
개인용 컴퓨터, 게임용 컴퓨터, 가정용 비디오 녹화 컴퓨터 등과 같은 많은 전형적인 컴퓨팅 디바이스에 있어서, 컴퓨팅 디바이스는 컴퓨팅 디바이스 관련 데이터 - 컴퓨팅 디바이스에서 실행될 수 있는 애플리케이션과, 컴퓨팅 디바이스에서 실행되어 컴퓨팅 디바이스를 운영하고 기억 장치에 대한 액세스를 허용하는 운영 체제 및/또는 파일 시스템(이하, 파일 시스템)을 포함함 - 가 저장될 수 있는 비교적 큰 기억 장치를 포함한다. 기억 장치가 비교적 크기 때문에, 애플리케이션과 파일 시스템에 의해 사용되는 공간의 양은 그다지 중요하지 않으며, 따라서 파일 유지(file maintenance), 시스템 업그레이드(system upgrade), 파일 액세스(file access), 파일 저장(file storage) 등의 특별히 중요한 이슈(issues)가 되지 않는다.
그러나, 컴퓨팅 디바이스는 그런 비교적 큰 기억 장치 대신에 비교적 작은 기억 장치를 포함하기 때문에, 애플리케이션 및 파일 시스템에 의해 사용되는 공간의 양이 상대적으로 중요하며, 전술한 이슈들도 보다 중요하게 된다. 예를 들어, 컴퓨팅 디바이스, 가령 휴대용 오디오, 비디오 플레이어 또는 휴대용 게임 컴퓨터와 같은 휴대용 컴퓨팅 디바이스 등이고 그 크기가 비교적 작을 경우에는, 특히 애플리케이션이 실행되는 컴퓨팅 디바이스에 요구되는 기능(functionality)과 수용될 수 있는 기억 장치의 물리적 크기가 한정되기 때문에, 그러한 컴퓨팅 디바이스는 비교적 작은 기억 장치를 포함할 것이다. 상술한 바와 같이, 기억 장치는 비교적 작기 때문에, 파일 시스템에 의해 사용되는 공간의 양은 상대적으로 중요하며, 따라서 파일 유지 보수(file maintenance), 시스템 업그레이드(system upgrade), 파일 액세스(file access), 파일 저장(file storage) 등은 이제는 신중히 고려되어야 한다.
고려되어야 할 하나의 이슈는 비교적 작은 기억 장치 상의 애플리케이션 또는 파일 시스템이 어떻게 갱신되어야 하느냐는 것이다. 특히, 비교적 큰 기억 장치에서, 그러한 갱신은 기억 장치의 비사용 부분에 갱신 데이터를 성공적으로 기록한 후, 기억 장치의 다른 부분에서 대응하는 기존의 데이터를 삭제함으로써 달성될 수 있다. 그러나, 비교적 작은 기억 장치에서는, 기존 데이터를 삭제하기 전에는 갱신 데이터를 기록하는데 그 공간을 이용할 수 없고, 따라서 기존 데이터는 갱신 데이터를 기록하기 전에 빈 공간을 확보하기 위해 삭제되어야 한다.
그러나, 보다 구체적으로, 애플리케이션 또는 파일 시스템의 갱신이 웬일인지 실패하고 그 기존 데이터가 이미 삭제된 경우에는, 컴퓨팅 디바이스 상에서 갱신되지 않은 애플리케이션 또는 파일 시스템이 실행되는 이전의 상태로 컴퓨팅 디바이스를 복구시킬 방법이 없을 수 있다. 애플리케이션의 경우, 그러한 실패는 애플리케이션의 리로드(reload)가 가능한 경우, 상기 리로드가 될 때까지 성가신 일이 될 수 있다. 그러나, 파일 시스템의 경우, 컴퓨팅 디바이스가 기능 파일 시스템(a function file system)이 없으면 동작 불가능하기 때문에, 그러한 실패는 파국적(catastrophic)이다. 따라서, 비교적 작은 기억 장치를 구비한 컴퓨팅 디바이스 상에서 애플리케이션 또는 파일 시스템을 갱신하는 방법이 필요한데, 여기서 상기 방법은 갱신이 성공할 것이라는 것을 보장하고, 그렇지 않으면 갱신이 수행되는 것을 허용하지 않는다.
고려되어야 할 다른 이슈는 비교적 작은 기억 장치에 파일들을 어떻게 저장하느냐 하는 것이다. 특히, 비교적 큰 기억 장치에서는 파일을 저장하는 것이 클러스터 당 기반(per-cluster basis)으로 수행되는데, 각 파일은 1, 2, 4, 8 또는 16 KB 이상으로 정의될 수 있는 적어도 하나의 클러스터를 사용한다. 따라서, 단지 적은 양의 데이터(가령, 1 Byte)를 갖는 파일이 특정 클러스터에 할당되면, 그 클러스터 내의 나머지 모든 공간은 어떤 다른 파일에 의해서도 사용되지 않고 낭비된다. 이와 같이 낭비된 공간은 비교적 큰 기억 장치, 특히 수십 또는 수백 GB와 유사한 종류의 용량을 갖는 기억 장치에서는 그다지 중요하지 않다.
그러나, 비교적 작은 기억 장치에서, 그러한 낭비 공간은 상당한 레벨까지 급속히 증가되고, 심지어는 기억 장치가 공간을 다 써버리는 국면에 이르게 된다. 예를 들어, 16 MB 용량 및 16 KB로 정의되는 클러스터를 가지는 기억 장치는, 각 파일이 단지 몇 바이트라 할지라도, 단지 약 1000개의 파일만 보유할 수 있다. 또한, 상기 비교적 작은 기억 장치는 수 내지 수백 Byte인 상당수의 매우 작은 파일을 저장한 경우가 종종 있을 수 있다. 따라서, 비교적 작은 기억 장치의 저장 용량을 지나친 낭비 공간 없이 효율적으로 사용하는 파일 시스템 프레임워크(a file system framework)가 필요하다.
고려되어야 할 또 다른 이슈는 파일이 비할당 데이터 또는 널 데이터(unallocated or null data)를 일부 포함하는 경우, 비교적 작은 기억 장치에 파일을 어떻게 저장하느냐 하는 것이다. 알다시피, 파일 내의 상기 비할당 데이터 또는 널 데이터는, 파일 내에 공간이 존재하지만 그러한 데이터가 확립되지 않았던 데이터이다. 예를 들어, 특정한 128 KB 파일 내에서, 그 중간 부분은 대리자(placeholder)로서의 역할을 하지만 나중에 몇몇 유형의 정보로 채워지는 32 KB의 널 데이터를 구성할 수 있다. 따라서, 그러한 널 데이터는 모두 0 등으로 나타날 수 있고, 나중에 다시 실질적인 정보(substantive information)로 채워질 수 있다.
특히, 비교적 큰 기억 장치에서, 그러한 널 데이터가 아무것도 나타내지 않는다 하더라도, 널 데이터를 포함하는 파일의 전부가 저장된다. 알다시피, 상기 '저장된' 널 데이터는, 더 나은 사용을 위해 대신 두어질 수 있는 비교적 큰 기억 장치의 낭비된 공간이다. 그러나, 그러한 낭비된 공간은 비교적 큰 기억 장치, 특히 수십 또는 수백 GB의 용량을 갖는 기억 장치에서는 특별히 중요하지 않다.
그러나, 비교적 작은 기억 장치에서, 그러한 낭비된 공간은 상당한 레벨까지 급속하게 증가할 수 있고, 심지어 기억 장치가 공간을 다 써버리는 국면에 이를 수 있다. 또한, 그러한 낭비된 공간은, 기존 파일에 근거하여 상기 비교적 작은 기억 장치에 새로운 파일을 만들려고 시도할 경우, 특히 상기 디바이스가 거의 찼을때 방해될 수 있다는 것을 이햐해야 한다. 따라서, 특히, 파일이 그 내에 널 데이터를 포함할 경우, 비교적 작은 기억 장치의 저장 용량을 효율적으로 사용할 수 있도록 하는 파일 구조가 필요하다.
고려되어야 할 또 다른 이슈는 비교적 작은 기억 장치 상에서 파일을 어떻게 실행하는냐 하는 것이다. 특히, 그러한 비교적 작은 기억 장치를 가지는 컴퓨팅 디바이스, 예를 들어 모바일폰, 위치 추적기, 뮤직 플레이어 등에서, 사용자는 요청한 동작(action)이 거의 즉시 취해지기를 바란다. 달리 말하면, 사용자는, 상기 요청된 동작이 실행가능한 파일을 실행할 것을 요청한 경우, 파일이 기억 장치로부터 로컬 램 등으로 로딩(loading)되어 실행할 준비 되는데 많은 시간이 걸리는 것을 원하지 않는다. 더우기, 소정의 환경, 가령 컴퓨팅 디바이스가 응급 상황 동안 응급 환자에 의해 사용되는 휴대용 통신 디바이스일 경우에서와 같이, 상기 동작은 거의 즉각적인 실행을 요구하는 성질의 것일 수도 있다.
따라서, 컴퓨팅 디바이스의 기억 장치 상의 파일이 바로 즉시 실행될 수 있는 방법 및 메카니즘이 필요하다. 특히, 파일이 기억 장치에 저장되고 그로부터 즉시 실행될 수 있는 방법 및 메카니즘이 필요하다. 또한, 파일이 기억 장치 상에 프레그먼트 방식(fragmented manner)으로 저장되고 상기 기억 장치로부터 즉시 실행될 수 있는 방법 및 매카니즘이 필요하다.
전술한 필요성들은, 컴퓨팅 디바이스의 기억 장치 상에 있는 애플리케이션을 갱신하는 방법이 제공된 본 발명에 의해 적어도 일부가 만족된다. 상기 방법에서, 실질적으로 갱신과 관련된 데이터를 기억 장치에 커미트(commit)하는 것을 제외한, 필요한 모든 동작을 수행함으로써 갱신이 시뮬레이트되며, 시뮬레이트된 갱신이 성공인지가 판단된다. 만약 시뮬레이션된 갱신이 성공이면, 상기와 동일한 필요 동작을 수행하고 갱신 관련 데이터를 기억 장치에 커미트함으로써 갱신이 실제로 수행된다.
또한, 전술한 필요성들은, 컴퓨팅 디바이스가 기억 장치와 상기 기억 장치 상에 파일들을 저장 및 복구하는 파일 시스템을 포함하는 본 발명의 의해 적어도 부분적으로 만족된다. 기억 장치는 섹터들로 분할된 저장 공간을 포함하고, 파일 시스템은 외부적으로는 섹터 당 기반(a per-sector basis)으로 기억 장치를 어드레싱(addressing)하지만 내부적으로는 기억 장치의 각 섹터를 청크(chunks)로 분할하고 청크 당 기반(a per-chunk basis)으로 각각의 섹터 내의 데이터를 관리한다. 따라서, 파일 시스템은 청크를 가진 섹터를 판독 또는 기록함으로써, 기억 장치로부터 청크를 판독하거나 기억 장치에 청크를 기록한다.
전술한 필요성들은, 컴퓨팅 디바이스가 파일을 가진 기억 장치 및 상기 기억 장치 상에 파일을 저장하고 복구하는 파일 시스템을 포함하는 본 발명에 의해 적어도 부분적으로 더 만족된다. 상기 파일은 복수의 세그먼트(segments)를 포함하는데, 각 세그먼트 중 적어도 몇몇은 널 데이터이고, 각 세그먼트 중 적어도 몇몇은 실질적인 데이터이다. 파일은 그 내부에 각각의 널 데이터 세그먼트를 위해 할당된 공간을 갖지만 그 할당된 공간은 실제로 정보로 채워져 있지 않으며, 파일은 그 내부에 각각의 실질적인 데이터 세그먼트를 위해 할당된 공간을 가지며 그 할당된 공간은 실제로 정보로 채워져 있다. 각각의 널 데이터 세그먼트는 사실상 기억 장치에 물리적으로 저장되지 않으며, 각각의 실질적인 데이터 세그먼트는 사실상 기억 장치에 저장된다.
전술한 필요성은, 컴퓨팅 디바이스가 프로세서, 실행가능 파일을 가지는 기억 장치 및 프로세서 대신에 기억 장치 상에 위치한 파일을 실행하는 파일 시스템을 포함하는 본 발명에 의해 적어도 부분적으로 더 만족된다. 파일은 기억 장치 상에서 다중 비연속 프래그먼트(multiple non-contiguous fragments)로 분할되며, 컴퓨팅 디바이스는 프로세서 및 가상 디바이스 사이에 위치하여 기억 장치 상의 파일 프래그먼트의 물리적 어드레스와 프로세스에 의해 사용되는 대응 가상 어드레스 사이를 변환(translating)하는 가상 어드레스 변환기(a virtual address translator)를 더 포함한다.
[컴퓨터 환경]
도 1 및 후속 논의는 본 발명 및/또는 그 일부가 실시되는데 적합한 컴퓨팅 환경에 대한 간단하고 일반적인 설명을 제공하기 위한 것이다. 요구되지는 않았으나, 본 발명은 전반적으로 클라이언트 워크스테이션 또는 서버와 같은 컴퓨터에 의해 실행되는, 프로그램 모듈(program modules)과 같은 컴퓨터 실행 인스트럭션(cpmputer-exacutable instructions)과 관련하여 설명된다. 일반적으로, 프로그램 모듈은, 특정 태스크(task)를 수행하거나 특정 추상 데이터형(abstract data types)을 실행기 위해, 루틴(routines), 프로그램, 오브젝트(objects), 컴포넌트(components), 데이터 구조(data structures) 등을 포함한다. 더우기, 본 발명 및/또한 그 일부는 포켓용 디바이스(hand-held device), 다중 프로세서 시스템(multi-processor systems), 마이크로프로세서 기반 또는 프로그램 가능 소비자 가전(microprocessor-based or programmable consumer electronics), 네트워크 PC(network PCs), 미니 컴퓨터(minicomputers), 메인프레임 컴퓨터(mainframe computers) 등을 포함하는, 다른 컴퓨터 시스템 구성에서도 실시될 수 있다는 것을 이해해야 한다. 또한, 본 발명은, 통신 네트워크를 통해 링크된 원격 프로세싱 디바이스(remote processing device)에 의해 태스크가 수행되는 분산 컴퓨팅 환경(a distributed computing environments)에서 실시될 수도 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 기억 장치 모두에 위치할 수 있다.
도 1에 도시된 바와 같이, 예시적인 범용 컴퓨팅 시스템은 프로세싱 유닛(121), 시스템 메모리(122) 및 시스템 메모리를 포함하여 여러 시스템 컴포넌트를 프로세싱 유닛(121)에 연결하는 시스템 버스(123)를 포함하며, 통상의 개인용 컴퓨터(120) 등이 이에 해당된다. 시스템 버스(123)는 메모리 버스 또는 메모리 컨트 롤러, 가상 버스 및 다양한 버스 아키텍쳐 중 어떤 것을 사용하는 로컬 버스를 포함하는 몇몇 유형의 버스 구조 중 어떤 것일 수 있다. 시스템 메모리(122)는 ROM(read-only memory)(124) 및 RAM(random access memory)(125)를 포함한다. 시동(start-up)하는 동안과 같이, 개인용 컴퓨터(120) 내의 엘리먼트 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 BIOS(a basic input/output system)(126)는 ROM(124)에 저장된다.
개인용 컴퓨터(120)는 하드 디스크(미도시)로부터의 판독과 하드 디스크로의 기록을 위한 하드 디스크 드라이브(a hard disk drive)(127), 분리성 마그네틱 디스크(a removable magnetic disk)(129)로부터의 판독과 분리성 마그네틱 디스크(129)로의 기록을 위한 마그네틱 디스크 드라이브(a magnetic disk drive)(128), CD-ROM 또는 광 매체와 같은 분리성 광 디스크(a removable optical disk)(131)로부터의 판독 및 분리성 광 디스크(131)로의 기록을 위한 광 디스트 드라이브(a optical disk drive)(130)를 더 포함할 수 있다. 하드 디스크 드라이브(127), 마그네틱 디스크 드라이브(128) 및 광 디스크 드라이브(130)는 각각 하드 디스크 드라이브 인터페이스(a hard disk drive interface)(132), 마그네틱 디스크 드라이브 인터페이스(a magnetic disk drive interface)(133) 및 광 디스크 드라이브 인터페이스(a optical disk drive interface)(134)에 의해 시스템 버스(123)에 연결된다. 상기 드라이브들 및 그 관련 컴퓨터 판독가능 매체(computer-readable media)는 개인용 컴퓨터(120)를 위한 컴퓨터 판독가능 인스트럭션(computer readable instructions), 데이터 구조, 프로그램 모듈 및 그 외 다른 데이터의 비휘발성 저 장(non-volatile storage)을 제공한다.
여기에 기술된 예시적 환경이 하드 디스크, 분리성 마그네틱 디스크(129) 및 분리성 광 디스크(131)를 사용하지만, 컴퓨터에 의해 액세스가능한 데이터를 저장할 수 있는 다른 유형의 컴퓨터 판독가능 매체도 상기 예시적 동작 환경에 사용될 수 있다는 것을 이해해야 한다. 상기 다른 유형의 매체는 마그네틱 카세트(a magnetic casset), 플레시 메모리 카드(a flash memory card), 디지털 비디오 디스크(a digital video disk), 베르누이 카트리지(a Bernoulli cartrige), RAM, ROM 등을 포함한다.
운영 체제(135), 하나 이상의 애플리케이션 프로그램(136), 다른 프로그램 모듈들(137) 및 프로그램 데이터(138)를 포함하는 다수의 프로그램 모듈은 하드 디스크, 마그네틱 디스크(129), 광 디스크(131), ROM(124) 또는 RAM(125)에 저장될 수 있다. 사용자는 키보드(140) 및 포인팅 디바이스(142)와 같은 입력 디바이스를 통해 개인용 컴퓨터(120)에 커맨드 및 정보를 입력할 수 있다. 다른 입력 디바이스들(미도시)은 마이크로폰, 조이스틱, 게임 패드, 위성 디스크(satellite disk), 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 디바이스들은 시스템 버스에 의해 연결된 시리얼 포트 인터페이스(a serial port interface)(146)를 통해 프로세싱 유닛(121)에 연결되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus)와 같은 다른 인터페이스에 의해 연결될 수도 있다. 모니터(147) 또는 다른 유형의 디스플레이 디바이스도 비디오 어댑터(148)와 같은 인터페이스를 통해 시스템 버스(123)에 연결될 수 있다. 전형적으로, 개인용 컴퓨터는 모니터(147)외에도 스피커 및 프린터와 같은 다른 가상 출력 디바이스(미도시)를 포함한다. 또한, 도 1의 예시적 시스템은 호스트 어댑터(155), SCSI(Small Computer System Interface) 버스(156) 및 SCSI 버스(156)에 연결된 외부 기억 장치(162)를 포함한다.
개인용 컴퓨터(120)는 원격 컴퓨터(149)와 같은 하나 이상의 원격 컴퓨터에 대한 로지컬 접속(logical connections)을 사용하는 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(149)는 다른 개인용 컴퓨터, 서버, 라우터(a router), 네트워크 PC, 피어 디바이스(a peer device) 또는 다른 공용 네트워크 노드일 수 있으며, 도 1에는 단지 메모리 기억 장치(150)만 도시되었으나, 전형적으로는 개인용 컴퓨터(120)와 관련하여 앞서 언급한 다수의 또는 모든 엘리먼트를 포함한다. 도 1에 도시된 로지컬 접속은 LAN(a local area network)(151) 및 WAN(a wide area network)(152)를 포함한다. 그러한 네트워크 환경은 오피스, 기업 컴퓨터 네트워크(enterprize wide networks), 인트라넷(intranets) 및 인터넷에서 흔히 볼 수 있다.
LAN 네트워크 환경에서 사용될 경우, 개인용 컴퓨터(120)는 네트워크 인터페이스 또는 어댑터(153)을 통해 LAN(151)에 연결된다. WAN 네트워크 환경에서 사용될 경우, 개인용 컴퓨터(120)는 전형적으로 모뎀(154) 또는 WAN(152)에 대해 통신을 확립하는 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(154)은 직렬 포트 인터페이스(146)를 통해 시스템 버스(123)에 연결된다. 네트워크 환경에서, 개인용 컴퓨터(120) 또는 그 일부와 관련되어 기술된 프로그램 모듈은 원격 메모리 기억 장치에 저장될 수 있다. 도시된 네트워크 연결은 예시적인 것이며 컴 퓨터 사이에 통신 링크를 확립하는 다른 수단이 사용될 수 있다는 것을 이해해야 한다.
비교적 작은 기억 장치를 갖는 컴퓨팅 디바이스
이하, 도 2를 참조하면, 하나 이상의 애플리케이션(14) 및 파일 시스템(14)이 로딩되는 비교적 작은 기억 장치를 구비한 컴퓨팅 디바이스(10)에 관하여, 본 발명이 특별히 유용하다는 것을 알 수 있다. 컴퓨팅 디바이스(10)는 기억 장치(12)가 비교적 작을 경우, 컴퓨팅 디바이스(10)도 작을 것 같은 경우라 하더라도, 본 발명의 사상 및 범위를 벗어나지 않는 소정 유형의 컴퓨팅 디바이스일 수 있다. 예를 들어, 컴퓨팅 디바이스(10)는 휴대용 미디어 플레이어 또는 게임 플레이어, PDA 또는 휴대용 개인 컴퓨터일 수 있다.
컴퓨팅 디바이스(10)의 기억 장치(12)는 본 발명의 사상 및 범주를 벗어나지 않는 소정의 기억 장치일 수 있다. 본 발명이 기억 장치(12)가 비교적 작은 상황에 특별히 적용가능하지만, 상기 기억 장치(12)는 본 발명의 사상 및 범주를 벗어나지 않는 소정 크기일 수 있다. 컴퓨팅 디바이스(10)에 따라, 기억 장치(12)는 하드 디스크 드라이버, 메모리 카드, 플래시 메모리(RAM) 등일 수 있으며, 그러한 기억 장치(12)는 적절한 하드웨어 드라이버(미도시)를 가질 수 있으며, 상기 드라이버를 통해 상기 기억 장치(12)로의 액세스가 관리된다.
컴퓨팅 디바이스(10)는, 기억 장치(12) 외에도, 기억 장치(12)로부터의 데이터가 처리되기에 앞서 전송될 수 있는 로컬 RAM(18)을 가질 수 있다는 점에 유의해야 한다. 즉, 적어도 몇몇 경우에서의 컴퓨팅 디바이스(10)는 기억 장치(10)에 저 장된 데이터를 직접적으로 운용하지 않고, 그 대신 그 데이터를 기억 장치(12)로부터 로컬 RAM(18)으로 카피(copy)하여 로컬 RAM(18) 상의 데이터를 운용하며, 필요하다면, 상기 운용된 데이터를 기억 장치(12)로 다시 카피한다. 이와 같이 하는 이유는 많고 다양하지만, 전형적으로는 더 빠른 속도 및 액세스가 가능하기 때문이다. 적어도, 그러한 로컬 RAM(18)은 본 발명의 사상 및 범주를 벗어나지 않는 소정의 적절한 RAM일 수 있다.
기억 장치(12) 상의 애플리케이션(14)은 본 발명의 사상 및 범주를 벗어나지 않는 소정의 애플리케이션일 수 있으며, 로컬 RAM(18) 또는 다른 곳에서 인스턴스화될(instantiated) 수 있다. 컴퓨팅 디바이스(10)가, 예를 들어, 오디오 플레이어와 같은 태스크 특정 디바이스(task-specific device)인 경우에는 애플리케이션(14)도 마찬가지로 태스크 특정적이지만, 적어도 몇몇 경우에서 다른 애플리케이션(14)도 존재할 수 있다는 것을 이해해야 한다.
파일 시스템(16)은 사실 애플리케이션의 한 유형이지만, 컴퓨팅 디바이스(10)에서 특별히 중요하다는 것을 이해해야 한다. 유사하게, 기억 장치(12) 상의 파일 시스템(16)은 본 발명의 사상 및 범주를 벗어나지 않는 소정의 파일 시스템일 수 있으며, 로컬 RAM(18) 또는 다른 곳에 인스턴스화될 수 있다. 파일 시스템(16)은 특별히 태스크 특정일 필요는 없지만, 대신 컴퓨팅 디바이스(10)의 태스크 비특정 동작 요구에 보다 더 적합하도록 될 수 있다. 따라서, 그러한 파일 시스템(16)은 컴퓨팅 디바이스(10)를 시동하는 동안 및 애플리케이션(14)을 컴퓨팅 디바이스(10)로 로딩하는 동안, 컴퓨팅 디바이스(10)를 동작시키기 위해 이용될 수 있으며, 기억 장치(12), 로컬 RAM(18) 및 다른 곳의 데이터를 액세스 하기 위해 이용될 수도 있다
기억 장치(12)의 애플리케이션(14)/파일 시스템(16) 갱신
전술한 바와 같이, 비교적 작은 기억 장치(12) 상의 애플리케이션(14) 또는 파일 시스템(16)을 갱신 하는 것은, 특히 기억 장치(12)가 이용가능한 빈 공간이 많지 않을 경우, 복잡해질 수 있다. 예를 들어, 상기 기억 장치(12)의 빈 공간의 부족이 기존 데이터를 먼저 삭제하지 않고 갱신 데이터가 기억 장치(12)에 기록되는 것을 막는다면, 갱신 동안의 실패가 애플리케이션(14) 또는 파일 시스템(16)을 인코히어런트(incoherent)하고 거의 기능하지 않는 상태로 만드는 경우가 있을 수 있다. 유사하게, 그러한 기억 장치(12) 상의 빈 공간의 부족은, 각 파일을 '델타' 데이터로 수정함으로써 적용되는 갱신을 필요로 할 경우, 갱신 동안의 실패가 애플리케이션(14) 또는 파일 시스템(16)을 비코히어런트하고 거의 기능하지 않는 상태로 만드는 경우도 발생할 수 있다. 다시, 애플리케이션(14)의 경우, 그러한 실패는, 가능하다면, 애플리케이션이 리로딩(relpading)될 때까지 성가실 수 있지만, 파일 시스템(16)의 경우에는 컴퓨팅 디바이스(10)가 기능 파일 시스템(16)없이 동작 불가능할 수 있기 때문에 상기 실패가 파국적일 수도 있다.
따라서, 본 발명의 일 실시예에서, 컴퓨팅 디바이스(10)의 애플리케이션(14) 또는 파일 시스템(16)(이하, 애플리케이션(14))을 갱신하는 것은, 2단계의 과정으로 수행되는데, 이에 따라 제1 단계에서는 갱신이 시뮬레이트되고, 제2 단계에서는 상기 제1 단계의 시뮬레이트 갱신이 성공되었다고 여겨지는 경우에만, 갱신이 실질 적으로 수행된다. 특히, 제1 단계에서, 시뮬레이트 갱신은, 갱신 관련 데이터를 기억 장치(12)에 실제로 커미트하는 것을 제외한, 필요한 모든 동작을 수행하며, 제2 단게에서, 실제 갱신은 상기 필요한 모든 동작을 수행하고 갱신 관련 데이터를 기억 장치(12)에 실제로 커미트한다.
본 발명을 실시하기 위해서는 컴퓨팅 디바이스(10)의 파일 시스템(16)은 전형적으로 기억 장치(12)에 저장된 데이터와 관련된 메타데이터(metadata)(20)를 보유한다는 것을 이해해야 한다. 전술한 바와 같이, 그러한 데이터는 전형적으로 기억 장치(12)에 파일로 저장되고, 메타데이터(20)는 각 파일에 대해, 다른 것들 중, 이름, 크기, 다양한 시각 소인(time stamps), 기억 장치(12)의 파일의 물리적 및/또는 가상 위치 또는 기억 장치(12)의 파일을 구성하는 부분, 및 파일에 대한 다양한 속성을 포함하는 데이터를 포함한다. 게다가, 기억 장치(12)가 데이터의 부분들로 구성된다고 가정하면, 상기 메타데이터(20)는 기억 장치(12)를 위해, 데이터를 받아들일 수 있는 부분의 '빈(free)' 리스트 또는 그에 상응한 것을 포함할 수 있다.
그런 다음, 컴퓨팅 디바이스(10)의 기억 장치(12)의 파일 내의 수정 데이터(modufying data)는 수정 파일(modifying file)에 관련된 수정 메타데이터(20) 및 빈 리스트도 필요로 할 수 있다. 또한, 전형적으로, 파일 시스템(16)은 그 동작 동안 메타데이터(20) 또는 그 일부를 로컬 RAM(18) 또는 그에 상응하는 것에 카피하여, 로컬 RAM(18)의 메타데이터(20)의 카피가 파일 시스템(16)의 동작 동안 필요한 것으로서 수정되도록 하며, 로컬 RAM(18)의 수정된 메타데이터(20)의 카피는 기 억 장치(12)에 필요한 것으로서 기억된다.
전형적으로 파일 시스템(16)에 의한 기억 장치(12)의 파일에 대한 수정은 새로운 파일을 부가하고, 기존 파일을 삭제하며, 기존 파일을 수정하는 것을 포함한다. 간단히, 새로운 파일을 부가하는 것은 메타데이터(20) 내의 빈 리스트에 의해 파일을 위한 공간을 찾고, 메타데이터(20) 내에 파일에 대한 적절한 데에타를 생성하며, 새로운 파일 대한 데이터를 기억 장치(12)에서 찾은 공간에 부가하며, 상기 찾은 공간의 사용을 반영하기 위해 메타데이터 내의 빈 리스트를 갱신함으로써 달성된다. 유사하게, 기존 파일을 삭제하는 것은 파일에 대한 데이터를 메타데이터(20) 내에서 적절히 삭제하고, 새로운 빈 공간을 반영하기 위해 메타데이터 내의 빈 리스트를 갱신함으로써 달성된다. 기존 파일을 수정하는 것은, 물론 데이터가 파일에 부가 및/또는 파일로부터 삭제되는지의 과정에 따라, 파일을 부가하거나 삭제하는 것과 유사한 방식으로 달성된다. 적어도, 파일에 대한 소정의 수정은 파일과 관련된 메타데이터(20) 또는 기억 장치(12) 자체와 관련된 메타데이터(20)에 대해 대응하여 수정된다는 것을 이해해야 한다.
전술한 바를 유념하면, 본 발명의 일 실시예에서, 컴퓨팅 디바이스(10)는 시뮬레이션 모드 및 정상 모드로 동작될 수 있는데, 이에 의해 갱신이 시뮬레이션되는 제1 단계 동안에는 컴퓨팅 디바이스(10)가 시뮬레이션 모드로 동작된다. 유사하게, 제1 단계의 시뮬레이트된 갱신이 성공한 경우에만, 갱신이 실제로 수행되는 제2 단계 동안, 그리고 그 외 대부분의 시간 동안, 컴퓨팅 바이스(10)는 정상 모드로 동작된다. 전형적으로 애플리케이션(14)에 대한 갱신이 인스톨러에 의해 수행 된다는 것을 인식한다면, 컴퓨팅 디바이스(10)는 그 동작 동안 상기 인스톨러에 의해 시뮬레이션 모드로되거나 시뮬레이션 모드를 벗어날 수 있다.
원칙적으로, 컴퓨팅 디바이스(10)가 정상 모드에서 시뮬레이션 모드로 옮겨졌을 경우, 로컬 RAM(18) 내의 전술한 메타데이터(20)의 카피는 이후의 복구를 위해 기억 장치(12), 로컬 RAM(18), 캐쉬 또는 그외의 것 중 하나에 저장된다. 그런 후, 컴퓨팅 디바이스(10)의 동작 동안, 실제로 어떤 데이터도 기억 장치(12)에 커미트되지 않는다. 얼마 후의 시점에서, 컴퓨팅 디바이스(10)가 시뮬레이션 모드로부터 정상 모드로 돌아왔을 경우, 기억 장치(12)의 데이터는 시뮬레이션 모드의 과정 동안 변하지 않았을 것이므로, 저장된 메타데이터(20)의 카피는 복구되고 로컬 RAM(18)으로 반환되어 기억 장치(12)의 실제 상태를 반영한다. 그 후, 컴퓨팅 디바이스(10)의 동작 동안, 데이터는 다시 실제로 기억 장치(12)에 커미트된다. 따라서, 상기와 같이, 컴퓨팅 디바이스(10)를 시뮬레이션 모드로 두는 것이 기억 장치(12)에 저장된 소정의 데이터를 영구히 변화시키지 않으며, 따라서, 그러한 데이터에 대한 변화는 약간의 위험은 있지만 거의 안전하게 시뮬레이트될 것이다.
전술한 바와 같이, 컴퓨팅 디바이스(10)의 애플리케이션(14)을 갱신하는 과정 동안 시뮬레이션 모드를 사용하면, 상기 갱신은, 컴퓨팅 디바이스(10)의 기억 장치(12)의 파일을 수정하지 않도록 하기 위해 비파괴 방식으로 먼저 수행될 수 있다. 따라서, 그러한 시큘레이션 모드는, 기억 장치(12)에 대한 수정을 커미트함이 없이, 일련의 수정이 성공할 것인지 실패할 것인지의 사전판정을 가능하도록 한다. 시뮬레이션 모드에서, 기억 장치(12)에 대한 모든 수정은 사실상 로컬 RAM(18) 내에 유지되는 메타데이터(20)에만 이루어진다. 파일 컨텐츠는 할당 및 할당해제되기 때문에, 빈 공간은 로컬 RAM(18) 상의 메타데이터(20) 내의 빈 리스트 내에 트랙(track)되지만, 실제로 파일 데이터는 기억 장치(12)에 커미트되지 않는다. 예를 들어, 빈 공간이 다 사용되거나 파일 시스템(16)이 파일 동작 동안 에러를 만나게 되면, 호출 실체(calling entity)가 리턴값을 통해 보고될 것이다. 중요하게, 만약 실패가 발생하면, 컴퓨팅 디바이스(12)가 정상 모들로 돌아올 때 갱신이 실제로 발생하도록 허용되어서는 안된다. 이에 대응하여, 만약 실패가 발생하지 않으면, 컴퓨팅 디바이스(12)가 정상 모드로 돌아올 때 동일한 일련의 수정을 재실행함으로써, 갱신이 사실상 발생하도록 허용되어야 한다.
본 발명에서, 컴퓨팅 디바이스(10)가 시뮬레이션 보드로 두어졌을 동안인 제1 단계 동안 실행된 코드는, 데이터를 기억 장치(12)에 기록하는 모든 기록 동작이 시뮬레이션 모드 동안 디스에이블되는 것을 제외하면, 컴퓨팅 디바이스(10)가 정상 모드로 돌아오는 동안의 제2 단계 동안 실행되는 코드와 동일하다. 따라서, 시뮬레이션 모드 동안 제1 단계에서 모든 수정이 성공하면, 동일한 시퀀스의 수정도 정상 모드 동안 제2 단계에서 성공될 것이라고 가정할 수 있다. 유사하게, 소정의 수정이 시뮬레이션 모드 동안 제1 단계에서 실패하면, 동일한 수정도 정상 모드 동안 제2 단계에서 실패할 것으로 가정할 수 있으며, 따라서 제2 단계는 사실상 수행되지 않는다.
이하, 다시 도 3을 참조하면, 컴퓨팅 디바이스(10)의 기억 장치(12)의 애플리케이션(14)을 설치 또는 갱신하는 인스톨러 등은 후속하는 방식과 같이 한다. 먼저, 인스톨러는 컴퓨팅 디바이스(10)가 시뮬레이션 모드(301)를 개시하도록 함으로써, 제1 단계를 수행한다(단계 301). 그러한 단계는 전형적으로 컴퓨팅 디바이스(10), 특히 그 프로세서 또는 프로세서의 제어기에 대한 커맨드의 발행(issuance)에 의해 수행될 수 있는데, 이는 특히 상기 컴퓨팅 디바이스(10)가, 사실상 그러한 커맨드를 받아들이고 이해할수 있어 사실상 전술한 바와 같은 시뮬레이션 모드를 개시할 수 있다는 것을 추정한다.
적어도, 전술한 바와 같이, 시뮬레이션 모드로 들어갈 때, 컴퓨팅 디바이스(10)는 이후의 복구를 위해 전술한 바와 같은 메타데이터(20)의 카피를 로컬 RAM(18) 내에 저장하고, 그 후, 그러한 컴퓨팅 디바이스(10)의 파일 시스템(16)은, 파일 동작 동안 기억 장치(12)에 데이터를 실제로 커미트하지 않지만, 그러한 파일 동작에서 정상적으로 이루어져야만 하는 모든 다른 동작을 다른 방법으로 수행하도록 설정된다.
그런 다음, 인스톨러에 의해 금지된 각 파일 동작에 대해, 파일 시스템(16)은, 실제로 데이터를 기억 장치(12)에 커미트하는 과정을 제외하고, 사실상 그 파일 동작을 수행한다(단계 303). 전형적으로 각각의 파일이 성공 또는 실패를 나타내는 리턴값을 갖는 호출로서 발행된다는 것을 이해하므로, 인스톨러는 파일 동작과 연관된 리턴값을 수신하고, 그로부터 동작이 성공인지를 결정한다(단계 305). 그런 인스톨러가 상기 리턴값과 관계없는 기준, 가령 그러한 인스톨러에 포함된 코드 또는 특정 시스템 값의 결정에 근거하여 동작이 성공인지를 결정할 수 있다.
동작이 실제 성공이면, 인스톨러는 다음 파일 동작을 단계 303에서와 같이 수행한다. 그러나, 어떤 이유로 동작이 실패하면 인스톨러는, 전형적으로 컴퓨팅 디바이스(10), 특히, 프로세서 또는 그 제어기에 대한 커맨드 발행에 의해, 컴퓨팅 디바이스(10)가 정상 모드로 리턴하도록 하는데(단계 307), 이는 그러한 컴퓨팅 디바이스(10)가 커맨드를 사실상 받아들여 이해하고, 전술한 바와 같은 정상 모드로의 복귀를 가능하게 한다는 것을 추정한다.
보다 구체적으로, 단계 305에서와 같이 동작이 성공인지를 결정하는 것에 의해, 단계 307에서와 같이 정상 모드로 리턴할 때, 인스톨러는 사실상 갱신을 수행하지 않지만, 대신 컴퓨팅 디바이스(10)가 갱신을 수신할 수 없다는 가정에 근거하여 과정을 종료한다(단계 309). 전술한 바와 같이, 컴퓨팅 디바이스(10)가 단계 307에서와 같이 시뮬레이션 모드로부터 정상 모드로 복귀된 경우, 기억 장치(12)의 데이터가 시뮬레이션 모드의 과정 동안 변경되어서는 안되기 때문에, 저장된 메타데이터(20)의 카피는 로컬 RAM(18)에 회수 및 복구되어 기억 장치(12)의 실제 상태를 반영하게 된다. 그런 다음, 컴퓨팅 디바이스(10)의 동작 동안, 데이터는 다시 기억 장치(12)에 실제로 커미트된다.
갱신이 단계 309에서 종료되면, 갱신이 사실상 적용되지 않으며 갱신되려 했던 애플리케이션은 기억 장치(12)에 갱신되지 않은 상태로 남아 있어야 한다는 점에 유의해야 한다. 보다 구체적으로, 갱신되지 않았다 하더라도, 그러한 애플리케이션(14)은, 애플리케이션(14)이 손상된 방식으로 기능하도록 하거나 애플리케이션(14)이 전혀 기능하지 않도록 하는 적어도 몇몇 종료되지 않은 상태의 갱신으로는 남지 않는다.
단계 303에서와 같이 수행되는 각 동작으로 리턴하고, 단계 305에서와 같이 실패한 어떤 동작도 발견되지 않았다는 것을 가정하면, 몇몇 지점에서 인스톨러는 모든 동작이 수행되었다고 결정할 것이다(단계 311). 따라서, 단계 1은 갱신이 성공적으로 시뮬레이트된 것으로 결정한다. 따라서, 이제는 그러한 갱신이 두 단계에서 처럼 실제로 수행될 수 있다.
특히, 성공적인 시뮬레이션으로, 인스톨러는, 전형적으로 컴퓨팅 디바이스(10), 특히 프로세서 또는 그 컨트롤러에 대한 커맨드의 발행 컴퓨팅 디바이스(10)가 정상 모드로 리턴라는 것을 야기한다(단계 313). 비평적으로, 모든 동작이 성공했다는 결정에 의해 단계 313에서와 같이 정상 모드로 리턴할 경우, 인스톨러는 사실상 갱신을 수행한다. 전술한 바와 같이, 컴퓨팅 디바이스(10)가 단계 313에서 처럼 시뮬레이션 모드로부터 정상 모드로 돌아왔을 때, 저장된 메타데이터(20)의 카피는, 기억 장치(12)의 데이터가 시뮬레이션 모드의 과정 동안 변화되어서는 안될 것이기 때문에, 로컬 RAM(18)에 회수되어 복구되어, 기억 장치(12)의 실제 상태를 반영한다. 그런 다음, 컴퓨팅 디바이스(10)의 동작 동안, 데이터는 다시 실제로 기억 장치(12)를 커미트한다.
실제 갱신을 수행하기 위해, 인스톨러에 의해 금지된 각 파일 동작에 대해, 파일 시스템(16)은 실제로 그 파일 동작을 수행한다(315). 구체적으로, 컴퓨팅 디바이스(10)는 이제 정상 모드이기 때문에, 파일 시스템(16)은, 각각의 그 동작에 관하여 사실상 데이터를 기억 장치(12)에 커미트한다. 다시, 몇몇 지점에서 인스톨러는 모든 동작이 실제로 수행되었다는 것을 판정할 것이고, 따라서 애플리케이 션(14)의 갱신은 성공적으로 설치되었다고 결론지을 것이며, 종료할 것이다(단계 317).
단계 315에서와 같이, 각 파일 동작을 수행하는 동안에 인스톨러는, 단계 305에서의 동작과 유사한 방식으로 성공하였는지를 판정할 수 있다(미도시). 그러나, 그런 단계는, 각 동작이 단계 303에서와 같이 이전에 성공적으로 시뮬레이트되었기 때문에, 본 발명에 절대적으로 필요한 것으로 믿어지지 않는다. 그럼에도 불구하고, 동작이 시뮬레이션 모드에서 성공해야 하지만 정상 모드에서는 실패하는 경우가 발생할 수 있다. 그러나, 그러한 경우는 드믈며 본 발명의 범주를 벗어나는 것으로 생각된다.
본 발명은 상기 시뮬레이트된 갱신 동안 어떤 데이터도 기억 장치(12)에 커미팅함이 없는 갱신을 시뮬레이트함으로써 동작한다. 시뮬레이션 모드에서 수행된 동작은, 데이터를 기억 장치로 커미트하는 것을 제외하고, 정상 모드에서 수행된 동작과 동일한데, 이는 시뮬레이션 모드 동안 디스에이블된다. 따라서, 모든 갱신 동작이 시뮬레이션 모드에서 성공인 경우, 인스톨러는, 예를 들어, 기억 장치(12)의 파국적 실패의 소정의 경우를 제외하고, 동일한 시퀀스의 동작도 정상 모드에서 성공할 것이라고 가정할 수 있다.
기억 장치(12)에 기억된 것으로 예상되지만 실제로는 기억되지 않은 데이터에 대한 동작을 갱신이 포함하면, 어떤 마이너(minor) 변경이 필요할 수 있다는 것을 알아야한다. 일반적으로, 또한 주지되어야하는 바와 같이, 이러한 마이너 변경은 이러한 데이터에 대한 캐칭(catching) 및 캐칭된 데이터에 대한 전술한 동작의 수행에 대한 전환(redirect)을 필요로한다.
기억 장치(12)의 용량의 효율적인 이용
전형적으로, 기억 장치(12)와 같은 기억 장치는 기억된 정보의 각각의 독립적인 바이트를 어드레스할 수 없다. 주지되어야하는 바와 같이, 이렇게 하는 것은 통상적으로 불필요하고, 더 중요하게는 이렇게 하는 것은 너무 커지고, 기억 장치와 관련된 트랙킹 정보를 더 복잡하게 하는 과도하게 큰 어드레스 정보를 요구하게 된다는 것이다. 이러한 트랙킹 정보는 예컨대, 프리 및/또는 사용된 공간의 리스트, 배드(bad) 스페이스의 리스트등을 포함할 수 있다. 대신에, 도 4로 돌아가면, 기억 장치는 통상 정보의 어드레스가능한 섹터(22)에 따라 공간을 분할하고, 각각의 섹터(22)는 512 또는 1024 바이트의 순서를 갖도록 정의될 수 있으며, 이러한 기억 장치는 다음에, 단지 섹터(22)내의 약간의 바이트가 처리될지라도 그곳의 어드레스에 따라 섹터당에 기초하여 데이터를 판독 및 기입하게 된다.
전형적인 파일 시스템은 더 큰 파일(28)이 기억된 비교적 큰 기억 장치와 관련되었음에도 불구하고, 섹터당 기반으로 이러한 기억 장치를 어드레스할 수 있고, 클러스터(24)를 섹터(22)의 번호로서 정의하고, 이러한 기억장치를 클러스터당 기반으로 어드레스하고, 각각의 파일(28)이 적어도 하나의 클러스터(24)(도 4에 도시되지 않음)를 이용하는 것을 필요로하는 것이 통상적으로 더 편리하다. 전과 같이, 이렇게 하는 것은, 너무 커지고, 전술한 메타데이터(20)내의 프리 리스트와 같은 기억 장치와 관련된 트랙킹 정보를 복잡하게 하는 과도하게 큰 어드레스 정보를 회피할 수 있도록 한다. 전형적으로, 클러스터(24)는 예컨대, 1, 2, 4, 8, 또는 16킬로바이트 또는 그 이상과 같은 섹터(22)의 기수-2의 복수의 섹터(22)이고, 파일 시스템은, 크러스터(24)내의 약간의 섹터(22)만이 처리될 지라도 클러스터당 기반으로 기억장치로부터 판독 및 기억장치로 기입을 한다.
그러나, 위에 지적된 바와 같이, 단지 적은 양의 데이터(예컨대, 몇백 바이트 정도)를 갖는 파일(28)이 특정 클러스터(24)에 할당되면, 이러한 클러스터(24)내의 모든 잔여 공간은 소비되고, 비교적 적은 기억 장치내에서는, 이러한 소비된 공간이 신속하게 중요해질 수 있다. 따라서, 본 발명의 일 실시예에서, 제1 척도로서, 도 2의 기억 장치(12)에 대한 파일 시스템(16)은 클러스터당 기반으로 이러한 기억 장치(12)에 어드레스하지 않고, 대신에 섹터당 기반으로 동일하게 어드레스하고, 따라서, 각 파일(28)이 기억 장치(12)의 적어도 하나의 섹터(22)(도시되지 않음)를 이용하는 것을 필요로 한다. 결과적으로, 주지된 바와 같이, 예컨대 512 바이트 섹터(22)상에 기억된 수십 바이트 정도의 비교적 적은 파일(28)은 단지 수백 바이트 정도를 소비하고, 예컨대, 8 킬로바이트 클러스터(24)의 경우과 같이 수천 바이트를 소비하지 않는다.
섹터당 기반으로 기억 장치(12)에 어드레스하는 파일 시스템(16)을 요구하는 것이 클러스터당 기반으로와 비교하여 더 길고 더 복잡한 어드레싱이되는 결과가 되지만, 어드레스되는 공간의 양은 비교적 적은 기억 장치(12)에 대해서는 비교적 적고, 따라서 어드레스도 역시 비교적 작다. 예컨대, 8킬로 바이트 클러스터 및 1 킬로바이트 섹터를 갖는 16 메가바이트 기억 장치(12)에 있어서는, 섹터당 기반 어드레싱은 3개의 추가적인 비트로 어드레스하는 것을 필요로 하지만, 이러한 어드레 스는 여전히 단지 14 비트 길이이고, 이는 적절한 것으로 간주된다.
고려되는 바와 같이, 섹터당 기반으로 기억 장치(12)에 어드레싱하는 파일 시스템(16)일지라도, 수십 바이트 정도의 비교적 적은 파일(28)이 예컨대 512 바이트 섹터(22)에 기억될 때, 수백 또는 수십 바이트를 소비하는 것은 수용될 수 없을 정도로 비효율적인 것으로 간주된다. 따라서, 본 발명의 일 실시예에서, 제2 척도로서, 섹터당 기반으로 기억 장치(12)에 어드레싱하는 동안 파일 시스템(16)은 청크(chunk) 기반으로 각 섹터내의 데이터를 내부적으로 관리하고, 각각의 청크(26)(도 4)는 예컨대 섹터(22)의 기수-2 분할로서 정의된다.
청크 당 기반으로 파일(28)을 저장함에 있어서(도 4에 도시됨), 알 수 있는 바와 같이, 파일 시스템(16)은, 각 파일(28)이 기억 장치(12)의 적어도 하나의 청크(26)를 이용하는 것을 내부적으로 요구하지만, 여전히 외부적으로는 섹터당 기반으로 기억 장치(12)에 어드레싱한다. 따라서, 특정 청크(26)를 기억 장치(12)로부터 판독 또는 기억 장치(12)에 기입하기 위해서는, 파일 시스템(16)은 청크(26)를 갖는 섹터(22)에 판독 또는 기입해야한다. 결과적으로, 파일 시스템(16)은 파일(28)에 의해 이용되는 각 섹터(22)를 추적해야할 뿐만 아니라, 파일(28)에 의해 이용되는 각 섹터(22)내의 각 청크(26)도 추적해야 한다. 이렇게 하는 것은 더 힘들지언정 과도하게 부담되는 것은 아니라고 여겨지고, 본 발명의 사상 및 범주를 벗어남이 없이 임의의 적절한 방식으로 수행될 수 있다. 하여튼, 고려되는 바와 같이, 예컨대 64 바이트 청크(26)상에 기억된 수십 바이트 정도의 비교적 적은 파일(28)은 단지 수 내지 수십 바이트 정도를 소비하고, 예컨대 512 바이트 섹터(22)의 경우와 같이 수백 바이트를 소비하지는 않는다.
이전과 유사하게, 파일 시스템(16)이 내부적으로 청크 당 기반으로 파일(28)에 어드레싱하는 것을 요구하는 것이 섹터 당 기반으로와 비교하여 더 길고 따라서 더 복잡한 어드레싱이 되는 결과를 낳지만, 어드레스되는 공간의 양은 비교적 적은 기억 장치(12)에 대해서는 비교적 적고, 따라서 이러한 어드레스도 또한 비교적 적다는 것을 알아야한다. 이전의 실시예에 연속하여, 1 킬로바이트 섹터(22) 및 256 바이트 청크(26)을 갖는 16 메가바이트 기억 장치(12)에 있어서, 청크 당 기반의 어드레싱은 2개의 추가적인 비트로 어드레싱하는 것을 필요로하지만, 이러한 어드레스는 여전히 16 비트 길이이며, 이것은 적절한 것으로 간주되어야 한다.
각 클러스터(24)의 크기 및 각 섹터(22)의 크기에 대해서와 같이, 각 청크(26)의 크기는 기억 장치(12)가 초기에 포맷 및/또는 파티션될 때 파일 시스템(16)에 대해 정의되어야 함을 유의한다. 그러나, 기억 장치(12)는 청크 당 기반으로 파일 시스템(16)에 의해 어드레싱되지 않고, 따라서 각 청크(26)의 크기를 고려할 필요가 없음을 알 수 있다. 대신에, 다시 파일 시스템(16)은 내부적으로 청크 당 기반으로 기억 장치(12)상에 파일(28)을 구성하지만, 외부적으로 섹터 당 기반으로 기억 장치(12)에 어드레싱한다.
이전에 시사된 바와 같이, 파일 시스템(16)은 파일(28)에 의해 이용되는 각 섹터(22)를 로케이팅하기 위한 정보를 로케이팅하는 기억 장치(12)상에 각 파일(28)을 보존시키고, 파일(28)에 의해 이용되는 각 섹터(22)내의 각 청크(26)도 보존하여야한다. 알 수 있는 바와 같이, 이렇게 하는 것은 파일(28)이 단일 섹터 (22)상에 인접하는 경우에는 비교적 간단하고, 이 경우에 파일 시스템(16)은 섹터(22)의 어드레스, 섹터(22)내의 개시 청크(26)의 어드레스, 및 청크(26)내의 파일의 길이의 적절한 부분만을 주목하면 된다. 그러나, 파일(28)이 단일 섹터(22)상의 2개의 인접한 프래그먼트내에 있으면, 파일 시스템(16)은 이제 섹터(22)의 어드레스, 섹터(22)내의 제1 프래그먼트의 개시 청크(26)의 어드레스, 청크(26)내의 제1 프래그먼트의 길이, 섹터(22)내의 제2 프래그먼트의 개시 청크(26)의 어드레스, 및 청크(26)내의 제2 프래그먼트의 길이를 주목해야한다. 이해할 수 있는 바와 같이, 파일(28)이 더 프래그먼트화되어 감에 따라, 이러한 파일(28)은 복수의 섹터(22) 및 가 섹터상의 복수의 청크(26)내에 상주하여야하고, 이에 따라 파일(28)의 모든 프래그먼트를 로케이팅하기 위한 로케이팅 정보는 마찬가지로 더 커지게 된다.
이해할 수 있는 바와 같이, 이러한 로케이팅 정보는 파일 시스템(16)에 의해 보존되는 리스트내에 기억될 수 있다. 대안적으로, 이러한 로케이팅 정보의 벌크는 헤더등으로서 그 자체가 파일(28)내에 기억될 수 있고, 이 경우에 파일 시스템(16)은 전술한 헤더를 발견하는데 필요한 만큼의 정보를 보존하기만 하면된다. 후자의 경우에, 이해될 수 있는 바와 같이, 이러한 로케이팅 정보가 비교적 크면, 이러한 정보는 헤더로부터 분리될 수 있고 이러한 헤더는 적절하게 레퍼런스를 포함할 수 있다.
적어도, 몇몇 포인트에서 파일(28)이 더 커지고, 특히, 피일(28)이 더 프래그먼트화되어감에 따라, 로케이팅 정보는 수용불가능하게 커지고, 특히 기억 장치 (12)가 비교적 적어지는 경우에, 그 공간의 이용은 비교적 높은 효율로 처리되어야 한다. 이러한 문제는 각 청크(26)의 정의된 크기가 더 작아짐에 따라 더 악화되고, 따라서, 파일(28)은 더 많은 프래그먼트상에서 확산된다. 또한, 몇몇 포인트에서, 파일(28)이 더 커지고 더 프래그먼트화되어감에 따라, 기억 장치(12)로 파일(28)을 기입 또는 기억 장치(12)로부터 파일을 로케이팅 및 판독하는 것은 허용할 수 없을 정도로 귀찮아지고, 허용할 수 없을 정도로 많은 회수의 판독 또는 기입 동작이 파일(28)의 프래그먼트의 수에 기인하여 수행되어야한다. 이전과 같이, 이러한 문제는 각 청크(26)의 정의된 크기가 더 작아짐에 따라 더 악화되고, 파일(28)은 더 많은 프래그먼트상에서 확산될 수 있다.
따라서, 요약하면, 파일 시스템(16)은 청크 당 기반으로 이렇게 함으로써 4공간 방향으로 기억 장치(12)상에 각 파일(28)을 더 효율적으로 기억시키고, 각 청크(26)는 섹터(22)보다 더 작고, 이렇게 함으로써 파일(28)은 파일이 더 커짐에 따라 더 프래그먼트화되고, 이러한 프래그먼트화된 파일(28)에 대한 로케이팅 정보가 허용할 수 없을 정도로 커지고, 프래그먼트화된 파일(28)을 기억 및 검색하는 것은 과도할 정도로 성가시게 된다. 따라서, 본 발명의 일 실시예에서, 제3의 척도로서, 청크 당 기반으로, 각 파일(28)을 내부적으로 관리하는 파일 시스템(16)은 그럼에도 불구하고, 각 파일(28)상에 최소 크기 요구조건을 부과하고, 이에 따라 파일(28)은 그 최소 크기보다 더 적은 부분으로 프래그먼트화될 수 없다. 예컨대, 4 킬로바이트 섹터(22) 및 256 바이트 청크(26)(즉, 섹터(22)당 16 청크(26))를 갖는 기억 장치(12)에 있어서, 최소 크기 블록(30)(도 4)은 1, 2, 4, 또는 8 킬로바이트 또는 그 이상으로 정의될 수 있다. 적어도 몇몇 경우에는 이러한 최소 크기 블록(30)(도 4)은 북수의 섹터(22)에 걸쳐 운용될 수 있지만, 이러한 경우는 문제된다고 간주되지는 않는다.
최소 크기 블록 기반으로 파일(28)을 저장하는 경우에(도 4a에 도시됨), 이해될 수 있는 바와 같이, 파일 시스템(16)은, 파일(28)이 기억 장치(12)상에 프래그먼트화된 형태로 기억되면, 각 프래그먼트(32)는 정의된 최소 크기 블록(30)과 적어도 같은 크기가 되어야하는 것을 요구하지만, 이러한 최소 크기블록(30)을 채우지 않는 파일(28)의 임의의 잔류 프래그먼트(32) 물론 제외된다. 이렇게 함으로써, 파일 시스템(16)은 데이터 또는 동등물 및 그에 따른 컨설트를 수용하는데 이용가능한 청크(26)의 프리 리스트(34)를 보존해야 한다. 이렇게 하는 것은 관련된 대중에게 주지되거나 명백한 것이므로, 여기에 더 상세히 기술하지 않는다. 파일 시스템(16)은 따라서, 이러한 프리 리스트(34)를 이용하는 임의의 방법을 채용할 수 있고, 파일(28)을 이러한 프리 리스트(34) 및 최소 크기 블록(30)에 기초하여 프래그먼트(32)로 분할하기 위한 임의의 방법이 본 발명의 사상 및 범주를 벗어남이 없이 채용될 수 있다.
각각의 청크(26)의 크기에 대하여, 최소 크기 블록(30)은 기억 장치(12)가 초기에 포맷 및/또는 파티션될 때 파일 시스템(16)에 대하여 정의되어야 한다는 것을 주목해야한다. 그러나, 기억 장치(12)는 최소 크기 블록(30)으로의 임의의 직접적 레퍼런스로 파일 시스템(16)에 의해 어드레싱되지 않고, 따라서 동일한 것을 인식할 필요가 없다는 것을 알아야한다.
또한, 최소 크기 블록(30)의 필요를 부과함으로써, 파일 시스템(16)은 기억 장치(12)상에 데이터를 기억할 때 청크(26)를 채용함으로써 얻어지는 어느 정도의 효율을 잃을 수도 있다는 것을 알아야한다. 그럼에도 불구하고, 이렇게 잃게 되는 효율은 오프셋되고, 심지어 감소된 파일 프레그멘테이션으로부터 얻어지는 증가된 효율에 의해 더 가중된다. 게다가, 최소 크기 블록(30)의 요구에 기초하여 특정 파일(28)에는 이용가능하지 않은 기억 장치(12)상의 공간의 청크(26)는 다른 파일(28)에 대해서는 여전히 이용가능하다.
적어도 몇몇 경우에는, 파일 시스템(16)은 파일을 기억하기 전에 각 파일(28)을 압축하여 기억 장치(12)상의 이용된 공간의 효율을 증가시킬 수도 있다. 그렇다면, 본 발명의 다른 일 실시예에서, 파일(28)은 최소 크기 블록(30)의 크기를 갖는 프래그먼트(32)로 분할되고, 따라서, 각 프래그먼트(32)는 압축된다. 각각의 이렇게 압축된 프래그먼트(32)는 최소 크기 블록(30)보다 더 적은 크기가 되지만, 이러한 구성은 전체적으로 잘 작용한다는 것을 알수 있게 된다.
널(NULL) 데이터를 갖는 파일을 위한 파일 구조
전술한 바와 같이, 다른 경우에 기억 장치(12)와 같은 기억 장치상의 파일(28)은 할당되지 않거나 널 데이터의 일부를 포함할 수 있고, 이에 따라 파일(28)내에 공간이 존재하게 되지만 실질적인 데이터로 채워지지는 않는다. 이러한 널 데이터는 대신에 모든 제로 또는 몇몇 다른 플레이스홀더(placeholder)값으로 단순히 표현될 수 있고, 이러한 실질적인 데이터로 약간의 다음 시간에 채워지도록 존재한다. 대안적으로, 이러한 널 데이터는 실질적인 데이터가 어떤 이유로든지 파 일(28)로부터 제거될 때 생성될 수 있다.
따라서, 비교적 큰 파일(28)은 기억 장치(12)상에 존재하는 경우가 될 수 있지만, 실제로 이러한 파일(28)은 단일의 인접한 부분 또는 복수의 인접 또는 비 인접 부분으로서는 그 대부분이 널 데이터이다. 이러한 경우 및 특히, 기억 장치(12)가 비교적 적은 곳에서는, 파일(28)의 널 데이터에 의해 점유되는 공간을 실제로 자유롭게 하는데 매우 유용하게 된다. 따라서, 이런 다른 경우에 점유되는 공간은 다른 파일(28)에 의해 채용되는데 이용가능하게 될 수 있다.
본 발명의 일 실시예에서, 도 5로 돌아가면, 실제로 파일(28)내의 널 데이터에 의해 점유되는 빈 공간으로, 이러한 파일(28)은 도시된 구조에 따라 기억 장치(12)상의 파일 시스템(16)에 의해 기억된다. 특히, 개시된 바와 같이, 이러한 파일(28)은 파일 헤더(36), 세그먼트 할당 테이블(38), 및 널 데이터를 제외한 실제의 파일 데이터(40)를 포함한다.
알 수 있는 바와 같이, 파일 헤더(36)는 파일 속성, 파일 크기, 시간 스탬프, 파일명 등을 포함하는 파일(28)에 관한 정보를 포함한다. 또한, 본 발명에서, 파일 헤더(36)는 기억 장치(12)상의 세그먼트 할당 테이블(38)의 위치에 관한 레퍼런스를 포함한다. 이러한 레퍼런스는 단일의 인접한 세그먼트 할당 테이블(38), 또는 단일의 인접한 테이블(38)을 형성하도록 결합되는 세그먼트 할당 테이블(38)의 복수의 비 인접 부분에 대한 것이 될 수 있다는 것을 주목한다. 세그먼트 할당 테이블(38)이 상당히 프래그먼트화되면, 파일 헤더(36)는, 세그먼트 할당 테이블(38)의 일부의 부가적인 로케이션에 대한 레퍼런스를 포함하는 제2의 데이터 헤더 (42)의 리스트조차도 참조할 수 있다.
적어도, 세그먼트 할당 테이블(38)은 이러한 레퍼런스를 기반으로 그 일부로부터 구성될 수 있고, 이러한 방식은 관련 당업자에게 잘 알려져 있어 여기서는 상세히 기술하지 않는다. 도 5에 도시된 바와 같이, 세그먼트 할당 테이블(38)을 실제로 구성함에 있어서, 이러한 테이블(38)은 파일(28)을 구성하는 실제 파일 데이터(40)의 로케이션에 대한 정렬된 레퍼런스를 포함한다는 것을 알 수 있다. 알 수 있는 바와 같이, 이러한 레퍼런스는 실제 파일 데이터(40)의 고정 또는 가변 길이 세그먼트에 대한 것일 수 있다. 전자의 경우에, 고정 길이는 예컨대, 전술한 최소 크기 블록(30)이 될 수 있고, 이에 반해 후자의 경우 각 레퍼런스는 길이 속성을 포함하게 된다. 물론, 고정 길이 세그먼트를 이용하여 이러한 길이 속성에 대한 필요성을 벗어날 수 있다.
따라서, 파일(28)이 애플리케이션에 의해 판독 또는 기입되기 위해 오픈될 때마다, 파일 헤더(36)는 세그먼트 할당 테이블(38)의 모든 조각들을 로케이팅하기 위해 검사될 수 있고, 이러한 조각들은 기억 장치(12)로부터 로컬 RAM(18)등의 인접한 부분으로 복제된다. 그 후에, 파일(28)에 대한 데이터(40)는 인접한 세그먼트 할당 테이블(38)로 인덱싱하여 로케이팅될 수 있어 기억 장치(12)상의 데이터(40)에 대한 로케이션을 발견할 수 있다. 알 수 있는 바와 같이, 세로운 데이터가 파일(28)에 기입됨에 따라, 테이블(38)은 파일(28)로의 가장 먼 오프셋에서의 세그먼트를 포함하는데 필요한 정도로 확장된다. 테이블(38)의 프래그멘테이션을 제한하기 위해서는, 이러한 테이블(38)은, 특히, 파일(28)의 최종 크기가 이미 알려져 있고 데이터(40)의 세그먼트의 길이가 고정이면, 의도된 파일 크기로 미리 할당될 수 있다.
중요하게는, 본 발명에서, 파일(28)에 대한 데이터(40)는 "스파스(sparce)" 방식으로 기억 장치(12)에 기억되고, 이에 따라 데이터(40)의 실질적인 세그먼트는 세그먼트 할당 테이블(38)에 의해 참조되고, 실제로 기억되며, 이에 반해 데이터(40)의 널 세그먼트는 세그먼트 할당 테이블(38)에 의해 지시되지만, 실제로 기억되거나 참조되지는 않는다. 특히, 실질적인 데이터(40)를 갖는 각 세그먼트에 대해, 세그먼트 할당 테이블(38)내의 대응하는 엔트리는 레퍼런스를 포함하지만, 단지 널 데이터(40)를 갖는 각 세그먼트에 대해서는, 세그먼트 할당 테이블(38)내의 대응하는 엔트리는 레퍼런스를 포함하지 않거나 널 레퍼런스를 포함한다. 따라서, 도 5에 도시된 파일(28)은 15개의 세그먼트를 갖지만, 세그먼트 3, 7 및 10-14는 널 데이터(40)를 갖고, 따라서, 세그먼트 할당 테이블(38)의 어떤 엔트리에 의해서도 실제로 참조되지 않는다.
도 5에 도시된 바와 같이 파일(28)을 기입함에 있어서, 컴퓨팅 장치(10)의 파일 시스템(16)은 데이터(40)의 널 세그먼트를 실제로 기입하지 않고, 대신에 단지 파일(28)에 대한 세그먼트 할당 테이블(38)내에 적합한 엔트리를 생성한다는 것을 알아야한다. 본 발명에 따라, 다음에, 파일 시스템(16)은, 파일(28)에 대한 세그먼트 할당 테이블(38)에 기초하여 기억 장치(12)로의 적절한 호출을 이용하여 파일(28)의 임의의 오프셋으로부터 데이터(40)를 판독하고, 이와 유사하게, 파일 시스템(16)은 파일(28)에 대한 세그먼트 할당 테이블(38)에 기초하여 기억 장치(12) 로의 적절한 호출을 이용하여 파일(28)의 임의의 오프셋으로 데이터(40)를 기입한다. 중요하게는, 파일(28)에 할당된 기억 장치(12)의 임의의 물리적 부분은 더 이상 필요하지 않게 되면 나중에 할당되지 않을 수 있으며, 따라서, 이러한 기억 장치(12)상의 공간을 여유롭게 한다.
따라서, 파일 시스템(16)은 데이터의 실질적인 세그먼트를 기억 장치(12)에 기입하고 세그먼트 할당 테이블(38)내의 엔트리를 적절한 레퍼런스로 갱신함으로써, 파일(28)내의 널 세그먼트를 데이터(40)의 실질적인 세그먼트로 교체할 수 있다. 유사하게, 파일 시스템(16)은 세그먼트 할당 테이블(38)내의 엔트리를 널 레퍼런스로 갱신하거나 또는 기존의 레퍼런스를 제거하여 데이터(40)의 실질적인 세그먼트를 어떤 다음 포인트에서 널 데이터로 교체할 수 있다. 교체된 실질적인 데이터(40)는 예컨대 물리적으로 삭제될 수 있고, 다른 로케이션으로 이동하거나, 다른 데이터(40)에 의해 중복 기입될 수 있도록 남겨질 수 있다. 특히, 본 발명에서, 실질적인 데이터(40)를 널 데이터(40)로 교체할 때, 이러한 교체된 실질적인 데이터(40)에 의해 점유되는 기억 장치(12)상의 공간은 실제로 다른 데이터(40)를 수용할 수 있도록 여유롭고 이용가능하며, 따라서, 파일 시스템(16)은 이와 동일한 것을 반영하기 위해 프리 리스트(34)를 갱신해야한다.
본 발명에 따라, 이제 알 수 있는 바와 같이, 파일(28)은 처음부터 끝까지 선형 방식으로 반드시 구성될 필요는 없다. 대신에, 파일의 크기가 알려진 파일 시스템(16)은 세그먼트 할당 테이블(38)을 구축할 수 있고, 이에 따라 다음에 기억장치(12)상에 임의의 순서로 파일(28)에 대한 데이터(40)의 세그먼트를 파퓰레이트 (populate)하게 할 수 있다. 중요하게는, 기억 장치(12)상에 이러한 데이터(40)의 세그먼트를 파퓰레이트하는 동안, 파일 시스템은 테이블(38)내의 대응하는 엔트리내에서 적절하게 동일한 것을 참조한다.
특히, 도 5에 도시된 바와 같은 본 발명의 파일 구조에 의하면, 파일 시스템(16)은 예컨대, 파일(28)을 갱신할 때, 삭제될 구 파일(28)의 일부로 새로운 파일(28)을 구축할 수 있고, 이렇게 하는 것은 파일(28)의 구 버전을 분해하여, 파일(28)의 신 버전을 구축하는 동안 기억 장치(12)의 공간을 여유롭게 한다. 실제로, 파일(28)의 구 버전으로부터 빈 공간은 파일(28)의 신 버전의 적어도 일부를 저장하기 위해 이용될 수 있다. 따라서, 특히 적은 공간이 남은 기억 장치(12)내에서, 파일(28)을 갱신하는 것은, 이러한 파일(28)의 구 버전을 삭제하지 않고 파일(28)의 신 버전을 구축하기 위한 충분한 여유 공간을 반드시 필요로 하지 않는다.
대신에, 도 6에 도시된 바와 같이, 파일(28)의 신 버전이 파일(28)의 구 버전으로부터의 세그먼트를 포함하게 되면, 이러한 세그먼트는 파일(28)의 구 버전으로부터 복사될 수 있고(단계 601), 파일(28)의 신 버전의 세그먼트 할당 테이블(38)의 적절한 수정에 따라 파일(28)의 신 버전으로 저장될 수 있다(단계 603). 그 후에, 이러한 세그먼트는 파일(28)의 세그먼트 할당 테이블(38)의 적절한 수정에 따라 파일(28)의 구 버전으로부터 삭제될 수 있고(단계 605), 이러한 동작에 기초하여 기억 장치(12)로부터 빈 공간은, 파일(28)의 세그먼트 할당 테이블(38)의 적절한 수정에 따라 파일(28)의 신 버전의 다른 세그먼트를 저장하는데 이용될 수 있다(단계 607).
이제 알 수 있는 바와 같이, 이러한 단계들은, 파일(28)의 구 버전의 물리적 크기가 감소함에 따라 파일(28)의 신 버전의 물리적 크기가 기억 장치(12)상에서 증가하면서, 결국 파일(28)의 신 버전이 완전히 구축될 때까지, 수회 반복된다(단계 609). 다음에, 파일(28)의 구 버전은 기억 장치(12)상에 구 파일(28)의 임의의 잔여 세그먼트에 의해 점유되는 공간을 여유롭게 하기 위해 삭제될 수 있다(단계 611).
적어도 어떤 환경에서는, 단계 601 내지 605에서와 같이, 세그먼트가, 파일(28)의 구 버전으로부터 물리적으로 복사될 필요가 없고, 파일(28)의 신 버전으로 저장될 필요도 없으며, 파일(28)의 구 버전으로부터 삭제될 필요도 없다는 것을 유의한다. 대신에, 파일(28)의 구 버전의 세그먼트 할당 테이블(38)로부터 디-레퍼런스 세그먼트로 충분하고, 파일(28)의 신 버전의 세그먼트 할당 테이블(38)내의 동일한 세그먼트를 참조하게 된다.
본 발명에 따라 알 수 있는 바와 같이, 파일(28)은 스파스 방식으로 기억 장치(12)상에 기억되어 파일(28)의 널 부분은 실제로 기억되지 않는다. 따라서, 기억 장치(12)상의 공간은 비어지게 되고, 다른 파일(28)에 대해 이용가능하게 되고, 이와 동시에 파일(28)의 이러한 널 부분은 약간 후에 실질적인 데이터(40)로 파퓰레이트될 수 있다.
기억 장치상에서의 파일 실행
전술한 바와 같이, 일 예에서 실행 파일(28)을 거의 즉시 로컬 RAM(18) 또는 다른 로케이션에서 로딩하지 않고 기억 장치(12)상에서 실행하는 것이 바람직하다. 예컨대, 컴퓨팅 디바이스(12)는 사용자 커맨드로부터 온 디맨드로 거의 즉각적인 방식으로 반응하는 것이 예상되고, 이러한 커맨드는 실행가능 파일(28)을 실행하는 것을 필요로한다. 대안적으로, 파일(28)을 실행하기 위해 로컬 RAM(18)을 이용하지 않는 것이 바람직할 수 있다.
전술한 바와 같이, 컴퓨팅 디바이스(10)을 위한 전형적인 기억 장치(12)는 클러스터당 또는 섹터당 기반으로 어드레싱될 수 있다. 따라서 기억 장치(12)내의 각 바이트는 섹터(22) 또는 클러스터(24)를 판독하지 않고 직접 액세스될 수 없다. 결과적으로, 파일(28)은 통상적으로, 이러한 실행이 바이트 당으로 파일을 액세스하는 것을 필요로하기 때문에 전형적인 기억 장치(12)로부터 직접 실행될 수 없다. 따라서, 파일(28)을 실행하기 위해, 파일(28)은 전형적으로 기억 장치(12)로부터 로컬로 로딩되고, 이러한 파일(28)의 각 바이트는 실제로 직접 액세스될 수 있다는 것을 알 수 있다.
그러나, 본 발명의 일 실시예에서, 기억 장치(12)는 실제로 바이트당 기반으로 어드레싱가능하다. 예컨대, 이러한 기억 장치(12)는 NOR 플래시 RAM 일 수 있고, 알 수 있는 바와 같이, 실제로 바이트당 기반으로 직접 어드레싱가능한 액세스를 한다. NOR 플래시 RAM은 관련 당업자에게 잘 알려져 있고, 따라서 여기서는 더 자세히 설명하지 않는다. 따라서, 임의의 적절한 유형의 NOR 플래시 RAM이 본 발명의 사상 및 범주를 벗어나지 않고 컴퓨팅 디바이스(10)의 기억 장치(12)로서 이용될 수 있다.
따라서, 파일(28)은 NOR 플래시 RAM 기억 장치(12)상에서 실행될 수 있다. 그러나, 실제로 이러한 NOR RAM(12)(도 7)에서 실행되기 위해서는, 몇몇 요구조건을 충족시켜야한다.
제1 요구사항으로서, 초기 문제로서, NOR RAM(12)은 컴퓨팅 디바이스(10)의파일 시스템(16)에 액세스가능하고, NOR RAM(12)은 드라이브와 같은 다른 기억 장치에서도 마찬가지이다. 이렇게 하기 위해, NOR RAM(12)은 대응하는 액세스 드라이버(44)를 필요로한다. 일반적으로, 알 수 있는 바와 같이, 액세스 드라이버(44)는 컴퓨팅 디바이스(10)상에서 운용되는 소프트웨어의 일부이고, 물리적 주소에 기초하여 파일 시스템(16)에 의해 NOR RAM(12)으로부터 데이터(40)를 호출하는 것에 응답하여 실제로 다른 여러 것중에서 데이터(40)를 검색할 수 있다. 이러한 액세스 드라이버(44)는 관련 당업자에게 잘 알려져 있어 여기서는 더 자세히 설명하지 않는다. 따라서, 임의의 적절한 유형의 액세스 드라이버(44)가 적절한 기능을 수행한다는 가정하에 본 발명의 사상 및 범주를 벗어남이 없이 이용될 수 있다.
제2 요구사항으로서, 파일(28)은 압축된 형태로 NOR RAM(12)에 기억되지 않는다. 알 수 있는 바와 같이, 파일(28)이 예컨대, 로컬 RAM(18)과 같은 그 외의 곳에서 로딩되고 압축해제 되는 한, 이렇게 하는 것은 파일(28)이 NOR RAM(12)상에서 실행되지 않도록 한다.
파일(28)이 인접하고, 비 프래그먼트화된 형식으로 적절한 물리적 브랜칭 어드레스로 NOR RAM(12)상에 기억되지 않는 한, 파일(28)은 전형적으로 NOR RAM(12)상에서 실행되지 않는다는 것을 유의한다. 그러나, 본 발명의 일 실시예에서, 파일(28)은 실제로, 비 인접 또는 프래그먼트화된 형태일지라도 NOR RAM(12)상에서 실행될 수 있다. 그러나, 이렇게 하기 위해서는, 제3 요구사항으로서, 파일(28)은 개시 가상 어드레스를 특정하고, 특정된 개시 가상 어드레스에 기초하여 적절한 가상 브랜칭 어드레스에 따라 NOR RAM(12)상에 기억될 수 있다.
따라서, 도 7에 도시된 바와 같이, 제4 요구사항으로서, 컴퓨팅 디바이스(10)는 NOR RAM(12)상의 파일(28)의 프래그먼트(32)의 물리적 어드레스와 컴퓨팅 디바이스(10)상의 프로세서(48)등이 이용하는 대응하는 가상 어드레스간을 변환하는 가상 어드레스 변환기(46)를 포함하여야한다. 알 수 있는 바와 같이, 위치(28)에서 파일(28)을 실행하는 프로세서(48)는 이러한 가상 어드레스 및 가상 어드레스 변환기(48)에 기초하여 파일(28)로부터 명령을 페치하여 이를 실행한다.
따라서, 가상 어드레스 변환기(46)로, NOR RAM(12)상의 파일(28)은 적어도 프로세서(48)에는 인접하는 것으로 나타나고, 파일(28)내의 가상 브랜칭 어드레스는 정확하고, 파일(28)내의 개시 가상 어드레스는 실제로 가상 어드레스 변환기(46)에의해 이용된다는 것으로 가정된다. 일반적으로, 알 수 있는 바와 같이, 가상 어드레스 변환기(46)는 파일(28)에 대한 물리적 및 가상 어드레스간의 매핑을 유지하여 기능한다. 이러한 가상 어드레스 변환기(46)는 관련 당업자에게 잘 알려져 있어 여기서는 더 자세히 설명하지 않는다. 따라서, 이러한 가상 어드레스 변환기(46)의 임의의 적절한 유형이 본 발명의 사상 및 범주를 벗어남이 없이 이용될 수 있다.
다음에, 동작에서, 이제 도 8로 돌아가면, 컴퓨팅 디바이스(10)는 다음 방식으로 NOR RAM(12)상에서 파일(28)을 실행한다. 물론 예비적으로, 파일 시스템(16) 은 사용자 또는 다른 엔티티에 의해 관련되어 적절한 커맨드에 의해 파일(28)을 실행하고(단계 801), 따라서, 엑세스 드라이버(44)에 의해 NOR RAM(12)상에서 파일(28)을 로케이팅한다(단계 803). 그 후, 파일 시스템(16)은 파일(28)이 NOR RAM(12)상에 상주하는지 압축되지 않았는지, 가상 개시 어드레스를 특정했는지, 이에 기초하여 가상 브랜치 어드레스를 포함하는지, 다른 것 중에서 가상적으로 매핑될 수 있는지를 판정하여 파일(28)이 실제로 NOR RAM(12)상에서 실행될 수 있는지를 판정한다(단계 805).
파일(28)은 실제로 NOR RAM(12)상에서 실행되는 것으로 가정하고, 다음에 파일 시스템(16)은, 전술한 가상 개시 어드레스 및 물리적 로케이션 및 파일(28)의프래그먼트(32)의 길이를 포함하는 액세스 드라이버(44)를 통해 파일(28)에 관한 정보를 획득하고(단계 807), 가상 어드레스 변환기(46)에 이를 통지한다(단계 809). 알 수 있는 바와 같이, 이러한 정보로, 가상 어드레스 변환기(46)는 NOR RAM(12)상의 복수의 비 인접 물리적 로케이션으로부터 파일(28)에 의해 특정된 가상 개시 어드레스에서의 단일의 인접 가상 로케이션 개시부로 파일(28)의 매핑을 생성한다.
NOR RAM(12)상의 파일(28)내의 가상 브랜치 어드레스가 특정된 가상 개시 어드레스에 기초하여 이미 보정을 위해 셋업되는한, 가상 어드레스 변환기(46) 또는 프로세서(48)도 보정에 따라 그 자체가 관여할 필요가 없다는 것을 유의한다. 하여튼, 생성된 매핑에 따라, 프로세서(48)는, 가상 어드레스 변환기(46)에 의해 매핑된 가상 어드레스에 기초하여 적절한 커맨드를 발행하여 파일(28)을 실행할 준비가 된다(단계 813). 따라서, 이러한 가상 어드레스에 기초하여, 변환기(46)는 NOR RAM(12)으로터 직접 파일(28)과 관련하여 실행되는 데이터(40)를 로케이팅한다. 이렇게 하여, 파일 시스템(16) 및 액세스 드라이버(44)는 프로세서(48)에 의해 이용될 필요가 없다.
본 발명에 따라, 알 수 있는 바와 같이, 파일(28)은, 비 인접일지라도, 컴퓨팅 디바이스(10)의 기억 장치(12)상의 적소에서 실행될 수 있다. 이렇게 하기 위해, 파일(28)은 압축되어서는 안되며, 미리 정의된 가상 개시 어드레스에 기초하여 정확한 가상 어드레스로 기억되어야하며, 기억 장치(12)는 액세스 드라이버(44)를 통해 파일 시스템(16)에 의해 액세스가능하여야 하며, 가상 어드레스 변환기(46)는 물리적 어드레스로 가상 어드레스의 변환에 기초하여 기억 장치(12)에 직접 액세스할 수 있어야한다.
본 발명이 특정 동작을 수행하는 특정 엘리먼트에 따라 기술되었지만, 하나의 엘리먼트의 기능은 본 발명의 사상 및 범주를 벗어남이 없이 다른 엘리먼트와 함께 포함될 수 있다는 것을 알아야한다. 예컨대, 파일 시스템(16)이 액세스 드라이버(44)의 기능을 포함하고, 프로세서(48)가 가상 어드레스 변환기(46)의 기능을 포함하는 경우가 있을 수 있다.
또한, 본 발명이 기억 장치(12)로서 직접 어드레스가능한 NOR 플래시 RAM에 따라 기술되었지만, 임의의 다른 직접 액세스가능한 기억 장치(12)가 본 발명의 사상 및 범주를 벗어남이 없이 이용될 수 있다는 것을 알아야한다. 예컨대, 대부분의 기억 장치가 직접 어드레스가능하지는 않지만, 어떤 경우에는 하드 드라이브가 실제로 어드레싱가능할 수 있다.
결론
본 발명은 대부분의 컴퓨팅 디바이스(10)상에서 기억 매체(12)의 크기에 무관하게, 애플리케이션(14)을 갱신하여 실행될 수 있다. 여기 개시된 본 발명에 따라 알 수 있는 바와 같이, 이러한 갱신은 우선 실제로 수행되기 전에 시뮬레이팅되고, 실제적인 수행은 시뮬레이션이 성공적인 경우에만 발생한다.
본 발명에 따라 수행되는 프로세스를 유효하게 하기 위해 필요한 프로그래밍은 비교적 직접적이고, 관련 프로그래밍 업자에게 명백하다. 따라서, 이러한 프로그래밍은 여기 첨부되지 않았다. 다음에 임의의 특정 프로그래밍은 본 발명의 사상 및 범주를 벗어남이 없이 본 발명을 유효하게 하는데 이용될 수 있다.
전술한 내용에서, 본 발명은, 컴퓨팅 디바이스(10)상에서, 특히 비교적 적은 기억 장치(12)에서, 파일 시스템(16)과 같은 애플리케이션(14)을 갱신하기 위한 새롭고 유용한 방법을 포함한다. 이 방법은 갱신이 성공하거나 갱신이 수행되지 않도록 하는 것을 보장한다.
본 발명은 또한 청크 당 기반으로 기억 장치(12)상에 파일을 구성하는 파일 시스템(16)을 위한 새롭고 유용한 프레임워크를 포함한다. 프레임워크는 파일 시스템(12)이 불필요한 낭비를 하지 않고 기억 장치(12)의 기억 용량을 효과적으로 이용하도록 한다.
본 발명은 파일(28)의 새롭고 유용한 구조를 포함하는데, 이는 특히, 파일(28)이 널 데이터(40)를 포함하는 경우 기억 장치(12)의 기억 용량을 효율적으로 이용하도록 한다. 이러한 구조는 파일 시스템(12)이, 파일(28)내의 널 데이터의 필요없는 기억 공간에 기초하여 불필요한 낭비없이 기억 장치(12)의 기억 용량을 효율적으로 이용할 수 있도록 한다.
본 발명은 또한 컴퓨팅 디바이스(10)의 기억 장치(12)상의 파일(28)이 거의즉시 실행될 수 있는 방법 및 메커니즘을 더 포함한다. 이러한 파일은 기억 장치(12)상에 기억되고, 파일(12)이 프래그먼트화된 방식으로 기억 장치(12)상에 기억될 때라도 직접 실행될 수 있다.
본 발명의 개념을 벗어남이 없이 여기 개시된 실시예에 변경이 이루어질 수 있음을 알 수 있다. 일반적으로, 본 발명은 개시된 특정 실시예에 한정되는 것은 아니며, 부가된 특허청구범위에 의해 한정되는 본 발명의 사상 및 범주내의 변형을 포함하도록 의도된다.
본 발명에 의하면, 특히, 파일이 그 내부에 널 데이터를 포함할 경우, 비교적 작은 기억 장치의 저장 용량을 효율적으로 사용할 수 있도록 하는 파일 구조를 얻을 수 있다.

Claims (13)

  1. 프로세서, 실행가능 파일을 갖는 기억 장치, 및 상기 프로세서를 위하여 상기 기억 장치상의 적소에서(in place) 상기 파일을 실행하기 위한 파일 시스템을 포함하는 컴퓨팅 디바이스에 있어서,
    상기 파일은 상기 기억 장치상에서 복수의 비-인접 프래그먼트(fragment)로 분할되고,
    상기 컴퓨팅 디바이스는, 상기 기억 장치상의 상기 파일의 프래그먼트의 물리적 어드레스와 상기 프로세서에 의해 이용되는 대응하는 가상 어드레스간을 변환하기 위해, 상기 프로세서와 상기 기억 장치사이에 삽입된 가상 어드레스 변환기를 더 포함하는 컴퓨팅 디바이스.
  2. 제1항에 있어서,
    상기 기억 장치는 바이트 당 기반(per-byte basis)으로 어드레싱가능한 컴퓨팅 디바이스.
  3. 제1항에 있어서,
    상기 기억 장치는 NOR 플래시 RAM이고,
    상기 컴퓨팅 디바이스는, 상기 파일 시스템이 상기 NOR 플래시 RAM상의 상기 파일에 대한 파일 정보에 액세스하도록 하기 위한 액세스 드라이버를 더 포함하는 컴퓨팅 디바이스.
  4. 제1항에 있어서,
    상기 파일은 비 압축 형태로 상기 기억 장치에 기억되는 컴퓨팅 디바이스.
  5. 제1항에 있어서,
    상기 파일은 개시 가상 어드레스(starting virtual address)를 특정하는 파일 정보를 포함하고, 상기 특정된 개시 가상 어드레스에 기초하여 가상 브랜칭 어드레스에 따라 상기 기억 장치에 기억되며,
    상기 기억 장치상의 파일은 상기 가상 어드레스 변환기를 통해 상기 프로세서에 인접한 것으로 보이는 컴퓨팅 디바이스.
  6. 기억 장치상의 적소에서 파일을 실행하는 방법 - 상기 파일은 상기 기억 장치상에서 복수의 비-인접 프래그먼트로 분할됨 - 에 있어서,
    액세스 드라이버를 통해 상기 기억 장치상에 상기 파일을 로케이팅(locating)하는 단계;
    상기 파일이 상기 기억 장치상의 적소에서 실제로 실행될 수 있는지를 판정하는 단계;
    상기 파일 및 물리적 로케이션에 의해 특정된 가상 개시 어드레스 및 상기 파일의 각 프래그먼트의 길이를 포함하는 상기 액세스 드라이버를 통해 상기 파일 에 관련된 정보를 획득하는 단계;
    상기 가상 어드레스 변환기가, 상기 기억 장치상의 복수의 비-인접 프래그먼트를 나타내는 물리적 어드레스로부터 상기 파일에 의해 특정되는 상기 가상 개시 어드레스에서 개시하는 단일의 인접 가상 로케이션을 나타내는 대응하는 가상 어드레스로 상기 파일의 매핑을 생성할 수 있도록, 상기 획득된 정보에 관해 가상 어드레스 변환기에 통지하는 단계; 및
    상기 가상 어드레스 변환기에 의해 매핑된 상기 가상 어드레스에 기초하여 커맨드를 발행(issuing)하여 상기 파일을 실행하는 단계를 포함하고,
    상기 가상 어드레스 변환기는 상기 기억 장치로부터 직접 상기 파일과 관련하여 실행되는 데이터를 로케이팅하는 방법.
  7. 제6항에 있어서,
    상기 파일이 압축되지 않았는지와 특정된 상기 가상 개시 어드레스에 기초하는 가상 브랜치 어드레스를 포함하는지를 판정하여, 상기 파일이 실제로 상기 기억장치상의 적소에서 실행될 수 있는지를 판정하는 단계를 포함하는 방법.
  8. 실행되기 위한 실행가능 파일이 기억된 컴퓨터 판독가능 기억 매체 - 상기 매체는, 프로세서 및 상기 프로세서를 위해 상기 매체상의 적소에서 상기 파일을 실행하기 위한 파일 시스템을 포함하는 컴퓨팅 디바이스에 설치됨 - 에 있어서,
    상기 기억 매체상의 상기 파일은 복수의 비-인접 프래그먼트로 분할되고,
    상기 컴퓨팅 디바이스는, 상기 기억 장치상의 상기 파일의 프래그먼트의 물리적 어드레스와 상기 프로세서에 의해 이용되는 대응하는 가상 어드레스사이의 변환을 위해 상기 프로세서와 상기 기억 장치사이에 삽입된 가상 어드레스 변환기를 더 포함하고, 상기 파일은 개시 가상 어드레스를 특정하는 파일 정보를 포함하고, 상기 특정된 개시 가상 어드레스에 기초하는 가상 브랜칭 어드레스에 따라 상기 기억 매체상에 기억되며,
    상기 기억 매체상의 파일은 상기 가상 어드레스 변환기를 통해 상기 프로세서에 인접한 것으로 보이는 기억 매체.
  9. 제8항에 있어서,
    상기 기억 매체는 바이트 당 기반으로 어드레싱가능한 기억 매체.
  10. 제8항에 있어서,
    상기 기억 매체는 NOR 플래시 RAM이고,
    상기 컴퓨팅 디바이스는 상기 파일 시스템이 상기 NOR 플래시 RAM상의 상기 파일에 대한 파일 정보를 액세스할 수 있도록 하기 위한 액세스 드라이버를 더 포함하는 기억 매체.
  11. 제8항에 있어서,
    상기 파일은 비 압축 형태로 상기 기억 매체상에 기억되는 기억 매체.
  12. 기억 장치상의 적소에서 파일을 실행하는 방법을 수행하기 위한 컴퓨터-실행가능 명령이 저장된 컴퓨터 판독가능 매체 - 상기 파일은 상기 기억 장치상에서 복수의 비-인접 프래그먼트로 분할됨 - 에 있어서,
    상기 방법은,
    액세스 드라이버를 통해 상기 기억 장치상에 파일을 로케이팅하는 단계;
    상기 파일이 상기 기억 장치상의 적소에서 실제로 실행될 수 있는지를 판정하는 단계;
    상기 파일 및 물리적 로케이션에 의해 특정된 가상 개시 어드레스 및 상기 파일의 각 프래그먼트의 길이를 포함하는 상기 액세스 드라이버를 통해 상기 파일에 관한 정보를 획득하는 단계;
    상기 가상 어드레스 변환기가, 상기 기억 장치상의 복수의 비-인접 프래그먼트를 나타내는 물리적 어드레스로부터 상기 파일에 의해 특정되는 상기 가상 개시 어드레스에서 개시하는 단일의 인접 가상 로케이션을 나타내는 대응하는 가상 어드레스로 상기 파일의 매핑을 생성할 수 있도록, 상기 획득된 정보에 관해 가상 어드레스 변환기에 통지하는 단계; 및
    상기 가상 어드레스 변환기에 의해 매핑된 상기 가상 어드레스에 기초하여 커맨드를 발행하여 상기 파일을 실행하는 단계를 포함하고,
    상기 가상 어드레스 변환기는 상기 기억 장치로부터 직접 상기 파일과 관련하여 실행되는 데이터를 로케이팅하는 컴퓨터 판독 가능 매체.
  13. 제12항에 있어서,
    상기 방법은 상기 파일이 압축되지 않았는지와 특정된 상기 가상 개시 어드레스에 기초하는 가상 브랜치 어드레스를 포함하는지를 판정하여, 상기 파일이 실제로 상기 기억 장치상의 적소에서 실행될 수 있는지를 판정하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
KR1020050023605A 2004-03-22 2005-03-22 비교적 한정된 저장 공간을 갖는 컴퓨팅 디바이스 및 그운영 체제/파일 시스템 KR101150032B1 (ko)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US55539204P 2004-03-22 2004-03-22
US55510404P 2004-03-22 2004-03-22
US55515504P 2004-03-22 2004-03-22
US55510204P 2004-03-22 2004-03-22
US60/555,102 2004-03-22
US60/555,392 2004-03-22
US60/555,155 2004-03-22
US60/555,104 2004-03-22
US11/001,280 US8069192B2 (en) 2004-03-22 2004-12-01 Computing device with relatively limited storage space and operating / file system thereof
US11/001,280 2004-12-01

Publications (2)

Publication Number Publication Date
KR20060061204A true KR20060061204A (ko) 2006-06-07
KR101150032B1 KR101150032B1 (ko) 2012-05-30

Family

ID=34865464

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050023605A KR101150032B1 (ko) 2004-03-22 2005-03-22 비교적 한정된 저장 공간을 갖는 컴퓨팅 디바이스 및 그운영 체제/파일 시스템

Country Status (5)

Country Link
US (1) US8069192B2 (ko)
EP (1) EP1580664B1 (ko)
JP (1) JP4825433B2 (ko)
KR (1) KR101150032B1 (ko)
CN (1) CN100445967C (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647358B2 (en) * 2004-03-22 2010-01-12 Microsoft Corporation Computing device with relatively limited storage space and operating/file system thereof
US7490096B2 (en) * 2005-11-04 2009-02-10 Sun Microsystems, Inc. Automatic intent log testing
US8219739B2 (en) * 2006-06-30 2012-07-10 Intel Corporation Read-only optimized flash file system architecture
TWI497414B (zh) * 2009-06-23 2015-08-21 Phison Electronics Corp 檔案執行方法及系統
US8831409B1 (en) * 2010-06-07 2014-09-09 Purplecomm Inc. Storage management technology
US10853306B2 (en) * 2011-08-02 2020-12-01 Ajay JADHAV Cloud-based distributed persistence and cache data model
CN105579977B (zh) 2014-09-01 2020-04-14 华为技术有限公司 访问文件的方法、装置及存储系统
CN105580010B (zh) 2014-09-01 2019-02-19 华为技术有限公司 访问文件的方法、装置和存储系统
CN105243102B (zh) * 2015-09-17 2018-11-23 北京金山安全软件有限公司 一种卸载残留文件的处理方法、装置及终端
WO2018170741A1 (zh) * 2017-03-21 2018-09-27 华为技术有限公司 一种更新操作系统的方法及装置
EP3698253A4 (en) * 2017-10-17 2021-08-04 Argus Cyber Security Ltd SYSTEM AND METHOD FOR MANAGING A PROGRAM MEMORY ON A MEMORY DEVICE
CN114095916A (zh) * 2017-12-19 2022-02-25 华为技术有限公司 配置文件管理的方法、嵌入式通用集成电路卡和终端
WO2022265615A1 (en) * 2021-06-14 2022-12-22 Hewlett-Packard Development Company, L.P. Image file installations
CN117785073B (zh) * 2024-02-28 2024-06-21 深圳市智岩科技有限公司 物联网设备及其时序数据存取方法和相应的装置与介质

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5193184A (en) * 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
US5193180A (en) 1991-06-21 1993-03-09 Pure Software Inc. System for modifying relocatable object code files to monitor accesses to dynamically allocated memory
JPH0778766B2 (ja) * 1992-09-25 1995-08-23 インターナショナル・ビジネス・マシーンズ・コーポレイション ランダム・アクセス可能かつ書換え可能メモリを用いる外部記憶装置におけるプログラム直接実行の制御方法および装置
US5530850A (en) 1993-10-25 1996-06-25 International Business Machines Corporation Data storage library array with log-structured file system which allows simultaneous write and garbage collection
CA2137488C (en) * 1994-02-18 1998-09-29 Richard I. Baum Coexecuting method and means for performing parallel processing in conventional types of data processing systems
US5754817A (en) * 1994-09-29 1998-05-19 Intel Corporation Execution in place of a file stored non-contiguously in a non-volatile memory
US5732402A (en) 1995-02-10 1998-03-24 International Business Machines Corporation System and method for data space management using buddy system space allocation
US5581768A (en) * 1995-02-27 1996-12-03 Intel Corporation Method and apparatus for executing applications in place from write once/seldom memories
US6101590A (en) * 1995-10-10 2000-08-08 Micro Unity Systems Engineering, Inc. Virtual memory system with local and global virtual address translation
GB9606927D0 (en) 1996-04-02 1996-06-05 Memory Corp Plc Data storage devices
US5819298A (en) 1996-06-24 1998-10-06 Sun Microsystems, Inc. File allocation tables with holes
US5909540A (en) 1996-11-22 1999-06-01 Mangosoft Corporation System and method for providing highly available data storage using globally addressable memory
EP0911827B1 (en) 1997-10-21 2011-11-30 Sony Corporation Recording and/or reproduction apparatus, file management method and providing medium
US6112210A (en) 1997-10-31 2000-08-29 Oracle Corporation Apparatus and method for null representation in database object storage
US6151602A (en) 1997-11-07 2000-11-21 Inprise Corporation Database system with methods providing a platform-independent self-describing data packet for transmitting information
US7428547B2 (en) 1998-01-26 2008-09-23 At&T Corp. System and method of organizing data to facilitate access and streaming
US6697846B1 (en) 1998-03-20 2004-02-24 Dataplow, Inc. Shared file system
US6145069A (en) * 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
US6304867B1 (en) 1999-02-25 2001-10-16 Electronic Data Systems Corporation System and method for enhanced performance of a relational database management system through the use of application-specific memory-resident data
US6212613B1 (en) * 1999-03-22 2001-04-03 Cisco Technology, Inc. Methods and apparatus for reusing addresses in a computer
JP3763992B2 (ja) 1999-03-30 2006-04-05 富士通株式会社 データ処理装置及び記録媒体
US6574721B1 (en) * 1999-08-31 2003-06-03 International Business Machines Corporation Apparatus and method for providing simultaneous local and global addressing using software to distinguish between local and global addresses
US6647490B2 (en) * 1999-10-14 2003-11-11 Advanced Micro Devices, Inc. Training line predictor for branch targets
US7020664B1 (en) 1999-11-30 2006-03-28 Matsushita Electric Industrial Co., Ltd. File management apparatus and method
GB2373612B (en) 1999-12-22 2004-05-05 Seagate Technology Llc Buffer management system for managing the transfer of data into and out of a buffer in a disc drive
US6741978B1 (en) 2000-04-12 2004-05-25 Intel Corporation Accessing file data stored in non-volatile re-programmable semiconductor memories
US6430667B1 (en) * 2000-04-13 2002-08-06 International Business Machines Corporation Single-level store computer incorporating process-local address translation data structures
US6574747B2 (en) * 2000-06-02 2003-06-03 Microsoft Corporation Extensible execute in place (XIP) architecture and related methods
US6658437B1 (en) 2000-06-05 2003-12-02 International Business Machines Corporation System and method for data space allocation using optimized bit representation
EP1364510B1 (en) 2000-10-26 2007-12-12 Prismedia Networks, Inc. Method and system for managing distributed content and related metadata
DE10127198A1 (de) 2001-06-05 2002-12-19 Infineon Technologies Ag Vorrichtung und Verfahren zum Ermitteln einer physikalischen Adresse aus einer virtuellen Adresse unter Verwendung einer hierarchischen Abbildungsvorschrift mit komprimierten Knoten
JP4280055B2 (ja) 2001-11-28 2009-06-17 株式会社Access メモリ制御方法および装置
IL147073A0 (en) 2001-12-10 2002-08-14 Monosphere Ltd Method for managing the storage resources attached to a data network
US6959373B2 (en) 2001-12-10 2005-10-25 Incipient, Inc. Dynamic and variable length extents
US7149750B2 (en) 2001-12-19 2006-12-12 International Business Machines Corporation Method, system and program product for extracting essence from a multimedia file received in a first format, creating a metadata file in a second file format and using a unique identifier assigned to the essence to access the essence and metadata file
US7178139B2 (en) * 2002-08-27 2007-02-13 Delphi Technologies, Inc. Executable file system for an embedded computer
US6988163B2 (en) * 2002-10-21 2006-01-17 Microsoft Corporation Executing binary images from non-linear storage systems
US7170890B2 (en) 2002-12-16 2007-01-30 Zetera Corporation Electrical devices with improved communication
US7353299B2 (en) 2003-05-29 2008-04-01 International Business Machines Corporation Method and apparatus for managing autonomous third party data transfers
US7089354B2 (en) 2003-07-30 2006-08-08 International Business Machines Corporation Disk fragmentation test system
DE60328379D1 (de) 2003-07-30 2009-08-27 Texas Instruments Inc Reformatier-logik-schaltung zur Reformatierung eines Speicherzugriffs auf ein Gerät
JP2005107803A (ja) 2003-09-30 2005-04-21 Hitachi Ltd システム更新方法、および、それを実行するための計算機システム
JP4385215B2 (ja) 2003-10-21 2009-12-16 日本電気株式会社 スナップショットシミュレーション機能を有するディスクアレイ装置
US7549042B2 (en) 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US7647358B2 (en) 2004-03-22 2010-01-12 Microsoft Corporation Computing device with relatively limited storage space and operating/file system thereof
US7206915B2 (en) 2004-06-03 2007-04-17 Emc Corp Virtual space manager for computer having a physical address extension feature
US20060015528A1 (en) 2004-07-14 2006-01-19 Microsoft Corporation Generic representation of optional values
WO2006047163A2 (en) 2004-10-26 2006-05-04 Priderock, L.L.C. System and method for identifying and removing malware on a computer system

Also Published As

Publication number Publication date
US8069192B2 (en) 2011-11-29
CN100445967C (zh) 2008-12-24
JP2005276212A (ja) 2005-10-06
EP1580664A2 (en) 2005-09-28
EP1580664B1 (en) 2013-05-01
JP4825433B2 (ja) 2011-11-30
US20050209991A1 (en) 2005-09-22
EP1580664A3 (en) 2009-01-21
CN1680926A (zh) 2005-10-12
KR101150032B1 (ko) 2012-05-30

Similar Documents

Publication Publication Date Title
KR101150032B1 (ko) 비교적 한정된 저장 공간을 갖는 컴퓨팅 디바이스 및 그운영 체제/파일 시스템
US20100115006A1 (en) Computing device with relatively limited storage space and operating/file system thereof
US7698699B2 (en) Computing device with relatively limited storage space and operating/file system thereof
US7496586B1 (en) Method and apparatus for compressing data in a file system
US8156165B2 (en) Transaction-safe FAT files system
US5873118A (en) Method and system for storing file system state information in multiple sectors based on update frequency
US8024507B2 (en) Transaction-safe FAT file system improvements
CN100456240C (zh) 以故障保险方式向非易失存储器应用自定义软件映象更新
US6996696B2 (en) Compressed file system for non-volatile RAM
US7146455B2 (en) System and method for optimized access to memory devices requiring block writing
US7415653B1 (en) Method and apparatus for vectored block-level checksum for file system data integrity
US7836105B2 (en) Converting file-systems that organize and store data for computing systems
US7970804B2 (en) Journaling FAT file system and accessing method thereof
KR20080097196A (ko) Fat 볼륨 상의 개별적인 파일들은 압축하고, 그 외의 파일들은 비압축 상태로 유지하기 위한 컴퓨터 구현 방법, 시스템 및 컴퓨터 판독 가능 매체
US20030005219A1 (en) Partitioning cache metadata state
JP2005122439A (ja) デバイス機器、及びデバイス機器の記録装置のフォーマット変換方法
US7526622B1 (en) Method and system for detecting and correcting data errors using checksums and replication
US7499929B2 (en) Computing device with relatively limited storage space and operating/file system thereof
US6510499B1 (en) Method, apparatus, and article of manufacture for providing access to data stored in compressed files
US7281188B1 (en) Method and system for detecting and correcting data errors using data permutations
CN109656881B (zh) 一种基于fat16技术实现文件动态管理的方法和系统
US7533225B1 (en) Method and apparatus for enabling adaptive endianness
GB2540179A (en) An integrated system for the transactional management of main memory and data storage
US7925827B2 (en) Method and system for dirty time logging
US7603568B1 (en) Method and apparatus for self-validating checksums in a file system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160419

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170420

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180417

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190417

Year of fee payment: 8