Como um sistema operacional (de preferência o Linux) sabe que você acessou um local de memória ao qual não tem permissão?
Essa pergunta foi inspirada por esses malditos indicadores! O que eu vejo é: tudo nos computadores tem a ver com um compromisso entre velocidade, segurança, integridade e outras coisas.
Eu estou bem ciente dos mapas de memória no Linux, mas me parece um pouco ridículo que o kernel verifique se o local que você está tentando acessar reside em um intervalo válido TODA vez que você faz um acesso. Parece que perderia muito tempo, o que poderia ser gasto fazendo algo mais produtivo (mas possivelmente menos seguro sem verificação!). Ou talvez ele se lembre de todos os acessos recentes e os verifique em todos os marcadores do temporizador de hardware? (Mas isso parece inseguro e, mais uma vez, lento.)
Fiquei surpreso que esta pergunta parece não ter sido respondida em qualquer lugar. É algo que eu sempre me perguntei. Isso me faz pensar que há uma seção de hardware que fará isso em nome do sistema operacional, em um nível agradável e conveniente de abstração. Mas ainda assim, seria necessário carregar os próximos mapas de memória de processos em cada alternância de contexto, o que novamente parece lento.
Então, sim, de qualquer forma, vou continuar: como um sistema operacional detecta uma violação de memória?
obrigado