Popcorn-ը մշակում է բաշխված թելերի կատարման համակարգ Linux միջուկի համար:
Վիրջինիայի տեխ Առաջարկվում է Linux միջուկի մշակողների կողմից քննարկման համար, բաշխված թելերի կատարման համակարգի ներդրմամբ կարկատների մի շարք Ադիբուդի (Distributed Thread Execution), որը թույլ է տալիս կազմակերպել հավելվածների կատարումը մի քանի համակարգիչների վրա՝ հոսթերների միջև թելերի բաշխմամբ և թափանցիկ միգրացիայով։ Popcorn-ի միջոցով հավելվածները կարող են գործարկվել մեկ հոսթի վրա, այնուհետև առանց ընդհատումների տեղափոխվել մեկ այլ հոսթ: Բազմաթելային ծրագրերում թույլատրվում է առանձին շղթաների տեղափոխում այլ հոսթորդներ:
Ի տարբերություն նախագծի CRIUԹույլ տալով պահպանել գործընթացի վիճակը և վերսկսել աշխատանքը մեկ այլ համակարգում, Popcorn-ն ապահովում է անխափան և դինամիկ միգրացիա հոսթերների միջև հավելվածի կատարման ընթացքում՝ չպահանջելով օգտատիրոջ գործողությունները և ապահովելով վիրտուալ հիշողության հետևողականություն բոլոր հոսթերների միջև, որոնք աշխատում են միաժամանակյա շղթաներով:
Popcorn ծրագրային փաթեթի ձևը կարկատաններ Linux միջուկին և գրադարան թեստերով, որոնք ցույց են տալիս, թե ինչպես Popcorn համակարգի զանգերը կարող են օգտագործվել բաշխված հավելվածներում թելերը տեղափոխելու համար: Միջուկի մակարդակում առաջարկվել են վիրտուալ հիշողության ենթահամակարգի ընդարձակումներ՝ բաշխված համօգտագործվող հիշողության ներդրմամբ, որը թույլ է տալիս տարբեր հոսթինգների գործընթացներին մուտք գործել ընդհանուր և հետևողական վիրտուալ հասցեների տարածք: Վիրտուալ հիշողության էջի համահունչությունն ապահովվում է արձանագրությամբ, որը կրկնօրինակում է հիշողության էջերը հոսթին, երբ դրանք կարդացվում են, և անվավեր է դարձնում հիշողության էջերը, երբ գրվում է:
Հոսթերների միջև փոխազդեցությունն իրականացվում է միջուկի մակարդակի մշակողի միջոցով՝ TCP վարդակից փոխանցվող հաղորդագրությունների համար: Նշվում է, որ TCP/IP-ն օգտագործվում է մշակման գործընթացում վրիպազերծումը և թեստավորումը պարզեցնելու համար։ Մշակողները հասկանում են, որ անվտանգության և կատարողականի տեսանկյունից TCP/IP-ն միջուկի կառուցվածքների և հիշողության էջերի բովանդակությունը հոսթերների միջև փոխանցելու լավագույն միջոցը չէ: Բաշխված հավելվածներ գործարկող բոլոր հոսթները պետք է ունենան վստահության նույն մակարդակը: Հիմնական ալգորիթմների կայունացումից հետո կկիրառվի տրանսպորտի ավելի արդյունավետ եղանակ։
Popcorn-ը զարգանում է 2014 թվականից՝ որպես հետազոտական նախագիծ՝ ուսումնասիրելու բաշխված հավելվածների ստեղծման հնարավորությունները, որոնց թելերը կարող են իրականացվել տարբեր հանգույցների վրա։ տարասեռ հաշվողական համակարգեր, որոնք կարող են միավորել միջուկները՝ հիմնված տարբեր հրահանգների հավաքածուների ճարտարապետության վրա (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA): Linux միջուկի մշակողներին առաջարկվող patches-ի հավաքածուն աջակցում է կատարումը միայն x86 պրոցեսորով հոսթների վրա, սակայն կա նաև Popcorn Linux-ի ավելի ֆունկցիոնալ տարբերակ, որը թույլ է տալիս հավելվածներին աշխատել տարբեր պրոցեսորի ճարտարապետություններ ունեցող հոսթերների վրա (x86 և ARM): Պոպկորնը տարասեռ միջավայրում օգտագործելու համար պետք է օգտագործել հատուկ կոմպիլյատոր հիմնված LLVM-ի վրա: Նույն ճարտարապետությամբ հոսթերների վրա բաշխված աշխատելիս առանձին կոմպիլյատորով վերակառուցում չի պահանջվում:
Բացի այդ, կարելի է նշել հայտարարություն փոքր-ինչ նման նախագիծ Telefork սկզբնական նախատիպային API-ի ներդրմամբ՝ կլաստերի այլ համակարգիչների վրա երեխաների պրոցեսները գործարկելու համար (ինչպես fork(), բայց պատառաքաղված գործընթացը տեղափոխում է մեկ այլ համակարգիչ):
Կոդը գրված է Rust-ով և առայժմ թույլ է տալիս միայն շատ պարզ գործընթացների կլոնավորում, որոնք չեն օգտագործում համակարգի ռեսուրսները, ինչպիսիք են ֆայլերը: Երբ telefork զանգ է կատարվում, հիշողությունը և գործընթացին առնչվող կառույցները կլոնավորվում են սերվերի կարգավորիչով աշխատող մեկ այլ հոսթի մեջ (telepad): Օգտագործելով ptrace-ը, պրոցեսի հիշողության արտացոլումը սերիականացվում է և գործընթացի վիճակի և գրանցումների հետ մեկտեղ փոխանցվում է մեկ այլ հոսթին: API-ն թույլ է տալիս նաև պահպանել գործընթացի վիճակը ֆայլում և վերականգնել այն դրա միջոցով: