カーネルオブジェクトフレームワーク

この記事は、China MobileOneOSWeChatパブリックアカウント「カーネルオブジェクトフレームワーク」から共有されています。

カーネルは、オペレーティングシステムの最も基本的で最も重要な部分です。カーネルは、ハードウェアアブストラクションレイヤーの上にあり、カーネルランタイムライブラリ、カーネルオブジェクトフレームワーク、リアルタイムカーネルなどを含むコンポーネントレイヤーの下にあります。オペレーティングシステムのカーネルアーキテクチャを次の図に示します。

カーネルランタイムライブラリ:メモリのコピー、文字列処理など、カーネルが独立して実行できるようにするための小さな関数実装サブセットのセット。

カーネルオブジェクトフレームワーク:すべてのカーネルオブジェクトを管理およびアクセスするために使用され、カーネルオブジェクトの統合管理により、システムがより柔軟で拡張可能になります。

リアルタイムカーネル:タスク管理、タスクスケジューリング、タスク間同期、タスク間通信、メモリ管理、割り込み管理、クロック管理などを含みます。特定の機能は以下に拡張されています。

タスク処理、ソフトウェアタイマー、セマフォ、メールボックス、リアルタイムスケジューリングなど、比較的完全なリアルタイムオペレーティングシステム機能が含まれています。最小リソース占有率は3KBROMと1.2KBRAMです。

カーネルオブジェクトフレームワーク

統合された管理とすべてのカーネルオブジェクトへのアクセス用。タスク、ミューテックス、セマフォ、イベント、メッセージキュー、メールボックス、メモリヒープ、デバイスなどはすべて、このフレームワークを使用して管理されます。

オブジェクトコンテナ

まず、システムはカーネルオブジェクトのタイプごとに対応するオブジェクトコンテナを初期化し、コンテナにはオブジェクトリンクリストと数量レコードが含まれます。

オブジェクトコンテナのデータ構造は次のとおりです。


struct os_object_info 
{ 
     enum os_object_type    type;        /* 对象类型 */ 
     os_list_node_t         object_list;  /* 对象链表 */ 
}

その中で、typeはレコードオブジェクトのタイプを表し、listは同じタイプのカーネルオブジェクトを格納するために使用されるリンクリスト構造です。オブジェクトの追加と削除の両方がリンクリストで操作されるため、操作効率が保証されます。

オブジェクトインスタンス

さまざまなカーネルオブジェクトの同じ属性が基本構造に抽象化され、オブジェクト制御ブロックとして使用されます。各カーネルオブジェクトは基本クラスから拡張され、対応するプライベート属性が特定のタイプに従って追加されます。オブジェクト指向の継承と派生に似ています。

制御ブロックの構造は次のとおりです。


struct os_object 
{ 
     char             name[OS_NAME_MAX];    /* 内核对象名称     */ 
     os_uint8_t     type;                   /* 内核对象类型    */ 
     os_uint8_t     flag;                   /* 内核对象的参数  */ 
     os_bool_t      is_static;              /* 内核对象内存标识 */
     os_list_node_t  list;                   /* 内核对象管理链表 */
};

各カーネルオブジェクトのヘッダーにはこの構造が含まれています。メンバーis_staticは、カーネルオブジェクトストレージスペースがユーザーによって静的に定義されるか、カーネルによって動的に適用されるかを識別し、メンバーリストはオブジェクトコンテナおよび兄弟オブジェクトとの接続に使用されます。

OneOSは、モノのインターネット向けにChina Mobileが立ち上げた軽量のオペレーティングシステムであり、調整可能、クロスプラットフォーム、低消費電力、高セキュリティを特長としています。ARMCortex-M / R / A、MIPS、 RISC-V.アーキテクチャは、POSIX、CMSIS、およびその他の標準インターフェイスと互換性があり、Micropython言語開発をサポートし、開発効率を効果的に向上させ、開発コストを削減できるグラフィカル開発ツールを提供し、顧客が安定した、信頼できる、安全で簡単な開発を支援します- IoTアプリケーションを使用します。公式ウェブサイトアドレス:https :
//os.iot.10086.cn/ OneOSソフトウェアアドレス:http:
//www.oschina.net/p/cmcc-oneos OneOSプロジェクトアドレス:https ://gitee.com/cmcc-oneos / OneOS
OneOS技術交流グループ:158631242

{{o.name}}
{{m.name}}

おすすめ

転載: my.oschina.net/u/5443273/blog/5440007