KR100352377B1 - The console device driver operation method for single console on multi-node system - Google Patents

The console device driver operation method for single console on multi-node system Download PDF

Info

Publication number
KR100352377B1
KR100352377B1 KR1019990053513A KR19990053513A KR100352377B1 KR 100352377 B1 KR100352377 B1 KR 100352377B1 KR 1019990053513 A KR1019990053513 A KR 1019990053513A KR 19990053513 A KR19990053513 A KR 19990053513A KR 100352377 B1 KR100352377 B1 KR 100352377B1
Authority
KR
South Korea
Prior art keywords
console
node
serial
driver
kernel
Prior art date
Application number
KR1019990053513A
Other languages
Korean (ko)
Other versions
KR20010048714A (en
Inventor
김정녀
김해진
윤석한
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1019990053513A priority Critical patent/KR100352377B1/en
Publication of KR20010048714A publication Critical patent/KR20010048714A/en
Application granted granted Critical
Publication of KR100352377B1 publication Critical patent/KR100352377B1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control

Landscapes

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

Abstract

본 발명은 인텔 계열의 프로세서와 메모리를 포함하여 구성되는 시스템(노드)으로 다중 노드 환경을 이루는 다중 노드 시스템에서 각 노드들의 상태를 콘솔 스테이션의 단일 콘솔 윈도우에서 보여주기 위한 콘솔 구동기 운용 방법에 관한 것이다. 다중 노드 시스템에서 사용자는 각 노드의 운영체제 부팅과 시스템 진단 그리고 각 노드의 상태를 보기 위해 시스템 콘솔 기능이 필요하다.The present invention relates to a method of operating a console driver for displaying the status of each node in a single console window of a console station in a multi-node system in a multi-node environment. . In a multi-node system, the user needs the system console function to boot the operating system of each node, diagnose the system, and view the status of each node.

이를 위해 본 발명은 다중 노드 시스템을 구성하는 각 노드의 입출력 보드에 있는 UART(Universal Asynchronous Receiver/Transmitter : 범용 비동기 송수신기) 칩을 이용하여 각 노드의 COM1포트와 콘솔 스테이션의 시리얼 포트를 RS-232C 케이블로 연결한다. 그리고 각 노드의 시리얼 콘솔 구동기 운용을 위한 시리얼 콘솔 구동기 초기화, 시리얼 콘솔 읽기 및 시리얼 콘솔 쓰기를 제공함으로써 각 노드의 상태를 콘솔 스테이션의 단일 콘솔 윈도우에서 보여 준다.To this end, the present invention uses the serial port of the COM1 port of each node and the serial port of the console station using a UART (Universal Asynchronous Receiver / Transmitter) chip in the input / output board of each node constituting the multi-node system RS-232C cable Connect with It provides serial console driver initialization, serial console read, and serial console write for each node's serial console driver operation, showing the status of each node in a single console window on the console station.

본 발명은 각 노드 내의 UART 칩을 이용한 소프트웨어적인 구현이기 때문에 다중 노드 시스템에서 저 비용으로 단일 콘솔을 가능하게 한다. 그리고 현재 개발중인 여러 노드가 분산 공유 메모리를 이루는 분산 공유 메모리 시스템인 CC-NUMA(Cache Coherent-Non Uniform Memory Access) 구조의 고성능 멀티미디어 서버에서도 사용 가능하다.Since the present invention is a software implementation using a UART chip in each node, it enables a single console at low cost in a multi-node system. It can also be used in a high performance multimedia server with Cache Coherent-Non Uniform Memory Access (CC-NUMA) architecture, which is a distributed shared memory system in which several nodes under development make up distributed shared memory.

Description

다중 노드 시스템상에서의 단일 콘솔을 위한 콘솔 구동기 운용 방법 {The console device driver operation method for single console on multi-node system}The console device driver operation method for single console on multi-node system}

본 발명은 인텔 계열의 프로세서와 메모리를 갖는 다중 노드들이 분산되어 동작되는 다중 노드 시스템이나 여러 노드가 분산 공유 메모리를 이루는 분산 공유 메모리 시스템인 CC-NUMA 구조의 시스템에서 각 노드의 진단이나 운영체제의 동작 상태를 콘솔 스테이션의 단일 콘솔 윈도우에 나타내 줄 수 있는 단일 콘솔을 위한 콘솔 구동기 운용 방법에 관한 것이다.The present invention is a multi-node system in which multiple nodes having an Intel-based processor and memory are distributed or operated in a CC-NUMA structure system, which is a distributed shared memory system in which multiple nodes form a distributed shared memory. A console driver for a single console that can display status in a console window of a console station.

단일 콘솔 스테이션이란 여러 노드의 상태를 볼 수 있는 윈도우 환경의 시스템으로서 여러 노드로 구성된 다중 노드 시스템에서는 시스템을 진단하거나 운영체제의 정상적인 동작을 추적하기 위하여 필요하다.A single console station is a system in a windowing environment where you can view the status of multiple nodes. In a multi-node system with multiple nodes, it is necessary to diagnose the system or to track the normal operation of the operating system.

그런데, 종래의 다중 노드 시스템에서는 단일 콘솔을 위해 각 노드마다 별도의 진단 보드 등과 같은 하드웨어를 두고 기존의 키보드 및 VGA 콘솔 기능을 바꾸어 네트워크로 처리하도록 하였다.However, in the conventional multi-node system, a hardware such as a separate diagnostic board is provided for each node for a single console, and the existing keyboard and VGA console functions are changed to be processed as a network.

따라서, 하드웨어 추가에 따른 비용 증가라는 문제점이 있었다. 또한 진단보드는 진단을 위한 목적으로 만들어진 것이므로 키보드 및 VGA 콘솔 기능을 바꾸는 기능이 단순하며(입력 또는 출력), 사용되는 진단 보드들이 하드웨어적으로 안정되어 있지 않아 많은 문제점이 있다. 이에 따라 콘솔로 인하여 시스템이 불안하여 다운될 수도 있다.Therefore, there is a problem of increased cost due to the addition of hardware. In addition, since the diagnostic board is made for diagnostic purposes, the function of changing the keyboard and VGA console functions is simple (input or output), and the diagnostic boards used are not stable in hardware. As a result, the console may crash and crash.

본 발명은 각 노드의 인텔 프로세서에 존재하는 UART(Universal Asynchronous Receiver/Transmitter: 범용 비동기 송수신기) 칩을 이용하여 소프트웨어적으로 단일 콘솔 기능을 구현하여 다중 노드 시스템상에서의 단일 콘솔을 위한 콘솔 구동기 운용 방법을 제공하는 데 그 목적이 있다.The present invention provides a method for operating a console driver for a single console in a multi-node system by implementing a single console function in software using a universal asynchronous receiver / transmitter (UART) chip present in the Intel processor of each node. The purpose is to provide.

도 1은 본 발명에 적용되는 시스템 구성도1 is a system configuration applied to the present invention

도 2는 본 발명의 단일 콘솔을 위한 콘솔 구동기 운용 방법의 전체 구성도2 is an overall configuration diagram of a console driver operating method for a single console of the present invention;

도 3a는 본 발명에 따른 시리얼 콘솔 구동기 초기화 자료구조도Figure 3a is a serial console driver initialization data structure diagram according to the present invention

