시그윈
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
시그윈(Cygwin)은 1995년 시그너스의 엔지니어 스티브 챔벌린이 개발한 프로젝트로, 윈도우에서 유닉스 셸 및 명령어를 실행할 수 있도록 하는 도구이다. 핵심 구성 요소인 `Cygwin1.dll` 런타임 라이브러리는 POSIX 시스템 호출을 제공하여 유닉스 프로그램이 윈도우에서 동작하도록 지원한다. 시그윈은 GNU Core Utilities, Bash 셸 등을 포함하며, X 윈도 시스템을 지원하여 그래픽 유닉스 프로그램을 윈도우 데스크톱에 표시할 수 있다. Cygwin은 패키지 관리 시스템을 통해 1만 개 이상의 오픈 소스 소프트웨어를 사용할 수 있으며, 런타임 라이브러리를 통해 유닉스용 프로그램을 윈도우에서 재컴파일하여 실행할 수 있게 한다. 시그윈은 시작 및 실행 시간이 오래 걸리고, 호환성 계층 DLL을 요구하는 등의 단점을 가지고 있다.
더 읽어볼만한 페이지
- 호환성 계층 - 와인 (소프트웨어)
와인(Wine)은 유닉스 계열 운영체제에서 윈도우 응용 프로그램을 실행하기 위한 호환성 계층으로, 윈도우 API를 직접 구현하여 윈도우 프로그램이 리눅스, macOS 등에서 실행되도록 지원하며, 여러 기업의 후원을 받아 꾸준히 발전해왔다. - 호환성 계층 - 카본 (API)
애플이 Mac OS 코드 기반 업그레이드를 위해 도입한 카본은 Mac OS 8.1과 호환되는 공유 라이브러리 형태로, 개발자들이 기존 Mac OS 환경에서 프로그램 실행 능력을 유지하며 코드를 이식하도록 지원했지만, 64비트 환경 전환과 macOS Catalina의 32비트 응용 프로그램 지원 중단으로 사용이 중단되었다. - 자유 에뮬레이션 소프트웨어 - 커널 기반 가상 머신
커널 기반 가상 머신(KVM)은 리눅스 커널의 가상화 확장 기능으로, CPU와 메모리 가상화를 지원하며 QEMU와 함께 완전한 가상화 솔루션을 구성하고 다양한 관리 도구를 제공한다. - 자유 에뮬레이션 소프트웨어 - 버추얼박스
버추얼박스(VirtualBox)는 오라클이 개발한 가상화 소프트웨어로, 단일 운영 체제 내에서 여러 게스트 운영 체제를 실행할 수 있으며, 핵심 패키지는 자유 소프트웨어로 제공된다. - 에뮬레이션 소프트웨어 - 에뮬레이터
에뮬레이터는 다른 프로그램이나 장치를 모방하는 컴퓨터 프로그램 또는 전자기기의 능력으로, 하드웨어 및 소프트웨어 모방을 포함하며 디지털 아카이빙과 뉴 미디어 아트 분야에서 중요한 역할을 한다. - 에뮬레이션 소프트웨어 - Bochs
Bochs는 x86 PC 아키텍처를 에뮬레이션하는 오픈 소스 소프트웨어로, 다양한 하드웨어를 에뮬레이션하며 여러 운영 체제와 플랫폼에서 실행 가능하고, 디버깅 기능이 뛰어나 운영 체제 개발에 활용된다.
| 시그윈 - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 개요 | |
![]() | |
![]() | |
| 개발자 | 스티브 체임벌린, 시그너스 솔루션즈 |
| 개발 | 시그너스 솔루션즈, 레드햇, Cygwin 프로젝트 자원봉사자 |
| 최초 릴리스 | 1995년 10월 18일 |
| 최신 버전 | 3.5.3 |
| 최신 버전 출시일 | 2024년 4월 3일 |
| 운영 체제 | 마이크로소프트 윈도우 |
| 프로그래밍 언어 | C/C++ |
| 종류 | POSIX 표준 유틸리티, POSIX 표준 라이브러리, C 표준 라이브러리, 호환성 계층 |
| 라이선스 | GPLv3, LGPLv3 |
| 웹사이트 | Cygwin 공식 웹사이트 |
2. 역사
Cygwin은 1995년 Cygnus 엔지니어인 스티브 챔벌린의 프로젝트로 시작되었다. 그는 Windows NT와 95가 COFF를 오브젝트 파일 형식으로 사용하고, GNU가 이미 x86과 COFF, 그리고 C 라이브러리인 newlib를 지원한다는 것을 확인했다. 그는 GCC를 리타겟팅하여 Windows에서 실행할 수 있는 실행 파일을 생성하는 크로스 컴파일러를 만들 수 있다고 생각하여 프로토타입을 개발했다. 챔벌린은 부트스트래핑을 통해 Windows 시스템에서 컴파일러를 부트스트랩하여 Unix를 에뮬레이션하여 GNU configure 셸 스크립트가 실행되도록 했다.
1999년, Cygnus는 Cygwin 1.0을 상업 제품으로 제공했다.[10] 이후 버전은 출시되지 않았고, 지속적인 오픈 소스 릴리스로 제공되었다.
프로젝트 리더는 제프리 노어 (1996년-1999년)[11][12], 크리스토퍼 페일러 (1999년-2004년)[13][14], 코리나 빈셴 (2014년 중반-현재, 2024년 9월 기준)[15] 등이다.
2016년 6월 23일부터 Cygwin 라이브러리 버전 2.5.2는 GNU 약소 일반 공중 사용 허가서 (LGPL) 버전 3으로 라이선스가 부여되었다.[16]
2. 1. 개발 배경
시그윈은 1995년 시그너스의 엔지니어 스티브 챔벌린의 프로젝트로 시작되었다. 그는 윈도우 NT와 95가 오브젝트 파일 포맷으로 COFF를 사용하고, GNU가 이미 x86과 COFF, C 라이브러리 newlib 지원을 포함하고 있다는 것을 확인하였다. 그는 GCC의 대상을 변경하여 윈도우에서 동작 가능한 실행 파일을 만들어내는 크로스 컴파일러를 만들 수 있을 것이라고 생각하였다.[10]초기에 시그윈은 gnuwin32 (현재의 GnuWin32와는 다름)로 불렸다. 이 이름은 시그윈32로 바뀌면서 시그너스가 이를 만드는 역할을 강조하였다. 마이크로소프트가 Win32 상표를 등록하였을 때, gnuwin32에서 32를 제거하면서 시그윈이 되었다.
3. 기능
Cygwin의 핵심은 런타임 라이브러리 'Cygwin1.dll'이다. 이 라이브러리는 POSIX의 시스템 호출과 동등한 기능을 제공하여, 셸이나 명령어 등을 윈도우에서 소스 코드로부터 컴파일할 수 있게 해준다.[17] 유닉스용 기계어 이진 코드를 에뮬레이션하는 것은 아니다. 각 프로그램은 Cygwin1.dll을 동적으로 링크함으로써 유닉스에서와 거의 비슷하게 동작한다. 유닉스용 프로그램 소스 코드도 큰 수정 없이 윈도우용으로 컴파일할 수 있다.
유닉스 시스템 V에서 유래한 IPC을 이용하는 응용 프로그램을 위해 런타임 라이브러리에서 서비스(NT 서비스)를 제공한다. PostgreSQL은 이 서비스가 제공하는 공유 버퍼나 세마포어를 이용해 동작한다. PostgreSQL 자체는 버전 8.0 이후 Cygwin 의존에서 벗어나 Win32 네이티브로 소스 코드가 재작성되었다.
Cygwin은 다음과 같은 기능을 제공한다.
- MinGW를 사용하여 네이티브 윈도우 응용 프로그램 작성 지원
- sh (본 셸) 스크립트 지원
- rsh, ssh, telnet을 사용한 원격 로그인 지원
- PSP, PS2 등 임베디드 크로스 플랫폼 지원
- X 및 오픈GL 지원
- 윈도우 비스타 지원
- 표준 C 라이브러리로 Newlib를 사용한다.[30]
Cygwin은 64비트 버전과 32비트 버전으로 제공된다. 32비트 버전은 2022년에 최종 버전이 출시되었다.[17] GNU 개발 도구 체인(GCC, GDB 포함)을 포함하며, X 윈도 시스템, K 데스크톱 환경 3, GNOME,[18] 아파치 등이 이식되었다. Cygwin은 inetd, syslogd, sshd, 아파치 등을 표준 윈도 서비스로 설치할 수 있다. Cygwin 프로그램은 Windows API 및 기타 Windows 라이브러리에 접근할 수 있다.
Cygwin 프로그램은 "설정"[19] 프로그램을 실행하여 인터넷 저장소에서 다운로드하여 설치한다. Cygwin API 라이브러리는 GNU Lesser General Public License 버전 3(또는 이후 버전)에 따라 라이선스가 부여되며, 오픈 소스 정의를 준수하는 모든 자유 및 오픈 소스 소프트웨어에 연결할 수 있도록 예외가 적용된다.[20]
Cygwin은 POSIX API에 대한 호환성 계층 역할을 하는 C 표준 라이브러리 형태의 동적 링크 라이브러리와, 유닉스와 유사한 모양과 느낌을 제공하는 프로그래밍 도구 및 응용 프로그램 모음으로 구성된다.[3]
Cygwin은 POSIX 심볼릭 링크를 지원하며, Windows 탐색기 파일 바로가기로 표현했지만 성능 및 POSIX 정확성을 위해 변경되었다. NTFS 연결 지점 및 심볼릭 링크를 인식하고 POSIX 심볼릭 링크로 처리하지만 직접 생성하지는 않는다. 액세스 제어 목록 (ACL)을 처리하기 위한 POSIX API가 지원된다.[21]
마이크로소프트는 윈도우 서버 2012부터 UNIX 기반 애플리케이션용 하위 시스템을 더 이상 사용하지 않으며, 대안 중 하나로 Cygwin의 POSIX 에뮬레이션 모드를 소개하고 있다.[29]
` /dev/mem` 기능은 1.7.22에서 중단[31]되었다.
3. 1. 윈도우와의 호환성
Cygwin은 윈도우 커널의 API를 이용하며, VMware나 VirtualBox와 같은 가상 머신이 아닌 호환 레이어로 동작한다.[17] GNU Core Utilities와 같은 UNIX의 기본 명령어와 Bash가 제공된다. Cygwin 터미널에서는 윈도우 바이너리(.exe)도 호출할 수 있으며, 파이프를 통해 유닉스 앱과 윈도우 앱의 협업이 가능하다.Cygwin은 윈도우의 파일 시스템을 그대로 다룰 수 있어, 윈도우에서 작성한 데이터와 Cygwin에서 작성한 데이터를 섞어서 처리할 수 있다. 윈도우에서 할당한 네트워크 드라이브에 Cygwin에서 접근할 수 있다.[17]
4. 패키지 관리
Cygwin 설치 (GUI 기반)는 패키지 관리 시스템으로도 활용할 수 있으며, 1만 개 이상의 풍부한 오픈 소스 소프트웨어를 사용할 수 있다.[26] Cygwin 설치 후에도 이것을 사용하여 소프트웨어의 구성 변경, 설치, 제거, 업데이트를 할 수 있다. CUI 환경에서는 apt-cyg라는 명령어를 사용하여 패키지 관리를 할 수 있다.
Cygwin Ports 프로젝트는 Cygwin 배포판 자체에서는 사용할 수 없는 추가 패키지를 제공했었지만, 현재는 유지 관리되지 않는다.
5. 런타임 라이브러리 (Cygwin1.dll)
런타임 라이브러리인 ‘Cygwin1.dll’은 시그윈의 핵심이다. Cygwin1.dll은 POSIX의 시스템 호출과 동등한 기능을 제공하여, 유닉스용 프로그램의 소스 코드를 큰 수정 없이 윈도우용으로 재컴파일할 수 있게 해준다.[17] 각 프로그램은 이 라이브러리를 동적으로 링크함으로써 유닉스에서와 거의 비슷하게 동작한다.
표준 C 라이브러리로는 GNU C 라이브러리(glibc) 대신 Newlib가 사용되며, cygwin1.dll이 이를 제공한다. 따라서 Cygwin으로 컴파일한 C/C++ 소프트웨어를 Cygwin이 설치되지 않은 환경에서 실행하려면 cygwin1.dll도 함께 제공해야 한다.
유닉스 시스템 V에서 유래한 IPC를 이용하는 응용 프로그램을 위해, 런타임 라이브러리에서 서비스(NT 서비스)를 준비해 놓고 있다. PostgreSQL은 이 서비스가 제공하는 공유 버퍼나 세마포어를 이용해 동작한다.
5. 1. 기술적 세부 사항
Cygwin 전용 버전의 유닉스 `mount` 명령어를 사용하면 윈도우 경로를 유닉스 파일 공간에서 "파일 시스템"으로 마운트할 수 있다. 초기 마운트 지점은 `/etc/fstab`에서 구성할 수 있으며, 이는 장치 대신 윈도우 경로가 표시된다는 점을 제외하면 유닉스 시스템과 매우 유사한 형식을 갖는다. 파일 시스템은 (기본적으로) 바이너리 모드 또는 텍스트 모드로 마운트할 수 있으며, 텍스트 모드에서는 변환 사이에 자동 LF 및 CRLF 종료가 활성화된다(이는 텍스트 또는 바이너리 모드를 명시적으로 지정하지 않고 파일을 여는 프로그램에만 영향을 미친다).[22]Cygwin 1.7은 POSIX 로케일에 대한 포괄적인 지원을 도입했으며, UTF-8 유니코드 인코딩이 기본값이 되었다.[22]
프로세스를 복제하기 위한 fork 시스템 호출이 완전히 구현되었지만 copy-on-write 최적화 전략은 사용할 수 없었다.[22][23][24]
Cygwin DLL에는 Unix 스타일의 터미널을 윈도우 콘솔 내에서 에뮬레이션하는 콘솔 드라이버가 포함되어 있다. Cygwin의 기본 사용자 인터페이스는 Cygwin 콘솔에서 실행되는 bash 셸이다. DLL은 또한 pseudo terminal (pty) 장치를 구현한다. Cygwin은 mintty, rxvt/urxvt 및 xterm을 포함하여 이를 기반으로 하는 여러 개의 terminal emulator를 제공한다.[22] Cygwin과 함께 제공되는 GCC 버전에는 프로그램이 창 모드인지 콘솔 모드인지 지정하는 등 윈도우 DLL을 만들기 위한 다양한 확장 기능이 있다.
`'/dev/mem` 기능은 1.7.22에서 중단[31]되었다. 현재 이 기능을 사용한 프로그램은 작동하지 않는다.
6. 단점
시그윈을 시작하고 프로그램을 실행하는 데 시간이 걸린다.[1] 키 코드 인식에 버그가 많다.[2] 호환성 계층 DLL을 요구한다.[3] 과거에는 설치에 많은 시간이 소요되었다.[4]
참조
[1]
웹사이트
Cygwin Licensing Terms
https://cygwin.com/l[...]
2022-12-15
[2]
간행물
Re: How do you pronounce it?
http://cygwin.com/ml[...]
2004-09-14
[3]
웹사이트
Cygwin FAQ
https://cygwin.com/f[...]
2021-01-07
[4]
웹사이트
Cygwin
https://www.cygwin.c[...]
2015-11-21
[5]
웹사이트
Cygwin library now available under GNU Lesser General Public License
https://www.redhat.c[...]
2016-06-23
[6]
웹사이트
A brief history of the Cygwin project
https://cygwin.com/c[...]
2018-02-02
[7]
웹사이트
Cygwin32: A Free Win32 Porting Layer for UNIX Applications
https://www.usenix.o[...]
1998-08-03
[8]
웹사이트
(Solved) Linux Subsystem vs Cygwin vs MobaXterm
https://discuss.howt[...]
2017-01-24
[9]
웹사이트
Cygwin
https://www.cygwin.c[...]
2024-03-11
[10]
웹사이트
Cygwin Unites Unix and Windows Apps
https://books.google[...]
1999-11-15
[11]
간행물
fyi: who does what
https://cygwin.com/m[...]
1999-02-17
[12]
간행물
A partial goodbye...
https://cygwin.com/m[...]
1999-02-19
[13]
간행물
Changing jobs
https://cygwin.com/m[...]
2004-03-31
[14]
간행물
Christopher Faylor – Withdrawing from the project
https://sourceware.o[...]
2015-05-02
[15]
웹사이트
Cygwin Notables
https://www.cygwin.c[...]
2024-09-10
[16]
웹사이트
Cygwin library now available under GNU Lesser General Public License
https://www.redhat.c[...]
2021-05-27
[17]
웹사이트
Cygwin x86 end-of-life
https://cygwin.com/p[...]
2022-11-25
[18]
웹사이트
Cygwin Ports
http://sourceware.or[...]
2015-05-02
[19]
간행물
New Cygwin Net Release
https://cygwin.com/m[...]
2000-04-17
[20]
웹사이트
What are the licensing terms?
https://cygwin.com/l[...]
[21]
간행물
Updated: Cygwin 2.4.0-1
http://www.cygwin.or[...]
2016-01-16
[22]
웹사이트
Cygwin FAQ: How is fork() implemented?
https://www.cygwin.c[...]
2010-10-10
[23]
웹사이트
Highlights of Cygwin Functionality: Process Creation
http://cygwin.com/cy[...]
2014-12-24
[24]
간행물
Bash doesn't launch the applications directly
http://www.cygwin.co[...]
2009-01-15
[25]
웹사이트
Installing and Updating Cygwin Packages
https://cygwin.com/i[...]
[26]
웹사이트
Cygwin Package List
https://cygwin.com/p[...]
[27]
웹사이트
cygwin.com Git - newlib-cygwin.git/summary
https://cygwin.com/g[...]
2024-07-05
[28]
웹사이트
Cygwin Licensing Terms
https://cygwin.com/l[...]
2024-07-05
[29]
웹사이트
Windows Server 2012 で削除された機能または推奨されなくなった機能
https://technet.micr[...]
2016-04-20
[30]
웹사이트
Cygwin FAQ
https://www.cygwin.c[...]
2023-01-08
[31]
웹사이트
What's new and what changed in Cygwin
https://cygwin.com/c[...]
2024-09-10
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
