Saya membaca buku tentang memori sebagai konsep pemrograman. Dalam salah satu bab selanjutnya, pengarang banyak menggunakan kata arena , tetapi tidak pernah mendefinisikannya. Saya telah mencari arti kata tersebut dan kaitannya dengan ingatan, dan tidak menemukan apa pun. Berikut adalah beberapa konteks di mana penulis menggunakan istilah tersebut:
"Contoh serialisasi berikutnya menggabungkan strategi yang disebut alokasi memori dari arena tertentu ."
"... ini berguna saat menangani kebocoran memori atau saat mengalokasikan dari arena tertentu ."
"... jika kita ingin membatalkan alokasi memori maka kita akan membatalkan alokasi seluruh arena ."
Penulis menggunakan istilah tersebut lebih dari 100 kali dalam satu bab. Satu-satunya definisi dalam glosarium adalah:
alokasi dari arena - Teknik mengalokasikan arena terlebih dahulu dan kemudian mengelola alokasi / deallocation dalam arena oleh program itu sendiri (bukan oleh manajer memori proses); digunakan untuk pemadatan dan serialisasi objek dan struktur data yang kompleks, atau untuk mengelola memori dalam sistem yang kritis terhadap keamanan dan / atau toleransi kesalahan.
Adakah yang bisa mendefinisikan arena untuk saya mengingat konteks ini?
sumber
Jawaban:
Arena hanyalah bagian besar dari memori yang berdekatan yang Anda alokasikan satu kali dan kemudian gunakan untuk mengelola memori secara manual dengan membagikan bagian dari memori itu. Sebagai contoh:
Intinya adalah Anda mendapatkan kendali penuh atas cara kerja alokasi memori. Satu-satunya hal di luar kendali Anda adalah panggilan perpustakaan tunggal untuk alokasi awal.
Salah satu kasus penggunaan yang populer adalah di mana setiap arena hanya digunakan untuk mengalokasikan blok memori dari satu ukuran tetap tunggal. Dalam hal ini, Anda dapat menulis algoritme reklamasi yang sangat efisien. Contoh penggunaan lainnya adalah memiliki satu arena untuk setiap "tugas", dan setelah Anda selesai dengan tugas tersebut, Anda dapat membebaskan seluruh arena sekaligus dan tidak perlu khawatir tentang pelacakan deallokasi individu.
Masing-masing teknik itu sangat khusus dan umumnya hanya berguna jika Anda tahu persis apa yang Anda lakukan dan mengapa alokasi perpustakaan normal tidak cukup baik. Perhatikan bahwa pengalokasi memori yang baik sudah akan melakukan banyak keajaiban itu sendiri, dan Anda memerlukan sejumlah bukti yang memadai bahwa itu tidak cukup baik sebelum Anda mulai menangani memori sendiri.
sumber
Saya akan memilih yang ini sebagai jawaban yang mungkin.
•Memory Arena (also known as break space)--the area where dynamic runtime memory is stored. The memory arena consists of the heap and unused memory. The heap is where all user-allocated memory is located. The heap grows up from a lower memory address to a higher memory address.
Saya akan menambahkan sinonim Wikipedia : wilayah, zona, arena, area, atau konteks memori.
Pada dasarnya itu adalah memori yang Anda peroleh dari OS, dan dibagi-bagi, lalu bisa dibebaskan sekaligus. Keuntungan dari hal ini adalah bahwa panggilan kecil berulang-ulang
malloc()
bisa mahal (Setiap alokasi memori memiliki biaya kinerja: waktu yang diperlukan untuk mengalokasikan memori di ruang alamat logis program Anda dan waktu yang diperlukan untuk menetapkan ruang alamat itu ke memori fisik) di mana seolah-olah Anda tahu sebuah taman bola, Anda bisa mendapatkan banyak memori untuk Anda sendiri kemudian membagikannya ke variabel-variabel Anda sesuai / bagaimana Anda membutuhkannya.sumber
Anggap saja sebagai sinonim untuk 'heap'. Biasanya, proses Anda hanya memiliki satu heap / arena, dan semua alokasi memori terjadi dari sana.
Namun, terkadang Anda memiliki situasi di mana Anda akan mengelompokkan serangkaian alokasi bersama (misalnya untuk kinerja, untuk menghindari fragmentasi, dll.). Dalam kasus tersebut, lebih baik mengalokasikan heap / arena baru, lalu untuk alokasi apa pun, Anda dapat memutuskan heap mana yang akan dialokasikan.
Misalnya, Anda mungkin memiliki sistem partikel di mana banyak objek dengan ukuran yang sama sering dialokasikan dan dialokasikan. Untuk menghindari memecah memori, Anda dapat mengalokasikan setiap partikel dari heap yang hanya digunakan untuk partikel tersebut, dan semua alokasi lainnya akan datang dari heap default.
sumber
Dari http://www.bozemanpass.com/info/linux/malloc/Linux_Heap_Contention.html :
Anda juga dapat merujuk ke tautan ini:
http://www.codeproject.com/Articles/44850/Arena-Allocator-DTOR-and-Embedded-Preallocated-Buf
sumber