Mi entendimiento es que cualquier programa cuyo segmento de registros tienen los dos bits menos significativos cero se ejecuta en modo de núcleo, mientras que cualquier programa cuyos registros de segmento tiene los dos LSB = 1 va a correr en el usuario Modo. De hecho, los dos LSB del segmento definen el nivel privilegiado (0 más alto a 3 más bajo)
Por lo tanto, para hacer un prgrama en modo kernel, debe configurar los registros de segmento para que sean 0010 hex (creo) No estoy seguro de cómo puede colocar un programa en ese espacio de memoria sin sobreescribir algo más; en otras palabras, ¿cómo lo asegura el enlazador? Además, si desea llamar al código del modo Kernel desde el código del modo de usuario, debe averiguar cómo pasar los parámetros: no están utilizando la misma memoria soace, por lo que no pueden pasar datos por referencia de memoria. Supongo que debes pasarlo en registros.
Si anynody puede llenar los huecos en el anterior, estaría muy agradecido.
Depende de la arquitectura y no necesariamente depende del sistema operativo. –