viernes, 31 de octubre de 2014

Programas de servicios




Programas de servicios o de procesos: lo constituyen los programas o utilidades que permiten la construcción de programas
 Clasificación de Software 

Compilador, Enlace, Carga.
Estas son las tres fases básicas que hay que seguir para que un ordenador ejecute la interpretación de un texto escrito mediante la utilización de un lenguaje de alto nivel.

El compilador no produce directamente un fichero ejecutable, sino que el código generado se ejecuta en módulos que se almacenan en un fichero objetivo

Los ficheros objeto poseen información relativa tanto al código máquina como a una tabla de símbolos que almacena la estructura de las variables y tipos utilizados por el programa fuente
Durante la fase de enlace, el enlazador o linker resuelve las referencias cruzadas, (así se llama a la utilización de objetos externos), que pueden estar declarados en otros ficheros objeto, o en librerías (ficheros con extensión “lib” o “dll”), engloba en un único bloque los distintos registros que almacenan código máquina, estructura el bloque de memoria destinado a almacenar las variables en tiempo de ejecución y genera el ejecutable final incorporando algunas rutinas adicionales procedentes de librerías, como por ejemplo las que implementan funciones matemáticas o de e/s básicas.

De esta manera, el bloque de código máquina contenido en el fichero ejecutable es un código reciclable, es decir, un código que en su momento se podrá ejecutar en diferentes posiciones de memoria, según la situación de la misma en el momento de la ejecución. Según el modelo de estructuración de la memoria del microprocesador, este código se estructura de diferentes formas. Lo más usual es que el fichero ejecutable esté dividido en segmentos: de código, de datos, de pila de datos, etc.
Cuando el enlazador construye el fichero ejecutable, asume que cada segmento va a ser colocado en la dirección 0 de la memoria. Como el programa va a estar dividido en segmentos, las direcciones a que hacen referencia las instrucciones dentro de cada segmento (instrucciones de cambio de control de flujo, de acceso a datos, etc.), no se tratan como absolutas, sino que son direcciones relativas a partir de la dirección base en que sea colocado cada segmento en el momento de la ejecución.

El cargador carga el fichero .exe, coloca sus diferentes segmentos en memoria (donde el sistema operativo le diga que hay memoria libre para ello) y asigna los registros base a sus posiciones correctas, de manera que las direcciones relativas funcionen correctamente.

Cada vez que una instrucción máquina hace referencia a una dirección de memoria (partiendo de la dirección 0), el microprocesador se encarga automáticamente de sumar a dicha dirección la dirección absoluta de inicio de su segmento. Por ejemplo para acceder a la variable x almacenada en la dirección 1Fh, que se encuentra en el segmento de datos ubicado en la dirección 8A34h, la instrucción máquina hará referencia a 1Fh, pero el microprocesador la traducirá por 8A34h+1Fh dando lugar a un acceso a la dirección 8A53h: dir absoluta del segmento en memoria + dir relativa de x en el segmento = dir absoluta de x en memoria.

Ligadores



Es un programa que enlaza todos los programas o módulos obteniendo lo que denominamos programa ejecutable.
Un ligador es un programa de sistema que combina dos o mas programas objeto separados y permite que se hagan referencias unos a otros, o sea, que cada uno de estos programas pueden hacer referencia a código ó variables de los otros programas con los que está enlazado.
  FUNCIÓN
   Los editores de ligado pueden efectuar varias funciones últimas además de la simple preparación de un programa objeto para su ejecución estos también se pueden utilizar para construir paquetes de subrutinas u otras secciones que suelen utilizar juntas. Esto puede ser útil al tratar con bibliotecas de subrutinas que manejan lenguajes de programación de alto nivel. Comparados con los cargadores de ligadores los editores de ligado en general tienden a ofrecer mayor flexibilidad y control con el correspondiente incremento e complejidad y sobrecarga.

Tipos de ligadores
   La diferencia fundamental entre un editor de ligado y un cargador ligador es: Primero se ensambla o compila el programa fuente, produciendo un programa objeto (que puede contener varias secciones de control diferentes).
   Un cargador ligador realiza todas las operaciones de ligado y relocalización, incluyendo búsqueda automática en bibliotecas, si se especifica, y carga el programa ligado directamente en la memoria para su ejecución. Por otro lado, un editor de ligado produce una versión ligada del programa (llamada a menudo módulo de carga o imagen ejecutable), que se escribe un archivo o biblioteca para su ejecución posterior. Cuando el usuario esta listo para ejecutar el programa ligado, se puede utilizar un cargador re localizador simple para cargar el programa en la memoria. El editor de ligado realiza relocalización de todas las secciones de control relativas al inicio del programa ligado.
