LINEで現役エンジニアに直接質問してみよう!登録無料

Linuxとは?何が出来てどこで使われるのか分かりやすく解説する

エンジニアに興味を持っているあなたなら、「Linux」を聞いたことがあるのでは無いでしょうか?

Linuxとは、SSDやビデオカードをどのように制御するのかをプログラムした「Linuxカーネル」と、Linuxカーネルを使ったOS「Linuxディストリビューション」の2種類のうちどちらかを指します。Linuxを解説するサイトや本によって、「Linux」がどちらを指しているのかバラバラで、Linuxを初めて学ぶ人によって混乱の元になっています。

この記事では、「Linuxカーネル」と「Linuxディストリビューション」がどのようなものなのか。両者の違いを解説した後、「Linuxディストリビューション」がどのような場面で使われているのか。Linuxを知ると、どのようなメリットがあるのかについて解説していこうと思います。

「Linuxカーネル」はすべてのハードウェアの管理をしている

LinuxカーネルはSSD、HDD、ネットワークアダプタ、メモリ、CPU、ビデオカード、サウンド等のすべてのハードウェアの入出力を管理します。 基本的に、Linuxカーネルを通さず、ハードウェアを直接管理することは有りません。

  • 時間を測って、短い単位でCPUに処理を振り分け
  • 処理に優先度をつけてキーボードやマウス等の処理を優先的になるように割り振る
  • メモリの物理アドレス番地がかぶらないように管理
  • ネットワークパケットが来ればソフトウェアに通知

など、Linuxカーネルが行うことは多岐に渡ります。

もし、Linuxカーネルがなければ、「時間を細かく区切って全く別の処理をさせたり」「コマンドを起動するたびに再起動が必要になったり」「メモリのアドレス番地の管理までソフトウェア側でやらなければいけなかったり」「マウスやキーボードの反映がリアルタイムではなくなったり」「マウスやキーボードを変える度に再起動が必要だったり」と、いろいろな発生してしまいます。

「Linuxカーネル」が提供する基本的な機能

Linuxカーネルが無いことで起こる不都合はいろいろ解説しました。ここでは、Linuxカーネルが提供している基本的な機能について紹介します。

  1. プロセス管理 & プロセススケジューラ
  2. メモリ管理
  3. ファイルシステム
  4. ネットワークプロトコル

プロセス管理 & プロセススケジューラ

Linuxのシステムでは、処理を同時に行うことができます。これは、プロセス(プログラムの実行状態)の管理をLinuxカーネルで行っているからです。

プロセスには、優先的にさせなければ行けない事も存在します。例えば、「マウス、キーボード、ディスプレイ」などがあります。これらは、ユーザーの入力によって即座に反応しなければ、操作性が損なわれてしまいます。

このような優先度の高い処理は、実行優先度タイムスライスを割り振り、「プロセススケジューラ」によって管理され実行されています。

メモリ管理

Linuxカーネルでは、物理メモリと仮想メモリを使いデータを管理しています。もし、これらを使わないで管理した場合、同じプログラムはOS再起動後でないと実行できないという制限がついてしまいます。それは、プログラムが常に同じメモリアドレスを指すようにされているからです。

プログラムには、どのメモリ番地を使うか記述しなければならず、一度実行したのならそこにはデータが既に格納されてしまっています。もう一度実行すると、そのメモリにアクセすしたことになりまずが、それではプログラムが実行時におかしな結果になってしまう可能性があります。

Linuxカーネルを使うと、同じアドレス番地を指しているプログラムを実行下としても、物理的には違うアドレス番地を使うことができ、プログラムを何度も何度も実行することができます。

また、この方式のいいところとして、実際の物理メモリ容量よりも遥かに大きな容量のメモリを使うことができます。

ファイルシステム

保存されているすべてのデータに対してファイルという形式でアクセス手段を提供することができます。例えば、マウスやキーボードなどの入力もファイルを読み込むだけで入出力結果が得られます。

ファイルシステムは、「/(ルート)」を頂点とした木構造をしており、唯一です。Windowsのように、CドライブやDドライブ等分かれずに管理することができます。

「Linuxディストリビューション」は、「Linuxカーネル」の機能を使い作ったOSの事

「Linuxディストリビューション」とは、さっきまで解説していた「Linuxカーネル」の機能を使い、作られたOSの事です。

代表的なものとして、

  • Ubuntu – 誰にでも使いやすいOSを目指している
  • fedora – 先進的に新しい機能をどんどん取り入れる
  • debian – ライセンスに縛られないソフトウェアしか取り入れない
  • CentOS – 安定した動作と長期間のメンテナンスが受けられる
  • Android – 世界中で使われているスマートフォン用のAndroid OS

などがあり、その他にもいろいろなLinuxディストリビューションが登場しています。

「Linuxディストリビューション」は誰でも無料で作ることができ、商用で利用することもできます(ただし、ソースコードの公開義務があります)。 なので、大量のコンピューターを使用するWebシステムやスパコンなどにおいて、サーバー用途としてよく利用されています。

Linuxは様々なところで使われすぎて、正確なシェアは分かっていませんが、過半数かそれ以上は確実にあると言われています。wired.jpによると、世界中の全Webサーバーの内、約67パーセントはLinuxとのことです。

「Linuxディストリビューション」で出来ること、出来ないこと

Linuxは主にサーバー用途として使われていることをお伝えしました。なので、コマンドラインを使った操作が非常に発達しています。 決まった操作を何回も実行したり、ファイルを一気に編集したり、検索したり非常に短い時間で行うことが出来ます。

逆に、私達が普段目にする、マウスを使ったGUIはMacOSやWindowsに比べると発達しておらず、使いにくいのが現状です。又、今ではLinuxで使えるGUIソフトも増えつつありますが、まだまだ物は少ないです。ライセンスの絡むソフトウェアはほとんど有りません。

このような現状から、MacOSやWindowsから、Linuxのシステムを遠隔操作して管理する方法が今は主流です。その手段として「SSH」がよく使われています。 SSHでは、気軽に画像や動画を見ることは出来ませんが、簡単にインストールして使うことが出来るので、事実上の標準になっています。

「Linuxディストリビューション」はどんなところで使われているか?

「Linuxディストリビューション」は主にサーバー用途として大企業でよく使われています。例えば、YouTubeやTwitter、Instagramを始め、WebサイトのほとんどでLinuxが使われています。

更に、一番身近なものとして「Androidスマホ」も「Linuxディストリビューション」の1つです。

この記事を書いた人

自身がプログラミングを独学で勉強し始めて躓いた経験を元に、これから勉強をする人に向けに「イラスト多めでわかりやすい記事」にこだわって情報を発信しています。

現在はフルスタックエンジニアとしてサービス開発などのお仕事をしています。