Saya telah menemukan istilah ini berkali-kali, dalam berbagai materi pendidikan CS:
L2 CS162 (UC Berkeley):
I / O yang dipetakan dengan memori
L4 CS162 (UC Berkeley):
Memori memetakan file
L24 CS61 (UC Berkeley):
"Memori yang dipetakan I / O": Kontrol perangkat / register data dipetakan ke ruang alamat CPU
- Bahkan, setelah googling "pemetaan", saya mendapatkan artikel Map_ (fungsi-urutan lebih tinggi) , tetapi tidak terlalu jelas bagi saya.
Terlebih lagi, cobalah memahami maknanya dalam konteks
bitmap
dengan membaca artikel Wikipedia :Array bit adalah pemetaan dari beberapa domain (hampir selalu rentang bilangan bulat) ke nilai dalam set {0, 1}
Saya tidak yakin, tetapi dalam konteks di atas, ini terdengar bagi saya tentang konversi data.
Kemudian setelah membaca buku CS, saya hanya menemukan paragraf ini tetapi tidak menjelaskan arti "pemetaan" bagi saya:
Memory Mapping Linux (bersama dengan bentuk Unix lainnya) menginisialisasi konten area memori virtual dengan mengaitkannya dengan objek pada disk, proses yang dikenal sebagai pemetaan memori.
Saya mendapat MapReduce sebagai hasil pencarian: di mana peta dijelaskan sebagai "idiom dalam komputasi paralel di mana operasi sederhana diterapkan ke semua elemen dari suatu urutan, berpotensi paralel".
Saya masih bingung dengan istilah itu. Adakah yang bisa menjelaskan apa arti "peta" dalam konteks yang saya sebutkan?
Functor
nama tautan - terlalu sedikit untuk menyarankan suntingan.)map
fungsi mengembalikan hasil di mana setiap elemen dikaitkan dengan sesuai unsur input. Perbedaannya adalah bahwa penggunaan pertama menggambarkan hubungan yang ada, sedangkan yang kedua merujuk pada operasi yang menciptakan hubungan.Berikut ini saya akan kurang akurat dalam beberapa cara, mengorbankan akurasi teknis untuk memberikan pemahaman dasar. Jelas bahwa Anda telah membaca sejumlah sumber teknis dan sangat teknisnya bahan tersebut membuat Anda sulit untuk memahami apa itu konsep yang cukup mendasar dan sederhana.
Secara sederhana penggunaan kata peta yang paling umum adalah untuk menggambarkan hubungan antara hal-hal dalam dua set yang berbeda. Ini mungkin fungsi matematika atau mungkin semacam representasi dan mekanisme lain. Yang paling umum yang langsung terlintas dalam pikiran adalah peta jalan.
Peta jalan adalah gambar medan atau area tertentu di dunia nyata di mana garis-garis dan gambar serta kata-kata yang tertulis di peta sesuai dengan jalan dan bangunan fisik aktual. Ada hubungan satu ke satu antara representasi medan yang digambarkan dalam peta jalan dan medan yang sebenarnya.
Melihat lebih jauh kita juga dapat melihat bahwa peta jalan adalah representasi dari medan yang sebenarnya. Medan sebenarnya memiliki objek dan detail serta proses dinamis yang tidak digambarkan oleh peta jalan. Peta jalan adalah representasi abstrak dari medan yang sebenarnya dan apa yang digambarkan dalam peta jalan hanya apa yang diperlukan untuk memenuhi tujuannya, untuk menyediakan bantuan navigasi untuk medan yang sebenarnya.
Sejumlah contoh dalam pertanyaan melibatkan pembuatan representasi dengan mekanisme pendukung sehingga seseorang dapat menggunakan representasi dan mekanisme menerjemahkan tindakan seseorang ke dalam apa yang diperlukan untuk fungsi dasar yang tersembunyi oleh fasad representasi.
Memori yang dipetakan file I / O memungkinkan seorang programmer untuk memikirkan file sebagai area memori yang besar, untuk menggunakan representasi memori dari file nyata. Programmer tidak menganggap file sebagai file tetapi sebaliknya menganggapnya sebagai area memori yang besar. Fungsionalitas file I / O file yang dipetakan berhati-hati untuk memastikan bahwa ketika programmer referensi memori tertentu mengimbangi bahwa data yang sesuai dalam file tersebut diakses.
Perangkat yang dipetakan dengan memori I / O memungkinkan antarmuka pemrograman perangkat disederhanakan dengan menulis ke alamat memori atau membaca dari alamat memori. Tindakan menulis dan membaca ini diterjemahkan oleh fungsi I / O yang dipetakan di memori bawah ke dalam tindakan spesifik perangkat yang sebenarnya diperlukan untuk melakukan layanan atau tindakan yang diminta.
Peta bit adalah sekumpulan bit yang menyediakan korespondensi satu ke satu dengan nilai dari beberapa set lainnya. Misalnya
CreateFile()
fungsi Win32 API memiliki beberapa argumen peta bit yang digunakan untuk menunjukkan berbagai jenis atribut file. Bit spesifik dalam peta bit berhubungan dengan perilaku file tertentu seperti "Buka hanya Baca" atau "Selalu Buat File Kosong Baru". Konstanta khusus disediakan yang digabungkan menggunakan operasi bit biner untuk menentukan argumen yang sebenarnya. Lihat fungsi CreateFile dan contoh kode sumber di Membuka File untuk Membaca atau Menulis .sumber
Memory mapped file I/O
, apakah itu alternatif untuk file standar i / o (fopen, fgetc ..)? Apakah keunggulan kinerja karena sifat akses RAM yang lebih cepat dibandingkan dengan Disk?setbuf()
fungsi untuk mengatur file I / O buffer yang besar. Apa pun yang dapat Anda lakukan untuk mengurangi mengakses perangkat penyimpanan cenderung menjadi bonus. Untuk disk drive, mengurangi jumlah pencarian dapat membuat perbedaan besar, namun ada sejumlah pengaruh yang tidak dapat Anda lakukan seperti bagaimana data disusun pada piringan disk, kecepatan rotasi piringan, kecepatan gerakan kepala, cache dari data, seberapa baik hit cache mengurangi ke disk elektro-mekanis, dll.Pemetaan hanyalah proses mengaitkan satu unit data dengan unit data lainnya. Maksud pemetaan adalah untuk memungkinkan akses yang disederhanakan ke data yang dipetakan. Misalnya, dalam sistem yang kompatibel dengan IBM klasik, alamat memori 0xB8000 dipetakan ke memori video dari kartu video. Menulis ke memori ini akan memperbarui konten layar, dan membaca darinya akan mengambil konten layar. Pemetaan file, pemetaan perangkat, dan bahkan pemetaan struktur data (biasanya disebut Peta, HashMap, atau Kamus), adalah semua cara mengaitkan satu unit data dengan unit data lainnya.
Pemetaan memiliki dua manfaat utama. Yang pertama adalah pemetaan mengurangi kompleksitas mengakses perangkat atau file terkait. Misalnya, pemetaan file dan pemetaan perangkat memungkinkan Anda untuk memperlakukan perangkat tersebut seolah-olah itu hanya memori biasa. Alih-alih mempelajari berbagai port I / O, perintah data, dan sebagainya, Anda mendapatkan satu antarmuka sederhana yang sama alami dan sejelas menulis ke RAM.
Manfaat kedua adalah dapat mengurangi kebutuhan memori. Sebagai contoh, a
Map<Integer, SomeDataType>
dapat menghasilkan "array jarang", yang berguna jika Anda menginginkan array yang sebagian besar akan berisi data yang tidak valid / tidak digunakan, dan dapat diakses dalam waktu dekat-linear. Ini bisa jauh lebih efisien daripada daftar yang ditautkan (yang membutuhkan O ( n ) waktu untuk mengakses elemen ke- n ).Pemetaan terutama digunakan sebagai abstraksi untuk menyembunyikan algoritme / fungsi rumit dari pengembang sehingga mereka dapat fokus pada tugas mengimplementasikan program. Perhatikan bahwa pemetaan mungkin tidak selalu efisien, dalam hal waktu pemrosesan, seperti mengakses perangkat atau file secara langsung, tetapi selalu lebih mudah daripada melakukan hal itu (misalnya pemetaan mengurangi jumlah kode khusus yang harus ditulis pengembang untuk mengakses data ).
sumber