← |
2024年11月 |
→ |
日 |
月 |
火 |
水 |
木 |
金 |
土 |
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
|
26 |
27 |
28 |
29 |
30 |
|
システムが故障しても、安全な方向に故障するように設計し、安全性を高めること。
たとえば、C言語でメモリーをmalloc関数などで確保し、free関数で解放したとする。そして、確保していたメモリーを指し示していたポインターpにアクセスしたらどうだろう? ------------------------------ void *p=malloc(1024); :なんかの処理 free(p); :なんかの処理 *p=10; ------------------------------ 既に開放した領域=別のプログラムで使用しているかもしれない領域なので、結果はどうなるかは神のみぞ知るという事態になる。
そこで、次のようにプログラムを変えたらどうだろう? ------------------------------ void *p=malloc(1024); :なんかの処理 free(p); p = null; :なんかの処理 *p=10; ------------------------------ 原則として、nullの指し示すアドレスへのアクセスは必ずエラーになることが保証されているので、「何が起きるか分からない」よりも安全な「エラーが起きる」と言う状態になる。
このように、ちょっとした工夫で、問題が起きる場面も安全に問題を起こすことが出来る。
現実の例では、旅客機のエンジンは(単発機じゃなければ)1つのエンジンが壊れたぐらいで墜落することもない様になっている。 また、同じく旅客機の機長が機内食で食中毒となっても大丈夫なように、副機長は機長と異なる機内食を食べる。 また、スペースシャトルなどは、3系統のコンピューターを用意して、多数決で処理を決定するため、1系統が故障しても安全に動作するように設計されているらしい。
このように、機械に依存する現在の社会では無くてはならない概念、それがフェイルセーフであると思う。
ただ、このフェイルセーフは、さじ加減が難しい場面も多々あり、過剰に反応すると某湯沸かし器のように、利用者が不便となり安全装置を無効化する人が出てきてしまう。 一方で、フェイルセーフはきちんと考えないと、安全装置は金網1つだけと言う、某流水プールの事故になってしまう。
なので、エンジニアの資質の一つに、「想像力豊かであること」が存在するのは間違いないと思う。
|
20:42, Sunday, Aug 06, 2006 ¦ 固定リンク
¦ 携帯
■コメント
■コメントを書く
※コメントの受け付けは終了しました
|
|