待機 |
辞書:電算用語の基礎知識 計算機OS機能編 (TCOS) |
読み:たいき |
外語:wait |
品詞:さ変名詞 |
機会が来ることを待つこと。
|
概要 |
コンピューターの処理でも、ある処理のあと、いくらかの時間を待つ必要などが生じることが多々あり、この場合に待機することになる。
プログラミングにおいては、次の二種類がある。
特徴 |
プログラミング |
プログラミングでウェイトを作る方法は様々存在する。
例えばLinux(Androidのカーネル含む)でウェイトを作りたい場合、ユーザー空間ではsleep()やusleep()、nanosleep()などが使われる。カーネル内では短時間ならば*delay関数、それ以外ならば*sleep関数を使うことが多い。
そのほかにも、taskletやworkqueue、あるいはタイマーを用いて自力で実装することも可能である。
いずれにせよ、システムの動作状況や呼び出しに要する時間、あるいはシステムタイマーの粒度など様々な要因により、指定した時間よりも若干延ばされる傾向にある。
ライブラリ関数 |
通常のアプリケーションを作成するためのライブラリ関数である。
POSIX.1-2001では、次が定義されている。
unistd.h
#include <unistd.h> unsigned int sleep(unsigned int seconds); int usleep(useconds_t usec);
time.h
#include <time.h> int nanosleep(const struct timespec *req, struct timespec *rem);
カーネル関数 |
カーネルでは、一般のライブラリ関数とは異なるものが使われている。Linuxカーネルの場合は、次の通り。
delay関数はビジーウェイトであり、内部ではループ処理等で処理時間を稼いでいる。
linux/delay.h
void mdelay( unsigned long msecs ) ; void udelay( unsigned long usecs ) ; void ndelay( unsigned long nsecs ) ;
sleep関数は、ウェイト中に、CPUを他のスレッドに対してスケジューリングする。
通常はSIGALRMなどのシグナルを用いて実装されており、時間が経過してシグナルが発生すると、元の処理に戻るようになっている。
linux/delay.h
void ssleep( unsigned int seconds ); void msleep( unsigned int msecs ) ; unsigned long msleep_interruptible( unsigned int msecs ) ;
リンク |
通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022) Search System : Copyright © Mirai corporation Dictionary : Copyright © WDIC Creators club |