Ligador Dinámico. ofrece algunas ventajas sobre los otros tipos de ligado. Proporciona la posibilidad de cargar las rutinas sólo cuando y si se necesitan. Si las subrutinas son grandes o tienen muchas referencias externas, se pueden conseguir ahorros considerables de tiempo y espacio de memoria.

EDITOR DE LIGADO DEL SISTEMA /370. es muy parecido al analizado para SIC/XE. La técnica de referencia a un número se usa para mejorar la eficiencia. El programa de salida del editor de ligado se llama módulo de carga, y puede cargarse en la memoria para su ejecución, y suele contener suficiente información para permitir que el editor de ligado los reprocese.
LIGADORES ESTATICOS. Cuando se utilizan subrutinas en un programa, el código ejecutable de cada una de ellas debe encontrarse en memoria al tiempo de ejecución. Para esto, antes de cargar un programa, debe ligarse su código objeto con los códigos objeto (guardados en uno o más archivos) de cada una de las subrutinas invocadas por él, obteniendo así un programa ejecutable que contiene tanto el código del módulo invocador como el código de los módulos invocados. En este punto, es posible guardar el resultado del proceso de liga en un archivo que podrá ser utilizado por un cargador, o el mismo programa ligador puede también realizar la tarea de carga. Esto último evita el tener que guardar el código ejecutable en un archivo, con lo que se ahorra espacio en disco. Este ahorro de espacio en disco se paga con el tiempo gastado al tener que ligar todos los módulos cada vez que se necesite ejecutar el programa.
LIGADOR DEL SISTEMA VAX. El ligador VAX es un editor de ligado que realiza las mismas funciones básicas alcanzadas con anterioridad. La acción del ligador en la creación de las secciones de imagen está controlada por ensamblador o compilador por medio de una secuencia de mandatos que forman parte del programa objeto.
   LIGADOR  EN C++
Si algún archivo fuente hace referencia a funciones de una biblioteca o de funciones que están definidas en otros archivos fuentes, el ligador combina estas funciones (con main ()) para crear un archivo ejecutable. Las referencias a variables externas en esta etapa son resueltas.
USO DE LAS BIBLIOTECAS
C es un lenguaje extremadamente pequeño. Muchas de las funciones que tienen otros lenguajes no están en C, por ejemplo, no hay funciones para E/S, manejo de cadenas o funciones matemáticas.
La funcionalidad de C se obtiene a través de un rico conjunto de bibliotecas de funciones.

Como resultado, muchas implementaciones de C incluyen bibliotecas estándar de funciones para varias finalidades. Para muchos propósitos básicos estas podrían ser consideradas como parte de C. Pero pueden variar de máquina a máquina.

Enlazadores



Es un módulo que junta los ficheros de código objetos (generados en la primer parte de la compilación), la información de todos los recursos necesarios (biblioteca), elimina los recursos que no se necesitan y enlaza el código objeto con sus bibliotecas. Finalmente produce el fichero ejecutable o una biblioteca.
Existen programas que se enlazan dinámicamente, esto significa que este proceso se hace en el momento que se carga el programa.
  Características de un Enlazador:
    Las características del enlazador varían de un sistema a otro. En general, simplemente se indican al enlazador los nombres de los módulos objeto, las librerías que se desean enlazar y el nombre del ejecutable de salida. Algunos sistemas requieren que sea el programador el que invoque al enlazador, aunque en la mayoría de los paquetes de C++ se llama al enlazador a través del compilador. En muchas situaciones de manera transparente. Algunos enlazadores antiguos no buscaban ficheros objeto más de una vez y buscaban en la lista que se les pasaba de izquierda a derecha. Esto significa que el orden de los ficheros objeto y las librerías pueden ser importantes.
 El gm enlazador:
Son aquellos utilizaran su poder para aumentar tu articulo con LAPICES repetidos o donde no deben estar. Si tienes un artículo con huecos, será enlazado con 2 lápices iguales o en lugares donde no deben y lo mejor: 100% de probabilidad de éxito
 ¿Cómo conseguimos un GM ENLAZADOR?
Se consigue mediante AeriaPoints, Ya NO aparecer en eventos ocasionales, es decir, no es un artículo permanente en el Almacén de los artículos AP. Estos eventos solían estar en escalas de premios, ruleta de premios, otros.
 ¿Cómo hacer para enlazar el artículo que queremos? :
