KR20060070850A - Device controller using user mode device driver - Google Patents

Device controller using user mode device driver Download PDF

Info

Publication number
KR20060070850A
KR20060070850A KR1020040109660A KR20040109660A KR20060070850A KR 20060070850 A KR20060070850 A KR 20060070850A KR 1020040109660 A KR1020040109660 A KR 1020040109660A KR 20040109660 A KR20040109660 A KR 20040109660A KR 20060070850 A KR20060070850 A KR 20060070850A
Authority
KR
South Korea
Prior art keywords
user mode
device driver
kernel
user
application
Prior art date
Application number
KR1020040109660A
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 KR1020040109660A priority Critical patent/KR20060070850A/en
Publication of KR20060070850A publication Critical patent/KR20060070850A/en

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/445Program loading or initiating
    • 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/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 사용자 모드 디바이스 드라이버를 이용한 디바이스 제어장치에 관한 것으로, 특히 사용자 모드의 어플리케이션 형태로 실행되고, 커널 인터페이스 모듈을 통하여 전송받은 다른 사용자 모드 어플리케이션의 접근 요청에 따라 디바이스에 접근하는 사용자 모드 디바이스 드라이버; 커널이 상기 사용자 모드 디바이스 드라이버를 인식할 수 있도록 상기 사용자 모드 디바이스 드라이버를 커널의 디바이스 드라이버 리스트에 등록하며, 상기 사용자 모드 디바이스 드라이버의 접근을 요청한 사용자 어플리케이션의 정보를 저장하며, 사용자 모드 어플리케이션의 사용자 모드 디바이스 드라이버 접근 요청을 상기 사용자 모드 디바이스 드라이버로 전송하는 요청전달함수를 제공하는 커널 인터페이스 모듈 및 사용자 모드 어플리케이션의 사용자 모드 디바이스 드라이버 접근 요청시, 요청의 종류와 인수 값, 디바이스 I/O를 요청한 사용자 어플리케이션 프로세스 정보를 상기 커널 인터페이스 모듈을 이용하여 상기 커널 인터페이스 모듈로 전달하는 시스템 콜 핸들러로 구성되며, 이러한 본 발명은 상대적으로 복잡한 메커니즘을 가진 기존 운영체제 커널의 복잡도를 감소시킴과 동시에 안정성을 향상시키고, 사용자 모드의 다양한 응용 프로그래밍 언어 라이브러리를 사용할 수 있도록 해주는 효과가 있다.The present invention relates to a device control apparatus using a user mode device driver, and in particular, is executed in the form of an application of the user mode, the user mode device driver to access the device in accordance with the access request of the other user mode application received through the kernel interface module ; Register the user mode device driver in the device driver list of the kernel so that the kernel can recognize the user mode device driver, store information of the user application that requests access of the user mode device driver, and user mode of the user mode application. A kernel interface module that provides a request transfer function for transmitting a device driver access request to the user mode device driver, and when requesting a user mode device driver access of a user mode application, a request type, an argument value, and a user application requesting device I / O. It consists of a system call handler for transferring process information to the kernel interface module using the kernel interface module, the present invention has a relatively complex mechanism It reduces the complexity of the existing operating system kernel, improves stability, and makes it possible to use various application programming language libraries in user mode.

운용체제, 커널, 사용자 모드 디바이스 드라이버, 커널 인터페이스 모듈, Operating system, kernel, user mode device driver, kernel interface module,

Description

사용자 모드 디바이스 드라이버를 이용한 디바이스 제어장치{DEVICE CONTROLLER USING USER MODE DEVICE DRIVER} DEVICE CONTROLLER USING USER MODE DEVICE DRIVER}             

도 1은 본 발명의 일 실시예에 따른 사용자 모드 디바이스 드라이버를 이용항 디바이스 제어장치의 구성을 나타낸 기능 블록도,1 is a functional block diagram showing the configuration of a device control apparatus using a user mode device driver according to an embodiment of the present invention;

도 2는 도 1에 따른 사용자 수준 디바이스 드라이버 장치에서 사용자 모드 디바이스 드라이버와 커널 인터페이스 모듈 간의 자료 전달 과정을 설명하기 위한 도면이다.FIG. 2 is a diagram illustrating a data transfer process between a user mode device driver and a kernel interface module in the user level device driver apparatus of FIG. 1.

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

