【応用情報】『Linux』を超分かりやすく【新感覚Study】

Linux

アバンタイトル

IT分野は範囲がとても広いです。そのため、過去問を解いていると1ページに何個も理解できない単語が出てきます。それを一気に理解しようとするのはとても骨が折れるし、やる気も続きません。

しかし、そんな時は1周まわって1つのことに徹底集中してみるのはどうでしょうか?覚えなきゃいけないことが沢山あると、終わりが見えずモチベーションが続きません。

でも、「今日はこの1つをマスターしよう!」と1つにフォーカスすればゴールが見えて、集中力も続くようになります。また、一点集中型なので理解力も深まり応用も効くようになります。

ということで、当サイトでは1点集中をコンセプトに解説を展開しています。勉強法が定まっていなかったり悩んでいる方は是非、続きをご覧になってみてはいかかでしょうか?

はじめに

今回も中二病心ちゅうにびょうごころを刺激するワードを取り扱います。それがLinuxです。サーバ系の本を読んでいると絶対出てくるワードですよね?でも、意外と概要がぼやけてしまってませんか?

今回学ぶこのフレーズに対しては、「難しそー」とか「役に立つの?」といった思考は一旦おいといて「ただかっこいいから知りたい!」というシンプルな思考でStudyしていってほしいです。

そのためにこの記事では、初心者にも超分かりやすく解説していきます。ただの試験対策、ただの退屈な勉強、という感覚ではなく、「人前でこのフレーズを連呼してる自分を想像したら胸がわくわくする」みたいな、そういう軽い気持ちを主としてStudyしていきましょう!

また、この記事はIT経験者でなくても、だれでも読み進められる構成になっているので、最後まで楽に進めます。そして、読み終わった頃には、「あれ?知らぬ間に理解が深まっているぞ」ということに気づくでしょう。それでは、一緒に学んでいきましょう!そして、「勉強しなきゃ!」という義務感ではなく「かっこいいから知りたい!」という単純な理由で楽しみながらStudyしていきましょう!

【ここで扱う疑問】

  1. Linuxの基本概念は?
  2. そもそもOSってなに?
  3. OSの具体的な仕事は?
  4. ディストリビューションってなに?
  5. カーネルってなに?
  6. Linuxの内部構成はどーなってるの?
  7. UNIX(ユニックス)ってなに?
  8. 基本ソフトウェアってなに?
  9. 応用ソフトウェアってなに?
  10. ユーザランド(別名:ユーザ空間)ってなに?

などの、様々な疑問を、ITの経験がない人でも解消できるような解説となっています。

Linuxの基本概念は?

クエスチョン question

Linux(リナックス)は、コンピュータのオペレーティングシステム(OS)のひとつです。オペレーティングシステムは、コンピュータのハードウェア資源(CPU、メモリ、ストレージなど)を管理し、ソフトウェアプログラムが実行される環境を提供します。

具体的には、Linuxは次のような特徴を持ちます:

  1. オープンソース: Linuxはオープンソースソフトウェアであり、そのソースコードが公開されています。これにより、誰でも自由に改良やカスタマイズができます。
  2. 多様性と柔軟性: Linuxはさまざまなバージョン(ディストリビューション)が存在し、それぞれが異なるニーズに合わせた設計や機能を提供します。例えば、UbuntuFedoraなどが有名です。
  3. 安定性とセキュリティ: Linuxは安定性が高く、多くのサーバーや組み込みシステムで利用されています。また、セキュリティの面でも一般に評価が高いです。
  4. コマンドラインの強力さ: Linuxはコマンドラインインターフェース(CLI)を強力にサポートしており、システムの管理や設定を効率的に行うことができます。
  5. 仮想化やクラウドの基盤: 近年では、Linuxは仮想化技術やクラウドコンピューティングの基盤として広く利用されています。

そもそもOSってなに?

クエスチョン question

OS(オペレーティングシステム)は、コンピュータシステムの基本ソフトウェアのことです。コンピュータのハードウェア(CPU、メモリ、ストレージ、入出力装置など)を管理し、ソフトウェアアプリケーションが実行される環境を提供します。

具体的には、以下のような役割を持っています:

  1. リソース管理: OSはコンピュータのリソース(CPU、メモリ、ディスクスペースなど)を管理し、アプリケーションが正しく動作するための資源を割り当てます。
  2. ユーザーインタフェース: OSはユーザーとコンピュータの間のインタラクションを可能にするインタフェースを提供します。これには、グラフィカルユーザーインタフェース(GUI)やコマンドラインインタフェース(CLI)が含まれます。
  3. ファイルシステム管理: OSはファイルやディレクトリの管理を行い、データの永続的な保存とアクセスをサポートします。
  4. プロセス管理: OSはアプリケーションやプロセスの実行を管理し、タスクのスケジューリングや並列処理を可能にします。
  5. セキュリティとアクセス制御: OSはシステムのセキュリティを管理し、ユーザー間でのデータの保護やアクセス制御を行います。

OSはコンピュータシステムにおいて中心的な役割を果たし、ユーザーがアプリケーションを実行し、データを操作するための基盤となります。

OSの具体的な仕事は?

クエスチョン question

オペレーティングシステム(OS)の具体的な仕事は、以下のような役割を果たしています:

  1. リソース管理:
    • CPU管理: OSは複数のプロセスがCPUを使用する方法を制御し、プロセスの実行をスケジューリングします。これにより、複数のアプリケーションが同時に実行されても、互いに干渉しないようにします。
    • メモリ管理: OSは物理メモリ(RAM)を仮想メモリとしてアプリケーションに提供し、必要に応じてメモリの割り当てと解放を行います。また、メモリの保護機能を提供して、プロセスが不正なアクセスを防止します。
  2. ファイルシステム管理:
    • データの永続的保存: OSはデータの永続的な保存を可能にするファイルシステムを提供します。これにより、ユーザーはファイルやディレクトリを作成、読み取り、書き込み、削除することができます。
    • データの整合性とアクセス管理: OSはファイルシステムの整合性を維持し、同時アクセスによるデータの競合を回避します。また、ファイルやディレクトリのアクセス権を管理して、不正なアクセスを防止します。
  3. プロセス管理:
    • プロセスの生成と終了: OSはアプリケーションやプロセスの生成、実行、終了を管理します。これには、プロセスの起動、終了時のリソースの解放、プロセス間の通信機能の提供などが含まれます。
    • タスクのスケジューリング: OSはCPUの利用効率を最大化するために、プロセスやタスクのスケジューリングを行います。これにより、複数のプロセスが効率的に実行されます。
  4. ユーザーインタフェース:
    • GUIとCLIの提供: OSはユーザーとのインタラクションを可能にするために、グラフィカルユーザーインタフェース(GUI)やコマンドラインインタフェース(CLI)を提供します。これにより、ユーザーはコンピュータを操作し、アプリケーションを実行することができます。
  5. セキュリティ管理:
    • アクセス制御と保護: OSはユーザーやプロセスがシステムリソースにアクセスする際の権限を管理し、セキュリティを維持します。これには、ユーザーアカウントの管理、ファイルやディレクトリのアクセス制御、セキュリティポリシーの適用などが含まれます。

これらの機能によって、オペレーティングシステムはコンピュータシステムの中核を担い、ユーザーやアプリケーションが効率的かつ安全に動作するための基盤を提供します。

ディストリビューションってなに?

クエスチョン question

ディストリビューション(Distribution)は、Linuxオペレーティングシステムのバージョンや派生版を指します。Linuxカーネル(コア部分)に加えて、システムユーティリティ、ライブラリ、アプリケーションソフトウェア、インストール方法、管理ツールなどが含まれた完全なソフトウェアパッケージです。

Linuxはオープンソースであり、誰でもソースコードを取得してカスタマイズすることができます。このため、さまざまな開発者やコミュニティが異なるニーズに応じてLinuxをカスタマイズし、それをパッケージ化したものがディストリビューションとなります。

例えば、以下のような有名なLinuxディストリビューションがあります:

  • Ubuntu: デスクトップやサーバー用途に広く使われる、ユーザーフレンドリーなディストリビューション。また、ベースはDebianというディストリビューションで、Debianの基盤を元にして新たな機能や設定を追加し、独自の特性を持った派生ディストリビューションとして開発されています。
  • Fedora: 最新のテクノロジーを追求する、開発者向けのディストリビューション。
  • CentOS: Red Hat Enterprise Linux(RHEL)のオープンソース版で、安定性とセキュリティを重視するサーバー向けのディストリビューション。
  • Debian: 堅牢性と安定性に焦点を当てた、多くの派生ディストリビューションの基盤となるユニバーサルなディストリビューション。
  • Arch Linux: ユーザーが自分でシステムを構築・カスタマイズすることを重視した、軽量でシンプルなディストリビューション。

