WO2012118268A2 - 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템 및 그 방법 - Google Patents

멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템 및 그 방법 Download PDF

Info

Publication number
WO2012118268A2
WO2012118268A2 PCT/KR2011/009483 KR2011009483W WO2012118268A2 WO 2012118268 A2 WO2012118268 A2 WO 2012118268A2 KR 2011009483 W KR2011009483 W KR 2011009483W WO 2012118268 A2 WO2012118268 A2 WO 2012118268A2
Authority
WO
WIPO (PCT)
Prior art keywords
actor
function call
thread
stack
virtual machine
Prior art date
Application number
PCT/KR2011/009483
Other languages
English (en)
French (fr)
Other versions
WO2012118268A3 (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 WO2012118268A2 publication Critical patent/WO2012118268A2/ko
Publication of WO2012118268A3 publication Critical patent/WO2012118268A3/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural

Definitions

  • the present invention relates to a multi-threaded processing system using a multi-virtual machine and a method thereof, and more particularly, to a multi-threaded using a virtual machine (VM) that does not support multi-thread.
  • VM virtual machine
  • the present invention relates to a system capable of implementing an actor system capable of processing a method and a method of providing the same.
  • script languages are widely used for various reasons, such as easy modification and testing, and simplicity of coding.
  • scripting languages there may be scripting languages that do not support multi-threading. If you do not use multi-threaded, you will not be able to take advantage of multi-core environments. Therefore, in order to implement a system using a predetermined multicore environment using only a script language that does not support multithreading or in conjunction with another language, it is necessary to use several script VMs that are independent of each other.
  • parallel computing may be used to implement a computing system that requires a large amount of data processing.
  • an object-based system such as an actor system
  • Korean patent application Application No. 10-2009-0104500, "Data processing method and system for preventing deadlock", filed by the applicant
  • the technical spirit and contents described in the prior application may be included as a reference of the present specification.
  • An actor system may require an environment (eg, a multicore environment) that supports multithreading to perform large amounts of data processing. Therefore, to implement such an actor system using a scripting language as described above, it may be required to be able to use multiple script VMs.
  • environment eg, a multicore environment
  • the technical problem to be achieved by the present invention is to provide a technical idea that can implement an object-based system (eg, actor system) using a script language that does not support multi-thread.
  • object-based system eg, actor system
  • an object-based system eg, an actor system
  • a scripter language uses such a scripter language provides a technical idea of using a plurality of VMs to perform multithreading.
  • a first function call assigned to a first virtual machine (VM) to process a first thread is a first function call (function). call), inserting first stack information corresponding to the first function call to the first thread and the first stack corresponding to the first VM to make the first function call, allocating to the first VM.
  • a lock of the first VM is released and a second VM to which the second actor is allocated is locked in order for the first actor to make the first function call. It may further include.
  • the multi-thread processing method using the multi-virtual machine may further include performing the processing corresponding to the first stack information when the first function call is completed before the second function call is completed. can do.
  • At least one of the first function call or the second function call may be at least one of a read call or an event call.
  • the function call may be at least one of a read call or an event call to a second actor allocated to a second VM different from the first VM.
  • the multi-thread processing system using the multi-virtual machine releases the lock of the first VM and locks the second VM in order to process the function call. It may include.
  • the multi-thread processing method using the multi-virtual machine may be stored in a computer-readable recording medium recording a program.
  • the multi-threaded processing system using a multi-virtual machine for solving the technical problem generates a plurality of VMs, a stack module for allocating a stack for each VM to a thread when a predetermined thread is generated, and a plurality of actors. And an actor module for managing and assigning each of the plurality of actors to any one of the plurality of VMs, and when a first actor of any one of the plurality of actors makes a function call to process a predetermined thread, And a control module for determining a stack corresponding to the first VM to which the thread and the first actor are allocated, and inserting stack information corresponding to the function call into the determined stack.
  • the function call may be at least one of a read call or an event call to a second actor allocated to a second VM different from the first VM, wherein the control module is configured to process the function call.
  • the first VM can be unlocked and the second VM can be locked.
  • the multi-threaded processing system and method using the multi-virtual machine according to the present invention have an effect that a dead lock does not occur when performing a function call (eg, a read call) between actors.
  • a function call eg, a read call
  • the system performance can be improved.
  • FIG. 1 is a diagram illustrating a lock setting method for communication between actors allocated to different VMs in a multi-threaded processing system using a multi-virtual machine according to an embodiment of the present invention.
  • FIG. 2 is a diagram illustrating a problem that may occur when one stack is used for each VM while using a lock setting method according to a multi-thread processing method using a multi-virtual machine according to an embodiment of the present invention.
  • FIG. 3 is a diagram illustrating an example of performing communication between actors allocated to different VMs according to a multi-thread processing method using a multi-virtual machine according to an embodiment of the present invention.
  • FIG. 4 is a view for explaining a change in the VM stack according to the conventional method when performing the communication as shown in FIG.
  • FIG. 5 is a diagram for describing a change in a stack according to a multi-thread processing method using a multi-virtual machine according to an embodiment of the present invention when performing communication as shown in FIG. 3.
  • FIG. 6 is a diagram illustrating another example of performing communication between actors allocated to different VMs according to a multi-thread processing method using a multi-virtual machine according to an embodiment of the present invention.
  • FIG. 7 is a diagram for describing a process of changing a stack according to a multi-thread processing method using a multi-virtual machine according to an embodiment of the present invention in the situation shown in FIG. 6.
  • FIG. 8 is a view showing a schematic configuration of a multi-threaded processing system using a multi-virtual machine according to an embodiment of the present invention.
  • the component when one component 'transmits' data to another component, the component may directly transmit the data to the other component, or through at least one other component. Means that the data may be transmitted to the other component.
  • FIG. 1 is a diagram illustrating a lock setting method for communication between actors allocated to different VMs in a multi-threaded processing system using a multi-virtual machine according to an embodiment of the present invention.
  • a multi-threaded processing system using a multi-virtual machine provides a plurality of VMs (eg, VM 1 and VM 2).
  • Each of the VMs eg, VM 1, VM 2
  • a given VM eg, VM1 may correspond to a plurality of actors. However, multiple actors (or threads) cannot use a single VM at the same time. This is because the VM (eg VM 1) does not support multithreading.
  • the multi-threaded processing system using the multi-virtual machine may be implemented to support multi-threading using a plurality of VMs (for example, VM 1 and VM 2) as described above.
  • VMs for example, VM 1 and VM 2
  • each of the VMs may use only one actor (eg, 10 or 20) at a specific time. Therefore, when the actor 10 uses VM 1 as shown in FIG. 1, the actor 1 may be locked to prevent other actors or other threads from using the VM 1.
  • VM 1 needs to communicate with another actor (for example, Actor B, 20) while performing a predetermined operation or function using the VM 1.
  • another actor for example, Actor B, 20
  • various function calls such as events or read calls may be the case.
  • the actor (eg, 10) that calls the function is assigned to the VM (e.g., 20) to which the actor to be called is assigned ( For example, it may be necessary to acquire the lock of VM 2) (S20).
  • the VM eg, VM 2
  • the issue may be whether the actor making the function call (eg, 10) should keep holding or unlocking the VM (eg, VM 1).
  • an actor eg, 10 making a function call releases a lock of its VM (eg, VM 1) (S10) and receives a function call.
  • the actor eg, 20
  • the actor may acquire a lock of the VM (eg, VM 2) (S20).
  • the VM becomes available to other actors or threads until a response to the function call is received (S11), thereby increasing the efficiency of the system. .
  • a predetermined actor 10 may make a predetermined first function call to another actor 20 while maintaining a lock of its VM (eg, VM 1). Then, the actor 20 may acquire a lock of its VM (eg, VM 2) (S40). At this time, the actor 20 makes a second function call to the actor 10 at substantially the same time as the first function call, or the actor 20 uses a predetermined VM (eg, VM 2) to perform a predetermined operation. In operation S41, before outputting the response corresponding to the first function call to the actor 10, a predetermined second function call may be made to the actor 10 (S42).
  • VM eg, VM 2
  • the VM of the actor 10 (e.g., VM 1) is locked by the actor 20 again when the lock is held by the actor 10, i.e., the response corresponding to the first function call is received. It is acquired (S31) is a dead lock state in which the two actors wait only for a response to each other.
  • an actor making a function call may be implemented to unlock the VM and make a function call.
  • an actor (eg, 20) who has received the function call may acquire a lock of his or her VM (eg, VM 2) (S20) and perform an operation corresponding to the function call ( S21).
  • the user may unlock the VM (eg, VM 2) again (S22) and transmit a response corresponding to the function call to the actor (eg, 10).
  • the response corresponding to the function call is also the same as the function call, and the actor responding (eg, 20) unlocks its VM (eg, VM 2) (S22), and receives the response (eg, 10) may acquire (S12) a lock of its VM (eg, VM 1). Then, the received actor (eg, 10) may receive the response result and perform a predetermined operation.
  • an unexpected stack error may occur when one stack is used for each VM. error) may occur. This will be described with reference to FIG. 2.
  • FIG. 2 is a diagram illustrating a problem that may occur when one stack is used for each VM.
  • FIG. 2A illustrates an actor making a function call according to an embodiment of the present invention as described with reference to FIG. 1A. It can be implemented to release the lock.
  • the first actor 10 and the third actor 30 may be allocated to VM 1, and the second actor 20 may be allocated to VM 2.
  • the first actor 10 performs a predetermined operation while having a lock of its VM (for example, VM 1), releases the lock (S50), and makes a predetermined first function call to the second actor ( 20). Then, the second actor 20 acquires a lock of its VM (eg, VM 2) (S60), and performs an operation corresponding to the first function call using its VM (eg, VM 2). When the operation is completed, the lock may be released (S61), and a response corresponding to the first function call may be transmitted to the first actor 10 (S54).
  • VM for example, VM 1
  • the first actor 10 locks its VM (eg, VM 1).
  • another actor eg, third actor 30
  • another thread may use the VM (eg, VM 1).
  • the third actor 30 acquires the lock of the VM (eg, VM 1) by a predetermined event call (S51).
  • a predetermined operation may be performed.
  • the third actor 30 may unlock its VM (eg, VM 1) (S53) and make the second function call to another actor.
  • a stack error may occur in the stack corresponding to VM 1. This is described with reference to FIG. 2B.
  • the first actor 10 when the first actor 10 acquires a lock of its VM (eg, VM 1) and performs a predetermined operation and makes a first function call (S50), the first actor 10 ) Inserts information on the operation, that is, first stack information, into the stack Stack_VM 1.
  • the first stack information may be defined as stack information corresponding to the first function call.
  • the first stack information may be fetched from the stack Stack_VM 1 to continue the original operation.
  • the third actor 30 acquires the lock of the VM 1, and the third actor 30 acquires another predetermined VM.
  • the VM 1 to which the third actor 30 is allocated has the second stack information corresponding to the second function call in the stack Stack_VM 1.
  • the first actor 10 has its own VM (for example, a VM).
  • the stack information (ie, the second stack information) existing on the top of the stack Stack_VM 1 corresponding to 1) is extracted. Since the extracted stack information (ie, the second stack information) is the operation performed by the third actor 30, the stack information corresponding to the operation performed by the third actor 30 is eventually performed by the first actor 10. Will cause an error.
  • This stack error is a situation in which a certain actor performs a function call in a specific VM, and another function call in another specific VM performs another function call in the specific VM before the function call is completed. Can occur.
  • the multi-thread processing system and method using the multi-virtual machine according to an embodiment of the present invention solves this problem by providing a stack corresponding to each VM per thread, rather than maintaining one stack for each VM as described above.
  • FIG. 3 is a diagram illustrating an example of performing communication between actors allocated to different VMs according to a multi-thread processing method using a multi-virtual machine according to an embodiment of the present invention.
  • the first actor 10 performs a predetermined operation (processing of data) by using a lock of its VM (eg, VM 1), and then assigns the first actor 10 to another VM (eg, VM 2).
  • a predetermined function call may be performed to communicate with the two actors 20.
  • the function call may mean any type of message call capable of requesting predetermined information from actors allocated to different VMs such as an event call or a read call, or requesting a predetermined action and waiting for a response.
  • the first actor 10 may release its lock as described above for the function call (S100) and allow the second actor 20 to acquire a lock of its VM (eg, VM 2). have. Then, after performing the operation corresponding to the function call, the second actor 20 may release its lock and transmit a response corresponding to the function call to the first actor 10. Then, the first actor 10 may again acquire a lock of its VM (eg, VM 1) (S102). In this manner, the first actor 10 may make the function call and then process a series of data processing processes that receive a response corresponding to the function call as one thread (thread 1).
  • VM eg, VM 1
  • the VM of the first actor 10 (eg, VM) by a predetermined actor. 1) may be available to other actors.
  • a process of performing a specific operation or data processing by using the VM by a predetermined actor may be defined as another thread (thread 2).
  • a predetermined function call may be performed while thread 2 is being processed, and the function call performed in thread 2 is completed before the function call performed in thread 1 is completed.
  • the change of the stack Stack_VM 1 corresponding to the VM 1 may be as shown in FIG. 4.
  • FIG. 4 is a view for explaining a change in the VM stack according to the conventional method when performing the communication as shown in FIG.
  • the stack information th1_stack information 1 corresponding to the first function call of the thread 1 is located at the top, and when the first actor 10 acquires the lock ( S102)
  • the stack information th1_stack information 1 may be used normally.
  • the multi-thread processing method using the multi-virtual machine according to the embodiment of the present invention may use the method as shown in FIG. 5.
  • FIG. 5 is a diagram for describing a change in a stack according to a multi-thread processing method using a multi-virtual machine according to an embodiment of the present invention when performing communication as shown in FIG. 3.
  • stack information th1_stack information 1
  • th1_stack information 1 corresponding to the first function call
  • Is allocated to the thread 1 and the first actor 10 is inserted into the stack st11 corresponding to the allocated VM 1. That is, unlike FIG. 4, a multi-threaded processing system using a multi-virtual machine according to an embodiment of the present invention to insert predetermined stack information (th1_stack information 1) into a stack corresponds to a thread and a VM.
  • the first stack may be determined, and the stack information th1_stack information 1 may be inserted into the determined stack.
  • the predetermined stack information (th2_stack information 1) corresponding to the function call is the thread 2 And a stack st21 corresponding to the VM 1.
  • the thread is inserted into the stack st21.
  • Stack information th2_stack information 1 is extracted from the stack st21.
  • the multi-thread processing system using the multi-virtual machine searches for the stack in which the stack information th1_stack information 1 is stored, and the retrieved stack (
  • the stack information th1_stack information 1 may be extracted from St11).
  • FIG. 6 illustrates another example of performing communication between actors allocated to different VMs according to a multi-thread processing method using a multi-virtual machine according to an embodiment of the present invention
  • FIG. 7 illustrates the present invention in the situation shown in FIG. A diagram illustrating a process of changing a stack according to a multi-thread processing method using a multi-virtual machine according to an embodiment of the present disclosure.
  • the first actor 121 and the third actor 123 are located in VM 1.
  • the second actor 122 may be assigned to VM 2.
  • the first actor 121 performs a predetermined operation with the lock of its VM (eg, VM 1), releases the lock, and transfers the predetermined first function call to the second actor 122. It may be (S110). Then, the second actor 122 acquires a lock of its VM (eg, VM 2), performs an operation corresponding to the first function call using its VM (eg, VM 2), and operates When the lock is completed, the lock may be released and a response corresponding to the first function call may be transmitted to the first actor 121 (S54).
  • VM eg, VM 1
  • the second actor 122 acquires a lock of its VM (eg, VM 2), performs an operation corresponding to the first function call using its VM (eg, VM 2), and operates
  • the lock may be released and a response corresponding to the first function call may be transmitted to the first actor 121 (S54).
  • the predetermined third actor 123 may acquire the lock of the VM 1 (S112). .
  • the third actor 123 may acquire the lock of the VM 1 by a predetermined event call 111 or a function call (S112).
  • the third actor 123 After acquiring the lock of the VM 1, the third actor 123 performs a predetermined operation and releases the lock of its VM (eg, VM 1) (S113) and transfers the second function call to another actor. can do.
  • the second function call may be performed before the first function call is completed, that is, before a response to the first function call comes.
  • the first actor 121 receives a response corresponding to the first function call from the second actor 122, and again, of the VM (eg, VM 1) of the first actor 121. Obtain a lock.
  • the VM eg, VM 1
  • a series of processes in which the first actor 121 performs a first function call and receives a response from the second actor 122 may be one thread (thread 1), and the third actor 123 ) May be another thread (thread 2) of obtaining a lock of the VM 1 and making a second function call.
  • stacks corresponding to each of the VMs st11, st12, st21, and st22 are maintained for each thread. Can be.
  • the multi-thread processing system using the multi-virtual machine is a thread corresponding to the first function call (that is, The stack st11 corresponding to the thread 1) and the VM VM 1 may be determined (searched), and the first stack information corresponding to the first function call may be inserted into the determined stack st11.
  • a thread ie, thread 2
  • a VM corresponding to the second function call are included. That is, the stack st21 corresponding to VM1 may be determined.
  • the second stack information corresponding to the second function call may be inserted into the determined stack st21.
  • the multi-threaded processing system using the multi-virtual machine stacks corresponding to the current thread and VM.
  • Stack information ie, first stack information located at the top of the st11 may be extracted.
  • each thread maintains a stack for each VM, thereby preventing a stack error that may occur when a function call is executed by different actors.
  • the maximum number of stacks may be limited to the number of threads x the number of VMs.
  • FIG. 8 is a view showing a schematic configuration of a multi-threaded processing system using a multi-virtual machine according to an embodiment of the present invention.
  • a multi-threaded processing system 100 using a multi-virtual machine may include a control module 110, an actor module 120, a stack module 130, and a plurality of VMs ( 140).
  • the plurality of VMs 140 may include at least VM 1 141 and VM N 142.
  • the multi-threaded processing system 100 using the multi-virtual machine uses a predetermined script language and / or a predetermined other language that does not support multi-threading as described above. Massively Multiplayer Online Games), etc.).
  • the VMs 140 may refer to a predetermined virtual machine implemented in the scripting language. Therefore, according to the technical spirit of the present invention, it may be possible to implement a system suitable for a predetermined environment (eg, a multicore environment) requiring multithreading while using the scripting language.
  • a module may mean a functional and structural combination of hardware for performing the technical idea of the present invention and software for driving the hardware.
  • the module may mean a logical unit of a predetermined code and a hardware resource for performing the predetermined code, and does not necessarily mean a physically connected code or a kind of hardware. Can be easily inferred by the average expert in the art.
  • the module refers to a combination of hardware and software that performs the functions defined herein and does not mean a specific physical configuration.
  • the multi-threaded processing system 100 using the multi-virtual machine may mean a logical configuration having hardware resources and / or software necessary for implementing the technical idea of the present invention. It does not mean a physical component or a device.
  • the multi-threaded processing system 100 using the multi-virtual machine may mean a logical combination of hardware and / or software provided to implement the technical idea of the present invention. By installing and performing each function, it may be implemented as a set of logical configurations for implementing the technical idea of the present invention.
  • the multi-threaded processing system 100 using the multi-virtual machine may mean a set of components separately implemented for each function or role for implementing the technical idea of the present invention.
  • each of the control module 110, the actor module 120, the stack module 130, and / or the VMs 140 may be located on different physical devices or on the same physical device. It may be.
  • a combination of software and / or hardware configuring each of the control module 110, the actor module 120, the stack module 130, and / or the VMs 140 may also be combined with each other. Configurations located in different physical devices and components located in different physical devices may be organically combined with each other to implement each of the modules.
  • the control module 110 may include other components (eg, the actor module 120, the stack module 130, and / or the VMs 140) included in the multi-threaded processing system 100 using the multi-virtual machine. ) And / or resources.
  • control module 110 may control function calls of specific actors as described above. That is, it is possible to control unlocking and / or locking acquisition of a given VM performed by a function call of a specific actor.
  • the actor module 120 may create and manage each of a plurality of actors. In addition, when a specific actor is created, the actor module 120 may assign the generated actor to any one of the plurality of VMs 140.
  • Each of the actors created and managed by the actor module 120 may modify its state as an active object, communicate with other actors, or create a new actor, as disclosed in an earlier application. It may also contain information about a series of processing processes, that is, threads.
  • the stack module 130 may allocate a stack corresponding to the plurality of VMs 140 to each thread and maintain the stack. Therefore, the stack maintained by the stack module 130 may be the number of threads x the number of VMs. Since the data structure of the stack and data input / output using the same are well known in the computer science, a detailed description thereof will be omitted.
  • the control module 110 determines what the stack corresponding to the thread and VM corresponding to the function call is.
  • the stack module 130 may be controlled to insert stack information corresponding to the function call into the determined stack.
  • control module 110 may release the lock of the actor's own VM that made the function call, and control to acquire the lock of the actor's VM that has received the function call. This prevents deadlock as described in FIG. 1B and improves the performance of the system.
  • the multi-thread processing method using a multi-virtual machine can be implemented as computer-readable code on a computer-readable recording medium.
  • Computer-readable recording media include all kinds of recording devices that store data that can be read by a computer system. Examples of computer-readable recording media include ROM, RAM, CD-ROM, magnetic tape, hard disk, floppy disk, optical data storage, and the like, as well as carrier wave (e.g., transmission over the Internet). It also includes implementations.
  • the computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion. And functional programs, codes and code segments for implementing the present invention can be easily inferred by programmers in the art to which the present invention belongs.
  • the present invention can be applied to an object-based multi-scheduled system.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Multimedia (AREA)
  • Telephonic Communication Services (AREA)