101 : 사용자 모드 디바이스 드라이버101: user mode device driver

102 : 커널 인터페이스 모듈102: kernel interface module

103 : 시스템 콜 핸들러103: system call handler

본 발명은 일반적으로 메모리 주소공간의 분리로 커널 모드와 사용자 모드로 구분되어 운영되는 현대적인 운영체제에서 커널 모드 프로그램의 일부로 동작하는 디바이스 드라이버를 사용자 모드에서 동작하는 사용자 어플리케이션으로 구현하는 사용자 모드 디바이스 드라이버 장치에 관한 것으로, 더욱 상세하게는 디바이스 드라이버가 커널 영역이 아닌 사용자 주소공간에서 동작하기 때문에, 상대적으로 복잡한 메커니즘을 가진 기존 운영체제 커널의 복잡도를 감소시킴과 동시에 안정성을 향상시키고, 사용자 모드의 다양한 응용 프로그래밍 언어 라이브러리를 사용할 수 있도록 해주는 사용자 모드 디바이스 드라이버 장치에 관한 것이다.The present invention is a user-mode device driver device that implements a device driver that operates as a part of a kernel-mode program in a user application operating in a user mode in a modern operating system that is divided into a kernel mode and a user mode by separating memory address spaces. More specifically, because device drivers operate in the user address space rather than in the kernel area, they reduce the complexity of existing operating system kernels with relatively complex mechanisms, while improving stability, and enabling various application programming in user mode. A user mode device driver device that enables the use of language libraries.

종래의 운영체제에서 디바이스 드라이버를 구현하는 일반적인 방법은 커널 API(Application Program Interface)를 사용하여 작성된 바이너리 프로그램을 커널 컴파일할 때 커널에 완전히 포함을 하거나 단일 모듈의 형태로 컴파일하여 커널에 동적으로 링킹하는 방법을 사용하였다. 하지만, 이러한 커널 구조는 운영체제가 실행될 때 커널과 디바이스 드라이버 등의 구성요소들이 하나의 단일 프로그램으로 동작하기 때문에 프로그램의 크기가 커지고 많은 메모리를 필요로 하게 된다. 또한, 운영체제가 일반 컴퓨터용이 아닌 소형 임베디드 시스템 등의 다양한 플랫폼에서 사용되기 위해서는 시스템의 용도에 적합한 커널의 소형화를 위해서 커널을 재 구성해야 되는 문제점이 있었다.A general method of implementing a device driver in a conventional operating system is to include a binary program written using a kernel application program interface (API), which is completely included in the kernel, or compiled into a single module and dynamically linked to the kernel. Was used. However, such a kernel structure increases the size of a program and requires a lot of memory because components such as a kernel and a device driver operate as a single program when an operating system is executed. In addition, in order for the operating system to be used in various platforms such as a small embedded system rather than a general computer, there has been a problem in that the kernel must be reconfigured in order to miniaturize the kernel suitable for the purpose of the system.

이로써, 사용자 모드에서 운영체제 서비스를 제공하는 방법에 관한 연구로는 리눅스 커널 기반에서 플래시 파일 시스템을 사용자 응용 프로그램으로 구현한 uJFFS가 있었다. 플래시 메모리는 소형 임베디드 시스템에서 많이 사용되는 보조 기억 장치로 JFFS2 등의 파일 시스템을 사용한다. uJFFS는 리눅스 커널에 포함되어 있는 파일 시스템을 응용 프로그램 수준에서 동작할 수 있도록 구현한 것으로 파일 시스템의 오류가 발생하더라도 커널에 미치는 영향을 최소화하고 다양한 사용자 응용 프로그램용 라이브러리를 사용할 수 있다는 장점이 있다.As a result, a study on how to provide operating system services in user mode includes uJFFS, which implements a flash file system as a user application based on the Linux kernel. Flash memory is a commonly used auxiliary storage device in small embedded systems and uses a file system such as JFFS2. uJFFS implements the file system included in the Linux kernel to operate at the application level. It has the advantage of minimizing the effect on the kernel and using libraries for various user applications even if a file system error occurs.