도 3b는 본 발명에 따른 부트 시의 시리얼 콘솔 구동기 초기화 실행 흐름도Figure 3b is a flow diagram of the serial console driver initialization execution at boot in accordance with the present invention

도 3c는 본 발명에 따른 커널 내의 시리얼 콘솔 구동기 초기화 실행 흐름도3C is a flow diagram of serial console driver initialization in the kernel in accordance with the present invention.

도 4a는 본 발명에 따른 시리얼 콘솔 읽기 자료구조도4A is a serial console read data structure according to the present invention

도 4b는 본 발명에 따른 시리얼 콘솔 읽기 실행 흐름도4B is a flow diagram of serial console read execution in accordance with the present invention.

도 5a는 본 발명에 따른 시리얼 콘솔 쓰기 자료구조도5a is a serial console write data structure according to the present invention

도 5b는 본 발명에 따른 시리얼 콘솔 쓰기 실행 흐름도5B is a flow diagram of serial console write execution in accordance with the present invention.

도 6a는 본 발명에 따른 콘솔 입출력 실행 자료구조도6a is a data structure of the console input and output execution according to the present invention

도 6b 및 도 6c는 콘솔 입/출력 실행 흐름도6B and 6C show a console input / output execution flow chart

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

1 : 노드 2 : 상호연결망1: Node 2: interconnect network

3 : RS232C 케이블 4 : 시리얼 터미널 스위치3: RS232C Cable 4: Serial Terminal Switch

5 : 콘솔 스테이션5: console station

상술한 목적을 달성하기 위한 본 발명의 다중 노드 시스템상에서의 단일 콘솔을 위한 콘솔 구동기 운용 방법은, 부트 시와 커널 초기에 실행되는 단일 콘솔 처리를 위한 콘솔 구동기 초기화 과정; 사용자의 노드 상태 제공에 대한 요구를 처리하기 위한 시리얼 콘솔 터미널의 입력을 실행하는 시리얼 콘솔 읽기 과정; 및 노드의 상태를 사용자에게 전달하기 위하여 시리얼 콘솔 터미널에 출력을 실행하는 시리얼 콘솔 쓰기 과정을 포함하며, 상기 시리얼 콘솔 읽기/쓰기 과정은 I/O 맵드(mapped) 입출력 처리에 의해 실행되는 것을 특징으로 한다.A console driver operating method for a single console on a multi-node system of the present invention for achieving the above object, the console driver initialization process for processing a single console to be executed at boot and early kernel; A serial console reading process for executing input of a serial console terminal to handle a request for providing a node status of a user; And a serial console write process of executing an output to a serial console terminal to transmit a state of a node to a user, wherein the serial console read / write process is performed by an I / O mapped input / output process. do.

이하, 본 발명의 바람직한 실시예를 첨부도면을 참조하여 상세하게 설명한다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings.

본 발명의 단일 콘솔을 위한 콘솔 구동기 운용 방법이 적용되는 다중 노드 시스템은 도 1에 나타낸 바와 같이 하나 이상의 노드(1)가 상호연결망(2)으로 연결된 클러스터 시스템(cluster system)이다.The multi-node system to which the console driver operating method for a single console of the present invention is applied is a cluster system in which one or more nodes 1 are connected to the interconnection network 2 as shown in FIG.

상세하게 설명하면, 상호연결망(2)으로 연결되는 하나 이상의 노드(1)는 인텔 펜티엄 계열의 단일 프로세서와 공유 메모리로 이루어지거나, 다수개(예: 4개)의 프로세서와 공유 메모리 및 국부 자원들로 이루어지고 시스템 버스에 접속된 SMP(Symeritric Multi Processor) 구조인 노드가 될 수 있다.Specifically, one or more nodes 1 connected to the interconnection network 2 consist of a single processor and shared memory of the Intel Pentium family, or multiple (eg four) processors and shared memory and local resources. It may be a node which is a SMP (Symeritric Multi Processor) structure which is composed of a network connected to a system bus.

또한 각 노드(1)에는 UnixWare7을 기반으로 한 시리얼 콘솔 구동기 기능이 있는 운영체제 커널이 동작한다. 각 노드(1)에는 시리얼 터미널 입출력 기능을 할 수 있게 하는 두 개의 UART 칩이 존재하여 각 노드의 상태를 콘솔 스테이션(5) 윈도우에 나타내 준다. 물론 콘솔 스테이션(5)은 Windows 98 또는 NT운영체제 하에서 이러한 시리얼 콘솔 입출력 처리를 할 수 있는 윈도우 프로그램이 실행된다.In addition, each node (1) runs an operating system kernel with a serial console driver function based on UnixWare7. Each node (1) has two UART chips to enable serial terminal input and output functions to display the status of each node in the console station (5) window. Of course, the console station 5 runs a Windows program capable of performing such serial console input / output processing under the Windows 98 or NT operating system.

그리고, 각 노드(1) 사이를 연결하는 상호연결망(2)으로는 이더넷(Ethernet) 또는 SCI 링(Ring)이 사용될 수 있으며, 각 노드(1)의 시리얼 포트와 콘솔 스테이션(5)의 시리얼 포트를 연결하기 위해 RS232C 케이블(4)이 사용된다.In addition, an Ethernet network or an SCI ring may be used as the interconnection network 2 connecting each node 1, and the serial port of each node 1 and the serial port of the console station 5 may be used. An RS232C cable (4) is used to connect the cable.

상기 콘솔 스테이션(5)의 시리얼 포트의 개수가 상기 각 노드(1)의 포트 수를 합한 전체 포트 수보다 적은 경우에는 시리얼 터미널 스위치(4)를 사용하여 이를 통해 각 노드(1)와 콘솔 스테이션(5)을 연결할 수 있다.When the number of serial ports of the console station 5 is less than the total number of ports of the respective nodes 1, the serial terminal switch 4 is used to connect each node 1 and the console station ( 5) can be connected.

상기한 바와 같은 다중 노드 시스템에서의 단일 콘솔 처리를 위한 본 발명의 시리얼 콘솔 구동기 운용은 도 2에 도시한 바와 같이 시리얼 콘솔 구동기 초기화, 시리얼 콘솔 읽기/쓰기에 의해 이루어진다.Serial console driver operation of the present invention for single console processing in a multi-node system as described above is performed by serial console driver initialization, serial console read / write as shown in FIG.

먼저, 시리얼 콘솔 구동기 초기화에 대해 설명한다.First, the serial console driver initialization will be described.

도 3a는 단일 콘솔 처리를 위한 커널 콘솔 구동기 초기화에 사용되는 자료 구조로서 인텔 프로세서에서 사용하는 레지스터 및 구조를 나타낸 것이다.3A illustrates the registers and structures used by the Intel processor as data structures used to initialize the kernel console driver for single console processing.

실제로 시리얼 포트를 초기화를 위해 BIOS 인터럽트 호출에 사용되는 레지스터는 eax와 edx이다.In fact, the registers used to invoke the BIOS interrupts to initialize the serial port are eax and edx.

