KR20110034636A - 네이티브 코드 모듈을 이용하여 애플리케이션을 실행하는 방법 및 시스템 - Google Patents

네이티브 코드 모듈을 이용하여 애플리케이션을 실행하는 방법 및 시스템 Download PDF

Info

Publication number
KR20110034636A
KR20110034636A KR1020117000770A KR20117000770A KR20110034636A KR 20110034636 A KR20110034636 A KR 20110034636A KR 1020117000770 A KR1020117000770 A KR 1020117000770A KR 20117000770 A KR20117000770 A KR 20117000770A KR 20110034636 A KR20110034636 A KR 20110034636A
Authority
KR
South Korea
Prior art keywords
web application
native code
code module
output data
input data
Prior art date
Application number
KR1020117000770A
Other languages
English (en)
Other versions
KR101626429B1 (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 KR20110034636A publication Critical patent/KR20110034636A/ko
Application granted granted Critical
Publication of KR101626429B1 publication Critical patent/KR101626429B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44589Program code verification, e.g. Java bytecode verification, proof-carrying code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Abstract

일부 실시예에서, 웹 애플리케이션을 실행하는 시스템이 제공된다. 동작 동안, 시스템은 웹 애플리케이션을 웹 브라우저에 로드하고, 웹 애플리케이션과 관련된 네이티브 코드 모듈을 보안 런타임환경으로 로드한다. 그 다음, 상기 시스템은 웹 애플리케이션과 관련된 입력 데이터를 네이티브 코드 모듈에 제공하고, 네이티브 코드 모듈을 이용해 상기 입력 데이터를 처리하여 출력 데이터를 획득한다. 마지막으로, 시스템이 상기 출력 데이터를 웹 애플리케이션에 제공하여 출력 데이터가 웹 애플리케이션에 의해 이용될 수 있다.

Description

네이티브 코드 모듈을 이용하여 애플리케이션을 실행하는 방법 및 시스템{METHOD AND SYSTEM FOR EXECUTING APPLICATIONS USING NATIVE CODE MODULES}
본 발명은 컴퓨터 시스템에서 애플리케이션을 수행하는 기법에 관한 것으로, 좀 더 상세하게는, 네이티브 코드 모듈(native code module)을 이용하여 웹 애플리케이션을 실행하는 방법 및 시스템에 관한 것이다.
컴퓨터 시스템은, 실행하기 위하여 상당한 처리 자원을 필요로 하는 다수의 네이티브 애플리케이션(native application)을 포함할 수 있다. 이러한 네이티브 애플리케이션은 영상 처리, 오디오 및 비디오 디코딩과 믹싱(mixing), 수학적 모델링, 및/또는 시뮬레이션과 같은 작업들을 수행할 수 있다. 효율적으로 동작하기 위하여, 이러한 애플리케이션은 흔히 범용 프로그래밍 언어(가령, C 또는 C++)와 저급 언어(가령, 어셈블리어)의 조합으로 작성된다. 그 결과, 상기 애플리케이션은 긴 설치 과정을 수반하는 특정한 플랫폼에 제한될 수 있고, 애플리케이션이 설치된 컴퓨터 시스템에 보안 위험을 야기할 수 있다.
반면, 최근 점점 더 유행하고 있는 웹 애플리케이션이, 통상적으로 좀 더 안전하고 설치를 필요로 하지 않는 스크립트 언어로 작성된다. 그러나, 이러한 웹 애플리케이션은 네이티브 애플리케이션과 같은 수행 능력이 부족할 수 있다. 특히, 웹 애플리케이션이 네이티브 애플리케이션보다 10배 또는 100배 이상 더 느리게 동작할 수도 있다. 그 결과, 웹 애플리케이션은, 네이티브 애플리케이션에서 이용 가능한 계산 집약적 기능들을 구현하는 것이 현재 가능하지 않다.
일부 실시예에서, 웹 애플리케이션을 실행하는 시스템이 제공된다. 동작 동안, 시스템은 웹 애플리케이션을 웹 브라우저에 로드하고, 웹 애플리케이션과 관련된 네이티브 코드 모듈(native code module)을 보안 런타임 환경(secure runtime environment)으로 로드한다. 그 다음, 상기 시스템은, 웹 애플리케이션과 관련된 입력 데이터를 네이티브 코드 모듈에 제공하고 상기 네이티브 코드 모듈을 이용해 입력 데이터를 처리하여 출력 데이터를 얻는다. 마지막으로, 상기 시스템은, 상기 출력 데이터를 웹 애플리케이션에 제공하여 출력 데이터가 웹 애플리케이션에 의해 이용될 수 있다.
일부 실시예에서, 상기 시스템은 또한, 네이티브 코드 모듈을 보안 런타임 환경으로 로드하기 전 네이티브 코드 모듈을 검증한다.
일부 실시예에서, 상기 출력 데이터가, 웹 브라우저와 관련된 신뢰하는 플러그인(trusted plugin)에 제공되어 출력 데이터가 신뢰하는 플러그인에 의해 이용될 수 있다.
일부 실시예에서, 출력 데이터가 신뢰하는 플러그인에 의해 이용되어 웹 애플리케이션에 대한 그래픽을 렌더링할 수 있다.
일부 실시예에서, 네이티브 코드 모듈은 웹 애플리케이션을 위하여 시뮬레이션, 신호 처리, 인공 지능, 모델링, 및 분석 중 하나 이상을 제공한다.
일부 실시예에서, 보안 런타임 환경이 웹 브라우저와 관련된 플러그인에 의해 구현된다.
일부 실시예에서, 웹 애플리케이션 및 네이티브 코드 모듈이 플랫폼 독립적(platform independent)이다.
일부 실시예에서, 입력 데이터는 제1의 모듈간 통신(IMC) 버퍼를 이용하여 네이티브 코드 모듈에 제공되고, 출력 데이터는 제2의 모듈간 통신(IMC) 버퍼를 이용하여 웹 애플리케이션에 제공된다.
일부 실시예에서, 입력 데이터 처리에는, 입력 데이터를 이용하여 일련의 수학 계산을 수행하는 것이 수반된다.
도 1은 시스템의 실시예를 도식적으로 나타낸 것이다.
도 2는 시스템의 실시예에 따라 네이티브 코드 모듈에 의한 모듈간 통신(IMC) 버퍼의 이용을 보여준다.
도 3은 웹 애플리케이션에 대한 그래픽을 표현하기 위한 시스템을 보여준다.
도 4는 웹 애플리케이션 실행 절차를 도시하는 흐름도이다.
이하의 설명은 해당업계 종사자라면 개시된 실시예들을 만들고 이용할 수 있도록 제시되며, 특정 응용예 및 이의 요구사항의 맥락에서 제공된다. 개시된 실시예들에 대한 다양한 변경이 해당업계 종사자에게 즉시 명백할 것이고, 본원에서 정의된 일반적 원리들은 개시된 실시예의 사상과 범위를 벗어나지 않는 한 그 밖의 다른 실시예 및 응용예에도 적용될 수 있다. 따라서, 본 발명 시스템은 본원에 개시된 실시예들에 한정되지 않으며, 본원에 개시된 원리 및 특징들과 양립하는 가장 넓은 범위까지 허용된다.
상세한 설명에 기술된 데이터 구조와 코드가 컴퓨터-판독 가능 저장 매체에 통상적으로 저장되며, 컴퓨터-판독 가능 저장 매체란 컴퓨터 시스템에 의한 이용을 위해 코드 및/또는 데이터를 저장할 수 있는 임의의 장치 또는 매체일 수 있다. 컴퓨터-판독 가능 저장 매체는 휘발성 메모리, 비휘발성 메모리, 자기 저장 장치 및 광학 저장 장치(가령, 디스크 드라이브, 자기 테이프, CD(콤팩트 디스크), DVD(디지털 다기능 디스크 또는 디지털 비디오 디스크), 또는 현재 공지되어 있거나 나중에 개발될 컴퓨터-판독 가능 매체를 저장할 수 있는 그 밖의 다른 매체)를 포함한다(이에 한정되는 것은 아님).
상세한 설명 부분에 기술된 방법과 절차가 코드 및/또는 데이터로서 구현될 수 있고, 이러한 코드 및/또는 데이터는 위에 기술된 것과 같은 컴퓨터-판독 가능 저장 매체에 저장될 수 있다. 컴퓨터 시스템이 컴퓨터-판독 가능 저장 매체에 저장된 코드 및/또는 데이터를 판독 및 실행할 때, 컴퓨터 시스템은, 데이터 구조와 코드로서 구현되고 컴퓨터-판독 가능 저장 매체 내에 저장된 방법과 절차들을 수행한다.
더욱이, 아래에 기술된 방법과 절차는 하드웨어 모듈에 포함될 수 있다. 예를 들어, 하드웨어 모듈은 주문형 집적 회로(ASIC) 칩, FPGA(field-programmable gate array), 및 현재 개발되어 있거나 나중에 개발될 그 밖의 다른 프로그래밍 가능-로직 장치를 포함할 수 있다(이에 한정되는 것은 아님). 하드웨어 모듈이 활성화된 때, 하드웨어 모듈은 하드웨어 모듈 내에 포함된 방법 및 절차를 수행한다.
시스템의 실시예에서, 웹 애플리케이션을 실행하는 방법 및 시스템이 제공된다. 이러한 웹 애플리케이션이 웹 브라우저에 로드될 수 있고, 컴퓨팅 시스템(가령, 개인용 컴퓨터(PC), 모바일 폰, PDA(personal digital assistant), 그래픽 계산기(graphing calculator), 휴대용 미디어 플레이어, 글로벌 위치 인식 시스템(GPS) 수신기, 및/또는 그 밖의 다른 전자 컴퓨팅 장치)에서 실행될 수 있다. 웹 애플리케이션은 서버와의 네트워크 연결을 이용하여 컴퓨팅 시스템에 의해 서버로부터 획득될 수 있다. 예를 들어, 웹 애플리케이션은 인터넷을 통해 웹 사이트로부터 다운로드될 수 있다.
좀 더 구체적으로, 기법의 실시예에서, 네이티브 코드 모듈을 이용하여 웹 애플리케이션을 실행하는 방법 및 시스템이 제공된다. 네이티브 코드 모듈은 보안 런타임 환경에서 실행되는 네이티브 코드를 포함하고 있을 수 있다. 이에 더하여, 네이티브 코드 모듈은 가령, 시뮬레이션, 신호 처리, 인공 지능, 및/또는 모델링과 같은 계산 집약적(computationally intensive) 작업들과 관련된 기능성을 제공하도록 웹 애플리케이션을 위한 데이터 처리에 이용될 수 있다. 그 결과, 시스템의 실시예에서, 웹 애플리케이션의 휴대성과 보안성을 바이너리 코드의 네이티브 성능(native performance)과 조합하기 위한 프레임워크(framework)를 제공할 수 있다.
도 1은 시스템의 도식적 그림을 나타낸다. 시스템은 컴퓨팅 시스템(102)과 서버 세트(예를 들어, 서버 1(104), 서버 x(106))를 포함한다. 컴퓨팅 시스템(102)은 웹 브라우저(110) 내에서 구동되는 웹 애플리케이션(116)과 플러그인(108)을 포함한다. 이러한 컴포넌트 각각이 아래에서 좀 더 자세히 기술된다.
컴퓨팅 시스템(102)은 하나 이상의 서비스 또는 기능을 사용자에게 제공하는 전자 장치에 상응할 수 있다. 예를 들어, 컴퓨팅 시스템(102)은 모바일 폰, 개인용 컴퓨터(PC), 글로벌 위치 인식 시스템(GPS) 수신기, 휴대용 미디어 플레이어, PDA(personal digital assistant), 및/또는 그래픽 계산기(graphing calculator)로서 동작할 수 있다. 이에 더하여, 컴퓨팅 시스템(102)은 컴퓨팅 시스템(102) 상의 하드웨어와 소프트웨어 자원의 이용을 조율하는 운영 체제(도시되지 않음)를 포함할 수 있고, 또한 사용자를 위한 구체적 작업들을 수행하는 하나 이상의 애플리케이션(가령, 웹 브라우저(110), 웹 애플리케이션(116))을 포함할 수 있다. 예를 들어, 컴퓨팅 시스템(102)은 이메일 클라이언트, 주소 북, 문서 편집기, 웹 브라우저(110), 및/또는 미디어 플레이어와 같은 애플리케이션을 포함할 수 있다. 사용자를 위한 작업들을 수행하기 위하여, 애플리케이션은 운영 체제로부터 컴퓨팅 시스템(102) 상의 하드웨어 자원(가령, 프로세서, 메모리, I/O 컴포넌트, 무선 송신기 등)의 이용을 획득할 수 있고, 또한, 아래에 기술되는 바와 같이, 운영 체제에 의해 제공되는 하드웨어 및/또는 소프트웨어 프레임워크를 통해 사용자와 상호작용(interact)할 수 있다.
해당업계 종사자라면, 컴퓨팅 시스템(102)이 네이티브 애플리케이션과 비-네이티브 애플리케이션 둘 모두를 실행하는 기능성을 포함할 수 있음을 이해할 것이다. 다시 말하면, 컴퓨팅 시스템(102)이, 컴퓨팅 시스템(102)에 국소적으로 설치되고 컴퓨터 시스템(102) 상의 하나 이상의 하드웨어 장치 및/또는 운영 체제에 특정적인 네이티브 애플리케이션(가령, 웹 브라우저(110))를 포함할 수 있다. 이러한 애플리케이션은 컴퓨팅 시스템(102)의 하나 이상의 중앙 처리 장치(CPU)에서 직접 실행되는 네이티브(가령, 기계) 코드로 컴파일될 수 있다. 이러한 애플리케이션의 코드 실행은 상기 애플리케이션을 범용 프로그래밍 언어(가령, C, C++ 등)와 어셈블리어의 조합으로 작성함으로써, 또한 상기 애플리케이션에 하드웨어 가속(가령, 그래픽 하드웨어 가속)을 제공하는 라이브러리를 이용함으로써 추가로 최적화될 수 있다. 그러나, 네이티브 애플리케이션의 설치는 컴퓨팅 시스템(102)과, 컴퓨팅 시스템(102)에 저장된 개인 정보를 위태롭게 할 수 있다.
컴퓨팅 시스템(102)은 또한, 플랫폼 독립적인 비-네이티브 애플리케이션을 실행할 수 있는 기능성을 포함할 수도 있다. 특히, 컴퓨팅 시스템(102)은, 서버와의 네트워크 연결을 이용하여 하나 이상의 서버(가령, 서버 1(104), 서버 x(106))로부터 웹 애플리케이션(116)을 획득할 수 있고, 웹 브라우저(110)에 웹 애플리케이션(116)을 로드할 수 있다. 예를 들어, 웹 브라우저(110)에 의해 인터넷을 통해 웹 애플리케이션(116)이 애플리케이션 서버로부터 다운로드될 수 있다.
일단 로드되면, 웹 애플리케이션(116)은 컴퓨팅 시스템(102) 상에서 네이티브 애플리케이션의 것들에 필적하는 기능들 및 사용자 상호작용성(user interactivity)을 제공할 수 있다. 예를 들어, 웹 애플리케이션(116)이 이메일 클라이언트, 문서 편집기, 미디어 플레이어, CAD(computer-aided design) 시스템, 및/또는 컴퓨터 게임으로서 기능할 수 있다. 웹 애플리케이션(116)은 또한, 네이티브 애플리케이션의 아날로그 사용자 인터페이스 요소를 에뮬레이트한 동적 사용자 인터페이스 요소(가령, 메뉴, 버튼, 윈도우, 서브-윈도우, 아이콘, 애니메이션, 및/또는 그 밖의 다른 그래픽 객체)를 포함할 수 있다. 다시 말하면, 웹 애플리케이션(116)이 리치 인터넷 애플리케이션(RIA)에 상응할 수 있다.
더욱이, 웹 애플리케이션(116)은 컴퓨팅 시스템(102)과 관련된 플랫폼(가령, 운영 체제, 드라이버 등)의 유형과 무관하게 컴퓨팅 시스템(102)에서 실행될 수 있다. 비록 웹 애플리케이션(116)과 같은 플랫폼 독립적 애플리케이션이 네이티브 애플리케이션보다 휴대하기 간편하고 안전할 수 있지만, 이러한 크로스-플랫폼(cross-platform) 애플리케이션은 네이티브 애플리케이션의 특정한 수행 능력이 부족할 수 있다.
좀 더 구체적으로, 웹 애플리케이션(116)과 같은 비-네이티브 애플리케이은, 자바스크립트(Javascript™가 Sun Microsystems, Inc.의 상표로 등록됨)와 같이, 컴파일되기보다는 인터프리트(interpret)되는 스크립트 언어를 이용하여 작성될 수 있다. 웹 애플리케이션(116) 및/또는 그 밖의 다른 비-네이티브 애플리케이션의 인터프리트 성향으로 의해, 비-네이티브 애플리케이션에 있어서, 컴파일되는 네이티브 애플리케이션에서보다 실행 시간이 상당히 느릴 수 있다. 비-네이티브 애플리케이션은 또한, 네이티브 애플리케이션에 의한 이용에 유용한 애플리케이션 프로그래밍 인터페이스(API) 및/또는 저-레벨 라이브러리를 이용할 수 없을 수도 있다. 그 결과, 비-네이티브 애플리케이션은 특정 작업에서 제한된 기능성을 제공할 수 있다.
특히, 웹 애플리케이션(116)은 네이티브 애플리케이션에서 이용 가능한 계산 집약적 기능들을 제공할 수 없을 수도 있다. 이러한 계산 집약적 기능들에는 이하의 기능들이 포함될 수 있다(이에 한정되는 것은 아님).
* 시뮬레이션: 전산 유체 역학(CFD), 강체 동력학(rigid body dynamics), 충돌 검출, 분자 동력학, 3차원(3D) 애니메이션 등
* 신호 처리: 오디오 인코딩 및 디코딩, 비디오 인코딩 및 디코딩, 영상 처리, 음성 신호 처리 등.
* 인공 지능(AI): 데이터 마이닝, 기계 학습(machine learning), 게임 AI, 패턴 인식 등.
* 모델링: 금융 모델링, 수학적 모델링, 과학적 모델링, 3D 모델링 등.
* 분석: 수치 해석, 재무 분석, 공학 분석, 암호 해독, 통계 데이터 분석 등.
넓은 의미에서, 웹 애플리케이션(116)은 복잡한 수학 연산(가령, 부동 소수점 연산)의 실행을 요구하는 기능들을 효과적으로 구현할 수 없을 수도 있다. 예를 들어, 웹 애플리케이션(116)이 너무 느려서 고속 푸리에 변환(FFT), 몬테카를로법, 행렬 연산, 공액 구배법(conjugate gradient method), 및/또는 상당한 크기의 입력 데이터에 대한 회귀 기법을 수행할 수 없을 수도 있다.
계산 집약적 기능들을 사용자에게 제공하기 위하여, 웹 애플리케이션(116)과 관련된 네이티브 코드 모듈(118)을 이용하여 웹 애플리케이션(116)을 대신하여 계산 집약적 코드를 실행할 수 있다. 웹 애플리케이션(116)과 같이, 네이티브 코드 모듈(118)은 웹 브라우저(110)에 의해 하나 이상의 서버(가령, 서버 1(104), 서버 x(106))로부터 획득될 수 있다. 예를 들어, 웹 애플리케이션(116)은 인터넷상에서 네이티브 코드 모듈(118)에 하이퍼링크를 제공할 수 있다. 그 후 웹 브라우저(110)가, 하이퍼링크에서 특정된 URL(Uniform Resource Locator)로부터 네이티브 모드 모듈(118)을 다운로드할 수 있다. 대안적으로, 네이티브 코드 모듈(118)은 사용자에 의해 또는 외부 자원(가령, 또 다른 웹 애플리케이션 및/또는 네이티브 애플리케이션)에 의해 특정될 수 있다.
좀 더 구체적으로, 네이티브 코드 모듈(118)은 컴퓨팅 시스템(102)에 의해 제공된 하드웨어(가령, CPU)에서 직접 구동되는 네이티브 코드를 포함한 소프트웨어 모듈에 상응할 수 있다. 결과적으로, 네이티브 코드 모듈(118)을 이용하여, 컴퓨팅 시스템(102)에서 CPU 자원으로의 실질적 액세스를 요구하는 작업들을 수행할 수 있다. 특히, 네이티브 코드 모듈(118)은, 웹 애플리케이션(116)과 관련된 입력 데이터를 처리함으로써, 위에 나열된 계산 집약적 기능들 중 하나 이상을 웹 애플리케이션(116)의 사용자에게 제공할 수 있다. 이러한 입력 데이터는 입력 데이터를 이용하여 일련의 수학 계산(가령, 전술된 수학 연산)을 수행함으로써 처리될 수 있다.
처리된 입력 데이터로부터 획득된 출력 데이터가 웹 애플리케이션(166)에 제공되어 웹 애플리케이션(116)에 의해 이용될 수 있다. 예를 들어, 사용자를 위한 추가 작업을 수행하기 위하여, 출력 데이터가 웹 애플리케이션(116)에 의해 사용자에게 제공되거나 웹 애플리케이션(116)에 의해 이용될 수 있다. 이러한 출력 데이터는 또한, 웹 애플리케이션(116)과 관련된 그 밖의 다른 컴포넌트(가령, 네이티브 애플리케이션, 신뢰하는 플러그인, 및/또는 하나 이상의 서버(가령, 서버 1(104), 서버 x(106))에 입력 데이터로서 제공될 수 있다.
예를 들어, 웹 애플리케이션(116)은 컴퓨팅 시스템(102)의 사용자에게 오디오 또는 비디오 인코딩 및/또는 디코딩 능력을 제공할 수 있다. 먼저, 디코딩할 오디오 또는 비디오 및/또는 인코딩할 오디오 또는 비디오 스트림을 사용자가 특정할 수 있다. 그 다음, 웹 애플리케이션(116)이 서버(가령, 서버 1(104), 서버 x(106))로부터, 파일 또는 스트림을 위한 코덱을 포함한 네이티브 코드 모듈(가령, 네이티브 코드 모듈(118))을 획득할 수 있다. 그 후, 네이티브 코드 모듈이 컴퓨팅 시스템(102)의 CPU에서 실행되어, 상기 코덱의 인코딩 및/또는 디코딩 능력을 사용자에게 제공할 수 있다.
이와 유사하게, 웹 애플리케이션(116) 및 네이티브 코드 모듈(118)이 컴퓨팅 시스템(102)에 의해 이용되어, 분산형 컴퓨팅 클러스터에 있어서 계산 집약적 연산을 수행할 수 있다. 좀 더 구체적으로, 네이티브 코드 모듈(118)이 웹 애플리케이션(116)에 의해 획득되고 플러그인(108)에 의해 실행되어, 컴퓨팅 시스템(102) 상의 분산형 컴퓨팅 클러스터에서 노드를 형성할 수 있다. 계산 집약적 연산은 컴퓨팅 시스템(102)에서 CPU 저이용율(underutilization)의 기간 동안 네이티브 코드 모듈(118)에 의해 수행될 수 있다. 네이티브 코드 모듈(118)로부터의 출력이 서버(가령, 서버 1(104), 서버 x(106))로 전달되어, 복잡한 문제들(가령, 단백질 접힘, 미해결 수학 문제, 중력파의 검출, 및/또는 주가 예측)의 분석에 도움이 될 수 있다.
하나 이상의 실시예에서, 플러그인(108)이 다양한 수단을 포함하여 네이티브 코드 모듈(118)의 안전한 실행을 보장할 수 있다. 특히, 네이티브 코드 모듈(118)은, 실행 전에, 플러그인(108)에 의해 제공된 검증 장치(112)에 의해 검증될 수 있다. 네이티브 코드 모듈 검증은 2008년 5월 8일에 행해진 출원(발명의 명칭: "Method for Validating an Untrusted Native Code Module,")과 동일자에 출원되어 동시에 계류중인 비-가특허 출원(발명자: J. Bradley Chen, Matthew T. Harren, Matthew Papakipos, David C. Sehr, 및 Bennet S. Yee)에 기술되어 있으며, 위 출원은 본원에 참조로서 포함된다.
일단 네이티브 코드 모듈(118)이 검증되면, 네이티브 코드 모듈(118)은 플러그인(108)에 의해 제공되는 보안 런타임 환경(114)으로 로드될 수 있다. 보안 런타임 환경에서의 네이티브 코드 실행이 2008년 5월 8일에 행해진 출원(발명의 명칭: "Method for Safely Executing an Untrusted Native Code Module on a Computing Device")과 동일자에 출원되어 동시에 계류중인 비-가특허 출원(발명자: J. Bradley Chen, Matthew T. Harren, Matthew Papakipos, David C. Sehr, Bennet S. Yee, 및 Gregory Dardyk)에 기술되어 있으며, 위 출원은 본원에서 참조로서 포함된다.
더욱이, 네이티브 코드 모듈(118)이 하드웨어에서 직접 구동되는 바이너리 코드를 포함할 수 있기 때문에, 네이티브 코드 모듈(118)은 컴퓨팅 시스템(102)의 운영 체제, 웹 브라우저(110), 및/또는 컴퓨팅 시스템(102) 상의 그 밖의 다른 소프트웨어 컴포넌트에 관하여 플랫폼 독립적일 수 있다. 위에서 참고된 출원들에 기술되어 있는 바와 같이, 플러그인(108) 및/또는 네이티브 코드 모듈(118)은 또한, "팻 바이너리(fat binary)"와 바이너리 변환기(binary translator)의 이용을 포함한, 다양한 명령어 세트 아키텍처를 실행하기 위한 수단들을 포함할 수 있다.
도 2는 네이티브 코드 모듈에 의한 모듈간 통신(IMC) 버퍼의 이용을 보여준다. 특히, 도 2는 네이티브 코드 모듈(118)을 통한 데이터의 흐름을 보여준다. 도 2에 도시된 바와 같이, 네이티브 코드 모듈(118)에 의해 제1의 모듈간 통신(IMC) 버퍼(204)로부터 입력 데이터(208)가 획득된다. 전술된 바와 같이, 입력 데이터(208)는 웹 애플리케이션(116), 사용자, 및/또는 네이티브 애플리케이션에 의해 특정될 수 있다. 입력 데이터(208)는 또한, IMC 버퍼(204)에의 배치를 위한 다양한 자원(가령, 네트워크 상의 호스트, 디스크, 입력 장치(가령, 카메라, 마이크로폰 등), 및/또는 하드웨어 장치(가령, 사운드 카드, 비디오 카드 등) 포함)으로부터 획득될 수도 있다.
네이티브 코드 모듈(118)은 입력 데이터(208)를 처리하여 출력 데이터(210)를 획득하고, 이러한 출력 데이터는 제2의 IMC 버퍼(206) 내에 위치된다. 좀 더 구체적으로, 네이티브 코드 모듈(118)이 입력 데이터(208)를 이용하여 일련의 수학 계산을 수행함으로써 출력 데이터(210)를 획득할 수 있다. 예를 들어, 네이티브 코드 모듈(202)은 입력 데이터(208)를 이용하여 일련의 행렬 연산, 수학적 변환, 및/또는 역변환, 및/또는 그 밖의 다른 부동 소수점 연산을 수행할 수 있다. 그 후, 출력 데이터가 IMC 버퍼(206)로부터 획득되어 웹 애플리케이션(116) 및/또는 웹 애플리케이션(116)과 관련된 신뢰하는 플러그인(202)에 의해 이용될 수 있다. 특히, 웹 애플리케이션(116) 및/또는 신뢰하는 플러그인(202)은 출력 데이터(210)를 이용하여, 웹 애플리케이션(116)의 사용자 또는 웹 애플리케이션(116)과 관련된 개체를 위한 추가 작업들을 수행할 수 있다. 예를 들어, 출력 데이터(210)가, 사용자에게 제공되는 파일에 저장될 수 있고, 차트 또는 그래프로 표시될 수 있고, 분산형 컴퓨터 클러스터에 대한 데이터베이스에 업로드될 수 있고, 및/또는 그 밖의 다른 애플리케이션의 실행을 수정하는데 이용될 수 있다. 출력 데이터(210)는 또한, 도 3과 관련해 아래에서 논의되는 바와 같이, 3D 그래픽 모델을 애니메이션화하는데 이용될 수도 있다.
하나 이상의 실시예에서, IMC 버퍼(204-206)는 네이티브 코드 모듈(118)과 외부 컴포넌트(가령, 웹 애플리케이션(116) 및/또는 신뢰하는 플러그인(202)) 사이의 데이터-집약적 협력을 용이하게 하는데 사용되는 공유형 메모리 버퍼에 상응한다. 더욱이, 위에서 참조된 출원들에 기술되어 있는 바와 같이, IMC 버퍼(204-206)에 의한 데이터 공유가 IMC 런타임에 의해 관리될 수 있다.
도 3은 웹-기반 3D 애플리케이션(302)을 실행하는 시스템을 보여준다. 3D 애플리케이션(302)은 웹 브라우저(300)에서 실행되는 웹 애플리케이션에 상응할 수 있다. 이에 더하여, 3D 애플리케이션(302)은 3D 애플리케이션의 사용자에게 3D 그래픽 렌더링(3D graphics rendering)과 애니메이션 능력을 제공할 수 있다. 예를 들어, 3D 애플리케이션(302)은 3D 컴퓨터 게임, CAD 시스템, 및/또는 과학적 모델링 및/또는 시뮬레이션 애플리케이션일 수 있다. 더욱이, 3D 애플리케이션(302)은 자바스크립트와 같은 웹-기반 스크립트 언어로 작성될 수 있다. 그 결과, 3D 애플리케이션(302)이 실시간 3D 그래픽 렌더링과 애니메이션의 요구를 충족시킬 수 없을 수도 있다. 그 대신, 3D 애플리케이션(302)은 그래픽 렌더링을 그래픽 플러그인(306)으로 그리고 애니메이션을 플러그인(304)으로 언로드할 수 있다.
도 3에 도시된 바와 같이, 플러그인(304)은 CPU(318)에서 실행되는 물리 엔진(310)을 포함한다. 하나 이상의 실시예에서, 물리 엔진(310)은 플러그인(304)에 의해 제공되는 보안 런타임 환경 내에서 실행되는 네이티브 코드 모듈에 상응한다. 물리 엔진(310)은 3D 애플리케이션(302)에 의해 제공될 수 있고(예를 들어, 인터넷을 통해 다운로드됨), 플러그인(304)에서의 실행 전에 검증될 수 있다. 더욱이, 물리 엔진(310)은 보안 런타임 환경에 의해 설정된 제약 내에서 CPU(318)에서 직접 수행되는 네이티브 코드를 포함할 수 있다. 따라서, CPU(318) 상에서의 물리 엔진(310)의 실행으로 인해, 3D 애플리케이션(32)에 3D 애플리케이션(302) 내의 객체들의 실시간 애니메이션을 제공할 수 있다.
이와 유사하게, 그래픽 플러그인(306)은 그래픽 처리 유닛(GPU)(320)과 통신하는 렌더링 엔진(312)을 포함한다. 하나 이상의 실시예에서, 그래픽 플러그인(306)은 신뢰하는 플러그인(가령, 도 2의 신뢰하는 플러그인(202))에 상응한다. 다시 말하면, 그래픽 플러그인(306)이 웹 브라우저(300)에 의해 신뢰하는 자원으로부터 다운로드될 수 있고, 웹 브라우저(300)에 의해 설치되어 애플리케이션(302)을 위한 그래픽을 렌더링할 수 있다. 더욱이, 렌더링 엔진(312)은 GPU(320)를 이용하여 그래픽 렌더링에 관련된 계산을 수행함으로써 그래픽 하드웨어 가속을 제공할 수 있다. 그래픽 플러그인(306)과 렌더링 엔진(312)이, 발명의 명칭이 "WEB-BASED GRAPHICS RENDERING SYSTEM"인 출원과 동일자에 출원되어 동시에 계류중이고 발명자가 Vangelis Kokkevis, Matthew Papakipos, 및 Robin Green인 비-가특허 출원에 기술되어 있다.
하나 이상의 실시예에서, 3D 애플리케이션(302)이 물리 엔진(310)과 렌더링 엔진(312)의 공동 실행을 조정한다. 좀 더 구체적으로, 3D 애플리케이션(302)은 플러그인(304)과 그래픽 플러그인(306) 모두에 메소드(method)를 호출하여 그래픽 모델을 렌더링 엔진(312)으로 로드하고 대응하는 물리 모델을 물리 엔진(310)으로 로드할 수 있다. 반면, 플러그인(304)과 그래픽 플러그인(306)은 서로를 직접 연계하여 그래픽 모델들의 애니메이션과 렌더링을 동기화할 수 있다.
특히, 3D 애플리케이션(302)은 그래픽 모델을 묘사하는 입력 파일을 그래픽 플러그인(306)에 제공할 수 있다. 대안적으로, 3D 애플리케이션(302)이 그래픽 모델을 묘사하는 메소드 세트를 그래픽 플러그인(306)에 호출할 수 있다. 그 후, 이러한 그래픽 모델이 그래픽 플러그인(306)의 내부 메모리로 로드될 수 있다. 그 후, 3D 애플리케이션(302)은 플러그인(304) 및/또는 그래픽 플러그인(306)에 의해 제공되는 IMC 런타임에 의해 공유 메모리(308)의 영역에 하나 이상의 IMC 버퍼(314-316)의 할당을 요청할 수 있다. 그 후, 그래픽 플러그인(306)이 물리 시뮬레이션에 관한 데이터를 IMC 버퍼(314-316) 내로 로드할 수 있다. 예를 들어, 그래픽 플러그인(306)이 정점 위치(vertex position), 법선(normal), 삼각형 인덱스(triangle indice), 및/또는 변환 행렬을 IMC 버퍼(314-316) 내로 복사(copy)할 수 있다.
그래픽 모델을 애니메이션화하기 위하여, 물리 엔진(310)은 그래픽 플러그인(306)의 그래픽 모델에 상응하는 물리 모델을 형성하기 위하여 IMC 버퍼(314-316)로부터 불러올 수 있다. 물리 모델에 관한 추가 정보(가령, 파라미터)가 플러그인(304)에 의해 3D 애플리케이션(302)으로부터 획득될 수 있다. 그 다음, 물리 엔진(310)이 일련의 물리 시뮬레이션 계산을 수행하여 물리 모델을 업데이트할 수 있다. 예를 들어, 물리 엔진(310)은 물리 모델에서 객체에 작용하는 힘들(force)의 세트에 기초하여 정점 위치들(vertex position)과 속도들을 계산할 수 있다. 그 후, 플러그인(304)은 새로운 정점 위치, 속도, 및/또는 그 밖의 다른 데이터를 이용해 IMC 버퍼(314-316)를 업데이트할 수 있다. 마지막으로, 이러한 새로운 데이터가 그래픽 플러그인(306)에 의해 IMC 버퍼(314-316)로부터 읽히고, 이 데이터를 이용해 그래픽 모델을 업데이트한다. 그 후 렌더링 엔진(312)이, 렌더링을 위해, 업데이트된 그래픽 모델을 GPU(320)에 전달할 수 있다.
3D 애플리케이션(302)의 실행 동안 렌더링 엔진(312) 및 물리 엔진(310)에 의해 그래픽 렌더링과 애니메이션이 계속하여 제공될 수 있다. 예를 들어, 물리 엔진(310)은 그래픽 모델 내의 객체들이 힘의 영향을 받는 한 그래픽 모델을 계속하여 업데이트할 수 있다. 또한, 추가적 객체 및/또는 힘이 3D 애플리케이션(302)에 의해 그래픽 모델 및/또는 물리 모델에 도입될 수 있다. 이와 유사하게, 렌더링 엔진(312)은 3D 애플리케이션(302)에 의해 특정되고 및/또는 GPU(320)에 의해 지원되는 프레임 레이트(frame rate)로 그래픽 모델을 렌더링할 수 있다. 그 결과, 물리 엔진(310)과 렌더링 엔진(312)이 서로 다른 주파수에서 구동될 수 있다. 예를 들어, 물리 엔진(310)은 렌더링 엔진(312)보다 네 배 더 빠르게 구동될 수 있다. 그 결과, 그래픽 모델은, 물리 엔진에 의해 이루어지는 그래픽 모델에 대한 네 번의 업데이트 동안 렌더링 엔진(312)에 의해 한 번 업데이트될 수 있다.
도 4는 웹 애플리케이션의 실행 프로세스를 도시하는 흐름도를 보여준다. 하나 이상의 실시예에서, 단계들 중 하나 이상이 생략되거나, 반복되거나, 다른 순서로 수행될 수 있다. 따라서, 도 4에 도시된 단계들의 구체적인 배열이 본 발명 범위를 한정하는 것으로 해석되어서는 안된다.
처음에, 웹 애플리케이션이 웹 브라우저에 로드된다(동작(402)). 웹 애플리케이션은 웹 브라우저에 의해 서버로부터 획득될 수 있다. 더욱이, 이러한 웹 애플리케이션을 이용하여 재정 모델링, 계산 수학 또는 과학, 및/또는 AI와 같은 계산 집약적 기능들을 사용자에게 제공할 수 있다. 이러한 기능들을 실제적인 방식으로 구현하기 위하여, 웹 애플리케이션과 관련된 네이티브 코드 모듈이 획득될 수 있다(동작(404)). 예를 들어, 네이티브 코드 모듈이 웹 애플리케이션에 의해 특정된 자원으로부터 다운로드될 수 있다. 네이티브 코드 모듈은 또한, 네이티브 코드 모듈을 실행하기 전 검증될 수 있다(동작(406)). 네이티브 코드 모듈이 검증되지 않은 경우, 네이티브 코드 모듈은 실행되지 않고 버려진다.
네이티브 코드 모듈이 검증된 경우, 네이티브 코드 모듈은 보안 런타임 환경으로 로드된다(동작(408)). 보안 런타임 환경은 웹 브라우저와 관련된 플러그인에 의해 제공될 수 있다. 그 다음, 웹 애플리케이션과 관련된 입력 데이터가 네이티브 코드 모듈에 제공된다(동작(410)). 입력 데이터가 IMC 버퍼를 이용하여 네이티브 코드 모듈에 제공될 수 있다.
그 후, 입력 데이터가 네이티브 코드 모듈에 의해 처리되어 출력 데이터가 획득된다(동작(414)). 그 후 출력 데이터가 웹 애플리케이션에 제공되어(동작(416)) 웹 애플리케이션에 의해 이용될 수 있다. 입력 데이터에서와 같이, IMC 버퍼를 이용하여 출력 데이터가 웹 애플리케이션에 제공될 수 있다. 예를 들어, 상기 애플리케이션은 시뮬레이션, 신호 처리, 인공 지능, 모델링, 및/또는 분석을 위해 출력 데이터를 이용할 수 있다. 이에 더하여, 선택 사항으로서 출력 데이터가 웹 애플리케이션과 관련된 신뢰하는 플러그인에 제공되어(동작(418)) 신뢰하는 플러그인에 의해 이용될 수 있다. 예를 들어, 출력 데이터가 신뢰하는 플러그인에 의해 이용되어 웹 애플리케이션을 위한 그래픽을 렌더링할 수 있다.
본 발명의 시스템의 실시예에 관한 전술된 설명은 오직 예시와 설명 목적으로만 제시된 것이다. 이러한 설명이 본 발명 시스템을 개시된 형태로 제한하려는 의도는 아니다. 따라서, 많은 수정 형태와 변형 형태가 해당업계 종사자에게 명백할 것이다. 추가적으로, 위의 개시 내용이 본 발명 시스템을 제한하도록 의도되지 않는다. 본 발명의 범위는 기재된 청구항에 의해 정의된다.

Claims (27)

  1. 웹 애플리케이션 실행 방법에 있어서, 상기 실행 방법은,
    웹 브라우저에 웹 애플리케이션을 로드하는 단계;
    웹 애플리케이션과 관련된 네이티브 코드 모듈을 보안 런타임 환경으로 로드하는 단계;
    웹 애플리케이션과 관련된 입력 데이터를 네이티브 코드 모듈에 제공하는 단계;
    출력 데이터를 획득하기 위하여 네이티브 코드 모듈을 이용해 상기 입력 데이터를 처리하는 단계; 그리고
    웹 애플리케이션에 의한 이용을 위해, 웹 애플리케이션에 상기 출력 데이터를 제공하는 단계
    를 포함하는 것을 특징으로 하는 웹 애플리케이션 실행 방법.
  2. 제 1 항에 있어서,
    네이티브 코드 모듈을 보안 런타임 환경으로 로드하기 전에 네이티브 코드 모듈을 검증하는 단계를 추가로 포함하는 것을 특징으로 하는 웹 애플리케이션 실행 방법.
  3. 제 1 항에 있어서,
    상기 출력 데이터가 웹 브라우저와 관련된 신뢰하는 플러그인에 제공되어 상기 신뢰하는 플러그인에 의해 이용되는 것을 특징으로 하는 웹 애플리케이션 실행 방법.
  4. 제 3 항에 있어서,
    상기 출력 데이터는 웹 애플리케이션을 위한 그래픽을 표현하도록 상기 신뢰하는 플러그인에 의해 이용되는 것을 특징으로 하는 웹 애플리케이션 실행 방법.
  5. 제 1 항에 있어서,
    상기 네이티브 코드 모듈은 웹 애플리케이션을 위한 시뮬레이션, 신호 처리, 인공 지능, 모델링, 및 분석 중 하나 이상을 제공하는 것을 특징으로 하는 웹 애플리케이션 실행 방법.
  6. 제 1 항에 있어서,
    상기 보안 런타임 환경은 웹 브라우저와 관련된 플러그인에 의해 구현되는 것을 특징으로 하는 웹 애플리케이션 실행 방법.
  7. 제 1 항에 있어서,
    상기 웹 애플리케이션 및 상기 네이티브 코드 모듈이 플랫폼 독립적(platform independent)인 것을 특징으로 하는 웹 애플리케이션 실행 방법.
  8. 제 1 항에 있어서,
    상기 입력 데이터가 제1의 모듈간 통신(IMC) 버퍼를 이용하여 네이티브 코드 모듈에 제공되고, 상기 출력 데이터가 제2의 모듈간 통신(IMC) 버퍼를 이용하여 웹 애플리케이션에 제공되는 것을 특징으로 하는 웹 애플리케이션 실행 방법.
  9. 제 1 항에 있어서,
    입력 데이터를 처리하는 단계는, 입력 데이터를 이용하여 일련의 수학 계산을 수행하는 단계를 수반하는 것을 특징으로 하는 웹 애플리케이션 실행 방법.
  10. 웹 애플리케이션을 실행하는 시스템에 있어서, 상기 시스템은,
    웹 애플리케이션을 로드하도록 구성된 웹 브라우저;
    웹 애플리케이션과 관련된 네이티브 코드 모듈; 그리고
    네이티브 코드 모듈을 실행하도록 구성된 보안 런타임 환경
    을 포함하고, 상기 네이티브 코드 모듈은,
    웹 애플리케이션과 관련된 입력 데이터를 획득하도록;
    출력 데이터를 획득하기 위하여 상기 입력 데이터를 처리하도록; 그리고
    웹 애플리케이션에 의한 이용을 위해, 웹 애플리케이션에 상기 출력 데이터를 제공하도록
    구성되는 것을 특징으로 하는 웹 애플리케이션을 실행하는 시스템.
  11. 제 10 항에 있어서,
    네이티브 코드 모듈을 실행하기 전에 네이티브 코드 모듈을 검증하도록 구성된 검증 장치를 추가로 포함하는 것을 특징으로 하는 웹 애플리케이션을 실행하는 시스템.
  12. 제 11 항에 있어서,
    보안 런타임 환경 및 검증 장치가 웹 브라우저와 관련된 플러그인을 이용하여 구현되는 것을 특징으로 하는 웹 애플리케이션을 실행하는 시스템.
  13. 제 10 항에 있어서,
    웹 브라우저와 관련된 신뢰하는 플러그인을 추가로 포함하며, 출력 데이터가 상기 신뢰하는 플러그인에 제공되어 상기 신뢰하는 플러그인에 의해 이용되는 것을 특징으로 하는 웹 애플리케이션 실행 시스템.
  14. 제 13 항에 있어서,
    출력 데이터가 상기 신뢰하는 플러그인에 의해 이용되어 웹 애플리케이션에 대한 그래픽을 랜더링하는 것을 특징으로 하는 웹 애플리케이션 실행 시스템.
  15. 제 10 항에 있어서,
    입력 데이터를 네이티브 코드 모듈에 제공하도록 구성된 제1의 모듈간 통신(IMC) 버퍼; 그리고
    출력 데이터를 웹 애플리케이션에 제공하도록 구성된 제2의 모듈간 통신(IMC) 버퍼
    를 추가로 포함하는 것을 특징으로 하는 웹 애플리케이션 실행 시스템.
  16. 제 10 항에 있어서,
    네이티브 코드 모듈이 웹 애플리케이션을 위한 시뮬레이션, 신호 처리, 인공 지능, 모델링, 및 분석 중 하나 이상을 제공하는 것을 특징으로 하는 웹 애플리케이션 실행 시스템.
  17. 제 10 항에 있어서,
    웹 애플리케이션 및 네이티브 코드 모듈이 플랫폼 독립적(platform independent)인 것을 특징으로 하는 웹 애플리케이션 실행 시스템.
  18. 제 10 항에 있어서,
    상기 입력 데이터 처리에, 입력 데이터를 이용하여 일련의 수학 계산을 수행하는 것이 수반됨을 특징으로 하는 웹 애플리케이션 실행 시스템.
  19. 명령어들이 저장된 컴퓨터-판독 가능 저장 매체에 있어서, 상기 명령어들은 컴퓨터에 의해 실행되는 때 컴퓨터로 하여금 웹 애플리케이션 실행 방법을 수행하게 하고, 상기 실행 방법은,
    웹 브라우저에 웹 애플리케이션을 로드하는 단계;
    웹 애플리케이션과 관련된 네이티브 코드 모듈을 보안 런타임 환경으로 로드하는 단계;
    웹 애플리케이션과 관련된 입력 데이터를 네이티브 코드 모듈에 제공하는 단계;
    출력 데이터를 획득하기 위하여 네이티브 코드 모듈을 이용해 상기 입력 데이터를 처리하는 단계; 그리고
    웹 애플리케이션에 의한 이용을 위해 상기 출력 데이터를 웹 애플리케이션에 제공하는 단계
    를 포함하는 것을 특징으로 하는 컴퓨터-판독 가능 저장 매체.
  20. 제 19 항에 있어서, 상기 실행 방법은,
    네이티브 코드 모듈을 보안 런타임 환경으로 로드하기 전에 네이티브 코드 모듈을 검증하는 단계를 추가로 포함하는 것을 특징으로 하는 컴퓨터-판독 가능 저장 매체.
  21. 제 19 항에 있어서,
    출력 데이터가 웹 브라우저와 관련된 신뢰하는 플러그인에 제공되어 신뢰하는 플러그인에 의해 이용되는 것을 특징으로 하는 컴퓨터-판독 가능 저장 매체.
  22. 제 21 항에 있어서,
    출력 데이터가 신뢰하는 플러그인에 의해 이용되어 웹 애플리케이션에 대한 그래픽을 랜더링하는 것을 특징으로 하는 컴퓨터-판독 가능 저장 매체.
  23. 제 19 항에 있어서,
    네이티브 코드 모듈이 웹 애플리케이션을 위한 시뮬레이션, 신호 처리, 인공 지능, 모델링, 및 분석 중 하나 이상을 제공하는 것을 특징으로 하는 컴퓨터-판독 가능 저장 매체.
  24. 제 19 항에 있어서,
    상기 보안 런타임 환경이 웹 브라우저와 관련된 플러그인에 의해 구현되는 것을 특징으로 하는 컴퓨터-판독 가능 저장 매체.
  25. 제 19 항에 있어서,
    상기 웹 애플리케이션 및 네이티브 코드 모듈이 플랫폼 독립적(platform independent)인 것을 특징으로 하는 컴퓨터-판독 가능 저장 매체.
  26. 제 19 항에 있어서,
    입력 데이터가 제1의 모듈간 통신(IMC) 버퍼를 이용하여 네이티브 코드 모듈에 제공되고, 출력 데이터가 제2의 모듈간 통신(IMC) 버퍼를 이용하여 웹 애플리케이션에 제공되는 것을 특징으로 하는 컴퓨터-판독 가능 저장 매체.
  27. 제 19 항에 있어서,
    입력 데이터를 처리하는 단계는 입력 데이터를 이용하여 일련의 수학 계산을 수행하는 단계가 수반되는 것을 특징으로 하는 컴퓨터-판독 가능 저장 매체.
KR1020117000770A 2008-07-16 2009-07-06 네이티브 코드 모듈을 이용하여 애플리케이션을 실행하는 방법 및 시스템 KR101626429B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US8132708P 2008-07-16 2008-07-16
US61/081,327 2008-07-16
US12/266,602 2008-11-07
US12/266,602 US9176754B2 (en) 2008-07-16 2008-11-07 Method and system for executing applications using native code modules

Publications (2)

Publication Number Publication Date
KR20110034636A true KR20110034636A (ko) 2011-04-05
KR101626429B1 KR101626429B1 (ko) 2016-06-13

Family

ID=41531227

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117000770A KR101626429B1 (ko) 2008-07-16 2009-07-06 네이티브 코드 모듈을 이용하여 애플리케이션을 실행하는 방법 및 시스템

Country Status (10)

Country Link
US (3) US9176754B2 (ko)
EP (1) EP2310949A4 (ko)
KR (1) KR101626429B1 (ko)
CN (2) CN105320639B (ko)
AU (1) AU2009271181B2 (ko)
BR (1) BRPI0915911A2 (ko)
CA (1) CA2730128A1 (ko)
DE (1) DE202009019143U1 (ko)
HK (1) HK1159279A1 (ko)
WO (1) WO2010008955A2 (ko)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8413890B1 (en) * 2002-11-25 2013-04-09 Diebold Self-Service Systems Division Of Diebold, Incorporated Automated banking machine that operates responsive to data read from data bearing records
US8245049B2 (en) * 2004-06-14 2012-08-14 Microsoft Corporation Method and system for validating access to a group of related elements
US8626919B1 (en) 2008-11-07 2014-01-07 Google Inc. Installer-free applications using native code modules and persistent local storage
US8352967B2 (en) * 2008-11-10 2013-01-08 Google Inc. Safe browser plugins using native code modules
US9588803B2 (en) 2009-05-11 2017-03-07 Microsoft Technology Licensing, Llc Executing native-code applications in a browser
US8797337B1 (en) 2009-07-02 2014-08-05 Google Inc. Graphics scenegraph rendering for web applications using native code modules
US20110320475A1 (en) * 2010-06-25 2011-12-29 Nokia Corporation Methods, apparatuses and computer program products for extending the capabilities of platform-independent applications on devices
US9323921B2 (en) 2010-07-13 2016-04-26 Microsoft Technology Licensing, Llc Ultra-low cost sandboxing for application appliances
US8903705B2 (en) 2010-12-17 2014-12-02 Microsoft Corporation Application compatibility shims for minimal client computers
US8913067B1 (en) 2011-03-01 2014-12-16 Google Inc. GPU accelerated compositing on a multithreaded browser
US9535765B1 (en) * 2011-03-28 2017-01-03 Google Inc. Opportunistic job Processing of input data divided into partitions of different sizes
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US9342274B2 (en) 2011-05-19 2016-05-17 Microsoft Technology Licensing, Llc Dynamic code generation and memory management for component object model data constructs
US8881101B2 (en) 2011-05-24 2014-11-04 Microsoft Corporation Binding between a layout engine and a scripting engine
US20120317172A1 (en) 2011-06-13 2012-12-13 International Business Machines Corporation Mobile web app infrastructure
US9323871B2 (en) 2011-06-27 2016-04-26 Trimble Navigation Limited Collaborative development of a model on a network
US9195479B2 (en) * 2011-10-17 2015-11-24 Google Inc. Selective notification of native applications
US9898852B2 (en) 2011-11-15 2018-02-20 Trimble Navigation Limited Providing a real-time shared viewing experience in a three-dimensional modeling environment
EP2780826B1 (en) 2011-11-15 2020-08-12 Trimble Inc. Browser-based collaborative development of a 3d model
US9218692B2 (en) 2011-11-15 2015-12-22 Trimble Navigation Limited Controlling rights to a drawing in a three-dimensional modeling environment
US10868890B2 (en) 2011-11-22 2020-12-15 Trimble Navigation Limited 3D modeling system distributed between a client device web browser and a server
US9413538B2 (en) 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
US9389933B2 (en) 2011-12-12 2016-07-12 Microsoft Technology Licensing, Llc Facilitating system service request interactions for hardware-protected applications
KR101907660B1 (ko) 2011-12-15 2018-12-06 한국전자통신연구원 웹 기반의 운영체제를 탑재한 단말 장치 및 이를 이용한 서비스 제공 방법
US9223599B1 (en) * 2012-03-30 2015-12-29 Zynga Inc. Client-side server for client-side scripting languages
US9774657B2 (en) * 2012-05-11 2017-09-26 Samsung Electronics Co., Ltd. Browser engine interfacing for accelerated physics engine
US9411761B2 (en) 2012-06-22 2016-08-09 Microsoft Technology Licensing, Llc Platform neutral device protocols
US20140108532A1 (en) 2012-10-15 2014-04-17 Oracle International Corporation System and method for supporting guaranteed multi-point delivery in a distributed data grid
CN102929638B (zh) * 2012-11-07 2014-08-13 广州市动景计算机科技有限公司 扩展WebApp应用功能的方法和系统
US9197446B2 (en) 2012-12-12 2015-11-24 Google Inc. Address pinning
CN103049320B (zh) 2012-12-17 2016-05-04 广州市动景计算机科技有限公司 在浏览器中启动外部应用程序的方法和装置
US11907496B2 (en) 2013-02-08 2024-02-20 cloudRIA, Inc. Browser-based application management
US9553919B2 (en) * 2013-02-27 2017-01-24 Quixey, Inc. Techniques for sharing application states
US20140282032A1 (en) * 2013-03-15 2014-09-18 Microsoft Corporation Dynamically configuring user experiences with action uniform resource identifiers
WO2014176587A2 (en) 2013-04-26 2014-10-30 The Trustees Of Columbia University In The City Of New York Systems and methods for mobile applications
US9430452B2 (en) 2013-06-06 2016-08-30 Microsoft Technology Licensing, Llc Memory model for a layout engine and scripting engine
US9311407B2 (en) * 2013-09-05 2016-04-12 Google Inc. Native application search results
US10824756B2 (en) 2013-09-20 2020-11-03 Open Text Sa Ulc Hosted application gateway architecture with multi-level security policy and rule promulgations
US9979751B2 (en) 2013-09-20 2018-05-22 Open Text Sa Ulc Application gateway architecture with multi-level security policy and rule promulgations
EP2851833B1 (en) 2013-09-20 2017-07-12 Open Text S.A. Application Gateway Architecture with Multi-Level Security Policy and Rule Promulgations
JP5777843B1 (ja) * 2013-09-24 2015-09-09 株式会社 エーティーティーコンサルティング プロセッサ、処理装置、プログラム作成方法
CN104902464B (zh) * 2014-03-05 2018-10-26 中国移动通信集团江西有限公司 一种用户行为识别方法和装置
US9639511B2 (en) * 2014-11-24 2017-05-02 Google Inc. Systems and methods for editing a file in a non-native application using an application engine
US9832207B2 (en) * 2014-12-23 2017-11-28 Mcafee, Inc. Input verification
US20160191645A1 (en) * 2014-12-30 2016-06-30 Citrix Systems, Inc. Containerizing Web Applications for Managed Execution
US9448776B1 (en) * 2015-01-08 2016-09-20 AppNotch LLC Method and apparatus for converting a website into a native mobile application
US9961126B2 (en) * 2015-04-29 2018-05-01 International Business Machines Corporation Managing data access on a computing device
US11593075B2 (en) 2015-11-03 2023-02-28 Open Text Sa Ulc Streamlined fast and efficient application building and customization systems and methods
US9940218B2 (en) * 2016-02-15 2018-04-10 International Business Machines Corporation Debugging optimized code using fat binary
US11388037B2 (en) 2016-02-25 2022-07-12 Open Text Sa Ulc Systems and methods for providing managed services
US11120106B2 (en) * 2016-07-30 2021-09-14 Endgame, Inc. Hardware—assisted system and method for detecting and analyzing system calls made to an operating system kernel
US10394584B2 (en) * 2017-12-18 2019-08-27 Atlassian Pty Ltd Native execution bridge for sandboxed scripting languages
US10620980B2 (en) 2018-03-28 2020-04-14 Microsoft Technology Licensing, Llc Techniques for native runtime of hypertext markup language graphics content
KR102144578B1 (ko) * 2019-04-09 2020-08-13 넷마블 주식회사 동적으로 로드되는 모듈에 기초하여 어플리케이션을 실행하는 방법 및 장치
US11331576B2 (en) 2020-04-13 2022-05-17 Electronic Arts Inc. Animation and physics synchronization
EP4139900A1 (en) * 2020-04-24 2023-03-01 Robotify Labs Limited A computer implemented method of simulating a 3d object

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738469B1 (en) * 1998-05-20 2004-05-18 British Telecommunications Public Limited Company Method and system for performing dialling of a telephone number supplied from a data store
US20040193679A1 (en) * 2003-03-28 2004-09-30 General Motors Corporation Computerized system for network-based management of engineering projects
US20070157298A1 (en) * 2005-03-20 2007-07-05 Timothy Dingwall Method and system for providing user access to a secure application
US20080071884A1 (en) * 2006-09-15 2008-03-20 Emc Corporation Protecting client-side code

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5987245A (en) * 1996-07-01 1999-11-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture (#12) for a client-server state machine framework
US5974549A (en) 1997-03-27 1999-10-26 Soliton Ltd. Security monitor
US6275938B1 (en) * 1997-08-28 2001-08-14 Microsoft Corporation Security enhancement for untrusted executable code
US6128774A (en) 1997-10-28 2000-10-03 Necula; George C. Safe to execute verification of software
KR20010072477A (ko) 1998-08-13 2001-07-31 썬 마이크로시스템즈, 인코포레이티드 가상 머신 환경에서 네이티브 코드를 변환하고 실행하는방법 및 장치
CA2305249A1 (en) * 2000-04-14 2001-10-14 Branko Sarcanin Virtual safe
US7076042B1 (en) * 2000-09-06 2006-07-11 Cisco Technology, Inc. Processing a subscriber call in a telecommunications network
US6697971B1 (en) 2000-10-24 2004-02-24 Hewlett-Packard Development Company, L.P. System and method for detecting attempts to access data residing outside of allocated memory
EP1217799B1 (en) * 2000-12-22 2007-01-24 Sun Microsystems, Inc. Server side execution of application modules in a client and server system
WO2002101511A2 (en) * 2001-06-13 2002-12-19 Rivar Technologies, Inc. System and method for integrated web-based software code environment
US7581103B2 (en) 2001-06-13 2009-08-25 Intertrust Technologies Corporation Software self-checking systems and methods
US7069562B2 (en) 2001-12-12 2006-06-27 Sun Microsystems, Inc. Application programming interface for connecting a platform independent plug-in to a web browser
US7292990B2 (en) * 2002-04-08 2007-11-06 Topcoder, Inc. System and method for software development
US7152942B2 (en) 2002-12-02 2006-12-26 Silverbrook Research Pty Ltd Fixative compensation
US20040123117A1 (en) 2002-12-18 2004-06-24 Symantec Corporation Validation for behavior-blocking system
US7555538B2 (en) * 2002-12-26 2009-06-30 Research In Motion Limited System and method for building and execution of platform-neutral generic services' client applications
US7210121B2 (en) * 2003-02-07 2007-04-24 Sun Microsystems, Inc. Method and system for generating first class citizen application implementing native software application wrapper
US7337318B2 (en) * 2003-02-27 2008-02-26 International Business Machines Corporation Method and apparatus for preventing rogue implementations of a security-sensitive class interface
US7320129B2 (en) * 2003-05-14 2008-01-15 Hewlett-Packard Development Company, L.P. Native language verification system and method
US20050193380A1 (en) 2004-02-27 2005-09-01 Vitanov Kamen B. System and method for executing wireless applications using common UI components from a UI repository
US7596694B1 (en) 2004-03-08 2009-09-29 Hewlett-Packard Development Company, L.P. System and method for safely executing downloaded code on a computer system
US7380276B2 (en) 2004-05-20 2008-05-27 Intel Corporation Processor extensions and software verification to support type-safe language environments running with untrusted code
US20050283770A1 (en) 2004-06-18 2005-12-22 Karp Alan H Detecting memory address bounds violations
US7523450B2 (en) 2004-11-15 2009-04-21 International Business Machines Corporation Apparatus, system, and method for identifying fixed memory address errors in source code at build time
US20060143689A1 (en) 2004-12-21 2006-06-29 Docomo Communications Laboratories Usa, Inc. Information flow enforcement for RISC-style assembly code
US7337291B2 (en) 2005-01-14 2008-02-26 Microsoft Corporation Software memory access control
US7647589B1 (en) 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US20060212842A1 (en) * 2005-03-15 2006-09-21 Microsoft Corporation Rich data-bound application
US7941797B2 (en) 2005-10-27 2011-05-10 International Business Machines Corporation Dynamically providing native libraries and their dependencies
US20070107057A1 (en) 2005-11-10 2007-05-10 Docomo Communications Laboratories Usa, Inc. Method and apparatus for detecting and preventing unsafe behavior of javascript programs
US20070261124A1 (en) 2006-05-03 2007-11-08 International Business Machines Corporation Method and system for run-time dynamic and interactive identification of software authorization requirements and privileged code locations, and for validation of other software program analysis results
US7814465B2 (en) 2006-05-12 2010-10-12 Oracle America, Inc. Method and apparatus for application verification
US20080016339A1 (en) 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware
JP2008027306A (ja) 2006-07-24 2008-02-07 Aplix Corp ユーザ空間仮想化システム
US8869294B2 (en) 2006-12-05 2014-10-21 Intel Corporation Mitigating branch prediction and other timing based side channel attacks
US8074274B2 (en) 2006-12-29 2011-12-06 Intel Corporation User-level privilege management
US8141066B2 (en) * 2007-01-12 2012-03-20 Hewlett-Packard Development Company, L.P. Cross-platform architecture for replicating profiling scheme in a computer system
US8321861B2 (en) * 2008-02-20 2012-11-27 Arm Limited Non-native program execution across multiple execution environments
US8424082B2 (en) * 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US9058483B2 (en) * 2008-05-08 2015-06-16 Google Inc. Method for validating an untrusted native code module
US8368705B2 (en) * 2008-07-16 2013-02-05 Google Inc. Web-based graphics rendering system
US8151349B1 (en) 2008-07-21 2012-04-03 Google Inc. Masking mechanism that facilitates safely executing untrusted native code
WO2012129639A2 (en) * 2011-03-31 2012-10-04 Irdeto Canada Corporation Method of securing non-native code
EP3026560A1 (en) * 2014-11-28 2016-06-01 Thomson Licensing Method and device for providing verifying application integrity

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738469B1 (en) * 1998-05-20 2004-05-18 British Telecommunications Public Limited Company Method and system for performing dialling of a telephone number supplied from a data store
US20040193679A1 (en) * 2003-03-28 2004-09-30 General Motors Corporation Computerized system for network-based management of engineering projects
US20070157298A1 (en) * 2005-03-20 2007-07-05 Timothy Dingwall Method and system for providing user access to a secure application
US20080071884A1 (en) * 2006-09-15 2008-03-20 Emc Corporation Protecting client-side code

Also Published As

Publication number Publication date
WO2010008955A3 (en) 2010-04-01
EP2310949A4 (en) 2012-08-01
EP2310949A2 (en) 2011-04-20
CN105320639A (zh) 2016-02-10
WO2010008955A2 (en) 2010-01-21
US20160048677A1 (en) 2016-02-18
US20100017461A1 (en) 2010-01-21
CN102099798B (zh) 2015-11-25
DE202009019143U1 (de) 2017-01-20
AU2009271181B2 (en) 2015-02-12
BRPI0915911A2 (pt) 2018-05-29
KR101626429B1 (ko) 2016-06-13
CA2730128A1 (en) 2010-01-21
US20230024083A1 (en) 2023-01-26
US9176754B2 (en) 2015-11-03
AU2009271181A1 (en) 2010-01-21
HK1159279A1 (zh) 2012-07-27
CN102099798A (zh) 2011-06-15
CN105320639B (zh) 2018-12-18
US11514156B2 (en) 2022-11-29

Similar Documents

Publication Publication Date Title
KR101626429B1 (ko) 네이티브 코드 모듈을 이용하여 애플리케이션을 실행하는 방법 및 시스템
US10026211B2 (en) Hardware-accelerated graphics for web applications using native code modules
US10026147B1 (en) Graphics scenegraph rendering for web applications using native code modules
US9009739B2 (en) Safe browser plugins using native code modules
US8675000B2 (en) Command buffers for web-based graphics rendering
Anttonen et al. Transforming the web into a real application platform: new technologies, emerging trends and missing pieces
US8799928B1 (en) System services for native code modules
EP3752914B1 (en) Techniques for native runtime of hypertext markup language graphics content
CN110727423A (zh) 跨平台开发行动应用程序的方法及其系统

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: 20190517

Year of fee payment: 4