OS---WindowsとLinux

『OS(Operating System)』とは

  • OS
    コンピュータにおいて、ハードウェアを抽象化したインターフェースを提供する基本ソフトウェア。
    メモリ・ディスク管理・入出力機能等、多くのアプリケーションソフトウェアが必要とする機能を提供し、
    コンピュータのシステム全体を管理します。

WindowsLinuxの違い

  • ソース公開
    • Windows(以下、W)::非公開(クローズドソース)
      コードの脆弱性が露呈し悪用される、というリスクがありません。
    • Linux(以下、L)::公開(オープンソース
      品質向上や欠陥修正が素早く行われます。(結果、悪意ある攻撃も防ぐことができる?)
      また、高いレベルでOSを理解することができます。
  • ライセンス制限
    • W::ライセンス制限有
      購入したライセンスの数だけインストールできます。
    • L::ライセンス制限無
      フリーソフトウェアです。
      また、修正・再配布・販売も自由に行えます。
  • サポート
    • W::ヘルプデスクサポート
      ほとんどのユーザーは、Microsoftの有償サポートを利用します。
      必ず、Microsoftが何かしらのサポートをしてくれることが保証されています。
    • L::ピアサポート
      大手Linux企業による有償サポートもありますが、たいていの問題には前例があり、オンライン上で解決できます。
      ただし、レスポンスがなかなか得られない場合もあります。
  • インターフェース
    • W::GUI(Graphical User Interface
      ボタン操作を中心とした、直感的な入出力。
      エンドユーザー向きです。
    • L::CUI(Character User Interface)/ CLI(Command Line user Interface
      コマンドを利用した文字入出力。
      コマンドを組み合わせることで、幅広い処理を実現できます。
      開発者向きです。
  • ユーザ概念
    • W::シングルユーザ
      1台のコンピュータを1人が使う(=クライアントOS)、という前提。
      他のユーザが作成したファイルも閲覧・編集できます。
    • L::マルチユーザ
      ネットワークを通じて1台のコンピュータを複数人が使う(=サーバOS)、という前提。
      他の人が作成したファイルは閲覧できません。
  • タスク処理
    • W::シングルタスク
      複数のプログラムを立ち上げることはできますが、どれかがフリーズした場合、
      OS自体が影響を受け、他のプログラムも動かなくなります。
    • L::マルチタスク
      プログラムの1つがフリーズしても、OSに影響することはありません。
      プログラム単体で強制終了させることができます。

Linux

  • ユーザ概念
    Linuxでは、1台のコンピュータを複数のユーザが使うことを前提としています。
    • 一般ユーザ
      他のユーザが作成したリソースへのアクセスは制限されます。
    • root(管理者)
      すべてのリソースへアクセスできます。
    • グループ
      複数の一般ユーザのまとまり。
      一般ユーザは複数のグループに所属することもできます。
  • アクセス権
    ディレクトリやファイルは、次のような情報を保持しています。
              オーナー
ディレクトリ / ファイル    │ グループ
 ↓             ↓  ↓
 d rwx r−x −−−  3 apoco apoco 4096 Jun 18 23:08 apoco        (パーミッション:750)
 − rwx rwx r−x  1 admin admin  108 Jun 19 17:27 ruby_server.sh   (パーミッション:775)
  ̄  ̄ ̄ ̄  ̄ ̄ ̄  ̄ ̄ ̄
    │   │   └他ユーザのアクセス権
    │   └所属グループのアクセス権
    └オーナーのアクセス権
d / - r / - w / - x / -
ディレクトリ / ファイル 読み出し可 / 不可 書き込み可 / 不可 実行可 / 不可
ファイルのパーミッション ディレクトリのパーミッション
r(読み出し可) そのファイルを読める そのディレクトリを ls(中を閲覧)できる
w(書き込み可) そのファイルを変更できる そのディレクトリの中でファイルを作成・消去できる
x(実行可) そのファイルをプログラムとして実行できる そのディレクトリの中のファイルにアクセスできる
4 2 1 パーミッション
r w x 4+2+1= 7
r w - 4+2+0= 6
r - x 4+0+1= 5
r - - 4+0+0= 4
- - - 0+0+0= 0
  • コマンド
主なコマンド 処理
su ユーザ変更
ls カレントディレクトリ内のディレクトリ・ファイル一覧表示
cd カレントディレクトリ変更
pwd カレントディレクトリ表示
mkdir ディレクトリ新規作成
rm ファイル削除
chmod パーミッション変更
cat ファイル内容表示
grep 文字列検索
  • テキスト処理
    • リダイレクション(入力:ファイルからデータを読み込み、コマンドに実行させる)
      • コマンド < ファイル名
    • リダイレクション(出力:コマンドの処理結果をファイルに出力する)
      • コマンド > ファイル名 (上書き)
      • コマンド >& ファイル名 (エラーも上書き)
      • コマンド >> ファイル名 (末尾に追加)
    • パイプ(前のコマンドの処理結果を、後のコマンドに渡す)
      • コマンド | コマンド
$ ls -l | grep "hoge" >> fuga.txt
  • プロセス
    • プロセス
      複数のプログラムを立ち上げるとき、個々のプログラムが管理される単位のこと。
      簡単に言えば、動作中のプログラムのことです。
      ひとつのプログラムに対し、複数のプロセスを作ることもできます。
      その場合、プロセスごとに振られる『プロセスID』で判別します。
      プロセスのメモリ空間は別々に管理され、互いに干渉しません。
      一時停止や終了も、個別に行うことができます。

      マルチタスクを実現可能にしているのは、以下の仕組みです。
      これらにより、各プロセスから見たCPU&メモリが、そのプロセス専用であるかのように見えるのです。
      • 仮想CPU
        CUPが実行するプロセスを、非常に短い時間単位で切り替えることで作り出します。
      • 仮想メモリ
        プロセスに対して仮のメモリアドレスを用意し、必要なときだけ実際のアドレスを割り当てることで作り出します。
    • デーモン
      OS起動時に自動的に立ち上がるプログラムを『デーモン』と呼びます。
      これは制御端末のないプロセスで、サーバを作るために必要です。
      制御端末をもつ普通のプロセスは、プロセス起動者がログアウトすると止まってしまいますが、
      サーバは他のプロセスにサービスを提供するプロセスですので、そのようなことが起きては困るのです。
      UNIXでは、Apacheをはじめ、いくつものサーバが動いています。
【参考書籍】