¿Qué sucederá si eliminamos la referencia del puntero nulo en el espacio del usuario y el espacio del kernel?
Según tengo entendido, el comportamiento se basa en el compilador, la arquitectura, etc.
pero en general para cada programa de espacio de usuario asignado con memoria virtual y la paginación se usa para traducir la dirección virtual a la dirección física usando tablas de página.
por lo tanto, si estamos eliminando la referencia de un puntero nulo en el espacio del usuario, esa dirección no es válida, por lo que el cambio de contexto ocurrirá y en el núcleo se basará en la interrupción para esta falta de referencia de puntero nulo 'Ocurrirá un error de segmentación o un error de página'.
En el espacio del núcleo:
Si eliminamos la referencia al puntero NULL, existe la posibilidad de bloquear el sistema o que el kernel no pueda regresar de esa llamada.
¿Es correcto mi entendimiento? O cualquier otra información faltante, por favor explique.
Ref: he entendido de esto " ¿Qué sucede en el sistema operativo cuando eliminamos la referencia a un puntero NULL en C? "
El núcleo asigna la página en la dirección virtual 0 a todos los procesos sin bits de permiso establecidos. Cuando intentas acceder a esa página, obtienes un error de página . La rutina del kernel que lo maneja emite una señal SIGSEGV a su proceso. Si no tiene un controlador para SIGSEGV registrado, el núcleo se volcará y verá el mensaje "Error de segmentación".
Del lado del kernel, las cosas son un poco diferentes. Después de todo, se supone que el kernel es robusto: