Open Source Web Development Tutorials - Dev Shed
Linux I/Oファイルのシステムコール
(2009/03/03公開)
高度なファイルI/O
Linux I/Oファイルのシステムコールに関する理解をさらに深めたいと考えている皆さん、本連載を最後まで読んでください。全7回の本シリーズは、ロバート・ラブ著『Linux System Programming: Talking Directly to the Kernel and C Library(Linuxシステム・プログラミング-カーネルおよびCライブラリへ直接話しかける:仮題)』の第4章から抜粋して、システムコールから性能考察までのすべてを解説します。(原著はオライリーより2007年に出版、ISBN: 0596009585(Copyright 2007 O'Reilly Media, Inc.))禁無断転載。出版社の許可を得て使用しています。書店あるいはオライリーメディアから直接購入できます。
第2章では、Linuxの基本的なI/Oシステムコールを取り上げました。これらのコールは、ファイルI/Oだけでなく、実質的にLinuxでのすべてのコミュニケーションの基盤を成すものです。第3章では、多くの場合、基本的なI/Oシステムコールに加えてユーザースペースのバッファリングが必要な点を指摘し、特に、ユーザースペースのバッファリングソリューションとしてC標準I/Oライブラリを学習しました。本章では、Linuxが提供する高度なI/Oシステムコールを考察していきましょう。
スキャタ/ギャザー(Scatter/gather) I/O
1つのコールで、一度に、複数のバッファに対するデータの読み出しや書き込みを行えます。異なるデータ構造のフィールドを1つのI/Oトランザクションにまとめるときに利用します。
Eポーリング(Epoll)
第2章で解説したpoll()とselect()を向上したシステムコールです。百単位のファイル記述子を1つのプログラムにポーリングするときに利用します。
メモリマップド(Memory-mapped)I/O
ファイルをメモリーにマッピングして、シンプルなメモリー操作によるファイルI/Oを可能にします。特定のパターンのI/Oに利用します。
ファイルアドバイス(File advice)
カーネルに対して、使用シナリオに関する手掛かりを与えます。I/O性能の向上につながる可能性があります。
非同期(Asynchronous)I/O
I/O要求の完了を待たずに、I/O要求を出すことができます。スレッドを使わずに大量のI/O作業負荷をこなすときに利用します。
章の最後では、性能考察とカーネルのI /Oサブシステムを論じます。
Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.








