KOSEIのブログ

自分の可能性をどこまでも

プログラム開発工程(続きの続き)<元SE独白記>

<元SE独白記>プログラム開発工程(続きの続き)  2016/06/14

ところで昨日のブログでは端末が並んでいる部屋があると言いましたが、端末の数は20~30でしょうか・・・。大規模システム開発になるとそれぐらいの規模になります。端末ですが一見するといまどこの家庭でも使っている「デスクトップ型パソコン」に似ていますが、実はまったく違います。これはコンピュータではなく端末に過ぎないのです。大型汎用機にたくさんの端末が繋がれているところをイメージしてもらうと一番わかりやすいです。単なる端末なのでこの中には「CPU」はありません。「ダム端」とかいう言い方をします。操作するだけであって、計算しているのはメインフレーム本体なのです。

ところでそんなに何十台の「ダム端」がぶらさがって仕事をしていて、処理スピードは落ちないのだろうか?と誰しも不思議に思うでしょう。でもそこにはメインフレームにはマルチタスク可能な機械で、「タイムシェリングシステム」という仕組みが働いています。下の手書きの絵を見てください。

 

メインフレームに左上の図のようにいまA、B、C、Dの4台の端末が繋がっているとします。するとメインフレームのCPUは、まずA端末が要求している仕事をします。次にB端末の仕事・・・、というようにすべての端末(ここではA、B、C、Dの4台)をし終わったら(D端末まで終わったら再びA端末に戻り同じことを繰り返します。A→B→C→D・・・・・という具合に。「でもA端末の仕事をしている間、B、C、Dは待ってなければいけないのでは?」と考えますね?上の図では例として時間が経過しているということを表すためにA端末の処理が6:30から始まって、その後1分ずつ増やしていますが、汎用機のCPUの処理速度は、僕が使っていたメインフレームマシンは第4世代のマシンだったので1秒間に1億回の演算ができたマシンです(100 MIPSいまは更に性能が向上しているはず)から、一つの端末の簡単な演算に必要な時間はナノセカンド秒単位でしょう。それこそ目にも留まらぬスピードなので、人間はまるで自分がメインフレームを独占して使っているような錯覚を起こしているのです。これを実現させているのが「タイムシェアリング・システム」です。現代のパーソナル・コンピュータという言葉は「パーソナル=個人の自分だけの」コンピュータです本当に個人が占有しているのですが、汎用機の時代は単なる端末にすぎなかくて、このような仕組みでパーソナルのふりをしていただけなのです。

なので、それぞれの端末で実行をかけたりすると、その数が増えれば増えただけ一台の端末での動きが遅くなります。開発が佳境に入ってくると皆テストを始めたりで、処理速度はグッと遅くなり、ひどいときは停まってしまいます。決してハングアップしているわけではなく、CPUが他の端末からの要求(デマンド)を処理するのに忙しいのです。そういう時は夜間に仕事をするしかありません。まったく身体に悪いワーストテンに入る仕事です。また夜間は「バッチ処理」というのを定期的に流すのでそれがもの凄く時間がかかりその間はまったく一般の処理はできませんでした。端末が使える時間をいかに確保するか?が成功の鍵でしたね(笑)。

バッチ処理」というのは、対話型で動くプログラムではなくて、順次に一定の処理を繰りかえりていく一括処理プログラムのようなものです。いまのパソコンでも電源を入れて立ち上がった後に走るのは「バッチ処理プログラム」です。バッチ処理で何をするかというのが「ブートストラップ」エリアにあらかじめ格納されていて、電源が入るとこのプログラムをキックする(最初から始める)のです。そこにはキレイなWindowsの初期画面を出力し、仕事の準備をして待ち体勢になるのです。バッチ処理に関しては次のサイト(Wikipedia)をご覧ください。

https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%83%E3%83%81%E5%87%A6%E7%90%86

KOSEI