アヴロ
ATMEL AVR CPU用のUNIX様埋め込みマイクロカーネルOS
16K RAMでAtmega1284pで実行されます
特徴:
- メッセージ通過機能を備えた最小マイクロカーネル、OSサービスの大部分(「プロセス」管理、ファイルシステム、デバイスドライバー)は、クライアント(ユーザータスク)と通信する個別のタスク(サーバー)によって実装され、メッセージの合格によって相互に通信する
- 現在実装されているOSエンティティはUNIXのようなものであり、馴染みのあるシステム呼び出しを備えたOSエンティティは、主にOSサービスタスク(サーバー)によって定義されています。
- 複数のOSエンティティが同じCPUで共存し、同じマイクロカーネルを共有できます
- 協同および/またはタイマー割り込みベースの先制マルチタスク
- Unix -Pipesを備えた仮想ファイルシステム - (Filenamesとフォルダーはまだ実装されていません - それぞれのデバイス/Inode番号デュエットを使用して各ファイルを参照する必要があります。
- デバイスドライバーは、パイプデバイスを含む個別のタスク(スレッド)として実行されています
- 統一されたデバイスドライバーインターフェイス
- USARTSを介したシェルアクセスでは、INITに複数のセッションを生み出すことができます。
リポジトリ
Main.C:最初のタスクとメイン関数-OSは最初にこのタスクを実行します。サーバーを順番に作成します(TS、VFS、ES、PM、意味については以下を参照)、デバイスをセットアップし、実行可能ファイルを登録し、最後にすべてのユーザータスクのルートタスクである「init」を生成します。
カーネル:マイクロカーネルとHAL(ハードウェア抽象化レイヤー)ソースコード
- 基本的な機能:タスクの作成とスケジューリング(優先ラウンドロビン)、メッセージの合格、割り込み処理、メモリの割り当て(メモリマネージャーサーバーが開発中です、MISC/を参照)
- idletask-実行するものが他にないときに実行 - 電源を節約するために次の割り込みまでCPUを停止します
USR
サーバー:
- PM:プロセスマネージャー -
プロセス階層、ゾンビプロセス、exit()、wait()、exec()、spawntask() - VFS:仮想ファイルサーバー - ファイル記述子、FILPテーブル、inodes、open()、close()、read()、write()、dup()、pipe()、mkdev()、mknod()、fstat()など...
- SEMA:シンプルなセマフォサーバー(現在未使用)-p()、v()
- TS:タイムサーバー - タイマー割り込みハンドラー、スリープ()、アップタイム、リアルタイム
- 例:実行可能ファイルサーバー - 実行可能なアプリケーションを登録し、タスクがexec()を呼び出すときにそれらをPMに提供します(AVRはハーバードアーキテクチャCPUです、OSはバイナリをロードしてフラッシュプログラムメモリに燃やすことができません)
ドライバー:
- TTY_USART0:USART 0デバイス用の割り込み駆動型TTYドライバー
- Memfile:Inode Managementを備えたメモリドライブデバイス
- pipedev:パイプデバイス(マルチリード、マルチライト)
ドキュメント:ドキュメント(DIAの表示:https://wiki.gnome.org/apps/dia/)
lib:src/queue.c:二重リンクリスト