conssw 구조는 콘솔에 사용되는 콘솔 구동기를 위한 장치 열기, 닫기, 입력, 출력 등의 인터페이스 함수 포인터를 저장하는 구조이다. 커널 내의 콘솔 구동기 초기화에서는 이 중 시리얼 콘솔을 입출력하기 위한 커널의 가장 말단 입출력 함수인 cn_getc와 cn_putc 함수를 초기화한다.The conssw structure is a structure that stores interface function pointers such as device open, close, input, and output for the console driver used in the console. The console driver initialization in the kernel initializes the cn_getc and cn_putc functions, the kernel's last input / output functions, for inputting and outputting serial consoles.

시리얼 콘솔 구동기 초기화는 먼저, 부트 코드에서 시리얼 포트를 초기화하고, 커널 초기에는 부트 코드의 콘솔 입출력을 조금 사용하다가 노드 중에 부트 노드인 경우와 부트 노드가 아닌 경우를 나누어서 콘솔을 사용 할 수 있도록 한다.Initializing the serial console driver first initializes the serial port in the boot code, and uses the console input and output of the boot code at the beginning of the kernel, so that the console can be used separately between the boot node and the non-boot node.

먼저, 부트 시의 시리얼 콘솔 구동기 초기화에 대해 설명한 다음, 커널 내의 시리얼 콘솔 구동기 초기화에 대해 설명한다.First, the initialization of the serial console driver at boot time is described, and then the initialization of the serial console driver in the kernel is described.

도 3b는 부트 시의 시리얼 콘솔 구동기 초기화를 실행하는 흐름도이다.3B is a flowchart for performing serial console driver initialization at boot time.

부트 노드에서의 시리얼 포트 초기화의 실행은 어셈블리 코드로 되어 있다. 먼저 초기화에 사용되는 레지스터인 스택 베이스 포인터 레지스터 %ebp 및 인덱스레지스터 %ebx, %esi, %ed 의 값들을 스택에 푸시(push)하여 저장한다(S1). 그런 후에 실제로 시리얼 콘솔 초기화를 위한 BIOS 호출을 사용하기 위하여 실 주소 모드(real address mode)로 변환한다(S2).The execution of serial port initialization on the boot node is in assembly code. First, values of the stack base pointer register% ebp and the index registers% ebx,% esi, and% ed, which are registers used for initialization, are pushed and stored on the stack (S1). It then converts to real address mode to actually use the BIOS call for serial console initialization (S2).

그리고, BIOS를 호출하는 동안 인터럽트가 발생하지 않도록 실 주소 모드 내의 인터럽트를 인에이블(enable) 한 다음(S3), 사용할 레지스터의 값들을 세트한다. 여기에서 각 노드(1)의 시리얼 포트 중 COM 1 포트를 사용하기 때문에 edx 레지스터에 시리얼 포트 번호에 해당하는 값을 지정한다. COM1 포트의 경우는 0x0, COM2 포트는 0x1, COM3 포트는 0x2이며 COM4 포트는 0x3 으로 정해져 있으므로 %edx를 COM1 포트를 초기화하겠다는 뜻으로 0x0을 지정한다(S4).Then, enable interrupts in the real address mode so as not to generate an interrupt while invoking the BIOS (S3), and then set values of registers to be used. Since the COM 1 port is used among the serial ports of each node (1), a value corresponding to the serial port number is specified in the edx register. COM1 port is 0x0, COM2 port is 0x1, COM3 port is 0x2 and COM4 port is set to 0x3, so% edx is designated as 0x0 to initialize the COM1 port (S4).

이어서, 단계 S5에서 %eax 를 초기화한다. 이때 %eax 의 상위 8비트와 하위 8비트의 내용에 따라 초기화하는 값이 달라지는데, 먼저 상위 8비트 레지스터인 %ah 의 값은 0으로 지정한다. 그리고 하위 8비트 레지스터인 %al의 값은 시리얼 포트 초기화를 위한 인수로 지정한다. 이때, 데이터 전송률은 초당 9600bps에 문자 크기는 8-bit 문자에 패리티비트(parity bit)는 없고 종료 비트(stop bit)의 수는 1비트로 하는 초기화 인수를 나타내는 0xE3을 %al에 지정한다.Next,% eax is initialized in step S5. At this time, the initialization value varies depending on the contents of the upper 8 bits and the lower 8 bits of% eax. First, the value of the upper 8-bit register% ah is set to 0. The lower 8-bit register% al is used as an argument to initialize the serial port. At this time, the data rate is 9600bps per second, the character size is 8-bit characters, the parity bit (parity bit), the number of stop bits (stop bit) is 1 bit specifies 0xE3 indicating an initialization factor to% al.

다음으로 호출 번호 0x14로 하여 실제 시리얼 포트 초기화 BIOS를 호출하여 초기화를 실행한다(S6).Next, call serial number initialization BIOS with call number 0x14 to execute initialization (S6).

BIOS 호출은 실 주소 모드에서만 실행할 수 있으므로 실 주소 모드에서 실행한 후에 보호 주소 모드(protected address mode)로 변환한다(S7).Since the BIOS call can be executed only in the real address mode, the BIOS call is executed in the real address mode, and then converted to the protected address mode (S7).

그런 후에 초기화 시작시에 스택에 저장해 두었던 값을 %ebp, %ebx, %esi, %edi 를 해당 레지스터에 복원한 다음(S8) 복귀함으로써 부트 시 시리얼 콘솔 구동기 초기화가 종료된다.After that, the serial console driver initialization is terminated at boot time by restoring the values stored on the stack at the start of initialization to% epp,% ebx,% esi and% edi (S8) and returning them.

도 3c는 커널 초기화 시의 시리얼 콘솔 구동기 초기화를 실행하는 흐름도이다.3C is a flowchart for performing serial console driver initialization during kernel initialization.

커널 콘솔이 시작되면 맨 먼저 노드 ID를 이용하여 부트 노드인가를 확인한다(S9). 각 노드(1)가 동일한 운영체제를 사용하므로 부트 노드에 적재되어 있는 부트 코드의 텍스트 프로그램도 다른 모든 노드가 사용 가능하다. 그러므로 이 때 부트 노드만이 부트 코드로부터 인수를 받아 처리하여도 다른 노드들은 사용이 가능하다.When the kernel console starts, it first checks whether a boot node is made using the node ID (S9). Since each node 1 uses the same operating system, all other nodes can use the text program of the boot code loaded in the boot node. Therefore, even if only the boot node takes arguments from the boot code and processes it, other nodes can use it.

단계 S9에서의 확인결과, 부트 노드가 아니면 단계 S13으로 분기한다.If the result of the check in step S9 is not a boot node, the flow branches to step S13.

그러나, 단계 S9에서의 확인결과 부트 노드인 경우는 부트 코드로부터 받은 사용자의 정보(인수)를 가지고 초기화(S10∼S12)를 수행하게 된다.However, in the case of the boot node as a result of the check in step S9, initialization (S10 to S12) is performed with the information (argument) of the user received from the boot code.

