0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

I/Oについて

Posted at

I/Oとは?

入出力(I/O)はメインメモリとディスク・ドライブ、ターミナル、ネットワークなどの外部デバイスとの間でデータをコピーする手段である。

操作 役割 関数
入力操作 I/Oデバイスからメイン・メモリにデータをコピーする read
出力操作 メイン・メモリからI/Oデバイスにデータをコピーする write

ハイレベルI/OはシステムレベルUNIX I/O関数を用いて実装される。

UNIX I/O

LinuxカーネルはUNIX I/Oと呼ばれる、シンプルなローレベルアプリケーションインターフェースを提供する。

Linuxはデバイスのファイルへの洗練されたマッピングを行う。ネットワーク、ディスク、ターミナルなどのすべてのI/Oデバイスはファイルとしてモデル化され、すべての入出力は適切なファイルを読み書きする。

操作 説明 関数
ファイルのオープン アプリケーションからカーネルに対応するファイルをオープンするように要求する。カーネルはディスクリプタ(非不整数)を返す open
現在のファイルポジションの変更 カーネルはオープンされたファイルについて、初期値が0のファイルポジションを管理する。ファイルポジションはファイル先頭からのバイトオフセットである。アプリケーションはシーク操作を行うことで、明示的に現在のファイルポジションkを設定できる。 seek/read/write
ファイルの読み書き  ファイルからメモリにnバイトをコピーする。ファイルポジションkから開始し、kをnだけ増加させる。最後まで読み取るとファイル終端(EOF)と呼ばれる状態になる。状態であり、EOF文字は存在しない。書き込み操作はその逆を行う。 read/write
ファイルのクローズ カーネルにファイルへのアクセス終了を要求する。カーネルはファイルがオープンしたときに作成したデータ構造を解放し、利用可能なデスクリプタのプールにそのデスクリプタを戻すことで応じる。 close

標準I/Oとは?

標準I/OはUNIX I/Oのハイレベルな代替え手段を提供する。

UNIX I/O関数 標準I/O関数
open fopen
close fclose
read/gets fread/fgets/scanf
write/puts fwrite/fputs/printf

標準I/Oライブラリは、オープンしたファイルをストリームとしてモデル化している。プログラマにとってストリームはFILE型の構造体へのポインタである。
FILE型のストリームは、ファイルディスクリプタとストリームバッファの抽象化である。ストリームバッファの目的は、コストの高いシステムコールの数を最小にすることである。

ファイル・タイプについて

ファイルタイプについては以下に別途まとめました。

Linux & Mac ファイルタイプ一覧 - Qiita

参考

コンピュータ・システム

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?