thisdesuのブログ

C言語はじめました

にほんブログ村 IT技術ブログ C/C++へ

低水準や高水準関数とは

C言語の本や説明の中に、よく低水準関数とか高水準関数とかの言葉が出てきます。これは用意されている関数が、OS(オペレーションシステム)に依存するような関数なのかどうか、明確な境界線はありませんが、OSに近い(OSが違ったら動かないかもしれなさそう)関数を低水準関数といい、OS依存が少ない汎用性が高い関数を高水準関数と言います。低水準は速度が速いとか細かく操作が出来るなど利点が有りますが、同じプログラムがOSが変わると動かなかったり、そもその関数が用意されていない事も有ります。高水準は汎用的な作りにしていて速度が遅かったり細かな所に手が届かなかったりと欠点は有りますが、移植性が高く生産性などメリットは多いです。作り的には低水準関数を汎用的に被せて依存部分は隠蔽したのが高水準関数と言えるでしょう。
比較的よく目にするのはファイル操作関連の関数です。
高水準関数としてファイルバッファとして扱えるf系(fopen,fclose,fread,fwrite)関数があります。データのバッファリングして動作をスムーズ?にさせていて普通に使うには特に気にならないでしょう。たまにバッファリング待ちでデータ取れない場合がありますが、そんな時はflushさせる一手間は必要です。これに対して低水準関数の(open,close,read,write)があります。バッファリングされないので動きはシビヤになりますが高速に扱えます。socketなど扱う場合にはこちらでしょう。他に更に低そうなioctl系などOSが違えばほとんど動かないでしょう