KR20090081749A - The device and method of resource monitoring for application - Google Patents

The device and method of resource monitoring for application Download PDF

Info

Publication number
KR20090081749A
KR20090081749A KR1020080007795A KR20080007795A KR20090081749A KR 20090081749 A KR20090081749 A KR 20090081749A KR 1020080007795 A KR1020080007795 A KR 1020080007795A KR 20080007795 A KR20080007795 A KR 20080007795A KR 20090081749 A KR20090081749 A KR 20090081749A
Authority
KR
South Korea
Prior art keywords
execution
application
identification value
resource
thread
Prior art date
Application number
KR1020080007795A
Other languages
Korean (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 삼성전자주식회사
Priority to KR1020080007795A priority Critical patent/KR20090081749A/en
Publication of KR20090081749A publication Critical patent/KR20090081749A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

A resource monitoring method of application and an apparatus there are provided to grasp performance and the used amount of resources by S/W(Software) component and help to seek out an S/W component to focus for performance optimization. A plurality of execution component identification values of application is designated(41). A thread including the execution component identification values is produced(42). The execution information of the thread including the identification values is stored in a PCB(Process Control Block) data structure(43). In the PCB data structure, execution component resource information corresponding to the identification values is monitored(44).

Description

응용프로그램의 자원 모니터링 방법 및 그 장치{THE DEVICE AND METHOD OF RESOURCE MONITORING FOR APPLICATION}Application monitoring method and device thereof {THE DEVICE AND METHOD OF RESOURCE MONITORING FOR APPLICATION}

본 발명은 운영체제에서 다수의 스레드(thread)로 구성된 단일 프로세스 기반의 응용프로그램에 대한 자원 모니터링 방법 및 그 장치에 관한 것이다.The present invention relates to a method and apparatus for resource monitoring for a single process based application consisting of a plurality of threads in an operating system.

기존 VxWorks, pSOS 등의 실시간 운영체제(RTOS ; Real Time Operating System)를 이용하여 제품을 개발해 오던 CE(Customer Edge) 업체들이 고성능, 고기능 등의 요구에 부응하기 위해 점차 Linux, WinCE 등과 같은 가상메모리 기반의 고기능 운영체제를 활용하여 제품을 개발하는 추세이다.CE (Customer Edge) companies, which have developed products using real-time operating systems (RTOS) such as VxWorks and pSOS, are gradually using virtual memory based systems such as Linux and WinCE to meet the demands of high performance and high performance. The trend is to develop products using high-performance operating systems.

이 과정에서 기존 RTOS 상에서 개발되었던 S/W 플랫폼 및 응용들을 Linux 등의 운영체제에 그대로 이식하여 상용하는 경우가 많다. 이때, RTOS 상에서 태스크(task) 형태로 개발되었던 많은 실행 구성 요소(이하, 'S/W 컴포넌트(component)'라 칭함)들은, task 간 주소공간 공유 등의 특성 및 포팅에 따른 이슈 최소화를 위해, 프로세스(process)가 아닌 스레드(thread) 형태로 이식되는 경 우가 대부분이다.In this process, the S / W platform and applications developed on the existing RTOS are often ported to an operating system such as Linux for commercial use. At this time, many execution components (hereinafter, referred to as 'S / W components') developed in the form of tasks on the RTOS, in order to minimize issues due to characteristics and porting such as address space sharing between tasks, In most cases, it is ported to a thread rather than a process.

스레드(Thread)란 프로세스(Process)를 여러 개로 나눈 조각으로 프로그램의 관점에서 보면, 한 명의 개별 사용자 또는 특정한 서비스 요청을 서비스 하는데 필요한 정보이다.A thread is a piece of a process that is divided into pieces. From a program's point of view, it is the information needed to service one individual user or a specific service request.

모든 응용프로그램은 메인 응용 프로그램을 위한 하나의 스레드를 갖는다. 스레드는 다른 스레드들과 함께 수행될 수 있고, 각각의 스레드들은 자신을 관리하는 프로세스의 주소(Address)를 갖고 있다.Every application has one thread for the main application. Threads can run with other threads, and each thread has an address for the process that manages it.

다수의 사용자들이 그 프로그램을 쓰고 있거나, 또는 다른 프로그램들로부터 동시에 요청이 발생했을 때, 각각의 사용자나 프로그램들을 위해 스레드가 만들어지고, 또한 유지된다. 즉, 하나의 프로세스가 같은 시간에 여러 가지 일을 수행하기 위해서 여러 개의 스레드를 만들게 된다.When multiple users are writing the program, or when requests are made simultaneously from other programs, a thread is created and maintained for each user or program. In other words, one process can create several threads to perform several tasks at the same time.

스레드는 프로그램에게 현재 어떤 사용자가 서비스를 받고 있는지를 파악하게 함으로써, 다른 사용자들을 위하여 재진입해야 할 것인지의 선택을 할 수 있도록 한다. 즉, 스레드는 프로세스 내부에서 실행되는 일련의 명령 흐름을 뜻하는데 동시에 여러 개의 스레드가 수행 될 수 있는 프로그램을 멀티 스레드 프로그래밍이라고 말한다. The thread tells the program which user is currently receiving the service, allowing the user to choose whether to reenter for other users. In other words, a thread refers to a series of instructions that are executed inside a process. A multi-threaded programming is a program in which several threads can be executed at the same time.

오늘날의 컴퓨터들은 한 번에 단 한 개의 프로그램 명령어만을 수행할 수 있다. 그러나 그들이 매우 빠르게 동작하기 때문에, 동시에 많은 프로그램들을 실행하고, 많은 사용자들을 서비스 하는 것처럼 보이는 것뿐이다. 즉, 여러 스레드가 한꺼번에 실행되면 스레드들은 실행 순서대로 주어진 시간만큼씩 번갈아 가며 실행 하는 것이다.Today's computers can only execute one program instruction at a time. But because they run so fast, they only seem to run many programs at the same time and serve many users. In other words, if several threads are running at once, the threads run alternately for a given amount of time in the execution order.

프로세스/스레드 관리를 위한 PCB(Process Control Block) 자료구조(구조체)를 일반적인 리눅스(linux) 운영체제의 예를 들어 표현하면 도 1과 같다.A process control block (PCB) data structure (structure) for process / thread management is represented as an example of a general Linux operating system as shown in FIG. 1.

각각의 프로세스 또는 스레드는 상기 리눅스의 PCB 구조체인 하나의 task_struct에 의해 관리되며, 각 task_struct는 자신의 프로세스(process) 이름(ID) 또는 스레드(thread) 이름(ID)를 기억하기 위한 pid 필드와 메인 프로세스(main process)를 가리키기 위한 tgid 필드를 갖고 있다.Each process or thread is managed by one task_struct, the Linux PCB structure, and each task_struct has a main field and a pid field to store its process name (ID) or thread name (ID). It has a tgid field to indicate the main process.

상기 메인 프로세스의 pid와 tgid의 값은 동일하며, 이하 메인 프로세스(main process)에서 생성한 모든 스레드들은 각자 다른 pid 값을 갖게 되나, tgid는 모두 동일한 값을 갖는다.The values of pid and tgid of the main process are the same. Hereinafter, all threads created in the main process have different pid values, but tgid has the same value.

도 2는 종래의 프로세스/스레드의 포함 관계를 리눅스 운영체제의 예를 들어 나타낸 도면이다.2 is a diagram illustrating an example of a Linux operating system including a related process / thread.

도 2를 참조하면, 좌측 그림 (a)와 같이, 응용프로그램(20)은 system library(21), S/W platform(22), 3rd party library(23), application(24) 등의 다양한 S/W 컴포넌트(component)들이 단일 실행파일로 링크(link)되어 단일 프로세스로 실행될 수 있다.Referring to FIG. 2, as shown in the left figure (a), the application program 20 includes a variety of software programs such as a system library 21, an S / W platform 22, a third party library 23, an application 24, and the like. W components can be linked into a single executable and executed in a single process.

이러한 응용프로그램(20)은 도 2의 (b)에서 도시된 상기 리눅스 운영체제에서 프로세스/스레드 관리를 위한 PCB 자료 구조에서와 같이, 하나의 프로세스 내에 다수의 스레드들로 구성되어 실행된다. 이때, 응용프로그램(20)의 이름이 "hello"인 경우, main process와 모든 스레드들의 실행파일 이름(comm)은 "hello"로 동일하다.This application 20 is executed by being composed of a plurality of threads in one process, as in the PCB data structure for process / thread management in the Linux operating system shown in FIG. In this case, when the name of the application program 20 is "hello", the execution name (comm) of the main process and all the threads is the same as "hello".

이러한 경우, 각 스레드들은 도 1에서 전술한 프로세스 ID 또는 스레드 ID를 기억하기 위한 필드인 pid의 값을 이용하여 스레드들을 구분할 수는 있으나, 각각의 스레드들이 어느 S/W 컴포넌트에 속한 것인지 알 수 없다.In this case, each thread may identify the threads using the process ID or the value of pid, which is a field for storing the thread ID, described above in FIG. 1, but it is not possible to know which S / W component each thread belongs to. .

예를 들어, 도 3에서 도시된 바와 같이 다수의 스레드를 갖는 단일 프로세스 응용프로그램(application)을 나타낸 도면이다.For example, as shown in FIG. 3, a single process application with multiple threads is shown.

도 3을 참조하면, 단일 프로세스 형태를 갖는 응용프로그램일지라도, 다수의 스레드로 구성된 대규모 응용프로그램의 경우, 많은 S/W 컴포넌트들로 구성되어 실행될 수 있다.Referring to FIG. 3, even in an application having a single process form, a large application composed of a plurality of threads may be configured and executed by many S / W components.

예를 들어, 디지털 TV(Digital TV)(응용프로그램)와 같은 경우에도, DTV chipset vendor가 제공하는 H/W 제어 라이브러리, 윈도우 시스템 라이브러리, DTV platform, 각종 3rd party library, 각종 응용프로그램들이 포함되어, 각각 스레드를 생성하여 동작할 수 있다.For example, even in the case of a digital TV (application), the H / W control library, window system library, DTV platform, various 3rd party libraries, and various applications provided by the DTV chipset vendor are included. Each thread can be created and operated.

또한, 이와 같은 각 S/W 컴포넌트들은 아웃소싱(outsourcing)을 통해 개발될 수 있으므로, 개발 주체가 모두 다를 수 있다.In addition, each of these S / W components can be developed through outsourcing (outsourcing), the development subjects can all be different.

만일 상기 디지털 TV 응용프로그램의 CPU 사용량이 매우 높거나 메모리 사용량이 매우 높다면, 어떤 S/W 컴포넌트에서 주로 CPU를 많이 사용하는지, 메모리를 많이 사용하는지 분석해 보고 싶을 것이다.If the CPU usage of the digital TV application is very high or the memory usage is very high, you may want to analyze which S / W component is mainly CPU intensive or memory intensive.

도 2에서 전술하였듯이, 현재의 운영체제 구조에서는 각 스레드별로 pid 필드값만 다를 뿐, 스레드가 어느 S/W 컴포넌트에 속하는지에 대한 정보가 없기 때문에, 문제의 위치를 파악하고 개선 방안을 찾기가 어렵다.As described above with reference to FIG. 2, in the current OS structure, only the pid field value is different for each thread, and since there is no information on which S / W component the thread belongs to, it is difficult to identify a problem location and find an improvement method.

즉, 스레드는 스레드 ID로 구분하는 방법외에는 프로세스 이름과 같은 구분자가 없어, 관련성이 있는 스레드 그룹별로 성능 및 자원 정보를 분석하기 어렵다.In other words, there is no delimiter such as process name except the method of classifying by thread ID, so it is difficult to analyze performance and resource information for each thread group.

본 발명은 각 스레드들에 스레드 그룹 이름(thread group name)을 부여하고, 이 이름에 따라 스레드의 성능 및 자원 정보를 수집 및 그룹핑(grouping)하여 분석할 수 있는 방법을 제공한다.The present invention gives a thread group name to each thread, and provides a method for collecting and grouping and analyzing thread performance and resource information according to the name.

본 발명의 목적은 다수의 스레드로 구성된 단일 프로세스의 응용프로그램에 있어서, 상기 스레드들을 특정 기준으로 그룹화(grouping)함으로써 응용프로그램을 구성하는 S/W 컴포넌트(component)별 실행정보를 분석하기 위한 구성 및 그 방법을 제공하는 데 있다.SUMMARY OF THE INVENTION An object of the present invention is a configuration for analyzing execution information for each S / W component constituting an application by grouping the threads on a specific basis in a single process application program consisting of a plurality of threads. To provide that method.

본 발명의 다른 목적은 다수의 스레드로 구성된 단일 프로세스의 응용프로그램에 있어서, 상기 응용프로그램을 구성하는 S/W 컴포넌트별 실행정보를 분석할 수 있어 좀더 효율적인 운영을 위한 방법을 제공하는 데 있다.Another object of the present invention is to provide a method for more efficient operation by analyzing execution information for each S / W component constituting the application in a single process application program composed of a plurality of threads.

본 발명의 또 다른 목적은 다수의 스레드로 구성된 단일 프로세스의 응용프로그램에 대해서 여러 개발 주체들은 상기 응용프로그램을 구성하는 S/W 컴포넌트(component) 별로 CPU 사용량 및 메모리 사용량 등에 대한 정보를 수집할 수 있는 방법을 제공하는 데 있다.Another object of the present invention is to develop a plurality of threads for the application of a single process consisting of a plurality of threads can collect information on the CPU usage, memory usage, etc. for each S / W component (component) constituting the application To provide a way.

상기 과제를 해결하기 위해 안출된 것으로서, 본 발명의 제 1 견지에 따르면, 본 발명은 다수의 스레드로 구성된 단일 프로세스 기반의 응용프로그램에 대한 자원 모니터링 방법에 있어서, 응용프로그램의 다수의 실행 구성 요소별 식별값을 지정하는 과정과 상기 다수의 실행 구성 요소별 식별값을 포함한 스레드를 생성하는 과정과 상기 식별값을 포함하는 스레드의 실행정보를 PCB(Process Control Block)자료 구조에 저장하는 과정 및 상기 PCB 자료구조에서 상기 식별값에 해당하는 실행 구성 요소별 리소스 정보를 모니터링하는 과정을 포함함을 특징으로 하는 응용프로그램의 자원 모니터링 방법을 사용함으로써 상기 과제를 해결할 수 있다.In order to solve the above problems, according to the first aspect of the present invention, the present invention is a resource monitoring method for a single process-based application consisting of a plurality of threads, for each of the plurality of execution components of the application Assigning an identification value, generating a thread including the identification value for each of the execution components, storing execution information of the thread including the identification value in a process control block (PCB) data structure, and the PCB The problem can be solved by using a resource monitoring method of an application program, the method comprising monitoring resource information for each execution component corresponding to the identification value in a data structure.

상기 과제를 해결하기 위해 안출된 것으로, 본 발명의 제 2 견지에 따르면, 다수의 스레드로 구성된 단일 프로세스 기반의 응용프로그램에 대한 자원 모니터링 방법에 있어서, 실제 메모리 주소 영역에 할당되어 실행중인 다수의 실행 구성 요소로 구성된 응용프로그램이 시스템 콜(system call)을 호출하기 전에 지정된 프로그램 카운터(program counter) 값의 복귀 주소(return address)의 위치로 상기 시스템 콜이 완료된 후 리턴되는 과정과 상기 리턴되는 복귀 주소가 속한 상기 메모리 주소를 확인하여, 상기 시스템 콜이 실제로 호출된 메모리 주소의 실행 구성 요소를 판단하여 자동으로 상기 실행 구성 요소별 식별값을 설정하는 과정을 포함함을 특징으로 하는 응용프로그램에 대한 자원 모니터링 방법을 사용함으로써 상기 과제를 해결할 수 있다.In order to solve the above problems, according to the second aspect of the present invention, in the resource monitoring method for a single process-based application program consisting of a plurality of threads, a plurality of executions allocated to the actual memory address area and executing The process that is returned after the system call is completed and the return address returned to the position of the return address of the designated program counter value before the application consisting of the component calls the system call. And determining the execution component of the memory address where the system call is actually called by checking the memory address to which the system call belongs, and automatically setting an identification value for each execution component. The problem can be solved by using a monitoring method.

본 발명의 스레드 그룹 기반 응용프로그램 프로파일링(profiling) 및 자원 모니터링(resource monitoring) 기술을 통해, 다수의 스레드들로 구성된 단일 프로세스 응용에 대해서 개발자들은 S/W 컴포넌트(component) 별로 CPU 사용량 및 메모리 사용량 등에 대한 정보를 수집할 수 있게 된다.Through the thread group based application profiling and resource monitoring technique of the present invention, developers can use the CPU usage and memory usage by software components for a single process application composed of multiple threads. It is possible to collect information about the back.

그 동안 많은 아웃소싱(out-sourcing) 업체들을 통해서 개발된 S/W 컴포넌트 들을 단일 프로세스 모델로 개발하는 과정에서, 성능 저하 문제 및 리소스 과다 사용 문제 등이 발생하더라고 어느 S/W 컴포넌트에서 주로 문제를 야기하는지 분석하기가 어려운 점이 있었다.In the process of developing S / W components developed by many out-sourcing companies in a single process model, performance problems and resource overuse problems often cause problems in any S / W component. It was difficult to analyze.

그러나, 본 발명을 통한 스레드의 한 응용에 대해서 S/W 컴포넌트별 성능 및 자원의 사용량을 파악할 수 있으며, 성능 최적화를 위해 집중해야 할 S/W 컴포넌트를 찾아내는데 도움을 줄 수 있다.However, it is possible to grasp the performance and resource usage of each S / W component for an application of a thread through the present invention, and may help to find the S / W component to be focused for performance optimization.

이하 첨부된 도면을 참조하여 본 발명의 동작 원리를 상세히 설명한다. 하기에서 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.Hereinafter, the operating principle of the present invention will be described in detail with reference to the accompanying drawings. In the following description of the present invention, detailed descriptions of well-known functions or configurations will be omitted if it is determined that the detailed description of the present invention may unnecessarily obscure the subject matter of the present invention. Terms to be described later are terms defined in consideration of functions in the present invention, and may be changed according to intentions or customs of users or operators. Therefore, the definition should be made based on the contents throughout the specification.

도 4는 본 발명에 따른 응용프로램의 자원 모니터링 과정을 나타낸 순서도이다.4 is a flowchart illustrating a resource monitoring process of an application program according to the present invention.

상기 응용프로그램은 다양한 실행 구성 요소(이하, 'S/W 컴포넌트(component)'라 칭함)로 구성되며, 상기 S/W 컴포넌트들이 단일 실행파일로 링 크(link)되어 단일 프로세스로 실행될 수 있다. 이러한 응용프로그램은 하나의 프로세스 내에 다수의 스레들로 구성되어 실행된다.The application program is composed of various execution components (hereinafter, referred to as 'S / W component'), and the S / W components may be linked to a single executable file and executed in a single process. This application program consists of a number of threads in one process.

도 4를 참조하면, 상기 응용프로그램은 단일 프로세스하에서 상기 프로세스를 관리하는 운영체제 모듈이 41 단계에서 상기 응용프로그램의 각 S/W 컴포넌트별로 구분할 수 있는 식별값을 지정한다.Referring to FIG. 4, the application program designates an identification value that an operating system module managing the process under a single process can identify for each S / W component of the application in step 41.

특히, 본 발명의 일 실시예에 따라, 상기 각 S/W 컴포넌트별 식별값을 지정하는 방법으로 도 5 및 도 6에서 다루어 질 것이다. 도 5에서는 상기 실행 구성 요소별 식별값을 지정할 수 있는 기능 갖는 새로운 시스템 콜을 사용하는 반면, 도 6에서는 시스템 콜을 호출한 응용프로그램의 프로그램 카운터(PC ; Program Counter)를 이용함을 제시할 것이다. 구현에 따라서, 상기 S/W 컨포너트별 식별값은 디폴트값으로 설정될 수 있거나, 응용프로그램 실행에 따라 변경될 수 있다.In particular, according to an embodiment of the present invention, a method of specifying the identification value for each S / W component will be dealt with in FIGS. 5 and 6. In FIG. 5, a new system call having a function of specifying an identification value for each execution component is used, whereas in FIG. 6, a program counter (PC) of an application program calling the system call will be used. According to the implementation, the identification value for each S / W component may be set to a default value or may be changed according to application execution.

이후, 상기 운영체제 모듈은 42 단계에서 상기 식별값을 갖는 각 S/W 컴포넌트별로 스레드를 생성시킨다.In step 42, the operating system module creates a thread for each S / W component having the identification value.

상기 운영체제 모듈은 43 단계에서, 상기 식별값을 포함하는 스레드의 실행 정보를 PCB(Process Control Block) 자료구조에 저장한다. 상기 운영체제 모듈은 상기 PCB 자료구조에 의해 상기 프로세스 및 스레드 모두를 관리한다.In step 43, the operating system module stores execution information of a thread including the identification value in a process control block (PCB) data structure. The operating system module manages both the process and the thread by the PCB data structure.

이때, 상기 PCB 자료구조는 상기 식별값을 저장할 수 있는 필드가 확장된 자료구조이다.In this case, the PCB data structure is a data structure in which a field capable of storing the identification value is expanded.

상기 운영체제 모듈은 44 단계에서 상기 PCB 자료구조에 저장된 스레드의 실행 정보 중 상기 식별값을 기준으로 상기 S/W 컴포넌트별로 그룹화(grouping)하여 분석할 수 있다. 따라서, 상기 S/W 컴포넌트별 리소스 정보를 모니터링 할 수 있다.In operation 44, the operating system module may group and analyze the S / W component based on the identification value among the execution information of the thread stored in the PCB data structure. Therefore, resource information for each S / W component can be monitored.

또한, 상기 운영체제 모듈은 상기 저장된 스레드의 실행 정보를 저장하여, 추후 다시 이용할 수 있도록 할 수 있다.In addition, the operating system module may store execution information of the stored thread so that it can be used again later.

상기 스레드를 이용한 S/W 컴포넌트별 그룹화/분석 및 모니터링 과정은 상기 운영체제 모듈에서 이루어 질 수 있는데 국한하지 않고, 상기 응용프로그램 또는 외부 소프트웨어 프로그램에서 이루어질 수도 있다. 이에 대한 자세한 설명은 후술할 도 7에서 이어질 것이다.The grouping / analysis and monitoring process for each S / W component using the thread may be performed in the OS module, but may be performed in the application program or an external software program. A detailed description thereof will follow in FIG. 7 to be described later.

도 5는 본 발명의 일 실시 예에 따라 리눅스(linux) 운영체제에서 스레드의 그룹 이름(tgname) 지정 기능이 추가된 새로운 시스템 콜(clone2())을 이용한 PCB(Process Control block) 자료구조(구조체)를 나타낸 도면이다.5 is a process control block (PCB) data structure (structure) using a new system call (clone2 ()) to which a thread group name (tgname) designation function is added in a Linux operating system according to an embodiment of the present invention. The figure which shows.

상기 운영체제의 스케줄링을 담당하는 소프트웨어(여기서는, 리눅스의 '커널')는 상기 PCB 자료구조에 의해 상기 프로세스 및 스레드 모두를 관리한다.Software responsible for scheduling the operating system (here 'kernel' in Linux) manages both the process and the thread by means of the PCB data structure.

상기 응용프로그램은 스레드의 식별값(여기서는, 스레드 그룹 이름(tgname)) 지정 기능이 추가된 스레드를 생성하는 시스템 콜(clone2())을 호출한다. 이때, 상기 커널은 상기 기능을 갖는 시스템 콜을 제공한다.The application calls a system call (clone2 ()) that creates a thread to which a thread identification value (here, thread group name (tgname)) is added. At this time, the kernel provides a system call having the function.

상기 시스템 콜은 사용자 모드에 있는 응용프로그램이 커널의 기능을 사용할 수 있도록 하는 것으로서, 상기 시스템 콜이 호출되면 사용자 모드에서 커널 모드로 바꾸며, 상기 커널에서 시스템 콜을 처리하면 커널 모드에서 다시 사용자 모드 로 바뀌어 작업을 계속한다.The system call allows an application program in user mode to use kernel functions. When the system call is called, the system call is changed from user mode to kernel mode. When the system call is processed by the kernel, the system call is changed back to user mode. Change to continue working.

상기 응용프램그램은 상기 clone2() 시스템 콜을 통해 각 S/W 컴포넌트에 해당하는 스레드의 스레드 그룹 이름(tgname)을 지정하여 스레드를 생성한다. 즉, 각 S/W 컴포넌트를 식별할 수 있는 정보 필드를 추가한 뒤 상기 스레드를 생성할 때마다 적절한 이름을 설정한다.The application program creates a thread by specifying a thread group name (tgname) of a thread corresponding to each S / W component through the clone2 () system call. That is, an information field for identifying each S / W component is added and an appropriate name is set each time the thread is created.

상기 커널은 상기 응용프로그램이 지정한 상기 새롭게 추가한 정보 필드인 tgname을 포함하는 스레드의 정보를 PCB 구조체(task_struck)에 저장한다.The kernel stores information of a thread including the newly added information field tgname designated by the application program in a PCB structure task_struck.

예를 들어, 도시된 task_struct를 살펴보면, 프로세스 또는 스레드의 ID를 기억하기 위한 필드인 pid가 "1001"인 스레드가 S/W 컴포넌트가 subsystem "A"에서 생성되는 스레드인 경우, subsystem "A"가 스레드를 생성할 때, 해당 S/W 컴포넌트의 그룹 이름을 기억하기 위한 추가된 필드인 tgname에 "A"를 추가한다.For example, in the task_struct shown, if the thread whose pid is "1001", the field for remembering the ID of the process or thread, is the thread where the S / W component is created in subsystem "A", subsystem "A" is When creating a thread, add "A" to tgname, an added field to remember the group name of the S / W component.

마찬가지로, S/W platform의 "C"가 스레드를 생성할 때 tgname에 "C"를 지정하여 pid가 "1002"인 스레드를 생성한다.Likewise, when "C" on the S / W platform creates a thread, "C" is specified for tgname to create a thread with pid "1002".

이와 같이 스레드들을 생성한 뒤, 각 스레드들의 실행 정보를 수집하여, 동일한 tgname을 갖는 스레드들을 그룹화(grouping)하고, 이를 바탕으로 스레드 그룹별 CPU usage, Memory usage 등의 리소스(자원) 정보를 출력하면, S/W 컴포넌트(component)별 실행정보를 분석할 수 있다. 이는, 후술될 도 7을 참조하여 설명하겠다.After creating the threads in this way, by collecting the execution information of each thread, grouping the threads having the same tgname (group), and based on this outputs the resource (resource) information such as CPU usage, Memory usage by thread group In addition, execution information for each S / W component can be analyzed. This will be described with reference to FIG. 7 to be described later.

도 6은 본 발명의 또 다른 일 실시 예에 따라 리눅스 운영체제에서 시스템 콜(예 ; clone(), mmap() 등)을 호출한 응용프로그램의 프로그램 카운터(PC ; Program Counter)를 이용하여 자동으로 스레드의 식별값(스레드 그룹 이름(tgname))을 지정하는 방법을 나타낸 도면이다.FIG. 6 is a thread automatically using a program counter (PC; Program Counter) of an application calling a system call (eg, clone (), mmap (), etc.) in the Linux operating system according to another embodiment of the present invention. Is a diagram illustrating a method of specifying an identification value (thread group name (tgname)) of a node.

도 6의 (b)는 (a)의 각 S/W 컴포넌트를 포함하는 상기 응용프로그램의 실행으로 실제 메모리에 할당된 가상 주소(address)를 나타내고 있다. 도시된 바와 같이, 해당 주소영역에 각 S/W 컴포넌트가 특정 가상 주소에 할당됨을 알 수 있다.6 (b) shows a virtual address allocated to real memory by execution of the application program including each S / W component of (a). As shown, it can be seen that each S / W component is assigned to a specific virtual address in the corresponding address area.

다시 말해, 디스크에 저장되어 있던 실행 가능한 상기 응용프로그램이 메모리에 적재되어 운영 체제의 제어를 받는 프로세스 상태이다.In other words, the executable application program stored in the disk is loaded into the memory and under the control of the operating system.

도 6의 (c)는 시스템 콜(예 ; clone(), mmap() 등)을 호출한 응용프로그램의 프로그램 카운터(PC ; Program Counter)를 이용하여 자동으로 스레드의 그룹 이름(tgname)을 지정하는 방법을 나타낸 도면이다.(C) of FIG. 6 shows a group name (tgname) of a thread automatically using a program counter (PC; Program Counter) of an application program that calls a system call (eg, clone (), mmap (), etc.). A diagram illustrating the method.

도시된 바와 같이, 상기 메모리 공간(스택)에 할당되어 실행중인 응용프로그램은 필요에 따라 시스템 콜(예; clone(), mmap() 등)을 커널에게 호출한다(단계 61).As shown, the application allocated and running in the memory space (stack) calls a system call (e.g., clone (), mmap (), etc.) to the kernel as needed (step 61).

상기 시스템 콜은 사용자 모드에 있는 응용프로그램이 커널의 기능을 사용할 수 있도록 하는 것이므로, 상기 시스템 콜이 호출되면 사용자 모드에서 커널 모드로 바꾸며, 상기 커널에서 시스템 콜을 처리하면 커널 모드에서 다시 사용자 모드로 바뀌어 작업을 계속한다.Since the system call allows the application program in the user mode to use the kernel function, when the system call is called, the system call is changed from the user mode to the kernel mode. When the system call is processed by the kernel, the system call is returned from the kernel mode to the user mode. Change to continue working.

즉, 상기 시스템 콜이 호출되기 직전에는 상기 응용프로그램이 실행되면 상기에서 전술하여듯이 메모리의 스택에 할당(Application Run-time Stack)된다(단계 62a).That is, just before the system call is called, if the application program is executed, it is allocated to the stack of memory as described above (Application Run-time Stack) (step 62a).

더욱이, 상기 시스템 콜이 호출되면 상기 응용프로그램의 사용자 모드는 잠시 중단되며, 상기 사용자 모드에서 커널 모드로 바뀐다. 이때, 상기 커널은 상기 시스템 콜이 완료된 후 다시 응용프로그램의 실행을 위해 되돌아갈 주소에 해당하는 복귀 주소(return address)를 담고 있는 프로그램 카운터 값을 포함하는 메모리의 스택에 할당(Kernel Run-time Stack)된다(단계 62b).Moreover, when the system call is called, the user mode of the application is suspended for a while and changed from the user mode to the kernel mode. In this case, the kernel allocates a stack to a memory stack including a program counter value that includes a return address corresponding to an address to be returned for execution of an application after the system call is completed. (Step 62b).

상기 스택은 변수(예; 프로그램 실행)를 쓰거나 함수(예; 시스템 콜)를 호출할 때 사용되며, 상기 변수를 선언하면 스택이라는 메모리 공간에 공간이 할당된다. 더욱이, 상기 함수를 호출할 땐 함수를 호출하기 전에 프로그램 카운터 값을 스택에 넣어주고 호출하며, 호출된 함수가 실행되고 종료되어 리턴될 때 스택에 넣어 두었던 프로그램 카운터 값을 현재 프로그램 카운터 값으로 받아 원래의 자리로 돌아가게 된다.The stack is used when writing a variable (e.g. program execution) or calling a function (e.g. system call). Declaring the variable allocates space to a memory space called the stack. Moreover, when calling the function, the program counter value is put on the stack and called before calling the function. When the called function is executed, terminated and returned, the program counter value that was put on the stack is received as the current program counter value. Will return to the position of.

이때, 다음에 실행할 명령이 저장되어 있는 메인 메모리상의 주소(address)를 가지고 있는 레지스터인 상기 프로그램 카운터를 이용하는 경우, 각 명령어(시스템 콜)가 실행된 후, 곧 이어질 명령어(시스템 콜)의 주소를 가리키는 값이 자동적으로 증가된다.In this case, when using the program counter, which is a register having an address in the main memory where the next instruction to be stored is stored, the address of the instruction (system call) to be executed soon after each instruction (system call) is executed. The value pointed to is automatically incremented.

즉, 상기 시스템 콜을 호출할 때에는 상기 시스템 콜을 호출하기 전에 상기 프로그램 카운터 값을 스택에 넣어주고 호출한다. 호출된 시스템 콜이 실행되고 종료되어 리턴될 때 스택에 넣어두었던 프로그램 카운터 값을 현재 프로그램 카운터 값으로 받아 원래 자리로 돌아가게 된다(단계 63).That is, when calling the system call, the program counter value is put on the stack and called before calling the system call. When the called system call is executed, terminated and returned, the program counter value stored on the stack is received as the current program counter value and returned to the original position (step 63).

바람직하게도 본 발명에 따라, 상기 시스템 콜이 완료된 후 상기 프로그램 카운터가 지정한 주소값에 복귀한 응용프로그램은 상기 주소값이 상기 도 5의 (b)에서 제시한 가상 주소에 어떤 S/W 컴포넌트에 해당하는지 판단한다(단계 64).Preferably, according to the present invention, the application program returned to the address value designated by the program counter after the system call is completed, the address value corresponds to a certain S / W component to the virtual address presented in (b) of FIG. If yes, determine (step 64).

즉, 상기 해당 S/W 컴포넌트에서 실제로 상기 시스템 콜이 호출되었음을 의미하겠다.That is, it will mean that the system call is actually called from the corresponding S / W component.

따라서, 상기 리턴되는 복귀 주소가 속한 상기 메모리 주소를 확인하여, 상기 시스템 콜이 실제로 호출된 메모리 주소의 실행 구성 요소를 판단하여 자동으로 상기 실행 구성 요소별 식별값을 설정할 수 있을 것이다(단계 65).Accordingly, by checking the memory address to which the returned return address belongs, the system call may determine an execution component of the memory address actually called, and automatically set an identification value for each execution component (step 65). .

더욱이, 상기 응용프로그램이 필요에 따라 스레드를 생성할 경우, 상기 각 실행 구성 요소별로 설정된 식별값을 포함하는 스레드를 생성할 수 있다.In addition, when the application creates a thread as needed, a thread including an identification value set for each execution component may be created.

이후, 상기 식별값을 포함하는 스레드의 실행정보를 PCB 자료구조에 저장하고, 상기 PCB 자료구조에서 상기 식별값에 해당하는 실행 구성 요소별 리소스 정보를 모니터링할 수 있을 것이다.Thereafter, execution information of the thread including the identification value may be stored in a PCB data structure, and resource information for each execution component corresponding to the identification value may be monitored in the PCB data structure.

이때, 도 5에서 전술하였듯이, 상기 해당 운영체제의 커널은 상기 응용프로그램을 제어에 적합한 자료구조(PCB)로 만들어 메모리로 읽어낸 후, 상기 커널의 프로세스 테이블에 등록하고, 메모리, 파일, 입출력 장치 같은 자원을 할당하는데, 이때부터 상기 응용프로그램은 상기 커널의 한 프로세스로서 실행 상태가 된다.In this case, as described above with reference to FIG. 5, the kernel of the corresponding operating system makes the application program into a data structure (PCB) suitable for control, reads it into memory, registers it in a process table of the kernel, and registers a memory, a file, an input / output device, Allocates resources, from which the application is executed as a process of the kernel.

도 6에서 전술한 방법에 의해 각 S/W 컴포넌트에 해당하는 식별값(예 ; tgname(스레드 그룹 이름))이 설정된 스레드의 정보를 담은 PCB 자료구조는 결론적으로 도 5에서 제시한 실시 예와 같은 식별자 정보를 포함하는 자료구조를 생성할 것이다.The PCB data structure containing the information of the thread in which the identification value (for example, tgname (thread group name)) corresponding to each S / W component is set by the method described above in FIG. 6 is consequently the same as the embodiment shown in FIG. We will create a data structure containing the identifier information.

따라서, 상기 응용프로그램은 S/W 컴포넌트별로 식별값(예 ; tgname)이 설정된 각 스레드들을 생성하고, 상기 커널은 각 스레드들의 실행 정보를 수집하여, 동일한 tgname을 갖는 스레드들을 그룹화(grouping)할 수 있다.Therefore, the application program generates each thread for which an identification value (for example, tgname) is set for each S / W component, and the kernel collects execution information of each thread to group threads having the same tgname. have.

이를 바탕으로 스레드 그룹별 CPU usage, Memory usage 등의 리소스(자원) 정보를 출력하면, S/W 컴포넌트(component)별 실행정보를 분석할 수 있다. 이는, 후술될 도 7을 참조하여 설명하겠다.Based on this, by outputting resource (resource) information such as CPU usage and memory usage by thread group, execution information for each S / W component can be analyzed. This will be described with reference to FIG. 7 to be described later.

도 7은 시스템 구성 요소 및 스레드-그룹(thread-group)별 실행정보 수집 과정을 나타낸 도면이다.7 is a diagram illustrating a process of collecting execution information for each system component and thread-group.

도 7을 참조하면, 응용 프로그램(Application)의 각 S/W component가 도 5에서 설명한 스레드의 그룹 이름 지정 기능이 추가된 새로운 clone2() 등의 시스템 콜(system call)을 통해 스레드의 그룹 이름(tgname)을 지정하여 스레드를 생성한다(①과정). 이때, 도시된 커널의 System Call Interface는 clone2()와 같이 상기 tgname 지정 기능이 추가된 시스템 콜을 제공한다.Referring to FIG. 7, each S / W component of an application uses a group call of a thread through a system call such as a new clone2 () to which a group naming function of the thread described in FIG. 5 is added. tgname) to create a thread (Step 1). In this case, the system call interface of the illustrated kernel provides a system call to which the tgname designation function is added, such as clone2 ().

