どうもこんにちは!
サバ缶(@tech_begin)です。
身近にあるパソコンは、OSというシステムによって支えられています。
このOSについて少しでも理解しておけば、突発的な不具合や開発に役立つこともあります。
この機会に一歩リードしてみましょう!🚀
OS(オペレーティングシステム)とは
OSは、ハードウェアとソフトウェアの制御を行い、ユーザの疎通(入出力)を行うソフトウェアのことです。
OSは多くの種類があります。
- Windows
- MacOS
- Unix
- Linux
- iOS
- Android
一つ一つの特徴を、歴史と共に紐解いていきましょう。
OSの種類と特徴
Unix
AT&T社(アメリカの情報通信業大手。日本でいうNTT)のベル研究所で開発されたOSです。
Unixは、はじめに教育機関で広がりを見せました。
そして自前のツールをユーザが作成し、それを同僚で共有するという流れが定着しました。
当初、シングルタスクOSという「一度に一つのプログラムしか実行できない」というものでした。
つまり、今で言うと「Web検索しながら、テキストエディタが開けない」と言うことです。
AT&Tという通信事業大手が開発したこともあり、やはり利益のことを考えなければなりません。
- AT&T社と契約した会社が、Unixを搭載したコンピュータを販売していた。
- 搭載しているOSも、Unixを改変した派生版が出回っていた
- AT&T社としては、Unixを名乗って欲しくない
Unixが教育機関で広がりを見せた際、AT&T社は「これは儲かる」と目をつけました。
- Unix純正と記載があれば儲かるだろう
AT&T社と契約を結んだ会社のみが「自社のOSはUnixである」と宣言できるようになりました。
契約を結んでいない場合「Unix互換OS」と呼ばれるようになります。
そうして多くの企業がUnixコンピュータを製造してシェアを取りに行こうとしました。
→そこでWindowsが出し抜き、標準OSの座を奪いました。
Linux
Unixを改変して開発されたOSです。
LinuxはOSSであり、多くの有志が集い開発を進めています。
Linuxから派生したOSで有名なのは、CentOS、Ubuntuなどがあります。
GUI(グラフィックユーザーインターフェース)で初心者でも扱いやすい派生OSが広く普及しました。
Linux開発者のリーナス・トーバルズは、開発当時、大学生でした。
大学の授業で使っていたUnixの機能に不満を持ち、独自に少しずつ改変していきます。
そして開発にのめり込み、いつしか自作した部分だけで動作するOSにまでなっていました。
このままだと「Unixをベースにした派生版になってしまう」と著作権問題を恐れ、いっそのこと独立した1つのOSを作ってしまおうと作成したのがLinuxです。すごい。
現在、LinuxはOSSの代表格として有名ですが、元々OSSとして考えていなかったそうです。
リーナス・トーバルズは当時大学生。したがって、勉強用として開発されたOSだったのです。
- たまたま出来が良かったから、多くの人に見てもらいたい
- 私が作ったOSのソースコードに、アドバイスして欲しい
この考えのもと、ソースコードを一般公開します。
一方、Unixはライセンス契約の関係上、自由に改変したり公開することが制限されていました。
それに対してLinuxは全てオープンな状態でどんどん改良が重ねられます。
そして開発開始から2年で実用に耐えられるバージョン1.0が公開されました。
現在では、サーバサイドでLinuxが広く利用されています。
実は、AndroidのOSも元はLinuxです。
世界中のスマホにLinuxが使われているのも、すごいですね。
Windows
Microsoft社が開発したOSです。
様々なコンピュータに搭載することができるため、各メーカーがWindowsを搭載したコンピュータを販売しています。
ですので、性能や大きさなど多くのコンピュータの中から自分に合ったものを選ぶことができます。
一般消費者向けに安価なOSを提供したり、サーバ向けのWindowsを提供したりと幅広く普及しています。
有償であるため、サポートも充実しています。
MacOS
Apple社が開発したOSです。
MacなどApple社製のコンピュータに標準搭載されているOSですね。
初めてGUI(グラフィックユーザーインターフェース)の環境を搭載したOSとして当時話題になりました。
GUIとは、アイコンやマウスカーソルなどを視覚的に操作することです。今では当たり前ですが、これが当時画期的でした。
※WindowsはMacOSのパクリとも言われていますが……これはまた別の話😎
MacOSを利用したい場合は、MacbookAirなどのApple製のPCを購入する必要があります。
OSの機能
OSには6つの機能があります。
この機能を押さえておきましょう。
- タスク管理
- ジョブ管理
- メモリ管理
- データ管理
- 入出力管理
- ユーザ管理
タスク管理
タスク管理とは、実行中のプログラムを制御する機能のことです。
「タスク」とは、プログラムの実行単位のことで「プロセス」とも言います。
ですのでタスク管理は「プロセス管理」とも呼ばれます。
プログラムを実行するためには、CPUやメモリ、HDDの資源を割り当てる必要があります。
その割り当て作業をOSでは担っています。
また、プログラムの実行優先順位を管理しています。
Unixの話でも出ましたが、一度に1つしか実行できないことを「シングルタスク」と言います。
そして、一度に複数の処理を並行して実行することを「マルチタスク」と言います。
このマルチタスクの際に、タスク管理が必要になるわけです。
ジョブ管理
「ジョブ」とは、コンピュータに与える仕事の単位です。
ジョブは、複数のプログラムで構成されています。
イメージとして、「タスク(プロセス)」の集合体が「ジョブ」です。
- 買い物→ジョブ
- 以下、タスク
- 扉を開ける
- 扉を閉める
- 鍵を閉める
- お店に行く
- 商品を手に取る
- 会計をする
- 自宅に行く
- 鍵を開ける
- 扉を開ける
- 扉を閉める
ジョブ管理では、以下のような仕組みを持っています。
- スケジューラ
- ジョブの受付、選択、開始、終了を管理する
- スプーリング
- 処理速度の遅い周辺機器へのデータ出力が、アプリケーションを待たせないようにする仕組み
- HDDに出力データを書き込み、周辺機器の処理速度に合わせて少しずつ出力する仕組み
メモリ管理
ソフトウェアが動作するために必要となるメモリ領域を効率的に利用できるよう管理する機能です。
以下の画像のようなことを行います。
データ管理
ファイルの編成方法を管理しています。
ファイルの編成方法によって、アクセス効率や記憶効率が変わってきます。
- 順次アクセス
- 直接アクセス
- 動的アクセス
入出力管理
キーボードやマウス、プリンタなど周辺機器の制御や管理を行います。
これが「ユーザとコンピュータの疎通を担う」部分です。
ユーザ管理
コンピュータの基本的な考え方として、「権限」と言うものがあります。
権限Aを持っている人は、コンピュータの設定を変更できる
権限Bを持っている人は、自分の設定しか変えられないなどあります。
この権限を管理するために、ユーザを分けています。
サーバで考えてみましょう。
新卒未経験の人に、ユーザ数100万人のサーバを全て触れると……危ないですよね。
個人情報が見えてしまったり、誤ってユーザ情報を削除してしまったりする可能性があります。
故意でないにしても危険性がありますね。
なので、ユーザによって権限を分けて、新卒未経験の人は「このファイルを変更する権限しか与えない」、プロジェクト管理者は「個人情報が見えない、サーバの設定を変更できる権限を与える」ように設定することができます。
これをユーザ管理と言います。
まとめ
OS(オペレーティングシステム)は、ハードウェアとソフトウェアの操作を制御するためのシステムです。
オペレーティング(operating)は、「運用、操作」などの意味があります。その名の通りのシステムですね。
OSには様々な種類があり、操作方法も様々です。
開発現場ではOSに依存したツールなどもあるので、環境構築の際は考慮しましょう。
もしこの記事の内容について気になることがあれば、お気軽にTwitterでご連絡ください👋