Làm thế nào để một hệ điều hành (tốt nhất là Linux) biết rằng bạn đã truy cập một vị trí bộ nhớ mà bạn không được phép?
Câu hỏi này được lấy cảm hứng từ những con trỏ chết tiệt! Theo cách tôi thấy: mọi thứ trong máy tính là về sự thỏa hiệp giữa tốc độ, bảo mật, tính toàn vẹn và những thứ như vậy.
Tôi biết rõ về bản đồ bộ nhớ trong Linux, nhưng nghe có vẻ hơi vô lý với tôi rằng hạt nhân sẽ kiểm tra xem vị trí bạn đang cố truy cập có nằm trong phạm vi hợp lệ MERYI LẦN bạn thực hiện quyền truy cập hay không. Có vẻ như nó sẽ lãng phí rất nhiều thời gian, có thể được dành để làm một cái gì đó hiệu quả hơn (nhưng có thể ít an toàn hơn mà không cần kiểm tra!). Hoặc có thể nó nhớ tất cả các truy cập gần đây và kiểm tra chúng trên mỗi dấu thời gian phần cứng? (Nhưng điều đó nghe có vẻ không an toàn, và một lần nữa, chậm.)
Tôi đã ngạc nhiên khi câu hỏi này dường như chưa được trả lời ở bất cứ đâu. Đó là điều mà tôi luôn tự hỏi. Nó làm tôi nghĩ rằng có một phần của phần cứng sẽ thực hiện việc này thay mặt cho HĐH, ở mức độ trừu tượng tốt, thuận tiện. Tuy nhiên, nó vẫn có thể yêu cầu tải các bản đồ bộ nhớ quy trình tiếp theo trên mỗi chuyển đổi ngữ cảnh, một lần nữa nghe có vẻ chậm.
Vì vậy, có, dù sao, tôi đang đi một chút: làm thế nào để một hệ điều hành phát hiện vi phạm bộ nhớ?
Cảm ơn