또는, 도 6에서 설명한 기존의 clone(), mmap() 등의 커널이 제공하는 시스템 콜을 통해, 상기 시스템 콜을 호출한 응용프로그램의 프로그램 카운터를 이용하여, 해당 S/W 컴포넌트별로 스레드 그룹 이름(thname)을 자동으로 설정하여 스레드를 생성할 수 있다.Alternatively, through the system call provided by the kernel such as clone (), mmap (), etc. described in FIG. 6, the thread group name for each corresponding S / W component using the program counter of the application program calling the system call. You can create a thread by setting (thname) automatically.

이후, 커널은 새로운 스레드를 호출하고, 상기 응용프로그램이 지정한 tgname을 PCB 구조체에 저장한다(② 과정). 여기서의 상기 PCB(Process Control Block) 구조체는 상기 tgname을 저장할 수 있도록 필드가 확장된 자료구조이다.The kernel then calls a new thread and stores the tgname specified by the application in the PCB structure (step ②). The PCB (Process Control Block) structure here is a data structure in which the field is extended to store the tgname.

이때, 도시된 Performance/Resource Info. Collector는 지속적으로 프로세스/스레드(process/thread)별 실행정보를 수집하기 위해 커널에게 요청한다(③ 과정).At this time, the illustrated Performance / Resource Info. Collector constantly asks the kernel to collect process / thread execution information (process ③).

