2017年2月アーカイブ

Linux雑多メモ(2017/02/17)

● O_TMPFILE と renameat2
open(2)に使えるO_TMPFILEがLinux-3.11より追加されている。(60545d0d46 あたり)。O_TMPFILEはマニュアルに書いてあるとおり一時ファイルを作れる。anonymouseとは違って、inodeの実態はあるんだけど参照ができない(lookupできない(pathで辿れない))ようなファイルを作れる。それだけだとあまり意味がない(スワップできるメモリが欲しいだけならtmpfsのほうが遥かによい)、O_TMPFILEはlinkat(2)を使ってあとからpathを作れる。これによって、作成途中を見せずにファイルを作れる。ただrename系と違って、既存のファイルを上書きすることは(現時点では)できない。

一方、renameat2(2)というシステムコールがLinux-3.15より追加されている。通常のrenameと比べて引数flagが増えていて、下記が使えるようになっている。
・ RENAME_NOREPLACE, 上書きする場合はエラーになる
・ RENAME_EXCHANGE, oldをnewに上書きするのではなく、oldとnewを入れ替える
・ RENAME_WHITEOUT(Linux-3.18から), whiteoutなinodeにする、OverlayFSなどで下位のFilesystemに存在する名前を上からカバーして「見えない状態」にしてファイルがないことにしてしまう仕組み。

で、O_TMPFILEとrenameat2を使えば「途中状態を見せずにアトミックにファイルを上書き」できるような気がしつつ現時点ではできない。議論はあるみたいなので、そのうち拡張されてできるようになるのかもしれない。

● sync系システムコール
sync, fsync, fdatasync, syncfs, sync_file_range, sync_file_range2がある。msyncは名前が似てるけどちょっと役割が違う、とはいえ結局kernel内部ではvfs_fsync_range()を呼んんでいるので似たようなことをするということでよいようだ。

pthread_cond_timedwait()の引数の時刻

pthread_cond_timedwait(3)の3つめの引数abstimeは、そのまま使う限り、マニュアルにある通り、

abstime パラメタは time(2) と gettimeofday(2) の起点を同じくする絶対時間を指定する。
になる。

ただ、組み込みなど時刻が不安定だったり頻繁に再設定されたりするシステムでは、この絶対時刻はネックになる。一気に古い時刻が設定されたりするとずっとタイムアウトしなくなってしまったりなど。2ちゃんねるのスレッドのレス58番あたりからの議論など。

今時のglibcのlibpthreadには、POSIX仕様的にオプション扱いのpthread_condattr_setclock(3)に対応しているので、それを使えばよい。具体例はこのへん。手元パソコン(Ubuntu 16.04)ではmanしても出てこなくてどうなのかと思ったけど、特に問題なく使えた。

テスト用に作ったサンプルプログラム pthread_condattr_setclock.c

「プロジェクトマネジメントに失敗した主人公がやさぐれている時に天使が現れ、4年前に戻って最初からやり直し、天使とともに成功へ導くべく奮闘する」というストーリで、プロジェクトマネジメント(以下プロマネ)とは何なのか・何すれば成功に近づけるのかを、概要的ではあるが具体的に解説している本。マンガ(イラスト)入りであったり、語り口調・対話口調であったりするところが特徴になっている。

なんというか、今時風というか、ラノベ調というか、語り口調というか、ぶっちゃけな説明というか、そういうのが全面にでているので、そういうのが苦手な人には全くお勧めできない。逆に、そういうのが苦手じゃない人にとっては、元が堅苦しくてつまらないような話が多いテーマだけに、取っつきやすいのかもしれない。

そんな感じの文体ではあるものの、もともと著者は試験対策本なんかも出していることもあって、至ってまっとうな内容が書かれている。実践的だとかこれさえ読めば完璧だとかいうことはなくて、あくまで入門的・概要的ではあるが、初心者向け本にありがちな断言的にはなっていなくて、「試験対策本」では語れない現場の話を取り入れようとしている。というか、プロマネの本というよりは、組織論の本のような気もする。

というわけで、あまり現場を知らず、プロマネは試験として知っている、入門書がほしいけど入門で終わらず次につながる、堅苦しくないような本が欲しい人にお勧め。まさにこの手の分野の大学生をターゲットに書かれたんじゃないかと思う。逆に、現場をそれなりに知っている、試験対策がしたい、今時の若者風文章はちょっと・・・という人はやめておいた方がいい。

てか、この著者絶対に生き生きしながらこの本を書いたに違いない・・・

このアーカイブについて

このページには、2017年2月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2017年1月です。

次のアーカイブは2017年3月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

ウェブページ

Powered by Movable Type 5.2.13