부트 코드로부터 받는 인수로는 부트 프로그램, 루트 파일시스템, 루트 파일시스템 타입, 부트시 메시지, Copyright 문 , 시스템의 부트 요청 상태(단일 사용자 모드 또는 다중 사용자 모드 등), 물리적 메모리 크기, 시스템 버스 타입 등이 있다. 인수 중 콘솔과 관련해서는 콘솔 장치 번호, 콘솔 구동기 종류(키보드 또는 시리얼 콘솔 등)를 지정해 줄 수 있다. 기본으로는 콘솔 구동기를 시리얼 콘솔로초기화 한다.The arguments received from the boot code include the boot program, root filesystem, root filesystem type, boot-time messages, copyright statements, system boot request status (such as single-user mode or multiuser mode), physical memory size, system bus type, and so on. There is this. For the console, the console device number and console driver type (such as keyboard or serial console) can be specified. By default, the console driver is initialized to the serial console.

먼저, 부트 코드로부터 받은 인수를 커널내 구조에 저장한다(S10).First, the argument received from the boot code is stored in the kernel structure (S10).

그런 후에 부트 시에 사용하였던 시리얼 콘솔 입출력 함수를 콘솔 구동기 입장에서 사용할 수 있도록 초기화한다(S11). 상세하게는 부트 코드로부터 전해 받은 부트 시에 사용하던 시리얼 콘솔 입출력 함수의 엔트리 포인터를 저장하고 있는 구조 conssw의 cn_putc, cn_getc 변수를 초기화하는 것으로 입출력 말단에 그 함수들이 불리워진다.Thereafter, the serial console I / O function used at boot is initialized to be used by the console driver (S11). Specifically, the functions are called at the end of I / O by initializing the cn_putc and cn_getc variables of the structure conssw, which stores the entry pointers of the serial console I / O functions used at boot received from the boot code.

다음으로 사용하지 않는 메모리를 탐색하여 그에 대한 처리를 한다(S12).Next, the memory that is not used is searched for and processed (S12).

이는 사용하지 않는 메모리를 모아 사용 가능한 페이지 풀에 넣거나, 예약(Reserve) 또는 사용 중(커널 텍스트, 데이터)이라서 사용하지 못하는 메모리는 사용되지 않도록 하기 위해서이다.This is done to collect unused memory and put it in the available page pool, or to prevent unused memory from being reserved or in use (kernel text, data).

이어서, 커널 실행을 위하여 커널 페이지 테이블을 구축한다(S13).Subsequently, a kernel page table is constructed for kernel execution (S13).

단계 S13은 부트 노드인 경우, 앞서 설명한 단계 S10 내지 S12의 초기화를 수행한 다음에, 그리고 부트 노드가 아닌 경우에는 초기화를 수행하지 않고 바로 수행된다.In the case of the boot node, step S13 is performed immediately after performing the above-described initialization of steps S10 to S12, and in the case of not the boot node, without performing the initialization.

단계 S13에서 커널 가상 주소 메모리가 구축이 되면 더 이상 부트 코드의 시리얼 콘솔 입출력 함수를 사용하지 않기 위하여 커널 콘솔 입출력 초기화를 수행한다(S14). 자세하게는 커널 시리얼 콘솔 입출력 함수의 엔트리 포인터로 세트하는 것이다.When the kernel virtual address memory is constructed in step S13, kernel console input / output initialization is performed to no longer use the serial console input / output function of the boot code (S14). Specifically, it is set to the entry pointer of the kernel serial console I / O function.

그런 후에 시스템 내의 단일 콘솔로 사용하기 위한 초기화 작업을 하는 커널 메인 함수인 _start 함수를 호출하고(S15) 복귀한다.After that, the _start function, which is the kernel main function that performs initialization for a single console in the system, is called (S15) and returned.

커널 메인 함수인 _start 함수 내에서는 여러 가지 커널 관련한 작업이 많이 있으나 콘솔과 관련된 것만 도면에 도시하였다.There are many kernel-related tasks in the _start function, the main kernel function, but only those related to the console are shown in the drawings.

먼저 다중 사용자 모드에서 사용될 콘솔을 위한 스트림 모듈을 초기화한다(S16).First, the stream module for the console to be used in the multi-user mode is initialized (S16).

그런 후에 커널 콘솔 구동기를 부트 노드의 부트 프로세서에 바인드하여 모든 시스템 상태나 동작을 부트 노드에 있는 시리얼 포트로 입출력되게 한다(S17).Thereafter, the kernel console driver is bound to the boot processor of the boot node so that all system states or operations are inputted and output to the serial port of the boot node (S17).

다음으로 부트 노드인가 확인한다(S18).Next, it is checked whether it is a boot node (S18).

커널 콘솔 함수가 초기화되고 난 후에 부트 노드가 아닌 경우에는 해당 노드의 콘솔 입출력 내용이 부트 노드의 부트 프로세서에 바인드 되어서 입출력되므로, 부트 노드의 윈도우를 사용하게 된다. 그러므로 해당 노드가 사용하던 윈도우를 없애도록 윈도우 프로그램에게 정해진 일정 문자를 보낸다(S19). 그런 후에 커널의 각종 입출력 모듈을 초기화한다(S20).If the kernel console function is not a boot node after initialization, the console I / O contents of the node are bound to the boot processor's boot processor and input / output, so the window of the boot node is used. Therefore, a predetermined character is sent to the window program to remove the window used by the node (S19). Thereafter, various input / output modules of the kernel are initialized (S20).

도 4a는 콘솔 스테이션(5) 사용자의 노드 상태 제공 요구를 처리하기 위한 시리얼 콘솔 읽기에 사용되는 자료구조로서, 시리얼 콘솔 포트의 형상 레지스터들을 나타낸 것이다. 이들 시리얼 콘솔의 포트 레지스터는 메모리를 사용하는 메모리 맵드 입출력이 아니라 포트 입출력 방식을 사용하는 I/O 맵드 입출력을 사용한다.4A is a data structure used to read a serial console for handling a node state provision request of a console station 5 user, showing the shape registers of the serial console port. The port registers of these serial consoles use I / O mapped I / O using port I / O rather than memory mapped I / O using memory.

각 포트 입출력을 위한 레지스터는 각 포트에 따라 엑세스하는 주소가 다른데, COM1 포트의 경우는 0x3f8 부터 0x3ff 까지의 주소를 엑세스하고, COM2 포트의 경우에는 0x2f8 부터 0x2ff 까지의 주소를 엑세스하는 것으로 제어가 가능하다. 본 발명에서는 각 노드(1)는 COM1 포트를 사용하므로 0x3f8 부터 0x3ff 까지의 주소를 사용한다.The registers for each port I / O are different from each other. The COM1 port can access the addresses 0x3f8 through 0x3ff, and the COM2 port can access the addresses 0x2f8 through 0x2ff. Do. In the present invention, since each node 1 uses the COM1 port, addresses from 0x3f8 to 0x3ff are used.

시리얼 콘솔 포트의 형상 레지스터의 각 필드는 문자로 되어 있다.Each field of the configuration register of the serial console port is a letter.

이를 차례로 설명하면, rbr은 리시버 버퍼 레지스터(Receiver Buffer Register)로서 보내거나 받은 문자를 갖는 버퍼이다. 그리고 thr은 트랜스미터 홀딩 레지스터(Transmitter Holding Register)로서 보낼려는 문자가 홀딩 되었음을 나타내는 레지스터이다.In order to explain this, rbr is a buffer having characters sent or received as a receiver buffer register. And thr is a transmitter holding register that indicates that the character to be sent is held.

