Perbedaan antara mmap dan malloc

mmap vs malloc

Ada memori dinamis dalam C dan ini menunjuk ke alokasi memori dalam bahasa pemrograman C melalui serangkaian fungsi yang ada di pustaka standar C. Salah satunya adalah malloc, yang mengacu pada alokasi memori. Dalam sistem UNIX ada mmap, yang mengacu pada sistem pemetaan memori yang datang dengan I / O yang unik. Dua ini (mmap dan malloc) akan pada nilai nominal melakukan fungsi yang sama tetapi pemeriksaan lebih lanjut mengungkapkan beberapa perbedaan. Perbedaan-perbedaan ini, yang muncul dari fungsi, diuraikan di bawah ini.

Perbedaan

Pertama, penting untuk menentukan apakah ada bukti yang menunjukkan bahwa ada kekekalan signifikan dari memori yang tersedia. Ini dilakukan melalui pengukuran kinerja program terhadap manajemen memori .

Antarmuka alokasi memori utama adalah malloc. Ini adalah yang terbesar di perpustakaan C. Bagian dari kode manajemen yang terkandung di dalamnya adalah mmap. Ketika malloc berjalan, ia mengumpulkan semua fasilitas sistem yang tersedia. Fasilitas sistem tambahan dapat dimobilisasi melalui kernel, yang merupakan salah satu strategi manajemen memori yang digunakan sistem untuk memastikan bahwa ada alokasi memori yang memuaskan. Prosesnya tidak mudah, dan dibuat rumit karena alasan tunggal mencegah orang membuat program sederhana yang dapat mengacaukan alokasi memori dan karenanya menciptakan kinerja yang buruk..

'mmap' di sisi lain adalah panggilan sistem yang mengambil alih dan meminta kernel untuk menemukan wilayah yang tidak digunakan dan berdekatan di alamat aplikasi yang cukup besar untuk memungkinkan pemetaan beberapa halaman memori. Ada juga pembuatan struktur manajemen memori virtual yang pada dasarnya tidak dapat menghasilkan segfault.

Malloc umumnya berfungsi di sebagian besar proses manajemen memori. Jika program membutuhkan memori tambahan, ini dipinjam dari OS. Mmap di sisi lain menggunakan switch konteks yang dikonversi menjadi kernel.

Malloc paling cocok untuk mengalokasikan memori dalam aplikasi apa pun yang berjalan pada sistem dibandingkan dengan penggunaan mmap. Ini adalah apa yang diperlukan untuk terjadi secara default, selain dalam kasus khusus ketika hal itu diizinkan.

Mmap dapat digunakan untuk mempercepat respon yang diberikan oleh aplikasi. Namun ini tidak disarankan karena pada akhirnya mengorbankan beberapa byte ke halaman agar aplikasi dapat berjalan dengan lancar. Meskipun konten data mungkin tampak kecil pada awalnya, mengekstrapolasi ketika banyak aplikasi yang ingin dijalankan mungkin memperlambat sistem lebih jauh.

Setelah mengukur kinerja dan penggunaan sumber daya, evaluasi menyeluruh terhadap penggunaan data oleh semua aplikasi yang berjalan pada sistem harus dilakukan. Jika masa hidup aplikasi yang berjalan dapat ditampilkan, itu bisa menjadi lebih baik.

Penggunaan mmap untuk mengalokasikan memori datang dengan kelemahan bahwa alokasi dan alokasi data dalam potongan mahal. Ini karena data dipecah menjadi beberapa area, dan juga menolak mmap dari melakukan panggilan sistem.

Mmap lebih menguntungkan daripada malloc karena memori yang digunakan oleh mmap segera dikembalikan ke OS. Memori yang digunakan oleh malloc tidak pernah dikembalikan kecuali ada jeda segmen data. Memori ini secara khusus disimpan untuk digunakan kembali.

Ringkasan

'malloc' adalah titik alokasi memori utama

Sistem mmap memanggil dan meminta kernel untuk menemukan wilayah yang tidak digunakan dalam alamat aplikasi yang dapat mengakomodasi pemetaan beberapa halaman memori

Mmap tidak disarankan untuk mengalokasikan memori karena ia membagi memori yang tersedia dan tidak dapat melakukan panggilan sistem

Manfaat mmap lebih dari malloc adalah ketersediaan memori, berbeda dengan memori malloc, yang digunakan kembali.