コンピュータの歴史(UNIX以前)
はじめに
カーニハンのUNIX回顧録をコンピュータの歴史を知った上で読みたくなり、寄り道で調査をしました。
サマリ
コンピュータの祖先を辿ると、産業革命時の機織機のパンチカードに辿り着きました。パンチカードではデザインをカード1枚ごとに設定しており、それが手続となっているため現代のアルゴリズムや外部記憶装置と捉えることができそうです。
その後、米国の国勢調査で事務的な処理に時間を要していることからパンチカードと電子計算機を使用した業務効率化がなされました。
他にも、ミサイルの弾道の計算などで計算機が使用され、その外部記憶装置としてパンチカードや磁気テープが使用されていました。
メインフレーム登場前は、弾道の計算に条件により幅があリマスが、代表例では人手で12時間→アナログ15–30分→ENIAC 30秒まで短縮。を要するなどその処理時間は大きなものでした。
メインフレームが登場し、バッチ処理が可能になりましたがCPUの遊休時間が勿体なく、効率的に電子計算機を使用するようにOSが登場し、その後にUNIXが登場したという経緯です。
年表
| 時代・年 | 現場の課題(人の事情) | 手段・技術(主役) | できたこと(運用上の効果) | 代表例・場所 |
|---|---|---|---|---|
| 1725年〜1801年(織機の自動化) | 複雑な模様は熟練者頼みで、同じ仕上がりを再現しにくい | 紙テープから、連結したカードへ | 手順をカードに記録でき、同じ模様を何度でも再現できる | フランス・リヨンの機織り工房 |
| 1890年(統計・事務の機械化) | 国勢調査の集計に何年もかかる | パンチカード+作表機 | カードを機械が読み取り自動集計。集計時間を大きく短縮 | 米国勢調査局/ホレリス |
| 1928年〜1950年代(事務機の工業化) | 毎日の定型業務(帳票・給与・在庫など)を確実に処理したい | カード作成機(キーパンチ)、並べ替え機(ソーター)、突き合わせ機(コレータ)、作表機(タブレータ)、プリンタ+IBMの80列カード | 事務をライン作業に。紙とカード束で進める標準手順ができた | IBM 024・026・029、IBM 407 会計機 |
| 1940年代(軍事・科学) | 弾道や暗号、原子力研究の計算が間に合わない | アナログ計算機(微分解析機) → 電子計算機 ENIAC | 手計算で数十時間かかる処理を、分〜秒に短縮。実務に間に合う | 米陸軍弾道研究所(BRL)、ロスアラモス、ブレッチリー・パーク |
| 1951年〜1953年(商用電子計算の出発) | 大量データを確実に、同じ手順で何度も処理したい | UNIVAC I(主な入出力装置=磁気テープ)、IBM 701/702(カードとテープの併用) | 大量の逐次処理を自動化。カードのデータをテープに移して処理できる | 国勢調査、保険、製造、研究所 |
| 1956年〜1963年(OS・言語の整備) | 高価な計算機を止めずに回したい | 初期のOS(モニタ)(GM-NAA I/O など)+FORTRAN/COBOL | ジョブを自動で流す仕組み(バッチ)と高級言語で、開発と運用がスピードアップ | IBM 704 ほか |
| 1964年〜1966年(メインフレームの成立) | 会社の中心業務を夜通し止めずに回したい | IBM System/360(機械語が互換の製品群+チャネルI/O=入出力を専用仕組みが担当)+ OS/360(JCL=ジョブ制御言語とスプール=入出力の一時保管) | 大規模バッチを工場のように回せる。入出力はチャネルが受け持ち、CPUは計算に集中 | System/360、HASP(のちの JES2)、IBM 1403 プリンタ |
| 1968年〜1972年(オンラインと仮想化) | 予約や口座などをすぐに更新し、複数の用途を安全に同時運用したい | IMS/CICS(オンライン取引の仕組み)、VM/370(1台で多くのOSを動かす=仮想化) | オンライン取引が可能に。複数OSの同時運用も実現し、端末が一気に増える | 銀行、航空、公共料金、IBM System/370 |
パンチカードの起源
- 機織機(1801)
複数のカードをつなぎ、穴の有無で糸の上下を制御し。手順を外部媒体に記録して読み込む発想の大元となります。 - 統計(1890米国勢調査)
パンチカードで人口統計の集計を自動化しました。1880年は米国にて、国勢調査集計に約8年かかっていました。 - 事務処理(1928)
IBMが80列のカードを導入し、事務処理の標準媒体に使用しました。
カード&テープの時代
UNIVAC I(1951)はUNISERVOという磁気テープを主I/Oに採用していました。
テープは前後両方向読書きに対応し、大量データの逐次処理に最適化されていました。
IBM 701(1952–)はカード読取+磁気テープの併用であり、科学計算に注力した最初期の商用大型機として位置づけられます。
IBM System/360 と OS/360
System/360(1964)はサイズ違いでも機械語互換という設計で、商用×科学を一つのアーキテクチャに統合しました。
I/Oはチャネルと呼ばれる専用処理系にCPUを計算に専念させる思想です。
OS/360はJCLでジョブ/手順/データを宣言し、バッチ運転を人間の段取りごと自動化し、配布テープからSYSGEN(システム生成)して使います。
入出力のボトルネックはHASPに代表されるスプーラで平準化され、のちのJES2へ。
CTSS と Multics
CTSS(1961–)は大型機で多数ユーザの対話利用を実現した先駆者です。
Multics(1965–)はコンピュータ・ユーティリティを志向し、仮想記憶・強力な保護・階層FS・動的リンクなどを体系化しました。
UNIXの誕生(書籍の紹介文章を引用)
下記引用です。
Unixは1969年にAT&Tのベル研究所で誕生して以来コンピュータ技術の歩みそのものを変え,今日,その派生物は社会に欠かせない数多くのシステムの中核にある.
本書はUnixの起源に目を向け,Unixとは何であり,どのようにして生まれ,なぜ重要なのかを説明しており,コンピュータあるいは発明の歴史に興味のある人なら誰にでも読んでもらえるように書かれている.
Unixの物語は,ソフトウェアの設計と構築,そしてコンピュータの効果的な使用方法について多くの洞察を与えてくれる.
また,技術革新がどのように起こるのかという,関連した興味深い物語もある.
なぜUnixはこれほど成功したのか? それは二度と起こりそうにない特異な出来事だろうか? これほど影響力のある結果は計画しうるのだろうか?
コンピュータの歴史において特に生産的な形成期にあった時代の素晴らしい物語のいくつかを本書で伝えたい.
まとめ
OSの話からパンチカードやメインフレーム、機織機まで辿れてかなり有益な調査になりました。
OSの話は好きですが、辿れば辿るほど面白くいつかはパンチカードを使用して作業をしてみたいと思いました。
学習の補助になれば幸いです。
参考情報
織機・パンチカードの起源
- Computer History Museum: Punched cards control Jacquard loom (1801)
- Computer History Museum: Punched Cards(解説特集)
- Smithsonian NMAH: Hollerith Tabulating Machine(収蔵品)
- Smithsonian NMAH: Tabulating Equipment(特集)
- IBM Archives: The IBM Punched Card(80欄カード, 1928)
初期商用計算機・外部記憶
- UNIVAC I Programming Manual (1959, Bitsavers)
- UNIVAC I Operating Manual (1954, Bitsavers)
- IBM 701: Principles of Operation (Bitsavers)
- IBM 701: System Design (Buchholz, 1953, Bitsavers)
メインフレーム・OS/360 系
- Amdahl, Blaauw, Brooks (1964): Architecture of the IBM System/360
- IBM OS/360: JCL User’s Guide (1970, Bitsavers)
- IBM OS/360: JCL Reference (1971, Bitsavers)
- HASP II Version 4 Operator’s Guide (1973, Bitsavers) ※後のJES2系譜
タイムシェアリング・Multics
- CTSS Programmer’s Guide (1963, MIT)
- CTSS Programmer’s Guide (1969, Bitsavers)
- Organick (1972): The Multics System(全文アーカイブ)
UNIX(一次論文・回顧)
- Ritchie & Thompson (1974): The UNIX Time-Sharing System (CACM)
- Ritchie (1984): The Evolution of the Unix Time-sharing System(PDF)
Discussion