コンピューティングにおいて、タイムシェアリングとは、各タスクまたはユーザーに処理時間の短いスライスを与えることで、コンピューティングリソースを多数のタスクまたはユーザー間で同時に共有することです。タスクまたはユーザー間のこの素早い切り替えにより、同時実行の錯覚が生じます。 [ 1 ] [ 2 ]これにより、単一ユーザーによるマルチタスクや、複数ユーザーセッションが可能になります。
1960年代に開発されたタイムシェアリングは、1970年代にコンピューティングの代表的なモデルとして登場し、コンピューティングの歴史における大きな技術的転換点となりました。多くのユーザーが1台のコンピュータと同時にやり取りできるようにすることで、タイムシェアリングはコンピューティング機能を提供するコストを劇的に下げ、個人や組織がコンピュータを所有せずに使用することを可能にし、[ 3 ]コンピュータのインタラクティブな使用と新しいインタラクティブなアプリケーションの開発を促進しました。
初期のコンピュータは非常に高価な装置で、動作も非常に遅かった。コンピュータは通常、特定のタスク専用で、制御パネルで操作され、オペレーターはスイッチを介して小さなプログラムを1つずつ手動で入力していた。これらのプログラムの実行には何時間もかかることがあった。コンピュータの速度が向上するにつれて実行時間は短縮され、すぐに次のプログラムを起動するのにかかる時間が問題となった。IBSYS (1960) などのバッチオペレーティングシステムを含む新しいバッチ処理ソフトウェアと手法は、実行準備のできたプログラムをキューに入れることで、これらの「デッド期間」を短縮した。[ 4 ]
プログラマーは比較的安価なカードパンチや紙テープライターを使って「オフライン」でプログラムを作成していた。プログラムは運用チームに提出され、運用チームが実行スケジュールを組んだ。出力(通常は印刷物)はプログラマーに返送された。このプロセス全体には数日かかる場合もあり、その間プログラマーはコンピュータを一度も目にすることがなかった。スタンフォード大学の学生たちは、この状況をユーモラスに批判する短編映画を制作した。[ 5 ]
ユーザーがコンピュータを直接操作できるようにするという代替案は、一般的に費用がかかりすぎるため検討対象にはなりませんでした。これは、ユーザーがコードを入力している間、コンピュータがアイドル状態になる時間が長くなる可能性があるためです。このような状況は、インタラクティブな開発を、コンピューティングリソースを無駄にしても構わない組織、つまり大抵は大規模な大学に限定していました。