커널은 요청된 프로세스/스레드별 실행정보를 수집하여 Performance/Resource Info. Monitoring Interface로 전달한다(④ 과정). 상기 Performance/Resource Info. Monitoring Inrerface는 상기 커널로부터 프로세스/스레드별 실행 정보를 응용프로그램에게 제공하기 위한 인터페이스이다.The kernel collects execution information for each requested process / thread and displays Performance / Resource Info. Transfer to Monitoring Interface (step ④). Performance / Resource Info. Monitoring Inrerface is an interface for providing process / thread execution information from the kernel to an application program.

이후, Performance/Resource Info. Monitoring Interface는 process/thread 실행정보를 Performance/Resource Info. Collector에게 전달한다(⑤ 과정). 상기 Performance/Resource Info. Collector는 상기 Performance/Resource Info. Monitoring Interface를 통해 지속적으로 프로세스/스레드 정보를 수집하여 실행정보 저장소에 저장하고, 분석도구에게 제공한다.Thereafter, Performance / Resource Info. Monitoring Interface displays process / thread execution information in Performance / Resource Info. Deliver to Collector (step ⑤). Performance / Resource Info. Collector is the Performance / Resource Info. Through monitoring interface, process / thread information is continuously collected, stored in execution information repository, and provided to analysis tool.

