KR20110010687A - 컴퓨팅 디바이스, 데이터 액세스 관리 방법 및 파일 액세스 관리 방법 - Google Patents

컴퓨팅 디바이스, 데이터 액세스 관리 방법 및 파일 액세스 관리 방법 Download PDF

Info

Publication number
KR20110010687A
KR20110010687A KR1020107001910A KR20107001910A KR20110010687A KR 20110010687 A KR20110010687 A KR 20110010687A KR 1020107001910 A KR1020107001910 A KR 1020107001910A KR 20107001910 A KR20107001910 A KR 20107001910A KR 20110010687 A KR20110010687 A KR 20110010687A
Authority
KR
South Korea
Prior art keywords
data portion
computing device
data
bitmap
copy
Prior art date
Application number
KR1020107001910A
Other languages
English (en)
Inventor
데이비드 크렌
제이미 카사스
Original Assignee
노키아 유케이 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 노키아 유케이 리미티드 filed Critical 노키아 유케이 리미티드
Publication of KR20110010687A publication Critical patent/KR20110010687A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • 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/061Improving I/O performance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/10Streamlined, light-weight or high-speed protocols, e.g. express transfer protocol [XTP] or byte stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

컴퓨팅 디바이스는, 애플리케이션 스레드에 의해, 컴퓨팅 디바이스 상의 메모리 내에 저장된 다수의 데이터부로의 액세스를 제어하도록 구성된다. 각 스레드는 각 데이터를 액세스 또는 처리할 수 있는 권한을 포함하고 있다. 애플리케이션 스레드가 데이터를 처리하기 위한 명령을 포함하고 있으면, 명령이 함수를 호출한다. 이 시스템은 데이터부를 새로운 메모리 위치에 복제하고, 데이터부 복제본에 호출하였던 함수를 적용한다.

Description

