概要
仕事でQNX(OS)を使う事になり、Linuxより何が良いのかを個人的に理解できる範囲でまとめてみた。
QNXを導入するのにlicenceコストや開発コストが掛かるため、何故Linuxではダメなのかという批判的な観点で考えてみる。
Security
Memory Address Isolation
Application毎にmemory addressを割り振る
- applicationが互いに干渉しなくなる
- 重要な情報などを他のapplicationから情報を抜き取る事を防ぐ事が出来る
LinuxでもMemory Address Isolationは出来ると聞いたことがあるが、Securityまわりは詳しくないので、勉強が必要
Task Scheduling
Task(Application) Schedulingについての事前知識
Dynamic Scheduling: OnlineでProcessor(CPU Core)の空き状況によって、DynamicにScheduleを組む
Static Scheduling: OfflineでTaskの実行時間を計測し、Scheduleを組む。
Deterministic Scheduling: Static Schedulingの一部でTaskのPriorityとDeadlineを元にOfflineでScheduleを組む。
QNXでのTask Scheduling
RTOS(QNX専用のruntime OS)はDeterministic Schedulingを取り入れているので、TaskのDeadlineが重要なSystemにおいてメリットがある。しかし、RTOSを使った場合のメリットであって、QNX単体のメリットではない。ROSなどの他のRuntime OSを使った場合はQNXを使う意味がない。Determistic Schedulingはlinuxでも出来るはず。
安全認証
LinuxなどのOpen Sourceのsoftwareは安全認証がされていないため、自社で安全認証する必要が出てくるらしい。QNXを使えば、安全認証が既に済んでいるので、その分のコストと時間を短縮出来る。
まとめ
QNXが産業システムにどうしても必要な理由はSecurityと安全認証がされている為だと感じた。Deterministic SchedulingはLinuxでも出来るのではないかと思っているので、QNXが必須だとは感じなかった。もっと勉強して、詳細な事がわかったらupdateしたいと思う。個人的にはLinuxで開発を完結出来るようになって欲しい。