Para responder a otra parte de la pregunta:el kernel se asigna a cada espacio de direcciones de procesos parcialmente por razones de eficiencia/rendimiento (también hay otros, estoy seguro).
En la mayoría del hardware moderno, es más rápido cambiar el nivel de seguridad (lo que permite el acceso a las páginas que de otro modo están protegidas, como se menciona en la respuesta de Alexey) para realizar llamadas al sistema y otras funciones proporcionadas por el kernel que cambiar el nivel de seguridad y todo el mapa de memoria virtual, junto con todos los vaciados de caché TLB asociados y todo lo demás involucrado en un cambio de contexto completo.
Dado que las llamadas al sistema pueden ser eventos bastante frecuentes, el diseño que ha evolucionado en Linux y muchos otros lugares para tratar de minimizar la sobrecarga de utilizar los servicios del kernel y mapear el código del kernel y (al menos algunos de los) datos en cada proceso es parte de eso.
Un proceso "posee" todo el espacio de direcciones virtuales aquí, el núcleo y las porciones de usuario.
Su incapacidad para mirar y pinchar el código y los datos del kernel no se debe a los diferentes espacios de direcciones, se debe a los diferentes derechos/permisos de acceso establecidos en las tablas de páginas. Las páginas del kernel están configuradas de tal manera que las aplicaciones normales no pueden acceder a ellas.
Sin embargo, es costumbre referirse a las dos partes de un todo como el espacio del kernel y el espacio del usuario y eso puede ser confuso.
Imagínese lo que sucedería si el kernel no está mapeado en cada espacio de direcciones de proceso. Tendría una falla triple porque, digamos que ocurre la interrupción del temporizador, luego el procesador llama a la rutina ISR usando IDT (Tabla de descriptores de interrupción). Si el kernel no está mapeado, entonces la dirección IDT deja de ser válido y, por lo tanto, se producirá una falla triple.
Otra razón importante por la que decimos que el núcleo está en el espacio de direcciones del proceso es que el núcleo puede acceder al código/datos de usuario del proceso ACTUAL, es decir, el espacio de direcciones virtuales 0~3G.
Lo siento por mi pobre inglés. No soy un hablante nativo de inglés.