KR20080047444A - 확장 가능한 메타 데이터 - Google Patents

확장 가능한 메타 데이터 Download PDF

Info

Publication number
KR20080047444A
KR20080047444A KR1020087008682A KR20087008682A KR20080047444A KR 20080047444 A KR20080047444 A KR 20080047444A KR 1020087008682 A KR1020087008682 A KR 1020087008682A KR 20087008682 A KR20087008682 A KR 20087008682A KR 20080047444 A KR20080047444 A KR 20080047444A
Authority
KR
South Korea
Prior art keywords
metadata
data
execution environment
code
schema
Prior art date
Application number
KR1020087008682A
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 KR20080047444A publication Critical patent/KR20080047444A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

컴파일된 코드의 메타 데이터는 스키마 표준에서 벗어날 수 있도록 메타 데이터를 위한 스키마에 대한 상응하는 설명을 가질 수 있다.
메타 데이터(meta-data), 런타임 실행 환경(runtime execution environment), 데이터 구조(data structure), 관리 코드(managed code)

Description

확장 가능한 메타 데이터{EXTENSIBLE META-DATA}
런타임 실행 환경은 응용프로그램 프로그래밍 플랫폼 및 응용프로그램 실행 플랫폼 중 적어도 하나로서 동작할 수 있다. 응용프로그램 프로그래밍 플랫폼으로서의 런타임 실행 환경은 복수의 컴퓨팅 언어 중 하나로 작성된 대상 응용프로그램을, 예를 들어 중간 언어(intermediate language) 또는 바이트 코드 등으로 컴파일할 수 있다.
메타 데이터 스트림은 관리 실행 환경(managed execution environment)에서 컴파일된 응용프로그램에 상응하는 메타 데이터를 위한 스키마(schema)에 대한 설명을 제공하기 위하여, 하나 이상의 데이터 구성(들)을 포함할 수 있다.
본 명세서는 이하의 도면을 참조한다.
도 1은 확장 가능한 메타 데이터와 관련된 예시적인 기술을 구현하는, 네트워크 상에서 통신하는 장치를 도시하는 도면.
도 2는 확장 가능한 메타 데이터에 관한 예시적인 기술을 구현하기 위한 실행 환경의 예를 도시하는 도면.
도 3은 관리 코드에 상응하는 확장 가능한 메타 데이터의 예를 도시하는 도 면.
도 4는 적어도 하나의 확장 가능한 메타 데이터 구현에 대한 예시적인 데이터 흐름을 도시하는 도면.
확장 가능한 메타 데이터 및 관련 기술들을 이하에서 기술한다.
이 명세서에서 확장 가능한 메타 데이터는, 관리 실행 환경 또는 비관리 실행 환경 중 하나에서 컴파일된 응용프로그램에 상응하는 메타 데이터에 관한 것일 수 있다. 좀 더 구체적으로, 이 명세서에서 설명한 구현예에 따르면, 응용프로그램들 중 적어도 일부에 상응하는 메타 데이터는 실행 환경 내에서 실행에 나쁜 영향을 주지 않고도 확장 가능해질 수 있다. 그러한 응용프로그램은 네트워크 환경 내의 하나 이상의 장치 또는 노드에 구현된 실행 플랫폼에서 실행되기 위하여 컴파일될 수 있다.
이 명세서에서 "어셈블리(Assembly)"는 배치 단위, 또는 좀 더 구체적으로 변형 가능한(versionable) 코드 배치 단위를 말한다.
이 명세서에서 "메타 데이터(Meta-data)"는 다른 데이터, 특히 컴파일된 코드를 설명하는 데이터를 지칭한다. 예를 들어 메타 데이터는 하나 이상의 데이터 구성요소 또는 데이터 설명 항목에 대하여 상세한 정보를 제공할 수 있다.
이 명세서에서 "스키마(Schema)"는 데이터 구조를 정의하는 데이터뿐만 아니라, 구조 내의 각각의 데이터 구성요소에 포함될 수 있는 컨텐츠의 타입을 정의하는 데이터를 나타낸다.
도 1은 확장 가능한 메타 데이터에 관한 예시적인 기술이 구현될 수 있는 예시적인 네트워크 환경(100)을 도시하는데, 다만 그러한 예시적인 기술이 단지 네트워크 환경에만 한정되는 것은 결코 아니다. 이 명세서 개시된 바와 같이, 그러한 기술은 확장 가능한 메타 데이터(120)와 관련된 도구, 방법론, 및 시스템을 포함하며, 다만 이에 한정되는 것은 아니다. 좀 더 구체적으로, 메타 데이터가 확장 가능한지 여부에 관계없이, 메타 데이터를 포멧(format), 판독, 또는 분석하기 위하여 도구, 방법론, 및 시스템이 구현될 수 있다.
도 1에서, 클라이언트 장치(105), 서버 장치(110), 및 "기타" 장치(115)는 네트워크(125)를 통해 서로 통신 가능하게 연결될 수 있다; 또한, 클라이언트 장치(105), 서버 장치(110), 및 "기타" 장치(115) 중 적어도 하나는 전술한 기술을 수용할 수 있다.
클라이언트 장치(105)는 알려진 여러 가지 컴퓨팅 장치 중 적어도 하나를 나타낼 수 있는데, 이 같이 알려진 컴퓨팅 장치는 응용프로그램, 프로그램, 함수 또는 프로그래밍 및 실행 가능한 기타 코드 집합과 관련된 메타 데이터를 형식화, 판독, 또는 분석하는 기능의 데스크탑 퍼스널 컴퓨터(PC), 워크 스테이션, 메인 프레임 컴퓨터, 인터넷 장치, 또는 셋탑 박스 등을 포함한다. 또한 클라이언트 장치(105)는 유선 및/또는 무선 링크로 네트워크(125)와 결합될 수 있는, 이동 전화(즉, 셀룰러 폰), PDA, 랩탑 컴퓨터 등을 포함하는 임의의 장치 중 적어도 하나를 나타낼 수 있다. 또한, 클라이언트 장치(105)는 여러 수량 및/또는 여러 조합의 전술한 클라이언트 장치를 나타낼 수 있다. 또한 "기타" 장치(115)는 전술한 클라 이언트 장치(105)에 대한 예들 중 어느 것에 의해서도 구현될 수 있다.
서버 장치(110)는 적어도 하나의 확장 가능한 메타 데이터(120) 구현에 따라, 클라이언트 장치(105) 또는 "기타" 장치(115)에게 다양한 데이터 및/또는 기능 중 어떤 것을 제공할 수 있는 임의의 장치를 나타낼 수 있다. 데이터는 공개적으로 이용 가능한 것일 수 있고, 또는 예를 들어 특정 사용자에게로 제한되거나 적절한 구독료 또는 라이센스료를 지불한 경우만으로 제한된 것일 수 있다. 서버 장치(110)는 네트워크 서버, 응용프로그램 서버, 고밀도 서버(blade server), 또는 이들의 임의 조합 중 적어도 하나일 수 있다. 일반적으로, 서버 장치(110)는 컨텐츠 소스일 수 있는 임의의 장치를 나타낼 수 있고, 클라이언트 장치(105)는 네트워크(125)를 통해서, 또는 오프라인 방식으로 그러한 컨텐츠를 수신하는 임의의 장치를 나타낼 수 있다. 하지만, 이 명세서에서 개시한 구현예에 따르면, 클라이언트 장치(105) 및 서버 장치(110)는 네트워크 환경(100) 내에서 서로 송신 노드 또는 수신 노드로서 바뀔 수 있다. 또한 "기타" 장치는 전술한 예시적인 서버 장치(110) 중 임의의 것에 의해 구현될 수 있다.
"기타" 장치(115)는 이 명세서에 개시된 하나 이상의 예시적인 기술에 따라 확장 가능한 메타 데이터(120)를 구현할 수 있는 또 다른 임의의 장치를 나타낼 수 있다. 즉, "기타" 장치(115)는 응용프로그램, 프로그램, 함수 또는 프로그래밍 및 실행 가능한 기타 코드 집합과 관련된 메타 데이터를, 적어도 포멧, 판독, 분석하는 기능의 임의의 소프트웨어 가능 컴퓨팅 장치 또는 소프트웨어 가능 처리 장치를 나타낼 수 있다. 따라서, "기타" 장치(115)는 운영 체제, 해석기(interpreter), 변환기(converter), 컴파일러, 또는 이들 위에 구현된 런타임 실행 환경 중 적어도 하나를 구비한 컴퓨팅 장치 또는 처리 장치일 수 있다. 이러한 예들은 발명의 범위를 한정하고자 의도된 것이 아니므로, 한정적인 의미로 해석되어서는 안된다.
네트워크(125)는 유선 및/또는 무선 네트워크를 포함할 수 있는 다양한 종래의 네트워크 접속 형태(network topology) 및 네트워크 유형 중 어느 것이라도 나타낼 수 있다. 또한 네트워크(125)는 공용 및/또는 전용 프로토콜을 포함하는 다양한 종래의 네트워크 프로토콜 중 임의의 것을 이용할 수 있다. 네트워크(125)는, 예를 들어 인터넷뿐만 아니라, 802.11 시스템 같은 하나 이상의 근거리 통신망("LAN"이라고도 지칭됨), 또는 좀 더 큰 규모로 원거리 통신망(즉, "WAN"), 또는 블루투스 같은 개인 영역 네트워크("PAN")의 적어도 일부를 포함할 수 있다.
장치(105), 장치(110), 및 장치(115) 중 적어도 하나 안의 컴퓨터 아키텍처는 하드웨어 및 소프트웨어의 면에서 통상적으로 정의되는 컴퓨팅 플랫폼을 포함한다. 컴퓨팅 장치를 위한 소프트웨어는 기능에 따라 여러 그룹으로 분류될 수 있는데, 이는 하드웨어 추상화 계층(선택적으로 "HAL"이라고도 지칭됨), 운영 체제("OS"라고도 지칭됨), 및 응용프로그램을 포함한다.
런타임 실행 환경은 OS와 응용프로그램 사이에 존재할 수 있으며, 임의의 하나 이상의 처리 장치(105, 110, 및 115) 상에서 응용프로그램이 특정한 작업을 실행할 수 있는 공간의 역할을 한다. 좀 더 구체적으로, 런타임 실행 환경은 서버, 데스크탑 컴퓨터, 랩탑 컴퓨터, 및 이동 처리 장치/이동 통신 장치 등과 같은 처리 장치 상에서 동작하는 응용프로그램을 위한 서비스 및 추상화 계층을 제공하고, 또 한 응용프로그램에게 메모리 관리 및 메모리 구성 기능을 제공함으로써, 서버, 데스크탑 컴퓨터, 랩탑 컴퓨터, 및 이동 처리 장치/이동 통신 장치를 포함하는, 점점 범위가 확대되고 있는 처리 장치(105, 110, 및 115) 상의 응용프로그램 실행 신뢰도를 향상시킬 수 있다.
런타임 실행 환경은 응용프로그램 프로그래밍 플랫폼 및 응용프로그램 실행 플랫폼 중 적어도 하나로서 동작할 수 있다.
응용프로그램 프로그래밍 플랫폼으로서의 런타임 실행 환경은 다양한 컴퓨팅 언어 중 한가지로 작성된 대상 응용프로그램을, 예를 들어 중간 언어(이하 "IL") 또는 바이트 코드 등으로 컴파일할 수 있다. IL은 일반적으로 플랫폼 독립적이며, 중앙 처리 장치(이하 "CPU")가 IL을 실행하는데, 여기서 IL은 여러 CPU 기계어들보다 고차원의 언어이다.
응용프로그램 실행 플랫폼으로서의 런타임 실행 환경은 컴파일된 IL을 네이티브 머신 명령어(native machine instruction)로 해석할 수 있다. 런타임 실행 환경은 해석기 또는 컴파일러(예를 들어 "저스트-인-타임" 컴파일러, 즉 "JIT" 컴파일러)를 이용하여 이러한 명령어를 실행한다. 이와 무관하게, 그 후 네이티브 머신 명령어는 CPU에 의해 직접 실행될 수 있다. IL이 CPU 독립적이므로, 해당 CPU 플랫폼에서 실행중인 OS가 적절한 런타임 실행 환경을 제공하는 한, IL은 어떠한 CPU 플랫폼에서도 실행될 수 있다.
확장 가능한 메타 데이터(120)에 관한 기술이 구현될 수 있는 런타임 환경의 예에는 다음과 같은 것들이 포함된다: 비쥬얼 베이직 런타임 환경; 예를 들어 자바 ® 루틴을 실행하는 데 사용되는 자바® 버츄얼 머신 런타임 환경; 호출 루틴(calling routine)을 실행하기 전에 마이크로소프트 닷넷™ 응용프로그램을 기계어로 컴파일하기 위한 공통 언어 런타임(CLR). 하지만, 이 런타임 환경 목록은 단지 예들을 제시하는 것이다. 또한, 이 명세서에 개시된 예시적인 기술들은 반드시 이러한 관리 실행 환경만으로 한정되지 않는다. 좀 더 구체적으로, 구현예는 관리 실행 환경에 한정되지 않고, 하나 이상의 예들이 테스트 환경 및/또는 비관리 실행 환경 내에서 구현될 수 있다.
IL로 컴파일된 응용프로그램은 "관리 코드"라고 지칭될 수 있고, 따라서 런타임 실행 환경은 "관리 실행 환경"이라고 지칭될 수 있다. 실행에 있어서 런타임 실행 환경을 이용하지 않는 코드는 네이티브 코드 응용프로그램이라고도 지칭됨을 주의해야 한다.
도 2는 확장 가능한 메타 데이터(120; 도 1 참조)에 관한 기술이 구현될 수 있는 예시적인 런타임 실행 환경(200)을 도시한다.
적어도 하나의 구현예에 따르면, 런타임 실행 환경(200)은 컴퓨팅 장치 플랫폼을 위한 관리 코드의 실행을 용이하게 할 수 있다. 관리 코드는 응용프로그램 개발 기술의 핵심 집합의 일부로 간주될 수 있고, 또한 컴퓨팅 장치 플랫폼에게 상응하는 서비스를 제공하기 위하여 런타임 실행 환경(200) 내에서의 실행을 위하여 컴파일된 응용프로그램, 프로그램, 함수 또는 프로그래밍 및 실행 가능한 기타 코드 집합으로 고려될 수 도 있다. 또한, 런타임 실행 환경(200)은 해석 단계의 관 리 코드를, 프로세서에 의해 프록싱(proxy)되고 실행될 수 있는 명령어로 번역할 수 있다. 이와 달리, 관리 코드는 해석기 또는 컴파일러, 또는 인스톨 시에 네이티브 이미지로서 실행되도록 설계된 일 형태의 컴파일러 통해 실행될 수 있다. 또한 런타임 실행 환경(200)을 위한 프레임워크는 클래스 라이브러리를 제공하는데, 클래스 라이브러리는 관리 응용프로그램을 위한 소프트웨어 조립 블록(software building block)으로 볼 수 있다.
또한, 적어도 일부의 관리 코드에 상응하는 메타 데이터는 결국 관리 코드가 되는 컴파일된 어셈블리의 일부에 포함되거나, 또는 관리 코드와 별도로 런타임 실행 환경(200)에 수신될 수 있다. 예를 들어, 메타 데이터는 별도의 어셈블리의 일부로서 컴파일되거나, 또는 런타임 실행 환경(200)에 오프라인 방식으로 수신될 수도 있다. 이와 상관없이, 메타 데이터는 하나 이상의 관리 코드 구성요소에 대한 상세한 정보를 제공하기 위한 목적으로 수신될 수 있다.
런타임 실행 환경(200)은, 그것이 제공하지 않는다면 커널로부터나 기대할 수 있는 일부 기능을 적어도 제공할 수 있는데, 이러한 기능은 장치(105), 장치(110), 및 장치(115)(도 1 참조) 중 특정 장치에 대한 자원 제약 사항에 따라, 컴퓨팅 장치 플랫폼에서 부족할 수도 있고 그렇지 않을 수도 있다. 런타임 실행 환경(200)의 예 중에서 적어도 하나는 다음과 같은 것들을 구현할 수 있다: 입/출력(이하 "I/O") 루틴 관리, 컴파일, 메모리 관리, 및 서비스 루틴 관리. 따라서 런타임 실행 환경(200)은 I/O 컴포넌트(205), 컴파일러(210), 메모리 관리 컴포넌트(215), 서비스 루틴 관리자(220), 및 실행 컴포넌트(225)를 포함할 수 있다. 이 하에서 좀 더 자세히 설명할 이들 컴포넌트는 예로서 제시된 것으로, 런타임 실행 환경(200)의 임의의 특정 구현에 한정되지 않으며, 그와 같이 추정해서도 안된다. 따라서, 컴포넌트는 다양한 조합과 구성의 런타임 실행 환경(200)의 예들 내에서 구현될 수 있다.
런타임 실행 환경(200)의 I/O 컴포넌트(205)는 컴퓨팅 장치 플랫폼과 관련된 물리적(즉, 프로세서 및 주변장치) 및 논리적(드라이버, 또는 특정 방법으로 분할된 물리적 자원) 자원으로의 동기적 또는 비동기적 액세스 중 적어도 하나를 제공할 수 있다. 좀 더 구체적으로, I/O 컴포넌트(205)는 런타임 실행 환경(200)에 견고한 시스템 처리량을 제공할 수 있으며, 또한 I/O 요청이 시작된 곳으로부터의 코드 성능을 능률화할 수 있다.
컴파일러(210)는 컴파일된 IL을 런타임 실행 환경(200)에서 실행하기 위해 네이티브 머신 명령어로 해석할 수 있는, 런타임 실행 환경(200) 내의 모듈을 나타낼 수 있다. 또한, 확장 가능한 메타 데이터(120)에 관한 기술의 적어도 하나의 선택적인 구현에 따라, 컴파일러(210)는 응용프로그램, 프로그램, 함수, 또는 프로그래밍 및 실행 가능한 기타 코드 집합과 관련된 코드 모듈의 동작을 다양한 목적으로 동적으로 분석할 수 있다. 코드 모듈은 런타임 실행 환경(200)에 로딩 될 수도 있고 로딩되지 않을 수도 있다. 코드 모듈이 런타임 실행 환경(200)에 로딩되면, 컴파일러(210)는 이 명세서에 개시된 바와 같이 확장 가능한 메타 데이터를 표현하는 코드 모듈 관련 데이터 엔티티를 판독, 해석, 및/또는 분석할 수 있다. 코드 모듈의 실행 가능 부분에 접근하거나 영향을 미치지 않고서도, 전술한 판독, 해 석, 및 분석을 수행할 수 있으며, 컴파일시, 최초 실행시, 또는 그 이후 실행 경로의 실행 가능 부분을 실행하는 동안에 언제라도 판독, 해석, 및 분석을 수행될 수 있다.
하지만, 확장 가능한 메타 데이터(120)의 구현예 중 적어도 하나는, 컴파일러(210)가 컴파일한 코드를 판독, 해석, 또는 분석할 필요가 없을 수 있다. 오히려, 네이티브 플랫폼 실행 형식이 아닌 IL 형식으로 런타임 실행 환경(200)에 배포되고, 어셈블리, 메소드, 또는 타입 중의 하나로 이미 컴파일된 중간 언어 코드(즉, "IL")에 관한 것으로 확장 가능한 메타 데이터가 판독, 해석, 또는 분석될 수 있다. 이러한 IL(305)의 소스는 장치(105, 110, 및 115) 중 하나의 동일 장치 상에서 또는 별도의 장치 상에서, 비관리 실행 환경 또는 별도로 구현된 런타임 실행 환경 내에 위치할 수 있다. IL이 대응하는 응용프로그램, 프로그램, 메소드, 함수 또는 프로그래밍 및 실행 가능한 기타 코드 집합을 위하여, 소스는 설치 시 또는 설치 전에 IL을 배치할 수 있다.
메모리 관리 컴포넌트(215)는 "가비지 컬렉터"라고 지칭될 수 있는데, 가비지 컬렉터는 가비지 수집을 구현한다. 가비지 수집은, 메모리 힙(memory heap)을 스위핑(sweep) 또는 스캔했을 때, 어떤 객체가 응용프로그램, 프로그램, 함수, 또는 프로그래밍 및 실행 가능한 기타 코드 집합에 의해서 더 이상 사용되지 않는다고 판단될 경우 객체가 자동으로 해제(free; 즉, 반환)되도록 하는, 관리 코드 실행 환경의 견고한 기능으로 간주될 수 있다. 메모리 관리 컴포넌트(215)에 의해 구현되는 그 밖의 기능은 이하를 포함한다: 컴퓨팅 장치 플랫폼 상에서 실행되는 작업들 간에, 하나 이상의 연속된 블록의 휘발성 유한 RAM(즉, 메모리 힙) 저장소 또는 연속된 메모리 블록 집합을 관리; 컴퓨팅 장치 플랫폼 상에서 실행되는 응용프로그램, 프로그램, 함수, 또는 프로그래밍 및 실행 가능한 기타 코드 집합 중 적어도 하나에게 메모리를 할당; 응용프로그램, 프로그램, 함수, 또는 프로그래밍 및 실행 가능한 기타 코드 집합 중 적어도 하나에 의한 요청이 있을 때, 적어도 메모리 일부를 반환; 및 응용프로그램, 프로그램, 함수, 또는 프로그래밍 및 실행 가능한 기타 코드 집합이 다른 응용프로그램, 프로그램, 함수, 또는 프로그래밍 및 실행 가능한 기타 코드 집합에게 할당된 메모리 공간을 함부로 침입하지 못하도록 방지.
서비스 루틴 관리자(220)는 적어도 일부의 응용프로그램 지원 계층으로서 포함되어 컴퓨팅 장치 플랫폼과 관련된 물리적 및 논리적 자원을 위한 서비스 기능을 제공한다. 확장 가능한 메타 데이터(120)에 관한 예시적인 기술(예를 들어, 도구, 방법론, 및 시스템)들은 서비스 루틴 관리자(220)에 의해 관리될 수 있다. 즉, 확장 가능한 메타 데이터(120)에 관련된 기술들은, 이런 기술들의 다양한 선택적인 구현에 따라, 컴파일러(210), 서비스 루틴 관리자(220), 또는 런타임 실행 환경(200)의 기타 몇몇 컴포넌트에 의하여, 단독으로 또는 (위에서 참조된 바와 같이) 함께 결합되어 구현될 수 있다. 예를 들어 서비스 루틴 관리자(220)는, 메타 데이터 스키마를 위한 알려진 표준과의 관계에서, 하나 이상의 코드 모듈과 관련된 메타 데이터 스키마의 변형 또는 편차가 존재하는지 판단할 수 있고, 그렇게 함으로써 확장 가능한 메타 데이터를 판독, 분석 또는 해석할 수 있게 한다. 코드 모 듈의 실행 가능 부분에 접근하거나 영향을 미치지 않고서도, 컴파일시, 최초 실행시, 또는 그 이후 하나 이상의 코드 모듈의 실행 가능 부분을 실행하는 동안에 언제라도 서비스 루틴 관리자(220)의 이러한 기능이 발휘될 수 있다.
실행 컴포넌트(225)는 컴퓨팅 장치 플랫폼을 위한 관리 코드에 포함된 하나 이상의 코드 모듈을 실행할 수 있도록 한다. 좀 더 구체적으로, 확장 가능한 메타 데이터(120)에 관한 기술의 구현과 관련해, 실행 컴포넌트(225)는 런타임 실행 환경(200) 내에서 하나 이상의 코드 모듈과 관련된 메타 데이터 스키마의 변형 또는 편차가 존재하는지 판단하기 위하여 확장 가능한 메타 데이터(120)를 액세스하기 위한 하나 이상의 도구, 시스템, 프로세스를 구현할 수 있는 예시적인 컴포넌트로서 동작할 수 있고, 이로써 확장 가능한 메타 데이터를 판독, 분석 또는 해석할 수 있게 한다.
도 3은 적어도 이 명세서 안에서는 "메타 메타 데이터"라고 지칭되는 데이터를 레버리징(leverage)하여 확장 가능한 메타 데이터(120; 도 1 참조)의 구현예를 도시하기 위한 예제 코드 블록(300)을 나타낸다. 코드 블록(300)의 설명은 도 1의 네트워크 환경과의 관계에서 기술된 장치 및 도 2의 런타임 실행 환경(200)과의 관계에서 기술된 컴포넌트를 참조할 수 있다. 하지만, 이러한 도 1 및 도 2의 참조는 단지 확장 가능한 메타 데이터(120)를 위한 인에이블링 환경을 제시하기 위한 것이며, 어떠한 방법으로도 청구 범위를 제한하지 않는다.
코드 블록(300)은 런타임 실행 환경(200)에서의 실행을 위해 컴파일된, 적어도 일부의 응용프로그램, 프로그램, 함수, 또는 프로그래밍 및 실행 가능한 기타 코드 집합으로 간주될 수 있다. 예를 들어, 객체 데이터 모델에서 블록(300)은 객체(300)로 지칭될 수 있다.
블록(305)은 런타임 실행 환경(200)에서 실행되기 위해 컴파일된 응용프로그램, 프로그램, 함수, 또는 프로그래밍 및 실행 가능한 기타 코드 집합의 실행 가능한 부분으로 간주될 수 있다. 예컨대, 코드 모듈(307, 308, 및 309)을 포함하는 블록(305)은 객체(300)에 상응하는 프로그램 파일 또는 메소드를 나타낼 수 있다. 물론, 도시된 블록(305)의 구성은 단지 예로서 도시된 것이고, 어떠한 방법으로도 다른 대안적인 실시예들을 제한하고자 하는 것이 아니다.
이 예제에 따르면, 데이터 구성(310)이 코드 모듈(307, 308, 및 309) 중 적어도 하나의 데이터 구조 및 기능적 구조를 설명하는 메타 데이터를 포함할 수 있다. 즉, 런타임 실행 환경(200)에서 메타 데이터(310)가 상응하는 하나 이상의 코드 모듈(307, 308, 및 309)을 실행하기 위하여, 데이터 구성(310)은 관련 데이터 구조에 대한 설명을 위해 액세스될 수 있다. 데이터 구조는 타입이라고도 지칭될 수 있으며, 데이터 구조는 메소드, 메소드에서 사용되는 인자(argument), 및 반환 인자의 이름을 포함할 수 있다. 이러한 데이터 구조(즉, 타입)는 예로서 제시된 것이며, 어떠한 방법으로도 제한하고자 하는 것이 아니다.
메타 데이터(310) 스키마는 공개된 표준의 일부로서 알려질 수 있고, 또는 표준화되어 런타임 실행 환경(200)에 빌트인될 수도 있다. 본 구현에 따르면, 스키마는 구성(310) 내에서 메타 데이터 구조를 제약하기 위한 규칙 집합으로 지칭될 수 있고, 예를 들어 표준화된 개수의 테이블, 표준화된 개수의 테이블당 컬럼 수, 하나 이상의 테이블의 표준화된 컬럼 서술자(column descriptor)를 포함할 수 있다.
데이터 구성(315)은 무엇보다, 데이터 구성(310)에 포함된 메타 데이터가 공개된 표준 또는 런타임 실행 환경(200)에 빌트인된 표준에 맞지 않게 컴파일된 경우를 책임지기 위해 객체(300) 내에 제공될 수 있다. 즉, 새로운 특징을 추가, 이전의 특징을 삭제, 또는 기존 특징의 버그를 수정하기 위하여 발전되어 온 것일 수 있는 데이터 구조(즉, 타입)를 판독, 분석, 또는 해석하기 위하여, 런타임 실행 환경(200)의 어떤 컴포넌트도 조정할 필요 없이 데이터 구성(310)에 포함된 메타 데이터를 확장 가능하게 하기 위해 데이터 구성(315)이 제공될 수 있다.
그러므로, 데이터 구성(315)은 "메타 메타 데이터"라고 불릴 수 있는 데이터를 포함할 수 있다. 즉, 데이터 구성(315)에 포함된 메타 메타 데이터는 데이터 구성(310)에 포함된 메타 데이터의 스키마를 나타낼 수 있다. 또한 데이터 구성(315)은, 메타 데이터의 스트림의 일부인 코드 블록(300)의 일부로서 컴파일될 수 있다. 하지만 확장 가능한 메타 데이터(120)의 선택적인 구현 중 적어도 하나에서는, 데이터 구성(315) 및 이에 포함된 메타 메타 데이터를, 오프라인 방식으로, 즉 다른 운반 매체에 의하여 또는 별도의 스키마 스트림에 담아서 런타임 실행 환경(200)에 제공하는 것을 고려할 수 있다. 또한 전술한 예들에 따르면, 데이터 구성(310) 및 데이터 구성(315)은 독립된 데이터 엔티티이다; 하지만, 적어도 하나의 선택적인 구현에서는 데이터 구성(315)이 데이터 구성(310)에 통합되는 것을 고려할 수도 있다.
예를 들어, 데이터 구성(315)에 포함된 메타 메타 데이터는 이하의 사항 중 하나 이상을 포함한다: 데이터 구성(310)에 포함된 메타 데이터 스키마에 대한 포괄적인 설명; 데이터 구성(310)에 포함된 메타 데이터 스키마와, 블록(305)에 상응하는 코드의 실행을 위해 필요할 수 있는 표준화된 스키마 모델과의 비교; 또는 데이터 구성(310)에 포함된 메타 데이터 스키마가, 블록(305)에 상응하는 코드의 실행에 필요할 수 있는 표준화된 스키마 모델과 어떻게 다른지에 대한 기타의 설명. 차이점에 대한 이와 같은 설명은, 데이터 구성(310)에 포함된 메타 데이터에 관하여 테이블 수, 테이블당 컬럼 수, 또는 하나 이상의 각각의 테이블에 있는 컬럼의 크기와 관계될 수 있다.
좀 더 구체적으로, 데이터 구성(310)에 포함된 메타 데이터 스키마를 참조하여, 데이터 구성(315)에 포함된 메타 메타 데이터는 이하의 항목 하나 이상을 다양한 조합으로 포함할 수 있다: 컬럼 당 기준에서 가변 크기 컬럼이 재정의된 크기 중 적어도 하나; 적어도 하나의 새로운 테이블 정의; 적어도 하나의, 새로 코딩된 토큰 타입 정의; 표준 수량을 초과하는 테이블 수; 표준 수량을 초과하는 컬럼 수; 및 표준 수량을 초과하는 토큰 타입 수. 별도의 스키마 스트림에 대한 적어도 하나의 예는 스트림 헤더, 새로 코딩된 토큰 타입 서술자, 표준화된 테이블에 대한 테이블 서술자, 새로운 테이블에 대한 테이블 서술자, 표준화된 테이블에 대한 컬럼 서술자, 및 새로운 테이블에 대한 컬럼 서술자를 포함할 수 있다.
도 4는 확장 가능한 메타 데이터(120; 도 1 참조)의 예를 나타내기 위한 예시적인 데이터 흐름(400)을 도시한다.
블록(405)은 확장 가능한 메타 데이터(120)와 관련된 하나 이상의 기술이 구현될 수 있는 실행 환경을 나타낼 수 있다. 본 명세서에서는, 런타임 실행 환경(200)을 확장 가능한 메타 데이터(120)가 구현될 수 있는 환경으로 지칭하였다. 하지만, 구현예들이 관리 실행 환경에만 제한되는 것은 아니다. 확장 가능한 메타 데이터(120)의 다른 예는 테스트 환경 및/또는 비관리 실행 환경 내에서 구현될 수 있다. 이와 상관 없이, 데이터 흐름(400)에 대한 설명은 네트워크 환경(100; 도 1 참조)에 상응하는 장치와 관련된 하나 이상의 모듈, 런타임 실행 환경(200; 도 2 참조)에 상응하는 컴포넌트, 코드 모듈(305), 데이터 구성(310), 및 데이터 구성(315)(도 3 참조)에 의해 수행되는 다양한 작업을 나타낼 수 있다. 또한, 작업은 하드웨어, 펌웨어, 또는 소프트웨어 단독으로 또는 이들의 다양한 조합으로 구현될 수 있다.
블록(410)은, 입력 코드(305)의 메타 데이터 스키마(데이터 구성(310)에 포함된 메타 데이터에 의해 표시됨)와 공개된 표준 또는 실행 환경(405)에 의해 기대되는 표준화된 스키마 사이에 존재하는 차이점을 판단하기 위해 데이터 구성(315)에 포함된 메타 메타 데이터를 검사, 분석, 또는 판독하는 실행 환경(405)의 모듈을 나타낼 수 있다. 그러한 모듈의 예에는 런타임 실행 환경(200)의 서비스 루틴 관리자(220)가 포함될 수 있다.
좀 더 구체적으로, 컴파일된 코드(305; 즉, IL)가 실행 환경(405) 내에서 판독 또는 실행되도록 하기 위해, 메타 데이터에 대한 스키마는 예측 가능한 것으로 기대된다. 예를 들어, 도 2 및 도 3의 예를 참조하면, 런타임 실행 환경(200)은 데이터 구성(310)에 포함된 메타 데이터 스키마가 각각 64개의 컬럼을 가진 42개의 테이블을 포함할 것으로 예상할 수 있다. 따라서 블록(410)에서, 표준화된 타입 서술자, 테이블 서술자, 및 컬럼 서술자와의 차이점을 발견할 수 있다.
데이터 구성(315; 도 3 참조)에 포함된 메타 메타 데이터를 판독, 해석, 또는 분석함으로써 표준화된 메타 데이터 스키마와의 차이점을 발견할 수 있다. 따라서 메타 메타 데이터는 메타 데이터 스키마에 대한 포괄적인 설명을 포함할 수 있다. 이와 달리, 데이터 구성(315)에 포함된 데이터는 데이터 구성(310)에 포함된 메타 데이터 스키마와 표준화된 스키마 모델 사이의 차이점을 열거할 수 있고, 이로써 데이터 구성(310) 내에 포함된 메타 데이터에 대해 전반적으로 검토해야 할 필요성을 우회적으로 피할 수 있다.
또한, 데이터 구성(315)의 메타 메타 데이터는 코드(305)의 일부로서 컴파일 되거나, 별도의 스키마 스트림에 담겨서(예를 들어, 오프라인 방식으로, 또는 다른 어떤 운반 매체에 의해) 실행 환경(405)에게 제공될 수 있다.
블록(415)은 입력 코드(305)를 검사, 분석, 또는 판독하는 실행 환경(405) 내의 모듈(즉, 서비스 루틴 관리자(220))을 나타낼 수 있다. 즉, 데이터 구성(310)에 포함된 메타 데이터가 표준화된 메타 데이터 스키마 모델과 어떻게 다른지 알려지면, 실행 환경(405) 내의 전술한 모듈은 데이터 구성(310)에 포함된 확장 가능한 메타 데이터를 판독, 해석, 또는 분석할 수 있게 된다.
도 1 내지 도 4에 관한 전술한 설명에 의하여, 특정 실행 환경에 입력되는 코드의 메타 데이터는 확장 가능하게 된다. 예를 들어, 컴파일된 중간 언어 코드 (즉, IL)에 상응하는 메타 데이터 스키마는, 상응하는 응용프로그램, 프로그램, 함수, 또는 프로그래밍 및 실행 가능한 기타 코드 집합으로 런타임 실행 환경을 재구성할 필요 없이 표준화된 구조와 달라질 수 있다. 하지만, 이 명세서에 개시된 구현예는 도 1의 환경, 도 2와 도 3의 컴포넌트, 도 4의 데이터 처리 흐름에만 제한되는 것은 아니다. 확장 가능한 메타 데이터(120; 도 1 참조)에 관한 기술(예를 들어 도구, 방법론, 및 시스템)은 도 2와 도 3을 참조하여 기술한 다양한 조합의 컴포넌트에 의해 구현될 수 있을 뿐만 아니라, 도 4를 참조하여 기술한 여러 가지 블록 순서로 구현될 수 있다.
또한, 전술한 임의의 예 및 구현을 위한 컴퓨터 환경은, 예를 들어 하나 이상의 프로세서 또는 처리 장치, 시스템 메모리, 및 다양한 시스템 컴포넌트를 연결하기 위한 시스템 버스를 구비한 컴퓨팅 장치를 포함할 수 있다.
컴퓨팅 장치는 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체를 포함한 여러 가지의 컴퓨터 판독 가능 매체를 포함할 수 있다. 시스템 메모리는 RAM과 같은 휘발성 메모리 및/또는 ROM 또는 플래시 RAM과 같은 비휘발성 메모리 형태의 컴퓨터 판독 가능 매체를 포함할 수 있다. 자기 카세트, 또는 기타 자기 저장 장치, 플래시 메모리 카드, CD-ROM, DVD 또는 기타 광학 저장소, RAM, ROM, EEPROM 등과 같이, 데이터를 저장할 수 있는, 컴퓨터가 액세스 가능한 기타 컴퓨터 판독 가능 매체들 역시 예시적인 컴퓨팅 시스템 및 환경을 구현하는 데 이용될 수 있음을 이해할 것이다.
개시된 특정 특징, 구조, 또는 특성이 적어도 하나의 본 발명의 구현에 포함 된다는 것을 뜻하는 "일 예", "다른 예", "적어도 하나의 예", "일 구현", 또는 "예시적인 일 구현" 등의 표현을 사용하였다. 따라서, 이러한 문구의 사용은 하나 이상의 구현을 나타낼 수 있다. 또한, 개시된 특징, 구조, 또는 특성은 하나 이상의 구현에서 적절한 방법으로 결합될 수 있다.
하지만 당업자라면, 코드 모듈 초기화는 하나 이상의 구체적인 세부 사항 없이도 구현될 수 있고, 다른 방법, 자원, 재료 등을 사용하여 구현될 수도 있음을 이해할 것이다. 다른 경우, 단지 발명의 특징을 불명료하게 하는 것을 피하기 위하여 잘 알려진 구조, 자원, 또는 동작(operation)이 생략되거나 상세히 설명되지 않았다.
코드 모듈 초기화에 대한 예시적인 구현 및 응용을 도시하고 설명하였으나, 본 발명은 전술한 설명과 정확히 일치하는 구성 및 자원에 한정되는 것은 아님을 이해할 것이다. 본 명세서에서 설명하고 청구 범위로 주장하는 본 발명의 범주를 벗어나지 않는 범위 내에서, 이 명세서에 개시된 본 발명의 방법 및 시스템의 배열, 동작, 및 세부 내용에 대하여 당업자에게 자명한 여러 가지 수정, 변화, 및 변경이 가해질 수 있다.