1)    Este "GM Enlazador" bajo ningún concepto debíamos sacarlo del banco, así que NO LO QUITES DEL BANCO.                            
2)    Ahora que ya tenemos el artículo en el banco debemos proceder al siguiente paso. Nos dirigimos a la bodega npc, donde guardamos:
La pieza de armadura, arma o accesorio que querían que se enlazarla.
El lápiz que quieras para enlazar la pieza de armadura, arma o accesorio que queremos.
¿Cuántos tipos de enlazadores existen?
•    GM Enlazador accesorios
•    GM Enlazador Normal.
•    GM Enlazador Premium.
•    #GM Enlazador Premium Super#.
¿Cuantos enlaces son por GM enlazador?
Cada GM Enlazador vale solamente un enlace.
¿Podía utilizar un GM Enlazase normal para enlazar elementales lvl2?
Si, ya no se puede, cada GM Enlazador normal tenía un valor específico.
Así que ya no puedes utilizar un GM Enlazador normal para que te hagan lo quieras.
¿Podía enlazar cualquier artículo con el GM Enlazador normal?
Si, el nivel de conocimiento sobre los artículos que deseas enlazar, es irrelevante, solo necesita ser más listo que los demás.
Sinopsis:
El proceso de crear un ejecutable comienza por la compilación de varias unidades de compilación independientes.  Los ficheros objeto resultantes, junto con librerías ya existentes y algún trozo de código añadido, son después agrupados de forma ordenada en un solo fichero que constituye el ejecutable.
Este proceso de agrupación y ordenación es realizado por un programa especial, el enlazador ("Linker"), cuyo nombre evoca una de sus principales funciones, el enlazado ("Binding").  Este proceso es responsable de que, en el ejecutable, cada instancia de un identificador sea asociada correctamente con una función u objeto particular.  A efectos prácticos esto significa que la mayoría de los identificadores utilizados por el programador desaparecen y son sustituidos por direcciones concretas de memoria donde se encuentran los objetos referenciados.

Tipos de Enlazados:
a)         Enlazado Estático: Empezaremos por la segunda de las consideraciones: Hemos dicho que durante el enlazado, el "Linker"  asocia cada identificador con el objeto correspondiente.  Lo que equivale a decir que asocia el identificador con la dirección del objeto.  Esto puede efectuarse en tiempo de compilación o en runtime.  Cuando esto puede quedar completamente definido en tiempo de compilación, se dice que se trata de un enlazado previo o estático ("Earlybinding").  Así pues, enlazado estático significa que cuando, por ejemplo, el compilador genera una llamada a una función determinada, el enlazador puede resolverla mediante la dirección absoluta del código que debe ejecutarse.
b)         Enlazado Dinámico: En ocasiones las cosas no suceden como se han descrito en el párrafo anterior.  Hay veces en que hasta el momento de la ejecución, el programa no puede (o no quiere) determinar la dirección de la función que se invoca.  Esta situación se presenta típicamente cuando se usan las denominadas librerías dinámicas y en la POO, cuando se programan operaciones genéricas con objetos sin saber que objeto concreto (instancia de la clase) la utilizará en su momento.  Es decir, se utilizan clases polimórficas.


Cargadores



 Un cargador es la parte de un sistema operativo que es responsable de cargar programas en memoria desde los ejecutables. El cargador es usualmente una parte del núcleo del sistema operativo y es cargado al iniciar el sistema y permanece en memoria hasta que el sistema es reiniciado o apagado. Algunos sistemas tienen un ligador para realizar las operaciones de enlace, y un cargador separado para manejar la relocalización y la carga.

Las funciones más importantes de un cargador son: colocar un programa objeto en la memoria e iniciar su ejecución. Si tenemos un cargador que no necesita realizar las funciones de ligado y relocalización de programas, su operación es muy simple, pues todas las funciones se realizan en un solo paso. Se revisa el registro de encabezamiento para comprobar se ha presentado el programa correcto para la carga (entrando en la memoria disponible). A medida que se lee cada registro de texto, el código objeto que contiene pasa a la dirección de memoria indicada. Cuando se encuentra el registro de fin, el cargador salta a la dirección especificada para iniciar la ejecución del programa cargado.
Un programa objeto contiene instrucciones traducidas y valores de datos del programa fuente, y específica direcciones en memoria donde se cargarán estos elementos.
Carga, que lleva el programa objeto a la memoria para su ejecución.
Relocalización, que modifica el programa objeto de forma que puede cargarse en una dirección diferente de la localidad especificada originalmente.
Ligado, que combina dos o más programas objeto independientes y proporciona la información necesaria para realizar referencias entre ellos.

