.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

「Linuxってドライブレター無いの?」的な質問をしたら、
「重症」と言われてしまったので、本ページを作成するに至りました。

Windows

こちらが参考になる。

Linux

長所

  • オープンソース・ソフトウェアなので
    • 無償利用可能なディストリビューションが多数ある。
    • 高品質のオープンソース・ミドルウェアが多数ある(Apache、MySQL)。
    • プログラミング環境も無償で構築できる(LAMP、MEAN)。
  • 世界中でサーバー用途で広く使用されている。
    • 自動化がし易く、サーバー運用が行い易い。
    • ブラック・ボックスが無く、OS内部まで確認可能。

短所

  • クライアント
    • Microsoft Officeが動作しない。
    • 日本語対応などのローカライズが弱い。
  • サポート
    • ドキュメント・ヘルプが英語版のみのことがある。
    • ソフトウェアによっては日本語を利用すると正しく動作しない。

詳細

ファイル・システム

種類

  • Windows
    • FAT32
    • NTFS
  • Linux
    • ext4
    • XFS
    • Btrfs

ディレクトリ構造

  • Windows
    • Cドラ、Dドラ、...といったドライブ・レターを頂点にしたツリー構造
    • 階層化には、バックスラッシュ(\)、又は円記号(¥)を使う。
  • Linux
  • ドライブレターは無く、ルートディレクトリ(/)を頂点にしたツリー構造

    先ずディスクをパーティションに区切り、それぞれの上にファイルシステムを用意し、
    それをマウントすることで、一本の巨大なディレクトリツリーができあがる。

  • 階層化には、フォーワードスラッシュ(/)を使う。
  • 各種ディレクトリ
    • /
      Windowsの「SystemDrive?」に近いルートディレクトリ
  • /var、/tmp
    Windowsの「SystemRoot?」に近いLinuxの動作に必要なディレクトリ
  • /usr、/bin、/lib
    Windowsの「ProgramFiles?」に近いソフトウェアを格納するディレクトリ
  • /media
    USBやSDカードなどの記憶媒体がマウントされるディレクトリ
  • /home/userXXX
    Windowsの「USERPROFILE」に相当

断片化

  • Windows:起きる。
  • Linux:断片化が起こりづらい。

フォルダ移動、ファイル操作コマンド

パス区切りは、「\」(逆スラッシュ)ではなく「/」(スラッシュ)

lsコマンド

Windowsの「dir」は、Linuxで「ls」コマンド

cdコマンド

作業ディレクトリを移動(Windowsと同じ)

mkdir関連コマンド

  • mkdirコマンド
    ディレクトリを作成するコマンド(Windowsと同じ)
  • rmdirコマンド
    ディレクトリを削除するコマンド(Windowsと同じ)
    ※ Linuxにはrdと言うエイリアスがある。
  • cpコマンド
    Windowsの「copy」は、Linuxで「cp」コマンド
  • rmコマンド
    Windowsの「del」は、Linuxで「rm」コマンド
  • mvコマンド
    Windowsの「move」は、Linuxで「mv」コマンド

シェル、シェルスクリプト

CMDではなくてBash

  • シェル
    • Windows:CMD
    • Linux:Bash
  • WindowsではPowerShell?というものもある。

*.batではなくて*.sh

  • シェルスクリプト、バッチ
    • Windows:Windowsバッチファイル
    • Linux:UNIXシェルスクリプト
  • それぞれ、拡張子は、
    • Windows:*.bat
    • Linux:*.sh

実行ファイル

PEではなくてELF

実行ファイルのファイルフォーマット

  • Windows:Portable Executable (PE)
  • Linux:Executable and Linkable Format (ELF)

EXEでなくて拡張子無し

  • Linuxは全てファイルで拡張子無し。
  • "*.*"は、拡張子ではなくファイル名の一部
  • なので基本的にはルールベース
    • シェルスクリプトは、お約束として"*.sh"
    • ただ、別に、"*.exe"としてもイイ。
  • コンパイラの既定値から、以下のような説もある。
    • Windows:*.exe
    • Linux:*.out

DLLではなくてSO

  • Windows:****.dll
  • Linux:lib****.so.****

メモリ管理

仮想メモリ

  • スワップファイルシステム
    • Windows:ページファイル(pagefile.sys)
    • Linux:ページファイル、スワップファイルシステム

物理メモリ

  • ページテーブルの容量削減の技術
    • Windows:large page
    • Linux:huge page
  • ファイルのキャッシュ
    • Windows:ファイル・システム・キャッシュ
    • Linux:ページ・キャッシュ
  • ストレージのキャッシュ(ファイル・システムを介さない)
    • Windows:バッファ・キャッシュ
    • Linux:バッファ・キャッシュ
      Linuxカーネル2.4からページ・キャッシュに統合された。

API

Win32 APIではなくてPOSIX

  • Windows:Win32 API
  • Linux:POSIX
    • 開発用のライブラリというより、カーネルに対するC言語用のインターフェイスなので低機能(というか低レベル)
    • Linuxカーネルと、Win32サブシステムを含めたWindows全体を比較するのが間違っているという説。

fork、exec

  • Linux
  • forkはコピーオンライトで親プロセスとメモリを共有する。
  • シェルが(開発を奨励している)フィルタをパイプで連結する。
    • シェルはシェルは自分自身をforkし2つの子プロセスを生成
    • 子プロセスがexec(3)ファミリのシステムコールを使って、
      実行コマンドのプログラムをオーバーレイする。
  • Windows
    • fork、exec単独に相当するシステムコールがない。
    • 代わりにspawn()(英語版)ファミリ関数が fork-exec に相当する働きをする。

メモリ管理

  • malloc
    • Windows:HeapAlloc?
    • Linux:mmap
  • メモリ マップト ファイル、デマンド ページング、コピーオンライト
    • Windows:CreateFileMapping?
    • Linux:mmap

トレードオフ

良い点

展開が用意

  • Windows:
    • SIDがあるのでSysprepが必要
    • 基本GUIでレジストリ設定先などの裏の仕様が不明
  • Linux:
    • SIDが無いのでSysprepが不要。
    • CUI+ファイル・コピーでイケる。

悪い点

ドライバ系が弱い

モノリシックカーネルであり、ドライバ系が弱いらしい。
様々なデバイスを接続し得るクライアントOSとしては、この辺が問題になるのかもしれない。

参考

デスクトップ


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-08-30 (金) 09:34:24 (19d)