重要な点ですが、電源が突然落ちる、より先は、あまりソフトウェア的に想定する意味がないのです。
電源が突然落ちる場合、ハードウェア故障や、落雷、隕石などいくらでも想定できてしまうため、それらにどこまで対処するか、という話になるわけです。
急に電源が壊れる、というような事を想定するのは意味は無くはないですが、それは、どちらかというと、冗長化された電源やUPS(無停電電源装置)によって、解決すべき問題です。
あるいはマザーボードが壊れる、ということを想定するならば、Fault tolerantなサーバーを導入すべきです。
突然の電源断が発生することを想定するようなシステムは、fault tolerant なサーバーです。
もし隕石が降ってきても、ていう話なら、月面にサーバーを置いてミラーリングするしかありません。
安価な(といっても高いですが)一般的なサーバーはそういう障害は、そもそも、想定外なのです。
(更に重要なことですが、全ての対策は、想定があって、その想定に対する対策があるものであって、想定外が起きたら、それは言葉通り『想定外』で、対策はできていないし、その事態が起きたら、被る障害やリスクは目をつぶる、というものです)
ソフトウェアは、基本的には『ハードウェアが正しく動作している、環境下』しか想定していません。
それ以上は、ベストエフォートで、できるだけ耐えられるようにする、ものです。
したがって、基本的にpepperleafさんが書いておいでのように、何があっても、基本的には、保証されません。
想定すべきではないし(必要十分というニュアンスで)必要もないからです。
Fault tolerantなサーバーは、調べて貰えばわかりますが、それはそこそこ高価ですが、複数ノードで構成されて、万一単一ノードが落ちても、他のノードでサービスできるようになっています。
しかし、当然ですが、全てのノードが突発的に電源断した場合は、当然、動作は保証されません。
万一電源が落ちても、いいように、copy on writeや、ジャーナリングなどの機能をLinuxは提供しますが、これは、例えば、kernel panicや突発電源断でも、システムが壊れにくくなるような工夫であって、電源がいつ落ちてもいい、というものではありません。
基本的には電源がいつ落ちていいというよりも、電源が落ちないようにし、電源が失われた場合も、UPSなどを用いて可能な限り正常に終了させる。が対策として先にあるべきです。
なので、OSの仕組みとして、どこまで処理が進んでいって、どこで止まったから、0byteファイルになった、とか、ファイルシステムが壊れたとかいうのは、そういうところまで処理はできたけれど、後続処理ができなかったから、そうなっただけであって、ソフトウェアとして意図したものではありません。