人工知性を作りたい

私が日々、挑戦したことや学んだことなどを紹介していく雑記ブログです。 (新しいAI技術HTM, 専門の音声信号処理, 趣味のアニメ等も書いてます。)

OSの役割とは? ミドルウェア・ソフトウェアとの違い!【基本情報技術者になろう!】

f:id:hiro-htm877:20190619230445j:plain



 

f:id:hiro-htm877:20190601202549p:plain

 

 

 

  

 

 

 

現在、私は秋の基本情報技術者試験に向けて勉強中です。

その中で、私が得た知識をまとめて記事にしています。

本記事のテーマ

基本情報技術者になろう!】

・OSとは、

・ソフトウェアの分類

・OSによる操作性の向上

OSの仕事 

まず、OSとはオペレーティングシステム(Operating System)の略です。

コンピュータの基本動作を実現する「基本ソフトウェア」です。

主な仕事:

・アプリケーションの管理

・メモリの管理

・ファイルの管理

・ハードウェアの管理

・タスク管理(ワープロなどのアプリに実行機会を与える)

OSは各種ハードウェアやデータの入出力を管理してワープロ表計算のようなアプリケーションソフトが動く土台を作ります。

ワープロソフト」や「表計算ソフト」を使いたいと言っても、そもそもコンピュータをコンピュータとして使えるようにしなければなりません。

その役割を担っているのがOSです。コンピュータの基本的な機能を提供するのがソフトウェアで、基本ソフトウェアとも呼ばれます。

 

ソフトウェアの分類

ソフトウェアは「基本ソフトウェア」、「ミドルウェア」、「応用ソフトウェア」の3つがあります。また、大きく2つに分けると「システムソフトウェア」と「応用ソフトウェア」です。

・システムソフトウェア

基本ソフトウェア:OSや言語プロセッサ、各種サービスプログラムなど

ミドルウェア  :データベース管理ソフトウェアや各種開発支援用ソフトウェア

・応用ソフトウェア

応用ソフトウェア:ワープロ表計算などの各種アプリケーションソフト

 

f:id:hiro-htm877:20190702203326j:plain

ミドルウェアというのは、ある特定の用途に特化して、基本ソフトウェアと応用ソフトウェアとの間の橋渡しをするためのソフトウェアです。

 

基本ソフトウェアとは(3つに分けられる) 

基本ソフトウェアは3つに分けられます。

制御プログラム

ハードウェアを管理して、応用ソフトウェアやミドルウェアから、コンピュータが効率的に利用できるようにと、縁の下の力持ちとして働くソフトウェアです。

一般にこのプログラムのことをカーネルと呼びます。カーネルには、メモリ管理やプロセス管理などに機能を限定したマイクロカーネルと、多くの機能を網羅したモノリシックカーネルがあります。

言語処理プログラム(言語プロセッサ)

C言語やJaveなどのプログラミング言語で書かれたプログラムを、コンピュータが理解できる機械語に翻訳するプログラムです。

サービスプログラム

コンピュータの機能を補う、補助的なプログラムのことで、ユーティリティとも呼ばれます。例えばファイル圧縮プログラムなどが該当します。

 

ちなみに、OSを広い意味で捉えると「基本ソフトウェア」ですが、狭義の意味に限定すると「制御プログラム」となります。

 

代表的なOS

Windows(ウィンドウズ)

現在最も広く使われている、Microsoft社製のOSです。

GUI(グラフィックユーザインタフェース)といって、マウスなどのポインティングデバイスを使って画面を操作することでコンピュータに命令を伝えます。

Mac OS(マック オーエス

グラフィックデザインなど、クリエイティブ方面でよく利用されているApple社製のOSです。GUIを実装したOSの先駆けとしても知られています。また、Youtuberのかたが動画編集のためによく使っています。プログラマーも使っている人が多い気がします。

MS-DOS(エムエスドス)

windowsの普及以前に広く使われていたMicrosoft社製のOSです。CUI(キャラクユーザインタフェース)といって、キーボードを使って文字ベースのコマンドを入力することで、コンピュータに命令を伝えます。

UNIX(ユニックス)

サーバなどに使われることの多いOSです。大勢のユーザが同時に利用できるように考えられています。

Linuxリナックス

UNIX互換のOSです。オープンソース(プログラムの元となるソースコードが公開されている)のソフトウェアで、無償で利用することができます。

 

※ちなみに筆者は研究ではLinux、家ではMac OS、資料作成(パワポ、ワードなど)ではWindowsを使っていました。

 

OSによる操作性の向上

コンピュータを使うためには、そのためのインタフェースが必要となります。

例えば、次の画面を見てください。私のMac bookの1画面です。

MacGUIで出来ることの例:

・実行中のアプリケーション

・アイコンをダブルクリックするとアプリケーションが実行される

・タスクバーから実行したいアプリを選択できる(お気に入り機能)

など

f:id:hiro-htm877:20190702202744p:plain

このOSでは、GUI(Graphical User Interface)という、「画面やアイコンやボタンを表示して、それを視覚的に操作することで命令を伝える操作方式」を採用しています。

OS(Operating System = 機械操作システム)という名が示すように、裏側の制御だけでなく、このような「コンピュータを操作するための表層的なインタフェース部分」も担当しています。

 OSとAPI(Application Program Interface)

ここでは、OSとAPIとの繋がりについて見ていきます。

OSは自身が管理することによって、ハードウェアの違いや入出力などをすべてブラックボックス化します。したがって、各アプリケーションが直接それらを意識することはありません。

そのためOSは、ハードウェアの利用も含めて、自身が持つ各種機能を、アプリケーションから呼び出せる仕組みを用意しています。このために設けられたインタフェースをAPI(Application Program Interface)と呼びます。

APIを利用してアプリケーションを作るメリット

・開発効率アップ

 APIを呼び出すただけで機能が使えるから、アプリケーションの作成が楽。

・操作性の統一

 見た目や基本的な動きが共通化されるから、操作に迷わない

・互換性の確保 

 ハードウェアが違ってもOSが同じなら無事に動く

 

 

以上でOSの役割、ミドルウェア・ソフトウェアの違い説明は終了です。

 

MS-DOSは私は知らなかったので個人的に勉強していて楽しかったです。

ソフトウェアはアプリをイメージできますが、ミドルウェアやOSは目には見えにくいのでやっぱりわかりにくいと思います。しかし、OS付近の技術を知ることでより効率的なプログラムが書けると思いますので、頑張って勉強していきましょう!

参考資料

・キタミ式イラストIT塾 基本情報技術者 平成31/01年