또한, 상기 Performance/Resource Info. Collector는 수집된 정보를 실행정보 저장소에 저장하여, 추후 다시 이용할 수 있도록 한다(⑥ 과정).In addition, the Performance / Resource Info. Collector saves the collected information in the execution information store so that it can be used again later (⑥ process).

이후, 도시된 Performance/Resource Info. Analysis & Presentation은 수집되어 저장된 thread 실행정보를 분석하여, 스레드 그룹 이름(thread group name) 구분자(tgname)를 기준으로 그룹화하고, 이를 바탕으로 스레드 그룹별 실행정보를 분석하여 사용자에게 제공한다(⑦ 과정).Since, Performance / Resource Info. Analysis & Presentation analyzes collected and stored thread execution information, groups them based on thread group name delimiter (tgname), and analyzes the execution information for each thread group and provides them to users (⑦ process ).

도 7에서 제시한 응용프로그램, 커널 등의 구성요소들은 상기 해당 운영체제 모듈에 포함할 수 있으며, 상기 운영체제 모듈은 다수의 스레드로 구성된 단일 프로세스 기반의 응용프로그램에 대한 자원 모니터링을 지원한다. 특히, 본 발명에 따라 응용프로그램이 생성한 다수의 스레드들은 상기 응용프로그램의 S/W 컴포넌트별로 그룹화할 수 있는 스레드 그룹 이름을 포함하고 있다.Components such as an application program, a kernel, and the like shown in FIG. 7 may be included in the corresponding operating system module, and the operating system module supports resource monitoring for a single process based application program composed of a plurality of threads. In particular, the plurality of threads generated by the application program according to the present invention includes a thread group name that can be grouped by S / W components of the application program.

