-
Notifications
You must be signed in to change notification settings - Fork 0
DNET_LinuxForWindowsUsers
「Linuxってドライブレター無いの?」的な質問をしたら、
「重症」と言われてしまったので、本ページを作成するに至りました。
Windows OSの設計思想が参考になる。
Linux OSの設計思想が参考になる。
- LVM : Logical Volume Manager
ダイナミック・ディスクに相当する。
- ソフトウェアRAID等の機能を持つ
- 不評で、あまり利用されていない。
以下のようなスタックになっている模様。
- マウント・ポイント
- 論理ボリューム(logical volume)
- ボリューム・グループ(volume group)
- 物理ボリューム(physical volume)
- ディスク装置
-
Windows
- FAT32
- NTFS
-
Linux
- ext4
- XFS
- Btrfs
-
参考
- 【ゼロから解説】Linuxのフォーマットの方法
https://eng-entrance.com/linux-format - Linuxファイルシステムをまとめてみました
https://qiita.com/sion_cojp/items/c8e015db39ddbf43012e
- 【ゼロから解説】Linuxのフォーマットの方法
-
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のディレクトリ構造 [Linuxの使い方] All About
https://allabout.co.jp/gm/gc/438840/
- ここがWindowsと違う、Linuxのディレクトリ構造 [Linuxの使い方] All About
-
Windows:起きる。
-
Linux:断片化が起こりづらい。
-
参考
- ファイルシステム - マイクロソフト系技術情報 Wikiの「デフラグ > Linuxにデフラグが無い理由」の該当節を参照。
パス区切りは、「\」(逆スラッシュ)ではなく「/」(スラッシュ)
- ASCII.jp:Windowsのパス区切り文字は、
なぜ逆スラッシュになったのか?|Windows Info
https://ascii.jp/elem/000/001/763/1763591/
Windowsの「dir」は、Linuxで「ls」コマンド
作業ディレクトリを移動(Windowsと同じ)
-
mkdirコマンド
ディレクトリを作成するコマンド(Windowsと同じ) -
rmdirコマンド
ディレクトリを削除するコマンド(Windowsと同じ)
※ Linuxにはrdと言うエイリアスがある。 -
cpコマンド
Windowsの「copy」は、Linuxで「cp」コマンド -
rmコマンド
Windowsの「del」は、Linuxで「rm」コマンド -
mvコマンド
Windowsの「move」は、Linuxで「mv」コマンド
ファイル操作を行う
-
ファイルの閲覧
- -n(--number)
- -b(--number-nonblank)
- -s(--squeeze-blank)
- -E(--show-ends)
- -T(--show-tabs)
-
ファイル更新
-
新規作成
-
リダイレクトの「>」を使用
-
複数行に渡った新規作成
cat > ファイル <<EOF 書き込む内容 EOF
-
-
追加
-
リダイレクトの「>>」を使用
-
複数行に渡った追加
cat >> ファイル <<EOF 付け足す内容 EOF
-
-
結合
catコマンドの後にファイルを並べる。
-
-
Windows:
- CMD
- PowerShell
-
Linux:Bash
-
シェルスクリプト、バッチ
-
Windows:
- Windowsバッチファイル
- PowerShellスクリプトファイル
-
Linux:UNIXシェルスクリプト
-
-
それぞれ、拡張子は、
-
Windows:
- *.bat
- *.ps1
-
Linux:*.sh
-
実行ファイルのファイルフォーマット
- Windows:Portable Executable (PE)
- Linux:Executable and Linkable Format (ELF)
-
Linuxは全てファイルで拡張子無し。
-
"."は、拡張子ではなくファイル名の一部
-
なので基本的にはルールベース
- シェルスクリプトは、お約束として"*.sh"
- ただ、別に、"*.exe"としてもイイ。
-
コンパイラの既定値から、以下のような説もある。
- Windows:*.exe
- Linux:*.out
- Windows:****.dll
- Linux:lib****.so.****
-
スワップファイルシステム
- Windows:ページファイル(pagefile.sys)
- Linux:ページファイル、スワップファイルシステム
-
ページテーブルの容量削減の技術
- Windows:large page
- Linux:huge page
-
ファイルのキャッシュ
- Windows:ファイル・システム・キャッシュ
- Linux:ページ・キャッシュ
-
ストレージのキャッシュ(ファイル・システムを介さない)
- Windows:バッファ・キャッシュ
- Linux:バッファ・キャッシュ
Linuxカーネル2.4からページ・キャッシュに統合された。
- Windows:Win32 API
- Linux:POSIX
- 開発用のライブラリというより、カーネルに対するC言語用のインターフェイスなので低機能(というか低レベル)
- Linuxカーネルと、Win32サブシステムを含めたWindows全体を比較するのが間違っているという説。
-
Linux
-
forkはコピーオンライトで親プロセスとメモリを共有する。
-
シェルが(開発を奨励している)フィルタをパイプで連結する。
- シェルは自分自身をforkし2つの子プロセスを生成
- 子プロセスがexec(3)ファミリのシステムコールを使って、
実行コマンドのプログラムをオーバーレイする。
-
-
Windows
- fork、exec単独に相当するシステムコールがない。
- 代わりにspawn()(英語版)ファミリ関数が fork-exec に相当する働きをする。
-
malloc
- Windows:HeapAlloc
- Linux:mmap
-
メモリ マップト ファイル、デマンド ページング、コピーオンライト
- Windows:CreateFileMapping
- Linux:mmap
-
参考
移行メモ
- 「ボリューム(volume group)」は「ボリューム・グループ(volume group)」の 誤記のため修正した。
- 「シェルはシェルは自分自身をfork」の重複を除去した。
- 元 Wiki では見出しそのものが他ページへのリンクになっていた箇所 (「viコマンド」「nanoコマンド」「Windows Terminal」「PowerShell Core」 「Windows OSの設計思想」「Linux OSの設計思想」)は、GitHub Wiki では 見出しからアンカが生成されるため、見出しをプレーン・テキストとし、 リンクは直下の本文(箇条書き)に置いた。
- 同名の見出し(「Windows」「Linux」「メモリ管理」)が複数あり GitHub Wiki でアンカが衝突するため、括弧で文脈を補って一意にした。
- マイクロソフト系技術情報 Wiki(techinfoofmicrosofttech.osscons.jp)への URL リンクは、移行済みの Windows OSの設計思想 / ファイルシステム / 仮想アドレス空間の確保のAPI / Windows Terminal / PowerShell Core に張り替えた。
- PukiWiki のページ内アンカ(
#xxxxxxxx)は GitHub Wiki では再現できないため、 同一ページ内のアンカは見出しから生成されるアンカに張り替え、 他ページのアンカを指すリンクは「〜(ページ名の該当節を参照)」の形に置き換えた。
Tags: 移行, Linux, Windows, ディレクトリ構造, ファイルシステム, シェル, POSIX, ELF, メモリ管理
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。