컴퓨팅 디바이스, 데이터 액세스 관리 방법, 파일 액세스 관리 방법, 컴퓨터 프로그램, 운영 시스템 및 컴퓨터 판독가능한 매체{FILE ACCESS MANAGEMENT SYSTEM}
본 발명은 공유 시스템(shared system)에서 데이터로의 액세스를 제어하도록 구성되는 컴퓨팅 디바이스(computing device)에 관한 것이다. 특히, 본 발명은 공유 시스템에서 애플리케이션으로 하여금 데이터에 동시에 액세스 가능하게 하는 컴퓨팅 디바이스 시스템에 관한 것이다. 또한 본 발명은 그에 상응하는 방법에 관한 것이다.
많은 현대의 운영 시스템은 선점형 멀티스레드 환경(pre-emptive multithreading environment)에서 동작한다. 그러한 환경에서는, 다중 실행 스레드(multiple threads)가 병렬로 실행될 수 있다. 개개의 스레드에는, 특정 우선도가 할당되어, 특정 프로세서에 의해 조정될 수 있는 것보다 더 많은 스레드가 실행을 요구할 때에, 높은 우선도의 스레드가 먼저 실행된다. 어떤 스레드들은 예컨대 디스플레이 디바이스에 비트맵을 출력하기 위해 데이터를 판독하기 위한 명령(instructions)을 포함할 수 있다. 그러한 동작들은 일반적으로 메모리를 재할당하지 않으므로, 2개의 스레드가 동시에 동일한 데이터를 판독하려고 하는 경우, 아무런 문제될 것이 없다. 다른 스레드들은 예컨대 비트맵을 리사이징(resizing)하거나 압축함으로써 데이터를 처리(manipulate)하기 위한 명령들을 포함한다. 그러한 스레드는 전형적으로 데이터 관리 시스템으로부터 적절한 처리 함수를 호출한다. 처리 함수들은 전형적으로 처리될 데이터를 메모리에 재할당한다. 2개의 스레드가 동일 데이터를 동시에 처리하려고 하면, 2개의 스레드가 동시에 메모리를 재할당하려고 하기 때문에 메모리 에러가 발생한다. 더욱이, 하나의 스레드가 특정 데이터를 액세스하고, 다른 스레드가 그 데이터를 처리하는 함수를 호출하는 경우, 유사한 에러가 발생할 수 있을 것이다.
도 1은 멀티스레드 환경에서 동시성(concurrency)에 연관되는 문제를 나타낸다. 종래기술의 공지된 이동 전화(mobile phone)(100)가 가상 글로벌 메모리 청크(virtual global memory chunk)(101)와 함께 개략적으로 도시되어 있다. 2개의 비트맵(102, 103)이 메모리(101)에 저장되어 있다. 이동 전화는 또한, 하나의 이상의 실행 스레드를 각각 포함하는 다수의 애플리케이션을 메모리에 저장하고 있다. 도 1에서는, 2개의 실행 스레드(104, 105)가 도시되어 있다. 스레드(104)는 비트맵(102)을 판독하고 디스플레이하는 명령들을 포함하고 있다. 사용 중에, 스레드(104)가 실행되어, 이동 전화(100)의 디스플레이 상에 적절한 형태로 비트맵(102)이 디스플레이된다. 어떠한 동시성 제어의 부재로 인해, 스레드(104)가 비트맵(102)을 디스플레이하는 동안에, 다른 실행 스레드는 글로벌 메모리(101)에서 비트맵을 처리할 수 있다. 스레드(105)는 다른 스레드에 의해 향후 일정 시점에서 디스플레이하기 위해 비트맵(102)을 리사이징하는 명령들을 포함하고 있다. 사용 중에, 스레드(104)가 이동 전화의 디스플레이 상에 비트맵을 디스플레이하는 동안, 애플리케이션이 비트맵(102)을 스레드(105)가 처리할 수 있다. 처리 동작은 도 1에서 나타낸 바와 같이 메모리의 재할당을 야기한다. 스레드(105)는 비트맵(102)을 리사이징하고, 그것의 가상 메모리 어드레스를 변경한다. 새로운 비트맵(106)은 점선으로 도시되어 있다. 이것이 발생하고 있는 동안, 스레드(104)는 비트맵(102)을 디스플레이하려는 시도를 계속한다. 스레드(105)가 비트맵(102) 및 그 메모리 할당을 변경하였기 때문에, 스레드(104)는 원본 비트맵을 디스플레이할 수 없고, 대신에 도 1에 도시한 바와 같이, 비트맵의 손상된 버전을 디스플레이한다. 이것은, 잘못된 사용자 경험을 제공하여, 스레드(104)에 의해 참조되는 메모리 어드레스를 정정하기 위한 메커니즘이 없다면, 당해 디바이스는 영구적으로 오류가 발생하게 된다.
동시성에 연관된 문제를 다루는 종래에 공지된 몇 개의 메커니즘이 있다. 전형적인 OS(operating system)는 동기화 메커니즘을 이용하여 메모리에 저장된 데이터로의 액세스를 제어하는 파일 관리 시스템을 포함한다. 그러한 메커니즘 중 하나는 직렬화(serialisation)이다. 파일 시스템은 순차적으로 동작들의 판독 및 처리를 행한다. 이는 각 동작들이, 그것을 개시하기 전에 더 앞선 동작이 끝나기를 기다려야 하기 때문에, 시간이 소비된다. 다른 메커니즘은 록(lock)과 같은 상호 배제(mutual exclusion) 또는 뮤텍스(mutex)이다. 다른 타입의 록으로서는 글로벌 록 및 파일 록을 포함하는 것이 알려져 있다. 글로벌 록은 주어진 파일 타입에 있어서 전체 파일 관리 시스템에 적용된다. 스레드가 파일 데이터를 처리하거나 또는 파일의 재할당을 야기하는 함수를 호출하면, 스레드는 먼저 글로벌 록을 취득한다. 스레드가 글로벌 록을 가지기만 하면, 그 스레드만이 처리 함수를 호출할 수 있다. 그 스레드가 데이터 처리를 종료하면, 글로벌 록을 교체한다. 다른 스레드들은 그들이 파일 데이터를 처리할 수 있기 전에 글로벌 록이 이용 가능해지는 것을 기다려야 한다. 글로벌 록을 이용할 때의 주요 문제는 데드록킹 상태(deadlocking situations)가 발생할 수 있다는 것이다. 더욱이, 악의적 스레드가 파일 시스템을 록하고 및 언록(unlock)하지 않을 수 있다. 이로 인해 파일 시스템이 록업(lock-up)되어, 디바이스를 사용할 수 없게 된다. 악의적 스레드가 스타트-업(start-up)으로 시작되면, 디바이스를 결코 이용할 수 없다. 다른 문제는 글로벌 록이 전체 파일 시스템을 록한다는 사실이다. 이는, 스레드가 파일 시스템을 순서대로 액세스해야 하기 때문에, 전체 시스템을 둔화시킨다. 이는 다중스레드 환경의 목적 전체를 무산시킨다.
글로벌 록 메커니즘을 이용하는 것과 달리 파일 록 메커니즘을 이용하는 것이 있다. 그러한 메커니즘에서는, 각 개개의 파일은 관련되는 록을 가진다. 따라서, 처리되는 파일 데이터만이 록될 필요가 있다. 이는, 하나의 스레드에 의해 처리되지 않는 파일 데이터가 다른 스레드에 의해 처리될 수 있는 장점을 가진다. 그러나, 글로벌 록과 연관되는 몇몇 문제들은 파일 록에도 발생한다. 특히, 데드록킹 상태가 여전히 발생하며, 악의적인 스레드가 특정 파일 데이터를 록업하여, 다른 스레드가 액세스할 수 없게 한다.
전술한 관점에서, 록 또는 다른 유사 동기화 메커니즘의 이용과 연관되는 문제가 없는 데이터 관리 시스템이 필요하다는 것이 명백하다. 그러한 시스템은 또한, 디바이스 성능에도 좋고, 최소의 RAM을 필요로 한다.
바람직한 실시예에 있어서, 본 발명은, 애플리케이션 스레드에 의해, 컴퓨팅 디바이스의 메모리에 저장된 다수의 데이터부로의 액세스를 제어하는 컴퓨티 디바이스를 제공한다. 각 스레드는 액세스 또는 처리되도록 구성된 각 데이터부를 위한 권한(handle)을 포함한다. 애플리케이션 스레드가 데이터부를 처리하는 명령들을 포함하면, 그것이 함수를 호출한다. 컴퓨팅 디바이스는 데이터부를 새로운 메모리 위치에 복제하고, 데이터부의 복제본을 호출하는 기능을 제공한다. 각 데이터부는 데이터부에 관련되는 정보를 저장하는데 이용되는 관련 메타데이터를 포함한다. 메타데이터의 일부는 데이터부가 최근 복제되어 처리되었음을 나타내는 더티 플래그(dirty flag)로 마킹될 수 있다. 데이터부가 처리를 위해 복제되면, 컴퓨팅 디바이스는 원래의 데이터부를 더티 플래그로 마킹하여, 원래의 데이터부의 메타데이터에 새로운 데이터부에 대한 권한을 저장한다. 애플리케이션 스레드가 실질적으로 주어진 데이터부를 액세스하거나 처리하면, 시스템은 먼저 더티 플래그의 존재를 체크한다. 더티 플래그가 존재하면, 새로운 데이터부에 대해 저장된 권한은 호출한 스레드로 리턴되고, 그 스레드는 새로운 데이터부로 연결된다.
본 발명은, 복수의 데이터를 저장하도록 설치되는 메모리를 구비하는 컴퓨팅 디바이스를 제공하며, 컴퓨팅 디바이스는, 데이터부를 참조하는 복수의 프로세스가 실행되도록 구성되고, 컴퓨팅 디바이스는, 프로세스가 그 데이터부를 처리하려고 할 때, 데이터부를 새로운 메모리 위치에 복제하고, 복제본을 처리하고, 사전결정된 조건이 충족되면 원래의 데이터부를 파기하도록 구성된다.
따라서, 본 발명의 컴퓨팅 디바이스는 상이한 스레드가, 상이한 데이터부를 동시에 액세스하게 할 수 있다. 하나의 스레드가 데이터부를 처리할 때에, 록이 이용되지 않으므로, 다른 스레드가 전체 시스템을 이용할 수 있게 된다. 게다가, 다른 스레드가 그 데이터부를 처리하려고 함과 동시에 하나의 스레드가 데이터부를 판독하고자 하는 경우, 원래의 데이터부에 관련되는 메타데이터에 더티 플래그가 제공되기 전부터, 파일 권한이 유효하게 남아 있으므로 에러가 발생하지 않는다. 하나의 애플리케이션이 전체 세스템을 록업할 수 없기 때문에, 보안상 위험성도 없다. 록을 사용하지 않기 때문에, 시스템은 데드록 상태가 되지 않는다. 복수의 스레드가 동시에 시스템 내의 데이터를 액세스하여 처리할 수 있기 때문에, 디바이스 성능 및 속도도 향상된다. 디바이스는, 기존 데이터부가 삭제되지 않거나, 긴 주기의 시간 후에 삭제되는 디바이스와 비교하면, 메모리의 효율성도 증가한다.
바람직하게는, 데이터부는 이미지 데이터이거나, 디바이스 디스플레이를 경유하여 사용자에게 전달될 수 있는 콘텐츠를 갖는 다른 데이터이다. 그러한 데이터에 의해, 본 발명은 정확하고 오류가 없는 이미지를 사용자에게 항상 보여준다는 효과를 제공한다. 이는 사용자 경험을 향상시킨다.
바람직하게는, 애플리케이션 프로세스가 복제된 데이터부를 처리하기만 하면, 기존 데이터부를 액세스하려는 프로세스들은 새로운 데이터부를 참조하도록 업데이트된다. 사전결정된 조건은, 바람직하게는 모든 애플리케이션 프로세스가 새로운 데이터부를 참조할 때에 충족한다. 이러한 방식으로, 본 발명은 메모리 내에 요구되는 동안만 비트맵을 보유하는 특히 효율적인 디바이스를 제공한다. 이는 디바이스의 메모리의 효율성을 더욱 향상시킨다.
본 발명은 복수의 데이터를 저장하도록 설치되는 메모리를 구비하는 컴퓨팅 디바이스도 제공하며, 컴퓨팅 디바이스는 데이터부를 참조하는 복수의 프로세스를 구동하도록 구성되고, 컴퓨팅 디바이스는 또한, 그 데이터부를 프로세스가 처리하려고 할 때, 새로운 메모리 위치로 데이터부를 복제하고, 복제본을 처리하고, 원래의 데이터부에 관련되는 데이터부는 상기 복제본으로 교체되었음을 나타내기 위해, 마킹하도록 구성된다.
본 발명은 또한, 컴퓨팅 디바이스 메모리 내에서의 데이터 액세스를 관리하는 방법을 제공하며, 메모리는 복수의 데이터부를 저장하도록 구성되고, 컴퓨팅 디바이스는 데이터부를 참조하는 복수의 데이터부를 저장하도록 구성되며, 프로세스가 데이터부를 처리하려고 할 때, 데이터부의 복제본이 만들어지고, 복제본이 처리되고, 사전결정된 조건이 충족되면 원래의 데이터부가 파기된다.
본 발명은 또한 컴퓨팅 디바이스 메모리 내에서의 파일 액세스를 관리하는 방법을 제공하며, 메모리는 복수의 데이터부를 저장하도록 구성되고, 컴퓨팅 디바이스는 데이터부를 참조하는 복수의 프로세스를 구동하도록 구성되며, 프로세스가 데이터부를 처리하려고 할 때, 데이터부의 복제본이 만들어지고, 복제본이 처리되고, 원래의 데이터부와 관련되는 데이터는 상기 복제본으로 교체되었음을 나타내도록 마킹된다.
본 발명은 또한, 복수의 데이터부와, 복수의 데이터부를 액세스 또는 처리하도록 각각 구성되는 복수의 애플리케이션을 저장하도록 구성되는 메모리와, 복수의 애플리케이션을 사용자가 제어하도록 구성되는 사용자 입력부와, 복수의 애플리케이션의 시청 가능한 출력을 디스플레이하도록 구성되는 디스플레이와, 애플리케이션에 의해 데이터부로의 액세스를 제어하도록 구성되는 데이터 관리 서버를 포함하되, 애플리케이션에 의해 데이터부를 처리하기 위한 요청은 데이터 관리 서버를 통해 라우팅되고, 서버는 처리 요청을 수신하면, 관련 데이터부를 복제하고, 복제본에 대한 처리 요청을 수행하도록 구성된다.
바람직하게는, 메모리는 상이한 애플리케이션 및 데이터부를 저장하도록 각각 구성되는 복수의 상이한 메모리부를 구비한다. 특히, 메모리는 OS 코드를 저장하는 ROM(read only memory), 사용자 데이터 및 몇몇 애플리케이션을 저장하는 사용자 데이터 메모리, 사용중에 애플리케이션 및 파일 데이터를 로딩하는 RAM(random access memory)을 포함할 수 있다.
용어 "참조"는 애플리케이션 프로세스와 파일 간의 관계를 의미하는데, 이를 통해 애플리케이션 프로세스는 파일을 판독 또는 처리할 수 있다. 예컨대, 애플리케이션 프로세스는 디스플레이를 경유하여 사용자에게 그 콘텐츠를 디스플레이하기 위해 파일을 판독할 수 있다. 게다가, 애플리케이션 프로세스는 다른 처리 프로세스들 중에서, 파일을 리사이징하고, 그 해상도를 변화시키고, 압축함으로써 파일을 처리할 수 있다. 이러한 방식으로 파일을 판독 또는 처리하도록 구성되는 애플리케이션 프로세스는 그 파일을 참조한다고 말할 수 있다.
본 발명의 다른 특징은 첨부한 특허청구범위에 의해 규정된다. 본 발명에 관련되는 특징 및 장점은 이하의 바람직한 실시예의 설명으로부터 명확해진다.
본 발명은 첨부한 도면을 참조하여 단지 예시로서 기술될 것이다.
도 1은 종래에 공지된 이동 전화를 나타내는 도면,
도 2는 본 발명의 실시예에 따른 이동 전화를 나타내는 도면,
도 3은 도 2의 이동 전화의 운영 시스템(OS)을 나타내는 도면,
도 4는 도 3의 OS의 멀티미디어 및 그래픽 서비스부를 나타내는 도면,
도 5는 본 발명의 실시예에 따른 OS, 애플리케이션, 파일 데이터 및 하드웨어의 다양한 구성요소를 나타내는 시스템 블럭도,
도 6은 본 발명의 실시예에 따른 비트맵 메모리를 나타내는 도면,
도 7은 도 2에 도시한 이동 전화의 동작을 나타내는 흐름도,
도 8은 도 2에 도시한 이동 전화의 다른 동작을 나타내는 흐름도,
도 9는 사용 중인 도 2의 이동 전화를 나타내는 도면.
이동 전화 상에서 구동되도록 설치된 OS에 대해, 본 발명의 바람직한 실시예를 설명한다. 설명하는 이동 전화는 종래에 공지된 이동 전화의 많은 구성요소를 공통적으로 포함하고 있다. 특히, 이동 전화는 통화 기능, (운영 시스템(OS) 서비스를 포함하는) 애플리케이션 기능, 무선(R.F.) 통신 서비스, 파워 조절을 담당하는 서브시스템을 포함한다. 이들 공통 구성요소의 동작은 당업자에게 잘 알려져 있을 것이다. 이들 서브시스템에 대해서는, 본 발명의 이해를 위해서 그들의 구조 또는 동작의 이해가 요구되는 경우를 제외하고는, 도시하거나 설명하지 않는다.
도 2는 이동 전화(200)를 나타낸다. 이동 전화(200)는 도 2에 개략적으로 도시한 메모리(201)를 포함한다. 메모리는 3개의 개별 메모리 구성요소를 포함한다. 이들 구성요소들은 ROM(read only memory)(201a), RAM(random access memory)(201b), 및 사용자 데이터 메모리(201c)이다. ROM(201a)은 OS, GUI(graphical user interface) 및 다른 주요 애플리케이션(other critical applications)을 포함한다. RAM(201b)은 이동 전화의 전원이 꺼질 때에 비워져 있는 휘발성 메모리이다. 이동 전화의 전원이 켜지면, 요청에 따라, 애플리케이션이 RAM(201b)으로 로딩된다. 사용자 데이터 메모리(201c)는 다른 애플리케이션, 애플리케이션 파일, 사용자 데이터 및 사용자 설정(user settings)을 포함한다.
ROM(201a)에 연관되는 전술한 OS도 종래부터 알려진 이동 전화의 OS로 많은 구성요소를 공통으로 하고 있다. 본 발명의 바람직한 실시예에 따른 OS에 대해 도 3을 참조하여 간단하게 설명한다.
도 3은 이동 전화(200)의 ROM(201a)에 저장된 OS(202)의 시스템 모델을 나타낸다. OS(202)는 OS의 기능들을 수행하도록 각각 배치되는 다양한 레이어들을 포함한다. OS(202)는 3개의 주요부, 즉 베이스 섹션(base section), 미들웨어 섹션(middleware section), 애플리케이션 섹션(application section)를 포함한다. 베이스 섹션은 커널 서비스(kernel services)(203) 및 베이스 서비스(204)를 포함한다. 이들 레이어는 이동 전화의 하드웨어 리스소, 및 하드웨어와 OS(202)의 미들웨어간의 통신을 관리한다. 미들웨어는 OS(202) 서비스의 핵심이며, 디바이스 상에서 구동하는 애플리케이션들과 시스템 리소스(베이스 섹션에 의해 관리됨)간의 통신을 제어한다. 이는 4개의 서브섹션(subsections)로 분리된 OS 서비스 레이어(205)로 구성된다. 이들 서브섹션은 범용 OS 서비스부(205a), 통신 서비스부(205b), 멀티미디어 및 그래픽 서비스부(205c) 및 접속 서비스부(205d)이다. 범용 OS 서비스부(205a), 통신 서비스부(205b) 및 접속 서비스부(205d)는 당업계의 당업자에게 공지되어 있는 방식으로 동작한다. 이들 구성의 상세에 대해서는 여기서는 설명하지 않는다. 본 발명의 바람직한 실시예에 따른 멀티미디어 및 그래픽 서비스부(205c)에 대해서는 이하에서 더 상세히 설명한다. OS(202)의 애플리케이션 섹션은 애플리케이션 서비스 레이어(206), UI(user interface) 프레임워크 레이어(207) 및 Java J2ME 레이어(208)를 포함한다. 이들 레이어는 당업자에게 공지되어 있는 방식으로 동작한다.
도 4를 참조하면, 멀티미디어 및 그래픽 서비스부(205c)는 폰트 및 비트맵 서버(FBS; font and bitmap server)(209)와 윈도우 서버(210)를 포함한다. 폰트 및 비트맵 서버(209)는 ROM(201a) 또는 사용자 데이터 메모리(201c) 내의 파일에 저장되어 있는 비트맵으로의 액세스를 관리하는 비트맵 관리 서비스를 제공한다. 폰트 및 비트맵 서버(209)는 메모리(201)에 저장된 모든 비트맵의 레코드를 유지하여, 모든 그래픽 애플리케이션 및 윈도우 서버(209)에 대해 모든 비트맵이 이용될 수 있게 한다. 폰트 및 비트맵 서버(209)의 기능에 대해서는 이하에서 더 상세히 설명한다. 윈도우 서버(210)는 이동 전화(200)의 스크린에 사용자가 시청 가능한 출력(user visible outputs)을 제공한다. 비트맵을 디스플레이할 필요가 있는 경우, 애플리케이션은 관련 비트맵의 위치에 대한 포인터를 윈도우 서버에 제공하여, 비트맵이 디스플레이될 수 있다.
애플리케이션들은, OS 서비스 레이어(205) 또는 애플리케이션 레이어(206)에 근거하는지 간에, 다수의 실행 스레드를 각각 구비한다. 애플리케이션이 구동되면, 비트맵을 액세스하거나 처리하기 위한 명령들을 포함하는 것은 개별 스레드이다. 이하, 이들 스레드는 클라이언트 스레드로 지칭된다. 클라이언트 스레드는 그들 클라이언트 스레드에 의해 참조되는 비트맵의 가상 메모리 어드레스에 대한 권한을 포함한다. 이들 권한은 폰트 및 비트맵 서버(209)에 의해 관리된다. 클라이언트 스레드가 판독 또는 처리를 위해, 비트맵으로의 액세스를 요구하면, 폰트 및 비트맵 서버는 그 액세스를 제어한다. 이동 전화(200)의 스크린에 비트맵을 디스플레이할 때에는, 클라이언트 스레드는 관련 비트맵의 권한을 윈도우 서버(210)에 전달하고, 윈도우 서버가 적절한 비트맵을 디스플레이할 수 있다.
도 5는 OS 구성요소, 애플리케이션, 데이터 및 하드웨어를 포함하는 비트맵 관리 시스템 전체의 구조를 나타낸다. 폰트 및 비트맵 서버(209)는 글로벌 메모리(211)에 이용 가능한 비트맵을 저장한다. 모든 비트맵은 관련 메타데이터를 포함한다. 메타데이터는 파일 크기 및 이미지 해상도와 같은, 비트맵에 대한 정보를 포함하고 있다. 모든 비트맵 메타데이터는 글로벌 메모리(211)와 별개의 개별 메타데이터 메모리(212)에 저장된다. 메타데이터는 또한 비트맵 액세스 제어에 관한 데이터도 포함하고 있다. 후술한 바와 같이, 처리 기능이 호출되면, 비트맵은 새로운 위치로 복제된다. 대부분의 경우, 기존 비트맵이 삭제되지 않는다. 대신에, 기존 비트맵은, 이후에 비트맵에 액세스를 요구하는 어떠한 클라이언트 스레드에게 새로운 비트맵이 생성되어 있음 알리는 더티 플래그(dirty flag)로서 마킹된다. 비트맵 메타데이터의 비트에는 더티 플래그를 위해 비트가 보유된다.
글로벌 메모리(211)에 저장된 비트맵은 복수의 애플리케이션(213)에 의해 액세스 가능하다. 전술한 바와 같이, 애플리케이션 각각은 하나 이상의 클라이언트 스레드를 포함한다. 클라이언트 스레드는, 예컨대 비트맵을 휴대 디바이스의 스크린에 디스플레이하기 위해 비트맵을 판독하거나, 비트맵을 처리하기 위해 비트맵으로의 액세스를 요구할 수 있다. 폰트 및 비트맵 서버(209)는 비트맵 데이터를 처리하기 위해 클라이언트 스레드에 의해 호출될 수 있는 다양한 기능을 포함한다. 이들 기능은 그 중에서도 리사이징 기능 및 압축 기능을 포함하고 있다. 이들 기능들 각각은 비트맵의 크기를 늘리거나 줄이므로, 메모리의 재할당이 필요하다. 폰트 및 비트맵 서버(209)는 전술한 바와 같이, 모든 목적에 있어서 비트맵으로의 액세스를 제어한다.
글로벌 메모리(211)를 위해 보유되는 가상 어드레스 범위는 도 6에 나타낸 바와 같이 2개의 섹션으로 분리되어 있다. 제 1 섹션은 작은 비트맵부(211a)이고, 제 2 섹션은 큰 비트맵부(211b)이다. 대각선 음영 영역은 물리 메모리에 수용되는 가상 페이지이다. 도 6에 도시한 바와 같이, 작은 비트맵부(211a)는 물리 메모리에 수용되고 통상의 단일단 메모리 히프(normal single-ended memory heap)와 동일한 방법으로 성장하고 줄어드는 페이지들의 인접 세트를 포함한다. 큰 비트맵부(211b)는 물리 메모리 비트맵 단위로 페이지를 수용한다. 페이지는 하나의 큰 비트맵에 대한 데이터만을 포함하고, 큰 비트맵이 삭제되면, 이용된 페이지들의 세트는 물리 메모리로부터 제거된다. 큰 비트맵은 정수개의 물리 메모리 페이지들에 할당되기 때문에, 비트맵 크기는 일반적으로 페이지 크기의 정수배로 계산된다. 큰 비트맵의 크기가 정확히 페이지 크기의 정수배가 아닌 경우에 메모리는 낭비된다. 이러한 메모리의 낭비를 줄이기 위해서는, 큰 비트맵이 메모리 페이지 크기보다 상당히 커야 한다. 바람직한 실시예에서는, 큰 비트맵이 페이지의 크기의 4배이다. 따라서, 4KB의 페이지에 대해서, 큰 비트맵은 적어도 16KB이다. 모든 다른 비트맵은 작은 비트맵으로서 취급된다.
디바이스의 전원이 켜지면, 글로벌 메모리 청크(211)에 보유된 가상 어드레스 범위의 크기가 산출된다. 전형적으로, 가상 어드레스 범위는 폰트 및 비트맵 서버(209)에서 이용 가능하게 하는 물리 RAM의 양이 거듭제곱으로 설정된다. 가상 어드레스 범위의 크기는 사전결정된 최대와 사전결정된 최소 사이에서 설정된다. 비트맵 처리의 프로세스에 대해서 지금 도 7을 참조하여 더 상세히 설명한다.
처리 프로세스는 비트맵 리사이징 동작의 측면에서 설명한다. 이 처리는 애플리케이션이 특정 비트맵을 리사이징 및 디스플레이해야 할 때 개시된다. 클라이언트 스레드는 폰트 및 비트맵 서버(209)로부터 리사이징 함수를 호출한다(단계 301). 클라이언트 스레드는 비트맵을 위한 가상 메모리 어드레스 공간에 대한 포인터의 형태인 관련 비트맵에 대한 권한을 포함한다. 이 권한은 폰트 및 비트맵 서버(209)에 호출 프로세서의 일부로서 전달된다. 그 후, 폰트 및 비트맵 서버(209)는 관련 비트맵에 대한 권한을 포함하는 리사이징 기능을 리턴한다(단계 302). 리사이징 기능을 수행하기 전에, 폰트 및 비트맵 서버(209)는 더티 플래그의 존재에 관한 비트맵에 관련되는 메타데이터를 체크한다(단계 303). 더티 플래그가 존재하지 않으면, 폰트 및 비트맵 서버(209)는 비트맵을 RAM(201b) 내의 새로운 위치에 복제한다(단계 304). 비트맵이 새로운 위치에 복제되면, 폰트 및 비트맵 서버(209)는 새로운 비트맵에 대한 리사이징 기능을 수행한다(단계 305). 그 후, 폰트 및 비트맵 서버(209)는 기존 비트맵을 처리하기 위한 절차를 수행한다(단계 306). 이들 절차에 대해서는 이하에서 도 8을 참조하여 더 상세히 설명한다. 비트맵 처리 프로세스가 명확히 이해될 수 있도록, 기존 비트맵을 다루는 절차의 기본 관점에 대해 간단하게 설명한다. 비트맵 각각은 그 비트맵과 관련되는 메타데이터에 저장된 참조 카운트(reference count)를 포함한다. 하나 이상의 클라이언트 스레드가 특정 비트맵을 참조하는 경우, 그 비트맵에 대한 참조 카운트는 그 참조 카운트보다 커진다. 이러한 환경 하에서, 폰트 및 비트맵 서버(209)는 비트맵 메타데이터에 더티 플래그를 마킹하고, 기존 비트맵 메타데이터 내의 새로운 비트맵에 대한 권한을 저장한다. 따라서, 다른 클라이언트 스레드가 기존 비트맵을 이후에 액세스하려고 하면, 새로운 비트맵 권한이 새로운 비트맵을 위치시킬 수 있는 클라이언트 스레드로 보내진다.
도 7로 되돌아가서, 리사이징 기능이 새로운 비트맵에 대해서 수행되면, 리사이징 기능을 호출한 클라이언트 스레드는 새로운 비트맵에 대한 권한으로 업데이트된다(단계 307). 그 후, 새로운 비트맵은 클라이언트 스레드가 리사이징 기능을 호출한 애플리케이션에 의해 디스플레이된다. 새로운 비트맵 권한은 클라이언트 스레드에 의해 윈도우 서버로 보내진다(단계 308). 그 후, 새로운 비트맵은 윈도우 서버에 의해 디스플레이된다(단계 309).
단계 303에서, 폰트 및 비트맵 서버(209)가 동작 중인 비트맵의 메타데이터 내에서 더티 플래그를 검출하는 경우, 이는 그 비트맵이 오래되어 새로운 비트맵으로 교체되었음을 나타낸다. 폰트 및 비트맵 서버(209)는 불확실한 비트맵에 관련되는 메타데이터로부터 새로운 비트맵 권한을 검색하고, 리사이징 기능을 호출한 클라이언트 스레드 내의 비트맵 권한을 업데이트한다(단계 309). 폰트 및 비트맵 서버(209)가 새로운 비트맵에 대해 리사이징 기능을 수행할 수 있기 전에, 먼저 새로운 비트맵 자체가 처리될 수 있는지 여부, 및 이에 따라 현재 기존 비트맵인지 여부를 체크해야 한다(단계 310). 이는 더티 플래그에 대해 새로운 비트맵에 관련되는 메타데이터를 체크함으로써 획득된다. 새로운 비트맵의 메타데이터 내에서 더티 플래그가 존재하지 않으면, 프로세스는 단계 304로 진행하고, 단계 304 내지 단계 309와 관련하여 전술한 방식으로 리사이징 기능을 수행할 수 있다. 새로운 비트맵에 관련되는 메타데이터가 더티 플래그를 포함하는 경우, 프로세스는 단계 309로 리턴되어, 폰트 및 비트맵 서버는 리사이징 기능을 호출한 클라이언트 스레드 내의 비트맵 권한을 업데이트한다. 그 관련 메타데이터 내에 더티 플래그가 포함되지 않는 곳에 비트맵에 위치할 때까지 단계 309 및 단계 310이 반복된다.
기존 비트맵을 다루는 절차에 대해 도 8을 참조하여 설명한다. 클라이언트 스레드가 처리 기능을 호출하면 프로세서가 개시된다(단계 401). 클라이언트 스레드가 처리 기능을 호출할 때마다, 폰트 및 비트맵 서버(209)는 새로운 위치에 비트맵 데이터를 복제하고, 메모리 내에서 기존 비트맵을 남겨둔다. 각 비트맵과 관련되는 메타데이터는 참조 카운트를 포함한다. 참조 카운트는 그 특정 비트맵에 대한 권한을 갖는 클라이언트 스레드의 개수를 나타낸다. 비트맵이 복제되면, 폰트 및 비트맵 서버(209)에 의해 수행되는 제 1 단계는 그 특정 비트맵에 대한 메타데이터에 저장된 참조 카운트를 체크하는 것이다(단계 402). 그 특정 비트맵에 대한 참조 카운트가 1이면, 폰트 및 비트맵 서버(209)는 단지 처리 기능을 호출한 클라이언트 스레드만이 그 특정 비트맵을 참조하는 것을 안다. 특정 비트맵에 대한 클라이언트 스레드에 의해 저장된 권한이 도 7을 참조하여 설명한 프로세스에 따라 업데이트되기 때문에, 폰트 및 비트맵 서버(209)는 그 특정 비트맵을 더 이상 클라이언트 스레드가 참조하지 않는다는 것을 알게 되므로 즉시 기존 비트맵을 제거할 수 있다(단계 403).
그 특정 비트맵에 대한 참조 카운트가 1보다 크면, 폰트 및 비트맵 서버(209)는 이후에 다른 클라이언트 스레드가 그 특정 비트맵을 액세스하려는 것을 알 수 있다. 이에 따라, 폰트 및 비트맵 서버(209)는 그 특정 비트맵에 관련된 메트데이터를 더티 플래그로 마킹한다(단계 404). 이에 부가하여, 폰트 및 비트맵 서버는 새롭게 생성된 비트맵에 대한 권한을 기존 비트맵의 메타데이터에 저장한다(단계 405). 그 결과, 이후에 기존 비트맵을 액세스하는 스레드에게 새로운 비트맵이 제공된다. 그 후, 폰트 및 비트맵 서버(209)는 새로운 클라이언트 스레드가 기존 비트맵을 액세스하려고 할 때마다 참조 카운트를 체킹함으로써 기존 비트맵에 대한 참조 카운트를 감시한다(단계 406). 그 비트맵에 대한 참조 카운트가 0이면, 기존 비트맵은 폰트 및 비트맵 서버(209)에 의해 제거된다(단계 407).
본 발명의 몇가지 장점에 대해 도 9를 참조하여 설명한다. 도 9는 글로벌 메모리(211)를 갖는 이동 전화(200)를 개략적으로 도시한다. 글로벌 메모리(211)는 2개의 비트맵 파일(500, 501)을 포함한다. 전술한 바와 같이, 이동 전화는 적어도 하나의 실행 스레드를 각각 포함하는, 메모리에 저장된 복수의 애플리케이션을 포함한다. 도 9에서는 2개의 스레드(502, 503)가 도시된다. 스레드(502)는 이동 전화(200)의 디스플레이 상에 비트맵(500)의 판독 및 디스플레이하는 명령을 포함한다. 스레드(503)는 비트맵(500)을 리사이징하는 명령을 포함하다. 사용시, 스레드(503)는 폰트 및 비트맵 서버(209)로부터 리사이징 기능을 요청한다. 그 후, 폰트 및 비트맵 서버는 비트맵(500)을 메모리(211) 내의 새로운 위치에 복제하고, 새로운 비트맵(504)을 형성한다. 그리고, 폰트 및 비트맵 서버(209)는 새로운 비트맵(504)에 대해 리사이징 기능을 수행한다. 이는, 하나의 스레드에 의해 비트맵이 판독되는 경우, 다른 스레드에 의해 동시에 처리될 수 없음을 의미한다. 도 9에 있어서, 스레드(502)는 비트맵(500)을 판독 및 디스플레이하고 있다. 스레드(503)는 폰트 및 비트맵 서버(209)로부터 리사이징 기능을 호출하고, 폰트 및 비트맵 서버(209)는 그 후 원래의 비트맵(500)을 복제하고, 새로운 비트맵(504)을 생성한다. 이러한 방식으로, 스레드(502)는, 도 9에 도시한 바와 같이, 데이터를 손상할 위험없이 비트맵(500)의 판독 및 디스플레이를 계속 할 수 있다. 이러한 상황은 도 1에 도시한 것과 비교할 수 있다. 도 1은 동일성 제공이 존재하지 않는 종래기술로부터 공지된 이동 전화를 나타낸다. 나타낸 바와 같이, 사용자에게 손상된 이미지가 보여진다. 본 경우에 있어서, 사용자에게 보여지는 이미지는 손상되지 않고, 사용자는 이동 전화의 파일 시스템의 일부를 구성하는 파일의 이용시에 어떠한 문제를 겪지 않는다. 이는 매우 향상된 사용자 경험을 제공한다.
본 발명이 소프트웨어 기반 폰트 및 비트맵 서버로서 설명되었더라도, 폰트 및 비트맵 서버는 하드웨어로서 구현될 수도 있다. 특히, 폰트 및 비트맵 서버는, 마이크로칩으로 구현되고, 이동 전화(200)의 애플리케이션 서브시스템에 위치할 수 있는 물리적 서버의 형태를 취할 수 있다. 그러한 구성은 이동 전화와 같은 리소스 제한 디바이스에서 발생할 수 있는 성능 저하를 겪지 않을 것이다.
본 발명의 비트맵 관리 서비스에 대해 설명하였다. 본 발명은 또한 다른 데이터 타입에 대한 관리 시스템에도 적용된다. 실행 스레드간에 데이터가 공용될 필요가 있는 어떠한 시스템에도 본 발명은 유용할 수 있다. 특히, 데이터가, 그 데이터를 참조하는 모든 스레드에서 이용 가능해야 하는 경우, 및 어떤 스레드 동작이 데이터를 액세스 불가능하게 하는 경우에, 본 발명은 특히 유용하다.
메모리에 로딩되는 비트맵에 대해 판독 동작 및 처리 동작이 수행됨을 당업자라면 알 수 있을 것이다. 즉, 컴퓨팅 디바이스가 작동하는 동안에, RAM에 로딩되어 있는 로우 비트맵 데이터(raw bitmap data)에 대해 그 동작이 수행된다. 그 동작이 수행되기 전에, 임시 메모리 저장 장치로 영구적으로 저장될 수 있는 파일로부터 비트맵 데이터가 로딩된다. 따라서 본 발명은 지속적 저장 장치 내의 파일에 저장된 데이터에 대해 동작하지 않는다. 비트맵 데이터는 비트맵 파일 내에 지속적으로, 또는 RAM 내에 임시시적으로 저장될 수 있다. RAM에 저장된 비트맵 데이터는 본 발명에서 데이터부로서 지칭될 수 있다. 본 발명의 메커니즘은 지속적인 저장소에 저장된 파일보다는, RAM에 저장된 데이터부에 대해 동작한다.
본 발명은 부분적으로, 록이 디바이스 리소스에서 너무 부담스럽다는 발상에 근거한 것이다. 본 발명에 대해서 특정 시스템의 맥락에서 설명했지만, 당업자라면 본 발명의 장점을 이용하는 다른 시스템이 사용할 수 있다는 것을 이해할 수 있을 것이다. 특히, 넓은 의미로, 본 발명은 록을 이용하지 않는 메모리에서 동시성을 관리하는 방법을 제공한다. 전술한 종래 시스템은 동시성을 관리하기 위해 록을 이용한다. 사실, 종래기술은 록이 스레드를 재-스케줄링하므로 동시성을 허용하지 않기 때문에, 스레드가 실행될 수 있기 전에 이전의 스레드가 종료될 때까지 각각 스레드는 대기해야 한다. 본 발명은 실제로 록의 사용을 회피함으로써 동시성을 허용한다.
또한, 본 명세서로부터 전술한 실시예에 대한 다른 변경, 추가 및 변형이 당업자에게 자명할 것이며, 본 발명의 창조적 사고를 포함하는 또 다른 구현예를 제공하는 것이다. 이 역시 첨부한 특허청구범위 내에 포함된다.

Claims (45)

  1. 복수의 데이터부(data portion)를 저장하도록 구성된 메모리를 포함하는 컴퓨팅 디바이스(computing device)로서,
    상기 컴퓨팅 디바이스는 데이터부를 참조하는 복수의 프로세스를 실행하도록 구성되고,
    상기 컴퓨팅 디바이스는 프로세스가 상기 데이터부를 처리(manipulate)하고자 시도할 때 상기 데이터부를 새로운 메모리 위치로 복제하고, 복제본을 처리하며, 사전결정된 조건을 충족하면 원래의 데이터부를 파기하도록 더 구성되는
    컴퓨팅 디바이스.
  2. 제 1 항에 있어서,
    상기 사전결정된 조건은 상기 복수의 프로세스가 상기 원래의 데이터부를 참조하지 않을 때에 충족되는
    컴퓨팅 디바이스.
  3. 제 2 항에 있어서,
    상기 데이터부에 관련된 데이터는, 상기 데이터부를 참조하는 상기 프로세스의 수를 나타내는 참조 카운트(reference count)를 포함하는
    컴퓨팅 디바이스.
  4. 제 3 항에 있어서,
    상기 사전결정된 조건은 상기 참조 카운트가 영(zero)일 때에 충족되는
    컴퓨팅 디바이스.
  5. 제 4 항에 있어서,
    상기 참조 카운트는 상기 데이터부와 관련된 메타데이터에 저장되는
    컴퓨팅 디바이스.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
    상기 컴퓨팅 디바이스가 데이터부를 복제할 때, 상기 원래의 데이터부와 관련된 데이터는 상기 데이터부가 복제되었음을 나타내도록 마크되는(marked)
    컴퓨팅 디바이스.

  7. 제 6 항에 있어서,
    상기 마크는 상기 원래의 데이터부와 관련된 메타데이터 내에 플래그(flag)의 형태로 저장되는
    컴퓨팅 디바이스.
  8. 제 6 항 또는 제 7 항에 있어서,
    상기 컴퓨팅 디바이스가 상기 데이터부를 복제할 때, 상기 컴퓨팅 디바이스가 상기 원래의 데이터부와 관련된 데이터에 상기 복제본의 위치에 대한 포인터를 더 저장하는
    컴퓨팅 디바이스.
  9. 제 8 항에 있어서,
    상기 포인터는 상기 원래의 데이터부와 관련된 메타데이터 내에 저장되는
    컴퓨팅 디바이스.
  10. 제 6 항 내지 제 9 항 중 어느 한 항에 있어서,
    상기 데이터부를 복제하기 전에, 상기 데이터부와 관련된 데이터에 마크가 있는지를 체크하도록 구성되는
    컴퓨팅 디바이스.
  11. 제 10 항에 있어서,
    만약 마크가 존재하면, 상기 데이터부의 상기 복제본의 위치를 확인하고, 제 1 항 내지 제 10 항에 기재된 방식으로 상기 복제본을 프로세싱하도록 더 구성되는
    컴퓨팅 디바이스.
  12. 제 10 항에 있어서,
    만약 마크가 존재하지 않으면, 제 1 항 내지 제 9 항에 기재된 바와 같이 동작하도록 더 구성되는
    컴퓨팅 디바이스.
  13. 복수의 데이터부를 저장하도록 구성된 메모리를 포함하는 컴퓨팅 디바이스로서,
    상기 컴퓨팅 디바이스는 상기 데이터부를 참조하는 복수의 프로세스를 실행하도록 구성되고,
    상기 컴퓨팅 디바이스는 프로세스가 상기 데이터부를 처리하고자 시도할 때 상기 데이터부를 새로운 메모리 위치로 복제하고, 복제본을 처리하며, 원래의 데이터부가 상기 복제본으로 대체되었음을 나타내도록 상기 원래의 데이터부와 관련된 데이터를 마크하도록 더 구성되는
    컴퓨팅 디바이스.
  14. 제 13 항에 있어서,
    상기 마크는 플래그 형태인
    컴퓨팅 디바이스.
  15. 제 13 항 또는 제 14 항에 있어서,
    상기 컴퓨팅 디바이스가 상기 데이터부를 복제할 때, 상기 컴퓨팅 디바이스는 상기 원래의 데이터부와 관련된 데이터에 상기 복제본의 위치에 대한 포인터를 더 저장하는
    컴퓨팅 디바이스.

  16. 제 14 항 또는 제 15 항에 있어서,
    상기 마크 및 상기 포인터는 상기 원래의 데이터부와 관련된 메타데이터 내에 저장되는
    컴퓨팅 디바이스.
  17. 제 15 항 또는 제 16 항에 있어서,
    상기 데이터부를 복제하기 전에, 상기 데이터부와 관련된 데이터에 마크가 있는지를 체크하도록 더 구성되는
    컴퓨팅 디바이스.
  18. 제 17 항에 있어서,
    만약 마크가 존재하면, 상기 데이터부의 상기 복제본의 위치를 확인하고, 제 13 항 내지 제 17 항에 기재된 방식으로 상기 복제본을 프로세싱하도록 더 구성되는
    컴퓨팅 디바이스.

  19. 제 17 항에 있어서,
    만약 마크가 존재하지 않으면, 제 13 항 내지 제 16 항에 기재된 바와 같이 동작하도록 더 구성되는
    컴퓨팅 디바이스.
  20. 제 13 항 내지 제 19 항 중 어느 한 항에 있어서,
    상기 데이터부의 복제본이 만들어지면, 상기 복제본을 처리하도록 더 구성되는
    컴퓨팅 디바이스.
  21. 제 20 항에 있어서,
    상기 사전결정된 조건은 상기 복수의 프로세스가 상기 원래의 데이터부를 참조하지 않을 때에 충족되는
    컴퓨팅 디바이스.
  22. 제 21 항에 있어서,
    상기 데이터부는 상기 데이터부를 참조하는 상기 프로세스의 수를 나타내는 참조 카운트를 포함하고, 상기 사전결정된 조건은 상기 참조 카운트가 영일 때 충족되며, 상기 참조 카운트는 상기 데이터부와 관련된 메타데이터 내에 저장되는
    컴퓨팅 디바이스.
  23. 제 1 항 내지 제 22 항 중 어느 한 항에 있어서,
    상기 컴퓨팅 디바이스는 이동 전화인
    컴퓨팅 디바이스.
  24. 제 1 항 내지 제 23 항 중 어느 한 항에 있어서,
    상기 데이터부는 비트맵인
    컴퓨팅 디바이스.
  25. 제 1 항 내지 제 24 항 중 어느 한 항에 있어서,
    상기 메모리는 휘발성 메모리인
    컴퓨팅 디바이스.
  26. 컴퓨팅 디바이스 메모리에서 데이터 액세스를 관리하는 방법으로서,
    상기 메모리는 복수의 데이터부를 저장하도록 구성되고, 상기 컴퓨팅 디바이스는 데이터부를 참조하는 복수의 프로세스를 실행하도록 구성되며,
    프로세스가 상기 데이터부를 처리하고자 시도할 때 상기 데이터부의 복제본을 만들고, 상기 복제본을 처리하며, 사전결정된 조건이 충족되면 원래의 데이터부를 제거하는 단계를 포함하는
    데이터 액세스 관리 방법.
  27. 제 26 항에 있어서,
    상기 프로세스에 의해 상기 데이터부의 참조 회수를 카운팅하는 단계를 더 포함하며, 상기 사전결정된 조건은 상기 참조 카운트가 0일 때에 충족되는
    데이터 액세스 관리 방법.
  28. 제 26 항 또는 제 27 항에 있어서,
    상기 데이터부가 복제되었음을 나타내기 위해 상기 데이터부와 관련된 데이터에 마크하는 단계를 더 포함하는
    데이터 액세스 관리 방법.
  29. 제 28 항에 있어서,
    상기 복제본의 위치에 대한 포인터를 상기 원래의 데이터부와 관련된 상기 데이터에 저장하는 단계를 더 포함하는
    데이터 액세스 관리 방법.
  30. 제 28 항 또는 제 29 항에 있어서,
    상기 데이터부를 복제하기 전에, 상기 데이터부와 관련된 상기 데이터에 마크가 있는지를 체크하는 단계를 더 포함하는
    데이터 액세스 관리 방법.
  31. 제 30 항에 있어서,
    만약 마크가 존재하면, 상기 데이터부의 상기 복제본의 위치를 확인하고, 상기 복제본과 관련하여 제 24 항 내지 제 28 항에 정의된 상기 단계들을 실행하는 단계를 더 포함하는
    데이터 액세스 관리 방법.

  32. 제 30 항에 있어서,
    만약 마크가 존재하지 않으면, 상기 복제본을 처리하는 단계를 더 포함하는
    데이터 액세스 관리 방법.
  33. 컴퓨팅 디바이스 메모리에서 파일 액세스를 관리하는 방법으로서,
    상기 메모리는 복수의 데이터부를 저장하도록 구성되고, 상기 컴퓨팅 디바이스는 데이터부를 참조하는 복수의 프로세스를 실행하도록 구성되며,
    프로세스가 데이터부를 처리하고자 시도할 때 상기 데이터부의 복제본을 만들고, 상기 복제본을 처리하며, 상기 원래의 데이터부가 상기 복제본으로 대체되었음을 나타내도록 상기 원래의 데이터부와 관련된 데이터를 마크하는 단계를 포함하는
    파일 액세스 관리 방법.
  34. 제 33 항에 있어서,
    상기 복제본의 위치에 대한 포인터를, 상기 원래의 데이터부와 관련된 데이터에 저장하는 단계를 더 포함하는
    파일 액세스 관리 방법.
  35. 제 33 항 또는 제 34 항에 있어서,
    상기 데이터부를 복제하기 전에, 상기 데이터부와 관련된 상기 데이터에 마크가 있는지를 체크하는 단계를 더 포함하는
    파일 액세스 관리 방법.
  36. 제 35 항에 있어서,
    만약 마크가 존재하면, 상기 데이터부의 상기 복제본의 위치를 확인하는 단계를 더 포함하는
    파일 액세스 관리 방법.
  37. 제 36 항에 있어서,
    만약 마크가 존재하면, 상기 복제본과 관련하여 제 33 항 내지 제 36 항에 정의된 단계들을 실행하는 단계를 더 포함하는
    파일 액세스 관리 방법.
  38. 제 33 항 내지 제 37 항 중 어느 한 항에 있어서,
    만약 마크가 존재하지 않으면, 상기 복제본을 처리하는 단계를 더 포함하는
    파일 액세스 관리 방법.
  39. 제 33 항 내지 제 38 항 중 어느 한 항에 있어서,
    사전결정된 조건이 충족되면 상기 원래의 데이터부를 파기하는 단계를 더 포함하는
    파일 액세스 관리 방법.
  40. 제 39 항에 있어서,
    상기 사전결정된 조건은 상기 복수의 프로세스가 상기 원래의 데이터부를 참조하지 않을 때에 충족되는
    파일 액세스 관리 방법.
  41. 컴퓨팅 디바이스로서,
    복수의 데이터부 및 상기 복수의 데이터부를 액세스 또는 처리하도록 각각 구성되는 복수의 애플리케이션을 저장하는 메모리와,
    사용자가 상기 복수의 애플리케이션을 제어하게 할 수 있도록 구성된 사용자 입력부와,
    상기 복수의 애플리케이션의 가시 출력(viewable output)을 디스플레이하도록 구성된 디스플레이와,
    상기 애플리케이션에 의한 상기 데이터부로의 액세스를 제어하도록 구성된 데이터 관리 서버를 포함하되,
    상기 데이터부를 처리하는 상기 애플리케이션에 의한 요청은 상기 데이터 관리 서버를 통해 라우팅되고, 상기 서버는 처리 요청을 수신함에 따라 관련 데이터부를 복제하고, 복제본에 대한 상기 처리 요청을 수행하도록 구성되는
    컴퓨팅 디바이스.
  42. 컴퓨팅 디바이스에 의해 실행될 때에, 상기 디바이스가 제 26 항 내지 제 40 항 중 어느 한 항에 기재된 방법에 따라 구동하게 하도록 구성된 컴퓨터 프로그램 또는 컴퓨터 프로그램의 모음(suite).
  43. 컴퓨팅 디바이스가 제 26 항 내지 제 40 항 중 어느 한 항에서 청구된 방법에 따라 동작하게 하는 운영 시스템.

  44. 제 43 항의 운영 시스템을 포함하는 컴퓨터 판독가능한 매체.
  45. 실질적으로 본 명세서에 기술되었으며 도 2 내지 7에 도시된 바와 같은 컴퓨팅 디바이스.