바람직하게도, 상기 운영체제 모듈은 상기 스레드 그룹 이름을 포함하고 있는 스레드를 S/W 컴포넌트별로 구분하여 분석된 리소스 정보를 사용자에게 제공할 수 있다.Preferably, the operating system module may provide the analyzed resource information to the user by dividing the thread including the thread group name for each S / W component.

따라서, 상기 운영체제 모듈을 디지털 TV 등의 다양한 장치(device)에 적용한다면, 본 명세서에서 전술한 종래의 문제점을 해결함과 동시에 성능 개선에 도움이 될 것이다.Therefore, if the operating system module is applied to various devices such as a digital TV, it will help to improve the performance while solving the conventional problems described above in the present specification.

도 1은 일반적인 리눅스(linux) 운영체제에서 프로세스/스레드 관리를 위한 프로세스 제어 블럭(PCB ; Process Control Block) 자료구조(구조체)를 나타낸 도면;1 is a diagram illustrating a process control block (PCB) data structure (structure) for process / thread management in a general Linux operating system;

도 2는 종래의 프로세스/스레드의 포함 관계를 리눅스 운영체제의 예를 들어 나타낸 도면;2 is a diagram illustrating a Linux operating system including a related process of a conventional process / thread;

도 3은 다수의 스레드를 갖는 단일 프로세스 응용프로그램(application)을 나타낸 도면;3 illustrates a single process application with multiple threads;