Cargadores Y Ligadores

Un cargador es un programa del sistema que realiza la función de llevar el programa objeto a la memoria para su ejecución. Algunos sistemas tienen un ligador o editor de ligado que combina dos o más programas objeto independientes y proporciona la información necesaria para realizar referencias entre ellos para realizar las operaciones de enlace, y un cargador separado para manejar la relocalización y la carga. En la mayoría de los casos todos los traductores de programas de un sistema en particular producen programas objeto en el mismo formato, de esta forma puede usarse el cargador o ligador del sistema con independencia del lenguaje de programación fuente original.
El ligador realiza la operación de enlazar programas objetos independientes. Los editores de ligado pueden efectuar varias funciones ultimas además de la simple preparación de un programa objeto para su ejecución estos también se pueden utilizar para construir paquetes de subrutinas u otras secciones de control que suelen utilizar juntas.

  Estos pueden ser útiles al tratar con bibliotecas de subrutinas que manejan lenguajes de programación de alto nivel. Comparados con los cargadores de ligadores los editores de ligado en general tienden a ofrecer mayor flexibilidad y control con el correspondiente incremento en complejidad y sobrecarga. La tarea primaria del enlazador es resolver referencias externas lleva acabo la siguiente etapa del proceso de traducción enlazado los módulos ensambladores y los acervos para formar un programa completo. En algunos sistemas el cargador simplemente copia el programa ejecutable a las posiciones de memorias apropiadas.


Cargadores Bootstrap:
  El programa cargador una vez, situado en la memoria del computador, cargará el programa de aplicación y los datos. Pero, previamente, se ha debido cargar el cargador en la memoria. Y esto se puede realizar por los siguientes métodos:
 
Entrada Manual
Mediante el teclado el usuario teclea el cargador BOOTSTRAP.  Después de esto, el cargador se carga así mismo en la memoria del computador.

Entrada por ROM
  Es posible tener las instrucciones de inicialización almacenados permanentemente en alguna porción de la ROM, en lugar de introducirlas manualmente por teclado o por panel frontal. Cuando se requiere el programa de bootstrap, el operador simplemente dirige al computador, mediante los conmutadores del panel, a ejecutar las instrucciones memorizadas en ROM: al estar el programa almacenado en ROM se elimina también la posibilidad de borrados accidentales.

Características Del Cargador Dependientes De La Maquina 
El cargador absoluto es simple y eficiente; sin embargo, este esquema tiene varias desventajas potenciales. Una de las más obvias es que el programador necesita especificar la dirección real en la que se cargará la memoria. Si se trata de un computador muy sencillo con poca memoria, esto no crea muchas dificultades, ya que solo hay espacio para ejecutar un programa a la vez. En máquinas más grandes y avanzadas, la situación no es tan fácil porque a menudo se quieren ejecutar a la vez varios programas independientes compartiendo la memoria.
En esta sección se consideran el diseño e implantación de un cargador más complejo. Este cargador se encarga de la relocalización y ligado del programa, además de las funciones básicas. La necesidad de relocalizar los programas es una consecuencia directa del cambio a computadores más grandes y potentes. La forma de efectuar la relocalización en un cargador también depende de las características de la máquina.

Características Del Cargador Independientes De La Maquina 
Con frecuencia se piensa que el cargado y el ligado son funciones de servicio del sistema operativo. La conexión del programador con estos servicios no es tan directa como la que tiene con, por ejemplo, el ensamblador durante el desarrollo del programa. Por tanto, la mayoría de los cargadores tienen menos características diferentes que las que se pueden encontrar en un ensamblador típico.
Búsqueda Automática en Biblioteca
En la mayoría de los casos se emplea una biblioteca estándar del sistema, pero se pueden especificar para el cargador otras bibliotecas, mediante proposiciones de control o parámetros. En algunos sistemas, esta característica se denomina llamada automática a biblioteca o búsqueda en biblioteca.
Opciones del Cargador
Muchos cargadores tienen un lenguaje especial de mandatos que se utiliza para especificar opciones. En algunos sistemas, las opciones se especifican como parte de un lenguaje de control de trabajos que procesa el sistema operativo. Cuando se usa este enfoque el sistema operativo incorpora las opciones especificadas a un bloque de control que se pone a disposición del cargador cuando se le invoca.