目次: 独自OS
最近、趣味&趣味からの発展で仕事でも独自OSを作成しています。OSと呼ぶほどの機能はありませんが、位置的にはCライブラリよりハード寄りのいわゆるOSレイヤーです(ソースコードへのリンク)。
想定する動作環境は、複数プロセッサで構成されたシステムにおいて、片方がホスト、もう片方がアクセラレータとして動作する環境です。想定する制御方法は、ホスト側で実行したくない、時間がかかる処理をアクセラレータ側に任せて終わるのを待つ、シンプルなユースケースで下記のようになります。
このようなシステムにおいてPC系のプログラマが気軽にアクセラレータ側のソフトウェアを書ける環境が欲しい、という発想から、アクセラレータのプログラマの補助となるようなOSの作成が目的です。
独自OSの設計目標は下記の通りです。
最初の2つの項目は大抵トレードオフですが、3つ目の項目を活かして軽く&便利を両立させることが狙いです。
アクセラレータを動作させるという観点で見れば、わざわざ独自OSを作成せずとも既存のアクセラレータ用言語を使ったり、既存OSの転用でも動作させることができます。
既存のアクセラレータ用言語、CUDAやOpenCLですね。速度は最高だと思います。プログラマ視点から見ると、これら言語の習得には若干手間が掛かります。
LinuxなどPC系OSを転用する場合、使い勝手はPCそのものなので最高でしょう。しかしアクセラレータ向けとしては大規模で大げさでもあり、ハードウェアのリソース特にメモリがかなり必要です。
RTOSを転用するの場合、省メモリかつ大抵の実装は速度も速いです。しかし目的が違う(リアルタイム処理を記述するためのOS)ため、色々なOS独自ルールが存在します。PC系のプログラマには馴染みが薄いです。
手法 | 速度 | メモリ | 手軽さ |
---|---|---|---|
アクセラレータ用言語 | 〇 | 〇 | × |
PC系OS(Linuxなど) | △ | × | 〇 |
RTOS | 〇 | 〇 | △ |
独自OSでは使い慣れたC/C++ 言語が使えて、速さを殺さず、Linuxの使い勝手を可能な限り両立させることを目指します。
< | 2022 | > | ||||
<< | < | 12 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
合計:
本日:
管理者: Katsuhiro Suzuki(katsuhiro( a t )katsuster.net)
This is Simple Diary 1.0
Copyright(C) Katsuhiro Suzuki 2006-2023.
Powered by PHP 8.2.15.
using GD bundled (2.1.0 compatible)(png support.)