WO1996031824A1 - Operating system - Google Patents
Operating system Download PDFInfo
- Publication number
- WO1996031824A1 WO1996031824A1 PCT/JP1995/000690 JP9500690W WO9631824A1 WO 1996031824 A1 WO1996031824 A1 WO 1996031824A1 JP 9500690 W JP9500690 W JP 9500690W WO 9631824 A1 WO9631824 A1 WO 9631824A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- priority
- message
- operating system
- processes
- request
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
Definitions
- the present invention relates to an operating system suitable for performing real-time processing in a system in which a part of the function of the operating system is realized as a server process using a microphone-kernel technology.
- the conventional ⁇ ⁇ S includes all processes such as memory management, process management, device driver, file system management, and communication processing in the kernel program executed in the system mode, its size is large. It was getting very big. This has been a major problem in terms of debugging and maintaining kernel programs.
- the kernel program there are many parts called critical sections that cannot be switched. If a low-priority process is executing this part, it cannot run even if a high-priority process occurs. Therefore, force
- the microkernel II S is described in “Distributed Operating System J Mamoru Maekawa et al., Kyoritsu Shuppan Co., Ltd.'s P20-P24. This microkernel II S was modified for real-time processing. For details, see “Real—Time Mach: Towards a Predicate table Real—Time System” by H. Tokuda, T. Nakajima, and P. Rao, from Proc. Usenix Mach Workshop, October 1990, pp. 1 One 1 (This is a statement.
- OS operating systems
- this priority control Plays an important role.
- the priority can be set for both the user process and the server process.
- the problems of monolithic OS are that it is difficult to obtain real-time performance of in-kernel processing, and that debugging and maintenance are difficult.
- the MicroKernel ⁇ s solves these problems.
- the parts of the message communication and the server process were not sufficiently realized in real time.
- an object of the present invention is to automatically control the priority of message communication in which a user process issues a request to a server process.
- Another object of the present invention is to provide means for automatically changing the priority of a server process according to the priority of a request from a user process.
- requests for devices in the server process may form a queue. This wait As for the matrix, since priorities were not taken into account in the conventional ⁇ S, a request with a high priority was sometimes waited.
- an object of the present invention is to provide means for controlling the priority of an IZO request queue of a server process which is a device driver. Disclosure of the invention
- the microkernel To automatically control the priority of message communication from the user process to the server process, the microkernel adds the priority of the user process that sent the message to the message. If messages need to be enqueued in the message queue, arrange the messages in priority order with the microchannel.
- the IZO request queue is rearranged according to the priority added to the request message.
- the user process can use the functions of the micropower cell by executing the trap instruction.
- the message communication function of the microkernel is also started by executing the trap instruction.
- the microkernel checks the priority of the requested process from the process management table, writes it to the message management table, and then writes the message. —Insert the management table into the message queue. At this time, the queues are inserted so that the order of the queues is in descending order of priority.
- the server process also requests the microkernel by using a trap command to retrieve a message from the message queue.
- the microkernel takes out the top message management table from the message queue and passes it to the server process, while writing the priority added to the message into the server process's process management table.
- the server process receives the message, it also reads the priority information attached to the message. If the server process is a device driver, this priority information is used to control the IZ ⁇ queue.
- FIG. 1 is an example of a real-time system provided by the present invention.
- FIG. 2 is an example of the register 101 of the processor in FIG.
- FIG. 3 shows an example of the algorithm of the user process in FIG. 1
- FIG. 4 shows an example of the algorithm of the write program which is one of the system call shared libraries 23 in FIG. .
- FIG. 5 shows an example of the algorithm of the message transmission program send_msg in FIG.
- FIG. 6 shows an example of the trap handler algorithm which is a part of the microkernel 27 in FIG. 1
- FIG. 7 shows the inside of the microkernel which is a part of the microkernel 27 in FIG.
- An example of the algorithm for send_msg processing is shown.
- FIG. 8 shows an example of an algorithm of a file server parent program which is a part of the file server 24 of FIG. 1
- FIG. 9 shows a file of FIG.
- An example of the algorithm of the file server child program which is a part of the file server 24 is shown.
- FIG. 10 shows an example of an algorithm of the rcv_msg function for requesting the microphone port kernel to receive the message shown in FIG.
- FIG. 11 shows an example of an algorithm for rev-msg processing in a micro force unit which is a part of the microkernel 27 of FIG.
- FIG. 12 shows an example of an algorithm of a device driver server acceptance program which is a part of the device driver 25 of FIG. 1
- FIG. 13 shows an insertion of a write request which is a part of the device driver 25.
- FIG. 14 shows an example of an algorithm of a program for inserting a read request which is a part of the device driver 25.
- FIG. 15 shows an example of an algorithm of the program of the device driver 2 shown in FIG. 5 shows an example of an algorithm of an output program which is a part of FIG.
- FIG. 16 shows an example of the library file system structure used in the algorithm of FIG. 4
- FIG. 17 shows an example of the library message structure used in the algorithm of FIG. Is shown.
- FIG. 18 shows the configuration of the system call table 62 of FIG.
- FIG. 19 shows an example of the structure of a message structure for a micro force kernel used by the micro kernel 27 of FIG. 1.
- FIG. 20 shows the structure of the micro kernel 27 of FIG. This is the structure of the port to which this message is connected.
- FIG. 21 shows the configuration of the trap vector table 65 of FIG.
- FIG. 22 shows the configuration of the process management table 291, which is included in the microphone opening kernel 27 shown in FIG.
- FIG. 23 shows an example of the configuration of the IZO request structure 2551 in the device driver 25 of FIG. BEST MODE FOR CARRYING OUT THE INVENTION
- FIG. 1 is an example of a real-time system provided by the present invention.
- 1 is a real-time system.
- 10 is a processor
- 101 is a register
- 102 is a computing unit.
- the processor is connected to 13 memories and 11 I-nodes via 12 buses.
- There is a program counter in the register of 101 and the processor reads the instruction from the address in the memory indicated by the program counter, and executes the instruction in the arithmetic unit of 102.
- the data required for the operation is taken from the 101 register and the 13 memory.
- the result of the operation is also stored in a register or memory.
- Various programs and data are stored in the memory 13. They can be broadly divided into four parts. The first is 21 to 22 user programs.
- the second is a few system call shared libraries. This is a library of functions that the user program calls when requesting processing from the system.
- the third is a 27 microphone mouth kernel. This is the operating system program and its data that are executed in system mode.
- server programs there are 24 to 26 server programs. These are part of the operating system processing, but are not required to be executed in the system mode, and are executed in the user mode.
- the user programs of 2 1 the user programs of 2 1 1 and 2 1 2 Data and the stack used by 2 13 user programs.
- the system call shared library of 23 has various system call call functions 231-234.
- 2 7 1 and 2 7 2 are an in-kernel message sending program and an in-kernel message receiving program, respectively. Using these programs, user programs and server programs send messages to each other.
- Reference numerals 282 to 282 denote queues for incoming messages called ports.
- 341 to 346 are message structures for managing messages.
- 291-1 to 2995 are process management tables for managing processes.
- a process is a unit of execution in an operating system that performs multiple processes in a time-sharing manner. In these process management tables, there is an area for saving the value of register 101 of processor 10 and the values of the registers in these tables can be loaded and restored in the processor registers.
- Reference numeral 31 denotes an execution queue, and the processes managed by the process management tables 292 to 294 in the queue are waiting to be executed by the port processor.
- 32 is a block queue, and the processes in this queue are waiting for something to happen, such as waiting for the end of 1 node. If the waiting event occurs, the process is moved to the 31 execution queue.
- the process managed by the process management table of 291 is currently running. Each process management table has an area for storing the priority. In the 291 process management table, 291 1 is the priority.
- 291 1 is the priority.
- 273 is a trap processing program that is called when a program executes a trap instruction.
- 33 3 is a trap vector table that indicates the destination to which a trap instruction is to be executed when executed.
- FIG. 1 the operation when a process executing a user program executes a system call will be described. It is assumed that the process is executing the user program code of 211 and executes a system call for writing to I0 in this process.
- the program of 211 first calls a subroutine of the writte program of 23.1 which requests a write to I / O from the system shared library of 23.
- the writte program 2321 calls the subroutine 232 message transmission program that performs the process of transmitting the message.
- the message sending program shifts to the system mode by executing the trap instruction, and shifts the processing to the in-kernel message sending program 271, in the microkernel.
- the in-kernel message communication program 27 1 allocates a message structure 34 1. This structure has a place to store the priority, and writes the priority in the process management table 291 of the running process to it.
- the message structure is inserted into the queue of port 281, but at this time, the queue is inserted so that the order of the queue is arranged in the priority order of the message structure.
- the process management table of 29 1 The processing of WRITE of the managed process is the end, the program returns in order from 271, 2332, 231, the user program code of 211 ends, and the process ends. .
- the scheduling program 274 is executed to determine the next process to be executed.
- the process of executing the server program should have a higher priority set in advance.
- the process of executing the server program is executed next.
- the process management table of this process is 292, and this table is removed from the execution queue 31 and is positioned as a running process.
- This process executes the file server parent program 24 1 in the file server 24.
- This program calls the message receiving program 2 4 4 1 as a subroutine.
- the message receiving program 2441 calls the in-kernel message receiving program 272 in the microkernel 27 by a trap instruction.
- the program of 272 takes in the message from the beginning of the port of 281.
- the priorities in the process management table of the process executing the priorities in the message structure 34 1 are copied to the area.
- the server program is executed with the same priority as the process of the user program that requested the processing.
- the file server program requests the device driver 26 program for processing by message communication. The operation of this part will be described later.
- FIG. 2 is an example of the register 101 of the processor in FIG.
- 101 is the entire register
- 1101 is the program counter that points to the address of the location in the program that is being executed
- 11012, 1011, 21 1 0 1 2 1 2, 1 0 1 2 1 3, 1 0 1 2 1 4 1 0 1 2 1 5 are general-purpose registers.
- FIG. 3 shows an example of the algorithm of the user program 211 in FIG. Since this program is written by the user, any program can be used.
- a program that requests the operating system to write to a file will be described as an example.
- the data to be written is prepared in 4 11, and the function to request the writing is called in 4 12.
- the first argument of the write function in 4 1 and 2 is an identifier indicating the file to be written
- the second argument is the address of the buffer containing the data to be written.
- FIG. 4 shows an example of an algorithm of a wri te program 2 31 which is one of the system call shared libraries 23 of FIG. Calling the write function at 4 1 2 in Figure 3 will execute this function.
- the command member of the file system structure contains an instruction of WRITE to indicate writing.
- the file identifier and buffer address passed in the argument are put in the file identifier member and buffer member in the file system structure.
- a file structure is included in the data member of the message structure.
- a function is called to request the microkernel to send a message.
- the first argument of the function is the port identifier of the message destination
- the second argument is the address of the message structure
- the third argument indicates whether the message inherits the priority of the process.
- the third argument is 1, so the message's own priority is inherited by the message.
- Fig. 5 shows the message transmission protocol of 2 32 and 2 4 3 1 to 2 4 3 2 in Fig. 1.
- 4 shows an example of a program algorithm. Since the main processing of message transmission is performed by the microkernel shown in Fig. 27, this function shifts the processing to the remote microphone kernel by a trap instruction.
- 3 is loaded into the register of GR0. This is an identifier that indicates what processing is requested when requesting processing from the microkernel. A value of 3 indicates that the request for message transmission (k-msg-send), which is the third in the system call table 62 in FIGS. 1 and 18, is being made.
- the trap instruction is executed and the processing is transferred to the kernel.
- Operand 2 of the trap instruction instructs to jump to the second address of the trap vector table in FIGS. 1 and 19 after executing the trap instruction.
- the second in the trap vector table in FIG. 19 is the address of the syscal l function, which jumps to the trap handler (syscal l) in FIG. 1 and FIG.
- FIG. 6 shows an example of the trap handler algorithm of 273 which is a part of the microkernel 27 of FIG. This function is called when the user program and the server program issue a trap instruction.
- the system call table shown in Fig. 18 is searched according to the value of register GR0. Before a trap instruction is executed by a user program or the like to request processing from the microkernel, a number indicating what processing is requested is entered in GR0. This value is used for the search.
- the arguments on the user stack are copied to the kernel stack. When the user program calls a function to request processing from the microkernel, its argument is pushed onto the user stack 21 of the user program 21 in FIG.
- the function obtained by searching the system call table is called.
- the trap instruction is executed in the example shown in FIG. 10
- the function call of 4 4 3 since the function call of 4 4 3 may have caused a change in the priority of the executable process, re-scheduling was performed and the process with the highest priority at that time was executed. Switch.
- FIG. 7 shows an example of an algorithm of the send_msg processing in the microphone kernel 271, which is a part of the microkernel 27 in FIG.
- the 451 allocates a message structure used to manage messages in the kernel.
- the address of the data contained in the message structure passed as an argument is relocated to the newly allocated message structure.
- the value of the third argument indicating whether to inherit the priority of the own process to the message is checked. If this value is 0 and it is not inherited, the message structure kmsg is inserted at the end of the queue of the port specified by the first argument (281, etc. in Fig. 1), and this function ends. If the value of the third argument i nh is 1 and the priority is to be inherited, go to 4 54.
- Steps 456 to 549 are processing for inserting the message structure kmsg into an appropriate place so that the queues of the ports are in priority order.
- the message structure in the port queue is searched from the beginning.
- the priority of the retrieved message structure m is It determines whether the message structure to be inserted is smaller than that of kmsg or whether there is no more message. If not, retrieve the next message structure at 458.
- steps 460 to 462 when a process for receiving a message is registered in a port, the priority of the process is changed by the arrival of the message. At 460, it checks to see if kmsg has been inserted at the beginning of the queue. If it is not the head, the process ends because there is no need to change the priority of the receiving process. In the first case, go to 4 6 1. In 461, it is checked whether the receiving process is registered in the port. If not registered, the process ends. If registered, the process proceeds to 462. In 462, the priority of the process registered as the receiving process is changed to kmsg priority.
- FIG. 8 shows an example of an algorithm of a file server parent program 241, which is a part of the file server 24 of FIG.
- This program mainly accepts a request message from a user program. The actual process creates a new process and causes it to be performed.
- the priority of the own process is set as high as 180. Since the file server parent program terminates its processing immediately, it does not register itself as a receiving process on the port, but sets itself to a higher priority, so that the own process is immediately scheduled when the message arrives. I'm trying to be Euling.
- a function that requests the microkernel to receive a message is called. This function is 244 1 in FIGS. 1 and 10.
- the first argument of this function is the port identifier for receiving the message
- the second argument is the received message
- the third argument is whether the process inherits the priority added to the message by receiving the message.
- Represents The fourth argument returns the priority of the received message.
- the third argument is 1, receiving the message changes the priority of the own process.
- a child process is generated, and the file server child program 2442 in FIGS. 1 and 9 is executed using the received message as an argument.
- the priority of the parent process is inherited by the created child process.
- the parent process that created the child process returns to the beginning of processing and receives the next message.
- FIG. 9 shows an example of an algorithm of a file server child program 24, which is a part of the file server 24 of FIG.
- This program processes requests from the user program to the file server.
- the file identifier is extracted from the content of the message received as an argument.
- the device to access, the block number, and the offset in the block are calculated from the file identifier.
- various information obtained in 482 is put in a structure to send a message to the driver of the target device. 4 8 4 sends a message to the device driver.
- send_msg call 2431 in FIG. 1 is executed, but the contents are the same as 2332 in FIG. 1, and the algorithm was also explained in FIG.
- Fig. 10 shows an example of the algorithm of a function that requests the microphone mouth kernel to receive the messages of 2 3 3 and 2 4 4 1 to 2 4 4 2 in Fig. 1 ⁇ 4 91 and assigns 4 to GR0. Except for this, it is the same as the function for requesting message transmission in Fig. 5.
- k—rcv_nisg is retrieved from the system call table in FIG. 18 at 4 41 in FIG.
- FIG. 11 shows an example of an algorithm of rev msg processing in the microkernel 27 2 which is a part of the microkernel 27 in FIG. Seki
- the first argument is the port to receive the message
- the second argument is the address to which the received message is returned
- the third argument is a flag indicating whether the process inherits the priority of the message
- the fourth argument is The priority attached to the message is returned.
- it checks if the port is empty. If it is empty, it blocks at 508 until the message arrives. When a process blocks, it connects its process management table to the block queue 32 in FIG. 1 and switches to another process. If it is not empty at 501, the message structure at the beginning of the port is retrieved at 502. This is kmsg.
- the data held by kmsg is inserted into the data of the message structure of the second argument.
- a flag is checked to determine whether the message priority is inherited as the priority of the own process. If not, the process ends.
- the process management table of the running process is checked at 505, and the priority of the message is assigned to a member of the priority of the process management table at 506.
- processing is performed to return the priority to the fourth argument.
- FIG. 12 shows an example of an algorithm of the device driver server reception program 251, which is a part of the device driver 25 in FIG. 1.
- the process executing this program is shown in 511. Is registered in the dev_port port as a receiving process. The registration is performed by writing the identifier of the own process in the area of the port structure 642 in FIG. With this registration, the priority of the receiving process is set to the same as that of the message when the message is sent, without waiting for the message to be received as described in 4 62 in Fig. 7. It is possible to In 5 12 we read a function that asks the microkernel to receive a message. The algorithm for this function has already been described in FIG.
- I ⁇ seeks the end of the request queue.
- FIG. 13 shows an example of an algorithm of a program for inserting a write request which is a part of the device driver 25 of FIG. However, this program is omitted in Fig. 1.
- This program searches the I / O request queue from the back and inserts the request to be inserted at an appropriate place according to its priority. However, if a request to access the same block as the request to be inserted is in the queue during the search process, the priority of the request is set to the same as the priority of the request to be inserted, and Rearrange the. This is because if the order of access to the same block is changed, the result will be inconsistent.
- This function takes two arguments, the first is the request to insert, and the second is where to start the search.
- the second argument is initially given the address of the last request in the queue.
- it is checked whether the search point is at the head of the queue. If so, insert the request at the beginning of the queue at 529 and end. If not, the priority of the request for the search point is compared with the priority of the request to be inserted in 522. If the search request has a higher priority, the request is inserted at 529 after the search request. If not, it checks in step 523 whether the request for the search point and the request to insert are accesses to the same block. If the access is not for the same block, the search point is returned to the previous request at 524 and the process returns to the beginning. If the blocks were the same, 5 2 5 —First, the request for the search point is also removed from the queue.
- the priority of the removed request is the same as the priority of the request to be inserted.
- the previous request was PPed.
- my function is called recursively to re-insert the removed request into the queue.
- the request that was originally inserted in step 529 is inserted after the request that was once removed and reinserted.
- FIG. 14 shows an example of an algorithm of a program for inserting a read request which is a part of the device driver 25 of FIG. However, this program is omitted in Fig. 1.
- the algorithm of this program is almost the same as the algorithm of the program for inserting a write request in Fig. 13. However, the order of read requests can be changed even for accesses to the same block.Therefore, in step 533, the block numbers are compared and the fact that the search point request is a write request is checked. The point that I am investigating is different.
- FIG. 15 shows an example of an algorithm of an output program 252 which is a part of the depth driver 25 of FIG.
- This program retrieves requests in order from the beginning of the request queue, I Z ⁇ , and issues requests to I 0.
- I 0 request queue is empty. If it is empty, block at 5 4 2 until a request comes. Otherwise, the first request is retrieved at 543, and the data and command registers of IZ ⁇ are written at 544 and 545 according to the request. In 5 4 6, it blocks from the requested I / ⁇ to the end interrupt.
- FIG. 16 shows an example of a library file system structure used in the algorithm of FIG. 6 0 is the whole structure
- 6 0 1 Is the member that contains the command
- 602 is the member that contains the file identifier
- 603 is the member that contains the address of the buffer that contains the data to be written.
- FIG. 17 is an example of a message structure for a library used in the algorithm of FIG.
- the structure 61 has an area 611 for storing data to be transmitted as a message.
- FIG. 18 shows the configuration of the system call table 62 of FIG.
- This system call table is used in the algorithm of FIG. 6 2 is the whole table, and 6 2 1 to 624 are the addresses of the functions. These functions are searched according to the value of register GR0 at 4441 in Fig. 6 and jumped to there at 4443.
- 6 2 1 1 to 6 2 4 1 is the number of arguments that require 6 2 1 to 6 2 4 respectively. Using this number, copy the argument in 4 4 2 in Figure 6.
- FIG. 19 is an example of the configuration of the message structure 341-1 to 3446 used by the microchannel 27 of FIG. 6 3 is the whole structure
- 6 3 1 is the member that contains the address of the data to be sent
- 6 3 2 is the member that contains the priority of the message
- 6 3 3 and 6 3 4 are the Forward and backward links to connect the structure to the port queue.
- FIG. 20 shows a structure of ports 281-282 to which messages in the microkernel 27 of FIG. 1 are connected.
- Reference numeral 64 denotes an entire port structure
- 641 denotes a pointer for connecting a message
- 642 denotes an area for storing a process identifier for registering a process to be received.
- FIG. 21 shows the configuration of the trap vector table 65 of FIG. This trap vector table determines to which address to jump to when the trap instruction is executed at 43 in FIG. Second area 652 contains the trap handler syscal l address shown in Fig. 6, and when the instruction of trap 2 is executed, it jumps to that address.
- FIG. 22 shows the configuration of the process management table 291 in the microphone opening kernel 27 of FIG.
- the structure of the process management tables 292-295 is the same as this.
- 661 is a member that stores the priority of the process
- 662 is a member that saves the value of the program counter among the registers of the process
- 663 and 63634 are members that save the general-purpose registers
- 6635 and 6635 6 6 3 6 are backward and forward links for connecting the process management table to the execution queue and the block queue.
- FIG. 23 shows an example of the configuration of the I / O request structure 2551 in the device driver 25 of FIG. 6 7 1 is the priority, 6 7 2 is the block number to perform 1 ⁇ , 6 7 3 is the offset within the block, 6 74 and 6 7 5 are the links for connecting to the 1 0 request queue. is there. Industrial applicability
- the operating system in which a part of the function of the operating system is realized as a server process using the microkernel according to the present invention is suitable for use in a computer system that requires real-time processing. I have. Furthermore, it is suitable for controlling controllers that require high real-time performance.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
An operating system in which real time processing is achieved using a microkernel to perform some of system functions as processes. Although device drivers, file systems, network processings, etc., are included in a kernel program in the prior art, a server program (251) treats them as ordinary processes. This server program is registered to a port (281) as a queue of messages. When the process of a user program (211) transmits the message, priority of the process registered to the port is set to that of the process transmitted.
Description
明 細 書 Specification
オペレーティ ングシステム 技術分野 Operating System Technical Field
この発明は、 マイク口カーネル技術を用いてオペレーティ ングシステ ムの機能の一部をサーバプロセスとして実現しているシステムにおいて、 リアルタイム処理を行うのに適したオペレーティ ングシステムに関する 背景技術 The present invention relates to an operating system suitable for performing real-time processing in a system in which a part of the function of the operating system is realized as a server process using a microphone-kernel technology.
従来の〇 Sは、 メモリ管理, プロセス管理, デバイスドライバ, ファ ィルシステム管理, 通信処理などの全ての処理をシステムモ一 ドで実行 されるカーネルプログラムの中に包含しているため、 その大きさが非常 に大きくなつていた。 このことは、 カーネルプログラムのデバッグや保 守の点から大きな問題となっていた。 また、 カーネルプログラムの内部 は、 ク リティカルセクションと呼ばれるプロセスの切リ替が不可能な部 分が多い。 低い優先度のプロセスが、 この部分を実行していると、 高い 優先度のプロセスが発生しても、 実行することができない。 従って、 力 Since the conventional さ が S includes all processes such as memory management, process management, device driver, file system management, and communication processing in the kernel program executed in the system mode, its size is large. It was getting very big. This has been a major problem in terms of debugging and maintaining kernel programs. In addition, inside the kernel program, there are many parts called critical sections that cannot be switched. If a low-priority process is executing this part, it cannot run even if a high-priority process occurs. Therefore, force
—ネルプログラムが大きい〇 Sは、 どうしてもリアルタイム性能が下が つてしまう。 —The channel program is large. S will inevitably reduce real-time performance.
そこで、 近年、 プロセス管理, プロセス間通信, 例外処理のみをカー ネルプログラムに残し、 従来、 カーネルプログラム内にあったデバイス ドライバ, ファイルシステム, ネッ トワーク処理などを通常のプロセス で実現するという技術が注目されている。 この O Sをマイクロ力一ネル 〇 s、 残った小さいカーネルをマイクロカーネル、 外部に出た機能を実 現するプロセスをサーバプロセスと呼ぶ。 また、 従来の全ての機能が力
—ネルプログラムの内部に入っていた〇 Sを一枚岩 0 Sと呼ぶ。 マイク 口カーネル〇 sでは、 サーバプロセスで実現されている機能は、 ユーザ のプロセスと同じ手法によりデバッグなどが可能なため、 〇 Sの開発効 率を向上することができる。 また、 力一ネル自体が小さくなつているた め、 クリティカルセクションも小さく、 リアルタイムの応答性が向上す る。 マイクロカーネル〇 Sに関しては、 「分散オペレーティ ングシステ ム J 前川 守他著共立出版株式会社版の P 2 0〜 P 2 4で述べられてい る。 また、 このマイクロカーネル〇 Sをリアルタイム処理用に改造した ものにつレヽては" Real— Time Mach: Towards a Predi ctab le Real—Time System"by H. Tokuda, T. Nakaj ima, and P. Rao, from Proc. Usenix Mach Workshop, October 1990, pp. 1一 1 ( こ述べられてレゝる。 In recent years, attention has been focused on technologies that leave only process management, inter-process communication, and exception processing in kernel programs, and implement device drivers, file systems, network processing, and other processing that were previously in kernel programs using ordinary processes. Have been. This OS is called the micro kernel ss, the remaining small kernel is called the micro kernel, and the process that implements the external functions is called the server process. Also, all conventional functions are powerful —The S inside the flannel program is called monolith 0 S. With the microphone mouth kernel 〇s, the functions realized in the server process can be debugged by the same method as the user's process, so that the development efficiency of 〇S can be improved. In addition, because the force channel itself has become smaller, the critical section is also smaller, improving real-time responsiveness. The microkernel II S is described in “Distributed Operating System J Mamoru Maekawa et al., Kyoritsu Shuppan Co., Ltd.'s P20-P24. This microkernel II S was modified for real-time processing. For details, see "Real—Time Mach: Towards a Predicate table Real—Time System" by H. Tokuda, T. Nakajima, and P. Rao, from Proc. Usenix Mach Workshop, October 1990, pp. 1 One 1 (This is a statement.
一枚岩 O Sにおいて、 ユーザプロセスが、 〇 Sの機能を使用したいと きには、 その機能を提供するシステムコールを発行していた。 一方、 マ ィクロカーネルの〇 Sでは、 ほとんどの機能がサーバプロセスで実現さ れているため、 システムコールとしては、 プロセスの生成とプロセス間 通信程度の限られた機能しか提供されていない。 そこで、 ユーザプロセ スは、 その他の機能を使用するときには、 プロセス間通信のシステムコ ールを用いて、 サーバプロセスにその機能の提供を要求するメッセージ を送信する。 サーバプロセスは、 要求された処理を行い、 結果が必要な 場合には再びプロセス間通信を用いてユーザプロセスに結果が返す。 従来、 オペレーティ ングシステム (以下 O Sと略す) では、 実行の単 位であるプロセスに優先度を付けることが行われてきた。 これは、 重要 であり緊急に処理の実行が重要でない処理の実行によって疎外されない ようにである。 特に、 外部の出来事に対して、 一定の時間制限内に結果 を返さなければならないリアルタイムシステムでは、 この優先度制御が
重要な役割を果たしている。 マイクロカーネル〇 Sに於ても、 ユーザの プロセス, サーバプロセスともに優先度を設定可能である。 In a monolithic OS, when a user process wants to use the 〇S function, it issued a system call that provides that function. On the other hand, in 機能 S of the microkernel, most of the functions are realized in the server process, so only limited functions such as process creation and inter-process communication are provided as system calls. Therefore, when using the other functions, the user process sends a message requesting the server process to provide the functions using the system call of inter-process communication. The server process performs the requested processing, and if necessary, returns the result to the user process again using inter-process communication. In the past, operating systems (hereinafter abbreviated as OS) have been giving priorities to processes that are the unit of execution. This is to ensure that the execution of important and urgent operations is not alienated by the execution of insignificant operations. In particular, in a real-time system that must return results within a certain time limit for external events, this priority control Plays an important role. In the microkernel II S, the priority can be set for both the user process and the server process.
しかし、 一枚岩 O Sの問題点は、 既に述べたが、 カーネル内処理のリ アルタイム性能が得にくい点と、 デバッグや保守が困難な点である。 マ イク口カーネル〇 sでは、 これらの問題点を解決している。 しかし、 従 来のマイクロカーネル O Sでは、 メッセージ通信及びサーバプロセスの 部分が十分リアルタイム化されていなかった。 However, the problems of monolithic OS, as described above, are that it is difficult to obtain real-time performance of in-kernel processing, and that debugging and maintenance are difficult. The MicroKernel 〇s solves these problems. However, in the conventional microkernel OS, the parts of the message communication and the server process were not sufficiently realized in real time.
また、 マイクロカーネル〇 Sでは、 ユーザプロセスがシステムに処理 を要求する時には、 カーネルがサボ一 卜するメッセージ通信によって、 サーバプロセスに要求を通信する。 従来のマイクロカーネルでは、 カー ネル内のメッセージ通信の機構がリアルタィム化されていないため、 優 先度の高いユーザプロセスが送信した要求が、 メッセージの待ち行列に 於て、 優先度の低いユーザプロセスの要求の後に繁がれることがあった 従って、 本発明は、 ユーザプロセスがサーバプロセスに要求を出すメ ッセージ通信を、 自動的に優先度制御することを目的とする。 In addition, in the microkernel S, when a user process requests processing from the system, the request is communicated to the server process by message communication performed by the kernel. In the conventional microkernel, since the message communication mechanism in the kernel is not real-time, a request sent by a high-priority user process is sent to a message queue by a low-priority user process. Accordingly, an object of the present invention is to automatically control the priority of message communication in which a user process issues a request to a server process.
また、 従来のマイクロカーネル〇 Sでも、 サーバプロセスに優先度を 負荷することが可能であつたが、 この優先度は、 ユーザプロセスからの 要求によって変化せず、 固定的なものであった。 そのため、 低い優先度 のユーザプロセスからの要求と高い優先度のユーザプロセスからの要求 が同じ優先度のサーバプロセスによって、 処理される問題があった。 更に、 本発明は、 サーバプロセスの優先度をユーザプロセスからの要 求の優先度によって、 自動的に変化させる手段を提供することを目的と する。 Also, with the conventional microkernel 〇S, it is possible to load a priority on the server process, but this priority is fixed without being changed by a request from the user process. Therefore, there is a problem that a request from a low-priority user process and a request from a high-priority user process are processed by a server process of the same priority. Another object of the present invention is to provide means for automatically changing the priority of a server process according to the priority of a request from a user process.
また、 サーバプロセスが、 デバイス ドライバであった場合、 サーバプ ロセス内でデバイスへの要求が待ち行列を形成することがある。 この待
ち行列についても、 従来の〇 Sでは優先度が考慮されていなかったので、 高い優先度の要求が待たされることがあった。 If the server process is a device driver, requests for devices in the server process may form a queue. This wait As for the matrix, since priorities were not taken into account in the conventional 、 S, a request with a high priority was sometimes waited.
そこで、 本発明は、 デバイス ドライバであるところのサーバプロセス が有する I Z O要求待ち行列に関しても優先度制御を行う手段を提供す ることを目的とする。 発明の開示 Therefore, an object of the present invention is to provide means for controlling the priority of an IZO request queue of a server process which is a device driver. Disclosure of the invention
ユーザプロセスからサーバプロセスへのメッセージ通信を自動的に優 先度制御するために、 マイクロカーネルが、 メッセージを送信したユー ザプロセスの優先度をメッセージにも付加する。 メッセージをメッセ一 ジ待ち行列に入れる必要がある場合には、 マイクロ力一ネルが付いてい る優先度の順にメッセージを並べる。 To automatically control the priority of message communication from the user process to the server process, the microkernel adds the priority of the user process that sent the message to the message. If messages need to be enqueued in the message queue, arrange the messages in priority order with the microchannel.
また、 サーバプロセスの優先度をユーザプロセスからの要求の優先度 によって、 自動的に変化させるために、 サーバプロセスが、 要求のメッ セージを受信した時には、 メッセージに付加されている優先度を継承す るようにした。 Also, in order to automatically change the priority of the server process according to the priority of the request from the user process, when the server process receives the request message, it inherits the priority added to the message. It was to so.
また、 デバイス ドライバであるところのサーバプロセスが有する I 0要求待ち行列に関して優先度制御を行うために、 要求のメッセージに 付加されていた優先度に従い I Z O要求待ち行列を並べ換えるようにし た。 In order to control the priority of the I0 request queue of the server process, which is a device driver, the IZO request queue is rearranged according to the priority added to the request message.
ユーザプロセスは、 トラップ命令を実行することにより、 マイクロ力 一ネルの機能を使用可能である。 マイクロカーネルのメッセージ通信の 機能も トラップ命令の実行により起動される。 マイクロカーネルは、 メ ッセージ通信を依頼されると、 依頼したプロセスの優先度をプロセス管 理テーブルから調べ、 メッセージ管理テーブルに書き込んだ後、 メッセ
—ジ管理テーブルをメッセージ待ち行列に挿入する。 この時、 待ち行列 の並び順が優先度の降順になるように挿入する。 サーバプロセスは、 メ ッセージ待ち行列から、 メッセージを取り出すときにも、 卜ラップ命令 により、 マイクロカーネルに依頼する。 この時、 マイクロカーネルは、 メッセージ待ち行列から先頭のメッセージ管理テーブルを取り出し、 サ ーバプロセスに渡す一方、 メッセージに付加されている優先度を、 サー バプロセスのプロセス管理テーブルに書き込む。 サーバプロセスがメッ セージを受け取るとき、 同時に、 メッセージに付加されていた優先度の 情報も読み出される。 サーバプロセスがデバイス ドライバだった場合に は、 この優先度の情報を用いて、 I Z〇待ち行列の制御を行う。 図面の簡単な説明 The user process can use the functions of the micropower cell by executing the trap instruction. The message communication function of the microkernel is also started by executing the trap instruction. When the microkernel is requested to send a message, the microkernel checks the priority of the requested process from the process management table, writes it to the message management table, and then writes the message. —Insert the management table into the message queue. At this time, the queues are inserted so that the order of the queues is in descending order of priority. The server process also requests the microkernel by using a trap command to retrieve a message from the message queue. At this time, the microkernel takes out the top message management table from the message queue and passes it to the server process, while writing the priority added to the message into the server process's process management table. When the server process receives the message, it also reads the priority information attached to the message. If the server process is a device driver, this priority information is used to control the IZ〇 queue. BRIEF DESCRIPTION OF THE FIGURES
第 1 図は、 本発明が提供するリアルタイムシステムの一例である。 第 2図は、 第 1 図中のプロセッサのレジスタ 1 0 1 の一例である。 第 3図は、 第 1 図におけるユーザプロセスのアルゴリズムの一例を表 わし、 第 4図は、 第 1 図におけるシステムコール共有ライブラリ 2 3の 一つである wri te プログラムのアルゴリズムの一例を表わしている。 ま た第 5図は、 第 1 図におけるメッセージ送信プログラム send_msgのアル ゴリズムの一例を表わしている。 FIG. 1 is an example of a real-time system provided by the present invention. FIG. 2 is an example of the register 101 of the processor in FIG. FIG. 3 shows an example of the algorithm of the user process in FIG. 1, and FIG. 4 shows an example of the algorithm of the write program which is one of the system call shared libraries 23 in FIG. . FIG. 5 shows an example of the algorithm of the message transmission program send_msg in FIG.
第 6図は、 第 1 図におけるマイクロカーネル 2 7の一部である 卜ラッ プハン ドラのアルゴリズムの一例を表わし、 第 7図は、 第 1 図における マイクロカーネル 2 7の一部であるマイクロカーネル内 send_msg処理の アルゴリズムの一例を表わしている。 FIG. 6 shows an example of the trap handler algorithm which is a part of the microkernel 27 in FIG. 1, and FIG. 7 shows the inside of the microkernel which is a part of the microkernel 27 in FIG. An example of the algorithm for send_msg processing is shown.
第 8図は、 第 1 図のファイルサーバ 2 4の一部であるファイルサーバ 親プログラムのアルゴリズムの一例を表わし、 第 9図は、 第 1 図のファ
ィルサーバ 2 4の一部であるファィルサーバ子プログラムのアルゴリズ ムの一例を表わしている。 FIG. 8 shows an example of an algorithm of a file server parent program which is a part of the file server 24 of FIG. 1, and FIG. 9 shows a file of FIG. An example of the algorithm of the file server child program which is a part of the file server 24 is shown.
第 1 0図は、 第 1 図のメッセージ受信をマイク口カーネルに依頼する rcv_msg関数のァルゴリズムの一例となっている。 FIG. 10 shows an example of an algorithm of the rcv_msg function for requesting the microphone port kernel to receive the message shown in FIG.
第 1 1 図は、 第 1 図のマイクロカーネル 2 7の一部であるマイクロ力 一ネル内 rev— msg処理のアルゴリズムの一例を表わしている。 FIG. 11 shows an example of an algorithm for rev-msg processing in a micro force unit which is a part of the microkernel 27 of FIG.
第 1 2図は、 第 1 図のデバィスドライバ 2 5の一部であるデバィス ド ライバサーバ受付プログラムのアルゴリズムの一例を示し、 第 1 3図は, デバイス ドライバ 2 5の一部である書き込み要求の挿入のプログラムの アルゴリズムの一例を示し、 第 1 4図は、 デバイス ドライバ 2 5の一部 である読み込み要求の挿入のプログラムのアルゴリズムの一例を示し、 第 1 5図は、 第 1 図のデバイスドライバ 2 5の一部である出力プログラ ムのアルゴリズムの一例を示している。 FIG. 12 shows an example of an algorithm of a device driver server acceptance program which is a part of the device driver 25 of FIG. 1, and FIG. 13 shows an insertion of a write request which is a part of the device driver 25. FIG. 14 shows an example of an algorithm of a program for inserting a read request which is a part of the device driver 25. FIG. 15 shows an example of an algorithm of the program of the device driver 2 shown in FIG. 5 shows an example of an algorithm of an output program which is a part of FIG.
第 1 6図は、 第 4図のアルゴリズムで使用されたライブラリ用フアイ ルシステム構造体の一例を示し、 第 1 7図は、 第 4図のアルゴリズムで 使用されたライブラリ用メッセージ構造体の一例を示している。 FIG. 16 shows an example of the library file system structure used in the algorithm of FIG. 4, and FIG. 17 shows an example of the library message structure used in the algorithm of FIG. Is shown.
第 1 8図は、 第 1 図のシステムコールテーブル 6 2の構成を示したも のである。 FIG. 18 shows the configuration of the system call table 62 of FIG.
第 1 9図は、 第 1 図のマイクロカーネル 2 7が使用するマイクロ力一 ネル用メッセージ構造体の構成の一例であり、 第 2 0図は、 第 1 図のマ イク口カーネル 2 7の中のメッセージが接続されるポー 卜の構造体であ る。 FIG. 19 shows an example of the structure of a message structure for a micro force kernel used by the micro kernel 27 of FIG. 1. FIG. 20 shows the structure of the micro kernel 27 of FIG. This is the structure of the port to which this message is connected.
第 2 1 図は、 第 1 図の卜ラップべク トルテーブル 6 5の構成である。 第 2 2図は、 第 1 図のマイク口カーネル内 2 7のプロセス管理テープ ル 2 9 1 の構成である。
第 2 3図は、 第〗 図のデバィス ドライバ 2 5の中の I Z O要求構造体 2 5 5 1の構成の一例を示している。 発明を実施するための最良の形態 FIG. 21 shows the configuration of the trap vector table 65 of FIG. FIG. 22 shows the configuration of the process management table 291, which is included in the microphone opening kernel 27 shown in FIG. FIG. 23 shows an example of the configuration of the IZO request structure 2551 in the device driver 25 of FIG. BEST MODE FOR CARRYING OUT THE INVENTION
以下、 図に従い本発明をより詳細に説明する。 Hereinafter, the present invention will be described in more detail with reference to the drawings.
第 1 図は本発明が提供するリアルタイムシステムの一例である。 ここ で説明する実施の形態においては、 1 がリアルタイムシステムである。 1 0はプロセッサ、 1 0 1 はレジスタ、 1 0 2は演算器である。 プロセ ッサは、 1 2のバスを通して、 1 3のメモリと 1 1 の Iノ〇に繁がつて いる。 1 0 1 のレジスタの中には、 プログラムカウンタがあり、 プロセ ッサは、 プログラムカウンタの指すメモリ内のア ドレスより命令を読み 込み、 1 0 2の演算器でその命令を実行する。 演算に必要なデータは、 1 0 1 のレジスタや 1 3のメモリより取り込む。 演算の結果も、 同様に レジスタやメモリに格納される。 1 3のメモリの中には、 各種のプログ ラムやデータが格納されている。 それらは、 大きく分けて、 4つに分か れる。 1 つは、 2 1〜 2 2のユーザプログラムである。 これらは、 ユー ザが記述した任意のプログラムとデータである。 2つ目は 2 3のシステ ムコール共有ライブラリである。 これは、 ユーザプログラムがシステム に処理を依頼するときに呼び出す関数のライブラリである。 3つ目は、 2 7のマイク口カーネルである。 この部分はシステムモー ドで実行され るオペレーティ ングシステムのプログラムとそのデータである。 最後は, 2 4〜 2 6のサーバプログラムである。 これらは、 オペレーティ ングシ ステムの処理の一部であるが、 システムモー ドで実行する必要がない部 分であり、 ユーザモー ドで実行される。 2 1 のユーザプログラムの中に は、 2 1 1のユーザプログラムと、 2 1 2のユーザプログラムが使用す
るデータと、 2 1 3のユーザプログラムが使用するスタックがある。 FIG. 1 is an example of a real-time system provided by the present invention. In the embodiment described here, 1 is a real-time system. 10 is a processor, 101 is a register, and 102 is a computing unit. The processor is connected to 13 memories and 11 I-nodes via 12 buses. There is a program counter in the register of 101, and the processor reads the instruction from the address in the memory indicated by the program counter, and executes the instruction in the arithmetic unit of 102. The data required for the operation is taken from the 101 register and the 13 memory. The result of the operation is also stored in a register or memory. Various programs and data are stored in the memory 13. They can be broadly divided into four parts. The first is 21 to 22 user programs. These are arbitrary programs and data written by the user. The second is a few system call shared libraries. This is a library of functions that the user program calls when requesting processing from the system. The third is a 27 microphone mouth kernel. This is the operating system program and its data that are executed in system mode. Finally, there are 24 to 26 server programs. These are part of the operating system processing, but are not required to be executed in the system mode, and are executed in the user mode. Among the user programs of 2 1, the user programs of 2 1 1 and 2 1 2 Data and the stack used by 2 13 user programs.
2 3のシステムコール共有ライブラリには、 各種のシステムコール呼び 出しの関数 2 3 1〜2 3 4がある。 マイクロカーネル 2 7の中にある 2 7 1 と 2 7 2は、 それぞれ、 カーネル内メッセージ送信プログラムと カーネル内メッセージ受信プログラムである。 これらのプログラムを用 いて、 ユーザプログラムやサーバプログラムは、 互いにメッセージを送 リ合う。 2 8 1〜 2 8 2はポー 卜と呼ばれる送られたメッセ一ジが繫が る待ち行列である。 3 4 1〜 3 4 6は、 メッセージを管理するメッセ一 ジ構造体である。 2 9 1〜 2 9 5は、 プロセスを管理するプロセス管理 テーブルである。 プロセスとは、 時分割で複数の処理を行うオペレーテ ィ ングシステムにおける実行の単位のことである。 これらのプロセス管 理テーブルには、 プロセッサ 1 0のレジスタ 1 0 1 の値を退避する領域 があり、 これらのテーブルに入っているレジスタの値をプロセッサのレ ジスタにロー ドしたリストアしたりすることにより、 複数の処理を時分 割で実行可能となる。 3 1 は実行待ち行列であり、 行列に入っている 2 9 2から 2 9 4のプロセス管理テーブルが管理しているプロセスはプ 口セッサによって実行されるのを待っている状態にある。 3 2はブロッ ク待ち行列であり、 この行列に入っているプロセスは、 1ノ〇の終了待 ちなど、 なにがしかの出来事が発生するのを待っている状態にある。 待 つている出来事が発生したら、 そのプロセスは、 3 1の実行待ち行列に 移される。 2 9 1 のプロセス管理テーブルで管理されているプロセスは, 現在実行中である。 各プロセス管理テーブルには、 優先度を格納する領 域がある。 2 9 1のプロセス管理テーブルでは、 2 9 1 1 が優先度であ る。 スケジューリングが発生したときには、 実行中のプロセスと実行待 ち行列にあるプロセスの内、 優先度が最大のプロセスが実行される。
2 7 4がこれを行うスケジューリングプログラムである。 2 7 3は、 プ 口グラムが卜ラップ命令を実行した時に呼ばれる 卜ラップ処理プログラ ムである。 3 3は、 卜ラップ命令が実行された時に飛ぶ先を記したトラ ップベク トルテーブルである。 1 1 の 1 〇には、 1 1 1 のコマン ドレ ジスタと 1 1 2のデータ レジスタである。 データを外に出力するときに は、 1 1 2のデータ レジスタにデータを書き込んでおいてから、 1 1 1 のコマン ドレジスタに出力のコマン ドを書き込む。 次に第 1 図を用いて、 ユーザプログラムを実行していたプロセスが、 システムコールを実行し た時の動作を説明する。 プロセスは、 2 1 1 のユーザプログラムコー ド を実行しており、 この中で、 Iノ0に対して書き込みを行うシステムコ ールを実行したとする。 2 1 1 のプログラムは、 まず、 2 3のシステム 共有ライブラリの内、 I / Oへのライ 卜を要求する 2 3 1 の wri te プロ グラムをサブルーチン呼び出しする。 ユーザプログラムを実行している プロセスがサーバプログラムを実行しているプロセスに処理を依頼する には、 そのプロセスにメッセージを送信する。 そこで、 2 3 1 の wri te プログラムは、 メッセージを送信する処理をする 2 3 2のメッセージ送 信プログラムをサブルーチン呼び出しする。 メッセージ送信プログラム は、 トラップ命令を実行することにより、 システムモー ドに移行し、 処 理をマイクロカーネル内のカーネル内メッセージ送信プログラム 2 7 1 に移す。 カーネル内メッセージ通信プログラム 2 7 1 は、 メッセージ構 造体 3 4 1 をアロケー トする。 この構造体には優先度を格納する場所が あリ、 実行中のプロセスのプロセス管理テーブル 2 9 1 内の優先度をそ こに書き込む。 そして、 メッセージ構造体をポー 卜 2 8 1 の待ち行列に 挿入するが、 この時、 待ち行列の順番がメッセージ構造体の優先度の順 番に並ぶように挿入する。 これで、 2 9 1 のプロセス管理テーブルで管
理されているプロセスの WRITEの処理は、 終りであり、 2 7 1, 2 3 2 , 2 3 1 のプログラムから順にリターンし、 2 1 1 のユーザプログラムコ ー ドも終了し、 プロセスも終了する。 この時点で、 スケジューリングプ ログラム 2 7 4が実行され、 次に実行されるプロセスが決定される。 サ ーバプログラムを実行するプロセスは、 優先度を予め高めに設定してお く。 そこで、 次にサーバプログラムを実行するプロセスが実行される。 このプロセスのプロセス管理テーブルは 2 9 2であり、 このテーブルは、 実行待ち行列 3 1 からはずされ、 実行中のプロセスとして位置付けられ る。 このプロセスは、 ファイルサーバ 2 4内のファイルサーバ親プログ ラム 2 4 1 を実行する。 このプログラムは、 メッセージ受信プログラム 2 4 4 1 をサブルーチン呼び出しする。 メッセージ受信プログラム 2441 は、 卜ラップ命令により、 マイクロカーネル 2 7内のカーネル内メッセ ージ受信プログラム 2 7 2 を呼び出す。 2 7 2のプログラムは、 2 8 1 のポー 卜の先頭より、 メッセージを取り込む。 この時、 メッセージ構造 体 3 4 1 内にある優先度を実行中のプロセスのプロセス管理テーブルの 優先度を領域にコピーする。 これにより、 サーバプログラムが処理を依 頼したユーザプログラムのプロセスと同じ優先度で実行される。 同様に、 ファイルサーバのプログラムは、 メッセージ通信によって、 デバイスド ライバ 2 6のプログラムに処理を依頼するが、 この部分の動きは、 後で 説明する。 The system call shared library of 23 has various system call call functions 231-234. In the microkernel 27, 2 7 1 and 2 7 2 are an in-kernel message sending program and an in-kernel message receiving program, respectively. Using these programs, user programs and server programs send messages to each other. Reference numerals 282 to 282 denote queues for incoming messages called ports. 341 to 346 are message structures for managing messages. 291-1 to 2995 are process management tables for managing processes. A process is a unit of execution in an operating system that performs multiple processes in a time-sharing manner. In these process management tables, there is an area for saving the value of register 101 of processor 10 and the values of the registers in these tables can be loaded and restored in the processor registers. Thus, multiple processes can be executed in a time-sharing manner. Reference numeral 31 denotes an execution queue, and the processes managed by the process management tables 292 to 294 in the queue are waiting to be executed by the port processor. 32 is a block queue, and the processes in this queue are waiting for something to happen, such as waiting for the end of 1 node. If the waiting event occurs, the process is moved to the 31 execution queue. The process managed by the process management table of 291 is currently running. Each process management table has an area for storing the priority. In the 291 process management table, 291 1 is the priority. When scheduling occurs, the process with the highest priority among the running process and the process in the execution queue is executed. 274 is the scheduling program that does this. 273 is a trap processing program that is called when a program executes a trap instruction. 33 3 is a trap vector table that indicates the destination to which a trap instruction is to be executed when executed. The 1 11 11 11 11 マ ン 1 command register and the 1 12 デ ー タ data register. To output data to the outside, write the data to the 112 data register, and then write the output command to the 111 command register. Next, with reference to FIG. 1, the operation when a process executing a user program executes a system call will be described. It is assumed that the process is executing the user program code of 211 and executes a system call for writing to I0 in this process. The program of 211 first calls a subroutine of the writte program of 23.1 which requests a write to I / O from the system shared library of 23. When a process executing a user program requests processing from a process executing a server program, send a message to that process. Therefore, the writte program 2321 calls the subroutine 232 message transmission program that performs the process of transmitting the message. The message sending program shifts to the system mode by executing the trap instruction, and shifts the processing to the in-kernel message sending program 271, in the microkernel. The in-kernel message communication program 27 1 allocates a message structure 34 1. This structure has a place to store the priority, and writes the priority in the process management table 291 of the running process to it. Then, the message structure is inserted into the queue of port 281, but at this time, the queue is inserted so that the order of the queue is arranged in the priority order of the message structure. Now, the process management table of 29 1 The processing of WRITE of the managed process is the end, the program returns in order from 271, 2332, 231, the user program code of 211 ends, and the process ends. . At this point, the scheduling program 274 is executed to determine the next process to be executed. The process of executing the server program should have a higher priority set in advance. Then, the process of executing the server program is executed next. The process management table of this process is 292, and this table is removed from the execution queue 31 and is positioned as a running process. This process executes the file server parent program 24 1 in the file server 24. This program calls the message receiving program 2 4 4 1 as a subroutine. The message receiving program 2441 calls the in-kernel message receiving program 272 in the microkernel 27 by a trap instruction. The program of 272 takes in the message from the beginning of the port of 281. At this time, the priorities in the process management table of the process executing the priorities in the message structure 34 1 are copied to the area. As a result, the server program is executed with the same priority as the process of the user program that requested the processing. Similarly, the file server program requests the device driver 26 program for processing by message communication. The operation of this part will be described later.
第 2図は第 1 図中のプロセッサのレジスタ 1 0 1 の一例である。 ここ で説明する実施の形態においては、 1 0 1 がレジスタ全体、 1 0 1 1 が プログラム中で実行中の場所のァ ドレスを指すプログラムカウンタ、 1 0 1 2 0 , 1 0 1 1 2 1, 1 0 1 2 1 2 , 1 0 1 2 1 3 , 1 0 1 2 1 4 1 0 1 2 1 5は、 汎用のレジスタである。
第 3図は第 1 図の 2 1 1 のユーザプログラムのアルゴリズムの一例を 表わしている。 このプログラムは、 ユーザが記述するものなので、 任意 のものを使用可能であるが、 ここでは、 オペレーティ ングシステムに、 ファイルへの書き込みを依頼するプログラムを例に説明する。 4 1 1 で、 書き込むデータを用意し、 4 1 2で書き込みを依頼する関数を呼び出し ている。 4 1 2の wri te 関数の第 1 引数は、 書き込むファイルを示す識 別子、 第 2引数は書き込むデータが入っているバッファのア ドレスであ る。 FIG. 2 is an example of the register 101 of the processor in FIG. In the embodiment described here, 101 is the entire register, 1101 is the program counter that points to the address of the location in the program that is being executed, and 11012, 1011, 21 1 0 1 2 1 2, 1 0 1 2 1 3, 1 0 1 2 1 4 1 0 1 2 1 5 are general-purpose registers. FIG. 3 shows an example of the algorithm of the user program 211 in FIG. Since this program is written by the user, any program can be used. Here, a program that requests the operating system to write to a file will be described as an example. The data to be written is prepared in 4 11, and the function to request the writing is called in 4 12. The first argument of the write function in 4 1 and 2 is an identifier indicating the file to be written, and the second argument is the address of the buffer containing the data to be written.
第 4図は第 1 図のシステムコール共有ライブラリ 2 3の一つである 2 3 1 の wri te プログラムのアルゴリズムの一例を表わしている。 第 3 図の 4 1 2で、 wri te 関数を呼び出すと、 この関数が実行される。 421 で、 ファイルシステム構造体のコマン ドメンバーに書き込みを表わす WRI TE という命令を入れている。 4 2 2 と 4 2 3では、 それぞれ、 引数 で渡されたフアイル識別子とバッファのァ ドレスをファイルシステム構 造体中のファイル識別子のメンバーとバッファのメンバーに入れている。 FIG. 4 shows an example of an algorithm of a wri te program 2 31 which is one of the system call shared libraries 23 of FIG. Calling the write function at 4 1 2 in Figure 3 will execute this function. In 421, the command member of the file system structure contains an instruction of WRITE to indicate writing. In 422 and 432, respectively, the file identifier and buffer address passed in the argument are put in the file identifier member and buffer member in the file system structure.
4 2 4では、 ファイルシステム構造体をメッセージとして送信するため に、 メッセージ構造体のデータのメンバーにフアイル構造体を入れてい る。 4 2 5で、 メッセージ送信をマイクロカーネルに依頼するための関 数を呼び出している。 関数の第 1 引数はメッセージの送り先であるポー 卜識別子、 第 2引数はメッセージ構造体のア ドレス、 第 3引数はメッセ 一ジに自プロセスの優先度を継承するかどうかを表わしている。 この例 では、 第 3引数が 1 になっているので、 自プロセスの優先度がメッセ一 ジに継承される。 4 2 5のメッセージ送信プログラムの呼出により、 第 1 図及び第 5図の 2 3 2の関数が実行される。 In 424, in order to send a file system structure as a message, a file structure is included in the data member of the message structure. In 4 25, a function is called to request the microkernel to send a message. The first argument of the function is the port identifier of the message destination, the second argument is the address of the message structure, and the third argument indicates whether the message inherits the priority of the process. In this example, the third argument is 1, so the message's own priority is inherited by the message. By calling the message transmission program of 425, the function of 232 in FIGS. 1 and 5 is executed.
第 5図は第 1 図の 2 3 2及び 2 4 3 1〜 2 4 3 2のメッセージ送信プ
ログラムのアルゴリズムの一例を表わしている。 メッセージの送信の主 な処理は、 第 1 図の 2 7のマイクロカーネルが行うので、 この関数では、 卜ラップ命令によリマイク口カーネルに処理を移行することを行ってい る。 4 3 1 では、 GR0 のレジスタに 3をロー ドしている。 これは、 マイ クロカーネルに処理を依頼するときに何の処理を依頼しているのかを表 わす識別子である。 3という値は、 第 1 図及び第 1 8図の 6 2のシステ ムコールテーブルの 3番目であるメッセージ送信(k— msg— send)の処理を 依頼していることを表わしている。 4 3 2では、 卜ラップ命令を実行し て処理をカーネルに移している。 トラップ命令のオペラン ドの 2は、 卜 ラップ命令実行後、 第 1 図及び第 1 9図の卜ラップべク トルテーブルの 2番目のァドレスに飛ぶよう指示している。 第 1 9図の卜ラップべク 卜 ルテーブルの 2番目は、 syscal l 関数のアドレスであり、 第 1 図及び第 6図の 2 7 3の卜ラップハン ドラ(syscal l ) に飛ぶ。 Fig. 5 shows the message transmission protocol of 2 32 and 2 4 3 1 to 2 4 3 2 in Fig. 1. 4 shows an example of a program algorithm. Since the main processing of message transmission is performed by the microkernel shown in Fig. 27, this function shifts the processing to the remote microphone kernel by a trap instruction. In 431, 3 is loaded into the register of GR0. This is an identifier that indicates what processing is requested when requesting processing from the microkernel. A value of 3 indicates that the request for message transmission (k-msg-send), which is the third in the system call table 62 in FIGS. 1 and 18, is being made. In 4 32, the trap instruction is executed and the processing is transferred to the kernel. Operand 2 of the trap instruction instructs to jump to the second address of the trap vector table in FIGS. 1 and 19 after executing the trap instruction. The second in the trap vector table in FIG. 19 is the address of the syscal l function, which jumps to the trap handler (syscal l) in FIG. 1 and FIG.
第 6図は第 1 図のマイクロカーネル 2 7の一部である 2 7 3のトラッ プハン ドラのアルゴリズムの一例を表わしている。 ユーザプログラム及 びサーバプログラムが卜ラップ命令を行うことにより、 この関数が呼び 出される。 4 4 1 では、 レジスタ GR0 の値により、 第 1 8図のシステム コールテーブルを検索している。 ユーザプログラムなどがマイクロカー ネルに処理を依頼するために、 卜ラップ命令を実行する前には、 GR0 に 何の処理を依頼するかを示す番号を入れている。 この値を検索に用いて いるのである。 4 4 2では、 ユーザスタック上の引数をカーネルスタツ クにコピーしている。 ユーザプログラムが、 マイクロカーネルに処理を 依頼する関数を呼び出したとき、 その引数は、 第 1図中のユーザプログ ラム 2 1 のユーザスタック 2 1 3に積まれている。 マイク口カーネルが, この引数を使用するためには、 マイクロカーネルが使用している 3 0の
カーネルスタックに引数をコピーする必要がある。 4 4 3では、 システ ムコールテーブルの検索で得られた関数を呼び出している。 第 1 0図の 例でトラップ命令が実行された場合には、 第 1 図及び第 7図中のマイク ロカーネノレ内 send_msg処理(k_send_msg) 2 7 1 が実行される。 4 4 4で は、 4 4 3の関数呼出により、 実行可能なプロセスの優先度に変化が生 じた可能性があるので、 スケジューリングをやり直して、 その時点で最 も優先度の高いプロセスに実行を切り換える。 FIG. 6 shows an example of the trap handler algorithm of 273 which is a part of the microkernel 27 of FIG. This function is called when the user program and the server program issue a trap instruction. In 4 41, the system call table shown in Fig. 18 is searched according to the value of register GR0. Before a trap instruction is executed by a user program or the like to request processing from the microkernel, a number indicating what processing is requested is entered in GR0. This value is used for the search. In 442, the arguments on the user stack are copied to the kernel stack. When the user program calls a function to request processing from the microkernel, its argument is pushed onto the user stack 21 of the user program 21 in FIG. For the microphone mouth kernel to use this argument, the 30 You need to copy the arguments to the kernel stack. In 443, the function obtained by searching the system call table is called. When the trap instruction is executed in the example shown in FIG. 10, the send_msg process (k_send_msg) 2 71 in the micro-core in FIG. 1 and FIG. 7 is executed. In 4 4 4, since the function call of 4 4 3 may have caused a change in the priority of the executable process, re-scheduling was performed and the process with the highest priority at that time was executed. Switch.
第 7図は第 1 図のマイクロカーネル 2 7の一部である 2 7 1 のマイク 口カーネル内 send_msg処理のアルゴリズムの一例を表わしている。 451 ではカーネル内でメッセージを管理するのに使用するメッセ一ジ構造体 をアロケー トしている。 4 5 2では引数で渡されたメッセージ構造体に 入っていたデータのァドレスを新しくアロケー トしたメッセージ構造体 に入れ直している。 4 5 3では、 自プロセスの優先度をメッセージに継 承するかを表わす第 3引数の値を調べている。 この値が 0で継承しない 場合には、 第 1 引数で指定されたポー 卜 (第 1 図では 2 8 1等) の待ち 行列の最後にメッセージ構造体 kmsgを挿入して本関数を終了する。 第 3 引数 i nh の値が 1 であり、 優先度を継承する場合には、 4 5 4に進む。 4 5 4では実行中のプロセスのプロセス管理テ一ブルのァドレスを pと している。 第 1 図では 2 9 1のプロセス管理テーブルのァ ドレスとなる 。 4 5 5では実行中のプロセスのプロセス管理テーブル p中の優先度を 表わすメンバー pri の値をメッセージ構造体中の優先度を表わすメンバ -pri に代入している。 4 5 6〜4 5 9は、 メッセージ構造体 kmsgをポ 一卜の待ち行列が優先度順になるように適当な場所に挿入する処理とな つている。 4 5 6ではポー 卜の待ち行列にあるメッセージ構造体を先頭 から検索している。 4 5 7では検索したメッセージ構造体 mの優先度が
挿入するメッセージ構造体 kmsgのそれより小さいか、 または、 もうメッ セージがないかを判断している。 もし、 そうでないならば、 4 5 8で次 のメッセージ構造体を検索する。 もし、 そうならば、 4 5 9で mの前に kmsgを挿入する。 4 6 0〜 4 6 2は、 メッセージを受信するプロセス がポー 卜に登録されている場合に、 そのプロセスの優先度をメッセージ の到着により変化させる処理となっている。 4 6 0では、 kmsgが待ち行 列の先頭に挿入されたか調べている。 先頭ではない場合には、 受信プロ セスの優先度を変化させる必要がないので、 処理を終了する。 先頭の場 合には 4 6 1 に進む。 4 6 1 では、 受信するプロセスがポー 卜に登録さ れているか調べている。 登録されていない場合には処理を終了し、 登録 されている場合には 4 6 2に進む。 4 6 2では、 受信プロセスとして登 録されているプロセスの優先度を kmsgの優先度に変更している。 FIG. 7 shows an example of an algorithm of the send_msg processing in the microphone kernel 271, which is a part of the microkernel 27 in FIG. The 451 allocates a message structure used to manage messages in the kernel. In 452, the address of the data contained in the message structure passed as an argument is relocated to the newly allocated message structure. In 453, the value of the third argument indicating whether to inherit the priority of the own process to the message is checked. If this value is 0 and it is not inherited, the message structure kmsg is inserted at the end of the queue of the port specified by the first argument (281, etc. in Fig. 1), and this function ends. If the value of the third argument i nh is 1 and the priority is to be inherited, go to 4 54. In 454, p is the address of the process management table of the running process. In FIG. 1, it is the address of the process management table 291. In 455, the value of the member pri indicating the priority in the process management table p of the running process is assigned to the member -pri indicating the priority in the message structure. Steps 456 to 549 are processing for inserting the message structure kmsg into an appropriate place so that the queues of the ports are in priority order. In 456, the message structure in the port queue is searched from the beginning. In 4 5 7, the priority of the retrieved message structure m is It determines whether the message structure to be inserted is smaller than that of kmsg or whether there is no more message. If not, retrieve the next message structure at 458. If so, insert kmsg before m at 459. In steps 460 to 462, when a process for receiving a message is registered in a port, the priority of the process is changed by the arrival of the message. At 460, it checks to see if kmsg has been inserted at the beginning of the queue. If it is not the head, the process ends because there is no need to change the priority of the receiving process. In the first case, go to 4 6 1. In 461, it is checked whether the receiving process is registered in the port. If not registered, the process ends. If registered, the process proceeds to 462. In 462, the priority of the process registered as the receiving process is changed to kmsg priority.
第 8図は第 1 図のフアイルサーバ 2 4の一部である 2 4 1のファイル サーバ親プログラムのアルゴリズムの一例を表わしている。 このプログ ラムは、 ユーザプログラムからの要求のメッセージを受け付ける処理を 主とし、 実際の処理は、 新しいプロセスを生成してそれに行わせる。 4 7 1 では、 自プロセスの優先度を 1 8 0と高く設定している。 フアイ ルサーバ親プログラムは、 その処理をすぐに終了するため、 ポー 卜に自 分を受信プロセスとして登録せず、 高めの優先度を自分に設定すること によリメッセージ到着時にすぐに自プロセスがスケジユーリングされる ようにしている。 4 7 2では、 メッセージの受信をマイクロカーネルに 依頼する関数を呼び出している。 この関数は第 1 図及び第 1 0図の 244 1 である。 この関数の第 1 引数はメッセージを受信するポー ト識別子、 第 2引数は受信したメッセージが入り、 第 3引数はメッセージの受信によ りメッセージに付加されている優先度を自プロセスが継承するかを表わ
し、 第 4引数は受信したメッセージが持っていた優先度が返る。 この例 では第 3引数が 1 となっているのでメッセージを受信することによリ 自 プロセスの優先度が変化する。 4 7 3では、 子プロセスを生成し、 受信 したメッセージを引数として第 1 図及び第 9図のフアイルサーバ子プロ グラム 2 4 2を実行させている。 生成された子プロセスには、 親である 自プロセスの優先度が継承される。 子プロセスを生成した親プロセスは、 処理の最初に戻り次のメッセージを受信しに行く。 FIG. 8 shows an example of an algorithm of a file server parent program 241, which is a part of the file server 24 of FIG. This program mainly accepts a request message from a user program. The actual process creates a new process and causes it to be performed. In 471, the priority of the own process is set as high as 180. Since the file server parent program terminates its processing immediately, it does not register itself as a receiving process on the port, but sets itself to a higher priority, so that the own process is immediately scheduled when the message arrives. I'm trying to be Euling. In 472, a function that requests the microkernel to receive a message is called. This function is 244 1 in FIGS. 1 and 10. The first argument of this function is the port identifier for receiving the message, the second argument is the received message, and the third argument is whether the process inherits the priority added to the message by receiving the message. Represents The fourth argument returns the priority of the received message. In this example, since the third argument is 1, receiving the message changes the priority of the own process. In 473, a child process is generated, and the file server child program 2442 in FIGS. 1 and 9 is executed using the received message as an argument. The priority of the parent process is inherited by the created child process. The parent process that created the child process returns to the beginning of processing and receives the next message.
第 9図は第 1 図のフアイルサーバ 2 4の一部である 2 4 2のファイル サーバ子プログラムのアルゴリズムの一例を表わしている。 このプログ ラムがユーザプログラムからのファィルサーバへの要求を処理する。 4 8 1 では引数で受け取ったメッセージの内容からフアイル識別子を取 り出している。 4 8 2ではファイル識別子から、 アクセスするデバイス, ブロック番号, ブロック中のオフセッ トを計算する。 4 8 3では、 482 で求めた各種の情報を目的のデバイスのドライバにメッセージ送信する ため、 構造体に入れている。 4 8 4ではデバイス ドライバにメッセージ を送信している。 この send_msg呼出では、 第 1 図中の 2 4 3 1 が実行さ れるが、 その内容は第 1 図中の 2 3 2と同様であり、 そのアルゴリズム も第 5図で説明した。 FIG. 9 shows an example of an algorithm of a file server child program 24, which is a part of the file server 24 of FIG. This program processes requests from the user program to the file server. In 481, the file identifier is extracted from the content of the message received as an argument. In 482, the device to access, the block number, and the offset in the block are calculated from the file identifier. In 483, various information obtained in 482 is put in a structure to send a message to the driver of the target device. 4 8 4 sends a message to the device driver. In this send_msg call, 2431 in FIG. 1 is executed, but the contents are the same as 2332 in FIG. 1, and the algorithm was also explained in FIG.
第 1 0図は第 1 図の 2 3 3及び 2 4 4 1 〜 2 4 4 2のメッセージ受信 をマイク口カーネルに依頼する関数のアルゴリズムの一例となっている < 4 9 1 で GR0 に 4 を入れている以外、 第 5図のメッセージ送信を依頼す る関数と同じである。 GR0 に 4 を入れることにより、 第 6図の 4 4 1 で 第 1 8図のシステムコールテーブルから k—rcv_nisg が検索される。 Fig. 10 shows an example of the algorithm of a function that requests the microphone mouth kernel to receive the messages of 2 3 3 and 2 4 4 1 to 2 4 4 2 in Fig. 1 <4 91 and assigns 4 to GR0. Except for this, it is the same as the function for requesting message transmission in Fig. 5. By inserting 4 into GR0, k—rcv_nisg is retrieved from the system call table in FIG. 18 at 4 41 in FIG.
第 1 1 図は第 1 図のマイクロカーネル 2 7の一部である 2 7 2のマイ クロカ一ネル内 rev msg 処理のアルゴリズムの一例を表わしている。 関
数の引数は、 第 1 引数がメッセージを受信するポー 卜、 第 2引数が受信 したメッセージが返るァドレス、 第 3引数は自プロセスがメッセージの 優先度を継承するかどうかのフラグ、 第 4引数はメッセージに付いてい た優先度が返る。 5 0 1ではポー トが空か調べている。 空の場合にはメ ッセージが到着するまで 5 0 8でプロック している。 プロセスはプロッ クすると、 そのプロセス管理テーブルを第 1 図のプロック待ち行列 3 2 に接続して、 別のプロセスに切り替わる。 5 0 1 で空ではなかった場合 には、 5 0 2でポー トの先頭のメッセージ構造体を取り出す。 これを kmsgとする。 5 0 3で kmsgが持っているデータを第 2引数のメッセージ 構造体のデータに入れる。 5 0 4でメッセージの優先度を自プロセスの 優先度として継承するかのフラグを調べている。 継承しない場合には処 理を終了する。 継承する場合には、 5 0 5で実行中のプロセスのプロセ ス管理テーブルを調べ、 5 0 6でプロセス管理テーブルの優先度のメン バーにメッセージの優先度を代入している。 5 0 7では、 第 4引数に優 先度を返すための処理をしている。 FIG. 11 shows an example of an algorithm of rev msg processing in the microkernel 27 2 which is a part of the microkernel 27 in FIG. Seki The first argument is the port to receive the message, the second argument is the address to which the received message is returned, the third argument is a flag indicating whether the process inherits the priority of the message, and the fourth argument is The priority attached to the message is returned. At 501, it checks if the port is empty. If it is empty, it blocks at 508 until the message arrives. When a process blocks, it connects its process management table to the block queue 32 in FIG. 1 and switches to another process. If it is not empty at 501, the message structure at the beginning of the port is retrieved at 502. This is kmsg. At 503, the data held by kmsg is inserted into the data of the message structure of the second argument. At 504, a flag is checked to determine whether the message priority is inherited as the priority of the own process. If not, the process ends. When inheriting, the process management table of the running process is checked at 505, and the priority of the message is assigned to a member of the priority of the process management table at 506. In 507, processing is performed to return the priority to the fourth argument.
第 1 2図は第 1 図のデバィス ドライバ 2 5の一部である 2 5 1 のデバ イス ドライバサーバ受付プログラムのァルゴリズムの一例を示している, 5 1 1 では、 本プログラムを実行しているプロセスを受信プロセスとし て dev_portのポー 卜に登録している。 登録は、 自プロセスの識別子を第 2 0図のポー 卜構造体 6 4 2の領域に書き込むことによりなされる。 こ の登録により、 第 7図の 4 6 2で説明した通リ、 メッセージの受信を待 たず、 メッセージが送信された段階で、 受信するプロセスの優先度をメ ッセージの優先度と同じに設定することが可能である。 5 1 2では、 メ ッセージ受信をマイクロカーネルに依頼する関数を読んでいる。 この関 数のアルゴリズムは、 既に第 1 0図で説明した。 5 1 3では、 受信した
メッセージから、 ブロック番号, オフセッ 卜, 優先度を取り出し、 I / 〇要求構造体に入れている。 5 1 4では、 I 〇要求待ち行列の最後を 求めている。 5 1 5では、 I 〇要求が書き込みか読み出しか判断して いる。 書き込みの場合は 5 1 6で書き込み要求を I 〇要求待ち行列に 挿入する関数を読んでいる。 読み出しの場合は 5 1 7で読み出し要求を 挿入する関数を呼ぶ。 FIG. 12 shows an example of an algorithm of the device driver server reception program 251, which is a part of the device driver 25 in FIG. 1.The process executing this program is shown in 511. Is registered in the dev_port port as a receiving process. The registration is performed by writing the identifier of the own process in the area of the port structure 642 in FIG. With this registration, the priority of the receiving process is set to the same as that of the message when the message is sent, without waiting for the message to be received as described in 4 62 in Fig. 7. It is possible to In 5 12 we read a function that asks the microkernel to receive a message. The algorithm for this function has already been described in FIG. 5 1 3 The block number, offset, and priority are extracted from the message and put into the I / II request structure. In 514, I 〇 seeks the end of the request queue. At 5 15, it is determined whether the I request is write or read. In the case of writing, the function that inserts a write request into the I @ request queue is read at 516. In the case of reading, a function to insert a read request is called in 517.
第 1 3図は第 1 図のデバィス ドライバ 2 5の一部である書き込み要求 の挿入のプログラムのアルゴリズムの一例を示している。 ただし、 本プ ログラムは、 第 1 図中では略してある。 このプログラムは、 I / O要求 待ち行列を後ろから検索していき、 挿入する要求をその優先度に従って 適当な場所に挿入する。 ただし、 検索の過程で、 挿入する要求と同じブ ロックにアクセスする要求が待ち行列中にあった場合には、 その要求の 優先度を挿入する要求の優先度と同じに設定しなおして、 行列を並べ直 す。 これは、 同じブロックへのアクセスの順番は入れ替わると結果が不 整合となるからである。 この関数は 2つの引数をとる第 1 引数は挿入す る要求、 第 2引数は検索を開始する場所である。 第 2引数には、 最初、 待ち行列の最後の要求のア ドレスが与えられる。 5 2 1 では、 検索のポ イン 卜が待ち行列の先頭か調べている。 先頭の場合には、 5 2 9で待ち 行列の先頭に要求を挿入して終了する。 そうでない場合には、 5 2 2で 検索ボイン 卜の要求の優先度と挿入する要求の優先度を比較している。 検索ボイン 卜の要求の優先度が高ければ、 5 2 9で検索ボイ ン 卜の後ろ に要求を挿入する。 そうでない場合には、 5 2 3で検索ポイ ン トの要求 と挿入する要求が同じブロックに対するアクセスか調べている。 同じブ ロックに対するアクセスでない場合には、 5 2 4で検索ボイントを一つ 前の要求にして最初に戻る。 ブロックが同じだった場合には、 5 2 5で
—先ず検索ボイン 卜の要求も待ち行列から外してしまう。 5 2 6では、 外した要求の優先度を挿入する要求の優先度と同じとしている。 5 2 7 では、 外した要求が待ち行列にあつたときに一つ前にあった要求を PPし ている。 5 2 8では、 外した要求を待ち行列に再挿入するために自分の 関数を再帰的に呼び出している。 この外した要求が挿入された後、 529 で最初に挿入したかった要求を、 一度外して再度挿入した要求の後ろに 挿入する。 FIG. 13 shows an example of an algorithm of a program for inserting a write request which is a part of the device driver 25 of FIG. However, this program is omitted in Fig. 1. This program searches the I / O request queue from the back and inserts the request to be inserted at an appropriate place according to its priority. However, if a request to access the same block as the request to be inserted is in the queue during the search process, the priority of the request is set to the same as the priority of the request to be inserted, and Rearrange the. This is because if the order of access to the same block is changed, the result will be inconsistent. This function takes two arguments, the first is the request to insert, and the second is where to start the search. The second argument is initially given the address of the last request in the queue. In 521, it is checked whether the search point is at the head of the queue. If so, insert the request at the beginning of the queue at 529 and end. If not, the priority of the request for the search point is compared with the priority of the request to be inserted in 522. If the search request has a higher priority, the request is inserted at 529 after the search request. If not, it checks in step 523 whether the request for the search point and the request to insert are accesses to the same block. If the access is not for the same block, the search point is returned to the previous request at 524 and the process returns to the beginning. If the blocks were the same, 5 2 5 —First, the request for the search point is also removed from the queue. In 526, the priority of the removed request is the same as the priority of the request to be inserted. In 527, when the removed request entered the queue, the previous request was PPed. In 528, my function is called recursively to re-insert the removed request into the queue. After the dropped request is inserted, the request that was originally inserted in step 529 is inserted after the request that was once removed and reinserted.
第 1 4図は第 1 図のデバィス ドライバ 2 5の一部である読み込み要求 の挿入のプログラムのアルゴリズムの一例を示している。 ただし、 本プ ログラムは、 第 1 図中では略してある。 このプログラムのアルゴリズム は第 1 3図の書き込み要求の挿入のプログラムのアルゴリズムとほぼ同 じである。 ただし、 読み出しの要求同士は、 同じブロックに対するァク セスでも順番を入れ換えることが可能なので、 5 3 3で、 ブロックの番 号を比較するとともに、 検索ボイン 卜の要求が書き込みの要求であるこ とを調べている点が異なる。 FIG. 14 shows an example of an algorithm of a program for inserting a read request which is a part of the device driver 25 of FIG. However, this program is omitted in Fig. 1. The algorithm of this program is almost the same as the algorithm of the program for inserting a write request in Fig. 13. However, the order of read requests can be changed even for accesses to the same block.Therefore, in step 533, the block numbers are compared and the fact that the search point request is a write request is checked. The point that I am investigating is different.
第 1 5図は第 1 図のデパイス ドライバ 2 5の一部である出力プログラ ム 2 5 2のアルゴリズムの一例を示している。 このプログラムは、 I Z 〇要求待ち行列の最初から順番に要求を取り出し I 0に要求を出す。 5 1 では I 0要求待ち行列が空か調べている。 空の場合には 5 4 2 で要求が来るまでブロックする。 そうでない場合には、 5 4 3で先頭の 要求を取り出し、 その要求に従い、 5 4 4 と 5 4 5で I Z〇のデータ レ ジスタとコマン ドレジスタに対して書き込みを行う。 5 4 6では、 要求 した I /〇から終了の割り込みがあるまでブロックする。 FIG. 15 shows an example of an algorithm of an output program 252 which is a part of the depth driver 25 of FIG. This program retrieves requests in order from the beginning of the request queue, I Z 〇, and issues requests to I 0. At 5 1 it checks if the I 0 request queue is empty. If it is empty, block at 5 4 2 until a request comes. Otherwise, the first request is retrieved at 543, and the data and command registers of IZ と are written at 544 and 545 according to the request. In 5 4 6, it blocks from the requested I / 〇 to the end interrupt.
第 1 6図は第 4図のアルゴリズムで使用されたライブラリ用ファイル システム構造体の一例を示している。 6 0が構造体全体であり、 6 0 1
がコマン ドが入るメンバー、 6 0 2がファイル識別子が入るメンバー、 6 0 3が書き込むデータが入ったバッファのァ ドレスが入るメンバーで ある。 FIG. 16 shows an example of a library file system structure used in the algorithm of FIG. 6 0 is the whole structure, 6 0 1 Is the member that contains the command, 602 is the member that contains the file identifier, and 603 is the member that contains the address of the buffer that contains the data to be written.
第 1 7図は第 4図のアルゴリズムで使用されたライブラリ用メッセ一 ジ構造体の一例である。 この構造体 6 1 には、 メッセージとして送信す るデータが入る領域 6 1 1 がある。 FIG. 17 is an example of a message structure for a library used in the algorithm of FIG. The structure 61 has an area 611 for storing data to be transmitted as a message.
第 1 8図は、 第 1 図のシステムコールテーブル 6 2の構成を示したも のである。 このシステムコールテーブルは、 第 6図のアルゴリズムの 4 4 1 で使用されている。 6 2がテーブルの全体であり、 6 2 1 ~624 は、 関数のァドレスである。 第 6図の 4 4 1 でレジスタ GR0 の値によリ, これらの関数が検索され 4 4 3でそこへ飛ぶ。 6 2 1 1〜 6 2 4 1 は、 それぞれ 6 2 1〜6 2 4が必要な引数の数である。 この数を使って、 第 6図の 4 4 2で引数をコピーする。 FIG. 18 shows the configuration of the system call table 62 of FIG. This system call table is used in the algorithm of FIG. 6 2 is the whole table, and 6 2 1 to 624 are the addresses of the functions. These functions are searched according to the value of register GR0 at 4441 in Fig. 6 and jumped to there at 4443. 6 2 1 1 to 6 2 4 1 is the number of arguments that require 6 2 1 to 6 2 4 respectively. Using this number, copy the argument in 4 4 2 in Figure 6.
第 1 9図は、 第 1 図のマイクロ力一ネル 2 7が使用するメッセージ構 造体 3 4 1〜 3 4 6の構成の一例である。 6 3が構造体の全体であり、 6 3 1 が送信するデ一タのァ ドレスが入るメンバー、 6 3 2がメッセー ジの優先度が入るメンバー、 6 3 3 と 6 3 4は、 それぞれ、 構造体をポ 一卜の待ち行列に接続するための前向きと後ろ向きのリンクである。 第 2 0図は第 1 図のマイクロカーネル 2 7の中のメッセージが接続さ れるポー ト 2 8 1〜 2 8 2の構造体である。 6 4がポー 卜構造体の全体, 6 4 1 はメッセージを接続するためのボインタ、 6 4 2は受信するプロ セスを登録するためにプロセスの識別子が入る領域である。 FIG. 19 is an example of the configuration of the message structure 341-1 to 3446 used by the microchannel 27 of FIG. 6 3 is the whole structure, 6 3 1 is the member that contains the address of the data to be sent, 6 3 2 is the member that contains the priority of the message, 6 3 3 and 6 3 4 are the Forward and backward links to connect the structure to the port queue. FIG. 20 shows a structure of ports 281-282 to which messages in the microkernel 27 of FIG. 1 are connected. Reference numeral 64 denotes an entire port structure, 641 denotes a pointer for connecting a message, and 642 denotes an area for storing a process identifier for registering a process to be received.
第 2 1 図は第 1 図のトラップべク 卜ルテーブル 6 5の構成である。 こ の 卜ラップべク 卜ルテーブルは、 第 5図の 4 3 2において 卜ラップ命令 を実行したときに、 どこのア ドレスに飛ぶかを決定する。 2番目の領域
6 5 2には第 6図の卜ラップハン ドラ syscal l ァ ドレスが入っており、 trap 2の命令を実行したとき、 そのァ ドレスに飛ぶ。 FIG. 21 shows the configuration of the trap vector table 65 of FIG. This trap vector table determines to which address to jump to when the trap instruction is executed at 43 in FIG. Second area 652 contains the trap handler syscal l address shown in Fig. 6, and when the instruction of trap 2 is executed, it jumps to that address.
第 2 2図は第 1 図のマイク口カーネル内 2 7のプロセス管理テーブル 2 9 1 の構成である。 2 9 2〜 2 9 5のプロセス管理テーブルの構成も これと同様である。 6 6 1 はプロセスの優先度を格納するメンバー、 6 6 2はプロセスのレジスタの内プログラムカウンタの値を退避するメ ンバー、 6 6 3, 6 6 3 4は汎用レジスタを退避するメンバー、 6635と 6 6 3 6はプロセス管理テーブルを実行待ち行列やプロック待ち行列に 接続するための後ろ向きと前向きのリンクである。 FIG. 22 shows the configuration of the process management table 291 in the microphone opening kernel 27 of FIG. The structure of the process management tables 292-295 is the same as this. 661 is a member that stores the priority of the process, 662 is a member that saves the value of the program counter among the registers of the process, 663 and 63634 are members that save the general-purpose registers, and 6635 and 6635 6 6 3 6 are backward and forward links for connecting the process management table to the execution queue and the block queue.
第 2 3図は第 1 図のデバィス ドライバ 2 5の中の I / 0要求構造体 2 5 5 1 の構成の一例を示している。 6 7 1 は優先度、 6 7 2は 1 〇 を行う対象のブロック番号、 6 7 3はブロック内でのオフセッ ト、 674 と 6 7 5は 1ノ0要求待ち行列に接続するためのリンクである。 産業上の利用可能性 FIG. 23 shows an example of the configuration of the I / O request structure 2551 in the device driver 25 of FIG. 6 7 1 is the priority, 6 7 2 is the block number to perform 1 〇, 6 7 3 is the offset within the block, 6 74 and 6 7 5 are the links for connecting to the 1 0 request queue. is there. Industrial applicability
以上のように、 本発明にかかるマイクロカーネルを用いてオペレーテ ィ ングシステムの機能の一部をサーバプロセスとして実現したオペレー ティ ングシステムは、 リアルタイム処理が必要とされる計算機システム に用いるのに適している。 更に、 高いリアルタイム性が要求されるコン 卜ローラの制御にも適している。
As described above, the operating system in which a part of the function of the operating system is realized as a server process using the microkernel according to the present invention is suitable for use in a computer system that requires real-time processing. I have. Furthermore, it is suitable for controlling controllers that require high real-time performance.
Claims
1 . それぞれが優先度を持つ複数のプロセスを管理し、 該プロセスの内, 実行可能で最も優先度の高いものを優先して実行し、 該複数のプロセス の間で通信を行う通信手段を持ち、 I 〇制御プログラムがカーネルの 外にプロセスとして実現されており、 他のプロセスが I / Oへの入出力 処理を行う時には該通信手段を用いて該 I 〇制御プログラムのプロセ スにメッセージを送信するオペレーティ ングシステムに於て、 メッセ一 ジの受け手である該 I / 0制御プログラムのプロセスの識別子を保存す る領域を該通信手段に設け、 メッセージの送り手であるプロセスが該メ ッセージを送信したときに、 該送り手のプロセスの優先度にしたがって 前記受け手である該 I Z〇制御プログラムのプロセスの優先度を変化さ せる手段を設けたことを特徴とするオペレーティ ングシステム。 1. It has a communication means for managing a plurality of processes, each of which has a priority, and giving priority to the process that is executable and having the highest priority, and communicating between the plurality of processes. The I〇 control program is implemented as a process outside the kernel, and when other processes perform I / O input / output processing, a message is sent to the I〇 control program process using the communication means. In the operating system, an area for storing a process identifier of the I / O control program, which is a message receiver, is provided in the communication means, and a process, which is a message sender, transmits the message. Means for changing the priority of the process of the IZ〇 control program, which is the recipient, according to the priority of the process of the sender. Operating system to.
2 . それぞれが優先度を持つ複数のプロセスを管理し、 該プロセスの内. 実行可能で最も優先度の高いものを優先して実行し、 該複数のプロセス の間で通信を行う通信手段を持ち、 I Z O制御プログラムがカーネルの 外にプロセスとして実現されており、 他のプロセスが 1ノ〇への入出力 処理を行う時には該通信手段を用いて該 I 〇制御プログラムのプロセ スにメッセージを送信するォペレ一ティ ングシステムに於て、 メッセ一 ジの受け手である該 I 〇制御プログラムのプロセスがメッセージを受 け取った時点で、 該メッセージの送り手であるプロセスの優先度によつ て、 前記メッセージの受け手である該 I 0制御プログラムのプロセス の優先度を変化させる手段を設けたことを特徴とするオペレーティ ング システム。 2. It manages a plurality of processes, each of which has a priority. Among these processes, it has a communication means for giving priority to the executable and having the highest priority and communicating between the plurality of processes. The IZO control program is implemented as a process outside the kernel, and when other processes perform input / output processing to one node, a message is transmitted to the process of the I〇 control program using the communication means. In the operating system, when the process of the I-control program, which is the recipient of the message, receives the message, the priority is determined by the priority of the process, which is the sender of the message. An operating system comprising means for changing a priority of a process of the I0 control program which is a message receiver.
3 . それぞれが優先度を持つ複数のプロセスを管理し、 該プロセスの内 実行可能で最も優先度の高いものを優先して実行し、 該複数のプロセス
の間で通信を行う通信手段を持ち、 I 0制御プログラムがカーネルの 外にプロセスとして実現されており、 他のプロセスが 1 〇への入出力 処理を行う時には該通信手段を用いて該 I Z〇制御プログラムのプロセ スにメッセージを送信するオペレーティ ングシステムに於て、 該通信手 段のメッセージを管理するメッセージ管理テーブルに優先度を格納する 領域を設け、 送り手のプロセスがメッセージを送信した時に、 該送り手 のプロセスの優先度に従って、 該優先度を格納する領域の優先度を設定 し、 該メッセージ管理テーブルを受信したメッセージの処理順序を管理 する受信待ち行列に接続する時に該優先度を格納する領域の値に従った 順番で接続する手段を設けたことを特徴とするオペレーティ ングシステ ム。 3. Manage a plurality of processes, each of which has a priority, and execute the process which has the highest priority and which is executable, with priority. The I0 control program is implemented as a process outside the kernel, and when other processes perform input / output processing to 1〇, the communication means is used to communicate with the IZ〇. In an operating system for transmitting a message to a process of a control program, an area for storing a priority is provided in a message management table for managing a message of the communication means, and when a process of a sender transmits a message, The priority of an area for storing the priority is set according to the priority of the process of the sender, and the priority is stored when the message management table is connected to a reception queue for managing the processing order of received messages. Operating means provided with means for connecting in an order according to the value of the region to be connected.
4 . それぞれが優先度を持つ複数のプロセスを管理し、 該プロセスの内、 実行可能で最も優先度の高いものを優先して実行し、 該複数のプロセス の間でメッセージの通信を行う通信手段を持つオペレーティ ングシステ ムに於て、 該通信手段にメッセージの受け手のプロセスの識別子を保存 する領域を設け、 該通信の送り手のプロセスがメッセージを送信したと きに、 該メッセージの送り手のプロセスの優先度に従って該メッセージ の受け手のプロセスの優先度を変化させることを特徴とするオペレーテ ィ ングシステム。 4. Communication means for managing a plurality of processes, each of which has a priority, executing the highest-priority executable process with priority, and communicating messages between the plurality of processes. In the operating system having the following, an area for storing an identifier of a process of a message receiver is provided in the communication means, and a process of a sender of the message is performed when a process of the sender of the communication transmits a message. An operating system for changing the priority of a process of a receiver of the message according to the priority of the operating system.
5 . それぞれが優先度を持つ複数のプロセスを管理し、 該プロセスの内、 実行可能で最も優先度の高いものを優先して実行し、 該複数のプロセス の間でメッセージの通信を行う通信手段を持つオペレーティ ングシステ ムに於て、 受け手のプロセスがメッセージを受け取った時点で送り手の プロセスの優先度によって受け手のプロセスの優先度を変化させる手段 を設けたことを特徴とするオペレーティ ングシステム。
5. Communication means for managing a plurality of processes, each of which has a priority, executing the process which is executable and having the highest priority, and transmitting a message between the plurality of processes. An operating system comprising: an operating system having means for changing the priority of a receiver process according to the priority of a sender process when the receiver process receives a message.
6 . それぞれが優先度を持つ複数のプロセスを管理し、 該プロセスの内、 実行可能で最も優先度の高いものを優先して実行し、 該複数のプロセス の間でメッセージの通信を行う通信手段を持つオペレーティ ングシステ ムに於て、 該通信手段のメッセージを管理するメッセージ管理テーブル に優先度を格納する領域を設け、 メッセージの送り手のプロセスがメッ セージを送信した時に、 該メッセージの送り手のプロセスの優先度に従 つて、 該優先度を格納する領域の優先度を設定し、 該メッセージ管理テ 一ブルを受信待ち行列に接続する時に該優先度を格納する領域の値に従 つて接続する手段を設けたことを特徴とするオペレーティ ングシステム t 6. Communication means for managing a plurality of processes, each of which has a priority, executing the highest-priority executable process among the processes with priority, and communicating a message between the plurality of processes. In an operating system having a function, an area for storing a priority is provided in a message management table for managing messages of the communication means, and when a message sender process sends a message, the sender of the message transmits the message. The priority of the area for storing the priority is set according to the priority of the process, and when the message management table is connected to the reception queue, the connection is performed according to the value of the area for storing the priority. Operating system t provided with means
7 . 請求の範囲第 1項, 第 2項, 第 4項及び第 5項に於て、 送り手のプ 口セスの優先度を受け手のプロセスの優先度に反映させる処理をォペレ —ティ ングシステムのカーネル内のプログラムにより行い、 送り手のプ 口セスが不正に受け手のプロセスの優先度を上昇させることを禁止する 手段を設けたことを特徴とするオペレーティ ングシステム。 7. The operating system according to Claims 1, 2, 4 and 5 in which the process of reflecting the priority of the sender's process to the priority of the receiving process is used. An operating system, characterized in that the operating system is provided with means for preventing a sender's process from illegally increasing the priority of the receiver's process by a program in the kernel.
8 . 請求の範囲第 1項乃至第 6項に於て、 メッセージを受けたプロセス が、 自分に新たに与えられた優先度を読み出す手段を設けたことを特徴 とするオペレーティ ングシステム。 8. The operating system according to any one of claims 1 to 6, wherein the process receiving the message is provided with a means for reading out a priority newly given to the process.
9 . 請求の範囲第 1項及び第 3項に於て、 メッセージ送信時にメッセ一 ジの順番を入れ換えないことを指定する手段を設けたことを特徴とする オペレーティ ングシステム。 9. The operating system according to claim 1 or 3, further comprising means for designating that the order of the messages is not changed when transmitting the message.
1 0 . 請求の範囲第 1項, 第 2項, 第 4項及び第 5項に於て、 メッセ一 ジ送信時に送り手のプロセスの優先度を受け手のプロセスの優先度に反 映させないことを指定する手段を設けたことを特徴とするオペレーティ ングシステム。 10. In Claims 1, 2, 4, and 5, when sending a message, make sure that the priority of the sender 's process is not reflected in the priority of the receiver' s process. An operating system characterized by providing means for specifying.
1 1 . 請求の範囲第 2項, 第 5項に於て、 メッセージ受信時に送り手の
プロセスの優先度を受け手のプロセスの優先度に反映させないことを指 定する手段を設けたことを特徴とするオペレーティ ングシステム。 1 1. In claims 2 and 5, the sender of the message An operating system comprising means for designating that the priority of a process is not reflected in the priority of a recipient process.
1 2 . 請求の範囲第 2項及び第 5項に於て、 メッセージ受信前の受け手 のプロセスの優先度を、 通常の処理を行うプロセスの優先度のメッセー ジ受信時に送り手のプロセスの優先度より高く、 リアルタイム性が要求 されるプロセスの優先度と同じか、 または、 低い範囲に設定することを 特徴とするオペレーティ ングシステム。 1 2. In Claims 2 and 5, the priority of the receiving process before receiving the message shall be the priority of the sending process when the message has the priority of the process that performs normal processing. An operating system characterized by setting it to the same or lower range as the priority of processes that require higher real-time properties.
1 3 . 請求の範囲第 8項に於て、 受け手のプロセス内でも要求を待ち行 列化する必要がある場合に、 該読み出した優先度に従い待ち行列管理を 行うことを特徴とするオペレーティ ングシステム。 13. An operating system according to claim 8, wherein when it is necessary to queue requests even in a process of a receiver, queue management is performed according to the read priority. .
1 4 . 請求の範囲第 1 3項に於て、 受け手のプロセスが Iノ〇制御プロ グラムを実行しており、 該 I /〇制御プログラムが I Z〇に出力する要 求を待ち行列化しており、 該要求に該読み出した優先度を付与し、 該優 先度の高い順に該待ち行列を並べている場合に、 新しい要求を待ち行列 に挿入するときに、 該新しい要求と同じ I Z〇の部分にアクセスする等 の理由により、 該新しい要求よりも先に実行されなければならない要求 が、 該待ち行列中に既にあり、 該要求が該新しい要求より優先度が低い 時には、 該先に実行する要求の優先度を該新しい要求の優先度と同じに 設定し直す手段を設けたことを特徴とするオペレーティ ングシステム。
14. In claim 13, the receiver process is executing an I / N control program, and the I / I control program queues requests to be output to IZ. When the read request is assigned to the request and the queues are arranged in descending order of priority, when a new request is inserted into the queue, the same IZ portion as the new request is added. If a request that must be executed before the new request, such as for access, is already in the queue and the request has a lower priority than the new request, the request to be executed earlier An operating system comprising means for resetting the priority to the same as the priority of the new request.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP1995/000690 WO1996031824A1 (en) | 1995-04-07 | 1995-04-07 | Operating system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP1995/000690 WO1996031824A1 (en) | 1995-04-07 | 1995-04-07 | Operating system |
Publications (1)
Publication Number | Publication Date |
---|---|
WO1996031824A1 true WO1996031824A1 (en) | 1996-10-10 |
Family
ID=14125850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP1995/000690 WO1996031824A1 (en) | 1995-04-07 | 1995-04-07 | Operating system |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO1996031824A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130138146A (en) * | 2012-06-08 | 2013-12-18 | 애플 인크. | Adaptive process importance |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61136134A (en) * | 1984-12-06 | 1986-06-24 | Mitsubishi Electric Corp | Queue resource control system |
JPH06301555A (en) * | 1993-02-26 | 1994-10-28 | Internatl Business Mach Corp <Ibm> | System for plural symbiotic operating systems on micro kernel and for personality use |
-
1995
- 1995-04-07 WO PCT/JP1995/000690 patent/WO1996031824A1/en active Search and Examination
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61136134A (en) * | 1984-12-06 | 1986-06-24 | Mitsubishi Electric Corp | Queue resource control system |
JPH06301555A (en) * | 1993-02-26 | 1994-10-28 | Internatl Business Mach Corp <Ibm> | System for plural symbiotic operating systems on micro kernel and for personality use |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130138146A (en) * | 2012-06-08 | 2013-12-18 | 애플 인크. | Adaptive process importance |
JP2013257873A (en) * | 2012-06-08 | 2013-12-26 | Apple Inc | Adaptive process importance |
US9411637B2 (en) | 2012-06-08 | 2016-08-09 | Apple Inc. | Adaptive process importance |
KR101702698B1 (en) * | 2012-06-08 | 2017-02-22 | 애플 인크. | Adaptive Process Importance |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5606703A (en) | Interrupt protocol system and method using priority-arranged queues of interrupt status block control data structures | |
US6728722B1 (en) | General data structure for describing logical data spaces | |
US11226820B2 (en) | Data transfer bus communication using single request to perform command and return data to destination indicated in context to allow thread context switch | |
US6125399A (en) | Computer system including a plurality of nodes for transferring through a data transfer network messages having distinguishing fields used for distinguishing the messages and controlling receipt thereof | |
KR100848603B1 (en) | How to save data processing device and return status | |
US4649473A (en) | Flexible data transmission for message based protocols | |
EP0087978A2 (en) | Information processing unit | |
EP0205945A2 (en) | Process transparent multi storage mode data transfer and buffer control | |
US5625846A (en) | Transfer request queue control system using flags to indicate transfer request queue validity and whether to use round-robin system for dequeuing the corresponding queues | |
US20050015768A1 (en) | System and method for providing hardware-assisted task scheduling | |
JPH03126158A (en) | Method and apparatus for scheduling | |
JPH05274276A (en) | Digital signal processing subsystem for personal computer | |
KR20040036535A (en) | System and method for transferring data between virtual machines or other computer entities | |
JPH11126196A (en) | Data transfer method and computer system suitable for it | |
US5056003A (en) | Distributed data management mechanism | |
US5721920A (en) | Method and system for providing a state oriented and event driven environment | |
US6832266B1 (en) | Simplified microkernel application programming interface | |
KR100678930B1 (en) | Real time control system for digital signal processor | |
US5218713A (en) | Distributed data management mechanism for handling a data stream | |
US7103528B2 (en) | Emulated atomic instruction sequences in a multiprocessor system | |
CN108958903B (en) | Embedded multi-core central processor task scheduling method and device | |
US7130936B1 (en) | System, methods, and computer program product for shared memory queue | |
US20070079077A1 (en) | System, method, and computer program product for shared memory queue | |
WO1996031824A1 (en) | Operating system | |
CN108958905B (en) | Lightweight operating system of embedded multi-core central processing unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): JP US |
|
DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) |