სისტემური პროგრამირების სამყაროში არსებობს ტექნოლოგია, რომელიც წლების განმავლობაში ფართო საზოგადოებისთვის შეუმჩნეველი რჩებოდა. საუბარია Restartable Sequences-ზე (rseq), რომელიც Linux-ის ბირთვში 2018 წლიდან, 4.18 ვერსიიდან არის ინტეგრირებული.
ტრადიციულად, მრავალბირთვიან პროცესორებზე მონაცემთა სტრუქტურების მართვა მოითხოვს „ლოკებს“ (locks) ან ატომურ ოპერაციებს, რაც სისტემის მუშაობას ანელებს. rseq-ის მთავარი უპირატესობა სწორედ ამ შეზღუდვების მოხსნაა.
რატომ არის rseq გარღვევა?
თანამედროვე პროცესორები უკვე 128 ან 192 ბირთვს ითვლის. ასეთ პირობებში, ძველი მიდგომები, რომლებიც ერთ ბირთვზე იყო ორიენტირებული, არაეფექტური ხდება. rseq საშუალებას იძლევა, მონაცემთა სტრუქტურები ისე დავწეროთ, რომ მათ არ დასჭირდეთ მუდმივი სინქრონიზაცია.
სისტემა მუშაობს როგორც „პაწაწინა ტრანზაქციები“. როდესაც პროგრამა კრიტიკულ მონაკვეთს ასრულებს, ბირთვი აკვირდება, ხდება თუ არა პროცესის შეწყვეტა. თუ ოპერაცია შეფერხდა, სისტემა ავტომატურად აბრუნებს პროცესს საწყის წერტილში ხელახალი მცდელობისთვის.
შედეგები და პრაქტიკული სარგებელი
პროგრამისტი ჯასტინე, რომელიც ამ ტექნოლოგიის აქტიური მომხრეა, აღნიშნავს, რომ rseq-ის გამოყენებამ მისი მატრიცული გამოთვლების კოდი ათჯერ და მეტჯერ დააჩქარა. ეს არ არის უბრალო ოპტიმიზაცია — ეს არის განსხვავება მუშა სისტემასა და მაღალი დატვირთვის მქონე სერვერს შორის.
- სწრაფი წვდომა: CPU-ს ნომრის მიღება 1 მიკროწამიდან 1 ნანოწამამდე მცირდება.
- მეხსიერების ეფექტურობა: TLS (Thread Local Storage) მეხსიერების მეშვეობით მონაცემთა გაცვლა ხდება პირდაპირ ბირთვთან.
- მინიმალური დანახარჯი: უქმდება mutex-ის საჭიროება, რაც დატვირთულ სისტემებში 15-200 ნანოწამიან დაყოვნებას ზოგავს.
მომავლის პერსპექტივა
მიუხედავად იმისა, რომ დღეს rseq-ის გამოყენება ძირითადად ხელით დაწერილ ასემბლერის კოდს მოითხოვს, ექსპერტები ვარაუდობენ, რომ უახლოეს მომავალში ყველა ოპერაციული სისტემა და პროგრამირების ენა ადაპტირდება ამ სტანდარტთან. ეს არის აუცილებელი ნაბიჯი, რათა პროგრამულმა უზრუნველყოფამ ფეხი აუწყოს ტექნიკურ პროგრესს.




დისკუსია
0 კომენტარი
ჯერ კომენტარი არ არის — იყავი პირველი.