The Cygwin project was started in 1995 by Steve Chamberlain to allow GNU tools to be used on Windows. Since much of x86 and COFF format for Windows is already understood, the GCC compiler can be retooled for Windows.
To do this, the required Unix functionality is emulated on Windows to allow the GNU tool chain to be ported. Calls to Posix functions are translated to Win32 implementation.
Cygwin in contrast to MinGW
Cygwin applications by principle are not considered a "Native Win32 application" because it relies on the Cygwin® POSIX Emulation DLL or cygwin1.dll for Posix functions and does not use win32 functions directly. MinGW on the other hand, provides functions supplied by the Win32 API. While porting applications under MinGW, functions not native to Win32 such as fork(), mmap() or ioctl() will need to be reimplemented into Win32 equivalents for the application to function properly.