Claims (20)

  1. 하나 이상의 데이터 구조를 포함하는 적어도 하나의 컴퓨터 판독 가능 매체로서,
    적어도 하나의 상기 데이터 구조는
    하나 이상의 프로그래밍 가능한 명령어를 실행하기 위한 모듈;
    하나 이상의 상기 모듈에 상응하는 타입을 기술하기 위한 데이터 구성(data construct); 및
    상기 데이터 구성의 구조를 기술하기 위한 또 다른 데이터 구성
    을 포함하는 적어도 하나의 컴퓨터 판독 가능 매체.
  2. 제1항에 있어서,
    상기 모듈은 관리 코드(managed code)를 포함하는, 적어도 하나의 컴퓨터 판독 가능 매체.
  3. 제1항에 있어서,
    상기 모듈은 컴파일된 중간 언어 코드(intermediate language code)를 포함하는, 적어도 하나의 컴퓨터 판독 가능 매체.
  4. 제1항에 있어서,
    상기 모듈은 관리 실행 환경(managed execution environment)에서 상기 하나 이상의 프로그래밍 가능한 명령어를 실행하기 위한 것이고, 상기 데이터 구성은 관리 실행 환경 내의 메타 데이터 구조를 위한 공개된 표준으로부터 벗어난 구조를 가지는 메타 데이터를 포함하는, 적어도 하나의 컴퓨터 판독 가능 매체.
  5. 제1항에 있어서,
    상기 또 다른 데이터 구성은 상기 데이터 구성을 위한 스키마를 포함하고, 상기 데이터 구성을 위한 상기 스키마는 관리 실행 환경 내의 상기 데이터를 위한 표준화된 스키마로부터 벗어난, 적어도 하나의 컴퓨터 판독 가능 매체.
  6. 제1항에 있어서,
    상기 또 다른 데이터 구성은 관리 실행 환경 내의 상기 데이터 구성의 구조에 대한 공개된 표준 형식으로부터 상기 데이터 구성의 구조의 벗어난 정도(deviation)를 기술하기 위한 것인, 적어도 하나의 컴퓨터 판독 가능 매체.
  7. 제1항에 있어서,
    상기 또 다른 데이터 구성은 상기 데이터 구성에 대한 공개된 표준 구조 내의 테이블 수와 비교하여 상기 데이터 구성의 구조 내의 테이블 수의 벗어난 정도를 기술하기 위한 것인, 적어도 하나의 컴퓨터 판독 가능 매체.
  8. 제1항에 있어서,
    상기 또 다른 데이터 구성은 상기 데이터 구성에 대한 공개된 표준 구조 내의 테이블 당 컬럼 수와 비교하여 상기 데이터 구성의 구조 내의 테이블 당 컬럼 수의 벗어난 정도를 기술하기 위한 것인, 적어도 하나의 컴퓨터 판독 가능 매체.
  9. 제1항에 있어서,
    상기 또 다른 데이터 구성은 상기 데이터 구성에 대한 공개된 표준 구조 내의 컬럼 사이즈와 비교하여 상기 데이터 구성의 구조 내의 컬럼 사이즈의 벗어난 정도를 기술하기 위한 것인, 적어도 하나의 컴퓨터 판독 가능 매체.
  10. 관리 실행 환경 내에서 실행 가능한 코드와 관련된 메타 데이터를 수신하는 단계; 및
    상기 수신된 메타 데이터와 상기 관리 실행 환경 내의 표준 메타 데이터 포멧(format) 사이의 구조적인 차이를 판단하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서,
    상기 메타 데이터는 중간 언어로 컴파일된, 방법.
  12. 제10항에 있어서,
    상기 판단 단계는 상기 메타 데이터의 스키마를 기술하는 별도의 데이터 엔티티를 판독하는 단계; 및 상기 스키마를 상기 스키마의 공개된 표준과 비교하는 단계를 포함하는, 방법.
  13. 제10항에 있어서,
    상기 판단 단계는 상기 구조적인 차이를 기술하는 별도의 데이터 엔티티를 판독하는 단계를 포함하는, 방법.
  14. 제10항에 있어서,
    상기 구조적인 차이는 상기 메타 데이터 내의 컬럼 수에 연관된, 방법.
  15. 제10항에 있어서,
    상기 구조적인 차이는 상기 메타 데이터 내의 컬럼 타입과 연관된, 방법.
  16. 제10항에 있어서,
    상기 구조적인 차이는 상기 메타 데이터 내의 컬럼 사이즈와 연관된, 방법.
  17. 제10항에 있어서,
    상기 구조적인 차이는 상기 메타 데이터 내의 테이블 수와 연관된, 방법.
  18. 관리 코드와 관련된 메타 데이터를 수신하기 위한 수단;
    상기 수신된 메타 데이터의 구조 및 관리 코드를 위한 메타 데이터의 표준 구조 사이의 스키마적(schematic) 차이를 판단하기 위한 수단; 및
    상기 판단한 스키마적 차이에 따라 상기 메타 데이터를 판독하기 위한 수단
    을 포함하는 시스템.
  19. 제18항에 있어서,
    상기 스키마적 차이는 상기 수신된 메타 데이터 내의 테이블과 연관된, 시스템.
  20. 제18항에 있어서,
    상기 스키마적 차이는 상기 수신된 메타 데이터 내의 테이블 안의 컬럼과 연관된, 시스템.
