「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
「Linuxってドライブレター無いの?」的な質問をしたら、
「重症」と言われてしまったので、本ページを作成するに至りました。
詳細 †
ディレクトリ構造 †
ドライブレター †
- Windows:Cドラ、Dドラ、...。
- Linux:ドライブレターは無い。
実行ファイル †
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.****
シェル、シェルスクリプト †
CMDではなくてBash †
- WindowsではPowerShell?というものもある。
*.batではなくて*.sh †
- シェルスクリプト、バッチ
- Windows:Windowsバッチファイル
- Linux:UNIXシェルスクリプト
API †
Win32 APIではなくてPOSIX †
- Windows:Win32 API
- Linux:POSIX
- 開発用のライブラリというより、カーネルに対するC言語用のインターフェイスなので低機能(というか低レベル)
- Linuxカーネルと、Win32サブシステムを含めたWindows全体を比較するのが間違っているという説。
fork、exec †
- forkはコピーオンライトで親プロセスとメモリを共有する。
- シェルが(開発を奨励している)フィルタをパイプで連結する。
- シェルはシェルは自分自身をforkし2つの子プロセスを生成
- 子プロセスがexec(3)ファミリのシステムコールを使って、
実行コマンドのプログラムをオーバーレイする。
- Windows
- fork、exec単独に相当するシステムコールがない。
- 代わりにspawn()(英語版)ファミリ関数が fork-exec に相当する働きをする。
メモリ管理 †
- malloc
- Windows:HeapAlloc?
- Linux:mmap
- メモリ マップト ファイル、デマンド ページング、コピーオンライト
- Windows:CreateFileMapping?
- Linux:mmap
- 仮想メモリ
- Windows:ページファイル(pagefile.sys)
- Linux:スワップファイル(swapfile)
- 物理メモリ
ページテーブルの容量削減の技術
- Windows:large page
- Linux:huge page
トレードオフ †
良い点 †
展開が用意 †
- Windows:
- SIDがあるのでSysprepが必要
- 基本GUIでレジストリ設定先などの裏の仕様が不明
- Linux:
- SIDが無いのでSysprepが不要。
- CUI+ファイル・コピーでイケる。
悪い点 †
ドライバ系が弱い †
モノリシックカーネルであり、ドライバ系が弱いらしい。
様々なデバイスを接続し得るクライアントOSとしては、この辺が問題になるのかもしれない。
参考 †