도 4는 본 발명에 따른 응용프로램의 자원 모니터링 과정을 나타낸 순서도;4 is a flowchart illustrating a resource monitoring process of an application program according to the present invention;

도 5는 본 발명의 일 실시 예에 따라 리눅스 운영체제에서 스레드의 그룹 이름(예 ; tgname) 지정 기능이 추가된 새로운 시스템 콜(예 ; clone2())을 이용한 프로세스 제어 블럭 자료구조(구조체)를 나타낸 도면;FIG. 5 is a diagram illustrating a process control block data structure (structure) using a new system call (eg, clone2 ()) to which a thread group name (eg, tgname) designation function is added in a Linux operating system according to an embodiment of the present invention. drawing;

도 6은 본 발명의 또 다른 일 실시 예에 따라 리눅스 운영체제에서 시스템 콜(예 ; clone(), mmap() 등)을 호출한 응용프로그램의 프로그램 카운터(PC ; Program Counter)를 이용하여 자동으로 스레드의 그룹 이름을 지정하는 방법을 나타낸 도면; 및FIG. 6 is a thread automatically using a program counter (PC; Program Counter) of an application calling a system call (eg, clone (), mmap (), etc.) in the Linux operating system according to another embodiment of the present invention. A diagram illustrating a method of naming a group; And

도 7은 시스템 구성 요소 및 스레드-그룹(thread-group)별 실행정보 수집 과정을 나타낸 도면.7 is a diagram illustrating a process of collecting execution information for each system component and thread-group.

Claims (34)

