「生活行動の優先レベルを確認せよ」

工学博士
情報数理応用
昭和13年神戸生まれ。昭和38年より、三菱電機(株)に18年間、早稲田大学に28年間、一貫して情報関係の研究・教育に携わってきた。企業では「データ伝送方式」「誤り訂正アルゴリズム」や「コンピュータネットワーク」の開発に、大学では「一般化連接符号」「フォールトトレラントコンピューティング」など情報理論と符号理論の研究に取り組む。研究成果の一つ「ユークリッド復号法」は音楽用CDの誤り訂正法として、広く世界に実用化されている。
はじめに
私の専門は「情報理論」や「符号理論」などの情報数理ですが、その応用分野として「フォールトトレラントコンピューティング」や「情報検索」にも取り組んでいます。ここでは、担当している「パソコンの歴史」に関連する話題から、割り込み制御機構・優先処理などを取り上げます。そのようなコンピュータの仕組みを学ぶと、逆にコンピュータから私達の日常生活に役立つヒントを学ぶことが出来ます。
[1] 電話と仕事の重要度
私達の身は一つです。しかし、長い時間(例えば、1日)を見ると、同時に並行して色々な仕事をしています。時間を細切れに使い、2つ以上の仕事をあたかも並行して実行しているように感じるからです。会議に出席しながら別の仕事のメモを作る、接客をしながら議事録をまとめるなどです。一日が終われば、会議にも出たしメモも完成したことになります。しかし、注意しなければならないことは、仕事の切り替えには中断した仕事を思い出すための無駄時間があることです。
[例 1] 上司が私の机の前に来て、「K君、今回のM社への提案書はしっかり作ってくれ」と指示した。そこへ電話がかかってきた。受話器を取ると、定時後の飲み会の会場変更の知らせであった。私は了解した旨返事し、上司に「では、詳しい話をお聞かせ下さい」とお願いした。
業務中に飲み会の電話はまずないと思いますが、しかしこの種の話は日常よくあります。電話は突然架かってきて、会話に割り込むからです。まずは上司に「すみませんが、電話を取らせて下さい」と断りをすべきでしょう。それは、わざわざ机の前まで足を運んだ上司に対する礼儀です(このような無礼は、最近携帯電話の普及でますますひどくなっているように思います)。了解を得て受話器を取ります。上司の話の提案書の作成よりもっと重要な案件の知らせかもしれないからです。電話の内容が上司の話より優先度が低いと判断した場合、先方に「後ほど、折り返し連絡します」と言えばよい訳です。もし優先度が高いと判断したこと(例えば、社長からの呼び出し)であった場合、上司にはその旨を話し、「後ほど、お席に伺います」と伝えることになるでしょう。
[2] 割り込み制御機構と優先処理
[1]のような状況はコンピュータの中でも起こります。多重(マルチ)プログラミング技術では、1台のCPUを用いて2個以上の仕事(プロセス:タスクとも言う)を切り替えて実行します。ここで、「プロセス」とは完結した大きな仕事(ジョブ)をコンピュータが分割できる小さな仕事に分けたものです。なお、多重(マルチ)プロセシング技術は2個以上のCPUを用いて、1個以上の仕事を実行するもので、本来並列処理を目的としており、多重プログラミングとは区別します。
[例 2] X銀行のATMで預金を引き出そうとして、金額を入力し「確認」を押しても銀行のコンピュータに伝わらず、無応答の状況が続いた。
通常バンキングシステムのホストコンピュータは多重プログラミングの環境で動作しています。数年前の5月の連休直前、一度に多くのユーザが引き出そうとしたため、郵便局のコンピュータがダウンしたという話がありました。設計時の予想以上の数のトランズアクションが発生すると、能力を超えダウンし無応答になります。しかし[例 2]で、もし通信回線の優先度とプロセスと呼ばれる処理プログラム(例えば、元帳の計算)の優先度の設定が間違っていたらどうなるでしょう。多くの多重プログラミング環境では、ハードウェア(ここでは通信回線入力)ごとに固定の優先レベルが割り当てられ、ソフトウェアにはプロセス(ここでは元帳の計算の一部)ごとに可変の優先レベルが割り当てられます。前者をn、後者をmとするとき、n≦mならば、本来先に処理すべきプロセスが後回しになり、無応答になる可能性があります。このような設計をすれば、システムとして誤動作をすることになってしまいます。
例えば、優先レベルが固定のハードウェアでは、電源などの異常は7、通信回線入力は5、通信回線出力は4、プリンタは1、のように割り当てられます。優先レベルが可変のソフトウェア、すなわちプロセスでは、処理内容により電源異常プロセスは7、出金処理の一部である金額入力プロセスは5、のように細かく分けられます。実際の割り込み要因には上記のような外部割込みのほか、ページフォルトなどのプログラム割り込みやカーネルコールなどの内部割込みがあり複雑です。もし、ハードウェアの優先レベルと現在実行中のプロセスの優先レベルで
・ 前者が高い場合、前者の割り込みが受け付けられます。
・ 前者が低いか後者と同じ場合、前者の割り込みは無視され、実行中のプロセスが継続されます。
この比較やプロセスの切り替えは、コンピュータのオペレーティングシステム(OS)により実行されます。割り込みが受け付けられた場合、割り込みハンドラが起動されます。割り込みハンドラは、(1)実行中のデータ退避 (2)割り込み要因の判定 (3)割り込み処理ルーチンへジャンプ・処理後のリターン (4)退避データの復元、の一連の仕事をしなければなりません。この内、(1)と(4 )は割り込まれたメインルーチンへ戻るための処理で、一種の無駄時間でありオーバヘッド時間と呼ばれます([1]の[例 1]の前に述べた「仕事を思い出すための時間」と同様です)。
[3] コンピュータから学ぶこと
[2]で述べたことは、コンピュータの仕組み・動きを理解するのに重要です。しかしここでお話ししたいのはもっと大切なことで、これを手本に私たちの日常の生活行動を優先レベルの付け方で見直し、再確認をしてほしいと言うことです。
[例 3] 私は昭和50年前後、研究に精を出していた時期がありました。企業にいたので就業時間中は勿論仕事がありますが、それ以外は土日も研究でした。後になって長男から「お父さんとキャッチボールもしたことがない」と言われました。当時テレビからも遠ざかり、阪神タイガースが優勝したことも、山口百恵が引退したことも後で知った有様でした。
この例は決して良い例ではありません。家族の理解が得られないような優先レベルの設定では駄目でしょう。自分のおかれた環境・年齢・今後の計画などを考慮して、優先レベルを決める必要があります。しかもこれは固定ではなく、自分のキャリアパスに照らし時間と共に変わるものです。
日頃、私達には食事・就寝・休憩などの生活パターンや、仕事・勉強・恋愛・結婚・趣味・交際などの行動パターンがあります。これらに対する優先レベルの設定は、大袈裟に言えばその人の生き方を表しています。例えば、「家庭を顧みず遊び呆ける」「健康が蝕まれる仕事人間」「寝食を忘れて研究に没頭する」などです。
・ 今日は体調がすぐれないが、飲み会に誘われた。
・ やっておきたい仕事があるが、デートの時間が迫ってきた。
さて、あなたならどうするか。こんな簡単なことでも、日常生活の優先レベルを予め付けていなければ悩んでしまうでしょう。
・ 父親が重病で入院している。会社から長期海外出張を命じられた。
・ 結婚資金を貯めるか、大学に入学するか。
こんな質問に正解はありません。それぞれの人が自分の信念に従って決めることです。優先レベルを付けることは、これを決めるための第一歩なのです。これから悩み、実行可能解を見つけねばなりません。そのためにも、生活行動に予め優先レベルを付けることは、その人の生き方・個性(アイデンティティ)を示していると考えられます。
おそらく今まで余り気にしないで、生活行動の間に適当に優先レベルを付けていたと思います。しかし、生活行動の優先レベルがふらふら変動することなく、しっかりした考えを持って予め設定できる人は、ブレないで何事にも瞬時に判断でき、他人から信頼されるでしょう。
私達は無味乾燥なコンピュータを勉強しながら、実はコンピュータから勉強する大切なことがあるのです。



















