差分

移動先: 案内検索

オペレーティングシステムとは何か

1,158 バイト追加, 2022年2月17日 (木) 05:07
/* 脚注 */
* リソースを効率的に利用するリソースを効率的に利用し、また管理をする
* アプリケーションが直接リソースを制御する必要をなくする
* アプリケーションにとってリソースをさらに抽象化する
 
 
 
=== リソースとは ===
==== ハードウェアリソース ====
 * CPU* 主記憶装置* 補助記憶装置* 入出力装置* etc.ハードウェアリソースにはCPU、主記憶装置(メモリ)、補助記憶装置、入出力装置、ほかがあります。
===== CPU =====
CPUと直接やりとりする記憶装置を指します。
演算のための値を記憶しておく、結果を記憶しておく、命令を記憶しておくなどといったために使われます。
以前は、単純にCPU ←→主メモリという構造で説明が十分だったのですが、現在での具体的な物理メモリの構成は、いくつかの階層にわかれていて、CPUと記憶をやりとりしています。わりきって一言でいうなら電気を切ったら消えてしまう一時的な記憶装置です。←→主メモリという構造で説明が十分だったのですが、現在での具体的な物理メモリの構成は、アクセスの効率を考え何段階かの動作速度や容量が異なるキャッシュメモリを用意しておき、CPUと記憶をやりとりしています。わりきって一言でいうなら電気を切ったら消えてしまう一時的な記憶装置だといえます。
===== 補助記憶装置 =====
現在ではコンパクトフラッシュメモリやUSBメモリなどもこのような区分けに入ってきます。
主記憶装置との違いは、CPUと直接記憶のやりとりを行なわないこと、記憶の容量が大きいこと、長期間記憶
(割り切って言えば電気を切っても消えない記憶わり切って言えば電気を切っても消えない記憶)
を保持するユニットです。
 
===== 入出力装置 =====
たとえばオペレーティングシステムの心臓部である[[カーネルの構造と機能|カーネル部分]]、アプリケーションが使うライブラリ、あるいはシステムを運用する上で必要なコマンド群などなどがあげられます。どのソフトウェアどんな役割を担うのかの議論は後程しましょう。、アプリケーションが使うライブラリ、あるいはシステムを運用する上で必要なコマンド群などがあげられます。データベースを考えるとアプリケーションとしてのデータベースプログラムとその中に格納されアプリケージョンに利用されるデータから成り立ちます。この両者があってソフトウェアリソースとして提供されるデータベースとして意味をなします。多種多様なソフトウェアリソースがどのような役割を担うのかの議論は後ほどしましょう。
==== ヒューマンリソース ====
== オペレーティングシステムの潮流 ==
最近は、どんどんハードウェアが小型化し、また高性能になっていきます。時が立つにつれ、どんどんハードウェアが小型化し、また高性能になっていきます。例えば、デスクトップコンピュータ、いわゆるパソコンと呼ばれる機械の上位機種の計算スピードは、私がこの業界に入った1980 年半ばのスーパーコンピュータ並、あるいはそれ以上の性能をたたき出しています。例えば、2010 年のデスクトップコンピュータ、いわゆるパソコンと呼ばれる機械の上位機種の計算スピードは、私がこの業界に入った 1980 年半ばのスーパーコンピュータ並、あるいはそれ以上の性能を持っています。この文章を読んでいるこの瞬間では、2010年のデスクトップパソコンなど性能的に時代遅れになっているでしょう。
1990年当時から比較しても、エンジニアリングワークステーションと呼ばれていた数百万から一千万円くらいの価格だったコンピュータシステムよりも遥かに高速です。1990 年当時から比較しても、エンジニアリングワークステーションと呼ばれていた数百万から一千万円くらいの価格だったコンピュータシステムよりも遥かに高速です。<ref>RASPBERRY PI 2 MODEL B http://www.raspberrypi.org/products/raspberry-pi-2-model-b/ </ref><ref>Iridis-pi: a low-cost, compact demonstration cluster https://www.southampton.ac.uk/~sjc/raspberrypi/raspberry_pi_iridis_lego_supercomputer_paper_cox_Jun2013.pdf</ref>
現在のハードウェアとオペレーティングシステムの関係をハードウェアの歴史の変遷を踏まえて考えてみます。みなさんが使っているデスクトップのコンピュータに至る流れには2つの流れがあります。
 
