TL;DR
コンピュータのオペレーション(操作・運用・運転)を司るシステムソフトウェア。ハードウェアを抽象化し、アプリケーションに統一的な使い方を提供する。
なぜ必要か
Wikipedia によると、OS がハードウェアの統一的で抽象化された使い方を提供するので、アプリケーションの開発が容易になる。
仕組み
OS の中心はカーネルで、ハードウェアとアプリケーションを結び付ける。ハードウェアの基本的な制御や、メモリなどの資源の管理を担う。アプリケーションはユーザモードで動き、ハードウェアにはカーネルを通してアクセスする(ユーザ空間)。
Wikipedia では、主な機能として次のものを挙げている。
- プロセス管理: プログラムの実行時にプロセスを作り、メモリなどの資源を割り当てる。複数のプロセスの実行順序は、優先度とスケジューラで決まる
- メモリ管理: ディスクと RAM にばらばらに確保した領域を、プログラムには連続して見せる(仮想記憶)。プログラムごとのメモリ領域も保護する
- ファイルシステム: ディスク上のデータをファイルとして保存し、名前、属性、ディレクトリの階層で管理する
- デバイス管理: ハードウェア固有の処理をデバイスドライバが担う