JP2015038757A - Computer system, kernel scheduling system, resource allocation method, and process execution sharing method - Google Patents

Computer system, kernel scheduling system, resource allocation method, and process execution sharing method Download PDF

Info

Publication number
JP2015038757A
JP2015038757A JP2014204814A JP2014204814A JP2015038757A JP 2015038757 A JP2015038757 A JP 2015038757A JP 2014204814 A JP2014204814 A JP 2014204814A JP 2014204814 A JP2014204814 A JP 2014204814A JP 2015038757 A JP2015038757 A JP 2015038757A
Authority
JP
Japan
Prior art keywords
kernel
resource
operating system
resources
scheduler
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014204814A
Other languages
Japanese (ja)
Other versions
JP5891284B2 (en
Inventor
アーンスト、ビー.カーター
Ernst B Carter
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EXIT-CUBE Inc
Exit Cube Inc
Original Assignee
EXIT-CUBE Inc
Exit Cube Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by EXIT-CUBE Inc, Exit Cube Inc filed Critical EXIT-CUBE Inc
Priority to JP2014204814A priority Critical patent/JP5891284B2/en
Publication of JP2015038757A publication Critical patent/JP2015038757A/en
Application granted granted Critical
Publication of JP5891284B2 publication Critical patent/JP5891284B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)

Abstract

PROBLEM TO BE SOLVED: To allocate resources in a computer system of a multi-operating system, and thereby to avoid bottlenecks and other decrease in efficiency that result from contention of limited resources.SOLUTION: A computer system 100 includes: resources; and a plurality of processors executing a plurality of operating systems 101 to 106 that provide access to the resources. The resources include: printers; disk controllers; network controllers; and other frequently-accessed resources. Each operating system includes a kernel scheduler. The plurality of kernel schedulers mutually adjust allocation of the resources to process execution on the computer system.

Description

本発明は、コンピュータシステムに関する。より詳しくは、本発明は、複数のオペレーティングシステムを実行するコンピュータシステム上のプロセスにリソースを割り当てることに関する。   The present invention relates to a computer system. More particularly, the present invention relates to allocating resources to processes on a computer system running multiple operating systems.

コンピュータによって使用されるリソースは、コンピューティング環境によって変化し、また、それらに分散されているが、リソースは、ジョブを実行できるようにする前に、必要とされる。複数のプロセスを同時に実行するとき、それが普通であるが、ボトルネックは、リソースにおいて生じる。これらのボトルネックは、I/Oバスコントローラ、スワップシーケンス中のメモリコントローラにおいて生じることがあり、あるいは、メモリダンプが開始されたときに、それがメモリ負荷を要求するために、プログラムが中断される(preempted)ときにも発生する。   The resources used by a computer vary with the computing environment and are distributed among them, but the resources are needed before the job can be run. When running multiple processes simultaneously, it is normal, but bottlenecks occur in resources. These bottlenecks can occur in the I / O bus controller, the memory controller in the swap sequence, or the program is interrupted because it requires memory load when a memory dump is initiated Also occurs when (preempted).

ボトルネックの発生、したがってプロセス飢餓(process starvation)は、複数のオペレーティングシステムを実行するコンピュータシステムでさえも増えている。これらのオペレーティングシステム上で実行されているプロセスが増加すると、複数のプロセスが同じリソースを同時に要求する、又はリソースの解放を互いに待っているプロセスが飢餓する確率が高くなる。   The occurrence of bottlenecks, and thus process starvation, is increasing even in computer systems running multiple operating systems. As the number of processes running on these operating systems increases, there is a higher probability that multiple processes will request the same resource at the same time, or that processes waiting for each other to starve will starve.

本発明の第1の側面におけるコンピュータシステムは、複数のリソースと、複数のオペレーティングシステムを記憶したメモリとを備える。各オペレーティングシステムは、コンピュータシステム上で実行されるプロセスに対するリソースの割当を調整するカーネルスケジューラを含んでいる。一実施の形態において、また、コンピュータシステムは、複数のオペレーティングシステムのうちの異なる1つをそれぞれ実行する複数の中央演算処理装置を備える。複数のリソースは、キーボードコントローラ、ビデオコントローラ、オーディオコントローラ、ネットワークコントローラ、ディスクコントローラ、ユニバーサルシリアルバスコントローラ及びプリンタのうちの任意の2つ以上を含んでいる。   The computer system according to the first aspect of the present invention includes a plurality of resources and a memory storing a plurality of operating systems. Each operating system includes a kernel scheduler that coordinates resource allocation for processes executing on the computer system. In one embodiment, the computer system also includes a plurality of central processing units that respectively execute different ones of the plurality of operating systems. The plurality of resources include any two or more of a keyboard controller, a video controller, an audio controller, a network controller, a disk controller, a universal serial bus controller, and a printer.

好ましくは、複数のカーネルスケジューラは、リソース関連情報を、通信プロトコルを用いて共有する。一実施の形態において、通信プロトコルは、共有メモリにアクセスする。あるいは、通信プロトコルは、プロセス間通信、プロトコルスタック又は伝送制御プロトコル/インターネットプロトコル(Transmission Control Protocol/Internet Protocol:TCP/IP)を含んでいる。あるいは、通信プロトコルは、セマフォのアクセス(accessing semaphores)、パイプ(pipes)、信号(signals)、メッセージキュー、データに対するポインタ及びファイル記述子(file descriptors)を含んでいる。一実施の形態において、プロセスは、互いに通信する少なくとも3つのプロセスからなる。   Preferably, the plurality of kernel schedulers share the resource related information using a communication protocol. In one embodiment, the communication protocol accesses shared memory. Alternatively, the communication protocol includes inter-process communication, protocol stack, or Transmission Control Protocol / Internet Protocol (TCP / IP). Alternatively, the communication protocol includes semaphore accessing, pipes, signals, message queues, pointers to data, and file descriptors. In one embodiment, the process consists of at least three processes that communicate with each other.

一実施の形態において、複数のカーネルスケジューラのそれぞれは、リソースの割当を調整する関係マネージャ(relationship manager)を備える。複数の関係マネージャのそれぞれは、複数のリソースのうちの1つ以上に関するリソース情報を判定するリソースマネージャ(Resource Manager)を備える。リソース情報は、リソースが利用可能になるまでの見積時間(estimated time)である。   In one embodiment, each of the plurality of kernel schedulers includes a relationship manager that coordinates resource allocation. Each of the plurality of relationship managers includes a resource manager that determines resource information regarding one or more of the plurality of resources. The resource information is an estimated time until the resource becomes available.

本発明の第2の側面におけるコンピュータシステムは、1つのカーネルスケジューラと、複数のリソースにアクセスする複数のオペレーティングシステムカーネル(operating system kernel)とを記憶したメモリを備える。カーネルスケジューラは、複数のリソースのうちの1つのリソースを要求するプロセスを、複数のオペレーティングシステムカーネルのうちの対応する1つに割り当てる。また、コンピュータシステムは、それぞれが複数のオペレーティングシステムカーネルのうちの対応する1つを実行する複数のプロセッサを備える。   The computer system according to the second aspect of the present invention includes a memory storing one kernel scheduler and a plurality of operating system kernels that access a plurality of resources. The kernel scheduler assigns a process requesting one of the plurality of resources to a corresponding one of the plurality of operating system kernels. The computer system also includes a plurality of processors each executing a corresponding one of a plurality of operating system kernels.

一実施の形態において、カーネルスケジューラは、複数のオペレーティングシステムカーネル上のプロセスを、複数のプロセッサの負荷に基づいてスケジューリングする。   In one embodiment, the kernel scheduler schedules processes on multiple operating system kernels based on multiple processor loads.

一実施の形態において、また、コンピュータシステムは、リソースの要求を、複数のオペレーティングシステムカーネルのうちの1つ以上に照合する(matches)プロセステーブルを備える。他の実施の形態においては、また、コンピュータシステムは、複数のオペレーティングシステムカーネルのうちのペア間の通信チャンネルを備える。複数のオペレーティングシステムカーネルは、プロセッサの負荷と、リソースの利用可能性と、リソースが利用可能になるまでの見積時間とに関する情報を交換する。   In one embodiment, the computer system also includes a process table that matches resource requests to one or more of a plurality of operating system kernels. In other embodiments, the computer system also includes a communication channel between a pair of operating system kernels. Multiple operating system kernels exchange information regarding processor load, resource availability, and estimated time to resource availability.

本発明の第3の側面におけるカーネルスケジューリングシステムは、複数のプロセッサと、割当モジュール(assignment module)とを備える。複数のプロセッサのそれぞれは、1つ以上のリソースにアクセスするオペレーティングシステムカーネルを実行する。割当モジュールは、リソースにアクセスできる複数のオペレーティングシステムカーネルのうちの1つに、リソースを要求するプロセスを照合し、プロセスをディスパッチするようにプログラムされている。好ましくは、複数のプロセッサのそれぞれは、対応するプロセッサスケジューラ(processor scheduler)によって制御される。   The kernel scheduling system according to the third aspect of the present invention includes a plurality of processors and an assignment module. Each of the plurality of processors executes an operating system kernel that accesses one or more resources. The allocation module is programmed to match the process requesting the resource and dispatch the process to one of a plurality of operating system kernels that can access the resource. Preferably, each of the plurality of processors is controlled by a corresponding processor scheduler.

本発明の第4の側面におけるリソースをオペレーティングシステムカーネルに割り当てるリソース割当方法は、複数のオペレーティングシステムカーネルの中から1つのオペレーティングシステムカーネルを、そのリソースにアクセスする能力に基づいて選択するステップと、選択されたオペレーティングシステムカーネルにプロセスを割り当てるステップとを有する。複数のオペレーティングシステムカーネルの全ては、単一メモリ(single memory)内で実行される。   According to a fourth aspect of the present invention, there is provided a resource allocation method for allocating resources to an operating system kernel, selecting one operating system kernel from a plurality of operating system kernels based on the ability to access the resources, and selection Assigning a process to a designated operating system kernel. All of the multiple operating system kernels are executed in a single memory.

本発明の第5の側面におけるシングルコンピュータシステムのメモリ上の第1のオペレーティングシステムと第2のオペレーティングシステム間でプロセス実行(process execution)を共有するプロセス実行共有方法は、メモリ内でプロセスを、第1のオペレーティングシステムの制御の下に実行するステップと、プロセスの制御を、第2のオペレーティングシステムにメモリ内で移して、メモリ内でプロセスを、第2のオペレーティングシステムの制御の下に実行するステップとを有する。このように、プロセスは、第2のオペレーティングシステムの制御の下に、メモリ内で実行される。第1のオペレーティングシステムと第2のオペレーティングシステムの制御の下でのプロセスの実行の両方では、単一のリソースにアクセスする。一実施の形態において、プロセス実行共有方法は、第1のオペレーティングシステムと第2のオペレーティングシステム間で、共有メモリ、プロセス間通信及びセマフォのうちの1つを用いて、プロセス情報を交換するステップを更に有する。   According to a fifth aspect of the present invention, there is provided a process execution sharing method for sharing process execution between a first operating system and a second operating system on a memory of a single computer system. Executing under the control of one operating system, and transferring control of the process to the second operating system in memory and executing the process in memory under the control of the second operating system. And have. In this way, the process is executed in memory under the control of the second operating system. Both the execution of the process under the control of the first operating system and the second operating system access a single resource. In one embodiment, a process execution sharing method includes the step of exchanging process information between a first operating system and a second operating system using one of shared memory, interprocess communication, and semaphores. Also have.

本発明の一実施の形態に基づくカーネル動作スケジューラ(KOS)の概念図である。It is a conceptual diagram of a kernel operation scheduler (KOS) based on one embodiment of this invention. 本発明の他の実施の形態に基づくカーネル動作スケジューラ(KOS)の概念図である。It is a conceptual diagram of the kernel operation | movement scheduler (KOS) based on other embodiment of this invention. 本発明の一実施の形態に基づくカーネルプロセススケジューリングの状態遷移図である。It is a state transition diagram of kernel process scheduling based on one embodiment of the present invention. 本発明の一実施の形態に基づくKOS設計の追加機能を有するシステムを示す図である。FIG. 2 is a diagram showing a system having an additional function of KOS design according to an embodiment of the present invention. 本発明の一実施の形態に基づくシステム内のスターコアカーネル構成を示す図である。It is a figure which shows the star core kernel structure in the system based on one embodiment of this invention. 本発明の一実施の形態に基づき、チャンネルを介して通信する複数のカーネルのハイレベルのブロック図である。FIG. 3 is a high-level block diagram of multiple kernels communicating over a channel according to one embodiment of the present invention. 本発明の一実施の形態に基づき、カーネルスケジューラ間で通信する共有メモリを示す図である。FIG. 3 is a diagram illustrating a shared memory communicating between kernel schedulers, according to one embodiment of the present invention. 本発明の一実施の形態に基づく、リソースプロセスを確保するフィルタを有するカーネルスケジューラを示す図である。FIG. 3 is a diagram illustrating a kernel scheduler having a filter that reserves resource processes according to an embodiment of the present invention. 複数のリソースをプロセスに割り当てるスター構成のKOSを示す図である。It is a figure which shows KOS of the star structure which allocates a some resource to a process. 本発明の実施の形態がオペレーティングシステムの機能をどのように分散するかを示す本発明の一実施の形態に基づくフローチャートである。6 is a flowchart based on an embodiment of the present invention showing how an embodiment of the present invention distributes operating system functionality. 符号化プロトコル(encoded protocol)を知らせる、本発明の一実施の形態に基づくカーネルスケジューラを示す図である。FIG. 2 is a diagram illustrating a kernel scheduler according to an embodiment of the present invention that informs an encoded protocol. 本発明の実施の形態に基づく通信ポートを介して、プロセスがどのように通信するかを示すブロック図である。FIG. 6 is a block diagram illustrating how processes communicate via a communication port according to an embodiment of the present invention. リソースを、本発明の一実施の形態に基づくオペレーティングシステムにマッピングするテーブルを示す図である。FIG. 6 is a diagram illustrating a table for mapping resources to an operating system according to an embodiment of the present invention. リソース情報を、共有メモリを用いて交換する独立したカーネルスケジューラを示す図である。It is a figure which shows the independent kernel scheduler which exchanges resource information using a shared memory. 図15Aは、複数のオペレーティングシステムのそれぞれが有する、他のオペレーティングシステムの状態を示すテーブルを示す図であり、図15Bは、複数のオペレーティングシステムのそれぞれが有する、他のオペレーティングシステムの状態を示すテーブルを示す図であり、図15Cは、複数のオペレーティングシステムのそれぞれが有する、他のオペレーティングシステムの状態を示すテーブルを示す図である。FIG. 15A is a diagram illustrating a table indicating the state of another operating system included in each of a plurality of operating systems, and FIG. 15B is a table indicating a state of another operating system included in each of the plurality of operating systems. FIG. 15C is a diagram illustrating a table indicating the states of other operating systems included in each of the plurality of operating systems. 本発明の一実施の形態に基づく独立したカーネルスケジューラによって用いられ、交換されるリソース情報を示す図である。FIG. 7 is a diagram showing resource information used and exchanged by an independent kernel scheduler according to an embodiment of the present invention. 本発明の一実施の形態に基づく独立したカーネルスケジューラが、どのようにリソース情報を交換するかを示すハイレベルの図である。FIG. 6 is a high level diagram showing how independent kernel schedulers according to one embodiment of the present invention exchange resource information. 本発明の一実施の形態に基づくオペレーティングシステムカーネルを介して、リソースをプロセスにどのように割り当てるかを示すハイレベルの図である。FIG. 6 is a high-level diagram showing how resources are allocated to processes via an operating system kernel according to an embodiment of the invention. コマンドカーネルと、その関係マネージャと、3つのリソースとのハイレベルのブロック図である。FIG. 4 is a high level block diagram of a command kernel, its relationship manager, and three resources. プロセス識別子と、プロセス識別子が割り当てられたリソースと、プロセスの優先度とを格納する本発明の一実施の形態に基づくプロセステーブルを示す図である。It is a figure which shows the process table based on one embodiment of this invention which stores a process identifier, the resource to which the process identifier was allocated, and the priority of a process. 本発明の一実施の形態に基づくオペレーティングシステムに、リソースを割り当てる方法を示すフローチャートである。6 is a flowchart illustrating a method for allocating resources to an operating system according to an embodiment of the present invention. 本発明の一実施の形態に基づくオペレーティングシステムカーネルに、基準を用いて、プロセスを割り当てる方法のフローチャートである。6 is a flowchart of a method for allocating processes using criteria to an operating system kernel according to an embodiment of the present invention. 本発明の一実施の形態に基づくオペレーティングシステムに、プロセスを割り当てるシーケンスを示す図である。It is a figure which shows the sequence which allocates a process to the operating system based on one embodiment of this invention.

本発明に基づく、直列に動作する(run in tandem)複数のオペレーティングシステムは、リソースを必要とするプロセスに割り当てるリソースを共有し、これによって、ボトルネック及びリソース競合の他の徴候を低減する。一実施の形態において、リソースは、リソースを必要とするプロセスにリソースを割り当てるオペレーティングシステムを調整する中央のカーネル動作スケジューラ(central kernel operating scheduler)を用いて、集中的に割り当てられる。他の実施の形態において、リソースは、ピアツーピア方式で、リソースの配分をそれら自体で調整するオペレーティングシステムによって供給される。この実施の形態では、オペレーティングシステムは、確立されたプロトコル(well-established protocols)を用いて、通信する。   Multiple operating systems that run in tandem in accordance with the present invention share resources that are allocated to processes that require resources, thereby reducing bottlenecks and other indications of resource contention. In one embodiment, resources are allocated centrally using a central kernel operating scheduler that coordinates an operating system that allocates resources to processes that require the resources. In other embodiments, the resources are provided by an operating system that coordinates the allocation of resources on a peer-to-peer basis. In this embodiment, the operating system communicates using well-established protocols.

本発明においては、コンピュータシステム上で実行される幾つかのオペレーティングシステムは、特定のタスクを実行するように特化されている。特定のリソース割当に対する要求を実行するように特化されたオペレーティングシステムでは、他の要求が溜まっている(backlogged)リソースに対する要求が受信されると直ちに、オーバフローした要求は、中央のオペレーティングシステム(centralized Operating System)ではなく、リソースオペレーティングシステムによって、単にキューに入れられる。   In the present invention, several operating systems running on a computer system are specialized to perform specific tasks. In an operating system specialized to fulfill a request for a specific resource allocation, as soon as a request for a backlogged resource is received, the overflowed request is sent to the centralized operating system (centralized It is simply queued by the resource operating system, not the Operating System).

プロセス管理(Process management)
カーネルの主な仕事は、アプリケーションの実行を許可し、例えばハードウェアを抽象化する機能によって、アプリケーションを支援することである。プロセスは、アプリケーションがどのメモリ部分にアクセスできるかを定義する(この導入部では、プロセス、アプリケーション及びプログラムは、同義語として用いられている)。カーネルのプロセス管理は、メモリ保護が組み込まれたハードウェアを考慮しなければならない。
Process management
The main task of the kernel is to allow the application to run and support the application, for example by the ability to abstract hardware. A process defines what memory portion an application can access (in this introduction, process, application and program are used as synonyms). Kernel process management must consider hardware with built-in memory protection.

アプリケーションを動作させるために、カーネルは、通常、アプリケーション用のアドレス空間を準備して、(多くの場合は、デマンドページングによって、)アプリケーションのコードを含むファイルをメモリにロードし、プログラムのスタックを準備して、プログラム内の所定の位置に分岐するように、アプリケーションの実行を開始する。   To run an application, the kernel typically prepares an address space for the application, loads a file containing the application's code into memory (often by demand paging), and prepares the program stack Then, execution of the application is started so as to branch to a predetermined position in the program.

マルチタスクのカーネルは、コンピュータが物理的に同時に動作させることができるプロセスの最大数よりも多くのプロセスがコンピュータ上で同時に動作しているような錯覚を、ユーザに与えることができる。通常、コンピュータシステムが同時に動作させることができるプロセスの数は、実装されているCPUの数に等しい(なお、プロセッサが同時マルチスレッディング(simultaneous multithreading)をサポートしている場合は、この限りではない)。   A multitasking kernel can give the user the illusion that more processes are running on the computer simultaneously than the maximum number of processes that the computer can physically run simultaneously. Typically, the number of processes that a computer system can run simultaneously is equal to the number of CPUs implemented (note that this is not the case if the processor supports simultaneous multithreading).

プリエンプティブマルチタスクシステム(preemptive multitasking system)では、カーネルは、タイムスライスを全てのプログラムに与え、これらのプロセスが同時に実行されているかのようにユーザに見せるほど速く、プロセスから他のプロセスに切り換える。カーネルは、スケジューリングアルゴリズムを用いて、次にどのプロセスを動作させるか、及びどのくらいの時間を与えるかを決定する。選択されたスケジューリングアルゴリズムは、あるプロセスに他のプロセスよりも高い優先度を与えることができる。また、カーネルは、通常、これらのプロセスに、通信する方法を提供する。この方法は、プロセス間通信(inter-process communication:IPC)と呼ばれ、主な手法は、共有メモリ(shared memory)、メッセージパッシング(message passing)及びリモートプロシージャコール(remote procedure calls)である。   In a preemptive multitasking system, the kernel provides time slices to all programs and switches from one process to another fast enough to make the user appear as if these processes are running simultaneously. The kernel uses a scheduling algorithm to determine which process to run next and how much time to give. The selected scheduling algorithm can give one process higher priority than other processes. The kernel also usually provides a way to communicate to these processes. This method is called inter-process communication (IPC), and the main techniques are shared memory, message passing, and remote procedure calls.

他のコンピュータシステム(特に、より小型で、より性能が低いコンピュータ)は、協調的マルチタスク(co-operative multitasking)を有し、協調的マルチタスクでは、各プロセスは、他のプロセスに切り換えてもよいことをカーネルに告げる特別な要求を出すまでは、中断することなく、動作することができる。このような要求は、「明け渡し(yielding)」と呼ばれ、通常、プロセス間通信の要求に応じて、あるいは発生するイベントを待つために、起こる。Windows(登録商標)及びMacOS(登録商標)の旧バージョンは、何れも、協調的マルチタスクを用いていたが、これらは、対象のコンピュータの性能が高まったので、プリエンプティブ方式に切り換えられた。   Other computer systems (especially smaller and less powerful computers) have co-operative multitasking, where each process can switch to another process. It can work without interruption until it makes a special request to tell the kernel what is good. Such a request is called “yielding” and usually occurs in response to a request for inter-process communication or to wait for an event to occur. Both previous versions of Windows (registered trademark) and MacOS (registered trademark) used cooperative multitasking, but these were switched to a preemptive method as the performance of the target computer increased.

また、オペレーティングシステムは、マルチプロセス(対称型マルチプロセッサ(Symmetric Multiprocessor:SMP)又は非均質メモリアクセス(Non-Uniform Memory Access))をサポートしていることもある。この場合、異なるプログラム及びスレッドは、異なるプロセッサ上で動作することができる。このようなオペレーティングシステムのカーネルは、カーネルがそのコードの2つの異なる部分を同時に問題なく動作できることを意味するリエントラント(re-entrant)となるように設計しなければならない。これは、通常、2つのプロセッサが同時に同じデータを変更しようとしないことを保証する同期機構(例えばスピンロック(spinlock))を設けることを意味する。   The operating system may also support multi-process (Symmetric Multiprocessor (SMP) or Non-Uniform Memory Access). In this case, different programs and threads can run on different processors. The kernel of such an operating system must be designed to be re-entrant which means that the kernel can operate two different parts of its code simultaneously without problems. This usually means providing a synchronization mechanism (eg, spinlock) that ensures that no two processors attempt to change the same data at the same time.

メモリ管理(Memory Management)
オペレーティングシステムには、通常、カーネル、すなわちコンピュータの中核として動作する一群の中心的な制御プログラム(centralized control program)が組み込まれている。これらの制御プログラムの中には、次のプロセスに対してCPU時間を直列に予約する役割を果たすスケジューラプログラムが含まれている。本発明は、1CPU当たり1オペレーティングシステムであって、複数のCPU上で動作する複数のオペレーティングシステムを用いる。各オペレーティングシステムは、カーネル動作スケジューラ(Kernel Operational Scheduler:KOS)と呼ぶ独特なスケジューラプログラムを有する専用のカーネルを有する。全てのKOSは、初期化中に、それ自体を構成する能力を有し、コンピュータシステムに搭載されている各CPU用のオペレーティングシステムカーネル(operating system kernel)のバイナリコードのコピーをシステム生成(sysgen)する(システム生成とは、特定の、独自に定められたオペレーティングシステム、又は独立したソフトウェアコンポーネントを組み合わせることによって、他のプログラムを生成することを意味する)。各カーネルが、一旦、適切に準備されて、各CPUに連結されると、KOSスケジューラ(KOS schedulers)は、各カーネル間の通信を確立し、どのカーネルがどのリソースを制御するかを決定する。
Memory management
Operating systems typically incorporate a kernel, a group of centralized control programs that operate as the core of a computer. These control programs include a scheduler program that serves to reserve CPU time in series for the next process. The present invention uses one operating system per CPU and a plurality of operating systems operating on a plurality of CPUs. Each operating system has a dedicated kernel with a unique scheduler program called the Kernel Operational Scheduler (KOS). Every KOS has the ability to configure itself during initialization, and a system generated (sysgen) binary code copy of the operating system kernel for each CPU installed in the computer system (System generation means generation of another program by combining a specific, uniquely defined operating system, or independent software components). Once each kernel is properly prepared and connected to each CPU, KOS schedulers establish communication between each kernel and determine which kernel controls which resource.

カーネルの様々な設計法(Kernel-Wide Design Approaches)
上述したタスク及び特徴は、当然、設計及び実装が互いに異なる様々な方法で提供することができる。
Kernel-Wide Design Approaches
The tasks and features described above can of course be provided in a variety of ways that differ in design and implementation.

マイクロカーネル(microkernel)の原理とモノリシックカーネル(monolithic kernel)の原理の根本的な違いは、メカニズム(mechanism)とポリシ(policy)の分離の原理である。ここで、メカニズムとは、多くの異なるポリシを実装できる支持体(support)であり、一方、ポリシとは、特定の動作モード(mode of operation)である。必要最低限のマイクロカーネルの中には、幾つかの非常に基本的なポリシのみが含まれており、そのメカニズムによって、(メモリ管理、ハイレベルのプロセススケジューリング、ファイルシステム管理等のような)ポリシのうちのどのポリシを採用すべきかを決定する基本的なポリシが、カーネルの一番上(オペレーティングシステムの残りの部分及び他のアプリケーションよりも上部)で動作することができる。一方、モノリシックカーネルは、それよりも多くのポリシを含む傾向にあり、したがって、オペレーティングシステムの残り部分は、これらのポリシに依存するように制限される。このメカニズムとポリシの分離を適切に行わないことは、既存のオペレーティングシステムにおける重大な技術革新の欠如の主な原因であり、コンピュータアーキテクチャにおける共通の問題である。モノリシックカーネル設計は、保護に対するカーネルモード/ユーザモード構成法(kernel mode/user mode architectural approach、技術的には、多段階保護領域(hierarchical protection domain)構成法と呼ばれる)によって行われ、これは、従来の商用オペレーティングシステムにおいて一般的である。したがって、保護を必要とするあらゆるモジュールは、実際に、カーネルに入れられている。モノリシックカーネル設計と特権モード(privileged mode)間のこのリンクは、メカニズムとポリシの分離の重要な問題に帰結し、実際、特権モード構成法(privileged mode architectural approach)は、保護メカニズム(protection mechanism)をセキュリティポリシ(security policy)に融合し、一方、主要な他の構成法(architectural approach)、能力ベースのアドレッシング(capability-based addressing)は、この2つを明確に区別し、自然に、マイクロカーネル設計に通じる(保護とセキュリティの分離を参照)。   The fundamental difference between the principle of microkernel and the principle of monolithic kernel is the principle of separation of mechanism and policy. Here, a mechanism is a support on which many different policies can be implemented, while a policy is a specific mode of operation. The minimal microkernel contains only a few very basic policies, and its mechanism allows policy (such as memory management, high-level process scheduling, file system management, etc.) The basic policy that determines which of these policies should be employed can run on top of the kernel (above the rest of the operating system and other applications). On the other hand, monolithic kernels tend to include more policies, and therefore the rest of the operating system is limited to rely on these policies. Inadequate separation of this mechanism and policy is a major cause of a lack of significant innovation in existing operating systems and a common problem in computer architecture. Monolithic kernel design is done by a kernel mode / user mode architectural approach (technically called a hierarchical protection domain construction method), which is traditionally It is common in commercial operating systems. Thus, every module that needs protection is actually in the kernel. This link between monolithic kernel design and privileged mode results in an important issue of mechanism and policy separation; in fact, the privileged mode architectural approach has a protection mechanism. Fusion with security policy, while other major architectural approaches and capability-based addressing clearly distinguish between the two and naturally, microkernel design Leads to (see Separation of protection and security).

モノリシックカーネルは、それらのコードの全てを、同一のアドレス空間(カーネル空間)で実行するが、マイクロカーネルは、それらのサービスの殆どを、ユーザ空間で動作させることによって、コードベース(codebase)の保守性及びモジュール性を向上させることを意図している。殆どのカーネルは、厳密には、これらの分類の1つに収まらず、これらの2つの設計の中間に位置する。これらは、ハイブリッドカーネル(hybrid kernel)と呼ばれる。より斬新な設計、例えばナノカーネル(nanokernel)及びエクソカーネル(exokernel)が利用可能であるが、製品のオペレーティングシステムとしては殆ど使用されていない。例えば、Xenハイパーバイザー(Xen hypervisor)は、エクソカーネルである。   Monolithic kernels execute all of their code in the same address space (kernel space), while microkernels maintain the codebase by running most of their services in user space. It is intended to improve performance and modularity. Most kernels do not fit strictly in one of these classifications, and lie in the middle of these two designs. These are called hybrid kernels. More novel designs such as nanokernel and exokernel are available, but are rarely used as product operating systems. For example, the Xen hypervisor is an exokernel.

モノリシックカーネル(Monolithic Kernel)
モノリシックカーネルのダイヤグラム
モノリシックカーネルでは、全てのOSサービスは、主要なカーネルスレッド(kernel thread)と一緒に動作し、したがって、同じメモリ領域に存在する。この方法は、豊かで強力なハードウェアアクセスを提供する。何人かの開発者、例えばUNIX(登録商標)開発者であるケン・トンプソン(Ken Thompson)は、他の解決法に比べて、モノリシックカーネルのオペレーティングシステムは、設計及び実装が容易であると主張している。モノリシックカーネルの主な短所は、オペレーティングシステムのコンポーネント間の依存性、例えばデバイスドライバにおけるバグがオペレーティングシステム全体をクラッシュさせる可能性があり、大きなカーネルは、保守が非常に難しいという事実がある。
Monolithic kernel
Monolithic Kernel Diagram In a monolithic kernel, all OS services operate with the main kernel thread and therefore reside in the same memory area. This method provides rich and powerful hardware access. Some developers, such as UNIX developer Ken Thompson, argue that compared to other solutions, the operating system of a monolithic kernel is easier to design and implement. ing. The main disadvantage of monolithic kernels is the fact that dependencies between operating system components, such as bugs in device drivers, can crash the entire operating system, and large kernels are very difficult to maintain.

マイクロカーネル(Microkernel)
マイクロカーネル法(microkernel approach)では、カーネル自体は、以前のカーネルの機能、例えばデバイスドライバ、GUIサーバ等を承継した独立のプログラムをサーバが実行できるようにする基本機能だけを備える。
Microkernel
In the microkernel approach, the kernel itself has only basic functions that allow the server to execute independent programs that inherit the functions of the previous kernel, such as device drivers, GUI servers, and the like.

マイクロカーネル法は、必要最低限のOSサービス、例えばメモリ管理、マルチタスク及びプロセス間通信を実行する一連の基本命令(primitive)、すなわちシステムコール(system call)によって、ハードウェアの単純な抽象化(abstraction)を定義することを含んでいる。通常、カーネルが提供するサービスを含む他のサービス、例えばネットワークサービスは、サーバと呼ばれるユーザ空間のプログラムで実行される。マイクロカーネルは、モノリシックカーネルに比べて簡単に保守することができるが、システムコール及びコンテキストスイッチ(context switch)が多くなり、このようなシステムコール及びコンテキストスイッチは、典型的に、単純な関数コール(plain function call)に比べて、より大きなオーバヘッドを発生するので、処理速度が低下する可能性がある。   The microkernel method is a simple abstraction of hardware (system calls) by a series of primitives or system calls that perform the minimum required OS services such as memory management, multitasking and interprocess communication. including the definition of abstraction). Normally, other services including services provided by the kernel, such as network services, are executed by a user space program called a server. Microkernels are easier to maintain than monolithic kernels, but they have more system calls and context switches, and such system calls and context switches are typically simple function calls ( Compared with plain function call), a larger overhead is generated, which may reduce the processing speed.

マイクロカーネルでは、オペレーティングシステムの残りの部分を、高級言語で書かれた普通のアプリケーションプログラムとして実装することができ、同じカーネルを、変更することなく、異なるオペレーティングシステム上で用いることができる。また、複数のオペレーティングシステム間を動的に切り換えて、複数のオペレーティングシステムを同時にアクティブにすることができる。   In a microkernel, the rest of the operating system can be implemented as a normal application program written in a high-level language, and the same kernel can be used on different operating systems without modification. In addition, it is possible to dynamically switch between a plurality of operating systems and activate a plurality of operating systems simultaneously.

モノリシックカーネル対マイクロカーネル
コンピュータのカーネルが進化するにつれ、幾つかの問題が明らかになってきた。最も明白な問題の1つは、メモリ使用量(footprint)が増えるということである。これは、仮想メモリシステムを改良することによって、ある程度軽減されるが、全てのコンピュータアーキテクチャが仮想メモリをサポートしているわけではない。カーネルのメモリ使用量を少なくするためには、大規模な編集を行い、不必要なコードを注意深く除去する必要があり、これは、数百万ものコード行を有するカーネルの部分間の相互依存性が理解し難いので、非常に困難である。モノリシックカーネルが抱える問題のために、モノリシックカーネルは、1990年代初頭には、時代遅れであるとみなされていた。この結果、マイクロカーネルではなく、モノリシックカーネルを採用したLinux(商標)の設計は、リーヌス・トーヴァルズ(Linus Torvalds)と、アンドリュー・タネンバウム(Andrew Tanenbaum)との間の有名な議論の主題となった。タネンバウム/トーヴァルズ議論では、何れの意見にも長所があった。初期のUNIXの開発者ケン・トンプソン(Ken Thompson)を含む何名かは、マイクロカーネル設計は、美的に魅力があるが、モノリシックカーネルの方がより簡単に実装できると主張した。しかしながら、モノリシックカーネルのオペレーティングシステムにおけるバグは、通常、オペレーティングシステム全体をクラッシュさせ、一方、サーバがメインスレッドとは別に動作するマイクロカーネルでは、このようなことは起こらない。モノリシックカーネルの支持者は、間違ったコードがカーネルに入ることはなく、また、マイクロカーネルは、コードが正しいことによる利点を殆ど提供しないと結論づけている。マイクロカーネルは、多くの場合、クラッシュに対する耐性(crash tolerance)が重要な埋め込み型のロボット用コンピュータ又は医療用コンピュータにおいて用いられており、殆どのOSのコンポーネントは、それ自体に専用の保護されたメモリ空間に存在する。これは、モノリシックカーネルでは不可能であり、最新のモジュールローディングのモノリシックカーネルでも不可能である。
Monolithic vs. Microkernel As the computer kernel evolved, several problems became apparent. One of the most obvious problems is the increased memory footprint. This is mitigated to some extent by improving the virtual memory system, but not all computer architectures support virtual memory. Reducing kernel memory usage requires extensive editing and careful removal of unnecessary code, which is an interdependence between parts of the kernel with millions of lines of code It is very difficult because it is difficult to understand. Due to the problems with monolithic kernels, monolithic kernels were considered obsolete in the early 1990s. As a result, the Linux ™ design, which adopted a monolithic kernel rather than a microkernel, became the subject of a well-known discussion between Linus Torvalds and Andrew Tanenbaum. In the Tannenbaum / Torvalz debate, each opinion had its advantages. Some people, including early UNIX developer Ken Thompson, argued that microkernel design is aesthetically appealing, but monolithic kernels are easier to implement. However, bugs in the operating system of a monolithic kernel usually cause the entire operating system to crash, while this does not happen in a microkernel where the server operates separately from the main thread. Monolithic kernel advocates conclude that wrong code never enters the kernel, and that the microkernel offers little benefit from correct code. Microkernels are often used in embedded robotic or medical computers where crash tolerance is important, and most OS components have their own protected memory dedicated to them. Exists in space. This is not possible with a monolithic kernel, and not even with the latest module loading monolithic kernel.

性能(Performance)
モノリシックカーネルは、システム性能を高めるために、そのコードの全てを同じアドレス空間(カーネル空間)に有するように設計されている。何人かの開発者、例えばUNIXの開発者のケン・トンプソンは、モノリシックカーネルのオペレーティングシステムは、プログラムを上手く書けば、非常に効率が良いと主張している。マイクロカーネル設計における、通常メッセージパッシング(message passing)に基づくプロセス間通信(IPC)方式は低速であり、モノリシックモデルは、このIPCではなく、共有カーネルメモリを用いることによって、より効率が良い傾向にある。
Performance
A monolithic kernel is designed to have all of its code in the same address space (kernel space) to enhance system performance. Some developers, such as UNIX developer Ken Thompson, argue that the operating system of a monolithic kernel is very efficient if the program is written well. In the microkernel design, the interprocess communication (IPC) method, usually based on message passing, is slow and the monolithic model tends to be more efficient by using shared kernel memory instead of this IPC. .

1980年代及び1990年代初頭に構成されたマイクロカーネルの性能は、劣っていた。特定のマイクロカーネルの幾つかの性能を実験に基づいて測定した研究でも、このような効率が悪い理由は解析されなかった。これらの性能に関する説明は、カーネルモードからユーザモードに切り換える周波数を高め(なお、保護のこのような多段階設計は、マイクロカーネルに固有なものではない)、プロセス間通信の周波数を高め(なお、IPCは、以前に信じられていた速度よりも一桁速く実行することができる)、及びコンテキストスイッチの周波数を高めることによる一般的で、証明されていない考えを有する伝説(folklore)とされた。実際、これらの性能が低い理由は、1995年に推測されたのと同様に、(1)全てのマイクロカーネル法の実際の効率の悪さ、(2)これらのマイクロカーネルに実装された特定の概念、(3)これらの概念の特定の実装のためである。したがって、効率の良いマイクロカーネルを構成する解決法がある場合、以前の試みと異なり、正しい構成技術を適用する研究が残された。   The performance of microkernels constructed in the 1980s and early 1990s was poor. Studies that measured some performance of specific microkernels based on experiments did not analyze the reason for such inefficiency. These performance descriptions increase the frequency of switching from kernel mode to user mode (note that such a multi-stage design of protection is not unique to microkernels) and increase the frequency of interprocess communication (note that IPC has been made a folklore with a common, unproven idea by increasing the frequency of context switches, and can run an order of magnitude faster than previously believed. In fact, the reasons for their low performance are (1) the actual inefficiencies of all the microkernel methods, and (2) the specific concepts implemented in these microkernels, as estimated in 1995. (3) because of the specific implementation of these concepts. Therefore, if there is a solution to construct an efficient microkernel, unlike previous attempts, there remains research to apply the correct construction technique.

一方、モノリシックカーネルの設計に通じる多段階保護領域のアーキテクチャは、保護の異なるレベル間で相互作用がある毎に(すなわち、プロセスが、データ構造をユーザモードとスーパバイザモード(supervisor mode)の両方で処理しなければならいときに)、重要性によってメッセージをコピーする必要があるので、重大な性能の低下を有している。殆どの研究者は、l990年代半ばまでに、注意深く調整することによって、このオーバヘッドを劇的に削減できるという考えを諦めたが、近年、より新しいマイクロカーネルは、性能を上げるために、最適化されている。   On the other hand, the multi-level protection domain architecture that leads to the design of the monolithic kernel has an interaction between different levels of protection (ie, the process handles the data structure in both user mode and supervisor mode). When it has to be done, it has a serious performance degradation because it needs to copy messages by importance. Most researchers have given up the idea that by carefully tuning this overhead can be dramatically reduced by the mid-1990s, but in recent years newer microkernels have been optimized to increase performance. ing.

ハイブリッドカーネル(Hybrid kernel)
ハイブリッドカーネル法(hybrid kernel approach)は、モノリシックカーネルの速さ及び設計の容易さを、マイクロカーネルのモジュール性及び実行時の安全性と組み合わせることを試みたものである。
Hybrid kernel
The hybrid kernel approach attempts to combine the speed and ease of design of a monolithic kernel with the modularity and runtime security of a microkernel.

ハイブリッドカーネルは、本質的には、モノリシックカーネル法(monolithic kernel approach)とマイクロカーネルのオペレーティングシステム間の妥協案である。これは、従来のマイクロカーネルの性能におけるオーバヘッドを低減するために、幾つかのサービス(例えばネットワークスタック又はファイルシステム)はカーネル空間で動作させるが、カーネルコード(例えばデバイスドライバ)はユーザ空間のサーバとして動作させることを意味する。   The hybrid kernel is essentially a compromise between the monolithic kernel approach and the microkernel operating system. This is because some services (eg network stack or file system) run in kernel space to reduce the overhead in the performance of traditional microkernels, but kernel code (eg device drivers) acts as a user space server Means to work.

ナノカーネル(Nanokernel)
ナノカーネルは、割込コントローラ、すなわちタイマのような最も基本的なサービスさえも含む全てのサービスを、実質的に、デバイスドライバに委ね(delegate)、カーネルに必要なメモリを、従来のマイクロカーネルよりも更に少なくしている。
Nanokernel
The nanokernel effectively delegates all services, including even the most basic services such as interrupt controllers, ie timers, to the device driver and frees up the memory required by the kernel over traditional microkernels. Is even less.

エクソカーネル(Exokernel)
エクソカーネルは、ハードウェアを理論モデルに抽象化しない種類のカーネルである。論理モデルの代わりに、エクソカーネルは、物理的ハードウェアリソース、例えばCPU時間、メモリページ及びディスクブロックを異なるプログラムに割り当てる。エクソカーネル上で動作するプログラムは、エクソカーネルを用いて周知のOSの抽象化をシミュレートするライブラリオペレーティングシステムにリンクすることができ、あるいは、性能を高めるために、特定用途向けの抽象化を行うことができる。
Exokernel
Exokernel is a kind of kernel that does not abstract hardware into a theoretical model. Instead of a logical model, the exokernel allocates physical hardware resources such as CPU time, memory pages and disk blocks to different programs. Programs running on the exokernel can be linked to a library operating system that simulates the well-known OS abstraction using the exokernel, or provide application specific abstractions to increase performance be able to.

スケジューリング(Scheduling)
スケジューリングは、コンピュータのマルチタスク及びマルチプロセスオペレーティングシステム設計、並びにリアルタイムオペレーティングシステム設計におけるキーコンセプト(key concept)である。スケジューリングは、優先順位付きキュー(priority queue)の優先度を、プロセスに割り当てる方法である。この割当は、スケジューラとして知られているソフトウェアによって実行される。
Scheduling
Scheduling is a key concept in computer multitasking and multiprocess operating system design, and real-time operating system design. Scheduling is a method of assigning priority of a priority queue to a process. This allocation is performed by software known as a scheduler.

また、スケジューラは、リアルタイム環境、産業界における自動制御のためのモバイル機器(例えばロボティクス)では、プロセスがデッドラインに間に合うことを保証するようにしなければならない。これは、オペレーティングシステムを安定に保つためには重要である。スケジューリングされたタスクは、モバイル機器に送られて、管理用のバックエンド(administrative back end)によって管理される。   In addition, the scheduler must ensure that processes are in time for deadlines in real-time environments, mobile devices for automated control in industry (eg, robotics). This is important for keeping the operating system stable. Scheduled tasks are sent to the mobile device and managed by an administrative back end.

オペレーティングシステムのスケジューラの種類
オペレーティングシステムは、長期スケジューラ(別名、入力スケジューラ(admission scheduler))、中間的又は中期スケジューラ、及び短期スケジューラ(別名、ディスパッチャ(dispatcher))といった最大3つの異なる種類のスケジューラを備えることができる。
Operating System Scheduler Types The operating system includes up to three different types of schedulers: a long-term scheduler (also known as an admission scheduler), an intermediate or medium-term scheduler, and a short-term scheduler (also known as a dispatcher). be able to.

長期スケジューラ、すなわち入力スケジューラは、どのジョブ又はプロセスを実行可能キューに入れるかを決定し、すなわち、長期スケジューラは、プログラムを実行しようとするとき、それを現在実行しているプロセスの組に直ちに追加するか、遅延して追加するかを決定する。したがって、この長期スケジューラは、オペレーティングシステム上でどのプロセスを動作させるかを決定する(dictate)とともに、同時にサポートする並列性の程度を決定し、すなわち、同時に実行するプロセスの数を多くするか少なくするか、処理するI/O負荷が高いプロセス(I/O intensive process)とCPU負荷が高いプロセス(CPU intensive process)とをどのように分けるかを決定する。通常、デスクトップコンピュータでは、このような長期スケジューラは存在せず、プロセスは、自動的にオペレーティングシステムに許可される。しかしながら、プロセスのデッドラインを間に合わせるオペレーティングシステムの能力は、オペレーティングシステムが問題なく処理できるプロセスの数よりも多くを許可することによって生じる処理速度の低下(slowdown)及び競合(contention)によって、低下するので、リアルタイムオペレーティングシステムでは、この種のスケジューリングが非常に重要である。   The long-term scheduler, or input scheduler, decides which jobs or processes to put in the runnable queue, that is, the long-term scheduler immediately adds it to the set of currently running processes when it tries to run the program Decide whether to add it later or later. Therefore, this long-term scheduler determines which processes run on the operating system (dictate) and also determines the degree of parallelism that is supported simultaneously, i.e., increases or decreases the number of processes running simultaneously Alternatively, it is determined how to separate a process with high I / O load (I / O intensive process) and a process with high CPU load (CPU intensive process). Typically, on a desktop computer there is no such long-term scheduler and the process is automatically granted to the operating system. However, the ability of the operating system to keep up with process deadlines is diminished by slowdown and contention caused by allowing more than the number of processes that the operating system can handle without problems. So this kind of scheduling is very important in a real-time operating system.

中期スケジューラは、仮想メモリを有する全てのオペレーティングシステムに存在し、プロセスを、メインメモリ(main memory)から2次メモリ(secondary memory、例えばディスクドライブ)に一時的に退避させ、また、これとは逆に、2次メモリからメインメモリに戻す。このような処理は、一般的に、スワップアウト(swapping out)とスワップイン(swapping in)と呼ばれる(不正確ではあるが、ページアウト(paging out)とページイン(paging in)とも呼ばれる)。中期スケジューラは、ある時間アクティブでないプロセス、優先度が低いプロセス、頻繁にページフォールトを起こしているプロセス、又は大量のメモリを確保しているプロセスを、スワップアウトして、メインメモリを他のプロセスに空け、後で、より多くのメモリが利用可能となったとき、あるいはプロセスのブロックが外されて、リソースを最早待たなくなったときに、これらのプロセスをスワップインして、メインメモリに戻すことを決定する。   The medium-term scheduler exists in all operating systems that have virtual memory and temporarily saves the process from main memory to secondary memory (for example, a disk drive) and vice versa. Return from the secondary memory to the main memory. Such processing is generally called swapping out and swapping in (although it is also inaccurate, it is also called paging out and paging in). The medium-term scheduler swaps out processes that are inactive for some time, low-priority processes, processes that frequently cause page faults, or processes that have a large amount of memory to make main memory available to other processes. Free up and later swap these processes back into main memory when more memory becomes available or when the process is unblocked and no longer waits for resources. decide.

今日の多くのオペレーティングシステム(スワップファイル以外に、仮想アドレス空間を補助記憶装置にマッピングすることをサポートしたオペレーティングシステム)では、中期スケジューラは、バイナリコードを実行するときに、バイナリコードをスワップアウトされたプロセスとして取り扱うことによって、実際には、長期スケジューラの役割を果たしている。このように、バイナリコードの一部が必要なときに、バイナリコードの一部は、要求があり次第、スワップインすることができ、又はゆっくりとロード(lazy loaded)することができる。   In many of today's operating systems (in addition to swap files, operating systems that support mapping virtual address space to auxiliary storage), the mid-term scheduler was swapped out when executing binary code By treating it as a process, it actually plays the role of a long-term scheduler. In this way, when a portion of the binary code is needed, the portion of the binary code can be swapped in on demand or lazy loaded.

短期スケジューラ(別名、ディスパッチャ)は、クロック割込、I/O割込、オペレーティングシステムコール又は他の形式の信号の後、実行可能な状態でメモリ内にあるプロセスのうちのどのプロセスを次に実行する(CPUを割り当てる)かを決定する。したがって、短期スケジューラは、長期スケジューラ又は中期スケジューラに比べてより頻繁に、スケジューリングの決定を行う。スケジューリングの決定は、タイムスライス毎に、最小限、すなわち非常に短い時間で行う必要がある。この短期スケジューラは、スケジューラがCPUに他のプロセスを割り当てると決定したときに、CPUからプロセスを強制的に排除することができることを意味するプリエンプティブ(preemptive)であってもよく、あるいは、スケジューラがCPUからプロセスを除去することを強制できないノンプリエンプティブ(non-preemptive)であってもよい。   A short-term scheduler (also known as a dispatcher) then executes any of the processes in memory that are ready to run after a clock interrupt, I / O interrupt, operating system call, or other type of signal. To determine whether to allocate a CPU. Thus, the short-term scheduler makes scheduling decisions more frequently than the long-term or medium-term scheduler. Scheduling decisions need to be made at the minimum, that is, in a very short time, for each time slice. This short-term scheduler may be preemptive, meaning that the process can be forcibly removed from the CPU when the scheduler decides to allocate another process to the CPU, or the scheduler is CPU It may be non-preemptive that cannot be forced to remove the process from.

スケジューリング規則(scheduling disciplines)
スケジューリング規則は、同時且つ非同期でリソースを必要とするパーティ間に、リソースを割り当てるために用いられるアルゴリズムである。スケジューリング規則は、(スレッド及びプロセス間でCPU時間を共有する)オペレーティングシステムだけでなく、(パケットトラヒックを処理する)ルータにおいても用いられる。
Scheduling rules (scheduling disciplines)
The scheduling rule is an algorithm used for allocating resources between parties that need resources simultaneously and asynchronously. Scheduling rules are used not only in operating systems (which share CPU time between threads and processes), but also in routers (which handle packet traffic).

スケジューリングアルゴリズムの主要な目的は、リソース飢餓(resource starvation)を最小にするとともに、リソースを利用するパーティ間で公平性を保証することである。   The main purpose of the scheduling algorithm is to minimize resource starvation and to ensure fairness among the parties using the resource.

オペレーティングシステムにおけるスケジューラの実装
異なるコンピュータオペレーティングシステムは、異なるスケジューリング方式を実装している。MS−DOS及びマイクロソフトの非常に初期のWindowsシステムは、マルチタスクではなく、それ自体は、スケジューラを必要としなかった。Windows3.1ベースのオペレーティングシステムは、単純なノンプリエンプティブスケジューラ(non-preemptive scheduler)を使用しており、プログラマは、CPU時間を他のプロセスに与えるために、CPU時間を明け渡す(yield、CPUを解放する)ように、プロセスに命令することが必要であった。このノンプリエンプティブスケジューラは、マルチタスクを原始的にサポートしているが、より高度なスケジューリングの選択肢を備えていなかった。
Implementation of schedulers in operating systems Different computer operating systems implement different scheduling schemes. MS-DOS and Microsoft's very early Windows system were not multitasking and themselves did not require a scheduler. The Windows 3.1 based operating system uses a simple non-preemptive scheduler, and programmers yield CPU time to give CPU time to other processes (yield, free CPU) It was necessary to instruct the process to This non-preemptive scheduler originally supported multitasking, but did not have more advanced scheduling options.

WindowsNT4.0ベースのオペレーティングシステムは、多段フィードバックキュー(multilevel feedback queue)を使用している。WindowsNT4.0ベースのオペレーティングシステムにおける優先度は、1〜31であり、1〜15の優先度は、ノーマル優先度であり、16〜31の優先度は、特権を割り当てる必要があるソフトリアルタイム優先度である。ユーザは、タスクマネージャアプリケーションから又はスレッド管理APIによって、これらの優先度から5段階の優先度を選択して、実行アプリケーションに割り当てることができる。   Windows NT 4.0-based operating systems use a multilevel feedback queue. Priorities in Windows NT 4.0-based operating systems are 1-31, priorities 1-15 are normal priorities, and priorities 16-31 are soft real-time priorities that require privilege assignment. It is. The user can select five priorities from these priorities from the task manager application or by the thread management API and assign them to the execution application.

初期のUNIXシステムの実装では、多段フィードバックキューのスケジューラが使用されており、各フィードバックキュー内では、ラウンドロビン方式で選択を行っている(round robin selection)。このUNIXシステムでは、プロセスが生成されると、プロセスは、最優先キューに置かれ(新しいプロセス、例えば1回のマウスの移動又はキーストロークに関係したプロセスに対する応答時間を短くして)、UNIXシステム内でCPU時間を消費していくと、複数回に亘ってプリエンプト(preempt)され、最終的には、最低優先度のキューに入れられる。しかしながら、このUNIXシステムでは、新しいプロセスが絶え間なく生成されると、古いプロセスは、CPU時間の飢餓になる可能性があり、したがって、UNIXシステムが、新しいプロセスを生成速度よりも速く処理できない場合、飢餓を回避することはできない。UNIXシステムでは、プロセス優先度を40段階のうちの1つに明示的に設定できたが、最新のUNIXシステムでは、これ以上の数の優先度を利用することができる(Solarisは、160段階の優先度を有する)。優先度が低いプロセスの飢餓に対するWindowsNT4.0の解決法(プロセスが飢餓すると、このプロセスをラウンドロビンキューの先頭に上げる)とは異なり、初期のUNIXシステムは、巧妙な時間経過方式を用いており、すなわち、飢餓しているプロセスの優先度を、実行されるまで徐々に高め、プロセスが実行されると、優先度を、飢餓が始まる前の値にリセットする。   In the initial implementation of the UNIX system, a multi-stage feedback queue scheduler is used, and selection is performed in a round robin manner within each feedback queue (round robin selection). In this UNIX system, when a process is created, the process is placed in the highest priority queue (with a shorter response time for new processes, eg, processes related to a single mouse movement or keystroke), and the UNIX system. When the CPU time is consumed, it is preempted for a plurality of times, and finally put into the lowest priority queue. However, in this UNIX system, if new processes are spawned continuously, the old process can become starved of CPU time, so if the UNIX system cannot handle the new process faster than the spawn speed, Hunger cannot be avoided. In the UNIX system, the process priority could be explicitly set to one of 40 levels, but in the latest UNIX system, a higher number of priorities can be used (Solaris has 160 levels). Have priority). Unlike the Windows NT 4.0 solution to starvation of low priority processes (when a process starves, this process is brought to the top of the round robin queue), the early UNIX system uses a clever time lapse method. That is, the priority of the starving process is gradually increased until it is executed, and when the process is executed, the priority is reset to the value before the start of starvation.