KR1020107001910A 2007-06-28 2008-06-20 컴퓨팅 디바이스, 데이터 액세스 관리 방법 및 파일 액세스 관리 방법 KR20110010687A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0712648A GB2450538A (en) 2007-06-28 2007-06-28 Copying computer files when manipulation is requested
GB0712648.5 2007-06-28
PCT/GB2008/002177 WO2009001080A2 (en) 2007-06-28 2008-06-20 File access management system

Publications (1)

Publication Number Publication Date
KR20110010687A true KR20110010687A (ko) 2011-02-07

Family

ID=38420946

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107001910A KR20110010687A (ko) 2007-06-28 2008-06-20 컴퓨팅 디바이스, 데이터 액세스 관리 방법 및 파일 액세스 관리 방법

Country Status (6)

Country Link
US (1) US20100287351A1 (ko)
EP (1) EP2171580A2 (ko)
KR (1) KR20110010687A (ko)
CN (1) CN101755255A (ko)
GB (2) GB2450538A (ko)
WO (1) WO2009001080A2 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996826B2 (en) * 2009-04-28 2015-03-31 Symantec Corporation Techniques for system recovery using change tracking
US9424125B2 (en) * 2013-01-16 2016-08-23 Google Inc. Consistent, disk-backed arrays
CN103399751A (zh) * 2013-08-08 2013-11-20 百度在线网络技术(北京)有限公司 文件分享方法、系统和终端
US9147070B2 (en) * 2013-08-12 2015-09-29 Cisco Technology, Inc. Binary translation and randomization system for application security
CN105471956A (zh) * 2014-09-11 2016-04-06 中兴通讯股份有限公司 社交网络用户安全控制方法、社交应用工具及终端
US10311153B2 (en) * 2014-11-28 2019-06-04 Nasuni Corporation Versioned file system with global lock
CN105357009B (zh) * 2015-09-29 2018-07-24 莱诺斯科技(北京)股份有限公司 一种涉密数据的传输回收系统
CN109840208B (zh) * 2019-01-07 2022-08-05 烽火通信科技股份有限公司 一种检测文件异常操作的方法及系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5849945B2 (ja) * 1977-12-29 1983-11-08 富士通株式会社 バツフア合せ方式
CA1323448C (en) * 1989-02-24 1993-10-19 Terrence C. Miller Method and apparatus for translucent file system
US5218698A (en) * 1991-11-22 1993-06-08 Aerojet-General Corporation Garbage collection system for a symbolic digital processor
US5276878A (en) * 1992-10-07 1994-01-04 International Business Machines Corporation Method and system for task memory management in a multi-tasking data processing system
US5706510A (en) * 1996-03-15 1998-01-06 Hewlett-Packard Company Zymbolic history management system
JPH1031604A (ja) * 1996-07-15 1998-02-03 Meidensha Corp 共有メモリシステム並びにデータベースシステム
US6049807A (en) * 1997-09-03 2000-04-11 International Business Machines Corporation Technique for maintaining object integrity during modification of a persistent store of objects
US6122685A (en) * 1998-05-06 2000-09-19 Emc Corporation System for improving the performance of a disk storage device by reconfiguring a logical volume of data in response to the type of operations being performed
US6871203B1 (en) * 1999-10-29 2005-03-22 International Business Machines Corporation Data processing system
US7072916B1 (en) * 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
US7222132B2 (en) * 2001-03-20 2007-05-22 Swsoft Holdings, Ltd. Common template file system tree for virtual environments and virtual servers
US7072915B2 (en) * 2002-01-22 2006-07-04 International Business Machines Corporation Copy method supplementing outboard data copy with previously instituted copy-on-write logical snapshot to create duplicate consistent with source data as of designated time
EP1642293A1 (en) * 2003-06-11 2006-04-05 Matsushita Electric Industrial Co., Ltd. Recording device, program and integrated circuit
US7136974B2 (en) * 2003-06-19 2006-11-14 Pillar Data Systems, Inc. Systems and methods of data migration in snapshot operations
US7472254B2 (en) * 2003-10-10 2008-12-30 Iora, Ltd. Systems and methods for modifying a set of data objects
JP5105713B2 (ja) * 2005-03-30 2012-12-26 日本電気株式会社 情報処理装置
US7882064B2 (en) * 2006-07-06 2011-02-01 Emc Corporation File system replication