KR1020087008682A 2005-10-13 2006-09-12 확장 가능한 메타 데이터 KR20080047444A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/249,784 US7743363B2 (en) 2005-10-13 2005-10-13 Extensible meta-data
US11/249,784 2005-10-13

Publications (1)

Publication Number Publication Date
KR20080047444A true KR20080047444A (ko) 2008-05-28

Family

ID=37949325

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087008682A KR20080047444A (ko) 2005-10-13 2006-09-12 확장 가능한 메타 데이터

Country Status (11)

Country Link
US (1) US7743363B2 (ko)
EP (1) EP1934814A4 (ko)
JP (1) JP5139987B2 (ko)
KR (1) KR20080047444A (ko)
CN (1) CN101288070B (ko)
AU (1) AU2006302929A1 (ko)
BR (1) BRPI0617192A2 (ko)
NO (1) NO20081269L (ko)
RU (1) RU2008114301A (ko)
TW (1) TW200731094A (ko)
WO (1) WO2007046976A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140068966A (ko) * 2011-09-12 2014-06-09 마이크로소프트 코포레이션 동일한 타입의 다수의 메타데이터 표현을 효율적으로 제공하는 기법

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7219330B2 (en) * 2003-06-26 2007-05-15 Microsoft Corporation Extensible metadata
US8281299B2 (en) * 2006-11-10 2012-10-02 Purdue Research Foundation Map-closure: a general purpose mechanism for nonstandard interpretation
US8108855B2 (en) * 2007-01-02 2012-01-31 International Business Machines Corporation Method and apparatus for deploying a set of virtual software resource templates to a set of nodes
US8327350B2 (en) * 2007-01-02 2012-12-04 International Business Machines Corporation Virtual resource templates
US8370802B2 (en) 2007-09-18 2013-02-05 International Business Machines Corporation Specifying an order for changing an operational state of software application components
US8484615B2 (en) * 2007-12-20 2013-07-09 Ncr Corporation Software framework to build an executable scheme in a GUI environment
US8250524B2 (en) * 2007-12-21 2012-08-21 Microsoft Corporation Contract programming for code error reduction
US7978516B2 (en) 2007-12-27 2011-07-12 Pliant Technology, Inc. Flash memory controller having reduced pinout
US8108433B2 (en) * 2008-08-26 2012-01-31 Sap Ag Dynamic extension fields for business objects
US8356056B2 (en) * 2008-08-26 2013-01-15 Sap Ag Functional extensions for business objects
US8108434B2 (en) * 2008-08-26 2012-01-31 Sap Ag Dynamic node extensions and extension fields for business objects
US20100161648A1 (en) * 2008-12-19 2010-06-24 Peter Eberlein Flexible multi-tenant support of metadata extension
US20100162147A1 (en) * 2008-12-19 2010-06-24 Ritter Gerd M Ui-driven binding of extension fields to business objects
US8819075B2 (en) 2010-07-26 2014-08-26 Sap Ag Facilitation of extension field usage based on reference field usage
US9063958B2 (en) 2010-07-29 2015-06-23 Sap Se Advance enhancement of secondary persistency for extension field search
US8886646B2 (en) 2010-12-30 2014-11-11 Sap Se Field extensibility for analytical reports
US8978007B2 (en) 2011-06-30 2015-03-10 Microsoft Technology Licensing, Llc Static metadata in dynamic programs
US8782060B2 (en) * 2012-04-13 2014-07-15 Theplatform For Media, Inc. Multiple phase content ingest
US8700838B2 (en) 2012-06-19 2014-04-15 Concurix Corporation Allocating heaps in NUMA systems
US9047196B2 (en) 2012-06-19 2015-06-02 Concurix Corporation Usage aware NUMA process scheduling
US9575813B2 (en) 2012-07-17 2017-02-21 Microsoft Technology Licensing, Llc Pattern matching process scheduler with upstream optimization
US9043788B2 (en) 2012-08-10 2015-05-26 Concurix Corporation Experiment manager for manycore systems
US8966462B2 (en) * 2012-08-10 2015-02-24 Concurix Corporation Memory management parameters derived from system modeling
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US8656134B2 (en) 2012-11-08 2014-02-18 Concurix Corporation Optimized memory configuration deployed on executing code
US8656135B2 (en) 2012-11-08 2014-02-18 Concurix Corporation Optimized memory configuration deployed prior to execution
US8607018B2 (en) 2012-11-08 2013-12-10 Concurix Corporation Memory usage configuration based on observations
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9665474B2 (en) 2013-03-15 2017-05-30 Microsoft Technology Licensing, Llc Relationships derived from trace data
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9361221B1 (en) 2013-08-26 2016-06-07 Sandisk Technologies Inc. Write amplification reduction through reliable writes during garbage collection
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
US9244785B2 (en) 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US20180095788A1 (en) * 2016-10-04 2018-04-05 Pure Storage, Inc. Scheduling operations for a storage device

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1313038A3 (en) * 1994-09-01 2005-09-07 Computer Associates Think, Inc. X.500 System and methods using metadata
US6003039A (en) * 1997-06-27 1999-12-14 Platinum Technology, Inc. Data repository with user accessible and modifiable reuse criteria
US5893086A (en) * 1997-07-11 1999-04-06 International Business Machines Corporation Parallel file system and method with extensible hashing
US5974424A (en) * 1997-07-11 1999-10-26 International Business Machines Corporation Parallel file system and method with a metadata node
US6199198B1 (en) * 1997-12-10 2001-03-06 International Business Machines Corp. Computer system, method, and article of manufacture for visualizing differences between design artifacts and object-oriented code
US6549922B1 (en) * 1999-10-01 2003-04-15 Alok Srivastava System for collecting, transforming and managing media metadata
US7114147B2 (en) * 2000-03-09 2006-09-26 Electronic Data Systems Corporation Method and system for reporting XML data based on precomputed context and a document object model
CA2374067C (en) * 2000-03-13 2012-09-25 Sony Corporation Method and apparatus for generating compact transcoding hints metadata
US20020099726A1 (en) * 2001-01-23 2002-07-25 International Business Machines Corporation Method and system for distribution of file updates
US6901446B2 (en) * 2001-02-28 2005-05-31 Microsoft Corp. System and method for describing and automatically managing resources
US6976076B2 (en) * 2001-06-29 2005-12-13 International Business Machines Corporation Architecture for the graphical management and analysis of authentication tokens
US6983448B2 (en) * 2001-07-12 2006-01-03 International Business Machines Corporation Open framework for the definition of metadata
US7451157B2 (en) * 2001-10-16 2008-11-11 Microsoft Corporation Scoped metadata in a markup language
US20030093551A1 (en) * 2001-10-17 2003-05-15 Graham Taylor Adaptive software interface
US20040201600A1 (en) * 2001-12-14 2004-10-14 Microsoft Corporation Methods and system for providing an XML-based interface description language
JP3826043B2 (ja) * 2002-01-31 2006-09-27 キヤノン株式会社 情報処理装置及び方法
US7174533B2 (en) * 2002-03-14 2007-02-06 Sun Microsystems, Inc. Method, system, and program for translating a class schema in a source language to a target language
US7131110B2 (en) * 2002-03-21 2006-10-31 Sun Microsystems, Inc. Method and apparatus for generating a code bridge
US7826709B2 (en) * 2002-04-12 2010-11-02 Mitsubishi Denki Kabushiki Kaisha Metadata editing apparatus, metadata reproduction apparatus, metadata delivery apparatus, metadata search apparatus, metadata re-generation condition setting apparatus, metadata delivery method and hint information description method
AU2003252024A1 (en) * 2002-07-16 2004-02-02 Bruce L. Horn Computer system for automatic organization, indexing and viewing of information from multiple sources
US20040117397A1 (en) * 2002-12-16 2004-06-17 Rappold Robert J Extensible database system and method
JP2004228780A (ja) * 2003-01-21 2004-08-12 Canon Inc 情報処理装置
US20040158820A1 (en) * 2003-02-11 2004-08-12 Moore John Wesley System for generating an application framework and components
JP2004260279A (ja) * 2003-02-24 2004-09-16 Nippon Telegr & Teleph Corp <Ntt> ピアグループの構成方法、属性情報更新方法、分断検出方法およびピアならびに該方法を実行するためのプログラム
US7080089B2 (en) * 2003-03-12 2006-07-18 Microsoft Corporation Customization of process logic in a software system
US7346627B2 (en) * 2003-06-25 2008-03-18 Oracle International Corporation Approaches for migrating portal objects from a source installation to a target installation
US7219330B2 (en) * 2003-06-26 2007-05-15 Microsoft Corporation Extensible metadata
DE10335989B4 (de) * 2003-08-01 2019-07-11 Kw-Software Gmbh Online-Änderungen von CIL-Code-Programmen für die Industrieautomatisierung
US7739223B2 (en) * 2003-08-29 2010-06-15 Microsoft Corporation Mapping architecture for arbitrary data models
US20060179116A1 (en) * 2003-10-10 2006-08-10 Speeter Thomas H Configuration management system and method of discovering configuration data
US20050108684A1 (en) * 2003-11-14 2005-05-19 Sohn Matthias E. Method and system for generating an application object repository from application framework metadata
US7574692B2 (en) * 2004-11-19 2009-08-11 Adrian Herscu Method for building component-software for execution in a standards-compliant programming environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140068966A (ko) * 2011-09-12 2014-06-09 마이크로소프트 코포레이션 동일한 타입의 다수의 메타데이터 표현을 효율적으로 제공하는 기법