Linuxカーネルは、バージョン2.6.22までは、O(1)スケジューラ(O(1) scheduler)を用いていたが、このバージョン2.6.23からは、完全公平スケジューラ(Completely Fair Scheduler)に切り換えられている。   The Linux kernel used an O (1) scheduler (O (1) scheduler) until version 2.6.22, but from this version 2.6.23, it was changed to a completely fair scheduler. It has been switched.

スケジューリングアルゴリズム
コンピュータ科学において、スケジューリングアルゴリズムは、システムリソース、通常はCPU時間に対するアクセスを、スレッド又はプロセスに与える方法である。スケジューリングアルゴリズムは、通常、システムに負荷を効率的に分散するために行われる。スケジューリングアルゴリズムの必要性は、マルチタスクを実行する、すなわち複数のプロセスを同時に実行する最新のオペレーティングシステムの殆どの要求から生じている。スケジューリングアルゴリズムは、通常、タイムスライス多重化カーネル(time slice multiplexing kernel)においてのみ用いられる。この理由は、システムに負荷を効率的に分散させるためには、タイムスライス多重化カーネルは、次のスレッドの実行を開始するために、現スレッドの実行を強制的に中断(suspend)できなければならない。
Scheduling Algorithm In computer science, a scheduling algorithm is a method that gives threads or processes access to system resources, usually CPU time. Scheduling algorithms are typically performed to efficiently distribute the load across the system. The need for scheduling algorithms arises from most demands on modern operating systems that perform multitasking, ie, run multiple processes simultaneously. Scheduling algorithms are typically used only in a time slice multiplexing kernel. The reason for this is that in order to distribute the load efficiently on the system, the time slice multiplexed kernel must be able to force the current thread to suspend in order to start executing the next thread. Don't be.

使用されるスケジューリングアルゴリズムは、循環リスト(cycling list)内の各プロセスに、所定の等しい時間(例えば1ms、通常は、1ms〜100ms)を与えるラウンドロビン方式のように簡単にすることができる。したがって、プロセスAが1ms間実行され、次にプロセスBが1ms間実行され、次にプロセスCが1ms間実行され、次にプロセスAに戻る。   The scheduling algorithm used can be as simple as a round-robin scheme that gives each process in the cycling list a predetermined equal time (eg, 1 ms, typically 1 ms to 100 ms). Therefore, process A is executed for 1 ms, then process B is executed for 1 ms, then process C is executed for 1 ms, and then returns to process A.

より高度なスケジューリングアルゴリズムでは、プロセスの優先度、すなわちプロセスの重要度を考慮する。これにより、あるプロセスは、他のプロセスよりも長いCPU時間を使うことができる。なお、カーネルは、常に、オペレーティングシステムの適切な機能を保証するために必要とされる何らかのリソースを使用しており、したがって、無限の優先度を有すると言うことができる。対称型マルチプロセッサ(Symmetric Multiprocessor:SMP)システムでは、プロセッサアフィニティ(processor affinity)が、プロセス自体の動作速度を遅くする原因であっても、全体的なシステム性能を高めると考えられている。プロセッサアフィニティは、一般的に、キャッシュスラッシング(cache thrashing)を減少させることによって、性能を向上させる。   More advanced scheduling algorithms take into account the priority of the process, i.e. the importance of the process. This allows some processes to use longer CPU time than other processes. It can be said that the kernel always uses some resources needed to ensure proper functioning of the operating system and therefore has infinite priority. In a symmetric multiprocessor (SMP) system, it is believed that processor affinity improves overall system performance even if the processor affinity is the cause of slowing down the operating speed of the process itself. Processor affinity generally improves performance by reducing cache thrashing.

I/Oスケジューリング
この章は、I/Oスケジューリングに関する説明であり、I/Oスケジューリングは、プロセススケジューリングとは異なるものである。I/Oスケジューリングは、ブロックされたI/O動作をディスクサブシステムに送る順番を決定するために、コンピュータオペレーティングシステムで用いられる方法を記述する用語である。I/Oスケジューリングは、ディスクスケジューリング(disk scheduling)とも呼ばれる。
I / O Scheduling This section is about I / O scheduling, which is different from process scheduling. I / O scheduling is a term that describes the method used in a computer operating system to determine the order in which blocked I / O operations are sent to the disk subsystem. I / O scheduling is also called disk scheduling.

目的
I/Oスケジューラ(I/O scheduler)は、I/Oスケジューラの目標に応じて、多くの目的を有することができ、以下、共通の目標を示す。
Objectives The I / O scheduler can have many objectives, depending on the goals of the I / O scheduler, and will show the common goals below.

・ハードディスクのシークによって浪費される時間を最小にする。
・特定のプロセスのI/O要求を優先させる。
・ディスク帯域幅を動作中の各プロセスに割り当てる。
・特定のデッドラインの前に、ある要求が発行されることを保証する。
• Minimize time wasted by hard disk seeks.
Prioritize specific process I / O requests.
Allocate disk bandwidth to each running process
Ensure that a request is issued before a specific deadline.

実装
I/Oスケジューリングは、通常、ハードディスクによって機能しなければならず、ディスクヘッドを現在の位置から遠く離れた位置に移動する(この動作は、シークと呼ばれる)要求のために、アクセス時間が長くなるという特性を有する。このシーク動作がシステム性能に与える影響をできるだけ少なくするために、殆どのI/Oスケジューラは、ランダムな順番で入力された要求を、ディスク上で検出される順番に並べ替える種々のエレベータアルゴリズム(elevator algorithm)を実装している。
Implementation I / O scheduling usually has to work with a hard disk, and the access time is long due to a request to move the disk head far away from the current position (this operation is called seeking). It has the characteristic of becoming. In order to minimize the impact of this seek operation on system performance, most I / O schedulers use various elevator algorithms (elevator) that rearrange requests entered in random order into the order they are detected on disk. algorithm) is implemented.

一般的なディスクスケジューリング規則
・ランダムスケジューリング(Random Scheduling:RSS)
・先入先出(First In, First Out:FIFO)、別名、先着順サービス(First Come First Served:FCFS)
・後入先出(Last In, First Out:LIFO)
・最短シーク順(Shortest seek first)、別名、最短シーク/サービス時間順(Shortest Seek / Service Time First:SSTF)
・エレベータアルゴリズム(Elevator algorithm)、別名、SCAN(その変種C−SCAN、LOOK及びC−LOOKを含む)
・一度にN個のレコードをスキャンするNステップSCAN(N-Step-SCAN)
・FSCAN、NがSCANサイクルの最初のキューサイズに等しいステップSCAN(Step-SCAN)
・完全公平キューイング(Completely Fair Queuing:CFQ(Linux))
・予測スケジューリング(Anticipatory scheduling)
General disk scheduling rules / Random Scheduling (RSS)
・ First In First Out (FIFO), also known as First Come First Served (FCFS)
・ Last In, First Out (LIFO)
・ Shortest seek first (aka Shortest Seek / Service Time First: SSTF)
Elevator algorithm, also known as SCAN (including variants C-SCAN, LOOK and C-LOOK)
-N-step SCAN (N-Step-SCAN) that scans N records at a time
FSCAN, step SCAN where N is equal to the first queue size of the SCAN cycle (Step-SCAN)
・ Completely Fair Queuing (CFQ (Linux))
-Anticipatory scheduling

図1は、本発明の一実施の形態に基づくKOSスケジューラオペレーティングシステム(KOS scheduler operating system)100を示す概略図である。KOSスケジューラオペレーティングシステム100は、単一メモリ内で実行される複数のオペレーティングシステム101〜106を含み、全てのオペレーティングシステム101〜106は、外殻115で示すアプリケーションとインタフェースしている。   FIG. 1 is a schematic diagram illustrating a KOS scheduler operating system 100 according to an embodiment of the present invention. The KOS scheduler operating system 100 includes a plurality of operating systems 101-106 that run in a single memory, all operating systems 101-106 interface with an application indicated by an outer shell 115.

図2は、本発明の他の実施の形態に基づくKOSスケジューラオペレーティングシステム120を示す概略図である。KOSスケジューラオペレーティングシステム120は、単一メモリ内で実行される複数のオペレーティングシステム121〜126を含み、オペレーティングシステム121〜126は、外殻130で示すリソースとインタフェースしており、リソースは、外殻135で示すアプリケーションとインタフェースしている。   FIG. 2 is a schematic diagram illustrating a KOS scheduler operating system 120 according to another embodiment of the present invention. The KOS scheduler operating system 120 includes a plurality of operating systems 121-126 that run in a single memory, and the operating systems 121-126 interface with the resources indicated by the outer shell 130, which are the outer shells 135. It is interfaced with the application shown in.

