きほん‐ソフト【基本ソフト】
読み方:きほんそふと
オペレーティングシステム
【英】Operating System, OS
オペレーティングシステムとは、コンピュータを制御し、アプリケーションソフトなどがコンピュータ資源を利用可能にするためのソフトウェアのことである。「OS」と略されることが多い。
オペレーティングシステムは、入出力の制御、メモリやハードディスクなどのハードウェアの管理、プロセスの管理といった、コンピュータの基本的な管理・制御を行っている。アプリケーションソフトウェアは、オペレーティングシステムが提供する機能を利用して動作する。
コンピュータのユーザーインターフェースがCUIであるかGUIであるか、プロセス管理方式はシングルタスクかマルチタスクか、また、ファイルシステムやネットワーク管理には何を採用しているか、といった事柄は、オペレーティングシステムによって規定されている。アプリケーションソフトは、オペレーティングシステムが提供するユーザーインターフェースを共通で利用することができるため、基本的に統一された操作方法・操作感が提供できる。
PC向けのオペレーティングシステムの代表的な製品としては、Windows、Mac OS、UNIX、Linuxなどを挙げることができる。中でもWindowsは、一連のシリーズ(Windows系OS)を合わせると市場の90%以上のシェアを持つといわれている。
なお、オペレーティングシステムはハードウェアを管理するためのものであるため、基本的に一つのマシンに一つだけ搭載できる。ただ、仮想的に他のオペレーティングシステムの機能や動作を再現するためのソフトウェアを利用することによって、例えばWindowsマシン上でUNIXの環境を利用する、といったことも可能となる。
オペレーティングシステムは、PCだけでなく、サーバーやスーパーコンピュータ、PDA、携帯電話、デジタルカメラ、産業用機械や生活家電に至るまで、さまざまなコンピュータ機器に搭載されている。
オペレーティングシステムの種類のいくつかは、バージョンや派生といった観点から系統だててWindows系OS、UNIX系OS、Linux系OS、Solaris系OS、BSD系OSなどに分類されることがある。また、汎用機やワークステーションなど、特定のハードウェア専用のオペレーティングシステムが開発・搭載されることも珍しくない。また、Linuxは、オープンソースソフトウェア(OSS)として公開されておりカーネルの安定性にも優れていることから、携帯電話や組み込み機器などに利用されることも多い。
参照リンク
Microsoft Windows ホーム ページ
Mac OS X
The UNIX System - (英文)
日本の Linux 情報
システムソフトウェア
システムソフトウェア(英: system(s) software)は、電子機器類(コンピュータも含む)の基本的な制御や管理を行うためのソフトウェア[1]。 コンピュータのハードウェア管理や制御などを行うソフトウェア全般をまとめた総称。システムプログラムとも。対比される用語・概念はアプリケーションソフトウェア(応用ソフトウェア)。類似の用語には「基本ソフトウェア」「システム制御ソフトウェア」などもある。
1960年代から使われるようになった用語であり[2]、何を「システムソフトウェア」と呼ぶかは、電子機器の種類やそのメーカーによって異なっており[1]、また時代によっても変化してきており、その境界は明確ではないが、一般論として言えば、ファームウェアやオペレーティングシステム(OS)、ミドルウェアなどの総称として使われており[1]、機器によってはそれらを組み合わせたものもそう呼ばれる[1]。たとえばデバイスドライバ、またプログラミング言語の処理系(つまりコンパイラやインタプリタなど[3])もそう分類されることは一般的である。とはいえ、PCなど汎用コンピュータ製品では「OS」や「ファームウェア」などとひとつひとつ区別をはっきり付けることが多いため(多くなってきたため)[1]、PCに関してはこれらをまとめてシステムソフトウェアと呼ぶ機会は少なくなっている[1]。(その結果、近年では)テレビ、家庭用ゲーム機など、コンピュータを応用したデジタル機器でよく用いられる用語となっている[1]。
概要
通常、各アプリケーションプログラムを稼働させるための、よりシステム(ハードウェアなど)に近い、共通的なソフトウェア・プログラムが、システムソフトウェアと呼ばれている。しかしその範囲は、時代やシステムや観点によっても異なる。
初期のコンピューターや、一部の組み込み機器、専用機器などでは、アプリケーションプログラムとシステムソフトウェアは明確に分離されていない。オペレーティングシステムが登場した後でも、当初はUI、マルチタスク、ネットワーク、ライブラリなどの機能は、アプリケーションプログラムの領域であった。
現在のオペレーティングシステムでも、付属するゲームなどは製品上はオペレーティングシステムの一部だが、技術的にはアプリケーションプログラムである。狭義にはオペレーティングシステムの中でもカーネルがシステムプログラムとされるが、ユーザーインターフェースである各種シェルや、ネットワーク機能なども含める場合もある。また個々のハードウェア用のドライバーは、オペレーティングシステムに付属する場合、ハードウェアまたはアプリケーションソフトウェアに付属する場合、単体販売される場合もある。更にミドルウェアが存在する場合は、オペレーティングシステムの観点からはアプリケーションプログラムの一種であるが、ミドルウェア上のアプリケーションプログラム(ユーザープログラム)の観点からはミドルウェア自体も一種のシステムプログラムである。同様に各種のユーティリティソフトウェアも、オペレーティングシステムから見れば単なるアプリケーションソフトウェアだが、ユーザー(人間)から見ればシステム制御系のものも存在している。
マイクロソフト社に対する独占禁止法訴訟では、ウェブブラウザ(Internet Explorer)がオペレーティングシステム(Microsoft Windows)の一部かどうか、分離不可能かどうかが議論となった。
システムプログラミング
システムプログラミング(英: System programming)は、システムソフトウェアをプログラミングする行為を指す。アプリケーションソフトウェアのプログラミングとの主な違いは、ハードウェアとの関わりが大きい点である。
以下では、オペレーティングシステムやデバイスドライバの開発におけるシステムプログラミングについて述べる。
- プログラマはハードウェアやその他のシステムの特徴を前提として、それらを利用してコードを作成する。例えば、そのハードウェアで効率がよいとわかっているアルゴリズムを採用したりする。
- システムプログラミングでよく使用されるプログラミング言語のことをシステムプログラミング言語という。システムプログラミング言語の特徴には、以下のような共通点がある。
- 計算資源に制限のある環境で動作可能である。
- 効率がよく、実行時オーバーヘッドが小さい。
- ランタイムライブラリが非常に小さいか、全く存在しない。
- メモリアクセスや制御構造を直接制御できる。
- プログラムの一部を直接アセンブリ言語で書くことが出来る。
システムプログラミングはアプリケーションプログラミングとかなり異なるため、プログラマはそれぞれの領域に特化する傾向がある。
高い実行効率が求められるため、プログラマーにはアルゴリズムとデータ構造に関する深い知識が要求されることもあるが、資源の制約などで高度なアルゴリズムやデータ構造が使えないという縛りの下でのプログラミングが必要なこともある。
システムプログラミングでは、プログラミングに利用できる道具が制限されることが多い。ガベージコレクションは一般的ではないし、デバッグが困難な場合もある。ランタイムライブラリはあったとしても貧弱で、あまりエラーチェックをしない。このような制限があるため、モニタリングやデータロギングといった技法が使われることが多い。オペレーティングシステム(特にカーネル)はそのようなロギングを多用している。
古くは、システムプログラマは例外なくアセンブリ言語を使っていた。高水準言語をシステムソフトウェアに使った初期のものとしては、バロース B5000のALGOL、MulticsのPL/Iがある。1960年代後半から、BLISS、BCPL、C言語などが使われるようになり、UNIXの普及もあって1980年代にはそれが一般化した。macOSのI/O Kitドライバなどでは、Embedded C++ が使われることもある。
21世紀に入ると、セキュリティの重要性が否応にも増していることから、型システムによってより強い安全性が保証されたプログラミング言語でシステムソフトウェアを書くことも、研究レベルでは進んでいる。
オペレーティングシステムやネットワーク関連の実装ではシステムプログラミングが必要となる(例えば、仮想記憶を実装する場合やデバイスドライバを実装する場合など)。
システムコールを用いるプログラミング、の意味でのシステムプログラミング
現在では多くの場合に「システムプログラミング」とは、オペレーティングシステムの提供しているシステムコールを利用するプログラムの作成の意味としても使われる。
- Marc J. Rochkind:「UNIX システムコール・プログラミング」、アスキー出版局、ISBN 4-87148-260-X(1987年11月1日)。
- 冨永和人、権藤克彦:「例解 UNIX/Linux プログラミング教室 システムコールを使いこなすための12講」、オーム社、ISBN 978-4-274-22210-8 (2018年4月15日)。
- 羽山博、垰井正雄:「Linuxシステムプログラミング」、オーム社、ISBN 978-4-274-07972-6 (2004年7月20日)。
- 篠山学:「システムプログラミング入門 実行しながら理解するLinux OSのしくみ」、森北出版、ISBN 978-4-627-85551-9 (2020年10月29日)。
- 武内覚:「Linuxの仕組み カーネルを知ってステップアップ」、技術評論社、ISBN 978-4-297-13148-7 (2022年10月29日)。
関連項目
脚注
外部リンク
「基本ソフト」の例文・使い方・用例・文例
基本ソフトと同じ種類の言葉
- 基本ソフトのページへのリンク