Perbezaan antara mmap dan malloc Perbezaan Antara

Anonim

mmap vs malloc

Memori yang dinamik di C dan titik ini untuk peruntukan memori dalam bahasa pengaturcaraan C melalui satu set fungsi yang ada dalam perpustakaan standard C. Salah satunya adalah malloc, yang merujuk kepada peruntukan memori. Dalam sistem UNIX terdapat mmap, yang merujuk kepada sistem dipetakan memori yang disertakan dengan I / O uniknya sendiri. Kedua-dua (mmap dan malloc) pada nilai muka akan melaksanakan fungsi yang sama tetapi pengawasan lanjut menunjukkan beberapa perbezaan. Perbezaan ini, yang timbul daripada fungsi, digariskan di bawah.

Perbezaan

Mula-mula, adalah penting untuk menentukan sama ada terdapat sebarang bukti yang menunjukkan bahawa terdapat memori yang menyekat yang signifikan. Ini dilakukan melalui ukuran prestasi program terhadap pengurusan memori.

Antara muka peruntukan memori utama adalah malloc. Ini adalah yang terbesar di perpustakaan C. Sebahagian daripada kod pengurusan yang terkandung di dalamnya adalah mmap. Apabila malloc sedang berjalan, ia mengumpulkan semua kemudahan sistem yang ada. Kemudahan sistem tambahan boleh digerakkan melalui kernel, yang merupakan salah satu strategi pengurusan memori yang digunakan oleh sistem untuk memastikan terdapat peruntukan memori yang memuaskan. Proses ini tidak mudah, namun, dan telah dibuat menjadi rumit untuk sebab-sebab tunggal untuk menghalang orang daripada membuat program mudah yang boleh mengganggu peruntukan memori dan dengan itu mewujudkan prestasi yang lemah.

'mmap' di sebaliknya adalah panggilan sistem yang mengambil alih dan meminta kernel untuk mencari rantau yang tidak digunakan dan bersebelahan dalam suatu alamat aplikasi yang cukup besar untuk membolehkan pemetaan beberapa halaman ingatan. Terdapat juga struktur pengurusan memori maya yang berkuat kuasa tidak boleh menyebabkan segfault.

Malloc umumnya berfungsi dalam kebanyakan proses pengurusan memori. Sekiranya program memerlukan memori tambahan, ini dipinjam dari OS. Mmap sebaliknya menggunakan suis konteks yang menukar menjadi tanah kernel.

Malloc paling sesuai untuk mengagihkan memori dalam mana-mana aplikasi yang berjalan pada sistem berbanding dengan penggunaan mmap. Ini adalah apa yang diperlukan untuk berlaku secara lalai, selain daripada kes-kes khas apabila ia dibenarkan.

Mmap boleh digunakan untuk mempercepat tindak balas yang diberikan oleh aplikasi. Walau bagaimanapun, ini tidak digalakkan kerana ia akhirnya mengorbankan beberapa bait ke halaman agar aplikasi berjalan lancar. Walaupun kandungan data mungkin kelihatan kecil pada mulanya, mengekstrapulasi apabila banyak aplikasi yang ingin dijalankan mungkin berkuat kuasa memperlahankan sistem lebih jauh lagi.

Selepas mengukur prestasi dan penggunaan sumber, penilaian menyeluruh penggunaan data oleh semua aplikasi yang dijalankan pada sistem perlu dilakukan.Jika jangka hayat aplikasi berjalan boleh ditunjukkan, ia boleh menjadi lebih baik.

Kegunaan mmap untuk mengagihkan memori datang dengan kelemahan bahawa peruntukan dan deallocation data dalam ketulan adalah mahal. Ini kerana data dibahagikan kepada banyak kawasan, dan juga menafikan mmap daripada membuat panggilan sistem.

Mmap berfaedah berbanding malloc kerana memori yang digunakan oleh mmap segera dikembalikan ke OS. Memori yang digunakan oleh malloc tidak akan dikembalikan kecuali terdapat segmen data yang terputus. Ingatan ini secara khusus disimpan untuk digunakan semula.

Ringkasan

'malloc' bermaksud titik peruntukan memori utama

Sistem panggilan mmap dan meminta kernel untuk mencari kawasan yang tidak digunakan dalam alamat aplikasi yang dapat menampung pemetaan beberapa halaman ingatan

Mmap tidak disyorkan untuk memperuntukkan memori kerana ia memisahkan memori yang tersedia dan tidak boleh membuat panggilan sistem

Manfaat mmap lebih malloc adalah ketersediaan memori, berbanding dengan memori malloc, yang digunakan semula.