パソコンでのオペレーティングシステムの役割

オペレーティングシステム

こんにちわ。

 

コンピュータ用のオペレーションシステムは、コンピュータという箱を動かすためには必要なものです。

その発展の過程については、大型コンピュータやオフコン、そしてパソコンそれぞれ異なる進化をしてきました。

 

とにかく、オペレーティングシステムってこれまでどんなものがあったか列記してみる
こんにちわ。 パソコンですが、ソフトウェアがなければただの箱ですよね。 そんなソフトウェアの中核をなすのがオペレーティングシステム。 今回は、そんなオペレーティングシステムについて、過去を簡単に振り返ってみ...

 

 

今回はパソコンにおいてのオペレーティングシステム(OS)の持っている機能や役割について簡単にまとめてみました。

 

 

スポンサーリンク

あらためてオペレーティングシステムとは

 

オペレーティングシステムは、コンピュータのオペレーション(操作・運用・運転)のために、ソフトウェアの中でも基本的、中核的位置づけのシステムソフトウェアのことを言います。

 

オペレーティングシステムは通常、ユーザーやアプリケーションプログラムとハードウェアの中間に位置して、ユーザーやアプリケーションプログラムに対して標準的なインターフェースを提供します。

 

また、ハードウェアなどの各リソースに対して効率的な管理を行う役割を果たしています。

 

ですが、実際にはOSとハードウェアの間にはBIOSと呼ばれるファームウェアなども存在します。

また、OSについてもタスク管理やメモリ管理など特に中核的な機能の部分をカーネルと呼び、それ以外の部分と区別されています。

 

そして、最近のOSの主な機能は補助記憶装置管理、メモリ管理、プロセス管理、ユーザインタフェース、ネットワークなどで構成されています。

 

 

 

よく聞くAPIとあまり聞かないABI

 

OSの重要な働きの一つにアプリケーションソフトウェアを動かすということがあります。

 

このためのインターフェースにAPI(アプリケーション・プログラミング・インタフェース)とABI(アプリケーション・バイナリ・インタフェース)というのがあります。

 

OSのカーネルはシステムコールと呼ばれる呼び出し命令でアプリケーションにサービスを提供しますので、これらシステムコールによって対応するAPI/ABIを提供するようになっています。

 

APIはプログラミングのためのインターフェースで、プログラミング言語からのライブラリ呼び出しの仕様といったプログラムを作成する際の規則を構成しています。

「~のAPIが。。。」って話は、どこかで聞かれたことがあるかもしれません。

 

その一方でABIはコンパイルされたソフトウェアがOSの機能を呼び出す際のインタフェースで、プロセスが動作する際の規則を構成しています。

プログラミング言語を使ってアプリケーションを作っているエンジニアでも、あまり聞かない用語ですね。

 

 

カーネルの役割

 

カーネルはBIOSとデバイスドライバの助けを借り、ハードウェアデバイスの基本的制御を提供する役割があります。

OSのコアな機能の部分となります。

 

カーネルの主な役割にプログラムの実行があります。

アプリケーションプログラムの実行にあたって、OSのカーネルはプログラムの実行単位であるプロセスを生成します。

プログラムは人から見た場合の1つのまとまった機能のことを言いますが、プロセスはパソコンから見た1つの機能のまとまりのことをいいます。

なので、プロセスは多くの場合、プログラムをいくつかの機能に分けた1つと言えます。

 

プロセスの生成にあたっては、メモリ空間などの資源の割り当てや、マルチタスクシステムでのプロセスへの優先度の割り当て、メモリへのロード、アプリケーションプログラムの実行開始といった仕事行われます。

 

また、カーネルはプログラムの実行と同時に割り込み処理の実行も行います。

 

割り込みが発生すると、実行中のプログラムを一時停止させ、状態を退避し、その割り込みに事前に割り当てられている処理を実行するような動作をします。

割り込みはコンピュータのハードウェアが発生させる場合もありますし、実行中のプログラムが発生させる場合ももちろんあります。

 

他にもカーネルには、レジスタ、キャッシュメモリ、RAM、最も低速なディスク装置などの間でメモリ割り当てと解放、主記憶と二次記憶との間でのスワップなどを制御するメモリ管理をしていたり。

 

相対的にアクセス頻度が低いメモリを一時的にディスクなどの二次記憶装置に退避させ、主記憶を他のプログラムのために空けるスワッピングと呼ばれる動作を行い、あたかも実際に搭載しているよりも多くのRAMを使用しているかのような感覚でコンピュータを使用することができる仮想記憶管理をしていたり。。。

 

それ以外にも、マルチタスクを実現するプロセス管理、ファイルシステムを管理するディスクアクセス管理、ハードウェアとのインターフェースを実現するデバイスドライバの管理などの機能を実現しています。

 

 

 

ネットワーク

 

多くの場合はTCP/IPプロトコルをサポートしています。

初期のころはネットワークはモデムを使って電話回線で行われていましたが、現在では、TCP/IPを中心とした通信が主流となっています。

通信プロトコルとしては、トランスポート層までをカーネルが役割分担し、プレゼンテーション層より上はシステムプロセスとして実装されるのが一般的だそうです。

 

これらネットワーク機能により、異なるOS間でネットワークを形成したり、ファイル、プリンター、スキャナーなどのリソースを共有することができます。

 

 

ユーザーインターフェース

 

個人が使用するパソコンではユーザインタフェースが必要とされます。

ユーザインタフェースは、キーボードやマウスやクレジットカード読み取り機といった入力デバイスからのデータを取得するのにOSを介する必要がありますし、モニターやプリンターといった出力機器にプロンプトやメッセージを出力するのにもOSを介する必要があります。

 

また、最近のOSは一般にGUIを標準で持っています。

 

Windows やMac OSはカーネルとGUIが密接に関係していますが、LinuxなどのOSではユーザインタフェースはモジュール化されていて、任意のGUIをインストールできるようになっています。

 

概ね、今のパソコンのOSはこういった機能で成り立っています。

 

 

最後までおつきあい、ありがとうございました。

 

コメント

タイトルとURLをコピーしました