マルチOSのKOSシステム
マルチタスクにおいて、カーネルは、コンピュータが物理的に同時に動作させることができるプロセスの最大の数よりも多くのプロセスがコンピュータ上で同時に動作しているような錯覚を、ユーザに与えることができる。本発明は、この錯覚を、プロセッサの数を1つから2つ以上に増やすことによって現実のものとし、イベントを、リソースを要求するイベントとして、通信、スケジューリング、委託(delegated)、ルーティング及び外注(outsource)する特別に設計されたスケジューラソフトウェアを用いて、互いに同時に機能する、コンピュータシステムに実際に搭載されたオペレーティングシステムの数を増やすKOS設計を実際に提案する。通常、オペレーティングシステムが同時に動作させることができるプロセスの数は、搭載されているCPUの数に等しい(なお、プロセッサが同時マルチスレッディングをサポートしている場合は、この限りではない)。本発明の好ましい実施の形態は、複数のCPUが搭載されていることを必要とし、最大の性能を発揮するためには、協調して同時に機能するオペレーティングシステムの数が、搭載されているCPUの数に等しくなければならないことを、提案する。また、UNIX−KOS設計も、各オペレーティングシステムカーネル内でマルチスレッディングが実行され続けることを提案しているが、KOSスケジューラは、アプリケーションによって必要とされるリソース及び各オペレーティングシステムによってサポートされているリソースに基づいて、アプリケーションプログラムを、インストールされている各オペレーティングシステムに/から通信、外注及びルーティングすることが残されている。
Multi-OS KOS System In multi-tasking, the kernel gives the user the illusion that more processes are running simultaneously on the computer than the maximum number of processes that the computer can be physically running at the same time. be able to. The present invention makes this illusion a reality by increasing the number of processors from one to more than one, and the event as an event requesting resources, communication, scheduling, delegated, routing and subcontracting ( Using a specially designed scheduler software that outsources, we actually propose a KOS design that increases the number of operating systems actually installed in a computer system that function simultaneously with each other. Normally, the number of processes that can be operated simultaneously by the operating system is equal to the number of CPUs mounted (except when the processor supports simultaneous multithreading). The preferred embodiment of the present invention requires that a plurality of CPUs be installed, and in order to achieve the maximum performance, the number of operating systems that function simultaneously in cooperation with each other is limited. Propose that it must be equal to the number. The UNIX-KOS design also proposes that multithreading continues to be executed within each operating system kernel, but the KOS scheduler is based on the resources required by the application and the resources supported by each operating system. Thus, it remains to communicate, outsource and route application programs to / from each installed operating system.

KOS概念
分散カーネル動作スケジューラ(分散KOS)は、他のカーネル動作スケジューラと同期して動作する分散オペレーティングシステムである。各KOSは、他の同様なKOSと並列して動作し、ある所定のコンピュータシステム環境内には2つ以上のオペレーティングシステムがあり、ある特定のコンピュータには2つ以上のCPUが存在するが、これらの環境は、シングルコンピュータシステムとみなされる。幾つかの用語法(nomenclature)では、分散コンピューティング(distributed computing)とは、コンピュータリソース(computing resources)が多くの異なるコンピュータプラットフォームに分散され、全てのコンピュータリソースが、1つの主題の下に協調して(in concert)機能するものと定義される。KOSは、これに類似しているが、分散KOSは、シングルコンピュータシステム環境内にあり、互いに非常に密接し、シングルコンピュータシステムとして動作する点だけが異なる。各KOSは、単一カーネル内にある。各カーネルは、単一のスケジューラを有し、この単一スケジューラは、KOSが、イベントをスケジューリングする種類の他の同様のKOSと通信する通信機能を有するように設計された後は、このKOSによって置換される。
KOS Concept A distributed kernel operation scheduler (distributed KOS) is a distributed operating system that operates in synchronization with other kernel operation schedulers. Each KOS operates in parallel with other similar KOSs, with two or more operating systems within a given computer system environment, and certain computers with two or more CPUs, These environments are considered single computer systems. In some nomenclature, distributed computing means that computing resources are distributed across many different computer platforms, and all computer resources work together under one subject. In concert. KOS is similar, except that distributed KOS are in a single computer system environment, are very close to each other and operate as a single computer system. Each KOS is in a single kernel. Each kernel has a single scheduler, which is designed by the KOS after it has been designed to have communication functions that communicate with other similar KOSs of the kind that schedule events. Replaced.

データ処理は、一連のイベントに分割することができ、これによって、各イベントは、データ処理を完了するためには、ある程度のコンピュータリソースを必要とする。スケジューラは、CPU時間、リソース及び優先度をイベントに割り当てるタスクを有する、カーネル内で最も責任があるプログラムである。したがって、CPU時間のリソースを時分割シナリオ(time-sharing scenario)の下でスケジューリングする場合、特定のイベントには、その特定のイベントを完了するために必要とされるあらゆるリソースと、残りのリソース、例えばメモリ、一時的なI/Oバスの優先度等とが与えられる。本発明に基づくKOSは、シングルシステム当たり複数のKOSが存在するカーネル動作スケジューラであり、各KOSは、同時に動作するとともに、完了するためにコンピュータリソースを必要とする同時発生事象(simultaneous events)上での実行を管理する。更に、各KOSは、カーネル環境空間、あるいはこのようなリソースが制限又は不足しているときのメモリの共有部分内のセマフォによって制御される、同様のリソースを必要とする場合がある。分散OSであるKOS及びそのコアであるスケジューラは、汎用CPUハードウェアに結び付けられた分散コンピューティングであり、各分散OSは、初期化時に固有のIDを有し、このようなIDは、各KOSに割り当てられる。   Data processing can be divided into a series of events, whereby each event requires some computer resources to complete the data processing. The scheduler is the most responsible program in the kernel with the task of assigning CPU time, resources and priority to events. Thus, when scheduling CPU time resources under a time-sharing scenario, a particular event includes any resources needed to complete that particular event, plus the remaining resources, For example, memory, temporary I / O bus priority, and the like are given. The KOS according to the present invention is a kernel operation scheduler in which there are multiple KOSs per single system, and each KOS operates on simultaneous events that operate simultaneously and require computer resources to complete. Manage the execution of In addition, each KOS may require similar resources that are controlled by the semaphore in the kernel environment space, or a shared portion of memory when such resources are limited or insufficient. The distributed OS KOS and its core scheduler are distributed computing connected to general-purpose CPU hardware, and each distributed OS has a unique ID at the time of initialization. Assigned to.

UNIXシステムのIPC(Unix System IPC)
IPC機能及びプロトコルスタック(IPC Facilities and Protocol Stacks)
IPC機能及びプロトコルスタックは、UNIX構造に常駐し、ユーティリティとして既に統合されている。これらのユーティリティは、UNIX構造の下で、オペレーティングシステム間の通信を行うために、用いられる。
Unix System IPC (Unix System IPC)
IPC Facilities and Protocol Stacks
The IPC function and protocol stack resides in the UNIX structure and is already integrated as a utility. These utilities are used to communicate between operating systems under the UNIX structure.

表1は、IPCの種類を、KOSがサポートする特定のリソースにマッピングした表である。表1の情報を参照すると、最初の行の7つのIPCの種類は、ローカルカーネル(local kernel)及びスケジューラオペレーティングシステム内のプロセス間の通信に用いられ、最後の2つの行は、同じコンピュータ上であるが、同じコンピュータシステム上の複数のCPUに分散されているオペレーティングシステム間の通信のために用いられる。   Table 1 is a table in which IPC types are mapped to specific resources supported by KOS. Referring to the information in Table 1, the seven IPC types in the first row are used for communication between processes in the local kernel and the scheduler operating system, and the last two rows are on the same computer. Yes, it is used for communication between operating systems distributed across multiple CPUs on the same computer system.

STREAMSのLinuxサポートは、「LIS」と呼ばれる独立したオプションのパッケージとして入手可能である。   STREAMS Linux support is available as a separate optional package called "LIS".

表1の最初の行の7つのIPCの形式は、通常、同じホストオペレーティングシステム上のプロセス間のIPCに制限される。異なるホスト上のプロセス間のIPCのために一般的にサポートされるものは、最後の2つの行のソケット及びSTREAMSのみである。   The seven IPC types in the first row of Table 1 are usually limited to IPCs between processes on the same host operating system. Only the last two rows of sockets and STREAMS are generally supported for IPC between processes on different hosts.

カーネルスケジューラ
カーネルスケジューラは、現処理をどこで行うかを決定するために必要とされるリソースをフィルタリングし、選択する機能を有する。例えば、各CPUは、通常、汎用のCPUであり、それに対して、各KOSは、より特化されている。ポインタ及びファイル記述子(file descriptors)が、実際のファイルデータの代わりに、各KOS間で受け渡されるように、メモリの一部は、各KOS間で共有される。IPC機能を用いることによって、任意のプロセスを、複数のCPUに亘って、及び複数のKOSに亘って移動させることができ、したがって、必要なトランザクションを、プロセス間のトランザクションプロトコル(Transactional Protocol)の形式で移すことができる。
Kernel scheduler The kernel scheduler has the function of filtering and selecting the resources required to determine where to perform the current process. For example, each CPU is usually a general-purpose CPU, whereas each KOS is more specialized. Part of the memory is shared between each KOS so that pointers and file descriptors are passed between each KOS instead of the actual file data. By using the IPC function, any process can be moved across multiple CPUs and across multiple KOSs, and thus the required transactions can be in the form of a transactional protocol between processes. Can be moved.

本発明の一実施の形態では、アプリケーション、例えば音声合成器は、プリエンプション(preemption)を許可するために割込、キューを禁止して、スワップアウトしなければならないときに、I/Oリソースの排他性を利用するKOSを用いた特定のCPU上で、連続して、したがって絶え間なく動作することができる。他の実施の形態では、アプリケーションは、DVDフォーマットのビデオストリーミングであり、ビデオストリーミングは、中央のOS(centralized OS)内のプロセス間で最適性を達成するために随時スワップアウトしなければならないシナリオに直面する中央のスケジューラ(centralized scheduler)に直面することなく、特定のCPU、メモリ及びKOSを利用して動作することができる。   In one embodiment of the present invention, an application, such as a speech synthesizer, can exclude I / O resources when it has to disable interrupts, queues and swap out to allow preemption. It can operate continuously on a specific CPU using KOS that uses, thus continuously. In other embodiments, the application is DVD format video streaming, which is a scenario that must be swapped out from time to time to achieve optimality between processes within a centralized OS. It can operate using a specific CPU, memory and KOS without facing a centralized scheduler.

共有メモリ
共有メモリは、現在のUNIX構造の非常に不可欠な部分であり、現在、特定の規則(particular convention)で使用するようになっているが、共有メモリは、また、KOS、現在の規則の下に、分散OSの目的で機能するように特定の方法で実装することができる。本発明の一実施の形態では、各オペレーティングシステムカーネルには、スケジューラが組み込まれており、スケジューラは、各カーネルの不可欠なキーコンポーネントプレーヤになっている。各分散オペレーティングシステムのKOSは、KOSスケジューラになっている。4つのこのようなスケジューラを有する4つのこのようなオペレーティングシステムがある場合、各スケジューラは、他のオペレーティングシステムの他のスケジューラと通信するように設計されている。この通信は、他のスケジューラのリソースを共有できるように設計されている。各スケジューラは、リソースの特定のセットに接続(attached)されており、この特定のセットには、典型的なコンピュータリソース、例えばディスクアクセス、インターネットアクセス、映画DVDプレーヤ、音楽DVD、キーボード通信等が含まれる。これらのリソースは、オペレーティングシステムのカーネルスケジューラの所定のセットに接続されており、スケジューラのそれぞれは、特定の所定の時点(specific given point)で、特別なリソースを必要とする特定の処理を、他のCPU上で動作している他のKOSに外注又はオフロード(off-load)することができる。各スケジューラには、メモリの一部が割り当てられる。スケジューラ及びそのカーネルは、他のKOSと共に、メインメモリ及びそれらのCPUにマッピングされている。
Shared memory Shared memory is a very integral part of the current UNIX structure and is now used for specific conventions, but shared memory is also a KOS, current rule. Below, it can be implemented in a specific way to function for the purpose of a distributed OS. In one embodiment of the present invention, each operating system kernel incorporates a scheduler, which is an indispensable key component player for each kernel. The KOS of each distributed operating system is a KOS scheduler. If there are four such operating systems with four such schedulers, each scheduler is designed to communicate with other schedulers of other operating systems. This communication is designed so that resources of other schedulers can be shared. Each scheduler is attached to a specific set of resources, which includes typical computer resources such as disk access, Internet access, movie DVD player, music DVD, keyboard communication, etc. It is. These resources are connected to a predetermined set of operating system kernel schedulers, each of which performs specific processing that requires special resources at a specific given point, and others. Can be outsourced or off-loaded to other KOS running on the other CPU. Each scheduler is assigned a portion of memory. The scheduler and its kernel, along with other KOS, are mapped to main memory and their CPU.

TCP/IPプロトコル群(TCP/IP Protocol Suite)
TCP/IPローカル(TCP and IP local)は、データ及びアプリケーションファイルをCPUとKOS間で転送するリソースとして用いることができる。各KOSは、それ自体のCPUに局所的であり、独立したメモリがマッピングされたI/Oを有していてもよく、有していなくてもよい。一実施の形態では、多くのUNIXシステムに常駐しているTCPポートのループバック機能(TCP Port loop-back facility)が用いられ、このTCPポートのループバック機能は、KOSシステム構成の下に他のオペレーティングシステムとの間でデータファイルを送受信するように構成されている。
TCP / IP protocol group (TCP / IP Protocol Suite)
TCP / IP local can be used as a resource for transferring data and application files between the CPU and the KOS. Each KOS is local to its own CPU and may or may not have I / O with independent memory mapped. In one embodiment, a TCP port loop-back facility that is resident in many UNIX systems is used, and this TCP port loop-back function is implemented under other KOS system configurations. It is configured to send and receive data files to and from the operating system.

UDPプロトコルの機構(UDP Protocol Mechanics)
ユーザデータグラム(UDP:User datagram)、ユーザ定義プロトコル(user defined protocol)は、TCP/IPプロトコル群の一部であり、KOS規則の下に、独立したCPUとオペレーティングシステム間でデータファイルをインポート及びエクスポートするように構成することができる。また、UDPは、独立したCPUに常駐するオペレーティングシステム間でメッセージを受け渡すように構成することができる。
UDP Protocol Mechanism (UDP Protocol Mechanics)
User datagram (UDP), user defined protocol (User defined protocol) is a part of TCP / IP protocol group, and imports data files between independent CPU and operating system under KOS rules. Can be configured to export. Also, UDP can be configured to pass messages between operating systems that reside on independent CPUs.

I/OCPUベースのオペレーティングシステム
I/Oバスコントローラは、特殊用途のデバイスとして機能するが、また、ディスクの動作、あるいはメインメモリの入力又は出力用のチャンネルデータの処理に関係した特定のタスクに固有のタスクを指示する(directs)。このようなコントローラは、より機能的な能力を有し、常駐ソフトウェア、例えばKOSが、ハードワイヤードな(hard wired)アプリケーションではなく、再構成可能なアプリケーションを特定のコントローラに提供することができる汎用のCPUによって、容易に置き換えることができる。本発明の実施の形態において、I/OCPU又はプロセッサは、一般のシステムのI/O機能のみを処理するように特に設計されたスケジューラを有するI/Oオペレーティングシステムを常駐させる。これによって、バスデータは、CPUが必要条件としてI/Oキューを形成する能力を有するので、コントローラにおけるボトルネックを回避することができる。
I / O CPU-based operating system The I / O bus controller functions as a special purpose device, but is also specific to specific tasks related to disk operation or processing of channel data for main memory input or output Direct tasks. Such a controller has more functional capabilities and is a general purpose resident software, eg KOS, that can provide a reconfigurable application to a specific controller rather than a hard wired application. It can be easily replaced by the CPU. In an embodiment of the present invention, an I / O CPU or processor resides an I / O operating system having a scheduler that is specifically designed to handle only general system I / O functions. As a result, the bus data has the ability of the CPU to form an I / O queue as a necessary condition, so that a bottleneck in the controller can be avoided.

表2は、特定のKOSの種類と、各種類のKOSがサポートするように特化された特定のリソースとを示している。例えば、表2は、メディアOS(第1列の第5行)が、例えばCD/DVD(第4列の第5行)を動作させたときに、ビデオI/Oを実行するように特化されていることを、示している。同様に、表2は、ディスクOS(第1列の第7行)が、例えばチャンネルバス(第2列の第7行)を介して通信するときに、ディスクI/Oを実行するように特化されていることを、示している。   Table 2 shows specific KOS types and specific resources that each type of KOS is specialized to support. For example, Table 2 specializes to perform video I / O when the media OS (5th row in the first column) operates, for example, a CD / DVD (5th row in the 4th column). It has been shown. Similarly, Table 2 shows that disk I / O is performed when the disk OS (seventh row in the first column) communicates via, for example, a channel bus (seventh row in the second column). It is shown that

本発明の一実施の形態では、オペレーティングシステムの機能が移動できるという概念(the concept of being portable)に基づく構成を用いており、オペレーティングシステムは、その機能を、それぞれが独立して動作するスレッドに分割することができる。この方法では、各スレッドは、異なる独立したスケジューラの下で、動作を他と関係なく実行する能力を有する。   In one embodiment of the present invention, a configuration based on the concept of being portable is used, and the operating system assigns the function to a thread that operates independently. Can be divided. In this way, each thread has the ability to perform operations independently of each other under a different independent scheduler.

状態遷移図に示す様々なプロセス状態は、状態間の可能な遷移が矢印によって示され、幾つかのプロセスは、メインメモリに記憶され、幾つかのプロセスは、2次(仮想)メモリに記憶される。   The various process states shown in the state transition diagram show possible transitions between states indicated by arrows, some processes are stored in main memory, and some processes are stored in secondary (virtual) memory. The

図3は、カーネルプロセススケジューリングの状態遷移200を示す図である。この状態遷移200は、「生成」状態("Created" state)201と、「実行待ち」状態("Waiting" state)207と、「実行」状態("Running" state)205と、「ブロック」状態("Blocked" state)209と、「スワップアウト及びブロック」状態("Swapped out and blocked" state)213と、「スワップアウト及び実行待ち」状態("Swapped out and waiting" state)211と、「終了」状態("terminated" state)203とを含んでいる。これらの状態の詳細については後述する。   FIG. 3 is a diagram showing a state transition 200 of kernel process scheduling. The state transition 200 includes a “Created” state 201, a “Waiting” state 207, a “Running” state 205, and a “Block” state. ("Blocked" state) 209, "Swapped out and blocked" state 213, "Swapped out and waiting" state 211, and "Finished" "Terminated" state 203. Details of these states will be described later.

本発明の実施の形態は、複数のオペレーティングシステムを、互いに協調させて機能させるとともに、それらが管理するリソースによって特化され、したがって、実行待ち状態を、「受信された」外注又はアウトルーティングされたイベントを入力するキューとして用いることによって、「スワップアウト及び実行待ち状態」及び「スワップアウト及びブロック状態」の必要性を排除している。本発明の実施の形態では、分散する(to be deployed)マルチスレッディング、スワップアウト及び実行待ち/ブロックを、現在の設計とは異なる設計を行う機能として分散する能力を残している。   Embodiments of the present invention allow multiple operating systems to function in concert with each other and are specialized by the resources they manage, thus waiting for execution to be “received” outsourced or out-routed By using it as a queue for inputting events, the need for “swap out and waiting for execution” and “swap out and blocking” is eliminated. Embodiments of the present invention leave the ability to distribute multi-threading, swap-out and pending / blocks to be deployed as a function to perform a design different from the current design.

主要なプロセス状態(Primary process states)
以下の典型的なプロセス状態は、全ての種類のコンピュータシステムにおいて起こり得る。これらの状態の殆どにおいて、プロセスは、メインメモリに「記憶」される。
Primary process states
The following typical process conditions can occur in all types of computer systems. In most of these states, the process is “stored” in main memory.

生成(Created)(「新たな(new)」とも呼ばれる)
プロセスが最初に生成されたとき、プロセスは、「生成(created)」又は「新たな(new)」状態となる。この状態では、プロセスは、「実行可能(ready)」状態に入る(admission)のを待っている。この入力(admission)は、長期スケジューラ、すなわち入力スケジューラによって、承認又は遅延される。通常、殆どのデスクトップコンピュータシステムでは、この入力は、自動的に承認されるが、リアルタイムオペレーティングシステムでは、この入力は、遅延される場合がある。リアルタイムオペレーティングシステム(real-time operating system:RTOS)では、「実行可能」状態に余りにも多くのプロセスを入れると、過飽和になり、システムリソースの競合が始まり、結果として、プロセスのデッドラインに間に合わなくなることを避けることができなくなる。
Created (also called “new”)
When a process is first created, the process is in a “created” or “new” state. In this state, the process is waiting for admission into the “ready” state. This admission is approved or delayed by the long-term scheduler, ie the input scheduler. Typically, in most desktop computer systems, this input is automatically approved, but in real-time operating systems, this input may be delayed. In a real-time operating system (RTOS), if too many processes are put into the “runnable” state, they become oversaturated and system resource contention begins, resulting in deadlines in the process. You can't avoid that.

実行可能(Ready)(「実行待ち(waiting)」又は「動作可能(runnable)」とも呼ばれる)
「実行可能」プロセス又は「実行待ち」プロセスは、既にメインメモリにロードされており、CPU上で実行されるのを待っている(ディスパッチャ、すなわち短期スケジューラによって、CPUにコンテキストスイッチが起こる)。システムの実行のある時点において、「実行可能」プロセスが数多くある場合がある。例えば、シングルプロセッサシステムでは、同時に実行できるプロセスの数は1つだけであり、他の全ての「同時実行(concurrently executing)」プロセスは、実行されることを待っている。
Ready (also called “waiting” or “runnable”)
An “executable” process or a “waiting to execute” process is already loaded into main memory and is waiting to be executed on the CPU (a dispatcher, ie a short-term scheduler, causes a CPU context switch). There may be many “runnable” processes at some point in the execution of the system. For example, in a single processor system, only one process can be executed at a time, and all other “concurrently executing” processes are waiting to be executed.

動作(running)(「活動(active)」又は「実行(executing)」とも呼ばれる)
「動作(running)」プロセス、「実行(executing)」プロセス又は「活動(active)」プロセスは、現在CPU上で実行されているプロセスである。この状態から、プロセスは、それに割り当てられたタイムスライスを超えると、オペレーティングシステムにより、コンテキストスイッチアウトされて、「実行可能」状態に戻される。なお、このプロセスは、完了又は終了され、あるいは幾つかの必要なリソース(例えば入出力リソース)によりブロックされて、「ブロック」状態に移行することもある。
Running (also called "active" or "executing")
An “running” process, an “executing” process, or an “active” process is a process that is currently executing on the CPU. From this state, the process is context switched out by the operating system and returned to the “ready” state when the time slice assigned to it is exceeded. Note that this process may be completed or terminated, or blocked by some required resources (eg, input / output resources) and transition to a “block” state.

ブロック(Blocked)(「スリープ(sleeping)」とも呼ばれる)
プロセスがリソース(例えばファイル、セマフォ又はデバイス)によって「ブロック」されると、そのプロセスは、CPUから除去されて、ブロック状態になる。プロセスは、そのリソースが利用可能になるまで、「ブロック」されたままであり、最悪の場合には、デッドロック(deadlock)とされる。オペレーティングシステムは、ブロック状態から、ブロックされていたリソースが利用可能になったことを、プロセスに通知することができる(オペレーティングシステムそれ自体は、割込によって、リソースが利用可能になったことが通知される)。一旦、オペレーティングシステムが、プロセスが最早ブロックされていないことを知ると、プロセスは、再び「実行可能」状態になり、この実行可能状態から「実行」状態にディスパッチされることが可能になる。実行状態になってから、プロセスは、それ用に新たに利用可能になったリソースを使用することができる。
Blocked (also called “sleeping”)
When a process is “blocked” by a resource (eg, file, semaphore or device), the process is removed from the CPU and becomes blocked. A process remains “blocked” until its resources are available, and in the worst case a deadlock. From the blocked state, the operating system can notify the process that the blocked resource is available (the operating system itself notifies that the resource was made available by an interrupt. ) Once the operating system knows that the process is no longer blocked, the process is again in the “ready” state and can be dispatched from this ready state to the “run” state. Once in the running state, the process can use the newly available resource for it.

終了(Terminated)
プロセスは、「実行」状態から、その実行を完了させることによって、あるいは明示的に強制終了(kill)することによって、終了させることができる。何れの場合も、プロセスは、「終了」状態に移行する。この終了状態に入った後にも、プロセスがメモリから除去されない場合、このような状態は、「ゾンビ(zombie)」とも呼ばれる。
Terminated
A process can be terminated from the “executed” state by completing its execution or by explicitly killing it. In either case, the process moves to the “finished” state. If a process is not removed from memory after entering this end state, such a state is also referred to as a “zombie”.

更なるプロセス状態(Additional process states)
仮想メモリをサポートしているシステムでは、更に2つのプロセス状態がある。これらのプロセス状態の両方において、プロセスは、2次メモリ(通常はハードディスク)に記憶される。
Additional process states
In a system that supports virtual memory, there are two additional process states. In both of these process states, the process is stored in secondary memory (usually a hard disk).

スワップアウト及び実行待ち(Swapped out and waiting)(「中断及び実行待ち(suspended and waiting)」とも呼ばれる)
仮想メモリをサポートしているシステムでは、プロセスは、スワップアウトすることができ、すなわち、プロセスは、中期スケジューラによって、メインメモリから除去されて仮想メモリに置かれる。そして、仮想メモリから、プロセスを、実行待ち状態にスワップバックすることができる。
Swapped out and waiting (also called “suspended and waiting”)
In systems that support virtual memory, the process can be swapped out, that is, the process is removed from main memory and placed in virtual memory by the medium term scheduler. Then, the process can be swapped back to the execution waiting state from the virtual memory.

スワップアウト及びブロック(Swapped out and blocked)(「中断及びブロック(suspended and blocked)」とも呼ばれる)
ブロックされているプロセスは、更に、スワップアウトされることもある。この事象(event)において、プロセスは、ブロックされた上にスワップアウトされており、スワップアウト及び実行待ちプロセスは、同じ状態にスワップバックすることができる(すなわち、この場合、プロセスは、ブロック状態に移行し、リソースが利用可能になるのを待っている)。
Swapped out and blocked (also called "suspended and blocked")
Blocked processes may also be swapped out. At this event, the process has been blocked and swapped out, and the swap-out and waiting processes can be swapped back to the same state (ie, in this case, the process is in the blocked state). Migrating and waiting for resources to become available).

スケジューリング(Scheduling)
マルチタスクのカーネル(Linux等)では、複数のプロセスが常に存在することができ、各プロセスは、システム上でただ1つのプロセスであるかのように動作することができる。プロセスは、明示的に設計されない限り、他の如何なるプロセスも意識する必要はない。これにより、プログラムを容易に開発し、保守し、移植することができる。システム内の各CPUは、一度に、プロセス内の1つのスレッドしか実行することができないが、多くのプロセスからの多くのスレッドが同時に実行されているように見える。これは、スレッドが非常に短い時間動作するようにスケジューリングされ、そして、他のスレッドに動作の機会を与えるためである。カーネルのスケジューラは、スレッドのスケジューリングポリシを実施し、そこには、いつ、どれくらいの長さで、場合によっては(SMPシステム上の)どこでスレッドを実行できるかを含んでいる。通常、スケジューラは、それ自体のスレッドで動作し、このスレッドは、タイマ割込によって起動される。あるいは、このスレッドは、システムコール又はCPUを明け渡すことを望む他のカーネルスレッドによって呼び出される。スレッドは、ある程度の時間実行することが許され、そして、スケジューラスレッドへのコンテキストスイッチが起こり、続いて、スケジューラが選択するスレッドへの他のコンテキストスイッチが行われる。このサイクルは、繰り返され、この方法では、CPU使用のための特定のポリシが遂行される。
Scheduling
In a multitasking kernel (such as Linux), there can always be multiple processes, and each process can operate as if it were just one process on the system. The process does not need to be aware of any other process unless explicitly designed. This allows programs to be easily developed, maintained and ported. Each CPU in the system can only execute one thread in the process at a time, but it appears that many threads from many processes are running simultaneously. This is because threads are scheduled to run for a very short time and give other threads an opportunity to work. The kernel scheduler enforces thread scheduling policies, including when, how long, and possibly where (on the SMP system) threads can run. Usually, the scheduler runs in its own thread, which is activated by a timer interrupt. Alternatively, this thread is called by a system call or other kernel thread that wants to yield the CPU. The thread is allowed to run for some amount of time, and a context switch to the scheduler thread occurs, followed by another context switch to the thread selected by the scheduler. This cycle is repeated and in this way a specific policy for CPU usage is performed.

CPUバウンドなスレッド及びI/Oバウンドなスレッド(CPU- and I/O-bound Thread)
スレッドの実行は、CPUバウンドとI/Oバウンド(Input/Output bound)との何れかとなる傾向がある。すなわち、幾つかのスレッドは、計算を実行するために長い時間CPUを用い、他の幾つかのスレッドは、比較的遅いI/O動作を完了するために長い時間待機する。例えば、DNA配列スレッド(thread sequencing DNA)は、CPUバウンドである。文書処理プログラム(word processing program)の入力を行うスレッドは、人間がタイプするのを待つために多くの時間を費やすので、I/Oバウンドである。スレッドがCPUバウンドであるか、I/Oバウンドであるかは、常に明確でない。スケジューラが、何れのスレッドであるかを本当に考慮しても、スケジューラが行える最高のことは、推測することである。多くのスケジューラは、スレッドがCPUバウンドとみなすべきか否か、I/Oバウンドとみなすべきか否かについて検討し、したがって、スレッドをどちらか一方に分類する技術は、スケジューラにとって重要な要素である。スケジューラは、CPUにアクセスする優先権を、I/Oバウンドなスレッドに与える傾向がある。人間の入力を行うプログラムは、I/Oバウンドな傾向があり、最も速いタイピストであっても、各キーストローク間にかなりの時間がかかり、タイピストがインタラクトするプログラムは、この間は単に待っているだけである。人間が速やかな応答を期待してる場合、速度及び応答が遅いと、それに気付かれるので、人間とインタラクトするプログラムに優先度を与えることが重要である。
CPU-bound and I / O-bound threads (CPU- and I / O-bound Thread)
Thread execution tends to be either CPU bound or I / O bound (Input / Output bound). That is, some threads use a long time CPU to perform computations, and some other threads wait a long time to complete a relatively slow I / O operation. For example, a DNA sequencing thread is CPU bound. Threads that input word processing programs are I / O bound because they spend a lot of time waiting for humans to type. Whether a thread is CPU bound or I / O bound is not always clear. Even if you really consider which thread the scheduler is, the best that the scheduler can do is guess. Many schedulers consider whether a thread should be considered CPU bound or I / O bound, so the technique of classifying threads as either is an important factor for the scheduler. . The scheduler tends to give priority to access the CPU to I / O bound threads. Human input programs tend to be I / O bound, and even the fastest typist takes a lot of time between each keystroke, and the program with which the typist interacts simply waits during this time It is. When humans are expecting a quick response, it is important to give priority to programs that interact with humans because they are aware of slow and slow responses.

ラウンドロビンスケジューリングアルゴリズム(Round-Robin Scheduling Algorithm)
スケジューリングは、タスクに一連のリソースを割り当てるプロセスである。スケジューリングは、多くの分野、例えば計算プロセス及び生産プロセスにおいて、重要な概念である。
Round-Robin Scheduling Algorithm
Scheduling is the process of assigning a series of resources to a task. Scheduling is an important concept in many areas, such as computing and production processes.

スケジューリングは、マルチタスク及びマルチプロセスオペレーティングシステム設計、並びにリアルタイムオペレーティングシステム設計におけるキーコンセプトである。スケジューリングは、優先順位付きキューの優先度をプロセスに割り当てる方法である。この割当は、スケジューラとして知られているソフトウェアによって実行される。   Scheduling is a key concept in multitasking and multiprocess operating system design, and real-time operating system design. Scheduling is a method of assigning priorities of prioritized queues to processes. This allocation is performed by software known as a scheduler.

汎用オペレーティングシステムでは、スケジューラの目的は、プロセッサの負荷をバランスさせ、何れか1つのプロセスが、プロセッサを独占し、且つリソースに飢餓することを防止することである。リアルタイム環境、例えば産業界における(例えばロボティクス用の)自動制御機器では、また、スケジューラは、プロセスがデッドラインに間に合うことができるように保証しなければならない。これは、システムを安定に保つためには重要である。   In a general purpose operating system, the purpose of the scheduler is to balance the processor load and prevent any one process from monopolizing the processor and starving resources. In real-time environments, such as automatic control equipment in the industry (eg for robotics), the scheduler must also ensure that the process can meet deadlines. This is important for keeping the system stable.

ラウンドロビン方式は、オペレーティングシステムにおけるプロセスのための最も簡単なスケジューリングアルゴリズムである。このアルゴリズムは、各プロセスに、タイムスライスを同じ長さで、順番に割り当てて、全てのプロセスが同じ優先度を有するように処理する。優先順位付きスケジューリング方式(prioritized scheduling system)では、優先度が等しいプロセスは、多くの場合、ラウンドロビン方式でアドレッシングされる。このアルゴリズムは、プロセス記述子ブロック(Process Descriptor Block:PDB)のリストの最初から開始して、タイムスライスが利用可能になったときに、CPUの機会を各アプリケーションに順番に与える。   The round robin method is the simplest scheduling algorithm for processes in the operating system. This algorithm assigns time slices to each process in the same length and in order so that all processes have the same priority. In a prioritized scheduling system, processes with the same priority are often addressed in a round robin manner. This algorithm starts at the beginning of a list of process descriptor blocks (Process Descriptor Blocks: PDBs) and gives each application an opportunity in turn when a time slice becomes available.