==== 下から上への流れ ====
1976年ぐらいになると、Apple、Sol、Altairといった最も初期の頃のパソコンが作られてきます。この頃、Bill GatesとPaul AllenはAltair 8080 (メモリ4KByte版)用に大型汎用機上で動いていたBASIC言語を移植しMITSへライセンスします。翌、1977年には [[Steve Wozniak]] とSteve JobsがApple Jobs <ref> スティーブ・ジョブズ 1 (講談社+α文庫) ISBN 4062816148 </ref>がApple Corporationを設立し、また同じくしてBill Gates とPaul Allenは正式にMicrosoft companyを設立します。
Apple や Sol や Altairのような初期のパソコンが作られます。下がスミソニアン博物館にある世界初のパソコンの写真です(著者撮影)。Altairのような初期のパソコンが作られます。スミソニアン博物館にある初期のパソコンたちの写真です。
[[image:IMG_2551.JPG|thumb|Homebrew computer club ]]
[[image:IMG_2548IMG_2551.JPG|thumb|Apple220px|Homebrew computer club ]]
[[image:IMG_2549IMG_2548.JPG|thumb|Sol220px|Apple]]
[[image:IMG_2549.JPG|thumb|220px|Sol]] [[image:IMG_2547.JPG|thumb|220px|Altair]]
このように下から上へ向かうトレンドが、まず1つあります。
 
==== 上から下への流れ ====
高価なハードウェア上でもっと汎用的にプログラムを動かすために作られたシステムが1964年に作られたIBM S/360です。ここで始めて今日的なオペレーティングシステムが作られます。
汎用機という言葉は、この「汎用的にプログラムを動かすことができるシステム」という所から来ています。
  [[image:NASAComputerRoom7090.NARA.jpg|left|thumb|300px| 1962年にNASAで使われていた IBM 7090 の写真(NASAサイトより)<ref>NASA の著作権ポリシー http://www.jsc.nasa.gov/policies.html#Guidelines</ref>]]
しかしながら、「パッケージを購入した時にバンドルされているアプリケーション群が最小限のセットなので、これがオペレーティングシステムである」という誤解この「パッケージを購入した時にバンドルされているアプリケーション群が最小限のセットなので、これがオペレーティングシステムである」という誤解
<ref>
[http://ja.wikipedia.org/w/index.php?title=%E3%82%AA%E3%83%9A%E3%83%AC%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0&oldid=29875236 日本語版wikipedia]ではウェブブラウザや時計などのアクセサリーも広義のオペレーティングシステムだということを書いていますが、そんなことをテストに書いて点数をくれる先生は極めて少数派でしょう。
は一般には多いようです。
もしこれが正しいとするならば、これではゲームのソリティアもオペレーティングシステムに含まれることになるので、やはり奇妙な結論と言えます。
ちなみにこの「最小パッケージ」とはGNUこのような表現での「最小パッケージ」とはGNU/Linuxのディストリビューションにあたるもので、このオペレーティングシステムの定義を採用するとなると、世の中にはおびただしい数のオペレーティングシステムの種類Linuxのディストリビューションのデフォルトイントール環境にあたるもので、このオペレーティングシステムの定義を採用するとなると、世の中にはおびただしい数のオペレーティングシステムの種類<ref> オープンソース系オペレーティングシステムののディストリビューションを紹介する https://distrowatch.com には実に様々なディストリビューションが紹介されています。</ref>が存在することになります。が存在することになります。このような定義を用いると、このような奇妙な結果が導き出されてしまうことになります。
への入力するという働きをします。ファイル(デバイスファイルと呼びます)
/dev/tty
というのは、端末を抽象化したものです。というのは、自端末を抽象化したものです。いくつも端末のウインドウを開いて別々のシェルで行っても、ほかの端末には表示せず、自分の端末のみに出力します。
<syntaxhighlight langpre class="bash">
% echo "Hello" > /dev/tty
Hello
</syntaxhighlightpre>
===== VFSからデバイスドライバまで =====
[[File:Filesystem-layer-1.png|thumb|right|400px|File System Layer]]
ファイルシステムをさらに抽象化するLinuxのファイルシステムを紹介しましょう。[[ファイルシステム]] をさらに抽象化するLinuxのファイルシステムを紹介しましょう。
ファイルを書き込む説明で「ハードディスクに書き込む」という表現をみたことはないでしょうか。
目の前にあるパソコン本体のみを考えるならば、このモノに書き出すというので説明は十分なのかも知れませんが、ファイルを書き込む・読み込むというのはもっと抽象的な動作をします。
Linuxのファイルシステムは、上位にVFS (Virtual File System)が存在し、その下に、FAX、ext4、JFS、XFS、NFS、その他のファイルシステムをもち、さらにその下にバッファキャッシュがあり、さらに下にデバイスドライバがあるといった、何重もの層を重ねる形になっています。が存在し、その下に、FAT、ext4、JFS、XFS、NFS、その他のファイルシステムをもち、さらにその下にバッファキャッシュがあり、さらに下にデバイスドライバがあるといった、何重もの層を重ねる形になっています。
プログラムは、Linuxのファイルを扱っているだけで、その下がFATのファイルシステムやJFSのファイルシステムであるか、あるいはネットワーク経由でファイルシステムを使うことができるNFSなのかを知らなくても利用することが可能です。
<blockquote>
<syntaxhighlight langpre class="bash">
% sync;sync;sync
</syntaxhighlightpre>
sync
----
[[目次]]へ
 
[[Category:UNIXオペレーティングシステム|1]]