Linux 6.3: C’den uzaklaşmanın yolunu açıyor

hadicanim

Aktif Üye
Yeni Linux 6.3’ün şu anda kullanılabilir olan özellikleri, çekirdek sürümünün bir bakım sürümü gibi görünmesini sağlar. Ancak içeride büyük ayaklanmalar başgösteriyor.


Assembler’daki bazı mimariye özgü parçalar dışında, Linux çekirdeği C programlama dilinde yazılmıştır. Yeni işlevler ve sürücüler yalnızca C kodu olarak dahil edilebilir. Uzun zamandır yerleşik kabul edilen şey giderek yumuşamaktadır. Rust’ı çekirdeğe entegre etmek için atılan hızlı adımlara ek olarak eBPF, daha önce C için ayrılan işlevselliği çekirdeğe getirmek için giderek daha fazla bir alternatif haline geliyor.

Genişletilmiş Berkeley Paket Filtresi: eBPF için Kırmızı-Siyah-Ağaçlar


Linux 6.3, çekirdeğin “kırmızı-siyah ağaçlarına” (rbtrees) eBPF programlarından. bu rbtrees dosya sistemleri, G/Ç ve CPU programlayıcıları ve ağ protokolleri dahil olmak üzere çekirdeğin birçok yerde yaygın olarak kullandığı bir ikili arama ağaçları biçimidir. eBPF programları, (hala) basit bir API (Uygulama Programlama Arayüzü) aracılığıyla ağaçlara erişebilir ve düğümleri ekleyip silebilir. Bu API’nin gelecekteki çekirdek sürümlerinde genişletilmesi bekleniyor.


Bu doğrudan erişim rbtrees eBPF dışında dikkat çekicidir. Şimdiye kadar, çekirdekten gelen karmaşık veri yapıları yalnızca eBPF haritaları olarak kullanılabiliyordu. Çekirdekteki eBPF motorunun, çekirdekteki karmaşık veri yapılarını işlemek için ne ayrıcalıkları ne de ihtiyacı vardı.

Linux 5.13 ile eBPF için çekirdek işlevlerine zaten doğrudan erişilebilirdi. O zamanlar bu adım hala “birleştirme” hedefiyle açıklanabiliyordu. 5.13’ten önceki çekirdek işlevlerine erişim üzerindeki kısıtlamalar, eBPF’de basit bir şekilde paralel bir dünya yarattı, böylece önemli çekirdek işlevleri kullanılmaya devam edilebilirdi. “TCP Tıkanıklık Kontrolü” o zamanlar öncü ve özel bir durumdu.

açarak rbtrees eBPF için şimdi farklı davranıyor. Normalde, bu tür yeni API’ler yalnızca çekirdeğin kendisinde zaten belirli bir kullanım durumu varsa dahil edilir. Ancak bu sefer böyle bir şey yok. Daha ziyade, geleceğin rotasını belirleme meselesidir. Bu bağlamda, eBPF bakımcısı Alexei Starovoitov’un Dublin’deki “Linux Plumbers Conference 2022″de yaptığı açıklamalar insanların dikkatini çekmesine neden oluyor. eBPF üzerindeki çalışmanın arkasındaki amaç, çekirdek programlama için C programlama dilinin daha güvenli bir sürümünü oluşturmaktır.


eBPF böylece gelecekte çekirdeğe yeni ve güvenli alternatif işlevler eklemek için kendini konumlandırıyor. eBPF ayrıca yardımcı işlevleriyle kullanıcı alanı ile çekirdek alanı arasındaki boşluğu kapattığı için, bu şüphesiz arka kapıdan bir mikro çekirdek mimarisini anımsatıyor.

Linux 6.3: Rust entegrasyonu ilerlemeleri


Rust, Linux 6.1’den beri çekirdeğe resmen geldi, ancak Linux 6.2’deki Rust uzantılarıyla bile, küçük örnekler ve “Merhaba dünya!” dışarı. Ancak perde arkasında, Rust çerçevesindeki yumruklamalar şaşırtıcı derecede hızlı ve pratik bir şekilde ilerliyor.

Pratik bir kullanım örneği, Asahi Lina’nın Rust’ta programladığı ve Eylül 2022’de geliştirici aşamasında çalıştırdığı Apple donanımı için bir grafik sürücüsüdür. Sürücü için, geliştiricinin çekirdek altyapısında henüz bulunmayan bir dizi Rust modülüne ihtiyacı vardır. Kernel 6.3 için, büyük Rust resmi için bazı yapboz parçalarına katkıda bulunuyor. Japon modüllerinden biri, Rust’ı çekirdeğe entegre etmenin zorluklarını gösteriyor.

Diğer şeylerin yanı sıra Lina, zaman fonksiyonları için bir modül getirdi. Çekirdekte birkaç zamanlama işlevi vardır. ktime_*her zaman temelde 64-bit olarakInteger veya C-union daha çeşitli Integervaryanta bağlı olarak saniye veya nanosaniye cinsinden. Bunun gibi Integer– yorumlanacak değer, onu sağlayan işleve bağlıdır. Orası ktime_get_boottime() sistemin yeniden başlamasından bu yana geçen saniyeler, ktime_get_real() Ancak, saniyeler 1 Ocak 1970’ten bu yana, yani Epoch/Unix zamanında. Bu nedenle, değişen zaman içinde sabit bir noktaya göre her zaman bir farktır. Ancak bu sabit nokta, döndürülen değerde hiçbir yerde görünmez.



Haberin Sonu