オペレーティングシステム
スマートフォンのOSおよびそのシェアは、2021年9月時点でAndroidが約72%、iOSが約27%である。Androidは広い意味でのLinuxの一種であり、Linuxのカーネルを一部改編し他のオープンソース・ソフトウェアを組み合わせたものである。
ノートPCやデスクトップPCのOSおよびそのシェアは、2021年時点でWindows 75.4%、macOS 15.93%、ChromeOS 2.59%、Linux 2.33%となっている。macOSはFreeBSDを基にしたUnix系のOSである。
スーパーコンピュータのOSは、2000年ころはUNIXが9割ほどを占めていたが、その後の10年間でそのほぼ全てがLinuxに置き換わり、2021年現在では世界のスーパーコンピュータのTOP500のほぼ100%がLinuxである。
組み込みシステムでは組み込みオペレーティングシステムと呼ばれるOSを用いる。小規模な組み込みシステムのなかには明確なOSを内蔵していないものもあるので曖昧な面もあるが、組み込みOSを搭載しているものに関しては2019年時点でのシェアでTRON(トロン)系がおよそ60%であり、24年連続トップを占める。TRON系のなかでもITRON(アイトロン)が最も普及している。TRON以外では、次いでPOSIX系つまりUNIX系、Linux類などである。米リナックスワークスのLynxOS(リンクスオーエス)、米ウィンドリバーのVxWorks(ヴイエックスワークスト)、米シンビアンのSymbian OS(シンビアン・オーエス)など。
このモデルでは、カーネルがあるプログラムに制御を渡すと、そのプログラムは時間を制限されることなく処理を行え、カーネルには自発的に制御を戻すことになっている。したがって、悪意あるプログラムやバグのあるプログラムがあると他のプログラムにCPU時間が割り当てられなくなり、無限ループに陥っている場合はシステム全体がハングアップする。
プリエンプティブ・マルチタスクでは、動作中のプロセスから任意の時点で制御を奪うことができ、全プログラムに所定のCPU時間を割り当てることが可能である。これを実現するためオペレーティングシステムはタイマ割り込みを使用し、所定の時間が経過したら割り込みを発生させてスーパーバイザモードに制御を戻させ、カーネルがスケジューラを呼び出す。
現代的オペレーティングシステムでは、プリエンプションの考え方をユーザーモード(アプリケーション)だけでなくデバイスドライバやカーネルコードに対しても適用し、リアルタイム性を向上させている。
ホームコンピュータなどのシングルユーザー・オペレーティングシステムでは、少数のよく評価されたプログラムしか使わないことが多く、協調的マルチタスクで全く問題ない。例外として AmigaOS は初期のバージョンからプリエンプティブ・マルチタスクを実現していた。Microsoft Windows で初めてプリエンプティブ・マルチタスクを実装したのは Windows NT だが、それが一般家庭向けに発売されるのは Windows XP からだった。
ディスクに格納したデータへのアクセスは、あらゆるオペレーティングシステムの中心的機能である。コンピュータはファイルという形でディスクにデータを格納する。ディスクの内容は高速アクセス、高信頼性、ディスク領域の利用効率などを考慮して編成される。このファイルをディスクに格納する方式をファイルシステムと呼び、それによってファイルに名前と属性が付与される。また、ディレクトリあるいはフォルダと呼ばれる構造を使い、ファイル群を階層構造(木構造)内に格納できる。
初期のオペレーティングシステムは一種類のディスク装置しかサポートしておらず、ファイルシステムも一種類ということが多かった。初期のファイルシステムは容量や性能が低く、ファイル名やディレクトリ構造の面で制約が多かった。そういった制約はオペレーティングシステム自体の設計上の制約を反映していることが多く、複数のファイルシステムをサポートするのもオペレーティングシステムの制約の観点から非常に困難だった。
より単純なオペレーティングシステムではストレージへのアクセス手段が限られているが、UNIXやLinuxなどのオペレーティングシステムでは仮想ファイルシステム (VFS) という機構をサポートしている。UNIXなどのオペレーティングシステムは様々なストレージデバイスをサポートしており、それらの仕様やファイルシステムとは独立した共通のアプリケーションプログラミングインタフェース (API) でアクセスできるようにしている。