여기서는 플래시 메모리상에서 동작하는 파일 시스템과 플래시 메모리를 제어할 수 있는 디바이스 드라이버를 사용자 모드 응용 프로그램으로 구현하였다. 하지만, 이 방법은 파일 시스템 자료구조가 사용자 모드 영역에 존재하여 운영체제 커널과 빈번한 자료 교환이 필요하여 그 성능 저하의 요인이 되며, 사용자 모드와 커널 모드간 자료 교환의 방법이 복잡해지는 문제점이 있었다.In this example, a user mode application program implements a file system that operates on flash memory and a device driver that can control flash memory. However, in this method, the file system data structure exists in the user mode area, which requires frequent data exchange with the operating system kernel, causing performance degradation, and the method of data exchange between user mode and kernel mode is complicated.

본 발명은 상기와 같은 종래의 문제점을 해결하기 위해 이루어진 것으로서, 본 발명의 목적은 운영체제 커널에서 디바이스 드라이버를 분리하여 사용자 수준 응용 프로그램으로 동작하도록 해줌으로써, 상대적으로 복잡한 메커니즘을 가진 기존 운영체제 커널의 복잡도를 감소시킴과 동시에 안정성을 향상시키고, 사용자 모드의 다양한 응용 프로그래밍 언어 라이브러리를 사용할 수 있도록 해주기 위한 사 용자 모드 디바이스 드라이버 장치를 제공하는 데 있다.
SUMMARY OF THE INVENTION The present invention has been made to solve the above-mentioned conventional problems, and an object of the present invention is to separate a device driver from an operating system kernel and to operate as a user level application program, thereby providing a complexity of an existing operating system kernel having a relatively complicated mechanism. The present invention provides a user mode device driver device for reducing the number of bits, improving stability, and allowing the use of various application programming language libraries in the user mode.

상기와 같은 목적을 달성하기 위하여 본 발명 사용자 모드 디바이스 드라이버를 이용한 디바이스 제어장치는, 사용자 모드의 어플리케이션 형태로 실행되고, 커널 인터페이스 모듈을 통하여 전송받은 다른 사용자 모드 어플리케이션의 접근 요청에 따라 디바이스에 접근하는 사용자 모드 디바이스 드라이버; 커널이 상기 사용자 모드 디바이스 드라이버를 인식할 수 있도록 상기 사용자 모드 디바이스 드라이버를 커널의 디바이스 드라이버 리스트에 등록하며, 상기 사용자 모드 디바이스 드라이버의 접근을 요청한 사용자 어플리케이션의 정보를 저장하며, 사용자 모드 어플리케이션의 사용자 모드 디바이스 드라이버 접근 요청을 상기 사용자 모드 디바이스 드라이버로 전송하는 요청전달함수를 제공하는 커널 인터페이스 모듈; 및 사용자 모드 어플리케이션의 사용자 모드 디바이스 드라이버 접근 요청시, 요청의 종류와 인수 값, 디바이스 I/O를 요청한 사용자 어플리케이션 프로세스 정보를 상기 커널 인터페이스 모듈을 이용하여 상기 커널 인터페이스 모듈로 전달하는 시스템 콜 핸들러로 구성된 것을 특징으로 한다.In order to achieve the above object, the device control apparatus using the user mode device driver of the present invention is executed in the form of an application of a user mode, and accesses a device according to an access request of another user mode application received through a kernel interface module. User mode device drivers; Register the user mode device driver in the device driver list of the kernel so that the kernel can recognize the user mode device driver, store information of the user application that requests access of the user mode device driver, and user mode of the user mode application. A kernel interface module for providing a request transfer function for transmitting a device driver access request to the user mode device driver; And a system call handler configured to transmit a request type, an argument value, and a user application process information requesting device I / O to the kernel interface module by using the kernel interface module when a user mode application access request is made. It is characterized by.

