Кіріспе

Windows және Linux жүйелерін іске қосатын бағдарламалық қамтамасыз ету Кооперативтік Linux кооперативтік виртуалды машина (CVM) тұжырымдамасын қолданады. Дәстүрлі виртуалды машиналардан өзгешелігі, CVM хост операциялық жүйедегі қолданыстағы ресурстарды бөліседі. Дәстүрлі VM хосттарында әрбір (қонақ) операциялық жүйе үшін ресурстар виртуалды түрде құрылады. CVM екі операциялық жүйеге де хост машинаны толық бақылауға мүмкіндік береді, ал дәстүрлі VM әрбір қонақ операциялық жүйені нақты машинаға қол жеткізу үшін құқықтары шектеулі күйге қояды.

Шолу

"Кооператив" термині екі параллель жұмыс істейтін жүйені сипаттау үшін қолданылады. Іс жүзінде, Cooperative Linux екі әртүрлі операциялық жүйе ядроларын екі үлкен корутинаға айналдырады. Әрбір ядроның өзіне тән толық CPU контексі және адрестік кеңістігі болады, және әрбір ядро басқаруды өз серігіне қашан қайтару керектігін шешеді. Дегенмен, екі ядро да теориялық тұрғыдан нақты аппараттық құралдарға толық қол жеткізе алса да, қазіргі заманғы PC аппараттық құралдары екі түрлі операциялық жүйемен бір уақытта басқарылуға арналмаған. Сондықтан, хост ядросы нақты аппараттық құралдарды басқару құқығында қалады, ал қонақ ядросында хостпен байланысатын және қонақ операциялық жүйеге түрлі маңызды құрылғыларды ұсынатын арнайы драйверлер орналасқан. Хост, Cooperative Linux портативті драйверін CPL0 режимінде (сақина 0) іске қосуға және жадты бөлуге мүмкіндік беретін негізгі примитивтерді экспорттайтын кез келген операциялық жүйе ядросы болуы мүмкін.

Тарих

Дэн Алони бастапқыда Cooperative Linux-ты User mode Linux-пен ұқсас жұмыстар негізіндегі зерттеу жобасы ретінде дамыта бастады. Ол 2004 жылдың 25 қаңтарында осы жобаны жариялады. 2004 жылдың шілдесінде ол Linux симпозиумында ғылыми еңбекпен шықты. Код GNU General Public License лицензиясымен жарияланды. Кейіннен басқа да әзірлеушілер бағдарламалық қамтамаға түрлі түзетулер мен қосымшалар енгізді.

Салыстырулар

Кооперативтік Linux толық x86 виртуализациясынан едәуір өзгеше, ол әдетте қонақ жүйесін хост ядросынан кем құқықты режимде іске қосу арқылы жұмыс істейді және барлық ресурстар хост ядросымен басқарылады. Ал, Кооперативтік Linux ерекше өзгертілген Linux ядросын іске қосады, ол ресурстарды NT ядросымен бөлісуге жауапкершілік алып, жарыс жағдайларын болдырмайды.

Тарату

Cooperative Linux жаңыртуындағы өзгерістердің көпшілігі i386 ағашында – осы мәтін жазылған кезде Cooperative үшін қолдау көрсетілетін жалғыз архитектура. Басқа өзгерістер көбінесе виртуалды драйверлерді қосу: cobd (блок құрылғысы), conet (желі) және cocon (консоль). i386 ағашындағы өзгерістердің көп бөлігі инициализация және орнату кодына қатысты. Cooperative Linux ядросының мақсаты – дербес i386 ядросына мүмкіндігінше жақын болу, сондықтан барлық өзгерістер локалданып, мүмкіндігінше азайтылады. coLinux пакеті Linux ядросының портын және виртуалды желі құрылғысын орнатады және Windows 2000 немесе Windows XP сияқты Windows операциялық жүйесінің нұсқасында бір уақытта жұмыс істей алады. Ол VMware сияқты виртуалды машинаны пайдаланбайды. Debian, Ubuntu, Fedora және Gentoo coLinux пайдаланушылары арасында ерекше танымал. Виртуалды аппараттың ерекше құрылымына байланысты, Linux дистрибутивтерін coLinux-та орнату әдетте қиын. Сондықтан пайдаланушылар көбінесе нақты бөлімде орнатылған Linux немесе жоба тарапынан таратылатын файл жүйесінің кескінін пайдаланады. Файл жүйесінің кескіндері әртүрлі әдістермен жасалады, соның ішінде қалыпты Linux жүйесінің кескінін алу, инсталляторларды осы ерекше аппараттық құралдармен іске қосудың жолдарын табу, пакет менеджерін пайдаланып қолмен орнату немесе yum және apt сияқты құралдарды қолдана отырып, бар кескіндерді жаңарту. Файл жүйесінің жаңартылған кескінін алудың оңай жолы – Linux орнату үшін QEMU пайдалану және coLinux вики-де сипатталғандай, алғашқы 63 512 байттық блокты алып тастау арқылы кескінді «өзгерту». coLinux графикалық аппараттық құралдарға тікелей қол жеткізе алмайтындықтан, X Window немесе X Server coLinux-та тікелей жұмыс істемейді, бірақ Windows-та, мысалы Cygwin/X немесе Xming сияқты X Server орнатып, KDE немесе GNOME және басқа да Linux қолданбалары мен дистрибутивтерін пайдалануға болады. Бұл мәселелердің барлығы coLinux негізіндегі дистрибутивтерді, мысалы Ubuntu негізіндегі andLinux немесе Slackware негізіндегі TopologiLinux пайдалану арқылы шешіледі.

Эмуляцияланған жабдық

TAP, PCAP, NDIS және SLiRP арқылы Ethernet желісі.

Шектеулер

64 битті Windows немесе Linux әлі қолдамайды (сондай-ақ 4 ГБ-тан артық жадты пайдаланбайды), бірақ қауымдастық осыны қолдау үшін портты жасап жатыр. Көппроцессорлық (SMP) қолдау жоқ. Linux қолданбалары мен ядро тек бір процессорды ғана пайдалана алады.