또한 iit은 인터럽트 인에이블 레지스터(Interrupt Enable Register)이고, lcr은 라인을 제어하기 위한 라인 제어 레지스터(Line Control Register)이며, mcr은 모뎀 제어 레지스터(Modem Control Register)이다.Iit is an interrupt enable register, lcr is a line control register for controlling a line, and mcr is a modem control register.

그리고 lsr은 라인의 상태를 나타내는 라인 상태 레지스터(Line Status Register)이고, msr은 모뎀의 상태를 나타내는 모뎀 상태 레지스터(Modem Status Register)이며, 마지막으로 데이터를 임시 홀드하는 스크래치 패드 레지스터(Scratch Pad Register) 이다.Lsr is a Line Status Register that indicates the status of the line, msr is a Modem Status Register that indicates the status of the modem, and finally a Scratch Pad Register that temporarily holds data. to be.

도 4b는 시리얼 콘솔 읽기의 실행 흐름도를 나타낸 것이다.4B shows a flowchart of execution of serial console read.

도면에서 보듯이 시리얼 콘솔 읽기를 시작하면, 먼저 COM 포트(시리얼 콘솔 포트) 레지스터의 라인 상태 레지스터의 값을 읽는다(S31). 이때 I/O 맵드 입력을 이용하는데 이에 대해서는 후술한다.As shown in the figure, when starting to read the serial console, first read the value of the line status register of the COM port (serial console port) register (S31). In this case, I / O mapped input is used, which will be described later.

라인 상태 레지스터의 값을 참조하여 외부에서 입력된 데이터가 있는지 확인한다(S32). 확인 결과 외부에서 입력된 데이터가 없으면 단계 S31을 다시 수행하고, 외부에서 입력된 데이터가 있으면 이를 저장하고 있는 리시버 버퍼 레지스터의 값을 읽는다(S33). 그런 후에 그 읽은 데이터의 값을 반환하고 시리얼 콘솔 읽기를 종료한다.Referring to the value of the line status register, it is checked whether there is data input from the outside (S32). If there is no data input from the outside as a result of the check, step S31 is again performed, and if there is data input from outside, the value of the receiver buffer register storing the data is read (S33). Then return the value of the read data and finish reading the serial console.

도 5a는 콘솔 스테이션 사용자의 노드 상태 제공 요구에 대한 응답을 위한 시리얼 콘솔 쓰기에 사용되는 자료 구조를 나타낸 것으로서, 시리얼 콘솔 읽기에서와 같이 형상 레지스터를 이용한다.5A shows the data structure used for serial console writes in response to a console station user's request to provide node status, using shape registers as in serial console reads.

도 5b는 시리얼 콘솔 쓰기의 실행 흐름도를 나타낸 것이다.5B shows a flowchart of execution of serial console writes.

도면에서 보듯이 시리얼 콘솔 쓰기를 시작하면, 먼저 시리얼 포트에 이미 쓰기를 요청한 데이터가 있는지를 확인하기 위해 카운터인 i를 0으로 초기화한다(S41).As shown in the figure, when the serial console write is started, first, the counter i is initialized to 0 to check whether there is already data requested to be written to the serial port (S41).

그런 다음, 라인 상태 레지스터를 읽는다(S42). 이 때 I/O 맵드 입력을 실행하는데 이에 대해서는 후술한다.Then, the line status register is read (S42). At this time, an I / O mapped input is executed, which will be described later.

라인 상태 레지스터를 참조하여 현재 트랜스미터 홀딩 레지스터가 비어 있는가를 확인한다(S43). 확인 결과 트랜스미터 홀딩 레지스터가 비어 있으면 출력하려는 문자를 리시버 버퍼 레지스터에 기록한다(S44). 이때 I/O 맵드 출력을 이용하는데 이에 대해서는 후술한다.The transmitter determines whether the current transmitter holding register is empty by referring to the line status register (S43). If the transmitter holding register is empty as a result of the check, the character to be output is recorded in the receiver buffer register (S44). In this case, I / O mapped output is used, which will be described later.

기록이 완료되면 결과 값(성공 또는 실패)을 반환하여 콘솔 쓰기를 종료한다.When writing is complete, the console write is terminated by returning a result value (success or failure).

그러나 단계 S43에서의 확인 결과, 트랜스미터 홀딩 레지스터가 비어 있지 않으면 카운터 i 가 미리 설정해둔 값(예: 1000)보다 작은지 검사한다(S45).However, if the transmitter holding register is not empty as a result of the check in step S43, it is checked whether the counter i is smaller than a preset value (for example, 1000) (S45).

검사결과 카운터 i 가 미리 설정해둔 값(예: 1000)보다 작으면 카운터 i를 하나 증가시킨 후(S46) 반복하여 라인 상태 레지스터 값을 참조하여 트랜스미터 홀딩 레지스터가 비어있는지 확인하기 위하여 단계 S42로 이행한다.If the check result counter i is smaller than the preset value (e.g. 1000), the counter i is incremented by one (S46), and the process is repeated to check whether the transmitter holding register is empty by referring to the line status register value and repeating the process. .

그러나 단계 S45에서의 검사결과, 카운터 i 가 미리 설정해둔 값 이상이면 단계 S44로 분기하여 쓰고자 하는 문자를 리시버 버퍼 레지스터에 기록하고, 결과 값을 반환(성공 또는 실패)하여 콘솔 쓰기를 종료한다.However, as a result of the check in step S45, if the counter i is equal to or larger than the preset value, the character branched to write in step S44 is written to the receiver buffer register, and the result value is returned (success or failure) to end the console writing.

여기서, 라인 상태 레지스터 값을 읽어 트랜스미터 홀드 레지스터가 비어있는지를 확인하는 루프 반복을 위해 카운터 i 와 비교되는 설정 값(예: 1000)은 트랜스미터 홀딩 레지스터가 비기에 충분한 값으로 설정된다.Here, a set value (e.g. 1000) that is compared to the counter i for loop iterations by reading the line status register value to verify that the transmitter hold register is empty is set to a value sufficient for the transmitter holding register to be empty.

도 6a는 시리얼 콘솔 읽기/쓰기에서 실행하는 I/O 맵드 입출력 실행시에 사용하는 인터페이스 자료구조로서, 사용하는 레지스터로 %eax, %edx, %esp 가 있다.FIG. 6A is an interface data structure used to execute I / O mapped input / output executed in serial console read / write. There are% eax,% edx, and% esp as registers to be used.

도 6b는 상술한 콘솔 읽기/쓰기에서 라인 상태 레지스터의 값을 읽을 때 이용되는 I/O 맵드 입력의 실행 과정을 보인 흐름도이다.FIG. 6B is a flowchart illustrating an execution process of an I / O mapped input used when reading a value of a line status register in the console read / write described above.

도면에서 보듯이 입력 실행을 시작하면, 먼저 %edx의 값을 스택에저장한다(S51). 그런 후에 인수로 들어온 스택에 있는 내용 중 입력하려는 포트 주소를 %edx에 옮긴다(S52). 포트 입력 결과값을 저장하기 위하여 %ax를 0으로 세트한다(S53).As shown in the figure, when input execution starts, first, a value of% edx is stored on a stack (S51). After that, the port address to be entered is transferred to% edx among the contents of the stack received as an argument (S52). In order to store the port input result,% ax is set to 0 (S53).