이하, 본 발명의 일 실시예에 의한 사용자 모드 디바이스 드라이버 장치에 대하여 첨부된 도면을 참조하여 상세히 설명하기로 한다. 도 1은 본 발명의 일 실시예에 따른 사용자 수준 디바이스 드라이버 장치의 구성을 나타낸 기능 블록도 이다.Hereinafter, a user mode device driver apparatus according to an exemplary embodiment of the present invention will be described in detail with reference to the accompanying drawings. 1 is a functional block diagram showing the configuration of a user-level device driver apparatus according to an embodiment of the present invention.

사용자 모드 디바이스 드라이버(User Mode Device Drive)(101)는 사용자 모드의 어플리케이션(Application)으로 실행되며, 다른 사용자 모드 사용자 어플리케이션(User Application)(1)의 요청을 서비스 하기 위한 서버의 형태로 동작한다. 기존의 디바이스 드라이버에서 제공하는 모든 디바이스의 접근, 제어 동작을 제공하지만, 커널에 포함된 것이 아니므로 후술하는 바와 같이 커널 인터페이스 모듈를 통해서 제어된다.The user mode device driver 101 is executed as an application in a user mode and operates in the form of a server for servicing a request of another user mode user application 1. Provides access and control operations for all devices provided by the existing device driver, but since they are not included in the kernel, they are controlled through the kernel interface module as described below.

또한, 커널 인터페이스 모듈(Kernel Interface Modele)(102)은 파이프를 사용하여 사용자 어플리케이션(1)의 요청을 상기 사용자 모드 디바이스 드라이버(101)로 전송한다. 이외에 커널(Kernel)이 사용자 모드 디바이스 드라이버(101)를 인식할 수 있도록 커널의 디바이스 드라이버 리스트(Device Drive List)에 등록하며, 상기 사용자 모드 디바이스 드라이버(101)의 접근을 요청한 사용자 어플리케이션(1) 프로세스의 정보를 관리한다.In addition, the kernel interface model 102 transmits a request of the user application 1 to the user mode device driver 101 using a pipe. In addition, a user application (1) process that registers in a device drive list of the kernel so that the kernel recognizes the user mode device driver 101 and requests access of the user mode device driver 101. Manage your information.

이 때, 도 1에서 디바이스로의 접근을 필요로 하는 사용자 모드 어플리케이션(1)은 운영체제에 포함되어 있는 기존 시스템 콜 호출을 통해 커널에 디바이스 I/O, 즉, 디바이스로의 접근을 요청하면, 커널은 시스템 콜 핸들러(System Call Handler)(103)를 통해 어떤 디바이스로 접근할 것인지 분석 후 그것이 사용자 모드 디바이스 드라이버(101)가 처리해야 할 요청일 경우 상기 커널 인터페이스 모듈(102)을 이용하여 사용자 모드 어플리케이션의 디바이스 접근 요청을 상기 사용자 모드 디바이스 드라이버(101)로 전달한다. 이후 상기 사용자 모드 디바이스 드라 이버(101)는 최종적으로 사용자의 요청을 처리하고 결과값을 바로 사용자 어플리케이션(1)으로 전달하는 방법을 취한다.In this case, when the user mode application 1 that requires access to the device in FIG. 1 requests the device I / O, that is, access to the device, to the kernel through an existing system call call included in the operating system, the kernel Analyzes which device is to be accessed through a system call handler 103, and if it is a request that the user mode device driver 101 needs to process, the user mode application using the kernel interface module 102. The device access request of the user mode device driver 101 is transmitted. Thereafter, the user mode device driver 101 finally takes a method of processing a user's request and transferring the result value directly to the user application 1.

도 2는 도 1에 도시된 사용자 수준 디바이스 드라이버 장치에서 사용자 모드 디바이스 드라이버(101)와 커널 인터페이스 모듈(102) 간의 자료 전달 과정을 예시적으로 설명하기 위한 도면이다. 이하, 운영체제 커널에서 본 발명의 사용자 수준 디바이스 드라이버 장치로 자료를 전달하는 과정에 대해 도 2를 참조하여 설명하면 다음과 같다.FIG. 2 is a diagram for exemplarily describing a data transfer process between the user mode device driver 101 and the kernel interface module 102 in the user level device driver device illustrated in FIG. 1. Hereinafter, a process of transferring data from the operating system kernel to the user level device driver device of the present invention will be described with reference to FIG. 2.

