2009 Modulo 3: Los programas de sistemas
Introducción a la computación Carlos Alfredo Almonte López
L.I Soraya Ivvette Valdez García Ingeniería en computación
1
19/09/2009
Página 2 de 22
Tema
Pagina
1. Programación de bajo nivel
4
a) Descripción funcional de la memoria
6
b) Lenguajes: de máquina y simbólico
7
c) Programa fuente
9
d) Programa objeto
10
e) Mapa de memoria
11
f) Ciclo de ejecución de la unidad central de procesamiento
13
g) Tipos de direccionamiento de memoria y sus características
15
2.Programas de sistemas
19
A. Ensambladores
20
B. Macroprocesadores
20
C. Cargadores
20
D. Compiladores e interpretes
20
E. Sistema operativo
21
Página 3 de 22
INTRODUCCION
En este modulo veremos los diferentes programas de sistemas que hay como la programación de bajo nivel, el programa de fuente, programa objeto entre otros. Además aprenderemos a diferenciar los programas de sistema y sus funciones que tienen cada uno de los programas que veremos en este modulo.
Página 4 de 22
3.1 PR OGRA MA CION DE B AJO NIVEL Un lenguaje de programación de bajo niv el es el que proporciona poca o ninguna abstracción del microprocesador de un ordenador. Consecuentemente es fácilmente trasladado a lenguaje de máquina. La palabra "bajo" no implica que el lenguaje sea inferior a un lenguaje de alto nivel; se refiere a la reducida abstracción entre el lenguaje y el hardware.
Uso: v entajas e incon
veniente s.
En general se utiliza este tipo de lenguaje para programar controladores (drivers). La programación en un lenguaje de bajo nivel como el lenguaje de la máquina o el lenguaje simbólico tiene ciertas ventajas: • •
Mayor adaptación al equipo. Posibilidad de obtener la máxima velocidad con mínimo uso de memoria.
Pero también tiene importantes inconvenientes: • • • •
Imposibilidad de escribir código independiente de la máquina. Mayor dificultad en la programación y en la comprensión de los programas. El programador debe conocer más de un centenar de instrucciones. Es necesario conocer en detalle la arquitectura de la máquina.
Página 5 de 22
Características
• •
Se trabaja a nivel de instrucciones, es decir, su programación es al más fino detalle. Está orientado a la máquina.
Primer a gener ación El lenguaje de programación de primera generación (por sus siglas en inglés, 1GL), es el lenguaje de código máquina. Es el único lenguaje que un microprocesador entiende de forma nativa. El lenguaje máquina no puede ser escrito o leído usando un editor de texto, y por lo tanto es raro que una persona lo use directamente. Se gunda gener ación El lenguaje de programación de segunda generación (por sus siglas en inglés, 2GL), es el lenguaje ensamblador. Se considera de segunda generación porque, aunque no es lenguaje nativo del microprocesador, un programador de lenguaje ensamblador debe conocer la arquitectura del microprocesador (como por ejemplo las particularidades de sus registros o su conjunto de instrucciones).
Un pr og rama fuente es aquel que nos permite escribir un algoritmo mediante un lenguaje formal. Por eso al código desarrollado al programar se le llama código fuente.
Página 6 de 22
3.1.1 Descripción funcional de la Memoria - Formada por gran cantidad de celdas (palabras) de n Bits para guardar información. • N: ancho de palabra de la memoria.
- Dirección de memoria: identificativo de cada palabra o Posición de memoria. - Operaciones realizadas sobre la memoria: • Lectura • Escritura - Cada operación de lectura o escritura se efectúa sobre una palabra completa de Memoria. - Tiempo de ciclo de memoria: duración máxima de una operación de memoria. Estructura y Tecnología de Computadores I Descripción funcional de un computador -3Elementos de oper ación. - Tipos de operadores: • Número de operandos ∗ Monádico ∗ Diádico • Funcionamiento: ∗ Serie ∗ Paralelo • Operaciones realizadas ∗ De propósito general ∗ De propósito específico
Página 7 de 22
- Operaciones: lógicas, aritméticas, de desplazamiento, de rotación, etc. Elementos de inter cone xión - Enlaces • Conectan elementos entre los que se pretende intercambiar información. • Constan de n canales o líneas para transmitir datos de n bits en paralelo. - Tipos de enlaces • Enlaces dedicados: entre dos elementos. • Buses: entre múltiples elementos. - Tipos de buses: • Bus de datos: transferencia de datos entre elementos. ∗ Ancho del bus de datos: ancho del computador (suele coincidir También con el ancho de la palabra de memoria). • Bus de direcciones: transferencia de direcciones. ∗ Ancho del bus de direcciones: fija el tamaño máximo de la memoria. • Bus de control: transferencia de señales de control (carga, selección, lectura o Escritura de memoria, etc.). 3.1.2 Lenguajes: de máquina y simbólico La programación en lenguaje de maquina es difícil, por ello se necesitan lenguajes que permitan simplificar este proceso los lenguajes de bajo nivel han sido diseñados para ese fin. Estos lenguajes dependen de la maquina o sea del conjunto de instrucciones especificas de la computadora, ejemplo el lenguaje ensamblador en el las instrucciones se escriben en códigos alfabéticos conocidos como nemotécnicos (abreviaturas de palabras inglesas o españolas, ejemplo sumar en ingles ADD = suma SUB= resta MPY = multiplicar
Página 8 de 22
DIV=dividir LDA= cargar acumulador STO= almacenar Las palabras nemotécnicas son más fáciles de recordar que las secuencias de dígitos de 0 a 1.Una instrucciones típica en ensamblador puede ser ADD X, Y, Z. Esta instrucción significa que se deben sumar los números almacenados en las direcciones X, Y y almacenar el resultado en la dirección z, el lenguaje ensamblador traducirá la instrucción a código de máquina, por ejemplo. ADD = 1110 X=1001 Y=1010 Z=1011 La instrucción traducida será 1110 1001 1000 1011 Después que un programa ha sido escrito en lenguaje ensamblador se necesita un programa llamado ensamblador, que lo traduzca a código de maquina
Lenguaje de maquina: El lenguaje de maquina es aquel cuyas instrucciones son directamente entendibles por la computadora y no necesitan traducción posterior para que la UCP pueda comprender y ejecutar el programa. Las instrucciones en lenguaje maquina se expresan en términos de la unidad de memoria más pequeña (bit) = digito binario 0 o 1, en esencia una secuencia de bits que especifican la operación y las celdas de memoria implicadas en una operación Ejemplo. Instrucciones en lenguaje de maquina:
Página 9 de 22
0010, 0000, 1001, 1001, 10001, 1110. Como se observa estas instrucciones son fáciles de leer por una computadora y difíciles para un programador y viceversa. Por esta razón se hace difícil escribir programas en código o lenguaje de máquina. Y se requiere otro lenguaje para comunicarse con la computadora pero que se hace más fácil de escribir y de leer por el programador. Para evitar la tediosa tarea de escribir programas en este lenguaje se han diseñado otros programas de programación que facilitan la escritura y posterior ejecución de los programas. 3.1.3 Pr og rama f uente El código f uente de un programa informático (o software) es un conjunto de líneas de texto que son las instrucciones que debe seguir la computadora para ejecutar dicho programa. Por tanto, en el código fuente de un programa está descrito por completo su funcionamiento. El código fuente de un programa está escrito por un programador en algún lenguaje de programación, pero en este primer estado no es directamente ejecutable por la computadora, sino que debe ser traducido a otro lenguaje (el lenguaje máquina o código objeto) que sí pueda ser ejecutado por el hardware de la computadora. Para esta traducción se usan los llamados compiladores, ensambladores, intérpretes y otros sistemas de traducción. El término código fuente también se usa para hacer referencia al código fuente de otros elementos del software, como por ejemplo el código fuente de una página web que está escrito en el lenguaje de marcado HTML o en Java script u otros lenguajes de programación web y que es posteriormente ejecutado por el navegador web para visualizar dicha página cuando es visitada. El área de la informática que se dedica a la creación de programas y, por tanto a la creación de su código fuente, es la programación.
Página 10 de 22
3.1.4 PR OGRA MA OBJET O El pr og rama objeto se llama a bsoluto , si de be car gar se de unas posicione s fijas de memoria, y localiza ble si se puede car gar en cualquier lugar de la memoria. Además, antes de car gar el pr og rama objeto es necesario unir los a otr os pr og rama s. Los f or ma tos de los pr og rama s objetos son casi fle xibles como los estudiado s
localiza bles
P ar a los lenguajes de niv el ensamblador , aunque el montaje en memoria r equier e bastante tiempo . Esta función la r ealiza el montador de enlaces, mientr as que en los sistemas oper ativ os complejos, la car ga final la ef ectúa el car gador . Si el sistema opr esiv o es más sencillo , e xisten solo un solo paso r ealizado por el car gador enlazador . El pr og rama objeto consta de cua tr o par tes: el diccionario de símbolos e xter nos, el te xto , el diccionario locali za ble y la f ic ha END . El dir ectorio de símbolos e xter no s define las secciones de contr ol las r efer encias e xter nas, los puntos de entr adas y las ar ca s COMMON. El te xto compr ende las instr uccione s en el lenguaje de máquina y los da tos del pr og rama objeto . El dir eccionario localiza ble contiene las dir ecciones que tienen que modi ficar se en el. Momento de la ejecución.
Página 11 de 22
3.1.5 A péndice I - MAP
A DE MEMORIA
La memoria convencional en las máquinas más potentes está casi enteramente a disposición del usuario, aunque en los PC/XT el núcleo del sistema operativo ocupa un buen fragmento de la misma (unos 45 Kb). En los 286 y superiores, el núcleo del sistema se ubica en el HMA (primeros 64 Kb de la memoria extendida). La memoria de vídeo está dividida en dos bloques de 64 Kb: el ubicado entre A0000-AFFFF lo emplean la EGA, VGA y SuperVga en modo gráfico. El segundo, entre B0000-BFFFF es usado por la CGA y la Hércules, también en modo gráfico. En modo de texto, el adaptador monocromo de IBM (primeros PC sin gráficos) emplea 4 Kb a partir de B0000; el adaptador de color utiliza 16 KB a partir de B8000. Las EGA/VGA soportan ambos tipos de pantallas de texto; las tarjetas «bifrecuencia» también. Entre C0000 y CFFFF puede estar ubicada la BIOS de la VGA (normalmente entre C0000 y C7FFF) o las BIOS de discos duros de XT, el resto de este segmento (en 386) es memoria superior donde cargar los programas residentes con HILOAD (o LOADHIGH en MS-DOS) que así no ocupan memoria convencional. Los segmentos de 64 Kb que comienzan en D0000 y E0000 pueden contener extensiones de la BIOS (normalmente discos duros de XT) o también memoria superior. Uno de los dos puede ser empleado para la «ventana»
Página 12 de 22
de memoria expandida EMS (PC/XT/AT), normalmente el primero. En F0000 está colocada la ROM BIOS (aunque en PC/XT es frecuente que sólo estén ocupados los últimos 8 Kb; en los AT suele ubicarse un programa SETUP que permite al usuario definir la configuración de la máquina). Por encima, los primeros 64 Kb de memoria extendida son accesibles incluso desde el modo real del 286 y 386, siempre que la línea de direcciones A20 esté habilitada (lo que sucede a partir del DR-DOS y del MS-DOS 5.0). Para ello, con CS=FFFF se puede acceder a 65520 bytes (casi 64Kb) de RAM adicionales donde se puede cargar el núcleo del sistema operativo y quizá algún que otro programa residente (DR-DOS 6.0). El resto de la memoria en máquinas 286/386 es memoria extendida, que puede ser direccionada por controladores de disco virtual o cachés de disco duro, e incluso -en 386- puede ser convertida por software en memoria expandida paginable en el segmento (dentro del primer mega) habilitado al efecto.
Página 13 de 22
3.1.6 CICLO DE EJECUCION DE LA Unidad central de procesamiento
Oblea de un microprocesador Intel 80486DX2 (tamaño: 12×6,75 mm) es su empaquetado La unidad centr al de pr ocesamiento o CPU (por el acrónimo en inglés de central processing unit), o simplemente el pr ocesador o micr opr ocesador , es el componente en una computadora digital que interpreta las instrucciones y procesa los datos contenidos en los programas de la computadora. Las CPU proporcionan la característica fundamental de la computadora digital (la programabilidad) y son uno de los componentes necesarios encontrados en las computadoras de cualquier tiempo, junto con el almacenamiento primario y los dispositivos de entrada/salida. Se conoce como microprocesador el CPU que es manufacturado con circuitos integrados. Desde mediados de los años 1970, los microprocesadores de un solo chip han reemplazado casi totalmente todos los tipos de CPU, y hoy en día, el término "CPU" es aplicado usualmente a todos los microprocesadores. La expresión "unidad central de proceso" es, en términos generales, una descripción de una cierta clase de máquinas de lógica que pueden ejecutar complejos programas de computadora. Esta amplia definición puede fácilmente ser aplicada a muchos de los primeros ordenadores que
Página 14 de 22
existieron mucho antes que el término "CPU" estuviera en amplio uso. Sin embargo, el término en sí mismo y su acrónimo han estado en uso en la industria de la informática por lo menos desde el principio de los años 1960 . La forma, el diseño y la implementación de las CPU ha cambiado drásticamente desde los primeros ejemplos, pero su operación fundamental ha permanecido bastante similar. Las primeras CPU fueron diseñadas a la medida como parte de una computadora más grande, generalmente una computadora única en su especie. Sin embargo, este costoso método de diseñar los CPU a la medida, para una aplicación particular, ha desaparecido en gran parte y se ha sustituido por el desarrollo de clases de procesadores baratos y estandarizados adaptados para uno o muchos propósitos. Esta tendencia de estandarización comenzó generalmente en la era de los transistores discretos, computadoras centrales, y microcomputadoras, y fue acelerada rápidamente con la popularización del circuito integrado (IC), éste ha permitido que sean diseñados y fabricados CPU más complejos en espacios pequeños (en la orden de milímetros). Tanto la miniaturización como la estandarización de los CPU han aumentado la presencia de estos dispositivos digitales en la vida moderna mucho más allá de las aplicaciones limitadas de máquinas de computación dedicadas. Los microprocesadores modernos aparecen en todo, desde automóviles, televisores, neveras, calculadoras, aviones, hasta teléfonos móviles o celulares, juguetes, entre otros.
Página 15 de 22
3.1.7 Tipos de dir car acte rística s
eccionamiento
de memoria y sus
Los llamados modos de dir eccionamiento son las diferentes maneras de especificar en informática un operando dentro de una instrucción (lenguaje ensamblador). Cómo se especifican e interpretan las direcciones de memoria según las instrucciones.
Pueden ser: •
Inmedia to: En la instrucción está incluido directamente el operando.
ejemplo:MOV A,#17H •
Dir ec to: El campo de operando en la instrucción contiene la dirección en memoria donde se encuentra el operando.
Página 16 de 22
MOV A, 17H •
Ejemplo:
Indir ecto: El campo de operando contiene una dirección de memoria, en la que se encuentra la dirección efectiva del operando.
Página 17 de 22
MOV A,@17H •
•
Ejemplo:
Absolu to: El campo de operando contiene una dirección en memoria, en la que se encuentra la instrucción. De r e gistr o: Sirve para especificar operandos que están en registros.
Página 18 de 22
ejemplo:MOV A,R0 •
Indir ecto mediante r e gistr os: El campo de operando de la instrucción contiene un identificador de registro en el que se encuentra la dirección efectiva del operando.
Página 19 de 22
Ejemplo: MOV A,@R0 • •
De desplazamiento: Combina el modo directo e indirecto mediante registros De pila: Se utiliza cuando el operando está en memoria y en la cabecera de la pila.
3.2 Pr og ramas de sistema s Son aplicaciones de utilidad que se suministran con el SO pero no forman parte de él. Ofrecen un entorno útil para el desarrollo y ejecución de programas, siendo algunas de las tareas que realizan: • • • •
Manipulación y modificación de archivos. Información del estado del sistema. Soporte a lenguajes de programación. Comunicaciones.
Página 20 de 22
3.2.1 Ensamblador es Es un tipo de traductor que convierte programas escritos en lenguaje ensamblador en programas escritos en código máquina . 3.2.2 Macr opr oce sador es Traduce un lenguaje de alto nivel a otro, cuando el primero no puede pasar a lenguaje máquina directamente. 3.2.3 Car gado res Es la parte de un sistema operativo que es responsable de cargar programas en memoria desde los ejecutables (por ejemplo, archivos 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 operativos que tienen un núcleo paginable pueden tener el cargador en una parte paginable de la memoria, entonces a veces el cargador hace un intercambio de memoria 3.2.4 Intér pr ete s Se trata de tr aductor es-ejecutor es ya que con cada instrucción realizan un proceso triple de lectura-traducciónejecución. Son relativamente lentos, pero muy buenos para la depuración de programas. Compilador es Es el tipo de traductor más conocido. Se trata de un programa que traduce código fuente escrito en un lenguaje de alto nivel (Pascal) en código máquina (no siempr e). Son más rápidos que los intérpretes pero presentan mayor dificultad a la hora de detectar errores.
3.2.5 Sistema oper ativ o
Página 21 de 22
Es un software de sistema, es decir, un conjunto de programas de computación destinados a realizar muchas tareas entre las que destaca la administración de los dispositivos periféricos. Cuando se aplica voltaje al procesador de un dispositivo electrónico, éste ejecuta un reducido código en lenguaje ensamblador localizado en una dirección concreta en la ROM (dirección de reset) y conocido como reset code, que a su vez ejecuta una rutina con la que se inicializa el hardware que acompaña al procesador. También en esta fase suele inicializarse el controlador de las interrupciones. Finalizada esta fase se ejecuta el código de arranque (startup code), también código en lenguaje ensamblador, cuya tarea más importante es ejecutar el programa principal (main()) del software de la aplicación.1 Un sistema operativo se puede encontrar en la mayoría de los aparatos electrónicos que utilicen microprocesadores para funcionar, ya que gracias a éstos podemos entender la máquina y que ésta cumpla con sus funciones (teléfonos móviles, reproductores de DVD, autorradios, computadoras, radios, etc.).
Conclusión:
Página 22 de 22
Este tema se me hizo muy interesante porque comprendí los diferentes tipos de direccionamiento que hay direccionamiento inmediato, directo e indirecto. Además aprendí a diferenciar los diferentes tipos de programas de sistemas, tales como: ensambladores macro procesadores, cargadores entre otros también aprendí como funciona cada uno de los programas de sistemas