KR100632403B1 - Method for software streaming and caching according to runtime coefficient among code modules - Google Patents

Method for software streaming and caching according to runtime coefficient among code modules Download PDF

Info

Publication number
KR100632403B1
KR100632403B1 KR1020050043234A KR20050043234A KR100632403B1 KR 100632403 B1 KR100632403 B1 KR 100632403B1 KR 1020050043234 A KR1020050043234 A KR 1020050043234A KR 20050043234 A KR20050043234 A KR 20050043234A KR 100632403 B1 KR100632403 B1 KR 100632403B1
Authority
KR
South Korea
Prior art keywords
correlation information
code
software
streaming
code module
Prior art date
Application number
KR1020050043234A
Other languages
Korean (ko)
Other versions
KR20060061752A (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 KR20060061752A publication Critical patent/KR20060061752A/en
Application granted granted Critical
Publication of KR100632403B1 publication Critical patent/KR100632403B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

1. 청구범위에 기재된 발명이 속한 기술분야1. TECHNICAL FIELD OF THE INVENTION

본 발명은 코드 모듈 간의 상관 관계 정보에 따른 소프트웨어 스트리밍 방법 및 그에 따른 코드 모듈 간의 상관 관계 정보를 이용한 캐싱 방법에 관한 것임.The present invention relates to a software streaming method based on correlation information between code modules and a caching method using correlation information between code modules.

2. 발명이 해결하려고 하는 기술적 과제2. The technical problem to be solved by the invention

본 발명은 유/무선 통신망을 통해 소프트웨어를 스트리밍하는 경우, 예를 들면 실시간성이 요구되는 멀티미디어 프로그램을 스트리밍하는 경우 해당 소프트웨어를 구성하는 코드 모듈(코드 블럭) 간의 상관 관계 정보(호출 관계 등)에 따라 함께 혹은 연이어 스트리밍하고, 단말기(예 : 퍼스널 컴퓨터)에서 상기 소프트웨어를 실행하는 도중에 코드 모듈 간의 상관 관계 정보에 따라 코드 모듈의 캐싱(caching) 여부를 결정하도록 함으로써, 스트리밍 방식으로 전송되는 소프트웨어의 실행 정지 시간(suspension time)을 줄이기 위한, 코드 모듈 간의 상관 관계 정보에 따른 소프트웨어 스트리밍 방법 및 그에 따른 코드 모듈 간의 상관 관계 정보를 이용한 캐싱 방법을 제공하는데 그 목적이 있음.According to the present invention, when streaming software through a wired / wireless communication network, for example, when streaming a multimedia program requiring real time, the correlation information (calling relationship, etc.) between code modules (code blocks) constituting the software is included. Streaming together or successively, and executing the software transmitted in a streaming method by determining whether to cache the code modules according to correlation information between the code modules while executing the software in a terminal (for example, a personal computer). An object of the present invention is to provide a software streaming method based on correlation information between code modules and a caching method using correlation information between code modules to reduce suspension time.

3. 발명의 해결방법의 요지3. Summary of Solution to Invention

본 발명은, 소프트웨어 스트리밍 방법에 있어서, 소프트웨어를 다수의 코드 모듈로 분할하여 상관 관계 정보를 부여하는 코드 모듈 생성 단계; 외부로부터 소프트웨어 스트리밍을 요청받는 요청 접수 단계; 및 해당 소프트웨어의 코드 모듈을 스트리밍하되, 코드 모듈 간의 상관 관계 정보에 따라 스트리밍하는 스트리밍 단계 를 포함한다.The present invention provides a software streaming method, comprising: generating a code module for dividing software into a plurality of code modules to give correlation information; A request receiving step of receiving a software streaming request from the outside; And a streaming step of streaming the code module of the corresponding software, according to correlation information between the code modules.

4. 발명의 중요한 용도4. Important uses of the invention

본 발명은 소프트웨어 스트리밍 방법 등에 이용됨.The invention is used in software streaming methods and the like.

코드 모듈 간의 상관 관계 정보, 호출 관계 및 그 비율, 프로파일링, 소프트웨어 스트리밍 Correlation information between code modules, call relationships and their proportions, profiling, software streaming

Description

코드 모듈 간의 상관 관계 정보에 따른 소프트웨어 스트리밍 방법 및 그에 따른 코드 모듈 간의 상관 관계 정보를 이용한 캐싱 방법{Method for software streaming and caching according to runtime coefficient among code modules}Software streaming method based on correlation information between code modules and caching method using correlation information between code modules {Method for software streaming and caching according to runtime coefficient among code modules}

도 1 은 본 발명이 적용되는 소프트웨어 스트리밍 서버와 단말기의 연결 관계에 대한 일실시예 설명도,1 is a diagram illustrating an embodiment of a connection relationship between a software streaming server and a terminal to which the present invention is applied;

도 2 는 상기 도 1의 소프트웨어 스트리밍 서버에서의 코드 모듈 생성 과정에 대한 일실시예 흐름도,2 is a flowchart illustrating a code module generation process in the software streaming server of FIG. 1;

도 3 은 본 발명에 따른 코드 모듈 간의 상관 관계 정보에 따른 소프트웨어 스트리밍 방법에 대한 일실시예 흐름도,3 is a flowchart illustrating a software streaming method according to correlation information between code modules according to the present invention;

도 4 는 상기 도 1의 단말기에서 코드 모듈 간의 상관 관계 정보를 이용한 캐싱 방법에 대한 일실시예 흐름도이다.4 is a flowchart illustrating a caching method using correlation information between code modules in the terminal of FIG. 1.

* 도면의 주요 부분에 대한 부호의 설명 *Explanation of symbols on the main parts of the drawings

10 : 소프트웨어 스트리밍 서버 20 : 단말기10: software streaming server 20: terminal

본 발명은 코드 모듈 간의 상관 관계 정보에 따른 소프트웨어 스트리밍 방법 및 그에 따른 코드 모듈 간의 상관 관계 정보를 이용한 캐싱 방법에 관한 것으로, 더욱 상세하게는 유/무선 통신망을 통해 소프트웨어를 스트리밍하는 경우, 예를 들면 실시간성이 요구되는 멀티미디어 프로그램을 스트리밍하는 경우 해당 소프트웨어를 구성하는 코드 모듈(코드 블럭) 간의 상관 관계 정보(호출 관계 등)에 따라 함께 혹은 연이어 스트리밍하고, 단말기(예 : 퍼스널 컴퓨터)에서 상기 소프트웨어를 실행하는 도중에 코드 모듈 간의 상관 관계 정보에 따라 코드 모듈의 캐싱(caching) 여부를 결정하도록 함으로써, 스트리밍 방식으로 전송되는 소프트웨어의 실행 정지 시간(suspension time)을 줄이기 위한, 코드 모듈 간의 상관 관계 정보에 따른 소프트웨어 스트리밍 방법 및 그에 따른 코드 모듈 간의 상관 관계 정보를 이용한 캐싱 방법에 관한 것이다.The present invention relates to a software streaming method based on correlation information between code modules and a caching method using correlation information between code modules according to the present invention. More particularly, when streaming software via wired / wireless communication networks, for example, When streaming a multimedia program that requires real-time, streaming together or successively according to correlation information (calling relationship, etc.) between code modules (code blocks) constituting the corresponding software, and streaming the software from a terminal (for example, a personal computer). During execution, it is determined whether to cache the code module according to the correlation information between the code modules, and according to the correlation information between the code modules to reduce the suspension time of the software transmitted by the streaming method. Software streaming room And to a caching method using the correlation information between a code module thereof.

그리고, 본 발명에서 상관 관계 정보는 하나의 소프트웨어를 구성하는 코드 모듈(코드 블럭) 간의 호출 관계 및 그 비율, 코드 실행 시간(수행 시간) 및 그 비율 등을 포함하는 정보를 말하는 것으로, 통상의 프로파일링 과정에 의해 생성된다. 여기서, 프로파일링 과정을 위한 소프트웨어로는 "intel V-Tune", "Rational Rose Quantify", "Numega True Time" 등을 일예로 들 수 있다.In the present invention, the correlation information refers to information including a call relationship between code modules (code blocks) constituting one piece of software and the ratio thereof, code execution time (execution time), and the ratio thereof. Created by the ring process. The software for the profiling process may include, for example, "intel V-Tune", "Rational Rose Quantify", and "Numega True Time".

최근에는 영화, 게임 등과 같은 콘텐츠의 발달과, 유/무선 통신망의 전송 능력 향상으로 멀티미디어 콘텐츠를 서버로부터 스트리밍하여 감상하는 경우가 빈번 히 발생하고 있다. 상기의 경우에 스트리밍(streaming)은 대용량 콘텐츠를 전부 다운로드하지 않고도 콘텐츠의 감상을 시작할 수 있도록 하는 기술이다.Recently, due to the development of contents such as movies and games, and the improvement of transmission capability of wired / wireless communication networks, multimedia contents are frequently streamed and viewed from a server. In this case, streaming is a technology that allows users to start watching content without downloading all of the large content.

이와 유사하게, 소프트웨어 스트리밍은 서버(즉, 소프트웨어 스트리밍 서버)에 설치된 소프트웨어를 클라이언트(예 : 퍼스널 컴퓨터, 넷피씨)로 스트리밍하는 기술로서, 기존의 소프트웨어 다운로드와 비교하여 다음의 차이점을 가진다.Similarly, software streaming is a technique for streaming software installed on a server (i.e., a software streaming server) to a client (e.g., a personal computer, Net PC), and has the following differences compared to a conventional software download.

즉, 소프트웨어는 클라이언트로 복제되거나 설치되지 않고, 클라이언트 내에는 소프트웨어의 실행 코드와 이미지가 동시에 존재하지 않으며, 소프트웨어의 실행 코드는 실행을 위해 일시적으로 저장되고 수행된다. That is, the software is not duplicated or installed on the client, and the executable code and the image of the software do not exist simultaneously in the client, and the executable code of the software is temporarily stored and executed for execution.

그리고, 소프트웨어 스트리밍은 상기의 특징으로 인해 다음의 장점을 가진다. 즉, 전체 사용자 수 만큼이 아닌 동시 최대 사용자 수 만큼의 소프트웨어 라이센스를 보유하면 되고 소프트웨어의 유지/보수/업그레이드 등이 단일 서버 상에서 모두 수행되므로, 소프트웨어의 구입 및 관리 비용을 크게 절감할 수 있는 장점이 있다. 또한, 클라이언트에서의 설치 과정이 필요하지 않으므로 저장 공간(하드 디스크)을 절약할 수 있으며, 사용자는 적정 성능의 단말기(예를 들면, 넷피씨)를 이용하여서도 언제든지 소프트웨어를 스트리밍하여 실행시킬 수 있는 장점이 있다. 특히, 소프트웨어 스트리밍은 유비쿼터스(Ubiquitous)의 등장으로 더욱 주목받고 있는 기술이다.In addition, software streaming has the following advantages due to the above characteristics. In other words, you need to have software licenses for the maximum number of users at the same time instead of the total number of users, and software maintenance, upgrades, etc. are all performed on a single server, which greatly reduces the cost of purchasing and managing software. have. In addition, since no installation process is required on the client, storage space (hard disk) can be saved, and the user can stream and execute the software at any time using a terminal (for example, NetPC) having a proper performance. There is an advantage. In particular, software streaming is attracting more attention due to the emergence of ubiquitous.

한편, 상기와 같은 소프트웨어 스트리밍 기술은 하나의 소프트웨어를 다수의 소단위로 분할하여 전송하는 것으로, 이를 구현하기 위한 종래 기술들을 살펴보면 다음과 같다.On the other hand, such a software streaming technology is to transmit one piece of software divided into a plurality of sub-units, looking at the prior art for implementing this as follows.

먼저, 모듈 단위로 소프트웨어를 분할하여 각 모듈별로 전송되도록 하되, 클라이언트 상에서 전송되지 않은 모듈로의 수행 범위 이동이 발생함에 따라 해당 모듈이 전송되도록 하는 방식으로 스트리밍 기술이 구현될 수 있다. 일예로, 자바 프로그램은 다수의 클래스(class) 파일로 이루어지므로 각 클래스 파일의 수행이 요구되는 시점에 클라이언트로 해당 클래스 파일이 전송되는 방식으로 스트리밍 기술이 구현될 수 있다. 그런데, 상기 종래 기술의 경우 자바 프로그램 등과 같이 모듈 단위의 분할이 용이한 프로그램 언어에 그 적용이 제한되고, 특히 자바 프로그램의 경우에는 클라이언트에 자바 가상 머신(java virtual machine)이 탑재되어 있어야 하는 문제점이 있었다. 뿐만 아니라, 각 모듈별로 크기가 일정하지 않으므로 클라이언트에서 실행 정지 시간(suspension time)을 예측할 수 없는 문제점이 있었다.First, the streaming technology may be implemented in such a manner that the software is divided into modules and transmitted for each module, but the corresponding module is transmitted as the execution range shifts from the client to the untransmitted module. For example, since a Java program is composed of a plurality of class files, the streaming technology may be implemented in such a manner that the corresponding class file is transmitted to the client when the execution of each class file is required. However, in the related art, the application thereof is limited to a programming language that can be easily divided into modules such as a Java program. In particular, in the case of a Java program, a Java virtual machine must be mounted on a client. there was. In addition, since the size is not constant for each module, there is a problem that can not predict the suspension time (suspension time) in the client.

다른 종래 기술로서, 소프트웨어를 유/무선 통신망을 통해 전송하기 위한 기본 단위로 분할하여 각 전송 단위별로 스트리밍되도록 할 수도 있다. 여기서는, 전송 단위의 크기가 일정하므로 클라이언트에서는 예측 가능한 실행 정지 시간(suspension time)을 갖게 되는 장점이 있다. 그러나, 소프트웨어의 실행 정지 시간(suspension time)을 일정하게 하는 것과 최소화하는 것은 별개의 사안이므로, 게임 프로그램 등과 같은 멀티미디어 프로그램의 실시간성을 보장하지 못할 수 있는 문제점이 있었다.As another conventional technology, software may be divided into basic units for transmitting through a wired / wireless communication network to be streamed for each transmission unit. Here, since the size of the transmission unit is constant, the client has an advantage of having a predictable suspension time. However, since keeping and minimizing the suspension time of the software is a separate matter, there is a problem that it may not be possible to guarantee the real time of the multimedia program such as a game program.

또 다른 종래 기술로서, 소프트웨어 스트리밍을 위해 소프트웨어의 실행 코드에 해당되는 소스 코드(source code)가 전송되도록 할 수도 있다. 그런데, 이 경우에는 소스 코드의 전송으로 말미암아 보안상의 문제가 발생할 가능성이 높고, 소 스 코드를 보유하고 있지 않은 경우에는 스트리밍 서비스를 제공할 수 없는 문제점이 있었다. 그리고, 통신망을 통한 전송 시간 외에 클라이언트에서의 컴파일 시간이 실행 정지 시간(suspension time)에 추가적으로 포함되고, 클라이언트에 컴파일러가 탑재되어야 하는 문제점이 있었다.As another conventional technique, source code corresponding to executable code of software may be transmitted for software streaming. However, in this case, there is a high possibility that a security problem occurs due to the transmission of the source code, and there is a problem that a streaming service cannot be provided when the source code is not possessed. In addition to the transmission time through the communication network, the compilation time in the client is additionally included in the suspension time, and there is a problem in that a compiler should be mounted in the client.

또한, 상기와 같은 종래 기술들의 공통적인 문제점을 살펴보면, 상기 종래 기술들에서는 소프트웨어의 수행 방식에 대한 정보가 제공되지 않으므로, 즉 종래 기술에 따른 소프트웨어 스트리밍 기술은 클라이언트의 요청에 따라 해당 모듈을 단순 전송하는 방식으로 동작하므로, 예를 들어 임의의 두 모듈이 상호 호출하는 경우에는 동일한 코드 모듈이 반복적으로 재전송될 수도 있는 문제점이 있었다.In addition, looking at the common problems of the prior arts, since the information on how to perform the software is not provided in the prior arts, that is, the software streaming technology according to the prior art simply transmits the module at the request of the client In this case, the same code module may be repeatedly retransmitted if any two modules call each other.

또한, 종래 기술은 소프트웨어가 실행될 클라이언트의 실행 환경(예 : 탑재된 프로그램, 메모리 크기) 및 네트워크 속도가 고려되지 않는 문제점이 있었다. In addition, the prior art has a problem that the execution environment (for example, a loaded program, memory size) and the network speed of the client on which the software is to be executed are not considered.

본 발명은 상기 문제점을 해결하기 위하여 제안된 것으로, 유/무선 통신망을 통해 소프트웨어(예를 들면, 실시간성이 요구되는 멀티미디어 프로그램)를 스트리밍하는 경우 해당 소프트웨어를 구성하는 코드 모듈(코드 블럭) 간의 상관 관계 정보(코드 모듈 간의 호출 관계 등)에 따라 함께 혹은 연이어 코드 모듈을 스트리밍하도록 함으로써, 상기 소프트웨어를 실행중인 단말기에서의 실행 정지 시간(suspension time)을 줄이기 위한, 코드 모듈 간의 상관 관계 정보에 따른 소프트웨어 스트리밍 방법을 제공하는데 그 목적이 있다.The present invention has been proposed to solve the above problems, and when streaming software (for example, a multimedia program requiring real time) through a wired / wireless communication network, correlation between code modules (code blocks) constituting the software Software according to the correlation information between code modules to reduce the suspension time in the terminal running the software by streaming the code module together or successively according to the relationship information (call relationship between the code modules, etc.). The purpose is to provide a streaming method.

즉, 본 발명은 소프트웨어를 다수의 코드 모듈(서로 크기가 다를 수 있음)로 분해하여 스트리밍하도록 하되, 확률상 상관 관계가 높은 코드 모듈을 우선적으로 스트리밍하도록 함으로써, 임의의 코드 모듈이 실행된 후 다음 차례에 실행되어야할 코드 모듈의 전송 지연에 따른 실행 정지 시간(suspension time)을 줄여 사용자의 만족도를 향상시키기 위한, 코드 모듈 간의 상관 관계 정보에 따른 소프트웨어 스트리밍 방법을 제공하는데 그 목적이 있다.That is, according to the present invention, the software is decomposed into a plurality of code modules (which may be different in size) and streamed, but by preferentially streaming a code module having a high probability correlation, the arbitrary code module is executed after An object of the present invention is to provide a software streaming method based on correlation information between code modules to improve user satisfaction by reducing suspension time due to transmission delay of a code module to be executed in turn.

또한, 본 발명은, 상관 관계가 높은 코드 모듈을 우선적으로 스트리밍받아 실행할 뿐만 아니라, 각 코드 모듈에 대한 캐싱 여부(캐쉬 메모리 저장 여부)를 결정할 때 코드 모듈 간의 상관 관계 정보를 이용하여 재실행될 가능성이 높은 코드 모듈을 캐싱하도록 함으로써, 소프트웨어의 실행 정지 시간(suspension time)을 줄이기 위한, 코드 모듈 간의 상관 관계 정보를 이용한 캐싱 방법을 제공하는데 다른 목적이 있다.In addition, the present invention not only preferentially streams and executes highly correlated code modules, but also may be re-executed by using correlation information between the code modules when determining whether to cache each cache (whether cache memory is stored). Another object of the present invention is to provide a caching method using correlation information between code modules to reduce the suspension time of software by allowing caching of high code modules.

즉, 본 발명은 캐쉬 메모리의 용량 부족으로 임의의 코드 모듈을 제거해야할 경우 상관 관계 정보를 이용하여 앞으로 재실행될 가능성이 높은 코드 모듈을 제거하지 않도록 함으로써, 소프트웨어의 실행 정지 시간(suspension time)을 최소화할 수 있는 캐싱 알고리즘을 제공하기 위한, 코드 모듈 간의 상관 관계 정보를 이용한 캐싱 방법을 제공하는데 다른 목적이 있다.That is, the present invention minimizes the suspension time of the software by not removing code modules that are likely to be re-executed in the future by using correlation information when it is necessary to remove an arbitrary code module due to insufficient capacity of the cache memory. Another object of the present invention is to provide a caching method using correlation information between code modules to provide a caching algorithm.

본 발명의 또 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있으며, 본 발명의 실시예에 의해 보다 분명하게 알게 될 것이다. 또한, 본 발명의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음 을 쉽게 알 수 있을 것이다.Further objects and advantages of the present invention can be understood by the following description, and will be more clearly understood by the embodiments of the present invention. It will also be readily apparent that the objects and advantages of the present invention can be realized by the means and combinations thereof indicated in the claims.

상기 목적을 달성하기 위한 본 발명의 방법은, 소프트웨어 스트리밍 방법에 있어서, 소프트웨어를 다수의 코드 모듈로 분할하여 상관 관계 정보를 부여하는 코드 모듈 생성 단계; 외부로부터 소프트웨어 스트리밍을 요청받는 요청 접수 단계; 및 해당 소프트웨어의 코드 모듈을 스트리밍하되, 코드 모듈 간의 상관 관계 정보에 따라 스트리밍하는 스트리밍 단계를 포함한다.According to an aspect of the present invention, there is provided a software streaming method, comprising: generating a code module for providing correlation information by dividing software into a plurality of code modules; A request receiving step of receiving a software streaming request from the outside; And a streaming step of streaming the code module of the corresponding software, according to correlation information between the code modules.

한편, 상기 다른 목적을 달성하기 위한 본 발명의 방법은, 캐싱 방법에 있어서, 상관 관계 정보가 부여된 임의의 코드 모듈을 실행하고 있는 실행 단계; 새로운 코드 모듈의 캐쉬 메모리 로딩을 위해, 기존에 로딩된 코드 모듈을 제거해야 함을 확인하는 확인 단계; 각 코드 모듈에 부여된 상관 관계 정보를 이용하여 기존에 로딩된 코드 모듈 중 일부를 선택하여 제거하는 캐싱 결정 단계; 및 새로운 코드 모듈을 캐쉬 메모리에 로딩하는 로딩 단계를 포함한다.On the other hand, the method of the present invention for achieving the above object, the caching method, the execution step of executing any code module to which the correlation information is given; A confirmation step of confirming that an existing loaded code module should be removed for loading a cache memory of a new code module; A caching determination step of selecting and removing some of the previously loaded code modules by using correlation information assigned to each code module; And a loading step of loading the new code module into the cache memory.

상술한 목적, 특징 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해 질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실 시예를 상세히 설명하기로 한다.The above objects, features and advantages will become more apparent from the following detailed description taken in conjunction with the accompanying drawings, whereby those skilled in the art may easily implement the technical idea of the present invention. There will be. In addition, in describing the present invention, when it is determined that the detailed description of the known technology related to the present invention may unnecessarily obscure the gist of the present invention, the detailed description thereof will be omitted. Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings.

본 발명은, 코드 모듈(코드 블럭) 간의 상관 관계 정보(호출 관계 및 그 비율 등)에 따라 상관 관계가 높은 코드 모듈이 연이어 혹은 함께 클라이언트로 스트리밍되도록 하여 코드 모듈의 전송 지연에 따른 소프트웨어의 실행 정지 시간(suspension time)을 최소화할 수 있도록 한다. According to the present invention, code modules having a high correlation are streamed sequentially or together according to correlation information (call relationship and ratio thereof) between code modules (code blocks) so that execution of software is stopped due to delay in transmission of code modules. Minimize the suspension time.

또한, 본 발명은 소프트웨어 수행중, 상관 관계 정보에 따라 코드 모듈의 캐싱 여부가 결정되도록 하여 캐싱 실패에 따른 소프트웨어의 실행 정지 시간(suspension time)을 최소화할 수 있도록 한다. 즉, 앞으로 실행될 가능성이 높은 코드 모듈은 캐시 메모리에서 제거되지 않도록 한다.In addition, the present invention allows to determine whether to cache the code module according to the correlation information during the execution of the software, thereby minimizing the suspension time of the software due to the caching failure. That is, code modules that are more likely to run in the future are not removed from cache memory.

도 1 은 본 발명이 적용되는 소프트웨어 스트리밍 서버와 단말기의 연결 관계에 대한 일실시예 설명도이다.1 is a diagram illustrating an embodiment of a connection relationship between a software streaming server and a terminal to which the present invention is applied.

도 1에 도시된 바와 같이, 본 발명이 적용되는 소프트웨어 스트리밍 서버(10)와 단말기(20)는 유/무선 통신망(예 : 유/무선 인터넷)을 통해 서로 연결되어 있고, 단말기(20)의 요청에 따라 소프트웨어 스트리밍 서버(10)로부터 단말기(20)로 코드 모듈(코드 블럭)이 실시간 스트리밍된다. 이 때, 단말기(20)는 퍼스널 컴퓨터, 넷피씨(NetPC) 등이 될 수 있다.As shown in FIG. 1, the software streaming server 10 and the terminal 20 to which the present invention is applied are connected to each other through a wired / wireless communication network (for example, wired / wireless internet), and a request of the terminal 20. According to this, the code module (code block) is streamed in real time from the software streaming server 10 to the terminal 20. In this case, the terminal 20 may be a personal computer, a NetPC, or the like.

소프트웨어 스트리밍 서버(10)는 소프트웨어 스트리밍 서비스를 위한 소프트웨어를 다수의 코드 모듈(코드 블럭)로 분할하고, 코드 모듈 간의 상관 관계 정보를 통상의 프로파일링 과정을 통해 산출한다. 상기 코드 모듈 생성 과정은 도 2를 참조하여 후술하기로 하고, 상관 관계 정보의 산출 과정을 보다 상세히 살펴보면 다음과 같다.The software streaming server 10 divides the software for the software streaming service into a plurality of code modules (code blocks), and calculates correlation information between the code modules through a general profiling process. The code module generation process will be described later with reference to FIG. 2. The calculation process of correlation information will be described in more detail as follows.

소프트웨어 스트리밍 서버(10)는 소프트웨어를 스트리밍 서비스 대상으로 등록하기 전, 소프트웨어의 바이너리 코드를 통상의 프로파일링 툴(tool)을 이용하여 수차례 실행하여 코드 모듈 간 상관 관계 정보를 산출하여 각 코드 모듈에 부여한다. 이 때, 코드 모듈 간의 상관 관계 정보는 호출 관계 및 그 비율(호출 빈도), 수행 시간 및 그 비율 등을 포함한다. 즉, 각 코드 모듈별로 부여되는 상관 관계 정보에는 타 코드 모듈에 의해 자신이 호출될 확률(자신으로 전이될 확률), 자신의 수행 시간 및 그 비율 등이 포함될 수 있다. Before the software streaming server 10 registers the software as a streaming service target, the software streaming server 10 executes the binary code of the software several times using a general profiling tool to calculate correlation information between the code modules, Grant. In this case, the correlation information between the code modules includes a call relationship and its ratio (call frequency), execution time, and its ratio. That is, the correlation information provided for each code module may include a probability of being called by another code module (probability of being transferred to oneself), its execution time, and a ratio thereof.

여기서, 코드 모듈 간의 상관 관계 정보는 소프트웨어 스트리밍 서버(10)로부터 단말기(20)로 해당 코드 모듈이 스트리밍됨에 따라 상기 코드 모듈과 함께 전송된다. 이는, 수행중인 코드 모듈에 부여된 상관 관계 정보를 이용하여 다음 차례에 수행될 가능성이 높은 코드 모듈을 단말기(20)가 소프트웨어 스트리밍 서버(10)로 요청하여 우선적으로 전송받을 수 있도록 한다.The correlation information between the code modules is transmitted together with the code module as the corresponding code module is streamed from the software streaming server 10 to the terminal 20. This allows the terminal 20 to request the software streaming server 10 to preferentially receive a code module that is likely to be performed next time using the correlation information given to the code module being executed.

한편, 단말기(20)는 스트리밍받은 코드 모듈을 실행함과 동시에, 앞으로 실행해야할 코드 모듈을 소프트웨어 스트리밍 서버(10)에 요청하여 전송받음에 따라 이를 실행하는 동작을 계속 수행한다. 여기서, 단말기(20)는 코드 모듈의 전송 지연에 따른 실행 정지 시간(suspension time)을 최소화하기 위해, 현재 실행중인 코드 모듈에 부여된 상관 관계 정보에 따라 다음 차례에 실행될 가능성이 높은 코드 모듈(일정 시간 내에 다시 수행될 가능성이 높은 코드 모듈)을 소프트웨어 스트리밍 서버(10)로 전송 요청한다.Meanwhile, the terminal 20 executes the code module that has been streamed, and at the same time, requests the software streaming server 10 to execute the code module to be executed in the future. Here, the terminal 20 is a code module that is likely to be executed next time according to the correlation information given to the currently executing code module in order to minimize the suspension time due to the transmission delay of the code module. Requesting to send to the software streaming server 10 a code module that is likely to be executed again in time.

또한, 단말기(20)는 상관 관계 정보에 따라 코드 모듈의 캐싱 여부를 결정하여 다음 차례에 실행될 가능성이 높은 코드 모듈이 캐쉬 메모리에서 제거되지 않도록 한다. 예를 들면, 한 차례 실행된 후 캐쉬 메모리에 저장된 상태인 임의의 제1 코드 모듈의 상관 관계 정보를 분석한 결과 현재 스트리밍되어 곧 실행될 예정인 제2 코드 모듈로부터의 호출 가능성이 높음을 확인함에 따라, 상기 제2 코드 모듈을 새로이 캐쉬 메모리에 로딩하기 위해 상기 제1 코드 모듈을 제거하는 것이 아니라 그 외의 다른 코드 모듈이 제거되도록 한다. 다른 예로, 호출 가능성이 아주 높지는 않지만 그 수행 시간이 길 경우에는 해당 코드 모듈의 재로딩 시간을 줄이기 위해 캐쉬 메모리로부터 제거되지 않도록 구현할 수도 있다. 상관 관계 정보에 따른 캐싱 방법은 도 5를 참조하여 보다 상세히 후술하기로 한다.In addition, the terminal 20 determines whether to cache the code module according to the correlation information so that the code module that is likely to be executed next time is not removed from the cache memory. For example, as a result of analyzing correlation information of any first code module that has been executed once and stored in the cache memory, and ascertains that there is a high possibility of a call from a second code module that is currently being streamed and executed soon, Rather than removing the first code module to newly load the second code module into the cache memory, other code modules are removed. As another example, if the callability is not very high, but the execution time is long, it may be implemented not to be removed from the cache memory to reduce the reload time of the corresponding code module. The caching method according to the correlation information will be described later in more detail with reference to FIG. 5.

도 2 는 상기 도 1의 소프트웨어 스트리밍 서버에서의 코드 모듈 생성 과정에 대한 일실시예 흐름도이다.FIG. 2 is a flowchart illustrating a code module generation process in the software streaming server of FIG. 1.

먼저, 소프트웨어 스트리밍 서버(10)는 소프트웨어의 바이너리 코드를 차례대로 서칭하며 한 라인씩 코드 모듈(코드 블럭)에 할당한다(201). 즉, 바이너리 코드의 시작점에 위치한 라인(첫 번째 코드 라인)부터 차례대로 서칭하며 한 라인씩 코드 모듈에 포함시킨다.First, the software streaming server 10 searches the binary code of the software in order and allocates it to the code module (code block) line by line (201). That is, they search sequentially from the line (the first code line) located at the beginning of binary code and include them one by one in the code module.

그리고, 상기 서칭중인 바이너리 코드의 다음 라인이 분기 명령어(call, jump, ret 등)를 포함하는 라인인지의 여부를 판단한다(202). 즉, 다음 차례의 바이너리 코드 라인에서 분기 명령어(call, jump, ret 등)를 발견하였는지의 여부를 판단한다.In operation 202, it is determined whether the next line of the binary code being searched is a line including a branch instruction (call, jump, ret, etc.). That is, it determines whether a branch instruction (call, jump, ret, etc.) is found in the next binary code line.

상기 분기 명령어 발견 여부 판단 결과(202), 분기 명령어가 아닐 경우에는 기 설정된 코드 모듈 최대 크기에 상기 코드 모듈이 도달하였는지의 여부를 판단한다(203). 즉, 바이너리 코드가 한 라인씩 코드 모듈에 점차로 할당됨에 따라, 해당 코드 모듈에 대한 초과 할당 여부를 판단한다. 여기서, 코드 모듈(코드 블럭)의 최대 크기(threshold)는 기 설정되어진 상태인데, 이는 클라이언트의 사용 환경(예 : 메모리 크기) 등에 따라 결정되어질 수 있다.As a result of determining whether the branch instruction is found (202), if it is not the branch instruction, it is determined whether the code module reaches the preset maximum size of the code module (203). That is, as the binary code is gradually allocated to the code module line by line, it is determined whether the code module is over-allocated. Here, the maximum threshold of the code module (code block) is a predetermined state, which may be determined according to the use environment (eg, memory size) of the client.

상기 코드 모듈 초과 할당 여부 판단 결과(203), 초과 할당되지 않았을 경우에는 상기 바이너리 코드 라인을 동일한 코드 모듈에 할당하고, 다음 차례의 라인부터 차례대로 서칭하며 한 라인씩 코드 모듈(코드 블럭)에 할당하는 과정(201)으로 진행한다.As a result of determining whether the code module is over-allocated (203), if not over-allocated, the binary code lines are allocated to the same code module, searched sequentially from the next line, and assigned to the code module (code block) line by line. The process proceeds to step 201.

한편, 상기 코드 모듈 초과 여부 판단 결과(203), 초과 할당되었을 경우에는 현재 생성된 코드 모듈의 개수가 기 설정된 코드 모듈 최대 개수에 도달하였는지의 여부를 판단한다(204). On the other hand, if it is determined that the code module is exceeded (203), if over-allocated, it is determined whether or not the number of currently generated code modules has reached the preset maximum number of code modules (204).

상기 코드 모듈 최대 개수 도달 여부 판단 결과(204), 최대 개수에 도달하지 않았을 경우에는 동일한 코드 모듈에 대한 라인 할당을 중단하고 새로운 코드 모듈에 상기 바이너리 코드 라인을 할당한다(205). 즉, 하나의 코드 모듈의 생성을 완료하고, 새로운 코드 모듈을 생성하기 시작한다. 그리고, 다음 차례의 라인부터 차례대로 서칭하며 한 라인씩 코드 모듈(코드 블럭)에 할당하는 과정(201)으로 진행한다. As a result of determining whether the maximum number of code modules is reached (204), when the maximum number is not reached, line allocation for the same code module is stopped and the binary code line is allocated to a new code module (205). That is, the generation of one code module is completed, and a new code module is started. Then, the process proceeds to the step 201 where each line is searched sequentially and assigned to the code module (code block) line by line.

반면에, 상기 코드 모듈 최대 개수 도달 여부 판단 결과(204), 최대 개수에 도달하였을 경우에는 아직까지 임의의 코드 모듈에 할당되지 못한 바이너리 코드 라인을 부가적으로 생성되는 코드 모듈에 할당한다(206). 이 때, 상기 부가적으로 생성되는 코드 모듈은 한 개 이상일 수 있으며, 기 설정된 코드 모듈 최대 크기 이하로 생성된다. 그리고, 바이너리 코드의 모든 라인에 대한 코드 모듈 할당이 수행 완료되었음을 확인함에 따라, 코드 모듈의 생성 과정을 종료한다.On the other hand, as a result of determining whether the maximum number of code modules has been reached (204), when the maximum number has been reached, a binary code line that has not yet been allocated to any code module is allocated to an additionally generated code module (206). . In this case, the additionally generated code module may be one or more, and is generated to be equal to or less than a maximum size of a predetermined code module. After confirming that the code module allocation for all the lines of the binary code is completed, the generation process of the code module is terminated.

한편, 상기 분기 명령어 발견 여부 판단 결과(202), 분기 명령어일 경우에는 동일한 코드 모듈에 대한 라인 할당을 중단하고 새로운 코드 모듈에 해당 라인을 할당하는 과정(205)으로 진행한다. On the other hand, if it is determined that the branch instruction is found 202, in the case of the branch instruction, line allocation for the same code module is stopped and the process proceeds to step 205 of allocating the corresponding line to the new code module.

상기와 같은 코드 모듈 생성 과정을 수행한 후, 소프트웨어 스트리밍 서버(10)는 코드 모듈 간의 상관 관계 정보를 통상의 프로파일링 과정을 통해 산출한다. 즉, 코드 모듈 간의 상관 관계 정보를 산출하여 각 코드 모듈에 부여한다. 그리고, 다수의 코드 모듈로 분할된 상기 소프트웨어를 단말기(20)로의 스트리밍 서비스를 위해 등록시킨다.After performing the code module generation process as described above, the software streaming server 10 calculates correlation information between the code modules through a normal profiling process. That is, correlation information between code modules is calculated and assigned to each code module. The software divided into a plurality of code modules is registered for the streaming service to the terminal 20.

도 3 은 본 발명에 따른 코드 모듈 간의 상관 관계 정보에 따른 소프트웨어 스트리밍 방법에 대한 일실시예 흐름도이다.3 is a flowchart illustrating a software streaming method based on correlation information between code modules according to the present invention.

현재, 소프트웨어 스트리밍 서버(10)는 코드 모듈 간의 상관 관계 정보에 따라 스트리밍 서비스하기 위한 소프트웨어를 등록시켜 둔 상태이다(301). 즉, 상관 관계 정보가 부여된 각 코드 모듈로 이루어진 소프트웨어를 내/외부 저장 공간에 저장하고 있다.Currently, the software streaming server 10 registers software for streaming service according to correlation information between code modules (301). That is, software consisting of each code module to which correlation information is assigned is stored in an internal / external storage space.

먼저, 소프트웨어 스트리밍 서버(10)는 단말기(20)로부터 소프트웨어 스트리 밍을 요청받는다(302). First, the software streaming server 10 is requested to stream the software from the terminal 20 (302).

그에 따라, 소프트웨어 스트리밍 서버(10)는 해당 소프트웨어의 첫 번째 코드 모듈(첫 번째 코드 라인이 포함되어 있는 코드 모듈)을 단말기(20)로 스트리밍한다(303). 그리고, 상기 첫 번째 코드 모듈에 부여된 상관 관계 정보(호출 관계 및 그 비율 등)를 이용하여 상기 코드 모듈에 의해 호출될 가능성이 높은 코드 모듈을 저장 공간으로부터 검색한 후 상기 단말기(20)로 연이어 스트리밍한다(304).Accordingly, the software streaming server 10 streams the first code module (code module including the first code line) of the corresponding software to the terminal 20 (303). After retrieving a code module that is highly likely to be called by the code module using correlation information (call relationship and ratio thereof, etc.) assigned to the first code module, the code module is sequentially connected to the terminal 20. Stream 304.

이 때, 상기와 같이 상관 관계 정보에 따라 연이어 스트리밍되는 코드 모듈은 소프트웨어 스트리밍 서버(10)의 자체 동작에 따라 혹은 단말기(20)로부터의 요청에 따라 스트리밍된다. 여기서, 단말기(20)로부터의 요청에 따라 코드 모듈이 연이어 스트리밍되는 경우는 상기 단말기(20)가 이미 수신한 코드 모듈에 부여된 상관 관계 정보를 분석하여 그에 따라 곧 수행될 가능성이 높은 코드 모듈을 요청하는 경우이다.At this time, the code module sequentially streamed according to the correlation information as described above is streamed according to the operation of the software streaming server 10 or the request from the terminal 20. In this case, when the code module is continuously streamed according to a request from the terminal 20, the terminal 20 analyzes the correlation information given to the code module already received. If requested.

이후, 단말기(20)로부터의 요청에 따라 소프트웨어의 스트리밍을 종료한다(305).Thereafter, the streaming of the software is terminated according to a request from the terminal 20 (305).

상기 일실시예에서 살펴본 바와 같이, 소프트웨어 스트리밍 서버(10)는 임의의 코드 모듈을 스트리밍한 후 상기 코드 모듈에 부여된 상관 관계 정보에 따라 일정 시간 내에 수행될 가능성이 높은 코드 모듈을 연이어 스트리밍하는 과정을 반복 수행하여 소프트웨어 스트리밍 서비스를 제공한다. As described in the above embodiment, the software streaming server 10 streams an arbitrary code module and subsequently streams a code module that is likely to be performed within a predetermined time according to correlation information provided to the code module. Repeatedly provide software streaming service.

다른 실시예로, 소프트웨어 서버(10)가 각 코드 모듈에 부여된 상관 관계 정보를 이용하여 상관 관계가 높은 코드 모듈을 집합적으로 함께 스트리밍할 수도 있 다.In another embodiment, the software server 10 may collectively stream the highly correlated code modules together using the correlation information provided to each code module.

도 4 는 상기 도 1의 단말기에서 코드 모듈 간의 상관 관계 정보를 이용한 캐싱 방법에 대한 일실시예 흐름도이다. 여기서는, 코드 모듈에 대한 캐싱(caching)이 소프트웨어의 수행을 위해 이루어지므로 소프트웨어의 스트리밍 과정을 포함하여 설명하기로 한다.4 is a flowchart illustrating a caching method using correlation information between code modules in the terminal of FIG. 1. Here, since the caching of the code module is performed for the execution of the software, it will be described including the streaming process of the software.

먼저, 단말기(20)는 소프트웨어 스트리밍 서버(10)로 소프트웨어의 스트리밍을 요청한다(401).First, the terminal 20 requests the streaming of software to the software streaming server 10 (401).

이후, 소프트웨어 스트리밍 서버(10)로부터 코드 모듈을 수신함에 따라(402) 캐쉬 메모리에 로딩하고 캐쉬 로딩 모듈 리스트에 등록시킨다(403). 그리고, 상기 코드 모듈을 실행한다(404). 여기서, 상기 캐쉬 로딩 모듈 리스트에는 캐쉬 메모리에 현재 로딩되어 있는 코드 모듈에 대한 등록 정보가 기록된다.Thereafter, upon receiving the code module from the software streaming server 10 (402), it is loaded into the cache memory and registered in the cache loading module list (403). Then, the code module is executed (404). Here, registration information about a code module currently loaded in the cache memory is recorded in the cache loading module list.

이후, 새롭게 수신한 코드 모듈의 캐싱을 위해 기존 코드 모듈을 캐쉬 메모리로부터 제거하여야 함을 확인함에 따라(405), 제1 제거 대상 코드 모듈의 상관 관계 정보를 이용하여 상기 제1 제거 대상 코드 모듈의 캐싱 여부(정확하게는, 캐쉬 메모리로부터의 제거 여부)를 판단한다(406). 즉, 상기 제1 제거 대상 코드 모듈이 새롭게 캐싱되는 코드 모듈과 높은 상관 관계를 가지는지의 여부를 판단한다. 이 때, 제1 제거 대상 코드 모듈은 기존 캐싱 알고리즘에 따라 선택될 수 있는데, 라운드 로빈을 일예로 들면 캐쉬 메모리에 로딩된지 가장 오래된 코드 모듈이 제1 제거 대상 코드 모듈로 선택된다.Subsequently, as it is confirmed that the existing code module should be removed from the cache memory for caching of the newly received code module (405), the correlation information of the first removal target code module is used to determine the removal of the first code removal target code module. It is determined whether or not to cache (exactly, whether to remove from the cache memory) (406). That is, it is determined whether the first removal target code module has a high correlation with the newly cached code module. In this case, the first removal target code module may be selected according to an existing caching algorithm. For example, a round robin may be selected as the first removal target code module, for example, the oldest code module loaded in the cache memory.

상기 캐싱 여부 판단 결과(406), 캐싱 가치가 없을 경우, 즉 새롭게 수신한 코드 모듈의 수행 후 일정 시간 내에 상기 제1 제거 대상 코드 모듈이 재수행될 확률이 낮을 경우 상기 제1 제거 대상 코드 모듈을 캐쉬 메모리로부터 제거한다(407). 이 때, 캐쉬 로딩 모듈 리스트의 등록 정보도 함께 삭제된다. 그리고, 새롭게 수신한 코드 모듈을 캐쉬 메모리에 로딩하고 캐쉬 로딩 모듈 리스트에 등록시킨 후 실행한다(408).In the caching determination result 406, if there is no caching value, that is, when the probability of the first removal target code module being re-executed within a certain time after the execution of the newly received code module is low, the first removal target code module is removed. Remove from cache memory (407). At this time, the registration information of the cache loading module list is also deleted. The newly received code module is loaded into the cache memory, registered in the cache loading module list, and executed (408).

한편, 상기 캐싱 여부 판단 결과(406), 캐싱 가치가 있을 경우 상기 제1 제거 대상 코드 모듈을 캐쉬 메모리로부터 제거하는 것이 아니라 제2의 제거 대상 코드 모듈(기존 캐싱 알고리즘에 따라 선택될 수 있음)에 대한 캐싱 여부를 판단하는 과정을 수행하여 상기 새롭게 수신한 코드 모듈과 상관 관계가 가장 낮은 코드 모듈을 제거한다(410). 그리고, 상기 새롭게 수신한 코드 모듈을 캐쉬 메모리에 로딩하고 캐쉬 로딩 모듈 리스트에 등록시킨 후 실행하는 과정(408)으로 진행한다.On the other hand, the caching determination result 406, if there is a caching value, instead of removing the first removal target code module from the cache memory, the second removal target code module (which may be selected according to an existing caching algorithm). A process of determining whether or not caching is performed is performed to remove the code module having the lowest correlation with the newly received code module (410). In operation 408, the newly received code module is loaded into the cache memory, registered in the cache loading module list, and executed.

이후, 사용자로부터의 요청에 따라 소프트웨어의 스트리밍 및 실행을 종료한다(409).Thereafter, the streaming and execution of the software is terminated according to a request from the user (409).

상기 도 4의 일실시예에서는 기존의 캐싱 알고리즘(예 : 라운드 로빈)과 상관 관계 정보를 병용하여 캐싱 여부를 판단하는 과정을 설명하였으나, 본 발명에 따른 상관 관계 정보를 이용하여 새롭게 수신한 코드 모듈과의 상관 관계가 높을수록 우선 순위를 높여 캐쉬 메모리로부터 제거되지 않도록 구현할 수도 있다. In the exemplary embodiment of FIG. 4, the process of determining whether to caching by using correlation information together with an existing caching algorithm (for example, round robin) has been described. However, a newly received code module using correlation information according to the present invention is described. The higher the correlation with, the higher the priority can be implemented so that it is not removed from the cache memory.

한편, 본 발명은 소프트웨어가 분할되어 생성된 코드 모듈(코드 블럭)에 프로파일링 과정을 통해 산출한 상관 관계 정보를 부여하여 그에 따라 우선적으로 스트리밍하거나 및/또는 코드 모듈의 캐싱 여부를 결정함으로써, 클라이언트 측에서 의 소프트웨어의 실행 정지 시간(suspension time)을 최소화할 수 있도록 하는 효과가 있다.On the other hand, the present invention by giving the correlation information calculated through the profiling process to the code module (code block) generated by the software is divided into the priority streaming and / or to determine whether to cache the code module accordingly, This has the effect of minimizing the suspension time of the software at the side.

특히, 본 발명은 실시간성이 요구되는 멀티미디어 프로그램(예 : 게임 프로그램)에 보다 용이하게 적용되어 사용자 만족도를 높일 수 있는 효과가 있다.In particular, the present invention is more easily applied to a multimedia program (eg, a game program) that requires real time, thereby improving user satisfaction.

상술한 바와 같은 본 발명의 방법은 프로그램으로 구현되어 컴퓨터로 읽을 수 있는 형태로 기록매체(씨디롬, 램, 롬, 플로피 디스크, 하드 디스크, 광자기 디스크 등)에 저장될 수 있다. 이러한 과정은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있으므로 더 이상 상세히 설명하지 않기로 한다.As described above, the method of the present invention may be implemented as a program and stored in a recording medium (CD-ROM, RAM, ROM, floppy disk, hard disk, magneto-optical disk, etc.) in a computer-readable form. Since this process can be easily implemented by those skilled in the art will not be described in more detail.

이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.The present invention described above is capable of various substitutions, modifications, and changes without departing from the technical spirit of the present invention for those skilled in the art to which the present invention pertains. It is not limited by the drawings.

상기와 같은 본 발명은, 소프트웨어를 분할하여 생성한 각각의 코드 모듈에 타 코드 모듈과의 상관 관계 정보를 부여하고, 상기 상관 관계 정보에 따라 우선적으로 스트리밍하도록 함으로써, 전송 지연에 따른 클라이언트 측에서의 실행 정지 시간을 최소화할 수 있도록 하는 효과가 있다.According to the present invention as described above, each code module generated by dividing the software is given correlation information with other code modules, and the stream is preferentially streamed according to the correlation information, thereby stopping execution at the client side due to transmission delay. This has the effect of minimizing time.

또한, 본 발명은 코드 모듈에 부여된 상관 관계 정보에 따라 새롭게 수행되 는 코드 모듈과 높은 상관 관계가 존재하는 경우에는 그의 우선 순위를 높여 캐쉬 메모리로부터 제거되지 않도록 함으로써, 소프트웨어의 실행 정지 시간을 줄일 수 있도록 하는 효과가 있다.In addition, the present invention increases the priority of the newly executed code module according to the correlation information given to the code module so as not to be removed from the cache memory by reducing its priority, thereby reducing the execution time of software. It has the effect of making it possible.

그에 따라, 본 발명은 실시간성이 요구되는 멀티미디어 소프트웨어의 스트리밍 서비스에 용이하게 적용되어 소프트웨어의 실행 정지 시간을 줄임으로써 사용자 만족도를 높일 수 있도록 하는 효과가 있다.Accordingly, the present invention can be easily applied to the streaming service of the multimedia software that requires real-time, it is possible to increase the user satisfaction by reducing the execution stop time of the software.

Claims (12)

소프트웨어 스트리밍 방법에 있어서,In the software streaming method, 소프트웨어를 다수의 코드 모듈로 분할하여 상관 관계 정보를 부여하는 코드 모듈 생성 단계;A code module generation step of dividing software into a plurality of code modules to give correlation information; 외부로부터 소프트웨어 스트리밍을 요청받는 요청 접수 단계; 및A request receiving step of receiving a software streaming request from the outside; And 해당 소프트웨어의 코드 모듈을 스트리밍하되, 코드 모듈 간의 상관 관계 정보에 따라 스트리밍하는 스트리밍 단계Streaming step of streaming the code module of the corresponding software, based on correlation information between the code modules 를 포함하는 코드 모듈 간의 상관 관계 정보에 따른 소프트웨어 스트리밍 방법.Software streaming method according to the correlation information between the code module comprising a. 제 1 항에 있어서,The method of claim 1, 상기 상관 관계 정보는,The correlation information is 코드 모듈 간의 호출 관계 및 그 비율을 포함하는 것을 특징으로 하는 코드 모듈 간의 상관 관계 정보에 따른 소프트웨어 스트리밍 방법.Software streaming method according to the correlation information between the code module, characterized in that it comprises a call relationship between the code module and the ratio. 제 1 항 또는 제 2 항에 있어서,The method according to claim 1 or 2, 상기 상관 관계 정보는,The correlation information is 코드 모듈의 수행 시간 및 그 비율을 포함하는 것을 특징으로 하는 코드 모듈 간의 상관 관계 정보에 따른 소프트웨어 스트리밍 방법.Software streaming method according to the correlation information between the code module, characterized in that it comprises the execution time and the ratio of the code module. 제 3 항에 있어서,The method of claim 3, wherein 상기 스트리밍 단계는,The streaming step, 상관 관계가 높은 코드 모듈을 연이어 스트리밍하는 것을 특징으로 하는 코드 모듈 간의 상관 관계 정보에 따른 소프트웨어 스트리밍 방법.A software streaming method according to correlation information between code modules, characterized by successively streaming code modules having high correlation. 제 3 항에 있어서,The method of claim 3, wherein 상기 스트리밍 단계는,The streaming step, 상관 관계가 높은 코드 모듈을 집합적으로 함께 스트리밍하는 것을 특징으로 하는 코드 모듈 간의 상관 관계 정보에 따른 소프트웨어 스트리밍 방법.A software streaming method according to correlation information between code modules, characterized in that the highly correlated code modules are collectively streamed together. 제 3 항에 있어서,The method of claim 3, wherein 상기 코드 모듈 생성 단계는,The code module generation step, 바이너리 코드를 서칭하던 중, 분기 명령어를 발견함에 따라 새로운 코드 모듈을 생성하기 시작하는 것을 특징으로 하는 코드 모듈 간의 상관 관계 정보에 따 른 소프트웨어 스트리밍 방법.A software streaming method based on correlation information between code modules, wherein searching for binary code starts generating a new code module when a branch instruction is found. 제 3 항에 있어서,The method of claim 3, wherein 상기 코드 모듈 생성 단계는,The code module generation step, 프로파일링 과정을 통해 코드 모듈 간의 상관 관계 정보를 산출하는 것을 특징으로 하는 코드 모듈 간의 상관 관계 정보에 따른 소프트웨어 스트리밍 방법.A software streaming method according to correlation information between code modules, characterized in that the correlation information between code modules is calculated through a profiling process. 캐싱 방법에 있어서,In the caching method, 상관 관계 정보가 부여된 임의의 코드 모듈을 실행하고 있는 실행 단계;An execution step of executing any code module to which correlation information has been assigned; 새로운 코드 모듈의 캐쉬 메모리 로딩을 위해, 기존에 로딩된 코드 모듈을 제거해야 함을 확인하는 확인 단계;A confirmation step of confirming that an existing loaded code module should be removed for loading a cache memory of a new code module; 각 코드 모듈에 부여된 상관 관계 정보를 이용하여 기존에 로딩된 코드 모듈 중 일부를 선택하여 제거하는 캐싱 결정 단계; 및A caching determination step of selecting and removing some of the previously loaded code modules by using correlation information assigned to each code module; And 새로운 코드 모듈을 캐쉬 메모리에 로딩하는 로딩 단계Loading step to load new code module into cache memory 를 포함하는 코드 모듈 간의 상관 관계 정보를 이용한 캐싱 방법.Caching method using correlation information between code modules including a. 제 8 항에 있어서,The method of claim 8, 상기 상관 관계 정보는,The correlation information is 코드 모듈 간의 호출 관계 및 그 비율을 포함하는 것을 특징으로 하는 코드 모듈 간의 상관 관계 정보를 이용한 캐싱 방법.A caching method using correlation information between code modules, the call relationship among code modules and a ratio thereof. 제 8 항 또는 제 9 항에 있어서,The method according to claim 8 or 9, 상기 상관 관계 정보는,The correlation information is 코드 모듈의 수행 시간 및 그 비율을 포함하는 것을 특징으로 하는 코드 모듈 간의 상관 관계 정보를 이용한 캐싱 방법.Caching method using correlation information between code modules, characterized in that it comprises the execution time and the ratio of the code module. 제 10 항에 있어서,The method of claim 10, 상기 캐싱 결정 단계는,The caching determination step, 기존 캐싱 알고리즘에 따라 제거 대상 코드 모듈을 1차 선택하고, 상기 선택된 제거 대상 코드 모듈의 상관 관계 정보에 따라 캐싱 여부를 최종 선택하는 것을 특징으로 하는 코드 모듈 간의 상관 관계 정보를 이용한 캐싱 방법.The first method of selecting the removal target code module according to the existing caching algorithm, and the caching method using the correlation information between the code modules, characterized in that the final selection whether or not caching according to the correlation information of the selected removal target code module. 제 10 항에 있어서,The method of claim 10, 상기 캐싱 결정 단계는,The caching determination step, 기존에 로딩된 코드 모듈에 부여된 각각의 상관 관계 정보를 이용하여 새롭게 로딩하려는 코드 모듈과 가장 낮은 상관 관계를 가지는 임의의 코드 모듈을 제거하는 것을 특징으로 하는 코드 모듈 간의 상관 관계 정보를 이용한 캐싱 방법.A caching method using correlation information between code modules, wherein any code module having the lowest correlation with a code module to be newly loaded is removed by using the correlation information of each previously assigned code module. .
KR1020050043234A 2004-12-02 2005-05-23 Method for software streaming and caching according to runtime coefficient among code modules KR100632403B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20040100653 2004-12-02
KR1020040100653 2004-12-02

Publications (2)

Publication Number Publication Date
KR20060061752A KR20060061752A (en) 2006-06-08
KR100632403B1 true KR100632403B1 (en) 2006-10-11

Family

ID=37158129

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050043234A KR100632403B1 (en) 2004-12-02 2005-05-23 Method for software streaming and caching according to runtime coefficient among code modules

Country Status (1)

Country Link
KR (1) KR100632403B1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100734628B1 (en) * 2005-09-29 2007-07-03 한국전자통신연구원 Distributed Software Streaming Service Method and System
KR100934213B1 (en) * 2006-11-01 2009-12-29 한국전자통신연구원 Apparatus and method for generating functional units for software streaming

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000029713A (en) 1998-03-23 2000-01-28 Sun Microsyst Inc Actualizing technology for framework for expandable applications
JP2000322268A (en) 1999-05-13 2000-11-24 Sharp Corp Rearrangeable add-in-software management system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000029713A (en) 1998-03-23 2000-01-28 Sun Microsyst Inc Actualizing technology for framework for expandable applications
JP2000322268A (en) 1999-05-13 2000-11-24 Sharp Corp Rearrangeable add-in-software management system

Also Published As

Publication number Publication date
KR20060061752A (en) 2006-06-08

Similar Documents

Publication Publication Date Title
CN111615716B (en) Allocating shaders among client machines for pre-caching
US7979509B1 (en) Clustered network acceleration devices having shared cache
US7676554B1 (en) Network acceleration device having persistent in-memory cache
JP5901024B2 (en) Dynamic binding used for content delivery
CN110198495B (en) Method, device, equipment and storage medium for downloading and playing video
RU2619181C2 (en) System and method for downloadable content transmission optimizing
US11893029B2 (en) Real-time streaming data ingestion into database tables
CN106254561B (en) real-time off-line downloading method and system for network resource file
CN110944228B (en) Video stream protection method, device, computing device and readable medium
JP2014211909A (en) System and method of caching information
JP2008537252A (en) Hierarchical content network caching
KR20120025612A (en) Mapping of computer threads onto heterogeneous resources
US20170214765A1 (en) Streaming apparatus, streaming method, and streaming service system using the streaming apparatus
WO2023226314A1 (en) Application cache-scalable processing method and apparatus, device and medium
KR102010414B1 (en) Prefetching based cloud broker apparatus for live streaming and method thereof
CN115794139B (en) Mirror image data processing method, device, equipment and medium
US20200169598A1 (en) Transmitting data including pieces of data
WO2021191389A1 (en) Method for playing on a player of a client device a content streamed in a network
KR100632403B1 (en) Method for software streaming and caching according to runtime coefficient among code modules
CN109995824B (en) Task scheduling method and device in peer-to-peer network
CN104410721B (en) The method and system of caching automatically are supported according to update content
CN102298527B (en) A kind of method of CPE parallel upgrades version and realize system
CN114528068A (en) Method for eliminating cold start of server-free computing container
US20080077655A1 (en) Intelligent Pre-fetching using Compound Operations
Huang et al. S-cache: Toward an low latency service caching for edge clouds

Legal Events

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

Payment date: 20100901

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee