[go: up one dir, main page]

コンテンツにスキップ

Cygwin

出典: フリー百科事典『ウィキペディア(Wikipedia)』
Cygwin
Logo of Cygwin
Windows XP上でのCygwin
開発元 シグナスソリューションズレッドハットなど
初版 1995年 (29年前) (1995)
最新版
3.5.3 / 2024年4月3日 (7か月前) (2024-04-03)[1]
リポジトリ ウィキデータを編集
プログラミング
言語
C/C++
対応OS Windows 8.1 以降
プラットフォーム x64
種別 互換レイヤー
ライセンス GNU LGPL v3 以降[2]
公式サイト www.cygwin.com
テンプレートを表示

Cygwin(シグウィン)は、Windows OS上にUNIXライクな環境を提供する互換レイヤーで、フリーソフトウェアである。WindowsでUNIXのソフトウェア資産を活かすことが可能となる。

ゲストOSが不要でハードウェア仮想化も行わないため煩雑な作業も無く軽量に動作する[注釈 1]X Window Systemにも対応しGUIアプリも動作する。

似たようなWindows上で動くソフトウェアとして、Mingw-w64/MSYS2が存在する。

特徴

[編集]

CygwinはUNIX OS自体を動かすのではなく、WindowsUNIX風に表現し直すソフトと言える。Cygwinはアプリケーションが実行するシステムコールの読み替えだけを行い、WindowsカーネルのAPIを利用する。VMwareVirtualBoxのような仮想マシンではなく互換レイヤーである。

ゲスト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ネイティブにソースの書き換えが行われている。

XサーバとしてCygwin/Xが提供されている。

マイクロソフトはWindows Server 2012よりUNIXベースアプリケーション用サブシステムを非推奨とし、代替手段の一つとしてCygwinのPOSIXエミュレーションモードを紹介している[3]

標準CライブラリとしてGNU CライブラリではなくNewlibを用いる[4]。cygwin1.dllがこれを提供する。Cygwinでコンパイルした自作のC/C++言語ソフトをCygwin未インストール環境で動かすにはcygwin1.dllも同梱させる必要がある。

/dev/memの機能は、1.7.22にて打ち切り[5]になった。現状では、この機能を用いたプログラムは動作しない。

脚注

[編集]
  1. ^ cygwin.com Git - newlib-cygwin.git/summary”. cygwin.com. 5 July 2024閲覧。
  2. ^ Cygwin Licensing Terms”. cygwin.com. 5 July 2024閲覧。
  3. ^ Windows Server 2012 で削除された機能または推奨されなくなった機能”. 2016年4月20日閲覧。
  4. ^ Cygwin FAQ”. 2023年1月8日閲覧。
  5. ^
    Support for /dev/mem, /dev/kmem and /dev/port removed, since OS support was limited to 32 bit Windows XP only.
    What's new and what changed in Cygwin”. 2024年9月10日閲覧。

注釈

[編集]
  1. ^ 仮想マシンを使わない分、環境全体としてはCPUもメモリもストレージも大きく消費せず軽量になるが、DLLでシステムコールの変換を行っているためか、入出力の速度に問題があるとの指摘もある。

関連項目

[編集]

外部リンク

[編集]