プロセス
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/04/18 03:12 UTC 版)
歴史
コンピュータ制御ソフトウェアは1960年代初めまでに IBSYS のような監視制御ソフトウェアから実行制御ソフトウェアへと発展した。コンピュータは高速化していったが、CPU時間は安価ではなく、しかも完全に使われたわけではない。そのためマルチプログラミングが必要とされ、また可能となった。
マルチプログラミングとは、複数のプログラムを同時に(並行に、同時に並列ということもある)実行することを意味する。当初は単一のプロセッサ上で動作し、少ない資源を共有していた。マルチプログラミングはまた、より幅広い用語であるマルチプロセッシングの基本形態でもある。
プログラムは、プロセッサへの命令列で構成されている。単一のプロセッサは一度に1つの命令しか実行できない。つまり同時に複数のプログラムを実行することは不可能である。プログラムは長い待ち合わせが必要な計算資源(入力など)を必要とすることがあり、時間のかかる操作(プリンターへの出力など)を行うこともある。そういったとき、プロセッサは何もしていない「アイドル」状態になる。プロセッサを常に動作させるため、そういった入出力待ち状態のプログラムの実行を中断し、別のプログラムを起動または再開させる。ユーザーから見れば、複数のプログラムが同時に動作しているように見える。
間もなく「プログラム」の観念は「実行中プログラムとそのコンテキスト」という観念に拡張された。これがプロセスという概念の誕生である。
これは、リエントラントなコードの発明とともに必要になった。
スレッドという概念が生まれるのはその少し後になる。タイムシェアリングシステム、コンピュータネットワーク、マルチプロセッサ、メモリ共有型コンピュータなどが登場し、古い「マルチプログラミング」は真のマルチタスクやマルチプロセッシングにとって代わられ、さらにはマルチスレッドへと進化していったのである。
注釈
- ^ 最近のマルチコアのプロセッサでは、2つ以上のプロセスを一度に実行することができる。インテルのハイパースレッディング・テクノロジーで使われている同時マルチスレッディングは複数プロセスまたは複数スレッドの同時実行をシミュレートできる。
- ^ タスクという語は、タスク=スレッドの意味で使われることもあり、歴史的にはプロセスという語より適用範囲が広い。
出典
- ^ a b c d SILBERSCHATZ, Abraham; CAGNE, Greg, GALVIN, Peter Baer (2004). “Chapter 4 - Processes”. Operating system concepts with Java (Sixth Edition ed.). John Wiley & Sons, Inc.. ISBN 0-471-48905-0
- ^ Vahalia, Uresh (1996). “2 - The Process and the Kernel”. UNIX Internals - The New Frontiers. Prentice-Hall Inc.. ISBN 0-13-101908-2
- ^ Stallings, William (2005). Operating Systems: internals and design principles (5th edition). Prentice Hall. ISBN 0-13-127837-1
- Particularly chapter 3, section 3.2, "process states", including figure 3.9 "process state transition with suspend states"
- ^ 村井純、井上尚司、砂原秀樹『プロフェッショナルUNIX』株式会社アスキー、1986年1月15日、52頁。ISBN 4-87148-184-0。
プロセスと同じ種類の言葉
- プロセスのページへのリンク