¿Qué significa la portabilidad integrada?
surge un tema que se discute a menudo al portar sistemas Linux. Para los sistemas operativos, esta portabilidad suele ser multiplataforma y está relacionada con el hardware, es decir, la arquitectura del sistema de hardware e incluso la CPU son diferentes. Echemos un vistazo
Qué debemos hacer cuando se trata de portar Linux.
Una de las dos partes principales del trasplante del sistema Linux
Para el trasplante del sistema, el sistema Linux en realidad incluye dos partes independientes, a saber, la parte del núcleo y el sistema
Parte de estructura. El proceso habitual de inicio de un sistema Linux es el siguiente: un cargador que no está afiliado a ningún sistema operativo carga la parte del kernel de Linux en la memoria y transfiere el control a la primera línea del código del kernel de Linux en la memoria. Una vez finalizado el trabajo del cargador, Linux debe cargar el resto de sí mismo en la memoria (si corresponde, dependiendo de la plataforma de hardware), inicializar todos los dispositivos y configurar las estructuras de datos requeridas en la memoria (sobre el proceso).
, dispositivo, memoria, etc.). En este punto, el trabajo del kernel de Linux ha terminado y ha controlado todos los dispositivos de hardware
. Ahora es el turno del sistema de operar y utilizar estos dispositivos de hardware. El kernel cargará el dispositivo raíz e iniciará el demonio init
, que cargará el sistema de archivos, configurará la red, el proceso de servicio, la terminal, etc.
de acuerdo con el archivo de configuración. . Una vez completada la inicialización del terminal, veremos la interfaz de bienvenida del sistema. Para resumir:
(1) El kernel inicializa y controla parcialmente todos los dispositivos de hardware (estrictamente hablando, no todos, pero sí la gran mayoría), para la gestión de memoria,
gestión de procesos y Gestión de dispositivos. Esté preparado para todo, incluida la lectura y la escritura.
(2) La parte del sistema carga el equipo necesario y configura varios entornos para que los usuarios puedan utilizar todo el sistema.
Entorno requerido para la migración del sistema
Antes de seguir discutiendo, es necesario mencionar el entorno requerido para la migración del sistema.
Primero, necesita una nueva versión de gcc y, para los programadores que se preparan para migrar sus sistemas, deben tener un buen conocimiento de las nuevas versiones. Para la compilación multiplataforma, gcc es probablemente la mejor opción. Además, el kernel de Linux se basa en muchas funciones básicas que son exclusivas de gcc. Si ya sabe cómo usar gcc y lo ha practicado muchas veces, entonces solo necesita dar un paso más
Consolidar la compilación multiplataforma. Hay dos entornos de compilación para elegir:
En segundo lugar, se requiere una biblioteca de compilación, que debe ser la biblioteca de compilación de la plataforma de destino. Este suele ser un proceso aburrido, tedioso e insatisfactorio. Si tiene suerte, puede utilizar una biblioteca existente. De lo contrario, necesitarás compilarlo tú mismo usando gcc.
Por último, necesitas toda la documentación de la plataforma de destino, y cuanta más mejor.
Es mejor usar L
loaders si hay algún soporte de desarrollo/entorno de emulación, estos pueden ayudarle a reducir el tiempo perdido en asuntos triviales durante el proceso de migración.
3. Trasplante del sistema Linux
A continuación, presentaremos la clave del trasplante desde dos aspectos: kernel y sistema.
(1) Portación de memoria
Linux utiliza un mecanismo de núcleo único que es relativamente inflexible, pero esto no afecta en absoluto la independencia de la plataforma y la independencia del sistema Linux.
Escalabilidad. Linux utiliza dos métodos para resolver estos problemas, los cuales son muy simples,
nada lentos y muy claros y fáciles de entender. Separe el código relacionado con el hardware del código independiente del hardware para que el código de nivel superior
no tenga que preocuparse por qué código se intercambia y cómo se intercambia el código de nivel inferior.
Si una parte de la memoria se asigna en una plataforma x86 o en una plataforma Alpha
no hay diferencia en el código de nivel superior. Las partes del código relacionadas con el hardware son muy pequeñas y representan solo una pequeña parte del código total. Por lo tanto, no existe una carga real para cambiar la plataforma de hardware. Por otro lado, Linux utiliza el mecanismo del kernel para resolver muy bien el problema de escala. Se pueden cargar y descargar fácilmente grandes cantidades de código cuando sea necesario, como un
.