실제 포트 주소로부터 문자를 읽어 들이는 inb 인스트럭션을 수행한다(S54). 이때, 레지스터 %edx에 있는 포트 주소가 이용된다.An inb instruction for reading a character from an actual port address is performed (S54). At this time, the port address in register% edx is used.

저장해 놓았던 %edx의 값을 스택로부터 복원한다(S55).The stored value of% edx is restored from the stack (S55).

그런 후에 복귀하는데, inb의 결과가 %ax레지스터에 있으므로 결과값을 가지고 복귀하는 것과 같다.It then returns, which is equivalent to returning with the result because the result of inb is in the% ax register.

도 6b는 콘솔 쓰기에서 출력하려는 문자를 리시버 버퍼 레지스터에 기록할 때에 이용되는 I/O 맵드 출력의 실행 과정을 보인 흐름도이다.FIG. 6B is a flowchart showing an execution process of the I / O mapped output used when writing a character to be output in the console write to the receiver buffer register.

도면에서 보듯이 출력 실행을 시작하면, 입력과 마찬가지로 %edx의 값을 스택에 저장한다(S61). 인수로 들어온 포트 주소를 스택으로부터 %edx에 옮겨 놓고(S62), 인수로 들어온 출력할 문자를 %al에 옮겨 놓는다(S63).As shown in the figure, when the execution of the output starts, the value of% edx is stored on the stack like the input (S61). The port address entered as an argument is moved to% edx from the stack (S62), and the character to be outputted as an argument is replaced with% al (S63).

outb 인스트럭션을 사용하여 포트 주소에 문자를 출력한다(S64). 이때, 앞서 설명한 %edx에 있는 포트주소에 %al에 있는 문자를 출력하는 것이다.Characters are output at the port address using the outb instruction (S64). At this time, the characters in% al are displayed in the port address in% edx described above.

그리고 나서 저장해 놓은 %edx의 값을 스택으로부터 복원한(S65) 후에 복귀한다.Then, the stored value of% edx is restored from the stack (S65) and then returned.

상술한 바와 같이 본 발명은 다중 노드 시스템이 3개 이상의 노드로 구성되는 경우에 시리얼 터미널 스위치가 요구되는 것 외에는 진단 보드 등과 같은 별도의 하드웨어 추가 없이 각 노드 내의 UART 칩을 이용한 소프트웨어적으로 단일 콘솔 기능이 구현된다. 따라서, 본 발명을 이용하면 저 비용으로 각 노드의 상태 및 동작을 추적하여 다중 노드 시스템의 관리를 원활하게 할 수 있다As described above, the present invention provides a single console function by using a UART chip in each node without additional hardware, such as a diagnostic board, except that a serial terminal switch is required when the multi-node system is composed of three or more nodes. This is implemented. Therefore, by using the present invention, it is possible to smoothly manage the multi-node system by tracking the state and operation of each node at low cost.

이상에서 본 발명에 대한 기술사상을 첨부도면과 함께 서술하였지만 이는 본 발명의 바람직한 실시예를 예시적으로 설명한 것이지 본 발명을 한정하는 것은 아니다. 또한, 이 기술분야의 통상의 지식을 가진 자라면 누구나 본 발명의 기술사상의 범주를 이탈하지 않는 범위 내에서 다양한 변형 및 모방이 가능함은 명백한 사실이다.The technical spirit of the present invention has been described above with reference to the accompanying drawings, but this is by way of example only and not intended to limit the present invention. In addition, it is obvious that any person skilled in the art can make various modifications and imitations without departing from the scope of the technical idea of the present invention.

Claims (9)