各ディストリビューションは、それぞれ異なるパッケージ管理システムや管理ツール、デフォルトの設定などを持っており、それが特定の利用目的や好みに合った選択肢となります。

要するに….
ディストリビューションはLinuxカーネルはそのままにして、その周辺のユーザーランド部分を変更・追加して、特定のニーズに応じたカスタマイズを行ったものです。

注意!!

一般的なディストリビューションは、カーネルの変更をしません。しかし、一部のディストリビューションではカーネルも変更・追加することがあります。

カーネルってなに?

クエスチョン question

Linuxカーネル(Linux kernel)は、Linuxオペレーティングシステムの中心となるコア部分のことです。カーネルはコンピュータのハードウェアとソフトウェアの間のインターフェースを提供し、システムの基本的な機能を管理します。

具体的には、Linuxカーネルが以下のような役割を担っています:

  1. リソース管理:
    • CPU管理: プロセスのスケジューリングや実行制御を行い、CPUの使用を効率化します。
    • メモリ管理: 物理メモリ(RAM)の管理や仮想メモリの管理を通じて、プロセスやデータの配置と保護を担当します。
  2. デバイス管理:
    • デバイスドライバの管理: ハードウェアデバイス(ネットワークカード、ディスクドライブなど)との通信を制御し、デバイスにアクセスするためのインターフェースを提供します。
  3. ファイルシステムのサポート:
    • ファイルシステムの管理: ファイルやディレクトリの作成、読み書き、削除などの操作をサポートします。
  4. セキュリティとアクセス管理:
    • アクセス制御: ユーザーやプロセスがシステムリソースにアクセスする際の権限管理を行います。

要するに…
LinuxカーネルはLinuxオペレーティングシステムの核心であり、システムの基本的な機能を提供するソフトウェアの一部です。つまり、ハードウェアとソフトウェアのインタフェースをカーネルって言います。

Linuxの内部構成はどーなってるの?

クエスチョン question

Linuxオペレーティングシステム(LinuxOS)の一般的な構成は以下のようになります:

  1. カーネル(Kernel):
    • Linuxカーネルはオペレーティングシステムの中核を担います。ハードウェアの制御やリソースの管理、プロセスのスケジューリング、メモリ管理などの基本的な機能を提供します。
  2. ユーザーランド(Userland):
    • カーネルの周辺には、ユーティリティやライブラリ、シェル(コマンドラインインタフェース)などが含まれます。これらはユーザーが直接操作するソフトウェアや、カーネルと通信するためのインターフェースを提供します。
  3. ファイルシステム(File System):
    • データの永続性を確保するために、Linuxはファイルシステムを使用します。これには、データの保存や管理、ディスク上のファイルの配置などが含まれます。
  4. ネットワーキング(Networking):
    • Linuxは強力なネットワーキング機能を持ち、TCP/IPスタックを含むネットワークサービスやプロトコルをサポートします。これにより、インターネットやローカルネットワークへの接続が可能になります。
  5. デバイスドライバ(Device Drivers):
    • ハードウェアとのインターフェースを提供するデバイスドライバが含まれています。これにより、Linuxはさまざまなハードウェア機器(例: グラフィックスカード、ネットワークカード、プリンタなど)と通信できます。
  6. プロセス管理(Process Management):
    • プロセス管理機能は、アプリケーションやシステムサービスの実行と制御を担当します。プロセスの作成、終了、スケジューリング、通信などを管理します。
  7. セキュリティ管理(Security Management):
    • Linuxは、ファイルやディレクトリのアクセス制御、ユーザー認証、暗号化、ファイアウォールなどのセキュリティ機能を提供し、システムのセキュリティを強化します。

これらの要素が組み合わさって、Linuxオペレーティングシステムが成り立っています。カーネルはその中心的な役割を担い、周辺の構成要素と協調してシステム全体を構成します。

