Cygwin
Windows XP上でのCygwin | |
作者 | シグナスソリューションズ |
---|---|
開発元 | シグナスソリューションズ、レッドハットなど |
初版 | 1995年 (29年前) (1995) |
最新版 | 3.4.2-1 / 2022年12月11日 (17か月前) (2022-12-11) |
リポジトリ |
|
プログラミング 言語 | C/C++ |
対応OS | Windows |
種別 | 互換レイヤー |
ライセンス | GNU GPL v3 |
公式サイト | www.cygwin.com |
テンプレートを表示 |
Cygwin(シグウィン)は、Windows OS上にUNIXライクな環境を提供する互換レイヤーで、フリーソフトウェアである。WindowsでUNIXのソフトウェア資産を活かすことが可能となる。
ゲストOSが不要でハードウェアの仮想化も行わないため煩雑な作業も無く軽量に動作する[注釈 1]。X Window Systemにも対応しGUIアプリも動作する。
特徴
CygwinはUNIX OS自体を動かすのではなく、WindowsをUNIX風に表現し直すソフトと言える。Cygwinはアプリケーションが実行するシステムコールの読み替えだけを行い、WindowsカーネルのAPIを利用する。VMwareやVirtualBoxのような仮想マシンではなく互換レイヤーである。
ゲストOSは不要でCPU、メモリ、周辺機器などのハードウェア仮想化を行わない。このため設定は簡単であり、インストールファイルやメモリ消費量も軽量である。但し、入出力が遅いという欠点があり大量のデータを扱う用途には向かない。補助的にUNIXツールを使う場合には有用である。
GNU Core UtilitiesといったUNIXの基本コマンドやBashが付属する。また、CygwinのターミナルからはWindowsのバイナリ.exeも呼び出す事ができる。パイプも併用する事で、UNIXアプリとWindowsアプリのコラボレーションが期待できる。
パッケージ管理
Cygwinのインストーラー(GUIベース)はパッケージ管理システムとしても利用でき、1万以上の豊富なオープンソースソフトウェアが利用可能である。Cygwinインストール後にもこれを利用してソフトウェアの構成変更、インストール・アンインストール・アップデートできる。CUIでもパッケージ管理が行えるように、apt-cygというコマンドも用意されている。
ランタイムライブラリ
CygwinはUNIXカーネルそのものを利用するのでは無く、API変換を行ってWindowsカーネルを利用する。
ランタイムライブラリ「Cygwin1.dll」がAPI変換の中核を成している。これはPOSIXのシステムコールと同等の機能を提供し、それぞれのプログラムはこれを動的にリンクすることでUNIX上とほぼ同じ動作がWindows上で可能になる。Cygwin用ではないUNIX用プログラムのソースコードも、大幅な変更無しにWindows用に再コンパイルすることが可能となる。
また、Windowsのファイルシステムもそのまま扱うことができるため、Windowsで作成したデータとCygwinで作成したデータを混ぜて処理することが出来る。実際にWindowsで割り当てたネットワークドライブへCygwinからアクセス可能である。
その他
Unix System V由来のIPCを利用するアプリケーションのために、サービス(NTサービス)を提供している。Cygwinに付属しているPostgreSQLは、このサービスが提供する共有バッファやセマフォを利用して動作する。PostgreSQL自身は、バージョン8.0以降でCygwin依存から脱却し、全面的にWin32ネイティブにソースの書き換えが行われている。
マイクロソフトはWindows Server 2012よりUNIXベースアプリケーション用サブシステムを非推奨とし、代替手段の一つとしてCygwinのPOSIXエミュレーションモードを紹介している[1]。
標準CライブラリとしてGNU CライブラリではなくNewlibを用いる[2]。cygwin1.dllがこれを提供する。Cygwinでコンパイルした自作のC/C++言語ソフトをCygwin未インストール環境で動かすにはcygwin1.dllも同梱させる必要がある。
脚注
注釈
- ^ 仮想マシンを使わない分、環境全体としてはCPUもメモリもストレージも大きく消費せず軽量になるが、DLLでシステムコールの変換を行っているためか、入出力の速度に問題があるとの指摘もある。
関連項目
- MinGW
- Windows Subsystem for Linux - Windows純正のLinuxサブシステム
- Interix (Services for UNIX)
- coLinux - LinuxカーネルをWindowsアプリケーションとして動作させる
- シグナスソリューションズ
- Wine - Cygwinとは逆に、Unix系OSでWindowsアプリケーションを動作させる
- XonWindows3
- 仮想化
外部リンク
- 公式ウェブサイト (英語)
- Cygwin情報
- Using Cygwin.
- Life with Cygwin