Go言語でシステムプログラミングの世界を覗くこの連載では、前々回からファイルシステムに関係する話題を扱ってきました。 今回の記事では、その総まとめとして、アプリケーションから見たファイルシステム周りの最深部を辿っていきます。 扱う話題は次の4つです。 ファイルロック ファイルのメモリへのマッピング 同期・非同期とブロッキング・ノンブロッキング select属のシステムコールによるI/O多重化 ファイルのロック(syscall.Flock()) ファイルのロックは、複数のプロセス間で同じリソースを同時に変更しないようにするために「いま使用していますよ」と他のプロセスに伝える手法のひとつです。 ファイルロックの最も単純な方法は、リソースが使用中であることをファイル(ロックファイル)によって示すというものでしょう。 たとえば、古いプログラマ(30代以上?)にはお馴染みのCGI(かつて動的なウェブ
![ASCII.jp:ファイルシステムと、その上のGo言語の関数たち(3)|Goならわかるシステムプログラミング](https://cdn-ak-scissors.b.st-hatena.com/image/square/cd9aa1ae3fe26e10ef2f796982c7943bd64b2dae/height=288;version=1;width=512/https%3A%2F%2Fascii.jp%2Fimg%2F2017%2F02%2F22%2F573335%2Fl%2F8ad45a7efc8bfa6d.jpg%3F20200122)