Abstract

멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템 및 그 방법이 개시된다. 상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법은 제1스레드(thread)를 처리하기 위해 제1VM(virtual machine)에 할당된 제1액터가 제2액터로 제1펑션 콜(function call)을 하면, 상기 제1펑션 콜을 하기 위해 상기 제1펑션 콜에 대응되는 제1스택정보가 상기 제1스레드 및 상기 제1VM에 대응되는 제1스택에 삽입되는 단계, 상기 제1VM에 할당된 제3액터가 제2스레드를 처리하기 위해 상기 제1펑션 콜이 완료되기 전에 제2펑션 콜을 하는 단계, 및 상기 제2펑션 콜을 하기 위해 상기 제2펑션 콜에 대응되는 제2스택정보가 상기 제2스레드 및 상기 제1VM에 대응되는 제2스택에 삽입되는 단계를 포함한다.

Description

멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템 및 그 방법
본 발명은 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템 및 그 방법에 관한 것으로, 보다 상세하게는 멀티 스레드(multi-thread)를 지원하지 않는 버추얼 머신(virtual machine, 이하 'VM')을 이용하여 멀티 스레드를 처리할 수 있는 액터 시스템을 구현할 수 있는 시스템 및 그 제공방법에 관한 것이다.
데이터 처리 시스템의 발달과 함께는 최근에는 멀티코어 환경이 널리 이용되고 있다. 또한, 수정 및 테스트가 용이한 장점 및 코딩의 간편성 등의 다양한 이유로 스크립트(script) 언어도 널리 사용되고 있다.
스크립트 언어 중에는 멀티 스레드를 지원하지 않는 스크립트 언어가 존재할 수 있다. 멀티 스레드를 사용하지 못하는 경우에는 멀티코어와 같은 환경을 제대로 활용할 수 없게 된다. 따라서, 멀티 스레드를 지원하지 않는 스크립트 언어만으로 또는 다른 언어와 연동하여 소정의 멀티코어 환경을 사용하는 시스템을 구현하기 위해서는 서로 독립적인 여러 개의 스크립트 VM을 사용하는 것이 필요하다.
한편, 대용량의 데이터 프로세싱을 요구하는 컴퓨팅 시스템을 구현하기 위해 병렬 컴퓨팅이 이용될 수 있다. 이러한 병렬 컴퓨팅의 일 예로 객체 기반의 시스템 예컨대, 액터 시스템(Actor System)에 대한 개념이 공지된 바 있다. 이러한 액터 시스템에 대한 개념 및 액터 시스템에서의 데이터 처리방법에 대해서는 본 출원인이 출원한 한국특허출원(출원번호 10-2009-0104500, "교착 상태의 방지를 위한 데이터 처리 방법 및 시스템", 이하 '선출원')에도 개시된 바 있다. 선출원에 기재된 기술적 사상 및 내용은 본 명세서의 레퍼런스로 포함될 수 있다.
액터 시스템은 대용량의 데이터 프로세싱을 수행하기 위해 멀티 스레딩을 지원하는 환경(예컨대, 멀티코어 환경)이 요구될 수 있다. 따라서, 전술한 바와 같이 스크립트 언어를 사용하여 이러한 액터 시스템을 구현하기 위해서는 복수의 스크립트 VM을 이용할 수 있는 것이 요구될 수 있다.
따라서, 본 발명이 이루고자 하는 기술적인 과제는 멀티 스레드를 지원하지 않는 스크립트 언어를 이용하여 객체 기반의 시스템(예컨대, 액터 시스템)을 구현할 수 있는 기술적 사상을 제공하는 것이다.
또한, 이러한 스크립터 언어를 이용한 객체 기반의 시스템(예컨대, 액터 시스템)이 멀티 스레딩을 수행할 수 있도록 복수의 VM을 이용하는 기술적 사상을 제공하는 것이다.
또한, 복수의 VM을 이용하는 경우, 서로 다른 VM에 할당된 객체(예컨대, 액터)간의 펑션 콜(function call)을 안정적으로 수행할 수 있는 기술적 사상을 제공하는 것이다.
상기 기술적 과제를 달성하기 위한 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법은 제1스레드(thread)를 처리하기 위해 제1VM(virtual machine)에 할당된 제1액터가 제2액터로 제1펑션 콜(function call)을 하면, 상기 제1펑션 콜을 하기 위해 상기 제1펑션 콜에 대응되는 제1스택정보가 상기 제1스레드 및 상기 제1VM에 대응되는 제1스택에 삽입되는 단계, 상기 제1VM에 할당된 제3액터가 제2스레드를 처리하기 위해 상기 제1펑션 콜이 완료되기 전에 제2펑션 콜을 하는 단계, 및 상기 제2펑션 콜을 하기 위해 상기 제2펑션 콜에 대응되는 제2스택정보가 상기 제2스레드 및 상기 제1VM에 대응되는 제2스택에 삽입되는 단계를 포함한다.
상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법은 상기 제1액터가 상기 제1펑션 콜을 하기 위해, 상기 제1VM의 락(Lock)이 해제되고, 상기 제2액터가 할당된 제2VM이 락 되는 단계를 더 포함할 수 있다.
상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법은 상기 제2펑션 콜이 완료되기 전에 상기 제1펑션 콜이 완료되면, 상기 제1액터는 상기 제1스택정보에 상응하는 프로세싱을 수행하는 단계를 더 포함할 수 있다.
상기 제1펑션 콜 또는 상기 제2펑션 콜 중 적어도 하나는 리드 콜(read call) 또는 이벤트 콜 중 적어도 하나인 것을 특징으로 할 수 있다.
상기 기술적 과제를 해결하기 위한 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법은 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템이 소정의 스레드가 생성되면 상기 스레드에 VM별 스택을 할당하는 단계, 상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템에 의해 관리되는 소정의 제1액터가 상기 스레드를 처리하면서 소정의 펑션 콜을 하는 단계, 상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템이 상기 스레드의 상기 제1액터가 할당된 제1VM에 대응되는 스택을 판단하고, 판단된 스택에 상기 펑션 콜에 대응되는 스택정보를 삽입하는 단계를 포함한다.
상기 펑션 콜은 상기 제1VM과는 다른 제2VM에 할당된 제2액터로의 리드 콜 또는 이벤트 콜 중 적어도 하나인 것을 특징으로 할 수 있다.
상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법은 상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템이 상기 펑션 콜을 처리하기 위해, 상기 제1VM의 락(Lock)을 해제하고, 제2VM을 락 하는 단계를 더 포함할 수 있다. 상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법은 프로그램을 기록한 컴퓨터 판독 가능한 기록매체에 저장될 수 있다.
상기 기술적 과제를 해결하기 위한 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템은 복수의 VM들, 소정의 스레드가 생성되면 상기 스레드에 VM별 스택을 할당하기 위한 스택 모듈, 복수의 액터들(Actor)을 생성 및 관리하고 상기 복수의 액터들 각각을 상기 복수의 VM 중 어느 하나에 할당하기 위한 액터 모듈, 및 상기 복수의 액터들 중 어느 하나의 제1액터가 소정의 스레드를 처리하기 위해 펑션 콜을 하면, 상기 스레드 및 상기 제1액터가 할당된 제1VM에 대응되는 스택을 판단하고, 판단된 스택에 상기 펑션 콜에 대응되는 스택정보를 삽입하기 위한 제어모듈을 포함한다.
상기 펑션 콜은 상기 제1VM과는 다른 제2VM에 할당된 제2액터로의 리드 콜 또는 이벤트 콜 중 적어도 하나인 것을 특징으로 할 수 있으며, 상기 제어모듈은 상기 펑션 콜을 처리하기 위해, 상기 제1VM의 락(Lock)을 해제하고, 제2VM을 락 할 수 있다.
본 발명의 기술적 사상에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템 및 그 방법은 액터 간의 펑션 콜(예컨대, 리드 콜)을 수행할 때 데드 락(dead lock)이 발생하지 않는 효과가 있다.
또한, 각각의 스레드에 VM별로 스택이 분리되어 있으므로, 멀티 스레드 수행에 의한 VM의 스택 에러가 발생하지 않을 수 있는 효과가 있다.
또한, 대기 상태의 액터의 VM은 락(Lock)이 해제될 수 있으므로, 시스템의 성능이 향상될 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템이 서로 다른 VM에 할당된 액터 간에 통신을 위한 락 설정방법을 설명하기 위한 도면이다.
도 2는 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법에 따른 락 설정방법을 이용하면서 VM 별로 하나의 스택을 사용하는 경우 발생할 수 있는 문제점을 설명하기 위한 도면이다.
도 3은 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법에 따라 서로 다른 VM에 할당된 액터 간에 통신을 수행하는 일 예를 설명하기 위한 도면이다.
도 4는 도 3에 도시된 바와 같은 통신을 수행할 때 종래의 방법에 따른 VM 스택의 변화를 설명하기 위한 도면이다.
도 5는 도 3에 도시된 바와 같은 통신을 수행할 때 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법에 따라 스택의 변화를 설명하기 위한 도면이다.
도 6은 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법에 따라 서로 다른 VM에 할당된 액터 간에 통신을 수행하는 다른 이례를 나타내는 도면이다.
도 7은 도 6에 도시된 상황에서 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법에 따라 스택이 변화하는 과정을 설명하기 위한 도면이다.
도 8은 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템의 개략적인 구성을 나타내는 도면이다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시 예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
또한, 본 명세서에 있어서는 어느 하나의 구성요소가 다른 구성요소로 데이터를 '전송'하는 경우에는 상기 구성요소는 상기 다른 구성요소로 직접 상기 데이터를 전송할 수도 있고, 적어도 하나의 또 다른 구성요소를 통하여 상기 데이터를 상기 다른 구성요소로 전송할 수도 있는 것을 의미한다.
반대로 어느 하나의 구성요소가 다른 구성요소로 데이터를 '직접 전송'하는 경우에는 상기 구성요소에서 다른 구성요소를 통하지 않고 상기 다른 구성요소로 상기 데이터가 전송되는 것을 의미한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템이 서로 다른 VM에 할당된 액터 간에 통신을 위한 락 설정방법을 설명하기 위한 도면이다.
먼저 도 1a를 참조하면, 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템은 복수의 VM들(예컨대, VM 1, VM 2)을 제공한다. 상기 VM들(예컨대, VM 1, VM 2) 각각은 적어도 하나의 액터(예컨대, 10, 20)에 대응될 수 있다. 즉, 특정 액터가 생성될 때 마다, 상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템은 생성된 액터의 프로세싱을 담당할 VM을 지정할 수 있다. 소정의 VM(예컨대, VM1)은 복수의 액터에 대응될 수도 있다. 하지만, 동시에 복수의 액터들(또는 스레드)이 어느 하나의 VM을 사용할 수는 없다. 이는 상기 VM(예컨대, VM 1)이 멀티 스레드를 지원하지 않기 때문이다.
따라서, 상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템은 전술한 바와 같이 복수의 VM들(예컨대, VM 1, VM 2)을 이용하여 멀티 스레딩(multi-threading)을 지원하도록 구현될 수 있다.
한편, 각각의 VM들(예컨대, VM 1, VM 2)은 특정 시점에서 어느 하나의 액터(예컨대, 10 또는 20)만이 사용할 수 있다. 따라서, 도 1에 도시된 바와 같이 액터(10)가 VM 1을 사용하는 경우에는 다른 액터들 또는 다른 스레드가 상기 VM 1을 사용하지 못하도록 상기 VM 1을 락(Lock)할 수 있다.
이처럼 상기 액터(10)가 상기 VM 1을 락 한 후, 상기 VM 1을 이용해 소정의 동작 또는 기능을 수행하다가 다른 액터(예컨대, Actor B, 20)와 통신(communication)을 수행하여야 하는 경우가 있을 수 있다. 예컨대, 이벤트(event) 또는 리드(read) 호출(call) 등과 같은 다양한 펑션 콜(function call)이 그러한 경우일 수 있다.
상기와 같은 펑션 콜을 이용해 서로 다른 VM에 할당(대응)된 액터간에 통신을 수행하여야 하는 경우, 펑션을 콜하는 액터(예컨대, 10)은 콜을 당하는 액터(예컨대, 20)가 할당된 VM(예컨대, VM 2)의 락을 획득하여야 할 수 있다(S20). 이를 통해 상기 VM(예컨대, VM 2)가 상기 펑션 콜에 대응되는 동작을 수행하고, 그 동안에 다른 액터 또는 스레드가 상기 VM(예컨대, VM 2)를 사용하지 못하도록 할 수 있다. 이때 상기 펑션 콜을 하는 액터(예컨대, 10)가 자신의 VM(예컨대, VM 1)의 락을 계속 유지하고 있어야 할지 또는 락을 해제하여야 할지가 이슈(issue)가 될 수 있다.
본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법에서는 펑션 콜을 하는 액터(예컨대, 10)는 자신의 VM(예컨대, VM 1)의 락을 해제하고(S10), 펑션 콜을 받는 액터(예컨대, 20)의 VM(예컨대, VM 2)의 락을 획득하도록 할 수 있다(S20). 이처럼 소정의 펑션 콜을 위해 VM의 락을 해제하게 되면, 펑션 콜에 대한 응답이 올 때까지(S11), 상기 VM을 다른 액터들 또는 스레드가 이용할 수 있게 되므로, 시스템의 효율성이 높아지는 효과가 있다.
만약, 펑션 콜을 하는 액터(예컨대, 10)가 자신의 VM(예컨대, VM 1)의 락을 해제 하지 않는 경우에는 시스템의 효율성 뿐만 아니라, 데드 락(dead-lock)의 문제도 발생할 수 있다. 이는 도 1b를 참조하여 설명하도록 한다.
도 1b를 참조하면, 소정의 액터(10)는 자신의 VM(예컨대, VM 1)의 락을 유지한 상태에서(S30) 다른 액터(20)로 소정의 제1펑션 콜을 할 수 있다. 그러면, 상기 액터(20)는 자신의 VM(예컨대, VM 2)의 락을 획득할 수 있다(S40). 이때 상기 액터(20)가 상기 제1펑션 콜과 실질적으로 동시에 상기 액터(10)로 제2펑션 콜을 하거나, 상기 액터(20)가 자신의 VM(예컨대, VM 2)을 이용하여 소정의 동작을 수행하다가(S41), 상기 제1펑션 콜에 상응하는 응답을 상기 액터(10)로 출력하기 전에, 상기 액터(10)로 소정의 제2펑션 콜을 할 수 있다(S42). 그러면, 상기 액터(10)의 VM(예컨대, VM 1)은 액터(10)에 의해 락이 유지된 상태 즉, 상기 제1펑션 콜에 상응하는 응답을 받아야 하는 상황에서 다시 액터(20)에 의해 락이 획득되게 되어(S31) 두 액터가 서로 응답만을 기다리게 되는 데드 락 상태가 되게 된다.
따라서, 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템은 도 1a에 도시된 바와 같이 펑션 콜을 하는 액터는 자신의 VM의 락을 해제하고 펑션 콜을 하도록 구현될 수 있다.
다시 도 1a를 참조하면, 상기 펑션 콜을 당한 액터(예컨대, 20)는 자신의 VM(예컨대, VM 2)의 락을 획득하고(S20), 상기 펑션 콜에 상응하는 동작을 수행할 수 있다(S21). 그리고, 동작이 완료되면, 다시 자신의 VM(예컨대, VM 2)의 락을 해제하고(S22) 상기 펑션 콜에 상응하는 응답(response)을 상기 액터(예컨대, 10)으로 전송할 수 있다. 이처럼 펑션 콜에 상응하는 응답 역시, 펑션 콜과 마친가지로 응답을 하는 액터(예컨대, 20)는 자신의 VM(예컨대, VM 2)의 락을 해제하고(S22), 응답을 받는 액터(예컨대, 10)가 자신의 VM(예컨대, VM 1)의 락을 획득(S12)하도록 할 수 있다. 그러면, 응답을 받은 액터(예컨대, 10)은 응답결과를 받고 소정의 동작을 수행할 수 있다.
한편, 도 1a에 도시된 바와 같이 서로 다른 VM 에 할당된 액터 간에 통신을 위한 펑션 콜을 할 때의 락 컨트롤 방법을 사용하게 될 때, VM 별로 하나의 스택을 이용하게 되면 예기치 못한 스택 에러(stack error)가 발생할 수 있다. 이는 도 2를 참조하여 설명하도록 한다.
도 2는 VM 별로 하나의 스택을 사용하는 경우 발생할 수 있는 문제점을 설명하기 위한 도면인데, 먼저 도 2a는 도 1a에서 설명한 바와 같이 본 발명의 실시 예에 따라 펑션 콜을 하는 액터는 자신의 VM의 락을 해제하도록 구현될 수 있다.
도 2a에 도시된 바와 같이 제1액터(10) 및 제3액터(30)는 VM 1에 할당되고, 제2액터(20)는 VM 2에 할당될 수 있다.
이러한 경우, 제1액터(10)는 자신의 VM(예컨대, VM 1)의 락을 가진 상태에서 소정의 동작을 수행하다가, 락을 해제하고(S50) 소정의 제1펑션 콜을 제2액터(20)로 할 수 있다. 그러면, 제2액터(20)는 자신의 VM(예컨대, VM 2)의 락을 획득하고(S60), 자신의 VM(예컨대, VM 2)을 이용해 상기 제1펑션 콜에 상응하는 동작을 수행하며, 상기 동작이 완료되면 락을 해제하고(S61), 상기 제1펑션 콜에 상응하는 응답을 상기 제1액터(10)로 전송할 수 있다(S54).
한편, 상기 제1액터(10)가 제1펑션 콜을 하고 상기 제1펑션 콜에 상응하는 응답을 받기까지는, 상기 제1액터(10)가 자신의 VM(예컨대, VM 1)의 락을 해제하였으므로 다른 액터(예컨대, 제3액터(30)) 또는 다른 스레드가 상기 VM(예컨대, VM 1)을 이용할 수 있다.
예컨대, 제3액터(30)는 상기 제1액터(10)가 자신의 락을 해제한 후(S50), 소정의 이벤트 호출(S51)에 의해 상기 VM(예컨대, VM 1)의 락을 획득하고(S52) 소정의 동작을 수행할 수 있다. 그리고, 상기 제3액터(30)가 상기 동작을 수행하다가 자신의 VM(예컨대, VM 1)의 락을 해제하고(S53) 소저의 제2펑션 콜을 다른 액터로 할 수 있다.
이러한 플로우로 VM 1에 할당된 액터들이 순차적으로 락을 획득하고, 펑션 콜을 수행하는 경우 VM 1에 대응되는 스택은 스택 에러가 발생할 수 있다. 이는 도 2b를 참조하여 설명한다.
도 2b를 참조하면, 제1액터(10)가 자신의 VM(예컨대, VM 1)의 락을 획득하여 소정의 동작을 수행하다가 제1펑션 콜을 하게 되면(S50), 상기 제1액터(10)는 자신이 수행하던 상기 동작에 대한 정보 즉, 제1스택정보를 스택(Stack_VM 1)에 삽입하게 된다. 상기 제1스택정보를 상기 제1펑션 콜에 대응되는 스택정보로 정의할 수 있다. 그리고, 상기 제1펑션 콜이 완료되면(즉, 응답을 수신하면), 상기 제1스택정보를 상기 스택(Stack_VM 1)에서 인출하여 원래 수행하던 상기 동작을 계속 수행할 수 있다.
하지만, 도 2a에 도시된 바와 같이 상기 제1펑션 콜이 완료되기 전에(S54), 상기 VM 1의 락을 제3액터(30)가 획득하고, 상기 제3액터(30)가 소정의 다른 VM에 존재하는 다른 액터로 제2펑션 콜을 하게 되면(S53), 상기 제3액터(30)가 할당된 상기 VM 1은 상기 제2펑션 콜에 대응되는 제2스택정보가 상기 스택(Stack_VM 1)에 삽입되게 된다. 이후, 상기 제1액터(10)가 상기 제1펑션 콜이 완료되어 다시 자신의 VM(예컨대, VM 1)의 락을 획득하게 되면, 상기 제1액터(10)는 자신의 VM(예컨대, VM 1)에 대응되는 스택(Stack_VM 1)의 탑(top)에 존재하는 스택정보(즉, 제2스택정보)를 인출하게 된다. 인출되는 스택정보(즉, 제2스택정보)는 상기 제3액터(30)가 수행하던 동작이므로, 결국, 제1액터(10)가 제3액터(30)가 수행하던 동작에 상응하는 스택정보를 꺼내게 되어 에러가 발생하게 된다.
이러한 스택 에러는 특정 VM에서 소정의 액터가 펑션 콜을 수행하고, 상기 펑션 콜이 완료되기 전에 상기 특정 VM에서 다른 액터가 또 다른 펑션 콜을 수행한 후, 처음 수행되었던 펑션 콜이 완료되는 상황이기만 하면 발생할 수 있다.
이처럼, 멀티 스레딩을 위해 단순히 복수의 VM만을 분리하여 제공하는 경우에는 정상적인 동작을 보장할 수 없게 될 수 있다. 즉, 일반적으로는 VM 별로 펑션 콜을 지원하기 위해 하나씩의 스택이 유지될 수 있는데, 복수의 VM 만을 분리하여 제공하고 VM별로 하나의 스택을 유지하는 경우에는 정상적인 동작을 보장할 수 없게 된다.
따라서, 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템 및 방법은 전술한 바와 같이 VM 별로 스택을 하나씩 유지하는 것이 아니라, 스레드별로 VM 각각에 대응되는 스택을 제공하여 이러한 문제점을 해결할 수 있는 기술적 사상을 제공한다.
도 3은 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법에 따라 서로 다른 VM에 할당된 액터 간에 통신을 수행하는 일 예를 설명하기 위한 도면이다.
도 3을 참조하면, 제1액터(10)는 자신의 VM(예컨대, VM 1)의 락을 이용하여 소정의 동작(데이터의 처리)을 수행하다가 다른 VM(예컨대, VM 2)에 할당된 제2액터(20)와 통신을 위해 소정의 펑션 콜을 수행할 수 있다. 상기 펑션 콜은 이벤트 콜, 리드 콜 등 서로 다른 VM에 할당된 액터에게 소정의 정보를 요구하거나, 소정의 액션을 요구하고 응답을 기다릴 수 있는 모든 형태의 메시지 콜을 의미할 수도 있다.
상기 제1액터(10)는 상기 펑션 콜을 위해 전술한 바와 같이 자신의 락을 해제하고(S100), 제2액터(20)가 자신의 VM(예컨대, VM 2)의 락을 획득하도록 할 수 있다. 그러면, 상기 제2액터(20)는 상기 펑션 콜에 상응하는 동작을 수행한 후, 자신의 락을 해제하고, 상기 펑션 콜에 상응하는 응답을 상기 제1액터(10)로 전송할 수 있다. 그러면, 상기 제1액터(10)는 다시 자신의 VM(예컨대, VM 1)의 락을 획득할 수 있다(S102). 이와 같이 상기 제1액터(10)가 상기 펑션 콜을 하고, 다시 상기 펑션 콜에 상응하는 응답을 받는 일련의 데이터 프로세싱 과정을 하나의 스레드(스레드 1)로 취급할 수 있다.
한편, 상기 제1액터(10)가 락을 해제하고(S100) 다시 락을 획득(S102)하기 전까지(즉, S101), 소정의 액터에 의해 상기 제1액터(10)의 VM(예컨대, VM 1)은 다른 액터에 의해 이용이 가능한 상태일 수 있다. 상기의 구간(S101)에서 소정의 액터에 의해 상기 VM이 이용되어 특정 동작 또는 데이터 프로세싱을 수행하는 과정을 또 다른 스레드(스레드 2)로 정의할 수 있다.
도 3에서는 스레드 2가 처리되는 중에 소정의 펑션 콜이 수행될 수 있고, 스레드 2에서 수행된 상기 펑션 콜은 상기 스레드 1에서 수행된 펑션 콜이 완료되기 전에 완료된다고 가정할 수 있다.
그러면, VM 별로 하나의 스택이 할당된 경우, 상기 VM 1에 대응되는 스택(Stack_VM 1)의 변화는 도 4와 같을 수 있다.
도 4는 도 3에 도시된 바와 같은 통신을 수행할 때 종래의 방법에 따른 VM 스택의 변화를 설명하기 위한 도면이다.
도 3 및 도 4를 참조하면, 상기 VM 1에 하나의 스택(Stack_VM 1)이 할당되는 경우, 상기 제1액터(10)가 스레드 1을 수행하면서 제1펑션 콜을 하게 되면(S100), 상기 제1펑션 콜에 대응되는 스택정보(th1_스택정보 1)가 상기 스택(Stack_VM 1)에 삽입되게 된다. 그 후 소정의 액터가 스레드 2를 수행하면서(S101) 소정의 펑션 콜을 수행하게 되면, 상기 스택(Stack_VM 1)에는 상기 펑션 콜에 대응되는 소정의 스택정보(th2_스택정보 1)가 삽입되게 된다. 이 후, 상기 스레드 1에서 상기 제1액터(10)가 락을 획득하기 전(S102)의 소정의 시점에서, 상기 스레드 2의 펑션 콜이 완료되면(S101), 상기 스택(Stack_VM 1)에 삽입된 스택정보(th2_스택정보 1)는 상기 스택(Stack_VM 1)에서 인출되게 된다.
그러면, 상기 스택(Stack_VM 1)에는 상기 스레드 1의 제1펑션 콜에 대응되는 스택정보(th1_스택정보 1)가 가장 탑에 위치하게 되어, 상기 제1액터(10)가 락을 획득하면(S102) 상기 스택정보(th1_스택정보 1)를 정상적으로 이용하게 될 수 있다.
한편, 도 3에 도시된 바와 같은 상황에서 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법은 도 5에 도시된 바와 같은 방식을 이용할 수 있다.
도 5는 도 3에 도시된 바와 같은 통신을 수행할 때 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법에 따라 스택의 변화를 설명하기 위한 도면이다.
도 3 및 도 5를 참조하면, 제1액터(10)가 스레드 1을 처리하면서, 제1펑션 콜을 수행하면(S100), 상기 제1펑션 콜에 대응되는 스택정보(th1_스택정보 1)가 상기 스레드 1에 할당되고 상기 제1액터(10)가 할당된 VM 1에 대응되는 스택(st11)에 삽입된다. 즉, 도 4에 도시된 바와는 달리, 소정의 스택정보(th1_스택정보 1)를 스택에 삽입하기 위해 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템은 스레드 및 VM에 대응되는 스택을 먼저 판단하고, 판단된 스택에 상기 스택정보(th1_스택정보 1)를 삽입할 수 있다.
그 후 소정의 액터가 스레드 2를 수행하면서(S101) 상기 VM 1을 이용하여 소정의 펑션 콜을 수행하게 되면, 상기 펑션 콜에 대응되는 소정의 스택정보(th2_스택정보 1)는 상기 스레드 2 및 상기 VM 1에 대응되는 스택(st21)에 삽입되게 된다. 이 후, 상기 스레드 1에서 상기 제1액터(10)가 락을 획득하기 전(S102)의 소정의 시점에서, 상기 스레드 2의 펑션 콜이 완료되면(S101), 상기 스택(st21)에 삽입된 스택정보(th2_스택정보 1)는 상기 스택(st21)에서 인출되게 된다.
그 후, 상기 제1액터(10)가 락을 획득하면(S102), 상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템은 상기 스택정보(th1_스택정보 1)가 저장된 스택을 검색하고, 검색된 스택(St11)에서 상기 스택정보(th1_스택정보 1)를 인출할 수 있다.
한편, VM 별로 하나의 스택이 할당된 경우에는 스택 에러가 발생할 수 있는 상황에서, 본 발명의 기술적 사상에 따라 스택이 할당된 경우의 스택변화를 살펴보면 도 6 내지 도 7과 같을 수 있다.
도 6은 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법에 따라 서로 다른 VM에 할당된 액터 간에 통신을 수행하는 다른 일례를 나타내고, 도 7은 도 6에 도시된 상황에서 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법에 따라 스택이 변화하는 과정을 설명하기 위한 도면이다.
도 6 내지 도 7을 참조하면, 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템은 도 6에 도시된 바와 같이 제1액터(121) 및 제3액터(123)는 VM 1에 할당되고, 제2액터(122)는 VM 2에 할당될 수 있다.
이러한 경우, 제1액터(121)는 자신의 VM(예컨대, VM 1)의 락을 가진 상태에서 소정의 동작을 수행하다가, 락을 해제하고 소정의 제1펑션 콜을 제2액터(122)로 할 수 있다(S110). 그러면, 제2액터(122)는 자신의 VM(예컨대, VM 2)의 락을 획득하고, 자신의 VM(예컨대, VM 2)을 이용해 상기 제1펑션 콜에 상응하는 동작을 수행하며, 상기 동작이 완료되면 락을 해제하고, 상기 제1펑션 콜에 상응하는 응답을 상기 제1액터(121)로 전송할 수 있다(S54).
한편, 상기 제1액터(121)가 제1펑션 콜을 하고 상기 제1펑션 콜에 상응하는 응답을 받기 전에 소정의 제3액터(123)가 상기 VM 1의 락을 획득할 수 있다(S112). 상기 제3액터(123)는 소정의 이벤트 호출(111) 또는 펑션 콜에 의해 상기 VM 1의 락을 획득할 수 있다(S112).
그리고, 상기 VM 1의 락을 획득한 제3액터(123)는 소정의 동작을 수행하다가 자신의 VM(예컨대, VM 1)의 락을 해제하고(S113) 소저의 제2펑션 콜을 다른 액터로 할 수 있다. 상기 제2펑션 콜은 상기 제1펑션 콜이 완료되기 전 즉, 상기 제1펑션 콜에 대한 응답이 오기 전에 수행될 수 있다.
이 후, 상기 제1액터(121)는 상기 제2액터(122)로부터 상기 제1펑션 콜에 상응하는 응답을 수신하고, 다시 상기 제1액터(121) 자신의 VM(예컨대, VM 1)의 락을 획득할 수 있다.
여기서 상기 제1액터(121)가 제1펑션 콜을 수행하고, 다시 상기 제2액터(122)로부터 응답을 받는 일련의 과정이 하나의 스레드(스레드 1)일 수 있고, 상기 제3액터(123)가 상기 VM 1의 락을 획득하고 제2펑션 콜을 하는 일련의 과정이 또 하나의 스레드(스레드 2)일 수 있다.
이러한 경우, 도 2b에서 전술한 바와 같이 각각의 VM 별로 하나의 스택이 유지되는 경우에는 스택 에러가 발생할 수 있다.
하지만, 본 발명의 기술적 사상에 의하면, 이러한 경우에도 스택 에러를 방지할 수 있다.
도 7에 도시된 바와 같이 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법에 의하면, 각각의 스레드별로 VM들 각각에 대응되는 스택들(st11, st12, st21, st22)이 유지될 수 있다.
그러면, 상기 제1액터(121)가 제1펑션 콜을 수행하면(S110), 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템은 상기 제1펑션 콜에 상응하는 스레드(즉, 스레드 1) 및 VM(VM 1)에 대응되는 스택(st11)을 판단(검색)하고, 판단된 스택(st11)에 상기 제1펑션 콜에 대응되는 제1스택정보를 삽입할 수 있다.
이 후,상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템은 상기 제3액터(123)가 제2펑션 콜을 수행하면(S113), 상기 제2펑션 콜에 상응하는 스레드(즉, 스레드 2) 및 VM(즉, VM1)에 대응되는 스택(st21)을 판단할 수 있다. 그리고 판단된 스택(st21)에 상기 제2펑션 콜에 대응되는 제2스택정보를 삽입할 수 있다.
그 후, 상기 제1액터(121)가 다시 자신의 VM(예컨대, VM 1)의 락을 획득하면(S114), 상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템은 현재의 스레드 및 VM에 대응되는 스택(st11)의 탑에 위치한 스택정보(즉, 제1스택정보)를 인출할 수 있다.
이처럼, 본 발명의 기술적 사상에 따르면, 스레드 각각이 VM 별 스택을 유지하게 되어 서로 다른 액터에 의해 펑션 콜이 교차되어 수행될 때 발생할 수 있는 스택 에러를 방지할 수 있다. 또한, 스택의 최대 개수는 스레드의 개수 × VM의 개수로 제한될 수 있다.
도 8은 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템의 개략적인 구성을 나타내는 도면이다.
도 8을 참조하면, 본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템(100)은 제어모듈(110), 액터모듈(120), 스택모듈(130), 및 복수의 VM들(140)을 포함한다. 상기 복수의 VM들(140)에는 적어도 VM 1(141) 및 VM N(142)가 포함될 수 있다.
상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템(100)은 전술한 바와 같이 전술한 바와 같이 멀티 스레딩을 지원하지 않는 소정의 스크립트 언어 및/또는 소정의 다른 언어를 이용하여 소정의 애플리케이션(예컨대, MMOG(Massively Multiplayer Online Games) 등)을 제공하는 서버로 구현될 수 있다. 따라서, 상기 VM들(140)은 상기 스크립트 언어로 구현되는 소정의 가상 머신을 의미할 수 있다. 따라서, 본 발명의 기술적 사상에 따라 상기 스크립트 언어를 이용하면서도 멀티 스레딩이 필요한 소정의 환경(예컨대, 멀티코어 환경)에 적합한 시스템의 구현이 가능할 수 있다.
한편, 본 명세서에서 모듈이라 함은, 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적, 구조적 결합을 의미할 수 있다. 예컨대, 상기 모듈은 소정의 코드와 상기 소정의 코드가 수행되기 위한 하드웨어 리소스(resource)의 논리적인 단위를 의미할 수 있으며, 반드시 물리적으로 연결된 코드를 의미하거나, 한 종류의 하드웨어를 의미하는 것은 아님은 본 발명의 기술분야의 평균적 전문가에게는 용이하게 추론될 수 있다. 따라서, 상기 모듈은 본 명세서에서 정의되는 기능을 수행하는 하드웨어 및 소프트웨어의 결합을 의미하며 특정 물리적 구성을 의미하는 것은 아니다.
또한, 상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템(100)은 본 발명의 기술적 사상을 구현하기 위해 필요한 하드웨어 리소스(resource) 및/또는 소프트웨어를 구비한 논리적인 구성을 의미할 수 있으며, 반드시 하나의 물리적인 구성요소를 의미하거나 하나의 장치를 의미하는 것은 아니다. 즉, 상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템(100)은 본 발명의 기술적 사상을 구현하기 위해 구비되는 하드웨어 및/또는 소프트웨어의 논리적인 결합을 의미할 수 있으며, 필요한 경우에는 서로 이격된 장치에 설치되어 각각의 기능을 수행함으로써 본 발명의 기술적 사상을 구현하기 위한 논리적인 구성들의 집합으로 구현될 수도 있다. 또한, 상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템(100)은 본 발명의 기술적 사상을 구현하기 위한 각각의 기능 또는 역할별로 별도로 구현되는 구성들의 집합을 의미할 수도 있다.
예컨대, 상기 제어모듈(110), 상기 액터모듈(120), 상기 스택모듈(130), 및/또는 상기 VM들(140) 각각은 서로 다른 물리적 장치에 위치할 수도 있고, 동일한 물리적 장치에 위치할 수도 있다. 또한, 구현 예에 따라서는 상기 제어모듈(110), 상기 액터모듈(120), 상기 스택모듈(130), 및/또는 상기 VM들(140) 각각을 구성하는 소프트웨어 및/또는 하드웨어의 결합 역시 서로 다른 물리적 장치에 위치하고, 서로 다른 물리적 장치에 위치한 구성들이 서로 유기적으로 결합되어 각각의 상기 모듈들을 구현할 수도 있다.
상기 제어 모듈(110)은 상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템(100)에 포함되는 다른 구성(예컨대, 상기 액터모듈(120), 상기 스택모듈(130), 및/또는 상기 VM들(140) 등)의 기능 및/또는 리소스(resource)를 제어할 수 있다.
또한, 상기 제어모듈(110)은 전술한 바와 같이 특정 액터들의 펑션 콜을 컨트롤 할 수 있다. 즉, 특정 액터의 펑션 콜에 의해 수행되는 소정의 VM의 락 해제 및/또는 락 획득을 제어할 수 있다.
상기 액터 모듈(120)은 복수의 액터들 각각을 생성 및 관리할 수 있다. 또한, 상기 액터 모듈(120)은 특정 액터가 생성되면, 생성된 액터를 상기 복수의 VM들(140) 중 어느 하나에 할당되도록 할 수 있다.
상기 액터 모듈(120)에 의해 생성 및 관리되는 액터들 각각은 선출원에도 개시된 바와 같이 능동적 객체로써 자신의 상태를 수정하거나, 다른 액터와 통신을 수행할 수 있고, 새로운 액터를 생성할 수도 있다. 또한, 자신이 수행하는 일련의 프로세싱 과정 즉, 스레드에 대한 정보를 가지고 있을 수도 있다.
상기 스택모듈(130)은 스레드 각각에 상기 복수의 VM들(140)에 대응되는 스택을 할당하고, 이를 유지할 수 있다. 따라서, 상기 스택모듈(130)에 의해 유지되는 스택은 스레드의 수 × VM의 수가 될 수 있다. 스택의 데이터 구조 및 이를 이용한 데이터 입출력은 전산학에서 널리 공지되어 있으므로 상세한 설명은 생략하도록 한다.
따라서, 상기 제어모듈(110)은 상기 액터 모듈(120)에 의해 생성 및 관리되는 소정의 액터가 펑션 콜을 하면, 상기 펑션 콜에 상응하는 스레드 및 VM에 대응되는 스택이 무엇인지를 판단하고, 판단된 스택에 상기 펑션 콜에 대응되는 스택정보를 삽입하도록 상기 스택모듈(130)을 제어할 수 있다.
한편, 상기 제어모듈(110)은 상기 펑션 콜이 수행되면, 펑션 콜을 한 액터 자신의 VM의 락을 해제하고, 펑션 콜을 당한 액터의 VM의 락을 획득하도록 제어할 수 있다. 이를 통해 도 1b에서 설명한 바와 같은 데드 락을 방지하고, 시스템의 성능을 향상시킬 수 있다.
본 발명의 실시 예에 따른 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 하드 디스크, 플로피 디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명은 객체 기반의 멀티 스체드 시스템에 적용될 수 있다.

