*** Welcome to piglix ***

Cooperative Linux

Cooperative Linux
CoLinux logo.png
Original author(s) Dan Aloni
Developer(s) Community
Initial release January 25, 2004; 13 years ago (2004-01-25)
Stable release
0.7.9 / April 9, 2011; 6 years ago (2011-04-09)
Operating system Windows NT family
Type Platform virtualization
License GNU General Public License
Website colinux.org

Cooperative Linux, abbreviated as coLinux, is software which allows Microsoft Windows and the Linux kernel to run simultaneously in parallel on the same machine.

Cooperative Linux utilizes the concept of a Cooperative Virtual Machine (CVM). In contrast to traditional virtual machines, the CVM shares resources that already exist in the host OS. In traditional VM hosts, resources are virtualized for every (guest) OS. The CVM gives both OSs complete control of the host machine while the traditional VM sets every guest OS in an unprivileged state to access the real machine.

The term "cooperative" is used to describe two entities working in parallel. In effect Cooperative Linux turns the two different operating system kernels into two big coroutines. Each kernel has its own complete CPU context and address space, and each kernel decides when to give control back to its partner.

However, while both kernels theoretically have full access to the real hardware, modern PC hardware is not designed to be controlled by two different operating systems at the same time. Therefore, the host kernel is left in control of the real hardware and the guest kernel contains special drivers that communicate with the host and provide various important devices to the guest OS. The host can be any OS kernel that exports basic primitives that allow the Cooperative Linux portable driver to run in CPL0 mode (ring 0) and allocate memory.

Dan Aloni originally started the development of Cooperative Linux based on similar work with User-mode Linux. He announced the development on 25 Jan 2004. In July 2004 he presented a paper at the Linux Symposium. The source was released under the GNU General Public License. Other developers have since contributed various patches and additions to the software.

Cooperative Linux is significantly different from full x86 virtualization, which generally works by running the guest OS in a less privileged mode than that of the host kernel, and having all resources delegated by the host kernel. In contrast, Cooperative Linux runs a specially modified Linux kernel that is Cooperative in that it takes responsibility for sharing resources with the NT kernel and not instigating race conditions.


...
Wikipedia

...