UNIX(ユニックス)ってなに?

クエスチョン question

Linuxを勉強していると、耳にする単語があります。それがUNIX(ユニックス)です。以下でそれを理解していきましょう!

UNIX(ユニックス)は、コンピュータのオペレーティングシステム(OS)の一種であり、その設計思想や哲学を指すこともあります。

具体的には、以下の特徴を持つことで知られています:

  1. 多目的・マルチユーザー: UNIXは多くの用途に適した汎用性の高いオペレーティングシステムです。複数のユーザーが同時に利用できるように設計されています。
  2. ポータビリティ: UNIXは様々なハードウェアプラットフォーム上で動作することができるため、異なるメーカーやアーキテクチャのコンピュータに対応する柔軟性があります。
  3. 階層的なファイルシステム: UNIXはファイルとディレクトリを階層的に管理するファイルシステムを採用しており、システムの柔軟性と整理されたデータ管理を実現します。
  4. シェルとコマンドラインインタフェース: UNIXシステムでは、ユーザーがコマンドラインインタフェース(CLI)を通じてシステムを操作し、タスクを実行することが一般的です。
  5. ネットワーキング: UNIXは初期からネットワーキング機能を重視しており、インターネットの基盤技術の発展にも寄与しました。

UNIXの初期のバージョンは、1960年代後半から1970年代にかけてAT&Tベル研究所で開発されました。その後、商用化されたUNIXライクなオペレーティングシステムやオープンソースのUNIX系オペレーティングシステム(例:LinuxやBSD)が数多く派生し、現代の多くのシステムで利用されています。

UNIXはその設計思想や哲学において、シンプルで効率的なソリューションを提供することを目指しており、その影響は広範囲にわたるコンピュータ科学の分野に及んでいます。

UNIXとLinuxの関係

Linuxとは、UNIXの一部の設計思想と特徴を取り入れたオープンソースのオペレーティングシステムのことです。

UNIXとLinuxは技術的には似ていますが、規格や実装の違いが存在します。特定のUNIX仕様を満たす商用UNIXとLinuxの互換性はある程度ありますが、完全に同じではないので、注意しておきましょう!

まとめ

ポート番号 summary

要するに…
Linuxは、多目的なOSであり、特にサーバー環境で強力な性能を発揮します。Linuxはカーネルと呼ばれる中核部分から始まり、それを基に様々なディストリビューションが作られます。ディストリビューションとは、Linuxカーネルに加えて、ユーザーランドと呼ばれるアプリケーションやシステムツールなどのパッケージを含んだものです。これにより、各ディストリビューションは異なる設定や管理ツール、サポートポリシーを提供し、利用者のニーズに応じた選択肢を提供します。

つまり、Linuxは柔軟性が高く、個々の要件に合わせてカスタマイズ可能なオペレーティングシステムであると言えます。

おまけ:用語解説

おまけ
基本ソフトウェアってなに?

基本ソフトウェアとは、応用ソフトウェアを動作させるための共通機能を提供しているソフトウェアのこと。主に以下のようなものが含まれます:

  1. オペレーティングシステム(OS):コンピュータのハードウェアとソフトウェアの基本的な動作を管理・制御するソフトウェアです(例:Windows、macOS、Linux)。
  2. デバイスドライバ:ハードウェアデバイスをOSが制御するためのソフトウェアです。
  3. ユーティリティプログラム:システムの管理や保守、最適化を行うためのツールです(例:ファイル管理ツール、バックアップツール、アンチウイルスソフト)。

基本ソフトウェアは、アプリケーションソフトウェアが正しく動作するための土台を提供します。

要するに…
アプリケーションを作成するたびに、毎回毎メモリ管理機能だったり、ファイル管理、プロセス管理といった、どのアプリケーションでも必要になるような機能を提供するのが基本ソフトウェア。

で、これがあることで、アプリケーションを作成するときに、これらの共通機能を利用することで、特定のタスクや目的に応じたアプリケーションを効率的にスムーズに開発することができるよってやつが、基本ソフトウェアの真骨頂です。

応用ソフトウェアってなに?

応用ソフトウェアとは、特定のタスクや目的を達成するために設計されたソフトウェアのことです。これには、日常のユーザーが直接使用するアプリケーションが含まれます。以下が主な例です:

  1. オフィスソフトウェア
    • ワードプロセッサ(例:Microsoft Word、Google Docs)
    • スプレッドシート(例:Microsoft Excel、Google Sheets)
    • プレゼンテーションソフト(例:Microsoft PowerPoint、Google Slides)
  2. マルチメディアソフトウェア
    • 画像編集ソフト(例:Adobe Photoshop、GIMP)
    • 音楽再生・編集ソフト(例:iTunes、Audacity)
    • ビデオ再生・編集ソフト(例:VLC Media Player、Adobe Premiere)
  3. ウェブブラウザ
    • インターネット閲覧用ソフトウェア(例:Google Chrome、Mozilla Firefox)
  4. メールクライアント
    • 電子メールの送受信に使用するソフト(例:Microsoft Outlook、Thunderbird)
  5. ゲーム
    • エンターテインメント用ソフトウェア(例:Minecraft、Fortnite)
  6. 専門用途のソフトウェア
    • CADソフト(例:AutoCAD)
    • プロジェクト管理ソフト(例:Trello、Microsoft Project)
    • データベース管理システム(例:MySQL、Oracle)

応用ソフトウェアは、基本ソフトウェアの上で動作し、ユーザーの特定のニーズや作業を実行するために使われます。

ユーザランド(別名:ユーザ空間)ってなに?

ユーザーランドとは、オペレーティングシステムにおけるアプリケーションやプログラムが実行される領域を指します。これは、カーネル(カーネル空間)とは対照的な概念です。カーネルはシステムの中核部分であり、ハードウェアへのアクセスやリソース管理を行いますが、ユーザーランドはユーザーが直接操作するソフトウェアが動作する場所です。

  1. ユーザーランド
    • ユーザーランドは、ユーザーが直接操作するアプリケーションやツール、およびそれらを支えるシステムユーティリティやライブラリが含まれる部分です。
    • 具体的には、デスクトップ環境(例:GNOME、KDE)、シェル(例:bash、zsh)、アプリケーション(例:ウェブブラウザ、オフィスソフト、メディアプレーヤー)、システムユーティリティ(例:ファイルマネージャ、設定ツール)、共有ライブラリ(例:グラフィックスライブラリ、ネットワーキングライブラリ)などが含まれます。
    • 要するに、ユーザーランドはユーザーが直接操作できるソフトウェア全体です。
  2. カーネル
    • カーネルは、OSの中核部分であり、ハードウェアリソースの管理を行います。CPUのスケジューリング、メモリ管理、ファイルシステム管理、デバイスドライバ管理、ネットワーク管理などの基本的な機能を提供します。
    • ユーザーが直接操作することはなく、アプリケーションやユーザーランドのツールがカーネルに対してシステムコールを行い、カーネルがそれに応じてハードウェアリソースを操作します。
システムコール

システムコールとは、アプリケーションがカーネルの機能(ファイルの読み書き、メモリ管理、ネットワーク通信など)を利用するための手段です。

要するに…
ユーザーランドはOSの一部であり、ユーザーが直接操作できる範囲を含んでいます。つまり、ユーザ(我々)とOSのインタフェース(橋渡し)のことユーザランドと言います。

一方、カーネルはユーザーが直接操作することはなく、ユーザーランドのアプリケーションやツールが利用する基本的な機能を提供する部分です。つまり、ソフトウェアとハードウェアのインタフェースをカーネルと言います。

おわりに

goal

本日はここまでです。今日はLinuxをStudy&マスターしてきました!ただカッコいいからという理由だけの方が、意外と集中して向き合うことができたのではないでしょうか?

そうなんです!「勉強しなきゃ!知識つけなきゃ!」のように勉強を義務にしてしまうと長く続きません。だからこそ、私たちは楽しんで知識を身に着けていきましょう!そんなことをやってるうちに気づいたらスペシャリストになっているかもしれません!

これからも、今日みたいに「the勉強するぞ!」という意気込みではなく、ヌルっと気づいたら知識が増えてた!みたいな軽い感覚でStudyを一緒にしていきましょう!

本日はここで、終わります。ありがとうございました。またお会いしましょう!では、さらばじゃ!

この記事も一緒に読まれています

Thundering Herd問題
バイポーラ素子
タイトルとURLをコピーしました