Also Published As

Publication number Publication date
GB0712648D0 (en) 2007-08-08
CN101755255A (zh) 2010-06-23
WO2009001080A2 (en) 2008-12-31
GB0811410D0 (en) 2008-07-30
GB2450538A (en) 2008-12-31
EP2171580A2 (en) 2010-04-07
US20100287351A1 (en) 2010-11-11
WO2009001080A3 (en) 2009-03-05
GB2450615A (en) 2008-12-31

Similar Documents

Publication Publication Date Title
KR20110010687A (ko) 컴퓨팅 디바이스, 데이터 액세스 관리 방법 및 파일 액세스 관리 방법
US8676851B1 (en) Executing transactions in distributed storage systems
US9164702B1 (en) Single-sided distributed cache system
US7882198B2 (en) Shared JAVA JAR files
US9058122B1 (en) Controlling access in a single-sided distributed storage system
US8862561B1 (en) Detecting read/write conflicts
CA2426619A1 (en) Defensive heap memory management
GB2498626A (en) Optimising the storage allocation in a virtual desktop environment
US20140351547A1 (en) Linked list for lock-free memory allocation
US8898124B2 (en) Controlling database trigger execution with trigger return data
US10242042B2 (en) Copy-on-write update-triggered consistency
US7552240B2 (en) Method for user space operations for direct I/O between an application instance and an I/O adapter
US8417733B2 (en) Dynamic atomic bitsets
US8898413B2 (en) Point-in-time copying of virtual storage
US20100115203A1 (en) Mutable object caching
US8112597B2 (en) Critical memory
US10515066B2 (en) Atomic updates of versioned data structures
US20080320459A1 (en) Method And Systems For Providing Concurrency Control For Addressable Entities
US8312053B2 (en) Dynamic atomic arrays
US8892838B2 (en) Point-in-time copying of virtual storage and point-in-time dumping
US20110099347A1 (en) Managing allocation and deallocation of storage for data objects
US10489374B2 (en) In-place updates with concurrent reads in a decomposed state
US11809881B2 (en) Target process injection prior to execution of marker libraries
CN101055543A (zh) 用于访问另一个进程的进程本地存储装置的方法和设备
WO2001013229A2 (en) System and method for data exchange

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E601 Decision to refuse application