このWWWページの目的は、YanaKernel0を提案することです。
YanaKernel0を推進する人、YanaKernel0に共感する人、その他いろいろな形でYanaKernel0に関係する人が増えることを、提案者(Yana)は希望しています。
YanaKernel0は、コンピュータ・システムの次のような構成要素です。
YanaKernel0には、YanaKernel0AとYanaKernel0Bの種類があります。
YanaKernel0AとYanaKernel0Bを比較すると、プロセッサの(実行を継続できる)割り込みについて、記述が少ないのがYanaKernel0Aで、記述が多いのがYanaKernel0Bです。
名称 |
説明 |
---|---|
Task |
カーネルの外部のコードを実行します。 Taskを指定する際には、TaskId(0からTaskSize−1までの整数)を使用します。 各々のTaskには、ContextとPriorityが付属します。 |
Port |
通信や同期に使用します。 Portを指定する際には、PortId(0からPortSize−1までの整数)を使用します。 各々のPortには、FlagとQueueが付属します。 Flagには、カーネルが設定する部分と、Taskが設定する部分があり、カーネルが設定する部分の一部は、Queueの状態と連動します。 |
名称 |
入力 |
出力 |
説明 |
---|---|---|---|
Accept |
PortId |
ErrorCode TaskId |
PortのQueueから受信待ち状態のTaskを出し、返信待ち状態にします。 |
BitFlag |
FlagValue(オフ) FlagValue(オン) PortId |
ErrorCode FlagValue |
SetFlagにビット処理(オフとオン)を追加する場合の処理方法です。 PortのFlagを取得してから、ビット処理(オフとオン)して、設定します。 Flagの条件が成立すると、送信待ち状態のTaskを、実行可能状態にします。 |
Call |
PortId |
ErrorCode |
PortのQueueに自らの(実行可能状態の)Taskを入れ、受信待ち状態にします。 PortのFlagの一部はQueueの状態と連動するため、Flagの条件が成立すると、送信待ち状態のTaskを、実行可能状態にします。 |
Connect |
TaskId(返信先) TaskId(返信元) |
ErrorCode |
返信待ち状態のTaskに返信できるTaskを限定する場合の処理方法です。 返信待ち状態のTaskに返信できるTaskを設定します。 |
Forward |
PortId TaskId |
ErrorCode |
PortのQueueにTaskを入れ、受信待ち状態にします。 PortのFlagの一部はQueueの状態と連動するため、Flagの条件が成立すると、送信待ち状態のTaskを、実行可能状態にします。 |
GetContext |
ContextType TaskId |
ContextValue ErrorCode |
返信待ち状態のTaskのContextの一部を取得します。 |
GetFlag |
PortId |
ErrorCode FlagValue |
PortのFlagを取得します。 |
GetPriority |
TaskId |
ErrorCode PriorityValue |
TaskのPriorityを取得します。 |
Initialize |
検討中 |
検討中 |
カーネルを開始します。 |
Listen |
FlagCondition PortId |
ErrorCode FlagValue |
自らの(実行可能状態の)Taskを、Flagの条件が成立すると、実行可能状態に、成立しないと、送信待ち状態にします。 |
Reply |
TaskId |
ErrorCode |
返信待ち状態のTaskを、実行可能状態にします。 |
SetContext |
ContextType ContextValue TaskId |
ContextValue ErrorCode |
返信待ち状態のTaskのContextの一部を取得してから、設定します。 |
SetFlag |
FlagValue PortId |
ErrorCode FlagValue |
PortのFlagを取得してから、設定します。 Flagの条件が成立すると、送信待ち状態のTaskを、実行可能状態にします。 |
SetPriority |
PriorityValue TaskId |
ErrorCode PriorityValue |
TaskのPriorityを取得してから、設定します。 |
Terminate |
検討中 |
検討中 |
カーネルを終了します。 |
名称 |
説明 |
---|---|
カーネルとTaskのインターフェース |
プロセッサの外部のメモリではなく、プロセッサの内部のレジスタを使用します。 |
送信待ち状態 |
複数のTaskは、同時に、同じPortの送信待ち状態になれません。 |
プロセッサの(実行を継続できない)例外 |
カーネルについては、発生しないようにします。 Taskについては、Forwardを対応させます。 |
プロセッサの(実行を継続できる)割り込み |
カーネルについては、(実行可能状態のTaskがないので)割り込みを待つ部分だけで発生するようにし、SetFlag(もしくはBitFlag)を対応させます。 Taskについては、ForwardやSetFlag(もしくはBitFlag)を対応させます。 |
命名規則 |
いわゆる「名前の衝突」に対応する際には、「YK0A」や「yk0a」などを前置します。 |
名称 |
説明 |
---|---|
Node |
EventかTaskです。 Nodeを指定する際には、NodeId(0からTaskSize−1までとNodeSize−EventSizeからNodeSize−1までの整数)を使用します。 各々のNodeには、Itemが付属します。 |
Event |
通信や同期に使用します。 Eventを指定する際には、NodeIdの一部(NodeSize−EventSizeからNodeSize−1までの整数)を使用します。 Eventには、プロセッサの(実行を継続できる)割り込みに連動するEventと、連動しないEventがあります。 |
Task |
カーネルの外部のコードを実行します。 Taskを指定する際には、NodeIdの一部(0からTaskSize−1までの整数)を使用します。 各々のTaskには、Itemとして、ContextとPriorityが付属します。 |
Port |
通信や同期に使用します。 Portを指定する際には、PortId(0からPortSize−1までの整数)を使用します。 各々のPortには、Queueが付属します。 |
名称 |
入力 |
出力 |
説明 |
---|---|---|---|
Accept |
PortId |
ErrorCode NodeId |
Portに受信待ち状態のNodeがなければ、Queueに自らの(実行可能状態の)Taskを入れ、送信待ち状態にします。 Portに受信待ち状態のNodeがあれば、QueueからNodeを出し、返信待ち状態にします。 |
Bit |
ItemType ItemValue(オフ) ItemValue(オン) NodeId |
ErrorCode ItemValue |
Setにビット処理(オフとオン)を追加する場合の処理方法です。 NodeのItemの一部を取得してから、ビット処理(オフとオン)して、設定します。 |
Call |
PortId |
ErrorCode |
Portに送信待ち状態のTaskがなければ、Queueに自らの(実行可能状態の)Taskを入れ、受信待ち状態にします。 Portに送信待ち状態のTaskがあれば、QueueからTaskを出し、実行可能状態にして、自らの(実行可能状態の)Taskを返信待ち状態にします。 |
Connect |
NodeId(返信先) NodeId(返信元) |
ErrorCode |
返信待ち状態のNodeに返信できるTaskを限定する場合の処理方法です。 返信待ち状態のNodeに返信できるTaskを設定します。 |
Forward |
NodeId PortId |
ErrorCode |
Portに送信待ち状態のTaskがなければ、QueueにNodeを入れ、受信待ち状態にします。 Portに送信待ち状態のTaskがあれば、QueueからTaskを出し、実行可能状態にして、Nodeを返信待ち状態にします。 Nodeがプロセッサの(実行を継続できる)割り込みに連動するEventであれば、割り込みを無効にします。 |
Get |
ItemType NodeId |
ErrorCode ItemValue |
NodeのItemの一部を取得します。 |
Initialize |
検討中 |
検討中 |
カーネルを開始します。 |
Reply |
NodeId |
ErrorCode |
返信待ち状態のNodeを、実行可能状態にします。 Nodeがプロセッサの(実行を継続できる)割り込みに連動するEventであれば、割り込みを有効にします。 |
Set |
ItemType ItemValue NodeId |
ErrorCode ItemValue |
NodeのItemの一部を取得してから、設定します。 |
Terminate |
検討中 |
検討中 |
カーネルを終了します。 |
名称 |
説明 |
---|---|
カーネルとTaskのインターフェース |
プロセッサの外部のメモリではなく、プロセッサの内部のレジスタを使用します。 |
プロセッサの(実行を継続できない)例外 |
カーネルについては、発生しないようにします。 Taskについては、TaskのForwardを対応させます。 |
プロセッサの(実行を継続できる)割り込み |
カーネルについては、(実行可能状態のTaskがないので)割り込みを待つ部分だけで発生するようにし、EventのForwardを対応させます。 Taskについては、EventのForwardを対応させます。 |
命名規則 |
いわゆる「名前の衝突」に対応する際には、「YK0B」や「yk0b」などを前置します。 |
提案者(Yana)は、仕様を検討し、ソフトウェアで実装する予定です。
(C) 2007,2010 Yana
Direction: Yana
HTML: Yana
2010-03-11 release 2
2010-01-11 release 1
2007-06-11 release 0