Menu
Coddy logo textTech

OS(オペレーティングシステム)とは?

OS(オペレーティングシステム)とは、コンピュータのハードウェアを管理し、ほかのすべてのプログラムを動かすソフトウェアです。プロセッサ、メモリ、ストレージをプログラム間で分け合い、ファイル、ネットワーク、入出力の機能を提供します。Windows、macOS、Linux、Android、iOSはOSです。

執筆: Kevin Spektor, 共同創業者、CTO

更新日: 2026年9月24日

テキストエディタを開いた状態でキーを押してみてください。キーボードは電気信号を送り、OSの中のドライバがそれを読み取ります。OSはどのウィンドウが前面にあるかを判断してそのプログラムにキーを届け、エディタが文字を描きます。エディタ自身はキーボードと一切やり取りしていません。ファイルの保存、音の再生、Webページの読み込みも同じしくみです。プログラムが頼み、OSがハードウェアを使って作業をします。

OSの役割

OSにはいくつかの仕事があり、コンピュータ上のすべてのプログラムがそのすべてに依存しています。

  • プログラムの実行(プロセス管理)。 CPUコアが8つのノートPCでも、数百のプログラムやバックグラウンドサービスが動いていることがあります。OSのスケジューラはそれぞれに短い時間ずつコアを割り当て、1秒間に何度も切り替えるので、すべてが同時に動いているように見えます。
  • メモリの管理。 各プログラムには専用のアドレス空間が与えられます。プログラムが自分のものではないメモリを読もうとすると、OSがそれを止めます。Cではこれが有名なセグメンテーション違反です。
  • ファイルの保存。 ディスクは番号付きのバイトのブロックを保存するだけですが、OSはそれをフォルダと名前付きのファイルに変えます。抽象化の典型的な例です。この形式をファイルシステムと呼び、WindowsではNTFS、macOSではAPFS、多くのLinuxではext4が使われます。
  • ハードウェアとのやり取り。 ドライバがOSと各デバイス(グラフィックカード、Wi-Fiチップ、プリンタ、Webカメラ)の間を仲介します。
  • ネットワーク。 OSがTCP/IPを実装しているので、プログラムはネットワークカードについて何も知らなくてもサーバーに接続できます。
  • セキュリティとユーザー。 アカウント、パスワード、ファイルのアクセス権によって、誰が何を読み書きできるかが決まります。
  • ユーザーインターフェース。 デスクトップ、ウィンドウ、タスクバー、あるいはBashやPowerShellのようなテキストのシェルです。

カーネルとシステムコール

OSの中核はカーネルです。カーネルはハードウェアを完全に制御できる状態で動き、普通のプログラムは制限されたモードで動くので、デバイスに直接触れることはできません。何かが必要になると、プログラムはシステムコールを行います。「このファイルを開いて」「このバイト列を送って」「新しいプロセスを起動して」といった、カーネルへの依頼です。

多くの場合、使っている言語がシステムコールを包み込んでいるので、目には見えません。Pythonの open() や print() も、最後はカーネルの呼び出しになります。os モジュールを使うと、ほぼ直接システムコールを行えます。

プロセスIDとコア数はマシンによって変わりますが、最後の行は必ず File size: 23 bytes と表示されます。os.open はファイルディスクリプタを返します。これはカーネルが開いているファイルを管理するための小さな番号で、os.write はそこに23バイトを送ります。Cでも同じ依頼はほとんど同じ形になります。これらの関数はシステムコールを薄く包んだものだからです。

