Bagaimana sistem operasi (lebih disukai Linux) tahu bahwa Anda telah mengakses lokasi memori yang tidak diizinkan?
Pertanyaan ini terinspirasi oleh petunjuk-petunjuk sialan itu! Cara saya melihatnya adalah: segala sesuatu di komputer adalah tentang kompromi antara kecepatan, keamanan, integritas, dan hal-hal semacam itu.
Saya sangat sadar akan peta memori di Linux, tetapi kedengarannya agak konyol bagi saya bahwa kernel memeriksa apakah lokasi yang Anda coba akses berada di kisaran yang valid SETIAP SAAT Anda melakukan akses. Sepertinya itu akan menghabiskan begitu banyak waktu, yang bisa dihabiskan untuk melakukan sesuatu yang lebih produktif (tapi mungkin kurang aman tanpa pengecekan!). Atau mungkin ia mengingat semua akses terakhir dan memeriksanya di setiap tick timer perangkat keras? (Tapi itu kedengarannya tidak aman, dan sekali lagi, lambat.)
Saya terkejut bahwa pertanyaan ini tampaknya tidak terjawab di mana pun. Itu adalah sesuatu yang selalu saya pikirkan. Itu membuat saya berpikir ada bagian perangkat keras yang akan melakukan ini atas nama OS, dalam tingkat abstraksi yang bagus dan nyaman. Tapi tetap saja, itu mungkin akan memerlukan memuat proses berikutnya peta memori pada setiap saklar konteks, yang lagi-lagi terdengar lambat.
Jadi ya, bagaimanapun, saya akan sedikit: bagaimana cara OS mendeteksi pelanggaran memori?
Terima kasih