ラウンドロビンスケジューリングは、ソフトウェアで実装することが簡単であるという優れた利点がある。オペレーティングシステムは、リストの最初に対する参照及び現アプリケーションに対する参照を有しなければならないので、次の要素に対するPDBの配置又はチェイン(array or chain)に続いて、次に何を動作すべきかを容易に決定することができる。一旦、配置の最後に到達すると、選択は、配置の最初に戻される。ブロックされたアプリケーションは、CPU時間を不必要に浪費し、更に悪いことには、実際にはもう少し待たなければならないときに、タスクに、そのリソースを見つけたと思わせるので、このブロックされたアプリケーションが不注意に選択されないことを保証するために、PDBを調べなければならない。「ラウンドロビン」という用語は、各個人が順番に何かを平等に分け合うという他の分野で知られているラウンドロビンの原理に由来している。   Round robin scheduling has the advantage of being easy to implement in software. Since the operating system must have a reference to the beginning of the list and a reference to the current application, it is easy to determine what to do next, following the placement or chain of PDBs for the next element. Can be determined. Once the end of the placement is reached, the selection is returned to the beginning of the placement. A blocked application unnecessarily wastes CPU time, and worse, it makes the task think it has found the resource when it actually has to wait a bit more, so this blocked application The PDB must be examined to ensure that it is not inadvertently selected. The term “round robin” is derived from the principle of round robin, which is known in other fields where each individual shares something in order.

簡潔に言えば、各プロセスには、そのカンタム(quantum)と呼ばれる時間間隔が割り当てられ、この時間中、プロセスは、動作することができる。カンタムの終了後に、プロセスがまだ動作している場合、CPUは、プリエンプトされて、他のプロセスに与えられる。カンタムが経過する前に、プロセスがブロックされ、又は終了した場合、プロセスがブロックされたときに、CPUの切換が行われる。   Briefly, each process is assigned a time interval called its quantum, during which time the process can operate. If the process is still running after the quantum ends, the CPU is preempted and given to other processes. If the process is blocked or terminated before the quantum elapses, the CPU is switched when the process is blocked.

スケジューリングアルゴリズムは、クロック割込をどのように処理するかについて、2つのカテゴリに分割することができる。   The scheduling algorithm can be divided into two categories as to how clock interrupts are handled.

ノンプリエンプティブスケジューリング(Nonpreemptive Scheduling)
一旦、プロセスにCPUが与えられ、そのプロセスがCPUを持ち続ける場合は、スケジューリング規則は、ノンプリエンプティブである。ノンプリエンプティブスケジューリングの幾つかの特徴を以下に記す。
Nonpreemptive Scheduling
Once a process is given a CPU and the process continues to have a CPU, the scheduling rule is non-preemptive. Some features of non-preemptive scheduling are described below.

1.ノンプリエンプティブ方式では、短いジョブは、より長いジョブによって待たされるが、全てのプロセスの全体的な処理は公平である。   1. In the non-preemptive method, a short job is waited for by a longer job, but the overall processing of all processes is fair.

2.ノンプリエンプティブ方式では、入力最優先ジョブは、待っているジョブを移動することができないので、応答時間は予測しやすい。   2. In the non-preemptive method, since the input highest priority job cannot move the waiting job, the response time is easy to predict.

3.ノンプリエンプティブスケジューリングでは、スケジューラは、以下の2つの局面でジョブを実行する。
a.プロセスが実行状態から実行待ち状態に切り換わったとき
b.プロセスが終了したとき
3. In non-preemptive scheduling, the scheduler executes jobs in the following two aspects.
a. When a process switches from an execution state to a waiting state b. When the process ends

プリエンプティブスケジューリング(Preemptive Scheduling)
一旦、プロセスにCPUを与えられても、CPUが取り上げられる可能性がある場合、スケジューリング規則は、プリエンプティブである。論理的には動作可能なプロセスを一時的に停止することを許可する戦略(strategy)は、プリエンプティブスケジューリングと呼ばれ、完了するまで動作させる(run to completion)方法と対照的である。
Preemptive Scheduling
Once a process is given a CPU, the scheduling rule is preemptive if the CPU may be picked up. A strategy that allows a logically operable process to be temporarily stopped is called preemptive scheduling, as opposed to a run to completion method.

ラウンドロビンスケジューリングは、(タイムスライスの最後では)プリエンプティブであり、したがって、システムが、対話型利用者(interactive users)に対して妥当な応答時間を保証する必要がある時分割環境(time-sharing environments)においては、有効である。   Round-robin scheduling is preemptive (at the end of the time slice) and therefore the time-sharing environments where the system needs to guarantee reasonable response times for interactive users. ) Is effective.

ラウンドロビン方式において、最も注目される問題は、カンタムの長さである。カンタムを余りにも短く設定すると、余りにも多くのコンテキストスイッチが起こり、CPU効率が下がる。一方、カンタムを余りにも長く設定すると、応答時間が遅くなり、先着順サービス(First Come First Served:FCFS)に近づく。この具体例を以下に示す。   The most noticeable problem in the round robin method is the length of the quantum. If the quantum is set too short, too many context switches will occur, reducing CPU efficiency. On the other hand, if the quantum is set too long, the response time is delayed and the first come first service (FCFS) approach is approached. A specific example is shown below.

タスク切換が2msであると仮定する。カンタムが8msである場合、非常に優れた応答時間を保証することができる。この具体例では、20人のユーザが全て、シングルCPUのサーバにログインしており、全てのユーザが同時に要求を生成する。各タスクは、10ms間(8msのカンタム+2msのオーバヘッド)かかり、20番目のユーザは、200ms(10ms×20)、すなわち1/5sで応答を得る。   Assume that task switching is 2 ms. If the quantum is 8 ms, a very good response time can be guaranteed. In this specific example, all 20 users are logged into a single CPU server, and all users generate requests simultaneously. Each task takes 10ms (8ms quantum + 2ms overhead) and the 20th user gets a response in 200ms (10ms x 20), ie 1 / 5s.

一方、効率は、以下の通りである。
有効時間の総時間=8ms/l0ms=80%、すなわち、CPU時間の20%がオーバヘッドに浪費されている。
On the other hand, the efficiency is as follows.
Total effective time = 8 ms / 10 ms = 80%, that is, 20% of CPU time is wasted on overhead.

200msのカンタムでは、効率は、200ms/202ms=約99%である。   At a 200 ms quantum, the efficiency is 200 ms / 202 ms = approximately 99%.

しかしながら、応答時間については、20人のユーザが同時に要求を行った場合、202×20=4040ms、すなわち4s以上となり、これは好ましくない。実際に起こっていることの全体像を得るために、パラメータを定義する。
・応答時間−プロセスが完了する時間。OSは、ある種のプロセスを好み、又は平均待ち時間のような統計的特性を最小にすることを望む。
・実行時間(Implementation Time)−これは、アルゴリズム及び保守の複雑性を含む。
・オーバヘッド−どのプロセスをスケジューリングするかを決定し、この選択のために必要とされるデータを収集する時間。
・公平性−ユーザプロセスを異なって処理する程度の差。
However, when 20 users make requests simultaneously, the response time is 202 × 20 = 4040 ms, ie, 4 s or more, which is not preferable. Define parameters to get an overall picture of what is actually happening.
Response time—the time for the process to complete. The OS prefers certain processes or wants to minimize statistical properties such as average latency.
Implementation Time—This includes algorithmic and maintenance complexity.
Overhead—The time to decide which process to schedule and collect the data needed for this selection.
Fairness-the difference in the degree to which user processes are handled differently.

したがって、カンタムを長くすると、効率が良くなることを保証し、カンタムを短くすると、応答時間が短くなることを保証する。スループット及びターンアラウンド(turnaround)は、システム内のジョブの数及び1タスク当たりのI/Oの使用量に依存する。ラウンドロビン方式は、明らかに公平である。   Therefore, increasing the quantum ensures that the efficiency is improved, and shortening the quantum ensures that the response time is shortened. Throughput and turnaround depend on the number of jobs in the system and I / O usage per task. The round robin method is clearly fair.

いずれにしても、ラウンドロビンスケジューリングの下での平均待ち時間は、多くの場合、非常に長く、プロセスは、そのタイムスライスよりも短い時間を使用する場合がある(例えば、セマフォ又はI/O動作のブロッキング)。アイドルタスクは、動作している他のタスクがないとき以外は、決してCPUを獲得してはならない(アイドルタスクは、ラウンドロビンに参加してはならない)。   In any case, the average latency under round robin scheduling is often very long and the process may use less time than its time slice (eg, semaphore or I / O operations). Blocking). An idle task must never acquire a CPU except when there are no other tasks running (the idle task must not participate in round robin).

最新の主要なオペレーティングシステムは、ラウンドロビンの変形で動作し、これらがもたらす最も重要な改良は、プロセスの優先順位クラス(priority classes)である。   The latest major operating systems operate on round-robin variants, and the most important improvement they bring is process priority classes.

これらのクラスを設定する簡単なアルゴリズムは、最後のカンタムのうちのプロセスが使用した割合(fraction)をfとすると、優先度を1/fに設定することである。その100msのうちの2msだけを使用したプロセスは、優先度(priority level)が50となり、ブロッキングの前に50msを使用したプロセスは、優先度が2となる。したがって、100msのカンタム全体を使用したプロセスは、最下位優先度になる(優先度を1〜99に設定するLinuxとは異なり、優先度がC−スタイル[0・・・99]である他のシステムでは、1になる)。   A simple algorithm for setting these classes is to set the priority to 1 / f, where f is the fraction of the last quantum used by the process. A process using only 2 ms out of 100 ms has a priority level of 50, and a process using 50 ms before blocking has a priority of 2. Thus, a process that uses the entire 100 ms quantum has the lowest priority (unlike Linux, which sets the priority to 1-99, the other priority is C-style [0... 99]. 1 in the system).

KOSスケジューラのオペレーティングシステムの設計には、明らかに3つの構成がある。図1は、他の全ての従来のオペレーティングシステムと同様に、リソースが外側の周辺に沿って分布するクローズクラスタKOS構成(close cluster KOS configuration)を示している。   There are clearly three configurations in the operating system design of the KOS scheduler. FIG. 1 shows a closed cluster KOS configuration in which resources are distributed along the outer perimeter, as with all other conventional operating systems.

図4は、KOS概念設計の下で可能である幾つかの追加機能を有するシステム300を示している。これらの追加機能には、入力機構からのイベントを受信して、イベントを、リソースへのアクセスを得る適切な配信OS(distribution OS)にルーティングする目的だけに専用の中央に位置するルーティングOS機能(central routing OS facility)301が含まれる。この設計の下では、各オペレーティングシステム310〜316は、それに割り当てられた各イベントの完全な解決(full resolution)を得るために直ちに達することができるそのメモリ使用量(footprint)内に組み込まれた限られた数のリソースを有する。外側の周辺には、システムリソースとみなすことができる更なるリソースがあり、内部の各OS310〜316は、これらのリソースを、共有しなければならないが、拡張イベント(完了のためにリソースを拡張する必要があるジョブ)のために確保することができる。   FIG. 4 illustrates a system 300 having several additional features that are possible under the KOS conceptual design. These additional functions include a dedicated centrally located routing OS function (only for the purpose of receiving events from the input mechanism and routing the events to the appropriate distribution OS that gains access to the resources). central routing OS facility) 301 is included. Under this design, each operating system 310-316 has a limit built into its memory footprint that can be reached immediately to obtain full resolution of each event assigned to it. Have the specified number of resources. In the outer periphery, there are additional resources that can be considered system resources, and each internal OS 310-316 must share these resources, but extend events (extend resources for completion) Can be reserved for jobs that need to).

また、図4に示すように、システム300は、OS機能301を取り囲む複数のオペレーティングシステム310〜316を備える。図4では、オペレーティングシステム310〜316は、リソース330の外殻によって囲まれており、次に、リソース330は、アプリケーション340の外殻によって囲まれている。   As illustrated in FIG. 4, the system 300 includes a plurality of operating systems 310 to 316 surrounding the OS function 301. In FIG. 4, the operating systems 310-316 are surrounded by the outer shell of the resource 330, and then the resource 330 is surrounded by the outer shell of the application 340.

カーネル動作スケジューラの構成の1つの方法は、スター構成(Star Configuration)である。スター構成の下では、1つのカーネルが中央のディスパッチャ(central dispatcher)として機能するように構成されており、実行可能状態からプロセスを受信する役割は、必要なリソース、例えば追加的なメモリ割当、スタック要求、ロバストなI/Oトラヒック等のためにプロセスをスクリーニングし、このプロセスを、このような要求をサポートするように構成された適切なオペレーティングシステム環境にディスパッチすることである。スター構成の下では、如何なるプロセスもブロック、すなわちスリープされず、トラヒックは、実行状態、実行待ち状態及び切換状態(switched state)のみの3つの状態を用いて流れる。   One method of configuring the kernel operation scheduler is Star Configuration. Under a star configuration, one kernel is configured to act as a central dispatcher, and the role of receiving processes from the ready state is responsible for the necessary resources such as additional memory allocation, stack Screening a process for requests, robust I / O traffic, etc. and dispatching the process to an appropriate operating system environment configured to support such requests. Under a star configuration, no process is blocked, i.e. sleeping, and traffic flows using only three states: an execution state, a wait state, and a switched state.

システムS1内のスターコアカーネル構成(Star Core Kernel Configuration)
コアとして機能するカーネルは、n個の他のカーネルによって囲まれている。図5は、本発明の一実施の形態に基づくシステムS1内のスターコアカーネル構成350を示している。このスターコアカーネル構成350は、KOSを有する中央ルーティングオペレーティングシステム(Central Routing Operating System)360を備え、この中央ルーティングオペレーティングシステム360は、カーネルオペレーティングシステム(kernel operating system)351〜356によって囲まれており、これらのカーネルオペレーティングシステム351〜356は、アプリケーション363の外殻によって囲まれている。各オペレーティングシステム351〜356を囲む外殻は、各オペレーティングシステム351〜356が利用可能なリソースに対応している。中央ルーティングオペレーティングシステム360は、以下の典型的なプロセス状態を取る。
Star Core Kernel Configuration in system S1
The kernel functioning as the core is surrounded by n other kernels. FIG. 5 shows a star core kernel configuration 350 in system S1 according to one embodiment of the present invention. This star core kernel configuration 350 comprises a Central Routing Operating System 360 with KOS, which is surrounded by kernel operating systems 351-356, These kernel operating systems 351 to 356 are surrounded by the outer shell of the application 363. The outer shell surrounding each operating system 351 to 356 corresponds to a resource that can be used by each operating system 351 to 356. The central routing operating system 360 takes the following typical process states:

1.システムS1内でプロセスが最初に生成されたとき、プロセスは、それが必要なリソースのためにスクリーニングされる新たなプロセス状態(new process state)となる(システムリソースに関する章参照)。一旦、必要なリソースが決定されると、コアは、これらのリソース条件(resource requirement)を満たしそうな、例えばI/Oオペレーティングシステム(I/Oオペレーティングシステム参照)のようなオペレーティングシステム(理想的にはアイドル状態にある)を調べる。一旦、適切なOSが決定されると、プロセスは、(通常、実行可能状態から)切換状態に移行し、クロックの次のサイクルで、プロセスは、システムS1内の適切なオペレーティングシステムにディスパッチされる。   1. When a process is first created in system S1, it becomes a new process state that is screened for the resources it needs (see chapter on system resources). Once the required resources have been determined, the core is an operating system (ideally an I / O operating system (see I / O operating system)) that is likely to meet these resource requirements. Is in an idle state). Once the appropriate OS is determined, the process transitions to the switched state (usually from the ready state) and in the next cycle of the clock, the process is dispatched to the appropriate operating system in system S1. .

2.コアは、既にディスパッチされて、現在動作中であるべきプロセスに基づいて、他の全ての実行状態と通信するために使用される「実行状態」を有する。コアの実行状態は、実際にはプロセスを動作させないが、システムS1内の全ての実行プロセス(running processes)の経過を追跡して、各状態をコンソールに通知する像通信状態(statue communication state)又は仮想実行状態である。   2. The core has an “execution state” that is used to communicate with all other execution states based on the processes that have already been dispatched and should be currently running. The execution state of the core does not actually run the process, but the progress of all the running processes in the system S1 is tracked, and each state is notified to the console. Virtual execution state.

3.まさに生成されたプロセスの実行可能状態は、優先順位の決定状態(triage state)又はスクリーニング状態(screening state)として機能するスターコアカーネルの下にある状態であり、スターコアカーネルの下にある周辺カーネル(peripheral kernel)の何れにおいても、周辺カーネルは、従来のプロセス状態の下にあるのと同様に、実行待ち状態又は動作可能状態(runnable state)として機能する。   3. The executable state of the spawned process is the state below the star core kernel that acts as a priority triage state or screening state, and the peripheral kernels below the star core kernel In any of the (peripheral kernel), the peripheral kernel functions as a waiting state or a runnable state, just as it is under the conventional process state.

図6は、通信チャンネルC680を介して通信する複数のカーネル601、630、640のハイレベルのブロック図であり、各カーネルは、スイッチアウトするアプリケーションプログラムAと、スイッチインするアプリケーションプログラムBとを有する。例えば、カーネル601は、中央演算処理装置602によって実行され、スケジューラ607を含み、KOS610は、実行状態611と、実行待ち状態612と、アプリケーションプログラムA615を切り換える切換状態613とを有する。図6は、スイッチアウトするアプリケーションA615と、スイッチインするアプリケーションB605とを示している。カーネル630、640は、カーネル601と同様に動作するので、これ以上は説明しない。通信チャンネルC680は、複数のCPUに亘って、カーネル601、630、640の内部のKOSスケジューラ間を結んでいる。   FIG. 6 is a high-level block diagram of a plurality of kernels 601, 630, 640 communicating via a communication channel C680, each kernel having an application program A that switches out and an application program B that switches in . For example, the kernel 601 is executed by the central processing unit 602 and includes a scheduler 607. The KOS 610 has an execution state 611, an execution wait state 612, and a switching state 613 for switching the application program A 615. FIG. 6 shows application A 615 to be switched out and application B 605 to be switched in. The kernels 630 and 640 operate in the same manner as the kernel 601, and will not be described further. The communication channel C680 connects the KOS schedulers in the kernels 601, 630, and 640 across a plurality of CPUs.

共有メモリ(Shared Memory)
図7は、共有メモリΣ1720、Σ2721、Σ3722、Σ4723と、オペレーティングシステム710〜713の環境とを含むシステム700を示している。図7に示すように、共有メモリΣ1720〜Σ4723は、まさに、UNIXオペレーティングシステムの一部であり、抽象化(abstract)は、現在、特定の規則で使用するように提供されているが、共有メモリΣ1720〜Σ4723は、本発明の実施の形態に基づく分散オペレーティングシステムの目的を果たすように、特定の方法で実装することができる。各オペレーティングシステムカーネルが専用のスケジューラとなり、これらの専用のスケジューラを有する4つのこのようなオペレーティングシステム710〜713がある場合、各スケジューラが他のスケジューラのリソースを共有することができるという方法によって、他のスケジューラと通信するように、スケジューラは設計されている。各スケジューラは、初期化(起動)のときに、他のスケジューラに知られている特定のリソースに接続する(attached)場合、その動作の任意の時点で、それが供給するリソースのカテゴリの一部でない動作を、他のスケジューラに外注することができる。
Shared memory
FIG. 7 shows a system 700 that includes shared memories Σ1720, Σ2721, Σ3722, Σ4723, and an environment of operating systems 710-713. As shown in FIG. 7, shared memory Σ1720-Σ4723 is just part of the UNIX operating system, and abstraction is currently provided for use with specific rules, but shared memory Σ1720 to Σ4723 can be implemented in a specific way to serve the purpose of a distributed operating system according to an embodiment of the present invention. If each operating system kernel is a dedicated scheduler and there are four such operating systems 710-713 having these dedicated schedulers, then each scheduler can share the resources of other schedulers, in other ways The scheduler is designed to communicate with other schedulers. If each scheduler attaches to a specific resource known to other schedulers at initialization (startup), it is part of the category of resources it serves at any point in its operation Can be outsourced to other schedulers.

各スケジューラには、メモリの、他のスケジューラと共有する一部が割り当てられており、完了するためにアクセスして処理するデータセットによって動作するプログラムを必要とする動作を、他のスケジューラに外注する場合、外注スケジューラは、量があるデータ自体ではなく、ポインタ及びファイル記述子だけを受信スケジューラに渡す。ポインタ及びファイル記述子は、そのCPUで処理する受信スケジューラ上のキューに入れることができる。   Each scheduler is assigned a portion of its memory that is shared with other schedulers, and outsources other schedulers for operations that require a program that operates on the data set that it accesses and processes to complete. If so, the outsourced scheduler passes only the pointer and file descriptor to the receiving scheduler, not the amount of data itself. Pointers and file descriptors can be queued on the receive scheduler for processing by the CPU.

IPC機能及びプロトコルスタック(IPC Facilities and Protocol Stacks)
プロトコルスタックだけでなく、IPC機能も、UNIX構造とは別に設けられており、これらの両方は、既にユーティリティとして統合されている。また、これらのユーティリティは本発明にも有用である。これらのユーティリティは、幾つかのプラットフォームに亘ってではなく、特定のコンピュータシステムに組み込む現在の分散コンピューティングを除いて、クラスタ内のオペレーティングシステム間で通信を大量に行うように意図された形で構成することができる。
IPC Facilities and Protocol Stacks
Not only the protocol stack but also the IPC function is provided separately from the UNIX structure, both of which are already integrated as utilities. These utilities are also useful in the present invention. These utilities are configured in a manner intended to communicate a large amount of communication between operating systems in a cluster, with the exception of current distributed computing that is built into specific computer systems, rather than across several platforms. can do.

IPCスケジューラ(IPC Scheduler)
図8は、ネットワークコントローラを1つのリソースとして示しており、データパケット751がネットワークオペレーティングシステム(network operating system:NOS)755に送信されている。図8に示すように、カーネルスケジューラは、リソースプロセスを確保する(acquisition)フィルタを備え、カーネルスケジューラは、まず、プロセスがどこで発生すべきかを判定するために必要とされるリソースを選択する。各CPUは、汎用CPUであり、各オペレーティングシステムのカーネルは、リソースのグループ又はセットの割当に、より特化又は専用とされる。図8は、本発明に基づいて用いられる、特化又は専用とされたオペレーティングシステムの一実施の形態を示している。NOS755は、FTP、PPP、Modem、Airport、TCP/IP、NFS及びAppletalk等のプロトコルのうちの1つ以上を用いることができ、また、プロキシのオプション(Proxy options)によって、ポートを用いることができる。
IPC Scheduler
FIG. 8 shows the network controller as one resource, and a data packet 751 is transmitted to a network operating system (NOS) 755. As shown in FIG. 8, the kernel scheduler includes a filter that acquires resource processes, and the kernel scheduler first selects the resources needed to determine where the process should occur. Each CPU is a general purpose CPU and the kernel of each operating system is more specialized or dedicated to the allocation of resource groups or sets. FIG. 8 illustrates one embodiment of a specialized or dedicated operating system used in accordance with the present invention. The NOS 755 can use one or more of protocols such as FTP, PPP, Modem, Airport, TCP / IP, NFS, and Appletalk, and can use a port depending on proxy options. .

なお、メモリは、4つ(quadrant)に分割され、メモリの一部は、各オペレーティングシステム間で分割され、ポインタ及びファイル記述子は、大量のデータを移動するのではなく、割当によってオペレーティングシステムからオペレーティングシステムに渡すことができることは、明らかである。IPC機能を用いることにより、プロセスは、必要なトランザクションを運ぶためのメッセージを、トランザクションプロトコルの形式で通信することができる。   Note that the memory is divided into four (quadrant), a part of the memory is divided among the operating systems, and pointers and file descriptors are allocated from the operating system by allocation rather than moving a large amount of data. It is clear that it can be passed to the operating system. By using the IPC function, the process can communicate messages in the form of a transaction protocol to carry the necessary transactions.

一実施の形態においては、アプリケーション、例えば音声合成器は、プロセスを中断する割込なしで、特定のI/OOSを利用するCPU上で連続して動作することができる。他の実施の形態においては、アプリケーション、例えばビデオストリームは、特定のCPUと、メモリと、プログラムをその寿命中にスワップイン及びスワップアウトするスケジューラによって制御されることがないOSとを利用して、動作することができる。   In one embodiment, an application, such as a speech synthesizer, can run continuously on a CPU that utilizes a particular I / OOS without interrupting the process. In other embodiments, an application, such as a video stream, utilizes a specific CPU, memory, and an OS that is not controlled by a scheduler that swaps programs in and out during their lifetime, Can work.

