Cygwin
Windows XP上でのCygwin | |
作者 | シグナスソリューションズ |
---|---|
開発元 | シグナスソリューションズ、レッドハットなど |
初版 | 1995年 |
最新版 |
3.2.0-1
/ 2021年3月29日 |
リポジトリ | |
プログラミング 言語 | C/C++ |
対応OS | Windows |
種別 | 互換レイヤー |
ライセンス | GNU GPL v3 |
公式サイト | www.cygwin.com |
Cygwin(シグウィン)は、Windowsオペレーティングシステム上にUNIXライクな環境を提供する互換レイヤーで、フリーソフトウェアである。手軽にUNIXライクな環境を用意できる点で人気がある。Cygwinをインストールすることで、OSの差を吸収し、Windows上でUNIXのソフトウェア資産を活かすことが可能となる。また、ゲストOSが不要でハードウェアの仮想化も一切行わないためインストール手順が簡略化されると共に、軽量に動作する[注釈 1]。X Window Systemにも対応し、GUIアプリも動作する。
特徴
Cygwinは、UNIXを動かすと言うよりも、Windows環境をUNIX風に表現し直すと言った方が正確で、技術的には、仮想マシンではなく互換レイヤーである。従って、UNIX的な操作体系を提供するが、ゲストOSは不要でCPUやメモリや周辺機器などのハードウェアの仮想化も行わず、Windowsの機構をシステムコールの変換を行う以外はそのまま利用する。
CygwinではPOSIXに準拠したUNIXカーネルを利用する代わりに、API変換を行ってWindowsカーネルを利用する方式を採っている。その結果として、単一のインストーラーを実行するだけでUNIXライクな環境が用意でき、UNIXに依存したソフトウェアを再コンパイルのみでWindows上に移植することを可能にしている。また、Windowsのファイルシステムもそのまま扱うことができるため、Windowsで作成したデータとCygwinで作成したデータを混ぜて処理することが出来る。ランタイムライブラリ「Cygwin1.dll」がAPI変換の中核を成しており、元々のUNIXアプリに対して「Cygwin1.dll」を利用するように動的リンクを行うことでWindowsで動作可能となる。この方法では、単にUNIXのアプリを起動するだけに留まらず、Windowsアプリとのコラボレーションも期待できる。
Cygwin1.dllランタイムライブラリが、POSIXのシステムコールと同等の機能を提供しており、それぞれのプログラムはこれを動的にリンクすることでUNIX上とほぼ同じ動作が可能になる。また、このライブラリの存在により、Cygwin用として提供されていない他のUNIX用プログラムのソースコードも、従来の様な大幅な変更無しにWindows用にコンパイルすることが可能である。
ランタイムライブラリにて、Unix System V由来のIPCを利用するアプリケーションのために、サービス(NTサービス)を用意している。現在Cygwinに付属しているPostgreSQLは、このサービスが提供する共有バッファやセマフォを利用して動作する。PostgreSQL自身は、バージョン8.0以降ではCygwin依存から脱却し、全面的にWin32ネイティブにソースの書き換えが行われている。
マイクロソフトはWindows Server 2012よりUNIXベースアプリケーション用サブシステムを非推奨とし、代替手段の一つとしてCygwinのPOSIXエミュレーションモードを紹介している[1]。
脚注
- ^ “Windows Server 2012 で削除された機能または推奨されなくなった機能”. 2016年4月20日閲覧。
注釈
- ^ 仮想マシンを使わない分、環境全体としてはCPUもメモリもストレージも大きく消費せず軽量になるが、DLLでシステムコールの変換を行っているためか、入出力の速度に問題があるとの指摘もある。
関連項目
- MinGW
- Windows Subsystem for Linux - Windows純正のLinuxサブシステム
- Interix (Services for UNIX)
- coLinux - LinuxカーネルをWindowsアプリケーションとして動作させる
- シグナスソリューションズ
- Wine - Cygwinとは逆に、Unix系OSでWindowsアプリケーションを動作させる
- XonWindows3
- 仮想化