沼津高専 電子制御工学科 | ||||||||
| ||||||||
改訂記録 | ||||||||
---|---|---|---|---|---|---|---|---|
版数 | 作成日 | 作成者 | 承認 | 改訂内容 | ||||
A01 | 2002.12.16 | 笹原 | 今村 | 初版 |
今年度開発されるMIRSには、ISAバス仕様のI/Oボードが搭載される。それに従いMIRSのOSには、RT−LINUXが使用される。そのため各センサおよびPWMをRT-タスクモジュールおよびデバイスドライバで制御する必要がある。またLCDが使用されるため、これを制御するデバイスドライバも必要となる。
制御システムなどでは、一定時間内に処理を確実に終了しなければならない場合があるがこのような実時間性を保証し、許容される時間内に処理の完了を保証する処理方式がリアルタイム処理である。
標準Linuxの動作環境を図1に、RTLinuxの動作環境を図2にそれぞれ示す。Real-Time Linux は、Linux OS と共存可能な リアルタイムOSである。 しかし、厳密な意味ではリアルタイムOSではなく、 RTLinuxが提供するのは スケジューラとプロセス間通信のみである。 RTLinuxは、仮想マシンをLinuxに提供し、 Linuxを優先順位の低い1つのリアルタイムプロセスとして実行することで、リアルタイム処理と従来のLinux OSの処理の共存を実現している。よってRTLinuxはユーザーインタフェースに優れアプリケーションソフトの豊富な汎用的OSと、高速でミッションクリティカルな処理に最適なハードウエア・リアルタイム性能を持つリアルタイムOSの2つのOS機能を利用することができるデュアルカーネルシステムであるといえる。 RTLinux環境(図2)では、リアルタイムタスクはRTLinuxのRTスケジューラーによってコントロールされ、LinuxはRTLinux上のタスクとして動作する。
たいがいの OS カーネルは、無数の関数を集めたライブラリであるといえる。 OS カーネルに含まれている関数は、呼び出し方が少々特殊なので、区別のためシステムコール (system call) と呼ぶ。最近では、API (Application Programming Interface) とも呼ばれる。使用されるAPIを以下に示す。
| |
機能 | API関数 |
スレッドの生成 | Pthread_create |
スレッドの終了 | Pthread_exit |
スレッドへのシグナル送信 | Pthread_kill |
スレッドIDの取得 | Pthread_self |
スレッドアトリビュートオブジェクトの初期化 | Pthread_attr_init |
スタックサイズ属性の取得 | Pthread_attr_getstacksize |
スタックサイズ属性の設定 | Pthread_attr_setstacksize |
スレッドのCPU明け渡し指 | Pthread_yield |
スケジューリング属性の変更 | Pthread_setschedparam |
スケジューリングプライオリティ属性の取得 | Pthread_attr_getschedparam |
スケジューリング属性の取得 | Pthread_getschedparam |
スケジューリングプライオリティ属性の設定 | Pthread_attr_setschedparam |
タイマー値の取得 | Clock_gettime |
タイマー値の設定 | clock_settime |
タイマー分解能の取得 | clock_getres |
スケジューリングポリシー毎のプライオリティの最大値の取得 | sched_get_priority_max |
スケジューリングポリシー毎のプライオリティの最小値の取得 | sched_get_priority_min |
Mutex属性オブジェクトのプロセス間共有設定の取得 | pthread_mutexattr_getpshared(3) |
Mutex属性オブジェクトのプロセス間共有設定の設定 | pthread_mutexattr_setpshared(3) |
Mutex属性オブジェクトの生成、初期化 | pthread_mutexattr_init(3) |
Mutex属性オブジェクトの破棄 | pthread_mutexattr_destroy(3) |
Mutexタイプ属性の設定 | pthread_mutexattr_settype(3) |
Mutexタイプ属性の取得 | pthread_mutexattr_gettype(3) |
Mutexの初期化 | pthread_mutex_init(3) |
Mutex破棄 | pthread_mutex_destroy(3) |
Mutexのロック | pthread_mutex_lock(3) |
Mutexのロック | pthread_mutex_trylock(3) |
Mutexのアンロック | pthread_mutex_unlock(3) |
| |
機能 | API関数 |
CPU IDのスレッド属性オブジェクトの設定 | pthread_attr_setcpu_np |
CPU IDのスレッド属性オブジェクトの取得 | pthread_attr_getcpu_np |
スレッドの周期実行の抑制(wait) | pthread_wait_np |
スレッドの削除 | pthread_delete_np |
スレッドの浮動小数・演算の使用許可 | pthread_setfp_np |
スレッドのリアルタイム実行条件を指示 | pthread_make_periodic_np |
スレッドをサスペンド | pthread_suspend_np |
サスペンド中のスレッドを再開 | pthread_wakeup_np |
表中に出てくる用語の解説