図9は、本発明の一実施の形態に基づくKOS790を示しており、KOS790は、プロセスを、I/Oキー781と、AOSサウンドシステム782と、I/Oビデオ783と、I/Oディスク784と、I/Oユニバーサルシリアルバス(USB)785と、I/O補助ポート786と、プリントOS787と、I/Oネットコントローラ788とに割り当てるために用いられる。図9に示すように、I/OUSBバス785は、コントローラを有し、コントローラは、そのバス上のリソースのマネージャである。リソースは、データをバスに沿って双方向に移動させるために必要である。I/Oは、あらゆるコンピュータの主要な機能であるので、最早オペレーティングシステムの副機能ではない。本発明の実施の形態では、オペレーティングシステムは、非同期だけではなく、並列して動作する複数の下位のオペレーティングシステムを調整する。   FIG. 9 illustrates a KOS 790 according to one embodiment of the present invention, which processes the I / O key 781, AOS sound system 782, I / O video 783, and I / O disk 784. And an I / O universal serial bus (USB) 785, an I / O auxiliary port 786, a print OS 787, and an I / O net controller 788. As shown in FIG. 9, the I / O USB bus 785 has a controller, which is a manager of resources on that bus. Resources are necessary to move data in both directions along the bus. I / O is no longer a subfunction of the operating system because it is a major function of any computer. In the embodiment of the present invention, the operating system coordinates not only asynchronously but also a plurality of lower-level operating systems operating in parallel.

I/Oオペレーティングシステム
I/Oオペレーティングシステムは、集中化された非同期中央OS(centralized asynchronous central OS)からのデータ読出を実行して、何時、どのようにデータを転送するかを決定するコントローラ機能を実行する。
I / O Operating System The I / O operating system performs a data read from a centralized asynchronous central OS and determines the controller function that determines when and how to transfer the data. Run.

本発明に基づく構成(construct)は、スレッドに分割されたその機能を有することができる、移動可能(portable)であるという概念に基づくオペレーティングシステムの機能に分散され、そこでは、スレッドは、プロセスに類似しているが、他のスレッドコード(threads code)、データ及び他のリソースを共有することができる。   The construct according to the present invention is distributed into operating system functions based on the concept of being portable, which can have its function divided into threads, where threads are Similar, but can share other threads code, data and other resources.

図10に示す一実施の形態における構成(construct)は、1つのオペレーティングシステムの機能801、803、805、807、812、814を分散し(deploy)、システムコールの全ては、スレッディングされた通信(threaded communication)を用いて互いに動作する非同期オペレーティングシステム(asynchronous operating system)810、816を形成する。それ自体の独立したカーネルを有する各オペレーティングシステムは、2つの特化された機能及びキュー管理のために特別に設計されている。この構成(arrangement)は、全てのタスクをコンピュータの回りに分散させることによって、サイクルタイムを分割し、複数のCPUを利用する。各カーネルは、それぞれ1つのCPUに結び付けられており、コントローラは、CPU又は特殊用途のコントローラによって置換される。   The construct in one embodiment shown in FIG. 10 deploys one operating system function 801, 803, 805, 807, 812, 814, and all system calls are threaded communication ( Asynchronous operating systems 810 and 816 are formed that operate with each other using threaded communication. Each operating system with its own independent kernel is specially designed for two specialized functions and queue management. This arrangement divides the cycle time by distributing all tasks around the computer and uses multiple CPUs. Each kernel is tied to one CPU, and the controller is replaced by a CPU or special purpose controller.

主要なKOSプロセス状態(Primary KOS process states)
以下の典型的なプロセス状態は、全ての種類のコンピュータシステムにおいて起こり得る。これらの状態の殆どにおいて、プロセスは、メインメモリに記憶される。
Primary KOS process states
The following typical process conditions can occur in all types of computer systems. In most of these states, the process is stored in main memory.

生成(「新たな」とも呼ばれる)
アプリケーションが開かれて、プロセスが最初に生成されたとき、プロセスは、「生成(created)」又は「新たな(new)」状態となる。このアプリケーション状態では、プロセスは、「実行可能(ready)」状態に入るのを待っている。この入力は、長期スケジューラ、すなわち入力スケジューラ、KOSスケジューラによって、承認又は遅延される。入力する間に、プロセスは、必要とされるリソースが調べられた後、実行状態に入り、あるいは、プロセスは、動作に必要とされる適切なリソースを有する他のCPUのオペレーティングシステムに切り換えられる切換状態に再設定される。
Generate (also called “new”)
When an application is opened and the process is first created, the process is in a “created” or “new” state. In this application state, the process is waiting to enter a “ready” state. This input is approved or delayed by the long-term scheduler, ie, input scheduler, KOS scheduler. While entering, the process enters the execution state after the required resources are examined, or the process is switched to another CPU's operating system with the appropriate resources required for operation. Reset to state.

実行可能(実行待ち)
この実行可能状態は、上述した主要なプロセス状態の「実行可能」状態と同様である。
Executable (waiting for execution)
This executable state is similar to the “executable” state of the main process states described above.

動作(Running)
この動作状態は、上述した主要なプロセス状態の「動作」状態と同様である。
Running
This operation state is the same as the “operation” state of the main process state described above.

切換(以前は「ブロック」又は「スリープ(sleeping)」と呼ばれていた)
プロセスがリソース(例えばファイル、セマフォ又はデバイス)によって「ブロック」されるのではなく、(ブロックプロセスは、実行を続けることができないので)、プロセ
スは、現在のCPU及びオペレーティングシステムから除去されて、ブロック状態になり、プロセスが必要とするリソースが連続して利用可能な他のCPU及びオペレーティングシステムに移される。シングルCPU/シングルOSのシナリオの下では、プロセスは、そのリソースが利用可能になるまで、ブロックされたままであり、最悪の場合には、デッドロックされる。オペレーティングシステムは、ブロック状態から、ブロックされていたリソースが利用可能になったことを、プロセスに通知することができる(オペレーティングシステムそれ自体は、割込によって、リソースが利用可能になったことが通知される)。一旦、プロセスが、そのリソースが利用可能な適切なオペレーティングシステムに到着すると、プロセスは、再び「実行可能」状態に入り、この「実行可能」状態からその「実行」状態にディスパッチされ、この「実行」状態から、プロセスは、それ用に新たに利用可能になったリソースを使用することができる。
Switching (previously called "block" or "sleeping")
Instead of the process being “blocked” by a resource (eg, file, semaphore or device) (because the block process cannot continue execution), the process is removed from the current CPU and operating system and blocked A state is reached and the resources required by the process are transferred to other CPUs and operating systems that are continuously available. Under a single CPU / single OS scenario, the process remains blocked until its resources are available, and in the worst case deadlocked. From the blocked state, the operating system can notify the process that the blocked resource is available (the operating system itself notifies that the resource was made available by an interrupt. ) Once the process arrives at the appropriate operating system where its resources are available, the process reenters the “executable” state and is dispatched from this “executable” state to its “executed” state. From the state, the process can use newly available resources for it.

終了(Terminated)
この終了状態は、上述した主要なプロセス状態の「終了」状態と同様である。
Terminated
This end state is the same as the “end” state of the main process state described above.

更なるプロセス状態(Additional process states)
仮想メモリをサポートしているシステムでは、更に2つのプロセス状態がある。これらの状態の両方において、プロセスは、2次メモリ(通常はハードディスク)に記憶される。
Additional process states
In a system that supports virtual memory, there are two additional process states. In both of these states, the process is stored in secondary memory (usually a hard disk).

スワップアウト及び実行待ち(Swapped out and waiting)
このスワップアウト及び実行待ち状態は、上述した主要なプロセス状態の「スワップアウト及び実行待ち」状態と同様である。
Swapped out and waiting
This swap-out and waiting for execution state is the same as the “swap out and waiting for execution” state of the main process state described above.

スワップアウト及びブロック(Swapped out and blocked)
このスワップアウト及びブロック状態は、上述した主要なプロセス状態の「スワップアウト及びブロック」状態と同様である。
Swapped out and blocked
This swap-out and block state is similar to the “swap-out and block” state of the main process state described above.

図11は、通知可能なプロトコル(signaling enabled protocols)を示している。例えば、プロトコルKCは、複数のカーネル、すなわちKDISPLAY852と、KI/OFile System1853と、KAPPS1854と、KCONTROL855と、KBUS CONTROL856とを同期させるのに用いることができる。非同期で機能する3つ以上のカーネルを、動作環境において中央及びコアのカーネルによって同期させる方法について説明する。UNIXオペレーティングシステムは、通常カーネルとして知られているコアからなり、カーネルは、中央コマンド(central commands)の全てを実行し、動作を実行するあるタスクを実行する複数の処理又はノードを、動作環境に亘って分散する。ここに説明する方法は、これとは異なり、まず、中央のコアカーネル(central core kernel)が、全ての入力及び出力動作の大部分をI/Oカーネルに外注できるようにし、次に、I/Oカーネルは、中央のカーネル(central kernel)又はコアに更なる負担をかけることなく、このような動作の残り部分を実行する。   FIG. 11 shows signaling enabled protocols. For example, the protocol KC can be used to synchronize multiple kernels, namely KDISPLAY 852, KI / Ofile System 1853, KAPPS 1854, KCONTROL 855, and KBUS CONTROL 856. A method is described for synchronizing three or more kernels that function asynchronously by the central and core kernels in the operating environment. The UNIX operating system consists of a core, commonly known as the kernel, that executes all of the central commands and puts multiple processes or nodes into the operating environment that perform certain tasks to perform operations. Distributed over. The method described here is different, first allowing the central core kernel to outsource most of all input and output operations to the I / O kernel, then I / O The O kernel performs the rest of such operations without placing additional burden on the central kernel or core.

オペレーティングシステム内では、ファイルI/O、すなわちメモリへ/からのデータ転送が、従来のカーネルの大部分の動作を占め、このような負荷が大きいタスクから従来のカーネルを解放することができるとき、カーネルによって実行されるI/O動作、例えばアプリケーションの管理並びにコマンドの解釈、及び他のコア構成、例えば特定のCPU上での処理時間のスケジューリングは、より少ない待ち時間で完了することができる。   Within the operating system, file I / O, ie data transfer to / from memory, occupies most of the activity of the traditional kernel, and when the traditional kernel can be released from such a heavy task, I / O operations performed by the kernel, such as application management and command interpretation, and other core configurations, such as processing time scheduling on a particular CPU, can be completed with less latency.

この方法は、中央の階層的カーネルと、幾つかの下位の及び/又は非同期カーネルとの動作間のタスク分離を記述している。対称カーネル(symmetric kernel)が共有情報を非同期で処理する対称カーネル処理環境では、このような環境の不一致の下で起こり得る衝突を制御し、指示する環境変数(environmental variable)を用いている。また、この方法は、対称的、抽象的、且つ車輪のような装置(symmetric metaphysical wheel-like apparatus)上の複数の回転カーネル(rotating kernel)を記述しており、全ての回転カーネルは、カーネルとそれが動作するコマンド及びデータ間の衝突を制御するために用いる環境変数を介して、情報を共有している。   This method describes task separation between the operation of the central hierarchical kernel and several subordinate and / or asynchronous kernels. Symmetric kernel processing environments where symmetric kernels process shared information asynchronously use environmental variables that control and indicate collisions that can occur under such environmental inconsistencies. The method also describes multiple rotating kernels on a symmetric, abstract, and symmetric metaphysical wheel-like apparatus, where all rotating kernels Information is shared through environment variables used to control collisions between commands and data on which it operates.

通信プロトコル(COMMUNICATION PROTOCOL)
本発明の実施の形態においては、通信プロトコルは、環境の下で動作するカーネル間の通信及びこれらのカーネルの下で動作するプロセス間の通信プロトコルとして定義される。この通信プロトコルにより、3つ以上のプロセスが存在することができ、アドレッシングする特定の種類の通信の外部にあるプロセスによって管理される通信によって、これらのプロセス間で同時に通信することができる。通信プロトコルは、構成アーキテクチャ(configuration architecture)の種類に応じて、異なった設計を行うことができる。
Communication protocol (COMMUNICATION PROTOCOL)
In the embodiment of the present invention, a communication protocol is defined as a communication protocol between kernels operating under an environment and a communication protocol between processes operating under these kernels. With this communication protocol, there can be more than two processes, and communication between these processes can be made simultaneously by communication managed by processes outside of the specific type of communication to be addressed. The communication protocol can be designed differently depending on the type of configuration architecture.

プロセスは、プロセス間の通信のテーブルの代わりに、通信ポートに並ぶ(line up)。図12に示すように、プロセス911〜916の全ては、通信ポート910にアクセスしようとしている。プロセスマネージャは、プロセス間の通信を、要求及びリソースが解放されるとして、管理する。標準のIPCテーブル構成(standard IPC table configuration)に比べて、このポートのような通信プロセスによって提供される多くの利点のうちの1つは、2つ以上のプロセスが同時に通信できるということである。他の利点は、ハンドシェークという抽象概念(handshake abstract)ではなく、プロセス間のプロトコルによって全ての通信が管理されるということである。6つ以上のプロセスが互いの間の通信を確立するために並ぶとき、各プロセスは、それ自体と、1つ以上の他のプロセスとの間のダイレクトライン(direct line)を確立しなければならない。   Processes line up to communication ports instead of tables of communication between processes. As shown in FIG. 12, all of the processes 911 to 916 are trying to access the communication port 910. The process manager manages communication between processes as requests and resources are released. Compared to a standard IPC table configuration, one of the many advantages provided by a communication process such as this port is that two or more processes can communicate simultaneously. Another advantage is that all communication is managed by a protocol between processes rather than the handshake abstraction. When 6 or more processes line up to establish communication between each other, each process must establish a direct line between itself and one or more other processes. .

例えば、図12において、プロセス911は、リソースAを解放しようとしており、プロセス912は、リソースAを要求しようとしている。通信は、プロセス911とプロセス912間で確立され、これによって、プロセス911、912は、リソースAに関する共有関係(shared relationship)を有し、リソースAは、2つのプロセス911、912間の通信を行うプロセスマネージャによって管理される。プロセス911及びプロセス912の両方が、所定のシナリオの下でリソースCを要求する場合であって、プロセス911がリソースCを要求しながら、リソースAを解放し、プロセス915がリソースCの解放に至っていない場合、プロセス912の要求は、プロセス911がリソースCを入手し、これを解放するまで、ブロックされる。この所定のシナリオは、リソースを要求しているプロセスが多くあり、利用可能なリソースが適切な数よりも少ないという事実によって支配されている。   For example, in FIG. 12, process 911 is attempting to release resource A, and process 912 is attempting to request resource A. Communication is established between process 911 and process 912, whereby processes 911 and 912 have a shared relationship with resource A, and resource A communicates between the two processes 911 and 912. Managed by process manager. When both the process 911 and the process 912 request the resource C under a predetermined scenario, the process 911 releases the resource A while requesting the resource C, and the process 915 leads to the release of the resource C. If not, the request for process 912 is blocked until process 911 obtains resource C and releases it. This given scenario is dominated by the fact that there are many processes requesting resources and there are fewer than the appropriate number of resources available.

以下に説明するマネージャは、以下に限定されるものではないが、関係マネージャ、プロセッサマネージャ(Processor Manager)、スレッドマネージャ(Thread Manager)、リソースマネージャ及びリソース割当マネージャ(Resource Allocation manager)を含み、これらは全て、本発明に基づくKOSの実施の形態に使用される。以下では、これらのマネージャ及びKOSの他のコンポーネントがどのように機能するかを説明する。   The managers described below include, but are not limited to, a relationship manager, a processor manager, a thread manager, a resource manager, and a resource allocation manager. All are used in the embodiment of the KOS according to the present invention. The following describes how these managers and other components of the KOS function.

関係マネージャ(RELATIONSHIP MANAGER)
関係マネージャは、常に、環境内で動作する複数のカーネル間の関係を管理する。各カーネルによって、多くの所定のスレッドがそれらのカーネルコードを実行する役割を果たすことができるが、この要素は、関係マネージャによって実行されるタスクには関係ない。本発明の実施の形態に基づく関係マネージャによって実行されるタスクは、カーネルと、カーネル間の互いの関係とを含むものである。
Relationship Manager (RELATIONSHIP MANAGER)
The relationship manager always manages relationships between multiple kernels running in the environment. Each kernel can serve many predetermined threads to execute their kernel code, but this element is independent of the tasks performed by the relation manager. The tasks performed by the relationship manager according to the embodiment of the present invention include the kernel and the mutual relationship between the kernels.

各関係マネージャは、構成の種類に応じて、ある確立されたプロトコルを用いて通信を行い、リングオニオンカーネルシステム(Ring-Onion Kernel System)内で又は4つの構成アーキテクチャのそれぞれ内のオペレーティングシステムに亘って組織化されたカーネル間で情報を共有する。図13は、リソースマネージャ921と、リソース割当マネージャ922とを示している。図13において、リソース共有(Resource Sharing)と呼ばれるプロトコル{Al}は、環境内に常駐するあるリソースの知識(knowledge)を要求する関係マネージャから送信するデータのプロトコルを表している。この図13の同じリソースマネージャ921の下の{Bl}は、全く同じプロトコルの他の層を表しており、解放されたリソース又はリソースが解放されるまでの見積時間に関する情報を通知する。第3のパラメータ及びプロトコル層である{Cl}は、要求されたリソース、解放されたリソース、又はあるリソースがどこに常駐するかに関する、受信する情報を表している。   Each relationship manager communicates using an established protocol, depending on the type of configuration, across the operating system in the Ring-Onion Kernel System or in each of the four configuration architectures. Share information between organized kernels. FIG. 13 shows a resource manager 921 and a resource allocation manager 922. In FIG. 13, a protocol {Al} called resource sharing represents a protocol of data transmitted from a relation manager that requests knowledge of a certain resource residing in the environment. The {B1} below the same resource manager 921 in FIG. 13 represents another layer of the same protocol, and informs the information regarding the released resources or the estimated time until the resources are released. The third parameter and protocol layer {Cl} represents the information received about the requested resource, the released resource, or where a certain resource resides.

他の具体例では、関係マネージャRM1は、関係マネージャRM2の下のリソースAlに関する要求を生成する。関係マネージャRM2が、リソースAlが使用中であることを知っている場合、関係マネージャRM2は、そのリソースマネージャRsMgr2の要求を生成し、したがって、階層プロトコル(layered protocols)のシステムを介して、要求の元に情報を送り返すことによって、リソースA1が解放されるまでの時間を見積もることができる。   In another embodiment, the relationship manager RM1 generates a request for the resource Al under the relationship manager RM2. If the relationship manager RM2 knows that the resource Al is in use, the relationship manager RM2 generates a request for that resource manager RsMgr2, and thus through the system of layered protocols By sending the information back to the original, it is possible to estimate the time until the resource A1 is released.

関係マネージャRM1は、一旦リソースA1が解放されたことを知ると、例えば特定のプロトコル層を用いて、関係マネージャRM3に知らせる。関係マネージャRM3は、そのカーネル又はそのカーネルのスレッドの1つがリソースA1を獲得したことを知ると直ちに、リングアーキテクチャ(ring architecture)の下では、環境内の動作している全てのカーネル又はオペレーティングシステムのリソース割当マネージャに、スター−中央アーキテクチャ(Star-Center architecture)の下では、コマンド制御オペレーティングシステム又はカーネルのみに知らせる。   Once the relationship manager RM1 knows that the resource A1 has been released, it notifies the relationship manager RM3, for example, using a specific protocol layer. As soon as the relationship manager RM3 knows that the kernel or one of its threads has acquired the resource A1, under the ring architecture, all the operating kernels or operating systems in the environment The resource allocation manager is informed only to the command control operating system or kernel under the Star-Center architecture.

タスク分散のための構成(Configurations For Task Distribution)
全てのカーネルに常駐するスケジューラは、タスクをどのように分散させて実行するかを決定する中心的役割を果たすが、これらのスケジューラは、本発明にとっても重要であり、動作をどのような流れで実行するかを決定する中心的役割を果たす。本発明の実施の形態では、環境に割り当てられたタスクを実行する4種類以上の構成があり、これらの構成は、環境の中央コマンド構造であると考えられ、以下のように命名される。
Configurations for task distribution
Although the schedulers that reside in all kernels play a central role in determining how tasks are distributed and executed, these schedulers are also important for the present invention, and the flow of operations in any way. It plays a central role in deciding what to do. In the embodiment of the present invention, there are four or more types of configurations that execute tasks assigned to the environment, and these configurations are considered to be the central command structure of the environment and are named as follows.

アーキテクチャ(ARCHITECTURES)
1.階層構造(Hierarchical Structure)
本発明に基づき、環境内で複数のカーネルが同時に動作する階層構造では、ホストカーネル(host kernel)は、全ての制御の中心にあり、環境によって実行する全ての入力ジョブ又はタスクを受信する。コマンドカーネル(Command kernel)は、必要とされるリソースのタスクをスクリーニングし、特定のタスクを、このタスクが完了まで実行される適切なカーネルに割り当てる。コマンドカーネルの下には、関係マネージャがあり、関係マネージャは、コマンドカーネルと、環境内で動作する後続のカーネルとの間の関係を管理する。関係マネージャは、上述した1つと同様の制御プロトコル構造(control protocol structure)によって、他のカーネルを管理する。関係マネージャは、環境内で動作する他のカーネルのそれぞれとの間のリソース要求(resource requests)及びリソース条件を、記録して、バランスさせる。この仕事(chore)を実行するために、関係マネージャは、全てのタスク及びジョブが最初にどこに割り当てられたか、及びこれらが特定のカーネルに割り当てられた理由を理解する必要がある。階層構造の下では、環境にインストールされたリソースは、特定のカーネルに割り当てられ、例えば、プリンタは、特定のカーネルに割り当てられ、ビデオ画面(video screen)は、他のカーネルに割り当てられる。特定のI/O駆動タスク(I/O driven task)を必要とするタスクは、特定のリソースを獲得する際の遅延のために、ビデオ/オーディオ駆動タスク(video/audio driven task)に割り込まない。
Architecture (ARCHITECTURES)
1. Hierarchical structure
In accordance with the present invention, in a hierarchical structure where multiple kernels operate simultaneously in an environment, the host kernel is at the center of all control and receives all input jobs or tasks executed by the environment. The command kernel screens the task of the required resource and assigns a specific task to the appropriate kernel that is executed until this task is completed. Below the command kernel is a relationship manager, which manages the relationship between the command kernel and subsequent kernels operating in the environment. The relationship manager manages other kernels with a control protocol structure similar to the one described above. The relationship manager records and balances resource requests and resource conditions with each of the other kernels running in the environment. To perform this chore, the relationship manager needs to understand where all tasks and jobs were initially assigned and why they were assigned to a particular kernel. Under the hierarchical structure, resources installed in the environment are assigned to a specific kernel, for example, a printer is assigned to a specific kernel, and a video screen is assigned to another kernel. Tasks that require a specific I / O driven task do not interrupt the video / audio driven task due to delays in acquiring specific resources.

2.ラウンドロビン(Round-Robin)
ラウンドロビン構成(Round-Robin configuration)は、所定の順序でカーネルに割り当てるタスクからなる。この場合、カーネルが、タスクを実行するために必要とされるリソースを含んでいない場合、関係マネージャは、そのタスクを次のカーネルに適切に転送する役割を果たす。本発明では、ラウンドロビン構成は、多くの異なるよくある状況に適しているが、他の状況では、本発明が意図する好ましい効果(benefits)が得られないこともある。
2. Round-Robin
The round-robin configuration consists of tasks assigned to the kernel in a predetermined order. In this case, if the kernel does not contain the resources needed to perform the task, the relationship manager is responsible for properly forwarding the task to the next kernel. In the present invention, the round robin configuration is suitable for many different common situations, but in other situations, the beneficial effects intended by the present invention may not be obtained.

ラウンドロビン構成の下では、各カーネルは、環境内で、他のカーネルに対して非同期で動作し、関係マネージャによってリンクされ、したがって、カーネルは、各カーネルのそれぞれの下の各リソースマネージャと通信を行う。ラウンドロビン構成は、制御の中心点を有していない。この構成の場合、コマンドカーネルは存在しない。各カーネルは、抽象的環状構成(abstract circular configuration)にあるとみなされ、それぞれの関係マネージャを介して、他のカーネルに接続する。   Under a round-robin configuration, each kernel operates asynchronously with respect to other kernels in the environment and is linked by the relationship manager, so the kernel communicates with each resource manager under each of each kernel. Do. The round robin configuration does not have a control center point. In this configuration, there is no command kernel. Each kernel is considered to be in an abstract circular configuration and connects to other kernels via their respective relationship manager.

3.先入先出(First-in First-Out:FIFO)
FIFO構成の下では、各カーネルは、環境に現れる各タスクを先着順に実行する。特定のタスクがカーネルに供給され、カーネルがその所定のタスクを受け入れるために十分に解放されている場合、タスクがリソースのためにブロックされるまでは、タスクは、そのカーネルに常駐する。
3. First-in first-out (FIFO)
Under the FIFO configuration, each kernel executes each task appearing in the environment on a first-come, first-served basis. If a particular task is fed into the kernel and the kernel is free enough to accept that given task, the task will reside in that kernel until the task is blocked for resources.

4.スター−中央(Star-Center)
スター−中央アーキテクチャは、中央コマンドカーネル(central command kernel)を環状に取り囲む複数のカーネルを有する構成として定義される。中央コマンドカーネルは、制御カーネル(controlling kernel)であり、その機能を用いて、スター構成(Star configuration)の下の他のカーネルのためのタスク要求を受信して、組織化する。スター−中央構成(Star-Center configuration)は、環境内のリソースに基づいて、下位のカーネルを星座(constellation)にグループ化する。ここで、所定のタスクが所定のリソースを用いることを必要とし、一方、他のタスクが、多くの場合、所定のタスクが所定のリソースを用いることを完了するまで、その所定のリソースによってブロックされるオペレーティングシステムについて検討する。本発明では、カーネルスレッドは、このようなボトルネックを解消する際に、特定のカーネルをコピーするように専用とされ、これに対して、他のカーネルは、それらのスレッドを適宜用いることができる。複数のオペレーティングシステムのための多くの条件のうちの1つは、専用のカーネルが、特定の種類の複数の接続された(attached)リソースを処理するそれらのコードのコピーをスレッドアウト(thread out)する能力を用いる特定のリソースを処理することができるようにすることであり、したがって、複数のカーネルは、複数のCPU上で動作するだけではなく、複数のCPUに亘るそれら自体の複数のコピーを動作させる。
4). Star-Center
A star-central architecture is defined as a configuration having multiple kernels that surround a central command kernel in a circular fashion. The central command kernel is a controlling kernel that uses its functions to receive and organize task requests for other kernels under the Star configuration. The Star-Center configuration groups the subordinate kernels into constellations based on resources in the environment. Here, a given task needs to use a given resource, while other tasks are often blocked by that given resource until the given task completes using the given resource. The operating system to be considered. In the present invention, kernel threads are dedicated to copy specific kernels when such bottlenecks are resolved, whereas other kernels can use these threads as appropriate. . One of the many conditions for multiple operating systems is that a dedicated kernel threaded out a copy of their code to handle a particular type of attached resource. Multiple kernels not only run on multiple CPUs, but also multiple copies of themselves across multiple CPUs. Make it work.