int fd = open("note.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);
write(fd, "saved by a system call\n", 23);
close(fd);

Linuxでは、strace python3 script.py でプログラムが行うすべてのシステムコールを見ることができます。

OSの具体例と種類

OS動く場所カーネル
Windows 11大半のデスクトップPCとノートPCWindows NT
macOSAppleのMacXNU (Darwin)
Linux(Ubuntu、Fedora、Debianなど)大半のサーバーとクラウドのマシン、一部のデスクトップLinux
Android世界の大半のスマートフォンLinux
iOSiPhoneXNU (Darwin)
ChromeOSChromebookLinux

こうした汎用のシステムのほかに、FreeRTOSやZephyrのようなリアルタイムOSがあります。家電、センサー、産業機械のマイコンで動き、決まった時間内の応答を保証します。多くの小さな機器では、1つの目的のために作られた組み込みシステムが動いています。

表からわかるように、1つのカーネルがまったく異なる製品を支えることがあります。AndroidとChromeOSはどちらもLinuxカーネルを使い、その上に独自のソフトウェアを載せています。iOSはmacOSとカーネルを共有しています。

プログラミングでOSが重要な理由

コンパイルされたプログラムは、1つのOS向けに作られます。Windowsの .exe は、同じコンピュータ上であってもLinuxではそのままでは動きません。ファイル形式もシステムコールも違うからです。ダウンロードページにOSごとのバージョンがあるのも、JVM、Node.js、CPythonのような実行環境が存在するのもこのためです。実行環境はOSごとに1回ずつビルドされるので、あなたのコードはOSごとに作り直す必要がありません。実行環境を参照してください。

それでも小さな違いは表に出てきます。次を実行して、別のOSを使っている友人の結果と比べてみてください。

LinuxとmacOSでは次のように表示されます。

Path separator: '/'
Line ending: '\n'
projects/notes/todo.txt

Windowsでは区切り文字が '\\'(バックスラッシュ1つ)、改行が '\r\n' になり、パスは projects\notes\todo.txt になります。/ を手で書かずに os.path.join(または pathlib)を使うことで、スクリプトは3つのOSすべてで動き続けます。

よくある誤解

  • 「LinuxはOSだ」 厳密には、Linuxはカーネルです。UbuntuのようなLinuxディストリビューションが、シェル、システムツール、パッケージマネージャ、そして多くの場合デスクトップを加えて、完全なOSにしています。日常会話ではどちらもLinuxと呼ばれます。
  • 「BIOSはOSの一部だ」 BIOSやUEFIのファームウェアはマザーボード上にあります。ハードウェアをチェックしてからディスクのOSを読み込み、それで主な仕事は終わりです。
  • 「デスクトップがOSだ」 デスクトップはカーネルの上で動くプログラムの1つです。サーバーは普通デスクトップなしで動き、テキストのシェルだけで操作されます。
  • 「アプリがハードウェアとやり取りしている」 普通のプログラムにはそれが許されていません。ファイルの読み込みも、ネットワークのパケットも、画面の1ピクセルも、すべてOSを通ります。アプリがクラッシュしても、普通はコンピュータ全体が道連れにならないのはこのためです。

次に読むもの

OSはいちばん下の層で、その上、あなたのコードとの間にあるのが実行環境です。メモリ保護がセグメンテーション違反を生み、バイトのページではOSがファイルとメモリに使う単位を説明しています。OSをテキストのシェルから操作するなら、ターミナルコースを試してみてください。

よくある質問

OSがなくてもコンピュータは動きますか?
動きますが、単純で用途が1つだけの機器に限られます。Arduinoボードに載っているようなマイコンは、OSなしでハードウェア上で1つのプログラムを直接動かします。汎用のコンピュータで複数のプログラムを動かし、ファイルを管理し、ハードウェアのドライバを使うにはOSが必要です。
代表的なOSを5つ挙げると何ですか?
コンピュータではWindows、macOS、Linux、スマートフォンやタブレットではAndroidとiOSです。世界で最も多くの機器で動いているのはAndroid、デスクトップやノートPCではWindowsが首位で、サーバーやクラウドのマシンの大半はLinuxで動いています。
OSにはどんな種類がありますか?
教科書によって分け方はいくつかあります。よく使われる分類は、デスクトップ、モバイル、サーバー、リアルタイム(FreeRTOSのように決まった時間内の応答を保証するもの)、組み込み(機器に内蔵されるもの)、そして複数のコンピュータに処理を分散させる分散システムです。古い分類では、バッチ処理システムやタイムシェアリングシステムも挙げられます。
自分のパソコンのOSを確認するにはどうすればいいですか?
Windowsでは「設定」から「システム」、「バージョン情報」を開くか、winver を実行します。Macではアップルメニューから「このMacについて」を選びます。Linuxではターミナルで cat /etc/os-release を実行し、uname -r でカーネルのバージョンがわかります。
OSを簡単な言葉で説明すると?
ほかのすべてのプログラムのために、コンピュータを動かしているプログラムです。アプリはOSに、ファイルの保存、ウィンドウの表示、インターネットへの接続を頼み、OSがハードウェアを使ってその作業をします。OSもソフトウェアで、コンピュータの起動時にディスクから読み込まれます。
Coddy programming languages illustration

Coddyでコードを学ぼう

始める