Also Published As

Publication number Publication date
BRPI0617192A2 (pt) 2011-07-19
RU2008114301A (ru) 2009-10-20
JP2009512062A (ja) 2009-03-19
US7743363B2 (en) 2010-06-22
NO20081269L (no) 2008-04-16
US20070088716A1 (en) 2007-04-19
JP5139987B2 (ja) 2013-02-06
TW200731094A (en) 2007-08-16
AU2006302929A1 (en) 2007-04-26
EP1934814A1 (en) 2008-06-25
WO2007046976A1 (en) 2007-04-26
CN101288070A (zh) 2008-10-15
EP1934814A4 (en) 2009-06-17
CN101288070B (zh) 2010-09-29

Similar Documents

Publication Publication Date Title
KR20080047444A (ko) 확장 가능한 메타 데이터
US7730464B2 (en) Code compilation management service
US6415435B1 (en) Method and apparatus for determining compatibility of parent classes in an object oriented environment using versioning
US10684827B2 (en) Generating dynamic modular proxies
EP4055477B1 (en) Just-in-time containers
US20100205604A1 (en) Systems and methods for efficiently running multiple instances of multiple applications
US7987456B2 (en) Qualitatively annotated code
TW201308209A (zh) 運行時間系統
US8615743B2 (en) Adaptive compiled code
EP1902379B1 (en) Node-to-node communication pipelines
US10296363B2 (en) Tuning a virtual machine startup parameter
US10733095B2 (en) Performing garbage collection on an object array using array chunk references
US7673051B2 (en) Resource usage conflict identifier
CN116700745A (zh) 基于容器云平台的应用部署方法、装置、电子设备和介质
Sterling A Universal Framework for (nearly) Arbitrary Dynamic Languages

Legal Events

Date Code Title Description
A201 Request for examination
SUBM Submission of document of abandonment before or after decision of registration