Claims (11)

  1. 제1스레드(thread)를 처리하기 위해 제1VM(virtual machine)에 할당된 제1액터가 제2액터로 제1펑션 콜(function call)을 하면, 상기 제1펑션 콜을 하기 위해 상기 제1펑션 콜에 대응되는 제1스택정보가 상기 제1스레드 및 상기 제1VM에 대응되는 제1스택에 삽입되는 단계;
    상기 제1VM에 할당된 제3액터가 제2스레드를 처리하기 위해 상기 제1펑션 콜이 완료되기 전에 제2펑션 콜을 하는 단계; 및
    상기 제2펑션 콜을 하기 위해 상기 제2펑션 콜에 대응되는 제2스택정보가 상기 제2스레드 및 상기 제1VM에 대응되는 제2스택에 삽입되는 단계를 포함하는 멀티버추얼 머신을 이용한 멀티 쓰레드 처리방법.
  2. 제 1항에 있어서, 상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법은,
    상기 제1액터가 상기 제1펑션 콜을 하기 위해, 상기 제1VM의 락(Lock)이 해제되고, 상기 제2액터가 할당된 제2VM이 락 되는 단계를 더 포함하는 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법.
  3. 제 1항에 있어서, 상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법은,
    상기 제2펑션 콜이 완료되기 전에 상기 제1펑션 콜이 완료되면, 상기 제1액터는 상기 제1스택정보에 상응하는 프로세싱을 수행하는 단계를 더 포함하는 멀티버추얼 머신을 이용한 멀티 쓰레드 처리방법.
  4. 제 1항에 있어서, 상기 제1펑션 콜 또는 상기 제2펑션 콜 중 적어도 하나는,
    리드 콜(read call) 또는 이벤트 콜 중 적어도 하나인 것을 특징으로 하는 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법.
  5. 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템이 소정의 스레드가 생성되면 상기 스레드에 VM별 스택을 할당하는 단계;
    상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템에 의해 관리되는 소정의 제1액터가 상기 스레드를 처리하면서 소정의 펑션 콜을 하는 단계;
    상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템이 상기 스레드의 상기 제1액터가 할당된 제1VM에 대응되는 스택을 판단하고, 판단된 스택에 상기 펑션 콜에 대응되는 스택정보를 삽입하는 단계를 포함하는 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법.
  6. 제 5항에 있어서, 상기 펑션 콜은,
    상기 제1VM과는 다른 제2VM에 할당된 제2액터로의 리드 콜 또는 이벤트 콜 중 적어도 하나인 것을 특징으로 하는 멀티버추얼 머신을 이용한 멀티 쓰레드 처리방법.
  7. 제 6항에 있어서, 상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법은,
    상기 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템이 상기 펑션 콜을 처리하기 위해, 상기 제1VM의 락(Lock)을 해제하고, 제2VM을 락 하는 단계를 더 포함하는 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법.
  8. 제 1항 내지 제 7항 중 어느 한 항에 기재된 방법을 수행하기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
  9. 복수의 VM들;
    소정의 스레드가 생성되면 상기 스레드에 VM별 스택을 할당하기 위한 스택 모듈;
    복수의 액터들(Actor)을 생성 및 관리하고 상기 복수의 액터들 각각을 상기 복수의 VM들 중 어느 하나에 할당하기 위한 액터 모듈; 및
    상기 복수의 액터들 중 어느 하나의 제1액터가 소정의 스레드를 처리하기 위해 펑션 콜을 하면, 상기 스레드 및 상기 제1액터가 할당된 제1VM에 대응되는 스택을 판단하고, 판단된 스택에 상기 펑션 콜에 대응되는 스택정보를 삽입하기 위한 제어모듈을 포함하는 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템.
  10. 제 9항에 있어서, 상기 펑션 콜은,
    상기 제1VM과는 다른 제2VM에 할당된 제2액터로의 리드 콜 또는 이벤트 콜 중 적어도 하나인 것을 특징으로 하는 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리방법.
  11. 제 10항에 있어서, 상기 제어모듈은,
    상기 펑션 콜을 처리하기 위해, 상기 제1VM의 락(Lock)을 해제하고, 제2VM을 락 하는 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템.
PCT/KR2011/009483 2011-02-28 2011-12-08 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템 및 그 방법 WO2012118268A2 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2011-0017732 2011-02-28
KR1020110017732A KR101191727B1 (ko) 2011-02-28 2011-02-28 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템 및 그 방법

Publications (2)

Publication Number Publication Date
WO2012118268A2 true WO2012118268A2 (ko) 2012-09-07
WO2012118268A3 WO2012118268A3 (ko) 2012-10-26

Family

ID=46758345

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2011/009483 WO2012118268A2 (ko) 2011-02-28 2011-12-08 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템 및 그 방법

Country Status (2)

Country Link
KR (1) KR101191727B1 (ko)
WO (1) WO2012118268A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109933411A (zh) * 2019-03-31 2019-06-25 山东超越数控电子股份有限公司 一种在线修改虚拟机内部配置系统及方法
CN110245005A (zh) * 2019-06-21 2019-09-17 中国人民解放军陆军工程大学 一种云训练平台

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102110760B1 (ko) * 2018-08-07 2020-05-15 매트릭스테크 주식회사 멀티 쓰레드 기반의 3차원 모델링 데이터 처리 장치 및 이의 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070011667A1 (en) * 2005-05-25 2007-01-11 Saravanan Subbiah Lock management for clustered virtual machines
KR20080054324A (ko) * 2006-12-12 2008-06-17 한국전자통신연구원 멀티 쓰레드 기반 센서 운영체제 환경에서의 스택 할당방법
JP2008146674A (ja) * 2008-02-04 2008-06-26 Toshiba Corp 自動分散処理システム
US20100031252A1 (en) * 2008-07-29 2010-02-04 Compuware Corporation Method And System For Monitoring The Performance Of An Application And At Least One Storage Device For Storing Code Which Performs The Method

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101080845B1 (ko) 2009-10-30 2011-11-07 (주)지노게임즈 교착 상태의 방지를 위한 데이터 처리 방법 및 시스템

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070011667A1 (en) * 2005-05-25 2007-01-11 Saravanan Subbiah Lock management for clustered virtual machines
KR20080054324A (ko) * 2006-12-12 2008-06-17 한국전자통신연구원 멀티 쓰레드 기반 센서 운영체제 환경에서의 스택 할당방법
JP2008146674A (ja) * 2008-02-04 2008-06-26 Toshiba Corp 自動分散処理システム
US20100031252A1 (en) * 2008-07-29 2010-02-04 Compuware Corporation Method And System For Monitoring The Performance Of An Application And At Least One Storage Device For Storing Code Which Performs The Method

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109933411A (zh) * 2019-03-31 2019-06-25 山东超越数控电子股份有限公司 一种在线修改虚拟机内部配置系统及方法
CN109933411B (zh) * 2019-03-31 2021-03-30 山东超越数控电子股份有限公司 一种在线修改虚拟机内部配置系统及方法
CN110245005A (zh) * 2019-06-21 2019-09-17 中国人民解放军陆军工程大学 一种云训练平台
CN110245005B (zh) * 2019-06-21 2021-05-25 中国人民解放军陆军工程大学 一种云训练平台

