Linux Çekirdeğindeki bellek yönetimi disk belleği veya segmentasyon veya her ikisini birden kullanarak mı yapılıyor?
Linux Çekirdeğindeki bellek yönetimi disk belleği veya segmentasyon veya her ikisini birden kullanarak mı yapılıyor?
Yanıtlar:
Linux her ikisini de kullanır. Farklı erişim hakları verirken mevcut tüm adres alanını eşlemek için segmentasyon kullanır: temel olarak bir çekirdek ve bir kullanıcı alanı görünümü. Bazı örnekler için KERNEL_DS (çekirdek veri segmenti) için Linux kaynak kodunu kullanabilirsiniz.
Disk belleği daha sonra sanal bellek uygulamak için kullanılır (başlangıç noktası için çekirdekte "struct gdt_page" için Grep)
Linux altında bellek yönetimi yalnızca sayfalama ile çalışır.
Linux hem "küçük" (genellikle 4kB) hem de "büyük" (2M) sayfaları destekler. Eski "sadece" özel bir şey bilmeden veya yapmadan çalışır ve ikincisi özel muamele gerektirir (önyükleme zamanında ayrılmış ve özel bir cihaz ile eşleştirilmesi gerekir).
Linux altında "segment" in göründüğü tek bağlam, bir sürecin veri segmentini arttırmak için kullanılan brk () sistem çağrısıdır (normalde buna ihtiyacınız olmaz, malloc bunu önemsemeden yapar). Ancak her iki durumda da, bellek sayfalarda gelir ve sayfalarda yönetilir ve x86 segmentasyonu ile ilgisi yoktur.