[ :Yana: Index ]

:Yana:YanaKernel: YanaKernel0 Overview (2010-03-11)

はじめに (2007-06-11)

このWWWページの目的は、YanaKernel0を提案することです。

YanaKernel0を推進する人、YanaKernel0に共感する人、その他いろいろな形でYanaKernel0に関係する人が増えることを、提案者(Yana)は希望しています。

概要 (2007-06-11)

YanaKernel0は、コンピュータ・システムの次のような構成要素です。

簡単
提案者(Yana)がソフトウェアで実装できるカーネルです。
資源限定
カーネルの内部で使用する資源を限定します。また、ある程度の資源を内蔵するプロセッサでは、プロセッサの内部でカーネルを実行できます。
ハードウェア実装
ハードウェアでも実装できるカーネルです(?)。なお、提案者(Yana)はハードウェアでは実装できません。

種類 (2010-03-11)

YanaKernel0には、YanaKernel0AとYanaKernel0Bの種類があります。

YanaKernel0AとYanaKernel0Bを比較すると、プロセッサの(実行を継続できる)割り込みについて、記述が少ないのがYanaKernel0Aで、記述が多いのがYanaKernel0Bです。

YanaKernel0Aの処理対象 (2010-03-11)

YanaKernel0Aの処理対象
名称
説明
Task
カーネルの外部のコードを実行します。
Taskを指定する際には、TaskId(0からTaskSize−1までの整数)を使用します。
各々のTaskには、ContextとPriorityが付属します。
Port
通信や同期に使用します。
Portを指定する際には、PortId(0からPortSize−1までの整数)を使用します。
各々のPortには、FlagとQueueが付属します。
Flagには、カーネルが設定する部分と、Taskが設定する部分があり、カーネルが設定する部分の一部は、Queueの状態と連動します。

YanaKernel0Aの処理方法 (2010-03-11)

YanaKernel0Aの処理方法
名称
入力
出力
説明
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
検討中
検討中
カーネルを終了します。

YanaKernel0Aの検討事項 (2010-03-11)

YanaKernel0Aの検討事項
名称
説明
カーネルとTaskのインターフェース
プロセッサの外部のメモリではなく、プロセッサの内部のレジスタを使用します。
送信待ち状態
複数のTaskは、同時に、同じPortの送信待ち状態になれません。
プロセッサの(実行を継続できない)例外
カーネルについては、発生しないようにします。
Taskについては、Forwardを対応させます。
プロセッサの(実行を継続できる)割り込み
カーネルについては、(実行可能状態のTaskがないので)割り込みを待つ部分だけで発生するようにし、SetFlag(もしくはBitFlag)を対応させます。
Taskについては、ForwardやSetFlag(もしくはBitFlag)を対応させます。
命名規則
いわゆる「名前の衝突」に対応する際には、「YK0A」や「yk0a」などを前置します。

YanaKernel0Bの処理対象 (2010-03-11)

YanaKernel0Bの処理対象
名称
説明
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が付属します。

YanaKernel0Bの処理方法 (2010-03-11)

YanaKernel0Bの処理方法
名称
入力
出力
説明
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
検討中
検討中
カーネルを終了します。

YanaKernel0Bの検討事項 (2010-03-11)

YanaKernel0Bの検討事項
名称
説明
カーネルとTaskのインターフェース
プロセッサの外部のメモリではなく、プロセッサの内部のレジスタを使用します。
プロセッサの(実行を継続できない)例外
カーネルについては、発生しないようにします。
Taskについては、TaskのForwardを対応させます。
プロセッサの(実行を継続できる)割り込み
カーネルについては、(実行可能状態のTaskがないので)割り込みを待つ部分だけで発生するようにし、EventのForwardを対応させます。
Taskについては、EventのForwardを対応させます。
命名規則
いわゆる「名前の衝突」に対応する際には、「YK0B」や「yk0b」などを前置します。

おわりに (2007-06-11)

提案者(Yana)は、仕様を検討し、ソフトウェアで実装する予定です。

Credit

(C) 2007,2010 Yana

Direction: Yana
HTML: Yana

ChangeLog

2010-03-11 release 2
2010-01-11 release 1
2007-06-11 release 0

[ :Yana: Index ]
(C) 2007,2010 Yana
このサイトについて