UnixWare7을 기반으로 한 시리얼 콘솔 구동기 기능이 있는 운영체제 커널이 동작하며, 시리얼 터미널 입출력 기능을 제공하는 UART 칩을 구비한 인텔 계열 프로세서와 공유 메모리를 포함하여 이루어지는 둘 이상의 노드(1)가 상호연결망(2)으로 연결되어 구성되는 다중 노드 시스템에서, 상기 각 노드(1) 내의 UART 칩을 이용하여 각 노드(1)의 상태를 RS232C 케이블(3)을 통해 콘솔 스테이션(5)의 단일 콘솔 윈도우에 나타내는 콘솔 구동기 운용 방법에 있어서,An operating system kernel with a serial console driver function based on UnixWare7 runs, and at least two nodes (1) including an Intel-based processor with a UART chip that provides serial terminal input / output functions and shared memory are interconnected (2). In a multi-node system, which is configured to be connected to a multi-node system, the UART chip in each node 1 displays a state of each node 1 in a single console window of the console station 5 through an RS232C cable 3. In the driver operating method, 부트 시와 커널 초기에 실행되는 단일 콘솔 처리를 위한 콘솔 구동기 초기화 과정;A console driver initialization process for processing a single console executed at boot time and early in the kernel; 콘솔 스테이션(5) 사용자의 노드 상태 제공에 대한 요구를 처리하기 위한 시리얼 콘솔 터미널의 입력을 실행하는 시리얼 콘솔 읽기 과정; 및Console station 5 A serial console reading process of executing an input of a serial console terminal for processing a request for providing a node status of a user; And 노드의 상태를 콘솔 스테이션(5) 사용자에게 전달하기 위하여 시리얼 콘솔 터미널에 출력을 실행하는 시리얼 콘솔 쓰기 과정을 포함하는 것을 특징으로 하는 다중 노드 시스템상에서의 단일 콘솔을 위한 콘솔 구동기 운용 방법.A method of operating a console driver for a single console on a multi-node system, comprising a serial console write process that executes output to a serial console terminal to convey the status of the node to a console station user. 제1항에 있어서,The method of claim 1, 상기 콘솔 구동기 초기화 과정에서 부트 실행되는 초기화는,Initialization that is booted during the console driver initialization process, 초기화에 사용되는 레지스터(%ebp, %ebx, %esi, %edi)의 값들을 스택에 저장한 후 시리얼 콘솔 초기화를 위한 BIOS 호출을 사용하기 위하여 실 주소 모드로 변환하는 단계;Storing the values of registers (% ebp,% ebx,% esi,% edi) used for initialization on a stack and converting them to real address mode to use a BIOS call for serial console initialization; 실 주소 모드 내의 인터럽트를 인에이블 하는 단계;Enabling an interrupt in a real address mode; 초기화할 시리얼 포트를 지정하고 시리얼 포트 초기화를 위한 인수(초당 데이터 전송률, 문자 크기, 종료 비트 수 등)를 지정하기 위하여 레지스터(%edx, %eax)와)의 값들을 세트하는 단계;Setting values of registers (% edx,% eax) to specify a serial port to initialize and to specify arguments (data rate per second, character size, number of exit bits, etc.) for serial port initialization; 실제 시리얼 포트 초기화 BIOS를 호출하여 상기 레지스터(%edx, %eax)의 값에 따라 초기화를 실행하는 단계; 및Invoking an actual serial port initialization BIOS and performing initialization according to a value of the registers (% edx,% eax); And 실 주소 모드에서 보호 주소모드로 변환한 다음, 스택의 내용을 레지스터(%ebp, %ebx, %esi, %edi)에 복원하는 단계를 포함하는 것을 특징으로 하는 다중 노드 시스템상에서의 단일 콘솔을 위한 콘솔 구동기 운용 방법.Converting from real address mode to protected address mode, and then restoring the contents of the stack to registers (% ebp,% ebx,% esi,% edi) for a single console on a multi-node system. How to operate the console driver. 제1항에 있어서,The method of claim 1, 상기 콘솔 구동기 초기화 과정에서 커널 초기에 실행되는 초기화는,Initialization executed during the initial kernel initialization process in the console driver initialization, 노드 ID를 이용하여 부트 노드인가를 확인하는 제1단계;A first step of verifying whether a boot node is obtained using a node ID; 상기 제1단계에서의 확인결과, 부트 노드인 경우는 부트 코드로부터 받은 인수를 커널내 구조에 저장하고, 콘솔 구동기 입장에서 부트시에 사용하였던 시리얼 콘솔 입출력 함수를 사용할 수 있도록 초기화한 다음, 사용하지 않은 메모리를 탐색하여 그에 대한 처리를 수행하는 제3단계;As a result of checking in the first step, in the case of a boot node, the arguments received from the boot code are stored in the kernel structure, initialized so that the console driver can use the serial console I / O function used at boot time, and then not used. Searching for an unused memory and performing a process for the same; 상기 제1단계에서의 확인 결과 부트 노드가 아닌 경우 또는 상기 제3단계 수행한 후, 커널 실행을 위하여 커널 페이지 테이블을 구축하는 제4단계;A fourth step of building a kernel page table to execute a kernel when the verification result in the first step is not the boot node or after the third step is performed; 더 이상 부트 코드의 시리얼 콘솔 입출력 함수를 사용하지 않기 위하여 커널 시리얼 콘솔 입출력 함수의 엔트리 포인터로 세트하여 커널 콘솔 입출력을 초기화하는 제5단계; 및A fifth step of initializing the kernel console I / O by setting an entry pointer of the kernel serial console I / O function so that the serial console I / O function of the boot code is no longer used; And 커널 메인 함수인 _start 함수를 호출하여 시스템 내의 단일 콘솔로 사용하기 위한 초기화 작업을 하는 제6단계를 포함하는 것을 특징으로 하는 다중 노드 시스템상에서의 단일 콘솔을 위한 콘솔 구동기 운용 방법.A method of operating a console driver for a single console on a multi-node system, comprising the sixth step of calling the kernel main function _start function to perform initialization for use as a single console in the system. 제3항에 있어서,The method of claim 3, 상기 제6단계에서 호출되는 커널 메인 함수인 _start 함수는,The _start function, which is the kernel main function called in the sixth step, 다중 사용자 모드에서 사용될 콘솔을 위한 스트림 모듈을 초기화하는 단계;Initializing a stream module for a console to be used in a multi-user mode; 커널 콘솔 구동기를 부트 노드의 부트 프로세서에 바인드하여 모든 시스템 상태나 동작을 부트 노드에 있는 시리얼 포트로 입출력되도록 하는 단계;Binding a kernel console driver to the boot processor of the boot node such that all system state or operations are inputted and output to the serial port at the boot node; 부트 노드가 아닌 노드의 경우 콘솔 스테이션의 윈도우 프로그램을 없애도록 하는 단계; 및Removing a window program of the console station in the case of a node other than the boot node; And 커널의 각종 입출력 모듈을 초기화하는 단계를 포함하는 것을 특징으로 하는 다중 노드 시스템상에서의 단일 콘솔을 위한 콘솔 구동기 운용 방법.A method of operating a console driver for a single console on a multi-node system, comprising the step of initializing various input / output modules of the kernel. 제1항 내지 제4항 중 어느 한 항에 있어서,The method according to any one of claims 1 to 4, 상기 시리얼 콘솔 읽기 과정은,The serial console reading process, I/O 맵드 입력을 이용하여 시리얼 콘솔 포트 레지스터의 라인 상태 레지스터의 값을 읽는 제1단계;Reading a value of a line status register of a serial console port register using an I / O mapped input; 라인 상태 레지스터의 값을 참조하여 외부에서 입력된 데이터가 있는지 확인하는 제2단계; 및A second step of checking whether there is externally input data by referring to a value of a line status register; And 상기 제2단계의 확인 결과 외부에서 입력된 데이터가 없으면 라인 상태 레지스터 값을 읽는 상기 제1단계로 분기하고, 외부에서 입력된 데이터가 있으면 이를 저장하고 있는 리시버 버퍼 레지스터의 값을 읽어, 데이터의 값을 반환하는 제3단계를 포함하는 것을 특징으로 하는 다중 노드 시스템상에서의 단일 콘솔을 위한 콘솔 구동기 운용 방법.If there is no data input externally as a result of the checking of the second step, branching to the first step of reading the line status register value, and if there is data input externally, reads the value of the receiver buffer register storing the data and stores the data value. Console driver operating method for a single console on a multi-node system, characterized in that it comprises a third step of returning. 제1항에 있어서,The method of claim 1, 상기 시리얼 콘솔 쓰기 과정은,The serial console write process, 시리얼 포트에 이미 쓰기를 요청한 데이터가 있는지를 확인하기 위해 카운터 i를 0으로 초기화하는 제1단계;A first step of initializing the counter i to 0 to check whether there is already data requested to be written to the serial port; I/O 맵드 입력을 이용하여 라인 상태 레지스터를 읽고, 이를 참조하여 현재 트랜스미터 홀딩 레지스터가 비어 있는가를 확인하는 제2단계;Reading a line status register using an I / O mapped input and referring to it to determine whether the current transmitter holding register is empty; 상기 제1단계의 확인 결과 트랜스미터 홀딩 레지스터가 비어 있으면, I/O 맵드 출력을 이용하여 출력하려는 문자를 리시버 버퍼 레지스터에 기록하고 결과 값을 반환하는 제3단계;A third step of writing a character to be output to the receiver buffer register using an I / O mapped output and returning a result value if the transmitter holding register is empty as a result of the first step; 상기 제2단계에서의 확인 결과 트랜스미터 홀딩 레지스터가 비어있지 않으면, 카운터 i 가 일정한 값에 도달하였는지를 확인하는 제4단계; 및A fourth step of checking whether the counter i reaches a constant value if the transmitter holding register is not empty as a result of the checking in the second step; And 상기 제4단계에서의 확인 결과, 카운터 i 가 일정한 값에 도달하였으면 I/O 맵드 출력을 이용하여 출력하려는 문자를 리시버 버퍼 레지스터에 기록하고 결과 값을 반환하는 제3단계로 분기하고, 그렇지 않으면 카운터를 1 증가시켜 다시 제2단계로 이행하는 제5단계를 포함하는 것을 특징으로 하는 다중 노드 시스템상에서의 단일 콘솔을 위한 콘솔 구동기 운용 방법.As a result of the checking in the fourth step, if the counter i reaches a certain value, I / O mapped output writes the character to be output to the receiver buffer register and branches to the third step of returning the result value. And a fifth step of shifting the first step back to the second step. 제5항에 있어서,The method of claim 5, 상기 라인 상태 레지스터의 값을 읽을 때 이용되는 I/O 맵드 입력은,The I / O mapped input used to read the value of the line status register is 입력시에 사용될 레지스터 %edx의 값을 스택에 저장하는 단계;Storing a value of register% edx on the stack to be used upon input; 인수로 들어온 스택에 있는 내용 중 입력하려는 포트 주소를 %edx에 옮기는 단계;Moving the port address of the contents of the stack inputted to the argument into% edx; 포트 입력 결과값을 저장할 레지스터 %ax를 0으로 세트하는 단계; 및Setting a register% ax to 0 to store the port input result value; And 실제 포트 주소로부터 문자를 읽어 들이는 inb 인스트럭션을 수행한 후, %edx의 값을 스택으로부터 복원하는 단계의 실행에 의해 이루어지는 것을 특징으로 하는 다중 노드 시스템상에서의 단일 콘솔을 위한 콘솔 구동기 운용 방법.A method of operating a console driver for a single console on a multi-node system, characterized by the execution of an inb instruction that reads characters from a real port address and then restoring the value of% edx from the stack. 제6항에 있어서,The method of claim 6, 상기 제3단계에서 출력하려는 문자를 리시버 버퍼 레지스터에 기록할 때 이용되는 I/O 맵드 출력은,The I / O mapped output used when writing the character to be output in the third step to the receiver buffer register, 출력시에 사용될 레지스터 %edx의 값을 스택에 저장하는 단계;Storing a value of register% edx on the stack to be used at output; 인수로 들어온 포트 주소와 출력할 문자를 각각 스택으로부터 %edx와 %al에 옮기는 단계; 및Moving the port address and the character to be output from the stack to% edx and% al, respectively; And outb 인스트럭션을 사용하여 포트 주소에 출력할 문자를 출력하고 %edx의 값을 스택으로부터 복원하는 단계의 실행에 의해 이루어지는 것을 특징으로 하는 다중 노드 시스템상에서의 단일 콘솔을 위한 콘솔 구동기 운용 방법.A method of operating a console driver for a single console on a multi-node system, characterized by the use of the outb instruction to output characters to the port address and to restore the value of% edx from the stack. UnixWare7을 기반으로 한 시리얼 콘솔 구동기 기능이 있는 운영체제 커널이 동작하며, 시리얼 터미널 입출력 기능을 제공하는 UART 칩을 구비한 인텔 계열 프로세서와 공유 메모리를 포함하여 이루어지는 둘 이상의 노드(1)가 상호연결망(2)으로 연결되어 구성되는 다중 노드 시스템에서, 상기 각 노드(1) 내의 UART 칩을 이용하여 각 노드(1)의 상태를 RS232C 케이블(3)을 통해 콘솔 스테이션(5)의 단일 콘솔 윈도우에 나타내는 다중 노드 시스템상에서의 단일 콘솔을 위한 콘솔 구동기운용 방법을 제공하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체에 있어서,An operating system kernel with a serial console driver function based on UnixWare7 runs, and at least two nodes (1) comprising an Intel-based processor with a UART chip providing serial terminal input / output functions and shared memory are interconnected (2). In a multi-node system consisting of a multi-node system, the multi-node system displays the state of each node 1 in a single console window of the console station 5 through an RS232C cable 3 using a UART chip in each node 1. A computer-readable recording medium having recorded thereon a program providing a method for operating a console drive for a single console on a node system, the method comprising: 부트 시와 커널 초기에 실행되는 단일 콘솔 처리를 위한 콘솔 구동기 초기화 과정;A console driver initialization process for processing a single console executed at boot time and early in the kernel; 콘솔 스테이션(5) 사용자의 노드 상태 제공에 대한 요구를 처리하기 위한 시리얼 콘솔 터미널의 입력을 실행하는 시리얼 콘솔 읽기 과정; 및Console station 5 A serial console reading process of executing an input of a serial console terminal for processing a request for providing a node status of a user; And 노드의 상태를 콘솔 스테이션(5) 사용자에게 전달하기 위하여 시리얼 콘솔 터미널에 출력을 실행하는 시리얼 콘솔 쓰기 과정을 포함하는 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.A computer-readable recording medium having recorded an executable program including a serial console writing process for executing output to a serial console terminal to convey a node status to a console station user.
KR1019990053513A 1999-11-29 1999-11-29 The console device driver operation method for single console on multi-node system KR100352377B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990053513A KR100352377B1 (en) 1999-11-29 1999-11-29 The console device driver operation method for single console on multi-node system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990053513A KR100352377B1 (en) 1999-11-29 1999-11-29 The console device driver operation method for single console on multi-node system

