
¿La existencia de un vinculador (para realizar el vínculo después de la compilación) y un cargador (para ejecutar un archivo ejecutable) no depende de sistemas operativos como Linux? (Pensé que el vinculador y el cargador en Linux los proporciona el sistema operativo o el software, al igual que otros programas de aplicación. Ahora creo que son muy especiales y diferentes. Pueden ser iguales, independientemente del sistema operativo instalado).
¿Existen el enlazador y el cargador en lenguaje de máquina, es decir, a nivel ISA? (En ese nivel, no hay sistema operativo). ¿O nivel de lenguaje ensamblador?
¿Es correcto pensar en un sistema operativo como una biblioteca de programación (bibliotecas), desde la perspectiva del software de programación?
Gracias.
Quiero saber dónde colocar el vinculador y el cargador en los niveles/capas de un sistema informático.
Para conocer las capas/niveles de un sistema informático, consulte Los elementos de los sistemas informáticos de Nisan:
Para vincular y cargar, consulteSistemas informáticos: la perspectiva de los programadores
Respuesta1
¿La existencia de un vinculador (para realizar el vínculo después de la compilación) y un cargador (para ejecutar un archivo ejecutable) no depende de sistemas operativos como Linux? (Pensé que el vinculador y el cargador en Linux los proporcionaba el sistema operativo o el software, al igual que otros programas de aplicación. Ahora creo que son muy especiales y diferentes).
El vinculador y el cargador tienen propósitos específicos, como cualquier otra aplicación. Son importantes para crear programas estáticos y crear y cargar programas dinámicos, pero son aplicaciones "normales" (o bibliotecas, en el caso del cargador en tiempo de ejecución):es decirSi bien son complejos, podría decirse que no dependen de un soporte especial del sistema operativo.
De este modo es posible vincular programas de un sistema operativo a otro (p.ejcompilar programas de Windows en Linux, o viceversa) y cargar programas vinculados dinámicamente creados para un sistema en otro (consulte Wine). Los principales requisitos impuestos al sistema operativo son que proporcione alguna forma de cargar nuevo contenido ejecutable (es decirpermitir que un programa en ejecución se agregue memoria ejecutable a sí mismo) y que permita suficiente control sobre el espacio de direcciones virtuales para satisfacer los requisitos del programa (en particular, direcciones base para cargar ejecutables y bibliotecas).
¿Existen el enlazador y el cargador en lenguaje de máquina, es decir, a nivel ISA? (En ese nivel, no hay sistema operativo). ¿O nivel de lenguaje ensamblador?
No estoy seguro de qué llevó a estas preguntas, pero los enlazadores operan con símbolos y direcciones. Trabajan con archivos de objetos que contienen tablas de símbolos importados y exportados, y entradas de reubicación donde se completan los valores calculados por el vinculador.
¿Es correcto pensar en un sistema operativo como una biblioteca de programación (bibliotecas)?
Eso es muy limitante. Un sistema operativo proporciona algunos servicios a las aplicaciones que se ejecutan en él, pero hace mucho más que eso, incluso en el caso de sistemas operativos realmente simples (micros de 8 bits, MS-DOS, etc.); por ejemplo, maneja interrupciones de hardware, programa procesos (para sistemas multitarea), controla los permisos de acceso (para sistemas multiusuario con control de acceso)...
Tengo la impresión de que el diagrama al que te refieres es más útil como mapa de un libro que como una forma de entender la arquitectura informática.