OSとは何か?仮想環境とは?

OSとは??

OSはオペレーションシステム(Operating System)を略したものですが一体何なのでしょう。

辞書でOSの定義を確認すると

オペレーティングシステムとは、コンピュータを制御し、アプリケーションソフトなどがコンピュータ資源を利用可能にするためのソフトウェアのことである。「OS」と略されることが多い。

オペレーティングシステムは、入出力の制御、メモリやハードディスクなどのハードウェアの管理、プロセスの管理といった、コンピュータの基本的な管理・制御を行っている。アプリケーションソフトウェアは、オペレーティングシステムが提供する機能を利用して動作する。

ー IT用語辞典バイナリ

要は、「コンピューターの内部で動作してハードウェアとアプリケーションを管理し、
私たちユーザーが利用しやすいようにしてくれるソフトウェア」
です

…いや、ハードウェア??ソフトウェア???なので一つ一つの言葉の定義をみていきましょう

  • ハードウェア
    モニターやキーボード、マウスなど目に見える物理的なものそのもの
  • ソフトウェア
    コンピューターを動かす目には見えないプログラム、人間に例えると神経のように目には見えないが根幹をなすもの
  • アプリケーション
    OS上にインストールして利用するソフトウェア全般、ユーザーが何らかの作業をするときに起動するもの

これをOSの定義にあてはめると

「OSはコンピューターの内部で動作して、キーボードなど目に見える物理的なものと
ユーザーが何らかの作業をするときに起動するものを管理し、
私たちユーザーが利用しやすいようにしてくれている根幹となる目に見えないプログラム」 

なんとなくOSがどんなものか理解できたでしょうか?
私たちがパソコンを使っているときに当たり前に操作していることは
実はOSが簡単に操作できるように管理してくれているのです。
パソコンはOSがなければ一般人にはただの金属の塊になってしまいます。

主なOSの種類

  • Windows
    Microsoftが開発したOS,世界でもっともユーザーが多い
  • MacOS
    Apple社が開発したOS
  • Linux
    無料で使えるOS,誰でも改良することができる

Windowsはパソコンの名称だと思っていた人もいるんではないでしょうか…(私はそう思ってました)
Windowsのパソコン買ったー!などよく耳にしますが、パソコン自体がWindowsなのでなく、
そのパソコンはWindowsというOSがインストールされたパソコンということになります。


パソコンについてメインに話してきましたがスマートフォンにもOSはインストールされています。

  • iOS
    Apple社がMacOSをスマートフォン用に改良したOS

  • Android
    Google社が無償で提供しているOS

OSの主な役割

OSが行う主な機能を5つ説明します。
1. タスク機能(タスク管理)
アプリケーションを同時に2つ、3つ起動できる
またタスクを行う順番などを管理する
2. メモリ管理
タスクにメモリを割り当てる、タスク終了後のメモリの解放
3. ハードウェア管理
キーボードやマウスなどハードウェアからの入力、またそれらへの出力をする際に発生する作業を管理
4. ファイル管理
ファイルに名前を付けたり、書き込んだりなどのファイルに関する全般の管理
5. APIの提供
API(Application Programming Interface)と呼ばれるソフトを作るときに利用できる共通の機能を提供する

OSはこれらの機能を果たしながら、私たちにコンピューターを利用しやすい環境を与えてくれています。

仮想環境と物理環境

今までパソコンにはOSがインストールされているという話をしてきました。

ではWindows搭載のパソコンでLinuxを使いたくなったときはどうすればいいのでしょう。
デュアルブートという仕組みを使えば一台のパソコンに2つの異なるOSを導入することが出来ます。(MacOSの場合「Boot Camp」と呼ぶ)
マルチブートという仕組みでは2つ以上の複数のOSをインストールし起動時に選択することができます。

しかし、これらはあくまで排他的な方法であり、インストールこそはできますが、使用は一つのOSのみで、起動は同時にすることは出来ません。
仮想化という技術を用いれば、一つのパソコンの上に複数のOSをインストール、そして複数同時に起動させることができます。

このように複数のOSが起動できる環境を仮想環境、一つしか起動できない物理環境と呼びます。

終わりに

プログラミングを学ぶにあたり、コンピューターの土台となるOSの理解は避けては通れない道になっていきます。
仮想化など技術についても開発には必要になってくる技術なので、基本的な知識は身につけておくと、これからの可能性が広がるかもしれません。