A Popcorn elosztott szálvégrehajtási rendszert fejleszt a Linux kernelhez.
Virginia Tech felajánlotta A Linux kernel fejlesztőinek megbeszélésére egy elosztott szál-végrehajtási rendszert megvalósító javításkészlet Popcorn (Distributed Thread Execution), amely lehetővé teszi az alkalmazások végrehajtásának megszervezését több számítógépen a szálak hosztok közötti elosztásával és átlátható migrációjával. A Popcorn segítségével az alkalmazások egy gazdagépen indíthatók, majd megszakítás nélkül áthelyezhetők egy másik gazdagépre. A többszálú programokban megengedett az egyes szálak áttelepítése más gazdagépekre.
A projekttel ellentétben CRIUAzáltal, hogy lehetővé teszi a folyamatállapot mentését és a végrehajtás folytatását egy másik rendszeren, a Popcorn zökkenőmentes és dinamikus migrációt biztosít a gazdagépek között az alkalmazás végrehajtása során, nem igényel felhasználói beavatkozást, és biztosítja a virtuális memória konzisztenciáját az összes, párhuzamos szálakat futtató gazdagépen.
Popcorn szoftver verem formában foltok a Linux kernelhez és библиотека tesztekkel, amelyek bemutatják, hogyan használhatók a Popcorn rendszerhívások szálak migrálására elosztott alkalmazásokban. Kernel szinten a virtuális memória alrendszer kiterjesztését javasolták az elosztott megosztott memória megvalósításával, amely lehetővé teszi, hogy a különböző gazdagépeken lévő folyamatok hozzáférjenek egy közös és konzisztens virtuális címtérhez. A virtuális memórialapok koherenciáját egy olyan protokoll biztosítja, amely replikálja a memórialapokat a gazdagéphez olvasáskor, és érvényteleníti a memórialapokat íráskor.
A gazdagépek közötti interakció egy kernel szintű kezelő segítségével történik a TCP socketen keresztül továbbított üzenetekhez. Megjegyzendő, hogy a TCP/IP-t a fejlesztési folyamat során a hibakeresés és a tesztelés egyszerűsítésére használják. A fejlesztők tisztában vannak azzal, hogy biztonsági és teljesítmény szempontjából a TCP/IP nem a legjobb módja a kernelstruktúrák és a memórialapok tartalmának átvitelének a gazdagépek között. Minden elosztott alkalmazásokat futtató gazdagépnek azonos szintű megbízhatósággal kell rendelkeznie. A fő algoritmusok stabilizálása után egy hatékonyabb szállítási mód kerül alkalmazásra.
A Popcorn 2014 óta fejleszt kutatási projektként az elosztott alkalmazások létrehozásának lehetőségeit, amelyek szálai különböző csomópontokon futtathatók. heterogén olyan számítási rendszerek, amelyek különböző utasításkészlet-architektúrákon (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA) alapuló magokat kombinálhatnak. A Linux kernel fejlesztőinek javasolt javításkészlet csak x86-os CPU-val rendelkező gépeken támogatja a végrehajtást, de létezik a Popcorn Linux funkcionálisabb verziója is, amely lehetővé teszi az alkalmazások futtatását különböző CPU architektúrájú gépeken (x86 és ARM). A Popcorn heterogén környezetben való használatához speciális eszközt kell használnia fordítóprogram LLVM alapján. Az azonos architektúrájú gazdagépeken történő elosztott végrehajtáshoz nincs szükség külön fordítóval történő újraépítésre.
Ezen kívül meg lehet jegyezni közlemény kicsit hasonló projekt Telefork egy kezdeti prototípus API megvalósításával a gyermekfolyamatok elindításához a fürt más számítógépein (például a fork(), de átviszi az elágazott folyamatot egy másik számítógépre).
A kód Rust nyelven íródott, és eddig csak nagyon egyszerű folyamatok klónozását teszi lehetővé, amelyek nem használnak rendszererőforrásokat, például fájlokat. Telefork hívás indításakor a memória és a folyamattal kapcsolatos struktúrák egy másik gazdagépre klónozódnak, amely a szerverkezelőt (telepad) futtatja. A ptrace segítségével egy folyamat memóriareflexiója sorba rendeződik, és a folyamat állapotával és a regiszterekkel együtt átkerül egy másik gazdagépre. Az API azt is lehetővé teszi, hogy a folyamat állapotát fájlba mentse, és azon keresztül visszaállítsa.