Bana öyle geliyor ki, oldukça benzerler. Peki levha ve arkadaş sistemi arasındaki ilişki nedir?Döşeme ve dost sistem arasındaki fark nedir?
cevap
Bir levha aynı boyuttaki nesnelerin bir koleksiyonudur. Oldukça büyük bir bellek bloğu tahsis ederek ve onu eşit boyutlu parçalara bölerek parçalanmayı önler. Parçaların sayısı tipik olarak ikiden çok daha büyüktür, yani 128 ya da öylesine.
Döşeme kullanmanın iki yolu vardır. Öncelikle, çok sık ayırdığınız bir boyut için bir kütük olabilir. Örneğin, bir çekirdek bir inode slab olabilir. Ancak, 128 baytlık bir slab, 192 baytlık bir slab, 256 baytlık bir slab gibi, ilerleyici boyutlarda bir dizi slab da olabilir. Daha sonra, bir sonraki slab boyutundan herhangi bir boyuttaki bir nesneyi ayırabilirsiniz.
Her iki durumda da, bir slabın, tüm slab genel bir "büyük blok" ayırıcısına geri gönderilmediği sürece, farklı boyuttaki bir nesnenin belleğini yeniden kullanmaz.
Arkadaşlık sistemi, her nesnenin, serbest bırakıldığında bir araya getirilen "arkadaş" nesnesine sahip olduğu ilişkisiz bir yöntemdir. Küçük bloklara ihtiyaç duyulduğunda bloklar yarıya bölünür. Arkadaş sistemde blokların ayrıldığını ve birincil kullanım aracı olarak daha büyük bloklara dönüştürüldüğünü ve yeniden kullanım için geri döndüğünü unutmayın. Bu, plakaların nasıl çalıştığından çok farklı.
Ya da daha basit bir ifade edilecek olursa
eşleştirme sistemi: ayrılan ve birleştirildi zaman çeşitli boyutlarda bloklar ayrılır gerektiğinde verimli çeşitli boyutlarda küçük bloklar halinde büyük bir blok bölmek için serbest zaman.
Slab: Çok büyük bloklar ayrılır ve eşit büyüklükte bloklara bölünür. Başka hiçbir bölünme ya da birleşme gerçekleşmez ve serbest bırakılan bloklar daha sonraki tahsislere tahsis edilecek bir listede tutulur.
Linux çekirdeğinin çekirdek ayırıcısı, esnek bir arkadaş sistem ayırıcısıdır. Bu ayırıcı, çeşitli döşeme allcoator'ları için plakalar sağlar.
Genel olarak döşeme ayırıcısı, önceden tanımlanmış boyut elemanlarını yerleştirmek için uygun sabit boyutlu bir plaka listesidir. Aynı boyuttaki havuzdaki tüm nesneler parçalanma değildir.
Buddy ayırıcısı, belleği ikiye katlanan parçalara ayırır. Örneğin, min yığın 1k ise, sonraki 2K, sonra 4K vb. Olacaktır. Yani eğer 100b'yi tahsis etmeyi talep edersek, 1k boyutu olan yığın seçilecektir. Parçalanmaya neden olan şey, ancak keyfi boyutta nesnelerin tahsis edilmesine izin verir (bu nedenle, tam nesne boyutunun herhangi bir boyutta olabileceği kullanıcı bellek ayırmalarına çok uygundur).
Ayrıca bakınız: https://en.wikipedia.org/wiki/Buddy_memory_allocation
- https://en.wikipedia.org/wiki/Slab_allocation
- Ayrıca kötü bu sunumlar kontrol edin: http://events.linuxfoundation.org/images/stories/pdf/klf2012_kim.pdf Slaytlar sayfa 22 farklılıklarına özetini göstermektedir.
- 1. Sistem hesabı ve kullanıcı hesabı altında çalışmak arasındaki fark nedir?
- 2. Python'da {} ve [] arasındaki fark nedir?
- 3. UNIX'teki $ @ ve $ * arasındaki fark nedir?
- 4. $ arasındaki fark nedir? ve PowerShell
- 5. CoreLocationManager'ın distanceFilter ve requestedAccuracy arasındaki fark nedir?
- 6. EditText'te drawableLeft ve drawableStart arasındaki fark nedir?
- 7. Kulp ve iplik arasındaki fark nedir?
- 8. ProgramData ve AppData arasındaki fark nedir?
- 9. Cacerts ve keystore arasındaki fark nedir?
- 10. Fark() arasındaki fark nedir mustache.js
- 11. arasındaki fark nedir?
- 12. Java arasındaki fark nedir
- 13. arasındaki fark nedir?
- 14. arasındaki fark nedir?
- 15. OSM haritalarında döşeme sunucusu nedir?
- 16. app.doScript ve $ .evalFile arasındaki fark nedir?
- 17. gVim ve gVim arasındaki fark nedir?
- 18. isAlpha ve isLetter arasındaki fark nedir?
- 19. Control.Enter ve Control.GotFocus olayları arasındaki fark nedir?
- 20. .got ve .got.plt bölümü arasındaki fark nedir?
- 21. AutomationProperties.AutomationID ve AutomationProperties.Name arasındaki fark nedir?
- 22. Android'de getDir ve getFilesDir arasındaki fark nedir?
- 23. R içinde `=` ve `<-` arasındaki fark nedir?
- 24. uint ve System.UInt32 arasındaki fark nedir?
- 25. PropertyChangeListener ve VetoableChangeListener arasındaki fark nedir?
- 26. XSS'de IDREF ve IDREFS arasındaki fark nedir?
- 27. GPLv2 ve GPLv3 arasındaki fark nedir?
- 28. VarIsEmpty ve VarIsEmptyParam işlevleri arasındaki fark nedir
- 29. ActiveSupport'ta mattr_accessor ve cattr_accessor arasındaki fark nedir?
- 30. Hashtable ve Dictionary arasındaki fark nedir?
Ayrıca, cevabınızdaki buddy allocator ve slab allocator arasındaki bağlantıyı açıklayabiliyorsanız oldukça hoş olurdu (bu gibi bir şey (http://image.slidesharecdn.com/mm-121212232739-phpapp02/95/linux- bellek yönetimi-11-638.jpg? cb = 1355354903), ama muhtemelen daha fazla detay ile). Teşekkürler. –