タイムシェアリングという用語には、1960 年以前とそれ以降の 2 つの主要な用途があります。初期の用途では、この用語 (ハイフンなし) は現在マルチプログラミングと呼ばれるものを指していました。[ 6 ] ロバート・ドッズは、1949 年にボブ・ベマーに宛てた手紙の中で、この形式のタイムシェアリングを最初に説明したと主張しました。その後、ジョン・バッカスは1954 年のMITの夏季セッションでこの概念を説明しました。[ 7 ] 1957 年のAutomatic Control Magazineの記事「コンピュータの考え方」で、ボブ・ベマーは、複数のユーザーが共有する 1 台の大型コンピュータを使用し、そのプログラムを「インターリーブ」する経済的な理由を概説しました。彼はまた、電力会社が電力を供給するのと同様に、複数のユーザーに計算能力を提供するコンピュータユーティリティを提案しました。[ 6 ] [ 8 ] [ 9 ] 1958 年 12 月に発表された論文で、WF バウアーは、LARCやガンマ 60のような「並列システム」が「マシンの大きなコンポーネントをタイムシェアリングする」ことを可能にする方法を説明し、また、大規模な地域コンピュータがその地域の組織に計算能力を提供するという提案も行った。[ 10 ]
オックスフォード大学初の計算機科学教授となったクリストファー・ストラッチーは、 1959年2月に英国で「タイムシェアリング」の特許を出願した。[ 11 ] [ 12 ]同年6月、彼はパリで開催された第1回ユネスコ情報処理会議で「大型高速コンピュータにおけるタイムシェアリング」 [ 13 ]という論文を発表し、タイムシェアリングの考え方によって生じた様々な技術的問題に対する解決策を説明した。同会議で、彼はこの概念をボルト・ベラネク・アンド・ニューマン(BBN)のJCR・リックライダーに伝えた。[ 14 ]この論文は、1963年にMIT計算センターによって「タイムシェアリングコンピュータに関する最初の論文」として評価された。[ 15 ]
1960年以降、タイムシェアリングという用語の意味は元の用法から変化し、複数のユーザー間でコンピュータを対話的に共有することを意味するようになった。 [ 6 ] 1984年、クリストファー・ストラッチーは、タイムシェアリングという用語の意味の変化は混乱の原因であり、1959年に論文を書いたときの自分の意図とは異なると考えていると書いた。 [ 6 ]
ソフトウェア開発に使用できる最初の対話型汎用タイムシェアリングシステムであるCompatible Time-Sharing Systemは、1959年にMITのJohn McCarthyがメモを書いたことから始まった。[ 16 ] Fernando J. Corbatóがシステムの開発を主導し、プロトタイプは1961年11月までに製造されテストされた。[ 17 ] Philip M. Morseは、IBMがIBM 704から始まり、IBM 709製品ライン、 IBM 7090、IBM 7094の一連のメインフレームコンピュータを提供するよう手配した。[ 17 ] IBMは、これらのメインフレームをMITに無償で貸し出し、操作するスタッフも提供した。また、以前の顧客が既に変更を依頼していたため、主にRPQの形でハードウェアの変更も提供した。[ 18 ] [ 17 ]貸し出されたIBMハードウェアのMITの使用には、いくつかの規定があった。MITはCTSSの使用料を請求することはできなかった。[ 19 ] MITはIBMコンピュータを1日8時間しか使用できず、他の大学にはさらに8時間が利用可能でした。IBMは残りの8時間をコンピュータに使用できましたが、例外もありました。1963年、MITがARPAの資金で購入したIBM 7094にCTSSの2回目の展開が行われました。これは、プロジェクトMACでのMultics開発をサポートするために使用されました。[ 17 ]
同時期に、リックライダーはBBNタイムシェアリングシステムの開発を主導し、同システムは1962年に運用を開始し、一般公開された。
JOSSは1964年1月にタイムシェアリングサービスを開始した。[ 20 ]ダートマス・タイムシェアリング・システム(DTSS)は1964年3月にサービスを開始した。[ 21 ]
1960年代後半から1970年代にかけて、コンピュータ端末は大規模な機関向けメインフレームコンピュータ(集中型コンピューティングシステム)に多重化され、多くのシステムでは端末を順次ポーリングして、追加データが利用可能かどうか、またはコンピュータユーザーから操作が要求されたかどうかを確認していました。その後、相互接続技術は割り込み駆動型となり、 IEEE 488規格などの並列データ転送技術を使用するものもありました。一般的に、コンピュータ端末は、今日のデスクトップコンピュータやパーソナルコンピュータとほぼ同じ場所で、大学の敷地内で利用されていました。パーソナルコンピュータの黎明期には、多くの端末がタイムシェアリングシステム用の特に高度な端末として使用されていました。
DTSSの開発者たちは1968年に「平均応答時間が10秒を超えると、自分専用のコンピュータを持っているという錯覚が崩れる」と記した。[ 22 ]一方、タイムシェアリングのユーザーは自分の端末がコンピュータだと考えており、[ 23 ]サービス利用料の請求書が届かない限り、大規模なJOSSアプリケーションが全ユーザーにページングを引き起こす場合など、他のユーザーがコンピュータのリソースをどのように共有しているかについて考えることはほとんどなかった。JOSSニュースレターは、ユーザーにストレージ使用量を削減するよう頻繁に呼びかけていた。[ 24 ]それでもタイムシェアリングは、大型コンピュータを共有する効率的な方法であった。1972年時点ではDTSS は 100 人以上の同時ユーザーをサポートしました。システムが「特に忙しい日」に完了した 19,503 のジョブのうち 1,000 以上が 10 秒以上のコンピュータ時間を必要としましたが、ジョブの 78% が 1 秒以下のコンピュータ時間で済んだため、DTSS はジョブを処理することができました。3,197 人のユーザーのうち約 75% は端末を 30 分以下使用し、その間に使用したコンピュータ時間は 4 秒未満でした。DTSS用に作成された初期のメインフレーム ゲームの一つであるサッカー シミュレーションは、ゲームをプレイする 15 分の実時間で、コンピュータ時間を 2 秒未満しか使用しませんでした。[ 25 ] 1980 年代初頭のマイクロ コンピューティングの台頭により、タイム シェアリングの重要性は低下しました。個々のマイクロ プロセッサが十分に安価になったため、アイドル状態でも、 1 人のユーザーがすべてのCPU 時間を自分のニーズにのみ割り当てることができたからです。
しかし、インターネットの登場により、タイムシェアリングという概念が再び注目を集めるようになりました。数百万ドルもの費用をかけた企業向けサーバーファームでは、数千もの顧客が同じ共通リソースを共有できます。初期のシリアル端末と同様に、ウェブサイトは主に活動の急増とそれに続くアイドル期間を繰り返しながら動作します。このバースト的な性質により、サーバーが非常に混雑しない限り、通常は通信遅延をほとんど感じることなく、多くの顧客が同時にサービスを利用できます。
1960 年代には、いくつかの企業がサービス ビューローとしてタイム シェアリング サービスを提供し始めました。初期のシステムでは、 ASCII環境でTeletype Model 33 KSR または ASR または Teletype Model 35 KSR または ASR マシンと、 2 種類の 7 ビット コードを備えたIBM Selectric タイプライターベースの端末 (特にIBM 2741 ) が使用されました。 [ 26 ]これらの端末は、ダイヤルアップBell 103A モデムまたは音響結合モデムを介して中央コンピュータに接続し、1 秒あたり10 ~ 15 文字で動作しました。後の端末とモデムは、1 秒あたり 30 ~ 120 文字をサポートしました。タイム シェアリング システムは、さまざまなプログラミング言語プロセッサ、さまざまなソフトウェア パッケージ、ファイル ストレージ、一括印刷、オフライン ストレージを含む完全なオペレーティング 環境を提供しました。ユーザーは、端末のレンタル、接続時間 (時間単位) の料金、CPU 時間の秒単位の料金、およびキロバイト 月単位のディスク ストレージの料金を支払いました。
タイムシェアリングに使用された一般的なシステムには、SDS 940、PDP-10、IBM 360、GE-600 シリーズなどがありました。このサービスを提供していた企業には、 GEのGEISCO、IBMの子会社である The Service Bureau Corporation、Tymshare (1966 年設立)、National CSS (1967 年設立、1979 年に Dun & Bradstreet に買収)、Dial Data (1968 年に Tymshare に買収)、AL/COM、Bolt, Beranek, and Newman (BBN)、英国のTime Sharing Ltd.などがありました。[ 27 ] 1968 年までに、米国国立衛生研究所(NIH) だけでも 32 のサービス ビューローが存在していました。[ 28 ] Auerbachのタイムシェアリングガイド(1973 年)には、Burroughs、CDC、DEC、HP、Honeywell、IBM、RCA、Univac、およびXDSの機器を使用した 125 種類のタイムシェアリング サービスがリストされています。[ 29 ] [ 30 ]
1975年、プライム・コンピュータの社長代理ベン・F・ロベレンは株主に対し、「現在最大のエンドユーザー市場はタイムシェアリングである」と述べた。[ 31 ]一時的にIBMに次ぐ第2位のコンピュータ会社であったDECにとっても、これは真実であった。同社のPDP-10とIBMの360/67 [ 32 ]は、CompuServe、 On-Line Systems, Inc. (OLS)、Rapidata、Time Sharing Ltd.などの商用タイムシェアリングサービスで広く使用されていた[ 33 ]。
パーソナルコンピュータの登場は、タイムシェアリングの衰退の始まりを告げるものだった。経済的な観点から、コンピュータの利用時間は、共有せざるを得ない高価なリソースから、必要な時に利用できるようにするために、コンピュータを長時間放置しておくことができるほど安価になった。
多くのタイムシェアリングサービスが閉鎖される中、Rapidata [ 34 ] [ 35 ]は存続し、National Data Corporationの一部となった。[ 36 ] 1982 年においても十分な関心を集めており、「統計プログラムのユーザーガイド:Rapidata タイムシェアリングシステム」の焦点となった。[ 37 ]収益が 66% 減少[ 38 ]し、その後 National Data が独自の問題を抱えるようになった後も、このタイムシェアリング事業を継続しようとする試みが行われた。[ 39 ] [ 40 ] [ 41 ]
1964年に始まったMulticsオペレーティングシステム[ 42 ]は、電気や電話のユーティリティをモデルにしたコンピューティングユーティリティとして設計されました。1970年代には、テッド・ネルソンのオリジナルのハイパーテキストリポジトリ「Xanadu」がそのようなサービスとして構想されました。
タイムシェアリングは、異なるユーザーが所有する複数のプロセスが単一のマシン上で実行される初めての試みであり、これらのプロセスは互いに干渉する可能性がある。[ 43 ]例えば、あるプロセスが、メモリに格納された変数など、別のプロセスが依存する共有リソースを変更する可能性がある。システムを1人のユーザーのみが使用している場合、これは潜在的に誤った出力につながる可能性がある。しかし、複数のユーザーが使用している場合は、他のユーザーが本来見るべきではない情報を見ることになる可能性がある。
このような事態を防ぐため、オペレーティングシステムは、各プロセスが持つ権限を決定する一連のポリシーを適用する必要がありました。例えば、オペレーティングシステムは、特定のプロセスによる特定の変数へのアクセスを拒否する場合があります。
1971年にロンドンで開催された最初の国際コンピュータセキュリティ会議は、主にタイムシェアリング業界とその顧客によって推進された。[ 44 ]
初期の重要なタイムシェアリングシステム: [ 29 ]
コンピュータのタイムシェアリングに関する最初の記述の 1 つです。
ストラッチーがタイムシェアリングの概念で提案したのは、マルチプログラミングの経済性を維持しながら、プログラマーとマシンの直接的な接触を維持する仕組みでした。
1959年、英国のクリストファー・ストラッチーと米国のジョン・マッカーシーは、それぞれ独立してタイムシェアリングと呼ばれるものを記述した。
1960年当時、「タイムシェアリング」という言葉は広く使われていました。しかし、それは一般的に、ジョン・マッカーシーがCTSSのような対象物として用いた意味ではなく、私の意味で使われていました。
私たち自身では、そのような技術者を全員育成することはできませんでした。しかし、当時、コンピュータのカリキュラムを持つ大学は一つもありませんでした。そこで私は1950年代半ばにMITへ行き、コンピュータ科学者の育成を始めるよう強く働きかけました。私たちは大型コンピュータと、それを運用するための資金を寄贈しました。
Corbato: いいえ、それは興味深い点の 1 つです。IBM が機器の使用を寄贈した際の条件の 1 つは、料金を請求しないことでした。それは確かに無料でした。
{{cite book}}ISBN /日付の不一致(ヘルプ)最新の脆弱性のほとんどは、ほとんどのシステムでリモートから直接悪用することはできません。つまり、ほとんどのシステムはインターネットからのリモート攻撃のリスクにさらされていません。脆弱性の多くは、システム上で通常のシェル アカウントを持つ人物によって悪用される可能性があります。
{{cite book}}: CS1メンテナンス: 場所 (リンク)