5.リングオニオンカーネルシステム(Ring-Onion Kernel System)
リングオニオンカーネルシステムでは、複数のストリップダウンカーネル(strip-down kernel)は、オペレーティングシステムのサービス構造内で同時に機能する。オペレーティングシステムのサービス構造とは、サービスの特定のオペレーティングシステムのセットを構成する全ての補助的及び予備的ファイル(ancillary and auxiliary files)を意味する。これらのサービスは、共有することができる。このアーキテクチャ、例えばシステムコール機能及びカーネルコードの外部の他の機構の下では、設計の多様性を与え、特定の必要条件下の性能に影響を与えることができる。リングオニオンカーネルシステムの場合には、カーネルの全ては、シングルオペレーティングシステムカーネルのタスクを実行するが、これらのタスクを互いに非同期で実行し、補助的なファイル及び機能を共有するときには、これらのタスクを別々のCPU上で実行する。
5. Ring-Onion Kernel System
In a ring onion kernel system, multiple strip-down kernels function simultaneously within the operating system service structure. Operating system service structure means all ancillary and auxiliary files that make up a particular set of operating systems for a service. These services can be shared. Under this architecture, such as system call functions and other mechanisms external to the kernel code, design diversity can be provided and performance under specific requirements can be affected. In the case of a ring-onion kernel system, all of the kernels perform single operating system kernel tasks, but when these tasks run asynchronously with each other and share auxiliary files and functions, these tasks Run on separate CPUs.

上述した図1は、カーネルのシステムが、同じサービス及び機能を共有するが、タスクを非同期で実行するリングオニオンカーネルシステムを示している。各カーネルは、その局所的な空間内に即時の(immediate)サービス機能のセットを有しているが、より広いサービスは、環境内の全てのカーネル間で共有される。   FIG. 1 described above shows a ring-onion kernel system in which kernel systems share the same services and functions, but execute tasks asynchronously. Each kernel has a set of immediate service functions in its local space, but a wider service is shared among all kernels in the environment.

図1は、全てのカーネルが、コマンド及び制御カーネルなしで、互いに非同期に動作することを示しているが、本発明に基づくアーキテクチャでは、コマンド及び制御カーネルをインストールすることができ、これにより、スター−中央システムアーキテクチャと同様の仕様を、リングオニオンアーキテクチャと協調させて適用することができる。   Although FIG. 1 shows that all kernels operate asynchronously with each other without a command and control kernel, the architecture according to the present invention allows a command and control kernel to be installed, which -Specifications similar to the central system architecture can be applied in coordination with the ring onion architecture.

マルチプロセッサの同期(MULTI PROCESSOR SYNCHRONIZATION)
従来の同期モデルにおいて維持されている基本的な前提条件の1つは、スレッドがカーネルから去る準備ができ、又はリソースがブロックされるまで、スレッドが、カーネルの占有権(exclusive rights)及びカーネルの使用権を維持すること(割込を除く)である。マルチプロセッサでは、各プロセッサは、カーネルコードを同時に実行することができるので、従来の同期モデルは、最早有効なモデルではなくなっている。複数のスレッドを用いるマルチプロセッサモデルの下では、各プロセッサが、カーネルコードのそのコピーを実行できるときには、全ての種類のデータを保護する必要がある。本発明の下では、1つの環境内に複数のカーネルがあり、各カーネルは、カーネルコードのそれら自体のコピーを実行する複数のプロセスによる動作の結果として、複数のスレッドを有するので、この種の保護は有効である。
Multiprocessor synchronization (MULTI PROCESSOR SYNCHRONIZATION)
One of the basic prerequisites maintained in the traditional synchronization model is that the thread is not allowed to leave the kernel until the thread is ready to leave the resource or the resource is blocked. Maintain usage rights (excluding interruptions). In multiprocessors, each processor can execute kernel code simultaneously, so the conventional synchronization model is no longer an effective model. Under a multiprocessor model with multiple threads, each type of data needs to be protected when each processor can execute its copy of the kernel code. Under the present invention, there are multiple kernels in one environment, and each kernel has multiple threads as a result of operations by multiple processes executing their own copies of kernel code. Protection is effective.

プロセッサマネージャ(PROCESSOR MANAGER)
本発明の下では、プロセッサ、したがってCPUは、他のリソースと同様に、管理されるリソースとなる。より具体的には、プロセッサマネージャは、CPUの数と、環境の下で動作するカーネル、又はカーネルスレッドの使用を管理するカーネル固有のプロセスのコピーに対するCPUの割当とを管理するプロセスである。特別なカーネルコードのコピーを実行して、特定のリソースを利用するカーネルスレッドを使用するための各要求は、プロセッサマネージャによって管理される。プロセッサの数は、プロセッサマネージャによって、分類されて(catalogued)、現在の環境内で実行中の各スレッドに割り当てられなければならない。
Processor manager (PROCESSOR MANAGER)
Under the present invention, the processor, and thus the CPU, becomes a managed resource as well as other resources. More specifically, the processor manager is a process that manages the number of CPUs and the allocation of CPUs to copies of kernel-specific processes that manage the use of kernels or kernel threads operating in the environment. Each request to execute a special copy of the kernel code and use a kernel thread that utilizes a particular resource is managed by the processor manager. The number of processors must be cataloged by the processor manager and assigned to each thread running in the current environment.

一具体例では、複数のプロセスが通信するためのプロセス間通信テーブル、特に最新のカーネル内に存在するプロセス間通信テーブルに対するアクセスを提供する。プロセス間通信テーブルのデータ構造は、割込ハンドラ(interrupt handler)によってはアクセスされず、データ構造にアクセスするプロセスをブロックする可能性がある如何なる動作もサポートしていない。したがって、ユニプロセッサシステム(uniprocessor system)では、カーネルは、テーブルをロックすることなく、テーブルを操作することができる。しかしながら、マルチプロセッサシステム(multiprocessor system)の下では、こういうことは、行うことができない。したがって、本発明の下では、このようなテーブルは、常駐するカーネルコードの複数のコピーを実行する複数のプロセスが協調し(cooperation)、及び他のカーネルに接続された(attached)複数のリソースを使用することが必要な複数のカーネルが協調するように、拡張しなければならない。本発明では、2つのプロセスが、プロセス間で同時に通信するために、このようなテーブルに一旦アクセスすると、このようなテーブルをロックしなければならず、プロセッサマネージャがこのようなテーブルの管理を実行できるように、現在の抽象化(abstract)を変更することを提案する。2つ以上のプロセスが同時にIPCテーブルにアクセスすることを試みたとき、プロセッサマネージャは、1つ以上のプロセスがそれらの通信リンクを終了するまで、且つ他のプロセスがIPCテーブルにアクセスすることが許可されるようになる前に、IPCテーブルをロックしなければならない。ロック機構(locking mechanism)は、IPC通信の基本であり、本発明の下では、ロック機構は、3つ以上のプロセスが同時に通信できるようにするために、マルチプロセッサシステムのIPC通信に対応するように拡張することができる。   In one implementation, it provides access to an inter-process communication table for multiple processes to communicate, particularly an inter-process communication table that exists in the latest kernel. The data structure of the interprocess communication table is not accessed by an interrupt handler and does not support any operations that may block the process accessing the data structure. Thus, in a uniprocessor system, the kernel can manipulate the table without locking the table. However, this cannot be done under a multiprocessor system. Thus, under the present invention, such a table is used to indicate resources that are co-operated by multiple processes executing multiple copies of resident kernel code and attached to other kernels. It must be extended so that multiple kernels that need to be used cooperate. In the present invention, once two processes access such a table in order for two processes to communicate simultaneously between the processes, such a table must be locked, and the processor manager performs management of such a table. We propose to change the current abstraction so that it can. When two or more processes attempt to access the IPC table at the same time, the processor manager allows the other processes to access the IPC table until one or more processes terminate their communication links The IPC table must be locked before it can be done. The locking mechanism is the basis of IPC communication, and under the present invention, the locking mechanism is compatible with IPC communication of multiprocessor systems in order to allow more than two processes to communicate simultaneously. Can be extended to

プロセス間通信テーブル(Inter-process Communication Table)
カーネル間通信テーブル(INTER-KERNEL COMMUNICATION TABLE)
従来のカーネルシステムの下では、カーネルは、単にロックフラグを調べ、カーネル間通信テーブルをロックするために、ロックフラグをロック位置に設定し、あるいは、カーネル間通信テーブルをアンロックするために、ロックフラグをリセットするようになっている。本発明の下では、プロセス間通信(IPC)及びカーネル間通信(IKT)は、それらに応じて管理されるシステム内のもう1つのリソースになる。これらのテーブルの複雑性(complexity)によって、システム環境の洗練度(sophistication)のレベルが決まる。本発明の下では、マルチプロセッサシステムの場合に、異なるプロセッサ上で動作するが、1つのプロセッサマネージャによって管理される2つのスレッドは、同じリソースに対する単一のロックフラグを同時に調べることができる。両方のスレッドは、ロックフラグが解除されたことが分かると、同時に特定のリソースにアクセスすることを試みる。したがって、本発明では、1つのプロセスだけがロックフラグの検査を実行し、この場合、このような検査は、リソースがプロセッサである場合には、プロセッサマネージャによって行われ、リソースがプロセッサ以外のものである場合には、リソースマネージャによって行われる。このようなマネージャの分割によって、同時のアクセスが予測できない結果となることを、ある程度防止することができる。
Inter-process Communication Table
Inter-kernel communication table (INTER-KERNEL COMMUNICATION TABLE)
Under a traditional kernel system, the kernel simply checks the lock flag and sets the lock flag to the lock position to lock the inter-kernel communication table, or locks to unlock the inter-kernel communication table. The flag is reset. Under the present invention, inter-process communication (IPC) and inter-kernel communication (IKT) become another resource in the system managed accordingly. The complexity of these tables determines the level of sophistication of the system environment. Under the present invention, in the case of a multiprocessor system, two threads operating on different processors, but managed by one processor manager, can simultaneously examine a single lock flag for the same resource. Both threads try to access a particular resource at the same time when it knows that the lock flag has been released. Thus, in the present invention, only one process performs a lock flag check, in which case such check is performed by the processor manager if the resource is a processor and the resource is other than a processor. In some cases, this is done by the resource manager. Such division of the manager can prevent to some extent that the simultaneous access cannot be predicted.

スレッドマネージャ(THREAD MANAGER)
本発明では、スレッドマネージャは、現在のローカルカーネル(local kernel)の下で動作するプロセスとして定義され、現在のローカルカーネルの下で動作する軽量プロセス(lightweight process:LWP)及び他のプロセスに割り当てられた全てのスレッドの使用を追跡する。スレッドマネージャは、この情報を、複数のカーネル環境(Multiple Kernel Environment:MKE)の同期を支援するように動作する他の管理システムに報告する。MKEが上述した5つの構成のうちの1つに組織化された場合、スレッドマネージャの報告は、この特定の環境の必要条件を満たすように変更することができる。スレッドマネージャにとって、重要なことは、例えば、特定のシステムの下で、所定のリソースをより正確に追跡するために、割り当てられたスレッドの数を報告することである。リソースの報告は、リソースマネージャの役割であり、したがって、リソースマネージャは、この種類の情報を提供するスレッドマネージャに依存する。
Thread manager (THREAD MANAGER)
In the present invention, a thread manager is defined as a process that runs under the current local kernel and is assigned to a lightweight process (LWP) and other processes that run under the current local kernel. Keep track of all thread usage. The thread manager reports this information to other management systems that operate to support the synchronization of multiple kernel environments (MKE). If the MKE is organized into one of the five configurations described above, the thread manager report can be modified to meet the requirements of this particular environment. For the thread manager, what is important is, for example, reporting the number of assigned threads in order to more accurately track a given resource under a particular system. Resource reporting is the role of the resource manager, and therefore the resource manager relies on a thread manager that provides this type of information.

リソースマネージャ(RESOURCE MANAGER)
本発明では、リソースマネージャは、環境内に存在すると考えられるリソースのマネージャとして定義される。例えば、リソースは、あらゆるオペレーティングシステム環境に不可欠なコンポーネントであると考えられ、したがって、複数のカーネルが常駐する又は常駐できるシステムの下では、このステートメント(statement)は、重要な意味を持つ。リソースマネージャは、ローカルカーネルレベルに常駐するリソースを管理し、あるタスクが特定のリソースを要求する毎に、これらの要求は、リソースマネージャを介して行われ、特定のカーネル上では利用不可能なリソースに対する要求が行われた場合、リソースマネージャは、リソースを必要とするタスクと、特定のリソースを有するカーネルとの間に関係を築くために、関係マネージャに連絡する。
Resource manager (RESOURCE MANAGER)
In the present invention, a resource manager is defined as a manager of resources that are considered to exist in the environment. For example, resources are considered an integral component of any operating system environment, so this statement has significant significance under systems where multiple kernels reside or can reside. The resource manager manages resources that reside at the local kernel level, and whenever a task requests a specific resource, these requests are made through the resource manager and are not available on the specific kernel. When a request for is made, the resource manager contacts the relationship manager to establish a relationship between the task that requires the resource and the kernel that has the particular resource.

リソース割当マネージャ(RESOURCE ALLOCATION MANAGER)
本発明では、リソース割当マネージャは、特定のリソースを用いて1つのカーネル上で開始するが、他のカーネルに接続(attached)される可能性があるリソースを必要とする開始タスクを有するプロセス間に割り当てられた全てのリソースの記録を行う。このような状況では、リソースマネージャは、特定のリソースを見つけ、あるいは環境内の利用可能な全てのリソースの目録を作る(inventory)ためには、リソース割当マネージャと連絡する必要がある。このような場合、カーネル間の全てのリソース割当を管理するリソース割当マネージャは、必要な情報をリソースマネージャに供給する。
Resource allocation manager (RESOURCE ALLOCATION MANAGER)
In the present invention, a resource allocation manager starts on one kernel with a particular resource, but between processes that have a starting task that requires a resource that may be attached to another kernel. Records all allocated resources. In such a situation, the resource manager needs to contact the resource allocation manager in order to find a particular resource or to inventory all available resources in the environment. In such a case, the resource allocation manager that manages all resource allocations between kernels supplies necessary information to the resource manager.

あるアーキテクチャの下では、リソース割当マネージャ及びリソースマネージャは、コマンドカーネルシステム又は環境内のオペレーティングシステム以外の、OS又はカーネルシステム内に存在することができる。本発明の実施の形態を説明するために、リソース割当マネージャ及びリソースマネージャの両方は、コマンドオペレーティング及びカーネルシステム(Command Operating and Kernel System)の一部として存在しているものとする。   Under certain architectures, the resource allocation manager and resource manager can reside in an OS or kernel system other than the command kernel system or operating system in the environment. In order to describe the embodiment of the present invention, it is assumed that both the resource allocation manager and the resource manager exist as part of a command operating and kernel system.

更なる具体例
図14〜図23は、本発明の実施の形態のより詳細な具体例を示している。本発明の一実施の形態では、KOSは、中央ではなく、個々のオペレーティングシステム内で実行される。プロセスは、情報を、例えば共有メモリを用いて交換して、何時リソースが利用可能か、又は何時リソースが利用可能になるかを他のプロセスに通知する。一具体例として、図14は、リソースR1に関する情報を、共有メモリ1015を用いて交換する2つのプロセス1001、1010を示している。共有メモリ1015は、プロセス1010が待っているリソースR1が、今利用可能になったことを示す情報を含んでいる。このとき、プロセス1010は、リソースR1を、例えばリソースR1に対するコールを生成することによって要求することができる。
Further Specific Examples FIGS. 14 to 23 show more detailed specific examples of the embodiment of the present invention. In one embodiment of the invention, the KOS is executed within the individual operating system rather than centrally. Processes exchange information, eg, using shared memory, to inform other processes when resources are available or when resources are available. As one specific example, FIG. 14 shows two processes 1001 and 1010 for exchanging information about the resource R1 using the shared memory 1015. The shared memory 1015 includes information indicating that the resource R1 for which the process 1010 is waiting is now available. At this time, the process 1010 can request the resource R1, for example, by creating a call to the resource R1.

なお、図14では、単一のリソースに関する情報を含む共有メモリを示したが、他の実施の形態では、共有メモリは、多くのリソースに関する情報を含んでいる。また、共有メモリは、図14に示す情報とは異なる情報、又はこれに加えて更なる情報を含むことができる。   Although FIG. 14 shows a shared memory including information related to a single resource, in other embodiments, the shared memory includes information related to many resources. Further, the shared memory can include information different from the information shown in FIG. 14 or further information in addition to the information.

他の実施の形態においては、各KOSは、他のKOS及びそれらがサポートしているリソースを示すテーブルを含んでいる。また、このテーブルは、リソースがどのように呼び出されるか(例えば、オペレーティングシステムに対するエントリポイント又はシステムコールによって)と、現在、特定のオペレーティングシステムを実行しているプロセッサの負荷とを示す。例えば、図15A〜図15Cは、3つのプロセッサが存在し、各プロセッサが、KOSを実行するとともに、異なるリソースをサポートする環境において、各KOS内のテーブルの具体例を示している。図15Aは、オペレーティングシステムOS1に記憶されているテーブルを示している。図15Aの行1101は、オペレーティングシステムOS2がエントリポイントP2を有し、リソースR2、R3をサポートし、システム(プロセッサ)の負荷が10%であることを示している。行1103は、オペレーティングシステムOS3がエントリポイントP3を有し、リソースR3をサポートし、システムの負荷が40%であることを示している。   In other embodiments, each KOS includes a table that indicates the other KOS and the resources they support. This table also shows how the resource is invoked (eg, by entry point or system call to the operating system) and the load on the processor that is currently executing the particular operating system. For example, FIGS. 15A to 15C show specific examples of tables in each KOS in an environment where there are three processors and each processor executes KOS and supports different resources. FIG. 15A shows a table stored in the operating system OS1. A line 1101 in FIG. 15A indicates that the operating system OS2 has an entry point P2, supports resources R2 and R3, and the load on the system (processor) is 10%. Line 1103 indicates that operating system OS3 has entry point P3, supports resource R3, and the system load is 40%.

オペレーティングシステムOS2に記憶されている図15Bのテーブル及びオペレーティングシステムOS3に記憶されている図15Cのテーブルは、同じように説明されるので、ここでは説明しない。動作において、オペレーティングシステムは、互いに情報を、周期的に、例えば特定の時間毎に、あるいは所定の閾値を超えてそのリソースパラメータが変化したときに交換する。   The table of FIG. 15B stored in the operating system OS2 and the table of FIG. 15C stored in the operating system OS3 are described in the same way, and will not be described here. In operation, operating systems exchange information with each other periodically, for example, at specific times, or when their resource parameters change beyond a predetermined threshold.

図16は、リソース情報を異なるフォーマットで格納し、リソースをオペレーティングシステムにマッピングするテーブル1200を示している。例えば、図16のテーブル1200の行1201は、現在、リソースR1がオペレーティングシステムOS1を介してアクセス可能であることを示しており、行1202は、リソースR2がオペレーティングシステムOS2、OS1を介してアクセス可能であることを示しており、行1203は、リソースR3がオペレーティングシステムOS2、OS3を介してアクセス可能であることを示している。   FIG. 16 shows a table 1200 that stores resource information in different formats and maps resources to operating systems. For example, row 1201 of table 1200 in FIG. 16 indicates that resource R1 is currently accessible via operating system OS1, and row 1202 is accessible to resource R2 via operating systems OS2 and OS1. The row 1203 indicates that the resource R3 is accessible via the operating systems OS2 and OS3.

図15A〜図15C及び図16のテーブルは、単に例示的に示しているだけである。当業者は、本発明の実施の形態に基づき、リソーステーブルに含まれる多くの異なるフォーマット及び種類の情報を想到することができる。   The tables of FIGS. 15A-15C and FIG. 16 are merely exemplary. A person skilled in the art can conceive many different formats and types of information contained in the resource table based on the embodiment of the present invention.

図17は、本発明の一実施の形態に基づき、複数のKOSがリソース情報を交換するシステム1250を示している。システム1250は、関係マネージャ1251A及びリソースマネージャ1251Bを有するKOS1251と、関係マネージャ1255A及びリソースマネージャ1255Bを有するKOS1255と、関係マネージャ1260A及びリソースマネージャ1260Bを有するKOS1260とを備える。上述したように、KOSがリソースを必要としたとき、KOSは、そのローカルのカーネルレベルを、リソースマネージャを用いて調べる。リソースを見つけることができない又はリソースが利用不可能な場合、KOSは、その関係マネージャを呼び出して、他のKOSを介してリソースにアクセスする。   FIG. 17 illustrates a system 1250 in which multiple KOSs exchange resource information in accordance with one embodiment of the present invention. The system 1250 includes a KOS 1251 having a relationship manager 1251A and a resource manager 1251B, a KOS 1255 having a relationship manager 1255A and a resource manager 1255B, and a KOS 1260 having a relationship manager 1260A and a resource manager 1260B. As described above, when a KOS needs a resource, the KOS checks its local kernel level using a resource manager. If the resource cannot be found or is not available, the KOS calls its relationship manager to access the resource via the other KOS.

図18〜図23は、本発明に基づく中央のKOS(central KOS)の実施の形態を示している。図18は、それぞれが1つ以上のリソースにアクセスするように構成された複数のオペレーティングシステムOS1(1310)、OS2(1311)、OS3(1312)、OS4(1313)を実行するコンピュータシステム1300を示している。オペレーティングシステムOS1(1310)、OS2(1311)の両方は、プリンタ1320にアクセスするように構成されている。オペレーティングシステムOS3(1312)は、ディスク1321にアクセスするように構成されており、オペレーティングシステムOS4(1313)は、ビデオディスプレイ1322にアクセスするように構成されている。一実施の形態においては、オペレーティングシステムOS4(1313)は、特に、ビデオディスプレイ1322とインタフェースするように適応化されている。すなわち、例えば、オペレーティングシステムOS4(1313)は、ビデオディスプレイドライバを備え、オペレーティングシステムOS1(1310)、OS2(1311)、OS3(1312)は、ビデオディスプレイドライバを備えていない、あるいは、ビデオディスプレイ1322に対するオペレーティングシステムOS4(1313)のインタフェースは、より多くの特徴、例えばメモリ使用量が少ない、より速い等、又はこれらを組み合わせた特徴をサポートしている。システム1300上の一部のオペレーティングシステムだけが所定のリソースにアクセスするように構成され、他のオペレーティングシステムがこのように構成されていない、あるいは、幾つかのオペレーティングシステムが、他のオペレーティングシステムに比して、特定のリソースにアクセスするのに適しているという多くの理由は、当業者にとって明らかである。   18 to 23 show an embodiment of a central KOS (central KOS) according to the present invention. FIG. 18 illustrates a computer system 1300 that executes a plurality of operating systems OS1 (1310), OS2 (1311), OS3 (1312), OS4 (1313), each configured to access one or more resources. ing. Both the operating systems OS1 (1310) and OS2 (1311) are configured to access the printer 1320. The operating system OS3 (1312) is configured to access the disk 1321, and the operating system OS4 (1313) is configured to access the video display 1322. In one embodiment, the operating system OS4 (1313) is specifically adapted to interface with the video display 1322. That is, for example, the operating system OS4 (1313) includes a video display driver, and the operating systems OS1 (1310), OS2 (1311), and OS3 (1312) do not include a video display driver, or The interface of the operating system OS4 (1313) supports more features, for example, less memory usage, faster, etc., or a combination of these. Only some operating systems on the system 1300 are configured to access a given resource and other operating systems are not configured in this way, or some operating systems are compared to other operating systems. Many reasons for being suitable for accessing a particular resource will be apparent to those skilled in the art.