Publications (2)

Publication Number Publication Date
KR20010048714A KR20010048714A (en) 2001-06-15
KR100352377B1 true KR100352377B1 (en) 2002-09-11

Family

ID=19622427

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990053513A KR100352377B1 (en) 1999-11-29 1999-11-29 The console device driver operation method for single console on multi-node system

Country Status (1)

Country Link
KR (1) KR100352377B1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001175574A (en) * 1999-12-14 2001-06-29 Fujitsu Ltd Console input/output control system and console managing device
CN112463662B (en) * 2020-12-16 2024-04-05 福州创实讯联信息技术有限公司 Method and terminal for user mode control of I2C equipment
CN116361195B (en) * 2023-05-24 2023-08-22 麒麟软件有限公司 Method for debugging Linux kernel

Also Published As

Publication number Publication date
KR20010048714A (en) 2001-06-15

Similar Documents

Publication Publication Date Title
JP2573566B2 (en) Bus converter
JP3561915B2 (en) System and method for assigning tags to control instruction processing in a superscalar processor
US4316245A (en) Apparatus and method for semaphore initialization in a multiprocessing computer system for process synchronization
US5790895A (en) Modem sharing
US4689737A (en) Integrated environment computer system control structure with natural language interface
US5802318A (en) Universal serial bus keyboard system
US6760784B1 (en) Generic virtual device driver
JPH07122863B2 (en) Data processing system including device driver having general-purpose operating system interface
GB2219110A (en) Data processing apparatus with selective instruction prefetching
JPS61276031A (en) Data processing device
WO1998048356A1 (en) A single chip microcontroller having down-loadable memory organization supporting 'shadow' personality, optimized for bi-directional data transfers over a communication channel
JPS61290564A (en) Compound data processing system
AU603876B2 (en) Multiple i/o bus virtual broadcast of programmed i/o instructions
US6105080A (en) Host adapter DMA controller with automated host reply capability
US5428760A (en) Circuitry and method for sharing internal microcontroller memory with an external processor
JPH07334483A (en) Data-driving type information processor
KR100352377B1 (en) The console device driver operation method for single console on multi-node system
EP0395377B1 (en) Status register for microprocessor
EP0259659A2 (en) A data processing machine including an adapter card driver mechanism
US7243353B2 (en) Method and apparatus for making and using a flexible hardware interface
US4814977A (en) Apparatus and method for direct memory to peripheral and peripheral to memory data transfers
JPS58115565A (en) Data processor
US6243800B1 (en) Computer
JP2000194556A (en) Instruction look-ahead system and hardware
JPS6410854B2 (en)

Legal Events

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

Payment date: 20070730

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee