Logo ms.removalsclassifieds.com

Perbezaan Antara Mmap dan Malloc (Dengan Jadual)

Isi kandungan:

Anonim

Dalam pengaturcaraan C, terdapat memori dinamik yang menunjuk pada peruntukan memori dalam perpustakaan standard C melalui satu set fungsi. Malloc adalah salah satu daripada ini, yang digunakan untuk memperuntukkan memori. Kemudian ada mmap. Itu digunakan sebagai sistem yang dipetakan memori yang mempunyai input dan output yang unik. Kedua-dua ini menyediakan fungsi yang sama tetapi lebih mendalami topik ini mendedahkan beberapa perbezaan.

Mmap lwn Malloc

Perbezaan antara mmap dan malloc ialah masa pelaksanaan mmap jauh lebih sedikit daripada malloc. Malloc ialah antara muka peruntukan memori utama manakala mmap ialah sistem. Itu bertanggungjawab untuk kernel mencari alamat yang cukup besar untuk membenarkan pemetaan banyak halaman.

Mmap dalam pengkomputeran ialah panggilan sistem berbilang tugas POSIX yang merekodkan semua data atau fail dan peranti ke dalam ingatannya. Ini juga dikenali sebagai kaedah yang berada di bawah fail dipetakan memori dan melaksanakan penyalinan data ke dalam memori fizikalnya kerana kandungan tidak boleh dibaca terus daripada pemacu.

Malloc ialah bentuk pendek untuk istilah peruntukan memori yang digunakan untuk memperuntukkan blok data yang besar secara dinamik, mengenai saiz yang ditentukan, dan apabila ia berjaya, ia mengembalikan penunjuk yang menunjuk ke bait pertama memori yang diperuntukkan, sebaliknya mengembalikan NULL. Dalam mekanisme peruntukan memori sebenar, terdapat banyak pencapaian berbeza yang tersedia yang digunakan oleh Malloc.

Jadual Perbandingan Antara Mmap dan Malloc

Parameter Perbandingan

Mmap

Malloc

Definisi Mmap dirujuk kepada panggilan sistem yang meminta kernel mencari alamat besar untuk pemetaan halaman. Malloc ialah antara muka peruntukan memori utama yang mengumpulkan semua kemudahan yang terdapat dalam sistem.
Fungsi Mmap menggunakan suis konteks dan menjadikannya sebagai kernelland. Malloc memperuntukkan blok ingatan dalam apile.
Juga dipanggil sebagai Mmap juga dikenali sebagai panggilan sistem. Malloc juga dikenali sebagai antara muka peruntukan memori utama.
Keputusan Mmap tidak mengakibatkan menjejaskan prestasi sistem lain. Malloc tidak teratur dan mencipta prestasi sistem yang lemah.
Paling sesuai untuk Mmap paling sesuai untuk mempercepatkan proses respons yang diberikan oleh aplikasi. Malloc paling sesuai untuk memperuntukkan memori dalam mana-mana aplikasi dalam sistem.

Apa itu Mmap?

Mmap dirujuk kepada panggilan sistem Unix yang mematuhi POSIX yang memetakan data, fail atau peranti ke dalam memori. Ia adalah kaedah input, output pemetaan memori. Dalam proses panggilan, pemetaan baharu dibuat dalam ruang alamat maya. Dalam addr. alamat awal pemetaan baharu ditemui dan panjang pemetaan ditentukan oleh hujah panjang (yang sepatutnya lebih daripada 0).

Jika addr didapati NULL, maka alamat dipilih oleh kernel, yang menjadikan pemetaan, yang dianggap sebagai kaedah paling mudah untuk membuat pemetaan baharu. Jika alamat tidak Ditemui sebagai NULL, maka kernel menganggapnya sebagai petunjuk untuk meletakkan pemetaan di tempat di Linux.

Kernel mencari sempadan halaman terdekat dan cuba membuat pemetaan di kawasan itu. Jika kernel menemui pemetaan yang sudah sedia ada di kawasan itu, maka ia memilih alamat baharu yang mungkin bergantung pada petunjuk yang diandaikan oleh kernel. Hasil daripada panggilan ini, alamat pemetaan baharu dihantar semula. Sejurus selepas panggilan dikembalikan, deskriptor fail, fd, menutup pemetaan serta-merta tanpa pembatalan.

Apakah Malloc?

The malloc () ialah fungsi peruntukan memori yang memperuntukkan bait saiz dan menghantar kembali penunjuk ke memori yang telah diperuntukkan. Memori tidak ditetapkan pada kedudukan asalnya. Jika nama bait saiz ialah 0, maka sama ada NULL atau penunjuk nilai unik dihantar oleh malloc (), yang boleh, kemudiannya, dihantar ke free () dengan jayanya.

Ruang memori yang ditunjuk oleh ptr, dikeluarkan oleh fungsi percuma (), yang sepatutnya dihantar semula oleh malloc (). Jika tidak, tingkah laku tidak ditentukan dikatakan berlaku, jika percuma (ptr) dipanggil sebelum ini. Tiada operasi dilakukan atau dilakukan jika ptr Ditemui NULL. Jika ptr ditemui ialah NULL, maka nilai panggilan adalah sama dengan malloc (saiz), untuk setiap nilai saiz; jika ia bersamaan dengan 0, dan ptr tidak didapati NULL, maka nilai panggilan adalah sama dengan percuma (ptr).

Hanya apabila ptr adalah NULL, ia sepatutnya dihantar semula melalui panggilan sebelumnya ke malloc(). Dan kawasan yang ditunjuk telah ditukar, percuma (ptr) dilakukan. Secara lalai, strategi peruntukan memori yang optimistik diikuti oleh Linux yang bermaksud bahawa jika malloc () menghantar balik bukan NULL, terdapat kemungkinan memori itu mungkin hilang. Dan jika ternyata sistem mempunyai kekurangan memori, beberapa proses akan dimusnahkan oleh pembunuh OOM.

Perbezaan Utama Antara Mmap dan Malloc

Kesimpulan

Kesimpulannya, mmap ialah panggilan sistem yang meminta kernel untuk mencari kawasan kosong dalam alamat aplikasi yang sesuai dalam pemetaan pelbagai halaman memori manakala malloc ialah titik peruntukan memori yang memperuntukkan blok saiz memori tertentu. Memori ditetapkan pada masa lariannya yang bermaksud sehingga program dilaksanakan, tiada ruang lain boleh ditempah.

Di tempat tertentu, mmap mempunyai kelebihan berbanding malloc lagi, ia tidak disyorkan untuk memilih semasa memilih antara kedua-dua ini untuk memperuntukkan memori kerana mmap membahagikan memori dan kemudian tidak dapat membuat panggilan sistem.

Rujukan

Perbezaan Antara Mmap dan Malloc (Dengan Jadual)