動作において、プロセスは、リソースを使うことを要求し、カーネル動作スケジューラ(kernel operational scheduler:KOS)1305に導入される。KOS1305は、まず、オペレーティングシステムOS1(1310)〜OS4(1313)のうちのどれが、要求されたリソースをプロセスに供給するに最適であるかを決定し、次に、選択したオペレーティングシステムにプロセスを割り当てる。複数のオペレーティングシステムが要求されたリソースを供給することができるときは、KOS1305は、後述する選択基準を用いる。一具体例として、プロセスは、プリンタ1320にアクセスするために、プリント機能を呼び出す。オペレーティングシステムOS1(1310)、OS2(1311)の両方がプリンタ1320にアクセスすることができるが、オペレーティングシステムOS1(1310)の方がビジーでないので、オペレーティングシステムOS1(1310)が選択される。   In operation, a process requests to use resources and is introduced into a kernel operational scheduler (KOS) 1305. The KOS 1305 first determines which of the operating systems OS1 (1310) to OS4 (1313) is best suited to supply the requested resource to the process, and then sends the process to the selected operating system. assign. When multiple operating systems can supply the requested resource, KOS 1305 uses the selection criteria described below. As one example, the process invokes a print function to access the printer 1320. Both the operating system OS1 (1310) and OS2 (1311) can access the printer 1320, but the operating system OS1 (1310) is not busy, so the operating system OS1 (1310) is selected.

図19は、KOS1305を更に詳細に示している。図19に示すように、一実施の形態では、KOS1305は、コマンドカーネル1400と、関係マネージャ1410とを備える。   FIG. 19 shows the KOS 1305 in more detail. As shown in FIG. 19, in one embodiment, the KOS 1305 includes a command kernel 1400 and a relationship manager 1410.

図20は、本発明の一実施の形態に基づき、図19の関係マネージャ1410に記憶されているプロセステーブル(process table)1450を示す。プロセステーブル1450は、プロセスと、プロセスに割り当てられるリソースと、それらの優先度とに関する情報を格納している。例えば、テーブル1450の行1451は、プロセスID1572を有するプロセスは、現在、リソースR1が割り当てられているとともに、1位の優先度を有することを示している。   FIG. 20 shows a process table 1450 stored in the relationship manager 1410 of FIG. 19 in accordance with one embodiment of the present invention. The process table 1450 stores information on processes, resources allocated to the processes, and their priorities. For example, row 1451 of table 1450 indicates that the process having process ID 1572 is currently assigned resource R1 and has the highest priority.

なお、プロセステーブル1450には、他の情報、例えば、幾つかの他の種類の情報を上げると、プロセスがリソースを待っているか、プロセスがどれくらい長くリソースを待っているかを示す情報を格納することができることは、明らかである。   Note that the process table 1450 stores other information, for example, information indicating how long the process has been waiting for resources and how long the process has been waiting for resources when other types of information are raised. It is clear that you can.

図21は、本発明の一実施の形態に基づいて、プロセスを処理するカーネルオペレーティングシステムをスケジューリングする方法1500のフローチャートである。開始ステップ1501に続くステップ1503において、処理は、コンピュータシステム上で実行されているオペレーティングシステム(OS)のうちのどれがリソースを供給することができるかを判定する。次に、ステップ1505において、処理は、2つ以上のOSがリソースを供給することができるかを判定する。OSのうちの1つだけがリソースを供給することができる場合、処理は、ステップ1515にスキップし、該当する場合、処理は、ステップ1510に進む。   FIG. 21 is a flowchart of a method 1500 for scheduling a kernel operating system to process a process according to an embodiment of the invention. In step 1503 following start step 1501, the process determines which of the operating systems (OS) running on the computer system can supply the resources. Next, in step 1505, the process determines whether more than one OS can supply the resource. If only one of the OSs can supply the resource, the process skips to step 1515, and if applicable, the process proceeds to step 1510.

ステップ1510において、処理は、図22に関連して後述するように、1つ以上の選択基準を用いて、複数のOSのうちの1つを選択し、ステップ1515に進む。ステップ1515において、処理は、リソースをプロセスに割り当て、ステップ1520において、終了する。   In step 1510, the process selects one of the plurality of OSs using one or more selection criteria, as described below in connection with FIG. In step 1515, the process allocates resources to the process and ends in step 1520.

図22は、要求された全てのリソースを供給することができる複数のカーネルオペレーティングシステムの中から1つのカーネルオペレーティングシステムを選択する、図21に示すステップ1510の詳細を示している。最初のステップ1550において、処理は、負荷が最小のオペレーティングシステムを選択する。ステップ1555において、処理は、1つのOSがこの基準を満たすかを判定する。該当する場合、処理は、ステップ1575にスキップする。該当しない場合、処理は、ステップ1560に進み、最少の負荷を有するOSのみを検討から外す。   FIG. 22 shows details of step 1510 shown in FIG. 21 for selecting one kernel operating system from among multiple kernel operating systems that can supply all the requested resources. In an initial step 1550, the process selects the operating system with the least load. In step 1555, the process determines whether one OS meets this criterion. If so, the process skips to step 1575. If not, the process proceeds to step 1560 and only the OS with the least load is removed from consideration.

ステップ1560において、処理は、残りのOSから、実行待ちプロセス又はブロックプロセスが最も少ないOSのみを選択して、残りを検討から外す。ステップ1565において、処理は、実行待ちプロセス又はブロックプロセスが最も少ないOSが1つだけかを判定する。実行待ちプロセス又はブロックプロセスが最も少ないOSが1つだけの場合、処理は、ステップ1575にスキップする。該当しない場合、処理は、ステップ1570に進み、ここにおいて、残りのOSから、回転、すなわち他のラウンドロビン方式によって1つのOSを選択する。次に、ステップ1575において、処理は、選択されたOSを介して、要求されたリソースをプロセスに割り当てる。この処理は、ステップ1580において終了する。ここで、「選択基準」は、OSの状態(実行待ちプロセス又はブロックプロセスの数、及びOSを実行しているプロセッサの負荷)を含んでいると言える。   In step 1560, the process selects only the OS with the least waiting process or block process from the remaining OS, and removes the remaining from consideration. In step 1565, the process determines whether there is only one OS with the least number of processes waiting to be executed or block processes. If only one OS has the least number of waiting processes or block processes, the process skips to step 1575. If not, the process proceeds to step 1570 where one OS is selected from the remaining OSs by rotation, ie, another round robin method. Next, in step 1575, the process allocates the requested resource to the process via the selected OS. The process ends at step 1580. Here, it can be said that the “selection criterion” includes the state of the OS (the number of waiting processes or block processes, and the load of the processor executing the OS).

なお、ステップ1510は、単に例示的に示しているだけである。当業者は、多くの変形例を想到することができる。例えば、ステップ1510のステップは、異なる順序に並べ替えてもよく、幾つかのステップを追加してもよく、幾つかのステップを削除してもよく、あるいは、全く異なるステップの組を実行してもよい。異なるステップの1つとして、2つのOSの両方がリソースを供給することができる場合、より高速のマイクロプロセッサ上で実行されているOSを選択する。   Note that step 1510 is merely illustrative. Many variations can be conceived by those skilled in the art. For example, steps 1510 may be rearranged in a different order, some steps may be added, some steps may be deleted, or a completely different set of steps may be performed. Also good. One of the different steps is to select an OS running on a faster microprocessor if both of the two OSs can provide resources.

図23は、本発明の一実施の形態に基づくシステム1600のコンポーネントと、プロセスがコンピュータシステム上のリソースを要求したときのトランザクションのシーケンスとを示している。システム1600は、プロセス1610Aを実行して、リソース1610Bに対するアクセスを供給するオペレーティングシステム1610と、プロセス1660Aを実行して、リソース1660B〜1660Dに対するアクセスを供給するオペレーティングシステム1660と、KOS1650とを備える。   FIG. 23 illustrates the components of system 1600 according to one embodiment of the invention and the sequence of transactions when a process requests a resource on a computer system. System 1600 includes an operating system 1610 that executes process 1610A to provide access to resource 1610B, an operating system 1660 that executes process 1660A to provide access to resources 1660B-1660D, and KOS 1650.

図23に示すように、プロセス1610Aは、リソース1660Bに対する、例えばリソースマネージャを介した要求1706を生成する。破線1706で示すように、リソース1660Bは、ローカルでは入手できないので、リソース1660Bに対する要求1720がKOS1650に送られる。KOS1650は、OS1660がリソースを供給することができると判定し、リソース1660Bに対する要求1730をOS1660に送り、OS1660は、リソース1660Bを供給する。   As shown in FIG. 23, process 1610A generates a request 1706 for resource 1660B, eg, via a resource manager. As indicated by dashed line 1706, resource 1660B is not available locally, so a request 1720 for resource 1660B is sent to KOS 1650. The KOS 1650 determines that the OS 1660 can supply the resource, sends a request 1730 for the resource 1660B to the OS 1660, and the OS 1660 supplies the resource 1660B.

リソースを供給する処理は、要求された特定のリソースによって異なる。リソースがCPUである場合、割当は、プロセスの識別子を、OS1660内の実行待ちキュー(run queue)に設定することを含むことができる。リソースがディスクである場合、割当は、プロセスをディスクにディスパッチするキューに、プロセスを置くことを含むことができる。   The process of supplying resources depends on the specific resource requested. If the resource is a CPU, the allocation can include setting the process identifier to a run queue in OS 1660. If the resource is a disk, the allocation can include placing the process in a queue that dispatches the process to the disk.

本発明では、プロセスを、1つのOSから他のOSに渡す(handed-off)ことができる。一具体例として、プロセスが、1つのOSを介してリソースにアクセスしているときに、そのOSを実行しているプロセッサに他のタスクが割り当てられた場合には、プロセスは遅くなる。換言すれば、OSもリソースである。本発明に基づくKOSは、プロセスを、より効率的に実行できる他のCPUに再び割り当てることができる。   In the present invention, a process can be handed-off from one OS to another. As a specific example, when a process is accessing a resource through one OS, the process is slowed if another task is assigned to the processor running that OS. In other words, the OS is also a resource. The KOS according to the present invention can reassign processes to other CPUs that can execute more efficiently.

本発明の実施の形態では、リソースを効率的に共有することができ、リソースを供給するオペレーティングシステム間で負荷をバランスさせることができる。これにより、ボトルネック、プロセス飢餓及びマルチプロセッサシステムに悪影響を与える他の徴候を低減することができる。更に、リソース及び特定のタスクを実行するように特化されたオペレーティングシステムを、プロセスに容易に割り当てることができ、これにより、プロセスを効率的に実行することができる。   In the embodiment of the present invention, resources can be efficiently shared, and the load can be balanced between operating systems that supply the resources. This can reduce bottlenecks, process starvation and other symptoms that adversely affect the multiprocessor system. Furthermore, resources and operating systems that are specialized to perform specific tasks can be easily assigned to the process, thereby enabling the process to execute efficiently.

なお、ここに説明した本発明に基づくKOS、その各コンポーネント、各アルゴリズムは、KOSの機能を実現するためにコンピュータにより実行可能な命令として、コンピュータにより読取可能な媒体に、記録することができる。これらの命令は、1つ以上のソフトウェアコンポーネントとしてコンピュータにより読取可能な媒体に記録してもよく、1つ以上のハードウェアコンポーネントであってもよく、これらの組合せであってもよく、コンピュータによって使用され、アルゴリズムのステップを実行する如何なる要素であってもよい。   It should be noted that the KOS, its components, and algorithms based on the present invention described herein can be recorded on a computer-readable medium as instructions that can be executed by the computer to realize the functions of the KOS. These instructions may be recorded on a computer readable medium as one or more software components, may be one or more hardware components, may be a combination thereof, and are used by a computer. Any element that performs the steps of the algorithm.

本発明の原理及び動作の理解を容易にするために、本発明の特定の実施の形態を詳細事項を用いて説明してきたが、ここで参照した特定の実施の形態及びその詳細事項は、本発明の請求の範囲を限定するものではない。本発明の趣旨及び範囲から逸脱することなく、上に例示した実施の形態を変更できることは、当業者にとって明らかである。   In order to facilitate an understanding of the principles and operation of the present invention, specific embodiments of the present invention have been described using details, but the specific embodiments and details referred to herein are not It is not intended to limit the scope of the invention. It will be apparent to those skilled in the art that the embodiments illustrated above can be modified without departing from the spirit and scope of the invention.

Claims (9)

1つのカーネルスケジューラと、カーネル間通信テーブルへのアクセスのロックまたは許可を示すフラグを用いてアクセスされるカーネル間通信テーブルと、
複数のリソースにアクセスする複数のオペレーティングシステムカーネルと、
カーネルに割り当てる複数のプロセッサを管理するプロセッサー マネージャーと、
ローカルカーネルレベルに常駐するリソースに対する要求を扱うリソースマネージャとを記憶したメモリを備え、
上記カーネルスケジューラは、上記複数のリソースのうちの1つのリソースを要求するプロセスを、上記複数のオペレーティングシステムカーネルのうちの1つに割り当て、
複数のオペレーティングシステムのカーネルは、割り当てリソースを調整するために上記カーネル間通信テーブルを介して互いに通信し、
要求されるリソースがプロセッサである場合には、上記プロセッサマネージャーが上記カーネル間通信テーブルへのアクセスを決定するために上記フラグを調べ、要求されるリソースがプロセッサでない場合には、上記リソースマネージャーが上記カーネル間通信テーブルのアクセスを決定するために上記フラグを調べることを特徴とするコンピュータシステム。
One kernel scheduler and an inter-kernel communication table accessed using a flag indicating lock or permission of access to the inter-kernel communication table;
Multiple operating system kernels accessing multiple resources;
A processor manager that manages multiple processors assigned to the kernel;
A memory that stores a resource manager that handles requests for resources residing at the local kernel level;
The kernel scheduler assigns a process requesting one of the plurality of resources to one of the plurality of operating system kernels;
Kernels of multiple operating systems communicate with each other via the inter-kernel communication table to adjust allocated resources,
If the requested resource is a processor, the processor manager checks the flag to determine access to the inter-kernel communication table, and if the requested resource is not a processor, the resource manager A computer system characterized by examining the flag in order to determine access to an inter-kernel communication table.
それぞれが上記複数のオペレーティングシステムカーネルのうちの対応する1つを実行する複数のプロセッサを更に備える請求項1記載のコンピュータシステム。   The computer system of claim 1, further comprising a plurality of processors each executing a corresponding one of the plurality of operating system kernels. 上記カーネルスケジューラは、上記複数のオペレーティングシステムカーネル上のプロセスを、上記複数のプロセッサの負荷に基づいてスケジューリングすることを特徴とする請求項2記載のコンピュータシステム。   3. The computer system according to claim 2, wherein the kernel scheduler schedules processes on the plurality of operating system kernels based on loads of the plurality of processors. 上記複数のリソースは、キーボードコントローラ、ビデオコントローラ、オーディオコントローラ、ネットワークコントローラ、ディスクコントローラ、ユニバーサルシリアルバスコントローラ及びプリンタのうちの任意の2つ以上を含むことを特徴とする請求項1記載のコンピュータシステム。   2. The computer system according to claim 1, wherein the plurality of resources include any two or more of a keyboard controller, a video controller, an audio controller, a network controller, a disk controller, a universal serial bus controller, and a printer. リソースの要求を、上記複数のオペレーティングシステムカーネルのうちの1つ以上に照合するプロセステーブルを更に備える請求項1記載のコンピュータシステム。   The computer system of claim 1, further comprising a process table that matches resource requests to one or more of the plurality of operating system kernels. 上記複数のオペレーティングシステムカーネルのうちのペア間の通信チャンネルを更に備える請求項1記載のコンピュータシステム。   The computer system of claim 1, further comprising a communication channel between a pair of the plurality of operating system kernels. 上記複数のオペレーティングシステムカーネルは、プロセッサの負荷と、リソースの利用可能性と、リソースが利用可能になるまでの見積時間とに関する情報を交換することを特徴とする請求項1記載のコンピュータシステム。   The computer system of claim 1, wherein the plurality of operating system kernels exchange information regarding processor load, resource availability, and estimated time until the resource becomes available. それぞれがオペレーティングシステムカーネルを実行し、1つ以上のリソースにアクセスする複数のプロセッサと、
カーネル間通信テーブルへのアクセスのロックまたは許可を示すフラグを用いてアクセスされ、オペレーティングシステムカーネル間の通信を許可するカーネル間通信テーブルと、
リソースにアクセスするために接続された複数のオペレーティングシステムカーネルのうちの1つに、リソースを要求するプロセスを照合し、該プロセスをディスパッチするようにプログラムされた割当モジュールとを備え、
要求されるリソースがプロセッサである場合には、上記カーネル間通信テーブルへのアクセスを決定するために上記フラグが第1のプロセスで調べられ、要求されるリソースがプロセッサでない場合には、上記カーネル間通信テーブルへのアクセスを決定するために第2のプロセスで調べられることを特徴とするカーネルスケジューリングシステム。
Multiple processors each executing an operating system kernel and accessing one or more resources;
An inter-kernel communication table that is accessed using a flag indicating lock or permission of access to the inter-kernel communication table and permits communication between operating system kernels;
An allocation module programmed to match a process requesting the resource to one of a plurality of operating system kernels connected to access the resource and dispatching the process;
If the requested resource is a processor, the flag is checked in the first process to determine access to the inter-kernel communication table, and if the requested resource is not a processor, the inter-kernel A kernel scheduling system characterized in that it is examined in a second process to determine access to a communication table.
上記複数のプロセッサのそれぞれは、対応するプロセッサスケジューラによって制御されることを特徴とする請求項8記載のカーネルスケジューリングシステム。   9. The kernel scheduling system according to claim 8, wherein each of the plurality of processors is controlled by a corresponding processor scheduler.
JP2014204814A 2014-10-03 2014-10-03 Computer system, kernel scheduling system, resource allocation method, and process execution sharing method Expired - Fee Related JP5891284B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014204814A JP5891284B2 (en) 2014-10-03 2014-10-03 Computer system, kernel scheduling system, resource allocation method, and process execution sharing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014204814A JP5891284B2 (en) 2014-10-03 2014-10-03 Computer system, kernel scheduling system, resource allocation method, and process execution sharing method

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2008285653A Division JP5676845B2 (en) 2008-11-06 2008-11-06 Computer system, kernel scheduling system, resource allocation method, and process execution sharing method

Publications (2)

Publication Number Publication Date
JP2015038757A true JP2015038757A (en) 2015-02-26
JP5891284B2 JP5891284B2 (en) 2016-03-22

Family

ID=52631761

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014204814A Expired - Fee Related JP5891284B2 (en) 2014-10-03 2014-10-03 Computer system, kernel scheduling system, resource allocation method, and process execution sharing method

Country Status (1)

Country Link
JP (1) JP5891284B2 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9858107B2 (en) 2016-01-14 2018-01-02 International Business Machines Corporation Method and apparatus for resolving contention at the hypervisor level
US9965727B2 (en) 2016-01-14 2018-05-08 International Business Machines Corporation Method and apparatus for resolving contention in a computer system
CN114296631A (en) * 2020-10-07 2022-04-08 爱思开海力士有限公司 Memory system and operating method thereof
CN115915457A (en) * 2023-01-30 2023-04-04 阿里巴巴(中国)有限公司 Resource scheduling method, vehicle control method, device and system
WO2024050804A1 (en) * 2022-09-09 2024-03-14 Qualcomm Incorporated Dynamically varying time slice periods in a computer processor unit

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11249916A (en) * 1998-03-03 1999-09-17 Fujitsu Ltd Memory management device and storage medium
US20010029550A1 (en) * 2000-03-02 2001-10-11 Yoshinori Endo Information processing apparatus
JP2008097356A (en) * 2006-10-12 2008-04-24 Canon Inc Digital multifunction machine, control method therefor, program, and storage medium
JP2008262419A (en) * 2007-04-12 2008-10-30 Toyota Motor Corp Information processor, operating system selection method and program

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11249916A (en) * 1998-03-03 1999-09-17 Fujitsu Ltd Memory management device and storage medium
US20010029550A1 (en) * 2000-03-02 2001-10-11 Yoshinori Endo Information processing apparatus
JP2008097356A (en) * 2006-10-12 2008-04-24 Canon Inc Digital multifunction machine, control method therefor, program, and storage medium
JP2008262419A (en) * 2007-04-12 2008-10-30 Toyota Motor Corp Information processor, operating system selection method and program

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9858107B2 (en) 2016-01-14 2018-01-02 International Business Machines Corporation Method and apparatus for resolving contention at the hypervisor level
US9965727B2 (en) 2016-01-14 2018-05-08 International Business Machines Corporation Method and apparatus for resolving contention in a computer system
US10042667B2 (en) 2016-01-14 2018-08-07 International Business Machines Corporation Method and apparatus for resolving contention at the hypervisor level
CN114296631A (en) * 2020-10-07 2022-04-08 爱思开海力士有限公司 Memory system and operating method thereof
CN114296631B (en) * 2020-10-07 2024-01-30 爱思开海力士有限公司 Memory system and method of operating the same
WO2024050804A1 (en) * 2022-09-09 2024-03-14 Qualcomm Incorporated Dynamically varying time slice periods in a computer processor unit
CN115915457A (en) * 2023-01-30 2023-04-04 阿里巴巴(中国)有限公司 Resource scheduling method, vehicle control method, device and system
CN115915457B (en) * 2023-01-30 2023-05-23 阿里巴巴(中国)有限公司 Resource scheduling method, vehicle control method, device and system

Also Published As

Publication number Publication date
JP5891284B2 (en) 2016-03-22

Similar Documents

Publication Publication Date Title
CA2704269C (en) Uniform synchronization between multiple kernels running on single computer systems
JP6294586B2 (en) Execution management system combining instruction threads and management method
JP6381956B2 (en) Dynamic virtual machine sizing
JP5324934B2 (en) Information processing apparatus and information processing method
KR101258502B1 (en) Resource management in a multicore architecture
JP5891284B2 (en) Computer system, kernel scheduling system, resource allocation method, and process execution sharing method
JP3678414B2 (en) Multiprocessor system
US20060130062A1 (en) Scheduling threads in a multi-threaded computer
US8572626B2 (en) Symmetric multi-processor system
US9417920B2 (en) Method and apparatus for dynamic resource partition in simultaneous multi-thread microprocessor
WO2016183028A2 (en) Methods and architecture for enhanced computer performance
JP5676845B2 (en) Computer system, kernel scheduling system, resource allocation method, and process execution sharing method
Cheng et al. vScale: Automatic and efficient processor scaling for SMP virtual machines
WO2016159765A1 (en) Many-core processor architecture and many-core operating system
Puthoor et al. Oversubscribed command queues in GPUs
JP2008186136A (en) Computer system
US7103631B1 (en) Symmetric multi-processor system
Chen et al. Preemptive and low latency datacenter scheduling via lightweight containers
US8539491B1 (en) Thread scheduling in chip multithreading processors
Li et al. Rosgm: A real-time gpu management framework with plug-in policies for ros 2
Sodan Loosely coordinated coscheduling in the context of other approaches for dynamic job scheduling: a survey
JP2015141584A (en) information processing apparatus, information processing method and program
Parikh et al. Performance parameters of RTOSs; comparison of open source RTOSs and benchmarking techniques
Walters et al. Enabling interactive jobs in virtualized data centers
CA2316643C (en) Fair assignment of processing resources to queued requests

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151216

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160126

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160222

R150 Certificate of patent or registration of utility model

Ref document number: 5891284

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees