เวอร์จิเนียเทค предложил สำหรับการอภิปรายโดยนักพัฒนาเคอร์เนล Linux ซึ่งเป็นชุดแพตช์ที่มีการนำระบบปฏิบัติการเธรดแบบกระจายไปใช้ ข้าวโพดคั่ว (Distributed Thread Execution) ซึ่งช่วยให้คุณสามารถจัดระเบียบการทำงานของแอปพลิเคชันบนคอมพิวเตอร์หลายเครื่องด้วยการกระจายและการโยกย้ายเธรดระหว่างโฮสต์อย่างโปร่งใส ด้วย Popcorn แอปพลิเคชันสามารถเปิดบนโฮสต์หนึ่งแล้วย้ายไปยังโฮสต์อื่นได้โดยไม่หยุดชะงัก ในโปรแกรมแบบมัลติเธรด อนุญาตให้ย้ายแต่ละเธรดไปยังโฮสต์อื่นได้
ไม่เหมือนโครงการ คริวด้วยการอนุญาตให้บันทึกสถานะกระบวนการและดำเนินการต่อบนระบบอื่น Popcorn จึงสามารถโยกย้ายแบบไดนามิกระหว่างโฮสต์ได้อย่างราบรื่นในระหว่างการดำเนินการแอปพลิเคชัน โดยผู้ใช้ไม่ต้องดำเนินการใด ๆ และรับประกันความสอดคล้องของหน่วยความจำเสมือนในโฮสต์ทั้งหมดที่ทำงานเธรดพร้อมกัน
แบบฟอร์มกองซอฟต์แวร์ป๊อปคอร์น แพทช์ ไปยังเคอร์เนล Linux และ ห้องสมุด พร้อมการทดสอบที่สาธิตวิธีการใช้การเรียกของระบบ Popcorn เพื่อย้ายเธรดในแอปพลิเคชันแบบกระจาย ในระดับเคอร์เนล มีการเสนอส่วนขยายไปยังระบบย่อยหน่วยความจำเสมือนด้วยการใช้หน่วยความจำที่ใช้ร่วมกันแบบกระจาย ซึ่งช่วยให้กระบวนการบนโฮสต์ที่แตกต่างกันสามารถเข้าถึงพื้นที่ที่อยู่เสมือนทั่วไปและสอดคล้องกัน รับประกันการเชื่อมโยงกันของเพจหน่วยความจำเสมือนด้วยโปรโตคอลที่จำลองเพจหน่วยความจำไปยังโฮสต์เมื่อมีการอ่าน และทำให้เพจหน่วยความจำใช้งานไม่ได้เมื่อเขียน
การโต้ตอบระหว่างโฮสต์จะดำเนินการโดยใช้ตัวจัดการระดับเคอร์เนลสำหรับข้อความที่ส่งผ่านซ็อกเก็ต TCP มีข้อสังเกตว่า TCP/IP ใช้เพื่อทำให้การดีบักและการทดสอบง่ายขึ้นในระหว่างกระบวนการพัฒนา นักพัฒนาเข้าใจว่าจากมุมมองด้านความปลอดภัยและประสิทธิภาพ TCP/IP ไม่ใช่วิธีที่ดีที่สุดในการถ่ายโอนเนื้อหาของโครงสร้างเคอร์เนลและเพจหน่วยความจำระหว่างโฮสต์ โฮสต์ทั้งหมดที่ใช้งานแอปพลิเคชันแบบกระจายจะต้องมีระดับความน่าเชื่อถือเท่ากัน หลังจากการรักษาเสถียรภาพของอัลกอริธึมหลักแล้ว โหมดการขนส่งที่มีประสิทธิภาพมากขึ้นจะถูกนำมาใช้
Popcorn ได้รับการพัฒนามาตั้งแต่ปี 2014 โดยเป็นโครงการวิจัยเพื่อศึกษาความเป็นไปได้ในการสร้างแอปพลิเคชันแบบกระจาย ซึ่งเธรดสามารถดำเนินการบนโหนดต่างๆ ใน ต่างกัน ระบบคอมพิวเตอร์ที่สามารถรวมคอร์ตามสถาปัตยกรรมชุดคำสั่งที่แตกต่างกัน (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA) ชุดแพตช์ที่เสนอให้กับนักพัฒนาเคอร์เนล Linux รองรับเฉพาะการดำเนินการบนโฮสต์ที่มี CPU x86 เท่านั้น แต่ยังมี Popcorn Linux เวอร์ชันที่ใช้งานได้มากกว่า ซึ่งช่วยให้แอปพลิเคชันทำงานบนโฮสต์ที่มีสถาปัตยกรรม CPU ที่แตกต่างกัน (x86 และ ARM) หากต้องการใช้ป๊อปคอร์นในสภาพแวดล้อมที่แตกต่างกัน คุณต้องใช้คุณสมบัติพิเศษ คอมไพเลอร์ ขึ้นอยู่กับ LLVM เมื่อรันแบบกระจายบนโฮสต์ที่มีสถาปัตยกรรมเดียวกัน ไม่จำเป็นต้องสร้างใหม่ด้วยคอมไพเลอร์แยกต่างหาก
นอกจากนี้ยังสามารถสังเกตได้ ประกาศ โครงการที่ค่อนข้างคล้ายกัน เทเลฟอร์ก ด้วยการนำ API ต้นแบบเริ่มต้นไปใช้สำหรับการเรียกใช้กระบวนการลูกบนคอมพิวเตอร์เครื่องอื่นในคลัสเตอร์ (เช่น fork() แต่ถ่ายโอนกระบวนการที่แยกไปยังคอมพิวเตอร์เครื่องอื่น)
โค้ดนี้เขียนด้วยภาษา Rust และจนถึงขณะนี้อนุญาตให้ทำการโคลนกระบวนการง่ายๆ ที่ไม่ได้ใช้ทรัพยากรระบบ เช่น ไฟล์เท่านั้น เมื่อทำการเรียก Telefork หน่วยความจำและโครงสร้างที่เกี่ยวข้องกับกระบวนการจะถูกโคลนไปยังโฮสต์อื่นที่รันตัวจัดการเซิร์ฟเวอร์ (telepad) การใช้ ptrace การสะท้อนหน่วยความจำของกระบวนการจะถูกทำให้เป็นอนุกรม และพร้อมกับสถานะของกระบวนการและการลงทะเบียน จะถูกถ่ายโอนไปยังโฮสต์อื่น API ยังช่วยให้คุณบันทึกสถานะกระบวนการลงในไฟล์และกู้คืนผ่านไฟล์นั้นได้
ที่มา: opennet.ru