Virginia Polytechnic Institute and State University til diskussion blandt udviklerne af Linux-kernen om et sæt patches til implementering af et distribueret trådudførelsessystem (Distribueret Trådudførelse), der gør det muligt at organisere udførelsen af applikationer på flere computere med fordeling og gennemsigtig migration af tråde mellem værter. Ved hjælp af Popcorn kan applikationer startes på en vært og derefter flyttes til en anden vært uden at stoppe arbejdet. I flertrådede programmer tillades migration af individuelle tråde til andre værter.
I modsætning til projektet , der gør det muligt at gemme en proces' tilstand og genoptage udførelsen på et andet system, tilbyder Popcorn sømløs og dynamisk migration mellem værter under udførelsen af applikationen, uden at brugeren skal gøre noget, og sikrer konsistensen af den virtuelle hukommelse på alle værter, hvor tråde samtidig udføres.
Popcorn-softwarestakken består af til Linux-kernen og med tests, der demonstrerer, hvordan man kan bruge Popcorn's systemopkald til at migrere tråde i distribueret udførte applikationer. Niveauet for kernen tilbyder udvidelser til den virtuelle hukommelsesundersystem med implementering af delt distribueret hukommelse (distributed shared memory), hvilket gør det muligt for processer på forskellige værter at få adgang til et fælles og konsistent virtuelt adressrum. Konsistensen af siderne i den virtuelle hukommelse sikres ved hjælp af en protokol, der replikerer sider i hukommelsen på værten, når de tilgås til læsning, og invaliderer sider i hukommelsen, når der udføres skrivning.
Interaktionen mellem værter udføres ved hjælp af en kernel-niveau meddelelseshåndterer, der sender via TCP-socket. Det bemærkes, at TCP/IP anvendes for at forenkle fejlsøgning og testning under udviklingsprocessen. Udviklere forstår, at set fra et sikkerheds- og præstationsperspektiv er TCP/IP ikke den bedste metode til at overføre indholdet af kerne- og hukommelsessider mellem værter. Alle værter, der kører distribuerede applikationer, skal have identisk tillidsniveau. Når de grundlæggende algoritmer er stabiliseret, vil der blive anvendt en mere effektiv transportform.
Popcorn har udviklet sig siden 2014 som et forskningsprojekt til at studere muligheden for at skabe distribuerede applikationer, hvis strømme kan udføres på forskellige noder i computersystemer, hvor kerner baseret på forskellige instruktionssætarkitekturer (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA) kan kombineres. Den foreslåede sæt af patches til Linux-kernen understøtter kun udførelse på værter med CPU x86, men der findes en mere funktionel variant af Popcorn Linux, der gør det muligt at køre applikationer på værter med forskellige CPU-arkitekturer (x86 og ARM). For at bruge Popcorn i heterogene miljøer er det nødvendigt at anvende en speciel baseret på LLVM. Ved distribueret udførelse på værter med samme arkitektur kræves der ikke en genopbygning med en separat kompilator.
Derudover kan det nævnes, af et lignende projekt med implementeringen af en grundprototype API til at starte underprocesser på andre computere i klyngen (som fork(), men flytter den afstikkende proces til en anden computer).
Koden er skrevet i Rust og tillader indtil videre kun kloning af de enkleste processer, hvor der ikke anvendes systemressourcer som filer. Ved kaldet til telefork klones hukommelsen og de relaterede processtrukturer til en anden vært, hvor serverhåndtereren (telepad) kører. Ved hjælp af ptrace serialiseres processen hukommelse og overføres sammen med processtatus og registre til en anden vært. API'et tillader også at gemme processtatus i en fil og gendanne den derfra.
Kilde: opennet.ru