다수의 스레드로 구성된 단일 프로세스 기반의 응용프로그램에 대한 자원 모니터링 방법에 있어서,In the resource monitoring method for a single process-based application consisting of a plurality of threads, 응용프로그램의 다수의 실행 구성 요소별 식별값을 지정하는 과정;Designating an identification value for each of a plurality of execution components of an application program; 상기 다수의 실행 구성 요소별 식별값을 포함한 스레드를 생성하는 과정;Creating a thread including the plurality of identification values for each of the execution components; 상기 식별값을 포함하는 스레드의 실행정보를 프로세스 제어 블럭(PCB : Process Control Block)자료 구조에 저장하는 과정;Storing execution information of a thread including the identification value in a process control block (PCB) data structure; 상기 프로세스 제어 블럭 자료구조에서 상기 식별값에 해당하는 실행 구성 요소별 리소스 정보를 모니터링하는 과정을 포함함을 특징으로 하는 응용프로그램의 자원 모니터링 방법.And monitoring resource information for each execution component corresponding to the identification value in the process control block data structure. 제 1항에 있어서,The method of claim 1, 상기 스레드를 생성하는 과정은 상기 실행 구성 요소별 식별값을 지정하는 기능을 갖는 시스템 콜(system call)을 사용함을 특징으로 하는 응용프로그램의 자원 모니터링 방법.The process of generating the thread uses a system call having a function of specifying an identification value for each of the execution components. 제 2항에 있어서,The method of claim 2, 상기 실행 구성 요소별 식별값을 지정하는 기능을 갖는 시스템 콜의 제공은 운영체제의 커널(Kernel)에서 관리됨을 특징으로 하는 응용프로그램의 자원 모니터링 방법.Providing a system call having a function of specifying an identification value for each execution component is managed by a kernel of an operating system. 제 3항에 있어서,The method of claim 3, wherein 상기 프로세스 제어 블럭 자료구조는 상기 식별값을 저장할 수 있는 필드가 확장된 자료구조임을 특징으로 하는 응용프로그램의 자원 모니터링 방법.The process control block data structure is a resource monitoring method of an application program, characterized in that the field for storing the identification value is an extended data structure. 제 1항에 있어서,The method of claim 1, 상기 응용프로그램의 자원 모니터링 방법은 상기 수집된 실행 정보를 추후 다시 이용할 수 있도록 저장소에 저장하는 과정을 더 포함함을 특징으로 하는 응용프로그램의 자원 모니터링 방법.The resource monitoring method of the application program resource monitoring method further comprises the step of storing the collected execution information in the storage for future use again. 제 1항에 있어서,The method of claim 1, 상기 리소스 정보는 상기 실행 구성 요소별 CPU 사용량(CPU usage) 또는 메모리 사용량(Memory usage)에 관한 것임을 특징으로 하는 응용프로그램의 자원 모니터링 방법.The resource information is a resource monitoring method of an application, characterized in that the CPU usage (CPU usage) or memory usage (Memory usage) for each execution component. 제 1항에 있어서,The method of claim 1, 상기 모니터링은 상기 응용프로그램 또는 외부 S/W 프로그램에 의해서 제공됨을 특징으로 하는 응용프로그램의 자원 모니터링 방법.The monitoring method of the resource of the application, characterized in that provided by the application or an external software program. 제 1항에 있어서,The method of claim 1, 상기 응용프로그램의 자원 모니터링 방법은 WinCE, Linux 등의 가상메모리 기반의 운영체제에 적용됨을 특징으로 하는 응용프로그램의 자원 모니터링 방법.The resource monitoring method of the application program is a resource monitoring method of an application program, characterized in that applied to a virtual memory-based operating system, such as WinCE, Linux. 다수의 스레드로 구성된 단일 프로세스 기반의 응용프로그램에 대한 자원 모니터링 방법에 있어서,In the resource monitoring method for a single process-based application consisting of a plurality of threads, 실제 메모리 주소 영역에 할당되어 실행중인 다수의 실행 구성 요소로 구성된 응용프로그램이 시스템 콜(system call)을 호출하기 전에 지정된 프로그램 카운터(program counter) 값의 복귀 주소(return address)의 위치로 상기 시스템 콜이 완료된 후 리턴되는 과정;The system call to the position of the return address of the specified program counter value before the application program consisting of a plurality of execution components allocated and executed in the real memory address area calls the system call. Returned after this is completed; 상기 리턴되는 복귀 주소가 속한 상기 메모리 주소를 확인하여, 상기 시스템 콜이 실제로 호출된 메모리 주소의 실행 구성 요소를 판단하여 자동으로 상기 실행 구성 요소별 식별값을 설정하는 과정을 포함함을 특징으로 하는 응용프로그램의 자원 모니터링 방법.Checking the memory address to which the returned return address belongs, and determining an execution component of the memory address from which the system call is actually called, and automatically setting an identification value for each execution component. How an application monitors resources. 제 9항에 있어서,The method of claim 9, 상기 응용프로그램에 대한 자원 모니터링 방법은,Resource monitoring method for the application, 상기 응용프로그램이 필요에 따라 스레드를 생성할 경우, 상기 각 실행 구성 요소별로 설정된 식별값을 포함하는 스레드를 생성하는 단계;When the application creates a thread as needed, generating a thread including an identification value set for each execution component; 상기 식별값을 포함하는 스레드의 실행정보를 프로세스 제어 블럭(PCB :Process Comtrol Block)에 저장하는 과정;Storing execution information of a thread including the identification value in a process control block (PCB); 상기 프로세스 제어 블럭 자료구조에서 상기 식별값에 해당하는 실행 구성 요소별 리소스 정보를 모니터링하는 과정을 더 포함함을 특징으로 하는 응용프로그램의 자원 모니터링 방법.And monitoring the resource information for each of the execution components corresponding to the identification value in the process control block data structure. 제 10항에 있어서,The method of claim 10, 상기 프로세스 제어 블럭 자료구조는 상기 식별값을 저장할 수 있는 필드가 확장된 자료구조임을 특징으로 하는 응용프로그램의 자원 모니터링 방법.The process control block data structure is a resource monitoring method of an application program, characterized in that the field for storing the identification value is an extended data structure. 제 10항에 있어서,The method of claim 10, 상기 응용프로그램의 자원 모니터링 방법은 상기 수집된 실행 정보를 추후 다시 이용할 수 있도록 저장소에 저장하는 과정을 더 포함함을 특징으로 하는 응용프로그램의 자원 모니터링 방법.The resource monitoring method of the application program resource monitoring method further comprises the step of storing the collected execution information in the storage for future use again. 제 10항에 있어서,The method of claim 10, 상기 리소스 정보는 상기 실행 구성 요소별 CPU 사용량(CPU usage) 또는 메모리 사용량(Memory usage)에 관한 것임을 특징으로 하는 응용프로그램의 자원 모니터링 방법.The resource information is a resource monitoring method of an application, characterized in that the CPU usage (CPU usage) or memory usage (Memory usage) for each execution component. 제 10항에 있어서,The method of claim 10, 상기 모니터링은 상기 응용프로그램 또는 외부 S/W 프로그램에 의해서 제공됨을 특징으로 하는 응용프로그램의 자원 모니터링 방법.The monitoring method of the resource of the application, characterized in that provided by the application or an external software program. 제 10항에 있어서,The method of claim 10, 상기 식별자 설정은 해당 운영체제의 커널(Kernel)에서 관리됨을 특징으로 하는 응용프로그램의 자원 모니터링 방법.The identifier setting is a resource monitoring method of an application program, characterized in that managed by the kernel of the operating system (Kernel). 제 10항에 있어서,The method of claim 10, 상기 모니터링은 상기 응용프로그램 또는 외부 S/W 프로그램에 의해서 제공됨을 특징으로 하는 응용프로그램의 자원 모니터링 방법. The monitoring method of the resource of the application, characterized in that provided by the application or an external software program. 제 10항에 있어서,The method of claim 10, 상기 응용프로그램의 자원 모니터링 방법은 WinCE, Linux 등의 가상메모리 기반의 운영체제에 적용됨을 특징으로 하는 응용프로그램의 자원 모니터링 방법.The resource monitoring method of the application program is a resource monitoring method of an application program, characterized in that applied to a virtual memory-based operating system, such as WinCE, Linux. 다수의 스레드로 구성된 단일 프로세스 기반의 응용프로그램에 대한 자원 모니터링을 지원하는 장치에 있어서,In a device that supports resource monitoring for a single process-based application composed of multiple threads, 응용프로그램의 다수의 실행 구성 요소별 식별값을 지정한 후, 상기 다수의 실행 구성 요소별 식별값을 포함한 스레드를 생성하며, 상기 식별값을 포함하는 스레드의 실행정보를 프로세스 제어 블럭(PCB : Process Control Block)자료 구조에 저장한 후, 상기 프로세스 제어 블럭 자료구조에서 상기 식별값에 해당하는 실행 구성 요소별 리소스 정보를 모니터링할 수 있는 운영체제 모듈을 포함함을 특징으로 하는 장치.After designating an identification value for each execution component of an application program, a thread including the identification value for each of the execution components is generated, and execution information of a thread including the identification value is stored in a process control block (PCB). And an operating system module capable of monitoring resource information for each execution component corresponding to the identification value in the process control block data structure after storing the data in the data structure. 제 18항에 있어서,The method of claim 18, 상기 스레드의 생성은 상기 실행 구성 요소별 식별값을 지정하는 기능을 갖는 시스템 콜(system call)을 사용함을 특징으로 하는 장치.The generation of the thread is characterized in that for using the system call (system call) having a function for specifying the identification value for each of the execution component. 제 19항에 있어서,The method of claim 19, 상기 실행 구성 요소별 식별값을 지정하는 기능을 갖는 시스템 콜의 제공은 운영체제의 커널(Kernel)에서 관리됨을 특징으로 하는 장치.Providing a system call having a function of specifying an identification value for each execution component is managed by a kernel of an operating system. 제 20항에 있어서,The method of claim 20, 상기 프로세스 제어 블럭 자료구조는 상기 식별값을 저장할 수 있는 필드가 확장된 자료구조임을 특징으로 하는 장치.And said process control block data structure is an extended data structure in which a field capable of storing said identification value is extended. 제 18항에 있어서,The method of claim 18, 상기 전자장치는 실행 정보를 추후 다시 이용할 수 있도록 저장소에 저장함을 특징으로 하는 장치.The electronic device stores the execution information in a storage for later use. 제 18항에 있어서,The method of claim 18, 상기 리소스 정보는 상기 실행 구성 요소별 CPU 사용량(CPU usage) 또는 메모리 사용량(Memory usage)에 관한 것임을 특징으로 하는 장치.The resource information is characterized in that the CPU usage (CPU usage) or memory usage (Memory usage) for each execution component. 제 18항에 있어서,The method of claim 18, 상기 모니터링은 상기 응용프로그램 또는 외부 S/W 프로그램에 의해서 제공됨을 특징으로 하는 장치.Wherein the monitoring is provided by the application program or an external software program. 제 18항에 있어서,The method of claim 18, 상기 장치는 WinCE, Linux 등의 가상메모리 기반의 운영체제를 사용함을 특징으로 하는 장치.The device is characterized in that using a virtual memory based operating system, such as WinCE, Linux. 다수의 스레드로 구성된 단일 프로세스 기반의 응용프로그램에 대한 자원 모니터링을 지원하는 장치에 있어서,In a device that supports resource monitoring for a single process-based application composed of multiple threads, 실제 메모리 주소 영역에 할당되어 실행중인 다수의 실행 구성 요소로 구성 된 응용프로그램이 시스템 콜(system call)을 호출하기 전에 지정된 프로그램 카운터(program counter) 값의 복귀 주소(return address)의 위치로 상기 시스템 콜이 완료된 후 리턴되고, 상기 리턴되는 복귀 주소가 속한 상기 메모리 주소를 확인하여, 상기 시스템 콜이 실제로 호출된 메모리 주소의 실행 구성 요소를 판단하여 자동으로 상기 실행 구성 요소별 식별값을 설정하는 운영체제 모듈을 포함함을 특징으로 하는 장치.The system consists of a number of execution components allocated and executed in a real memory address area before the system call calls a system call. Operating system that returns after the call is completed, checks the memory address to which the returned return address belongs, determines the execution component of the memory address where the system call is actually called, and automatically sets the identification value for each execution component. Device comprising a module. 제 26항에 있어서,The method of claim 26, 상기 운영체제 모듈은 상기 응용프로그램이 필요에 따라 스레드를 생성할 경우, 상기 각 실행 구성 요소별로 설정된 식별값을 포함하는 스레드를 생성하고, 상기 식별값을 포함하는 스레드의 실행정보를 프로세스 제어 블럭(PCB : Process Comtrol Block)에 저장한 후, 상기 프로세스 제어 블럭 자료구조에서 상기 식별값에 해당하는 실행 구성 요소별 리소스 정보를 모니터링할 수 있음을 특징으로 하는 장치.When the application program creates a thread as needed, the operating system module generates a thread including an identification value set for each execution component, and executes a process control block (PCB) of execution information of the thread including the identification value. And storing resource information of each of the execution components corresponding to the identification value in the process control block data structure. 제 27항에 있어서,The method of claim 27, 상기 프로세스 제어 블럭 자료구조는 상기 식별값을 저장할 수 있는 필드가 확장된 자료구조임을 특징으로 하는 장치.And said process control block data structure is an extended data structure in which a field capable of storing said identification value is extended. 제 27항에 있어서,The method of claim 27, 상기 전자장치는 상기 수집된 실행 정보를 추후 다시 이용할 수 있도록 저장소에 저장함을 특징으로 하는 장치.The electronic device stores the collected execution information in a storage for later use. 제 27항에 있어서,The method of claim 27, 상기 리소스 정보는 상기 실행 구성 요소별 CPU 사용량(CPU usage) 또는 메모리 사용량(Memory usage)에 관한 것임을 특징으로 하는 장치.The resource information is characterized in that the CPU usage (CPU usage) or memory usage (Memory usage) for each execution component. 제 27항에 있어서,The method of claim 27, 상기 모니터링은 상기 응용프로그램 또는 외부 S/W 프로그램에 의해서 제공됨을 특징으로 하는 장치.Wherein the monitoring is provided by the application program or an external software program. 제 27항에 있어서,The method of claim 27, 상기 식별자 설정은 해당 운영체제의 커널(Kernel)에서 관리됨을 특징으로 하는 장치.The identifier setting device, characterized in that managed in the kernel (Kernel) of the operating system. 제 27항에 있어서,The method of claim 27, 상기 모니터링은 상기 응용프로그램 또는 외부 S/W 프로그램에 의해서 제공됨을 특징으로 하는 장치.Wherein the monitoring is provided by the application program or an external software program. 제 27항에 있어서,The method of claim 27, 상기 장치는 WinCE, Linux 등의 가상메모리 기반의 운영체제를 사용함을 특징으로 하는 장치.The device is characterized in that using a virtual memory based operating system, such as WinCE, Linux.
KR1020080007795A 2008-01-25 2008-01-25 The device and method of resource monitoring for application KR20090081749A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080007795A KR20090081749A (en) 2008-01-25 2008-01-25 The device and method of resource monitoring for application

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080007795A KR20090081749A (en) 2008-01-25 2008-01-25 The device and method of resource monitoring for application

Publications (1)

Publication Number Publication Date
KR20090081749A true KR20090081749A (en) 2009-07-29

Family

ID=41292985

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080007795A KR20090081749A (en) 2008-01-25 2008-01-25 The device and method of resource monitoring for application

Country Status (1)

Country Link
KR (1) KR20090081749A (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012033237A1 (en) * 2010-09-07 2012-03-15 현대자동차주식회사 System testing method
WO2013165188A1 (en) * 2012-05-02 2013-11-07 주식회사 팀스톤 Method for monitoring resources in computing device, and computing device
KR101392584B1 (en) * 2012-06-07 2014-05-27 주식회사 엘지씨엔에스 Apparatus for dynamic data processing using resource monitoring and method thereof
KR101459867B1 (en) * 2010-06-28 2014-11-13 현대자동차주식회사 System test apparatus
KR20190086144A (en) * 2018-01-12 2019-07-22 엔에이치엔 주식회사 Mobile terminal and method for management application of the mobile terminal and target advertisement providing system using the same
KR20200020485A (en) * 2018-08-17 2020-02-26 주식회사 한컴엠디에스 Apparatus and Method for Managing Resource of OS System
KR20210105036A (en) * 2020-02-18 2021-08-26 세종대학교산학협력단 Method and System for Collecting Ultra-Low Latency Resource Usage Metrics in Cloud Platform

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101459867B1 (en) * 2010-06-28 2014-11-13 현대자동차주식회사 System test apparatus
US9354996B2 (en) 2010-06-28 2016-05-31 Hyundai Motor Company System test apparatus
WO2012033237A1 (en) * 2010-09-07 2012-03-15 현대자동차주식회사 System testing method
CN103109276A (en) * 2010-09-07 2013-05-15 现代自动车株式会社 System testing method
JP2013533553A (en) * 2010-09-07 2013-08-22 ヒョンダイ モーター カンパニー System test method
KR101438990B1 (en) * 2010-09-07 2014-09-05 현대자동차주식회사 System testing method
CN103109276B (en) * 2010-09-07 2016-01-20 现代自动车株式会社 System detection method
WO2013165188A1 (en) * 2012-05-02 2013-11-07 주식회사 팀스톤 Method for monitoring resources in computing device, and computing device
KR101392584B1 (en) * 2012-06-07 2014-05-27 주식회사 엘지씨엔에스 Apparatus for dynamic data processing using resource monitoring and method thereof
KR20190086144A (en) * 2018-01-12 2019-07-22 엔에이치엔 주식회사 Mobile terminal and method for management application of the mobile terminal and target advertisement providing system using the same
KR20200020485A (en) * 2018-08-17 2020-02-26 주식회사 한컴엠디에스 Apparatus and Method for Managing Resource of OS System
KR20210105036A (en) * 2020-02-18 2021-08-26 세종대학교산학협력단 Method and System for Collecting Ultra-Low Latency Resource Usage Metrics in Cloud Platform

Similar Documents

Publication Publication Date Title
Warneke et al. Exploiting dynamic resource allocation for efficient parallel data processing in the cloud
US9965324B2 (en) Process grouping for improved cache and memory affinity
JP6939132B2 (en) Application profiling job management system, programs, and methods
Liu et al. PERTS: A prototyping environment for real-time systems
US8607018B2 (en) Memory usage configuration based on observations
Albert et al. Formal modeling and analysis of resource management for cloud architectures: an industrial case study using real-time ABS
US20130073604A1 (en) Optimized Settings in a Configuration Database with Boundaries
US20100257527A1 (en) Computer applications classifier
US11163677B2 (en) Dynamically allocated thread-local storage
KR20090081749A (en) The device and method of resource monitoring for application
US8990551B2 (en) Analysis and visualization of cluster resource utilization
JP2012511204A (en) How to reorganize tasks to optimize resources
Tang et al. Dynamic memory-aware scheduling in spark computing environment
Han et al. Workload-adaptive configuration tuning for hierarchical cloud schedulers
Quan et al. A hierarchical run-time adaptive resource allocation framework for large-scale MPSoC systems
Zhou et al. A declarative optimization engine for resource provisioning of scientific workflows in geo-distributed clouds
Zhou et al. A declarative optimization engine for resource provisioning of scientific workflows in IaaS clouds
Tzenetopoulos et al. Interference-aware orchestration in kubernetes
Pugliese et al. Modeling and supporting grid scheduling
Al-Haboobi et al. Developing a workflow management system simulation for capturing internal iaas behavioural knowledge
Shi et al. Performance models of data parallel DAG workflows for large scale data analytics
Yan et al. Dyscale: a mapreduce job scheduler for heterogeneous multicore processors
Chung et al. A framework for automated performance bottleneck detection
Gherari et al. MC-Sim: a mobile cloud simulation toolkit based on CloudSim
Wang et al. Millipedes: Distributed and set-based sub-task scheduler of computing engines running on yarn cluster

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination