やっと4章(OSの話)。といってもPOSIX準拠のOSなのである程度は理解しやすい。
年末までにはPlatformDesignを読み終わりたいなぁ。。。
Overview
OSは以下の責務を持つ。
また、OSはExecution Management(PlatformやOSの初期化をするもの)と併せて動作する。
- ランタイムスケジューリング
- リソース管理(メモリのポリシングや時間制約を含む)
- Adaptive上で動作する全アプリケーションのプロセス内通信
Adaptiveでは、高性能なプロセッサを用いたOSに関する仕様ではなく、
Adaptive Applicationに提供スべき実行コンテキストやOSIを定義している。
(たぶん、リアルタイムシステムだよ、と言いたいのでは)
OSIの仕様は、ARA(Adaptive Applicationの標準インターフェース仕様)の
Application Interface(の一部)を包含している。
OSは、それとは別のInterfaceを提供する(例えば、プロセスの生成)。
OSIはCとC++のInterfaceを提供する。
- Cの場合:POSIX標準であるPSE51のInterfaceを提供する
- C++の場合:標準C++ライブラリと標準C++で定義されている機能を提供する
POSIX
市場にはLinuxとかPOSIXとか色々なOSがあるが、アプリにはOSに提供するAPIに比べ、より厳密なAPIが必要である。(ユーザーアプリがPSE51のInterfaceを使っている一方で、PlatformのアプリはPOSIXを使っているかもしれない、ということ)
POSIXコールの使い方の塩梅などについては実装者の自由であり、APの範囲外。
Scheduling
マルチスレッド、および、マルチプロセスに対応している。
標準的なスケジューリングポリシはSCHED_FIFOとSCHED_RR(POSIXで定義)。
それ以外では、SCHED_DEADLINEもしくは、OSの仕様で認められているスケジューリングポリシも使える。
Memory management
マルチプロセスをサポートするためには、それぞれのアプリケーションが独立したアドレス空間で動作できることが必要(あたりまえ)。
Device management
Device ManagementはPOSIX PSE51のInterfaceに含まれるので、そちらの仕様を見ろ、とのこと。