먼저, 도 2에서 사용자 모드 디바이스 드라이버(101)는 커널 인터테이스 모듈(102) 및 기타 사용자 모드에서 사용 가능한 프로그래밍 라이브러리를 이용하여 구현될 수 있으며, 시스템 콜 또는 기타 사용자 어플리케이션(1)의 요청에 대응하는 동작을 수행하도록 구현된다.First, in FIG. 2, the user mode device driver 101 may be implemented using the kernel interface module 102 and a programming library available in other user modes, and may be used to request system calls or other user applications 1. It is implemented to perform the corresponding operation.

상기 사용자 모드 디바이스 드라이버(101)가 실행되면, 먼저 상기 커널 인터페이스 모듈(102)을 이용하여 자신을 커널 디바이스 드라이버 리스트에 등록한다. 이 때, 상기 사용자 모드 디바이스 드라이버(101)는 다수 개의 사용자 어플리케이션(1)에 대한 요청을 처리해야 하므로 재진입이 가능해야 한다. 또한, 상기 사용자 모드 디바이스 드라이버(101)에 대한 모든 요청은 상기 커널 인터페이스 모듈(102)을 통해서 전달받게 되므로, 각각의 요청에 대해서 사용자 어플리케이션(1)의 프로세스 식별 번호를 구분하여 각 요청에 대해 독립적인 쓰레드로 처리한다.When the user mode device driver 101 is executed, it first registers itself in the kernel device driver list by using the kernel interface module 102. At this time, since the user mode device driver 101 must process requests for a plurality of user applications 1, re-entry should be possible. In addition, since all requests for the user mode device driver 101 are received through the kernel interface module 102, the process identification number of the user application 1 is distinguished for each request, and is independent of each request. Process as an in-thread.

한편, 사용자 모드 디바이스 드라이버(101)는 운영체제 커널에 독립된 사용 자 주소 공간에서 실행되는 것이므로, 운영체제 커널과의 자료 교환이 반드시 필요하다. 이 때, 사용자 어플리케이션(1)은 해당 디바이스의 접근을 위해 시스템 콜을 사용하여 커널 모드로 진입한다. 이후, 커널은 상기 시스템 콜 핸들러(103)를 수행 후 상기 사용자 모드 디바이스 드라이버(101)에 전달되어야 하는 요청일 경우 상기 커널 인터페이스 모듈(102)을 통해 사용자 모드 응용 프로그램으로 그 요청을 전송한다.On the other hand, since the user mode device driver 101 is executed in a user address space independent of the operating system kernel, data exchange with the operating system kernel is necessary. At this time, the user application 1 enters the kernel mode using a system call to access the corresponding device. Thereafter, when the kernel executes the system call handler 103 and sends a request to the user mode device driver 101, the kernel transmits the request to the user mode application through the kernel interface module 102.

이 때, 상기 커널 인터페이스 모듈(102)과 사용자 모드 디바이스 드라이버(101)의 자료 전송은 파이프를 사용하여 이루어지며, 상기 사용자 모드 디바이스 드라이버(101)에서는 사용자 어플리케이션(1)의 요청을 처리한 후 어떤 어플리케이션이 디바이스로 접근한지 알 수 있으므로, 이후 반환 값은 커널 모드를 거치지 않고 직접 사용자 어플리케이션(1)으로 전달 가능하다.At this time, data transmission between the kernel interface module 102 and the user mode device driver 101 is performed using a pipe, and the user mode device driver 101 processes a request of the user application 1 and then Since the application can access the device, the return value can be passed directly to the user application 1 without going through the kernel mode.

상술한 동작 과정을 예를 들어 보다 구체적으로 설명하면 다음과 같다. 램 디스크 드라이버가 사용자 모드 디바이스 드라이버(101)의 형태로 구현된 경우를 가정할 때, 도 2에서 사용자 어플리케이션인 태스크(TASK)가 사용자 모드 디바이스 드라이버(101)의 형태로 존재하는 램 디스크 드라이버에 저장되어 있는 파일에 접근하기 위해 리드(read) 시스템 콜을 호출한다.For example, the above-described operation process will be described in more detail. Assuming that the RAM disk driver is implemented in the form of the user mode device driver 101, the task TASK, which is a user application in FIG. 2, is stored in the ram disk driver existing in the form of the user mode device driver 101. Calls a read system call to access a file that has been created.

그러면, 상기 리드 시스템 콜은 운영체제에서 소프트웨어 인터럽트로 처리되어 인터럽트 핸들러를 통해 상기 시스템 콜 핸들러(103)로 전달된다.The read system call is then treated as a software interrupt in the operating system and passed to the system call handler 103 via an interrupt handler.

상기 시스템 콜 핸들러(103)는 상기 태스크 1이 접근하려는 장치에 대한 디 바이스 드라이버가 이미 커널 인터페이스 모듈(102)에 의해 사용자 모드 디바이스 드라이버(101)로 존재한다는 것을 알고 있으므로, 요청의 종류와 인수 값, 디바이스 I/O를 요청한 사용자 어플리케이션(1) 프로세스 정보를 커널 인터페이스 모듈(102)이 제공하는 요청전달(send request)함수를 이용하여 상기 사용자 모드 디바이스 드라이버(101)로 넘긴다. 예를들어, 운영체제가 리눅스 일 경우 이러한 커널 모드와 사용자 모드 사이의 자료 전달에 사용되는 요청전달 함수로는 "copy_to_user", "put_user" 등의 함수가 이용될 수 있다.Since the system call handler 103 knows that the device driver for the device to which the task 1 is trying to access already exists as the user mode device driver 101 by the kernel interface module 102, the type of the request and the argument value. The user application 1 process information requesting the device I / O is transmitted to the user mode device driver 101 by using a send request function provided by the kernel interface module 102. For example, if the operating system is Linux, "copy_to_user", "put_user", etc. may be used as a request transfer function used to transfer data between the kernel mode and the user mode.

한편, 상기 커널 인터페이스 모듈(102)을 통해 사용자 어플리케이션(1)의 요청을 전달받은 램 디스크 드라이버는 요청과 함께 전달된 요청을 사용하여 해당 시스템 콜을 실제로 처리한다. 이 때, 상기 사용자 모드 디바이스 드라이버(101)로 구현된 램 디스크 드라이버는 리드(read) 시스템 콜에 대응되는 "ud_read" 등의 동작을 미리 정의해 두어야 한다.Meanwhile, the RAM disk driver, which has received the request of the user application 1 through the kernel interface module 102, actually processes the corresponding system call by using the request transmitted along with the request. In this case, the RAM disk driver implemented by the user mode device driver 101 must define an operation such as "ud_read" corresponding to a read system call in advance.

상기 사용자 모드 디바이스 드라이버(101)의 램 디스크 드라이버는 리드 시스템 콜을 처리하면서 필요시 상기 커널 인터페이스 모듈(102)을 사용하여 커널 API를 사용하면서 사용자의 요청을 처리한 후 결과값을 반환한다. 이 때, 결과값의 반환 단계는 요청이 전달된 경로를 다시 거슬러 올라가는 것이 아니라 요청과 함께 전달된 사용자 프로세스의 정보를 판독하여 직접 해당 사용자 어플리케이션(1)으로 전달하여 결과 값 반환 시 발생할 수 있는 지연을 줄일 수 있다.The RAM disk driver of the user mode device driver 101 processes a read system call and, if necessary, processes a user's request using a kernel API using the kernel interface module 102 and returns a result value. At this time, the return step of the result value is not going back up the path through which the request was sent, but instead of reading the information of the user process delivered with the request and passing it directly to the corresponding user application (1). Can be reduced.

이상에서 몇 가지 실시예를 들어 본 발명을 더욱 상세하게 설명하였으나, 본 발명은 반드시 이러한 실시예로 국한되는 것이 아니고 본 발명의 기술사상을 벗어나지 않는 범위 내에서 다양하게 변형실시될 수 있다.Although the present invention has been described in more detail with reference to some embodiments, the present invention is not necessarily limited to these embodiments, and various modifications can be made without departing from the spirit of the present invention.

상술한 바와 같이 본 발명에 의한 사용자 모드 디바이스 드라이버 장치 및 그 자료 처리 방법에 의하면, 운영체제 커널에서 사용자 수준의 디바이스 드라이버의 사용을 통해 커널 자원과 커널 자료 구조의 사용을 최소화하면서 실행되고, 기존 디바이스 드라이버와 동일한 인터페이스를 사용자 응용 프로그램에 제공함으로써, 다른 응용 프로그램들에게는 투명한 서비스를 제공함과 동시에 기존 디바이스 드라이버의 오류에 의해 발생할 수 있는 커널의 고장이나 오류를 예방할 수 있으며, 사용자 수준에서 실행되는 응용 프로그램의 오류는 운영체제에는 영향을 미치지 않기 때문에 시스템 전체의 안정성을 향상시켜 주는 뛰어난 효과가 있다.As described above, the user mode device driver apparatus and the data processing method according to the present invention are executed by minimizing the use of kernel resources and kernel data structures through the use of user-level device drivers in the operating system kernel, and the existing device drivers. By providing the same interface to the user application, it provides transparent service to other applications and prevents kernel failure or error caused by the error of the existing device driver. Errors do not affect the operating system, so they have an excellent effect on improving the stability of the entire system.

또한, 커널에 독립적인 디바이스 드라이버의 프레임 워크를 제공함으로써 디바이스 드라이버의 손쉬운 개발을 가능하게 해주는 뛰어난 효과가 있다.In addition, by providing a kernel-independent device driver framework, there is an excellent effect that enables easy development of device drivers.

Claims (6)

사용자 모드의 어플리케이션 형태로 실행되고, 커널 인터페이스 모듈을 통하여 전송받은 다른 사용자 모드 어플리케이션의 접근 요청에 따라 디바이스에 접근하는 사용자 모드 디바이스 드라이버;A user mode device driver executed in a user mode application and accessing the device according to an access request of another user mode application received through the kernel interface module; 상기 사용자 모드 디바이스 드라이버의 접근을 요청한 사용자 어플리케이션의 정보를 저장하며, 사용자 모드 어플리케이션의 사용자 모드 디바이스 드라이버 접근 요청을 상기 사용자 모드 디바이스 드라이버로 전송하는 요청전달함수를 제공하는 커널 인터페이스 모듈; 및A kernel interface module that stores information of a user application requesting access of the user mode device driver, and provides a request transfer function for transmitting a user mode device driver access request of the user mode application to the user mode device driver; And 사용자 모드 어플리케이션의 사용자 모드 디바이스 드라이버 접근 요청시, 요청의 종류와 인수 값, 디바이스 I/O를 요청한 사용자 어플리케이션 프로세스 정보를 상기 커널 인터페이스 모듈을 이용하여 상기 커널 인터페이스 모듈로 전달하는 시스템 콜 핸들러로 구성된 것을 특징으로 하는 사용자 모드 디바이스 드라이버를 이용한 디바이스 제어장치.When a user mode device driver access request of a user mode application is requested, a system call handler which transmits the request type, argument values, and user application process information requesting device I / O to the kernel interface module using the kernel interface module. Device control apparatus using a user mode device driver characterized in that. 제 1 항에 있어서,The method of claim 1, 상기 커널 인터페이스는 커널이 상기 사용자 모드 디바이스 드라이버를 인식할 수 있도록 상기 사용자 모드 디바이스 드라이버를 커널의 디바이스 드라이버 리스트에 등록하는 것을 특징으로 하는 사용자 모드 디바이스 드라이버를 이용한 디 바이스 제어장치.And the kernel interface registers the user mode device driver to a device driver list of a kernel so that the kernel can recognize the user mode device driver. 제 1 항에 있어서,The method of claim 1, 상기 커널 인터페이스 모듈은 파이프를 이용하여 상기 사용자 모드 디바이스 드라이버와 데이터 송수신을 행하는 것을 특징으로 하는 사용자 모드 디바이스 드라이버를 이용한 디바이스 제어장치.The kernel interface module is a device control apparatus using a user mode device driver, characterized in that for transmitting and receiving data with the user mode device driver using a pipe. 제 1 항에 있어서,The method of claim 1, 상기 사용자 모드 디바이스 드라이버는 시스템 콜 핸들러를 통해 전송받은 디바이스 드라이버 접근 요청을 처리한 후, 반환값을 커널 모드를 거치지 않고 디바이스 드라이버 접근 요청을 한 사용자 모드 어플리케이션으로 반환하는 것을 특징으로 하는 사용자 모드 디바이스 드라이버를 이용한 디바이스 제어장치.After the user mode device driver processes the device driver access request received through the system call handler, the user mode device driver returns the return value to the user mode application that made the device driver access request without passing through the kernel mode. Device control device using. 제 1 항에 있어서,The method of claim 1, 상기 사용자 모드 디바이스 드라이버는 다수의 접근 요청이 존재하는 경우, 각각의 접근 요청을 별도의 쓰레드로 처리하는 것을 특징으로 하는 사용자 모드 디바이스 드라이버를 이용한 디바이스 제어장치.The user mode device driver, if there are a plurality of access requests, device control device using a user mode device driver, characterized in that for processing each access request as a separate thread. 제 1 항에 있어서,The method of claim 1, 상기 시스템 콜 핸들러는 사용자 모드 어플리케이션에 의한 디바이스 드라이버에 대한 접근 요청 발생시 커널의 디바이스 드라이버 리스트를 검색하여 요청된 디바이스 드라이버가 사용자 모드 디바이스 드라이버인지 여부를 판단하는 것을 특징으로 하는 사용자 모드 디바이스 드라이버를 이용한 디바이스 제어장치.When the system call handler generates an access request for a device driver by a user mode application, the system call handler searches a device driver list of the kernel to determine whether the requested device driver is a user mode device driver. Control unit.
KR1020040109660A 2004-12-21 2004-12-21 Device controller using user mode device driver KR20060070850A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020040109660A KR20060070850A (en) 2004-12-21 2004-12-21 Device controller using user mode device driver

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040109660A KR20060070850A (en) 2004-12-21 2004-12-21 Device controller using user mode device driver

Publications (1)

Publication Number Publication Date
KR20060070850A true KR20060070850A (en) 2006-06-26

Family

ID=37164424

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040109660A KR20060070850A (en) 2004-12-21 2004-12-21 Device controller using user mode device driver

Country Status (1)

Country Link
KR (1) KR20060070850A (en)

Similar Documents

Publication Publication Date Title
KR101517258B1 (en) Apparatus, system, and method for cross-system proxy-based task offloading
US8370533B2 (en) Executing flash storage access requests
KR101480856B1 (en) Context switching
US7543295B2 (en) Method for enhancing efficiency in mutual exclusion
US8607005B2 (en) Monitoring program execution to learn data blocks accessed by software process for facilitating efficient prefetching
US7558724B2 (en) Operation region describing a virtual device
US20050114559A1 (en) Method for efficiently processing DMA transactions
EP0668560A2 (en) Coexecuting method and means for performing parallel processing in conventional types of data processing systems
US7873879B2 (en) Mechanism to perform debugging of global shared memory (GSM) operations
CN1961300A (en) Apparatus and method for high performance volatile disk drive memory access using an integrated DMA engine
KR20120061938A (en) Providing state storage in a processor for system management mode
JPH08314733A (en) Computer system and method for support of two endians
US5805930A (en) System for FIFO informing the availability of stages to store commands which include data and virtual address sent directly from application programs
US5696990A (en) Method and apparatus for providing improved flow control for input/output operations in a computer system having a FIFO circuit and an overflow storage area
EP1094392B1 (en) Method and apparatus for interfacing with a secondary storage system
US5638535A (en) Method and apparatus for providing flow control with lying for input/output operations in a computer system
US6473845B1 (en) System and method for dynamically updating memory address mappings
JP4157771B2 (en) Method and system for efficient access to remote I / O functions in an embedded control environment
WO2010097925A1 (en) Information processing device
CN105408875A (en) Distributed procedure execution and file systems on a memory interface
US5375225A (en) System for emulating I/O device requests through status word locations corresponding to respective device addresses having read/write locations and status information
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
US20100161914A1 (en) Autonomous memory subsystems in computing platforms
CN100349121C (en) Embedded type parallel computation system and embedded type parallel computing method
JP2006268753A (en) Dma circuit and computer system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application