>【コンピュータサイエンスの独学】デバイスファイルとシステムコール2019/07/07デバイスファイルデバイスファイルはデバイス(ハードウェア)をファイルとして表現したものです。アプリケーション(ユーザー空間)とデバイスドライバ(カーネル空間)間でデータを送受信するためには、両者を結びつける「何か」が必要です。その「何か」がデバイスファイルです。デバイスファイルは通常、「/dev」配下に保存されており、原則ひとつのデバイスに対して、ひとつのデバイスファイルが存在します。「/dev/hda」ファイルは1台目のIDE(ATA)ハードディスクを表しています。「表している」とはつまり、ソフトウェア(ユーザー空間)から見れば、「/dev/hda」がIDEハードディスクあると見えるわけです。このファイルを操作することは、IDEハードディスクを操作するということに対応します。デバイスファイルには下記の種別が存在します。unbuffered)・名前付きパイプ(pipe)ハードディスクやUSBメモリはブロック型デバイス、プリンタやモデムはキャラクタ型デバイスに該当します。名前付きパイプはプロセス間通信を行う際に使用するデバイスファイルです。システムコール前述のとおり、アプリケーション(ユーザー空間)とデバイスドライバ(カーネル空間)間でデータを送受信するために、デバイスファイルを使用するします。このデバイスファイルを操作することが、デバイス(ハードウェア)を操作することにつながります。それはつまり、デバイスファイルがデバイス(ハードウェア)を表しているということです。デバイスファイルの操作はどのように行うのでしょう。その方法が「システムコール」というわけです。システムコールにはいくつか種類がありますが、まずは基本的な下記の4つについて考えてみます。・open・close・read・writeデバイスファイルは特殊なファイルではありますが、ファイルであることには変わりありません。ファイルを開いてやる必要があります。そのためのシステムコールが「open」です。あとはデバイスに対して何らかのデータを送ったり、受け取ったりする方法です。「read」がデータを読み込む、つまり、デバイスから送られるデータを受け取るためのシステムコールです。逆に「write」はデータを書き込む、つまり、デバイスにデータを送るためのシステムコールとなります。最後に、用が済んだら開いていたファイルを閉じてやる必要があります。そのためのシステムコールが「close」です。このようにデバイス(ハードウェア)を操作してくわけです。これらの手順は、普通のテキストファイルをプログラム上から扱うときとそっくりだということがわかります。Problemsコーディング力の強化は、エンジニアにとって不可欠なことです。代表的なアルゴリズムを列挙します。