Also Published As

Publication number Publication date
KR101191727B1 (ko) 2012-11-21
WO2012118268A3 (ko) 2012-10-26
KR20120098051A (ko) 2012-09-05

Similar Documents

Publication Publication Date Title
WO2011053038A2 (ko) 교착 상태의 방지를 위한 데이터 처리 방법 및 시스템
US9213529B2 (en) Optimizing just-in-time compiling for a java application executing on a compute node
US7697443B2 (en) Locating hardware faults in a parallel computer
US9086924B2 (en) Executing a distributed java application on a plurality of compute nodes
WO2014025145A1 (en) Method and apparatus for processing message between processors
WO2013133586A1 (ko) 락 홀더 선점 회복 방법 및 장치
WO2016064158A1 (ko) 재구성 가능 프로세서 및 그 동작 방법
JP3745652B2 (ja) 並列処理コンピューティング・システムにおいてメモリを割り振るための方法
US20090125611A1 (en) Sharing loaded java classes among a plurality of nodes
WO2021107179A1 (ko) Autosar 기반 응용 소프트웨어의 설정 코드 자동 생성 방법 및 장치
WO2012173355A2 (ko) 게임 서버의 작업 파일 실행 장치 및 방법
WO2019212182A1 (en) Apparatus and method for managing a shareable resource in a multi-core processor
WO2012118268A2 (ko) 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템 및 그 방법
WO2018216920A1 (ko) 멀티 쓰레드 기반의 스프레드시트 문서 제공 장치 및 그의 동작 방법
WO2022124720A1 (ko) 운영체제 커널 메모리의 실시간 오류 검출 방법
US8176491B1 (en) Fast synchronization of simple synchronized methods
JP2002073357A (ja) 並列ソフトウェア処理システム
WO2015130093A1 (en) Method and apparatus for preventing bank conflict in memory
Potluri et al. Optimizing MPI one sided communication on multi-core infiniband clusters using shared memory backed windows
WO2021210880A1 (ko) 가상 머신에 자원을 할당하는 방법 및 장치
WO2019203573A1 (en) Method and apparatus for managing kernel services in multi-core system
WO2020222407A1 (ko) 머신 러닝 플랫폼 관리 시스템 및 방법
Hoefler et al. Writing parallel libraries with MPI-common practice, issues, and extensions
WO2020080882A1 (en) Method for handling kernel service request for interrupt routines in multi-core environment and electronic device thereof
Zheng et al. Concurrency design patterns, software quality attributes and their tactics

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11859976

Country of ref document: EP

Kind code of ref document: A2

NENP Non-entry into the national phase in:

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205N DATED 12/12/2013)

122 Ep: pct application non-entry in european phase

Ref document number: 11859976

Country of ref document: EP

Kind code of ref document: A2