Secciones y Segmentos STARTUP

Slides:



Advertisements
Presentaciones similares
TEMA 1 Introducción a la Programación Concurrente
Advertisements

UNIVERSIDAD DEL VALLE DE MEXICO CAMPUS CHAPULTEPEC
VI Unidad. Sistema Operativo
LICENCIATURA EN SISTEMAS COMPUTACIONALES EN ADMINISTRACION
UNIX COMP 240.
CLASE 3 SOFTWARE DEL MICROPROCESADOR
Una variable en un programa es algo con un nombre, cuyo valor puede variar. La manera en que el compilador y enlazador maneja esto es asignando un bloque.
Introducción al software
Funcionamiento, programación
Programación 1 Introducción
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Windows XP sp3.
Teoría de lenguajes y compiladores
INTERFAZ DE ACCES DISEÑO DE BASE DE DATOS
Introducción al Software
Composición Interna de un Procesador

HILOS Y COMUNICACIÓN ENTRE PROCESOS
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
ARQUITECTURA DE LOS MICROPROCESADORES DE 8 BITS
Introducción a la Ingeniería en Sistemas
Semana 5 Subprogramas..
Programación III Clase 07 Funciones.
Unidad 7 Entrada/Salida
Introducción a la Programación. Lenguaje de Máquina.
Tecnología de la información Unidad: 3 El software Profesor: Fernando J. Martini.
DISEÑO DE SOFTWARE 1ª. Parte
Administración de Memoria Memoria Virtual
SOFTWARE DE PROGRAMACIÓN
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Asignación de Espacio No Contiguo
Conceptos Arquitectónicos del computador
FUNDAMENTOS DE PROGRAMACIÓN ISC. GABRIEL ZEPEDA MARTÍNEZ EST. ABRAHAM F. MACHUCA VAZQUEZ.
Capítulo 7 Gestión de memoria.
Unidad I: Registros e Interrupciones Facilitador: Ing. Eduardo Brando.
Tema 2: Lenguaje máquina
introducción al Lenguaje Ensamblador
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
Introducción a los SOs.
Tema 8: Introducción a los SOs. Tema 8: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.), Introducción.
Breve introducción a la arquitectura de 32 bits intel.
Breve introducción a la arquitectura de 32 bits intel.
PROGRAMAS INFORMATICOS
Sistema operativo Unix
Estructura de los Sistemas Operativos
Metodología de la programación
Hecho por: M.C. Luis Fernando Guzmán Nateras v3 Organización de Computadoras Preparación: Examen 1 JEOPARDY.
Prof. Flor Narciso Departamento de Computación
Ing. Lionel Hendryk. Sistemas Embebidos Un sistema embebido es un sistema de computación diseñado para realizar una o algunas pocas funciones dedicadas.
Son los atributos de un sistema que son visibles para un programador, es decir aquellos atributos que impactan directamente en la ejecución lógica de un.
Tipos de Lenguajes Ensamblador.
INTRODUCCIÒN MICROCONTROLADORES
Computadora Es una máquina electrónica que recibe y procesa datos para convertirlos en información útil. Una computadora es una colección de circuitos.
ARQUITECTURAS DE LOS SERVIDORES El computador tiene 2 aspectos para entender su funcionamiento al nivel de programación: Almacenamiento Procesamiento Para.
3.2.1 Administración de almacenamiento
Licenciatura Tecnologías de la Información y Comunicación
UNIDAD I INTRODUCCION A LOS S.O.
INTEGRANTES: JOSE ESTEVEZ _HUGO ANDRADE CURSO: 5TO “B”
 Panorama General Fundamentos de Programación M.I. Jaime Alfonso Reyes Cortés.
José Alvarado – Cristian Anzola
MEMORIA DINÁMICA.
Arquitectura de Computadores
 PRESENTADO POR : ANDRES MAYORGA DANIELA PAEZ VEGA.
Fundamentos de Programación Unidad I Conceptos Básicos.
El microprocesador y su arquitectura
Lenguaje ensamblador Conceptos introductorios. Formatos de Instrucción. Modos de Direccionamiento. Conjunto de instrucciones básico. Introducción al Lenguaje.
Gestión de Memoria – Parte 2
CAPITULO V Arquitectura de Von Neumann
Arquitectura de PCs Arquitectura básica del PC. Introducción El PC es el resultado de una especificación técnica de IBM El hardware se organiza de forma.
Katty Evangelina Hipólito Chi.   Aunque cada maquina tiene un lenguaje ensamblador distinto, el proceso de ensamblador tiene suficiente similitudes.
Transcripción de la presentación:

Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Sistemas Embebidos Arquitectura similar a una computadora. Características operativas mucho más simples y específicas. Estrecha relación entre hardware y software. Ej: Balanzas Electrónicas Sistema de Inyección electrónica Controladores digitales de procesos

Comparativa PC vs. SE PC SE Operación dependiente de los programas que se carguen. No es necesario la carga de ningún programa, ya que su uso es específico. Programación independiente del hardware. Fuerte dependencia en sus circuitos y programación con la función prevista para el sistema. Sistema Operativo (hace transparente al programador los recursos). No posee sistema operativo.

Lenguaje de Programación Lenguaje más cercano a los dispositivos físicos y al uP -> ASSEMBLER. Control completo del sistema. Lógica rudimentaria y carente de estructura, lo que hace muy dificultosa su documentación y normalización. Relación excluyente con el uP lo que implica una difícil migración de soluciones a diferente hardware.

Secciones La organización de tipos de datos y código es importante cuando se necesita diseñar un SE (Hardware y Software). Concepto Clásico de Memoria: Recurso Lineal. Concepto Actual: Recurso compartido, escaso, virtual y de compleja manipulación.

La Sección La sección implementa un modelo lineal (al estilo clásico) y representa un componente mínimo que permite generar diferentes modelos de memoria, lineales y no lineales (paginados y/o segmentados).

Aspectos de Diseño Tipos heterogéneos de memoria. Interfaz con lenguajes de alto nivel. Portabilidad y reusabilidad del código. Orden y documentación de los módulos de programa.

Definición y nomenclatura Si bien la denominación más neutral sería la de “secciones”, por tratarse de porciones de memoria lineal que componen un sistema mayor, ocurre que cuando seleccionamos una familia de microprocesadores y nos disponemos a implementar esta idea de organización lógica, encontramos una fuerte influencia de los recursos de que dispone el hardware para manejar las secciones. En el caso de la Figura 1 sería normal llamar a las secciones, páginas.

Definición y nomenclatura Si en cambio tratamos con una máquina cuyo diseño pretende separar su organización lógica de la física utilizando segmentación, veremos que los compiladores se refieren a las secciones llamándolas “segmentos”, abarcando también de manera limitada las posibilidades de las secciones.

Directivas del compilador - Segmentos Haciendo una interpretación simplificada, podemos decir que la función de un compilador es interpretar un listado de instrucciones, escrito en un lenguaje determinado de programación, y generar una secuencia de códigos binarios ejecutables por el microprocesador. La incorporación de definiciones de segmentos en los programas fuente, hace que el compilador genere distintas listas binarias, cada una de las cuales tiene asociado un nombre y mantiene un contador de direcciones como referencia de acumulación de elementos.

Directiva SEGMENT

Directiva EXTRN El contenido de _TEXT y _DATA define su tipo como segmentos de código y datos respectivamente, sin embargo el ensamblador no define que estos segmentos sean apuntados durante la ejecución del programa por los registros CS y DS. Debemos notar que la asignación de valor al segmento de código, siempre implica una alteración del flujo del programa, por lo que no puede hacerse mediante una instrucción “MOV”.

Interfaces con lenguajes de alto nivel La mayoría de los compiladores de lenguajes de alto nivel generan como producto intermedio de la compilación, un programa en ASSEMBLER que luego es procesado por un ensamblador. En la generación de este producto, el compilador realiza un gran número de definiciones respecto de la organización de la memoria, el manejo de las secciones o segmentos, las estructura de datos y el intercambio de parámetros en las llamadas a funciones, que es necesario conocer si pretendemos combinar módulos en ASSEMBLER con lenguajes de alto nivel.

Programa en C long x = 7338; int main() { /* Define x como variable global */ long x = 7338; /* Encabeza la función principal de C */ int main() { long a ; /* Define a como variable local */ a = x + 1; /* Opera y asigna valor */ return 0; /* Termina el programa sin error */ }

Linkeado del modulo _DATA

Linkeado del modulo _TEXT

START UP Luego de conectada la alimentación, muchos elementos de hardware y software necesitan ser configurados para su correcto funcionamiento, razón por la cual marcaremos una diferencia entre la iniciación del sistema y su operación. Luego del RESET cualquier microprocesador inicia la ejecución de instrucciones desde una dirección físicamente fija en la memoria, habitualmente con las interrupciones enmascaradas.

Definición de la Pila Una de las acciones prioritarias para habilitar la mayoría de las capacidades operativas del sistema es definir la pila. En la familia 80xxx esto implica asignarle valor a dos registros, el SP (puntero de pila) y el SS (segmento de pila), para que apunten a un rango de direcciones del mapa físico de memoria donde se encuentre RAM. Como en la mayoría de los microprocesadores, la pila crece en el sentido de las direcciones decrecientes de memoria, este es otro ejemplo donde debemos diferenciar el concepto lógico, del físico, en el modelo de memoria.

La Pila La pila implementa un procedimiento secuencial de reserva de memoria, su organización es de tipo FIFO, pero admite acceso indexado sobre el espacio ocupado, utilizando un registro índice o base de pila BP. Esta modalidad de implementación facilita la optimización del uso de la memoria, pero arrastra una dificultad relacionada con la imposibilidad de predecir exactamente cuanta memoria ocupará la pila.

Inicialización de la Pila Es necesario destacar una característica de la definición de la pila en la familia INTEL 80xxx. Debido al direccionamiento segmentado, para ubicar una dirección física de memoria es necesario darle valor a dos registros (segmento y desplazamiento), en el caso particular de los punteros de pila, esta es una situación de riesgo, ya que entre las dos asignaciones los punteros están inconsistentes. Para salvar este problema el microprocesador “fusiona” la instrucción siguiente a una asignación de SS e impide que cualquier interrupción (incluso la NMI) divida las instrucciones.

Vectores de Interrupción La familia INTEL 80xxx obtiene la dirección de todas los servicios de interrupciones mediante una tabla de 256 vectores FAR (segmento y desplazamiento) ubicada al principio del mapa físico de direcciones. ¿ Donde ubicar los vectores, en ROM o en RAM ?

Inicialización de Variables Copia del segmento _DATA y _BSS de ROM a RAM. Asegurar que el contenido de _BSS sean todos ¨0¨ antes de que el programa principal reciba el control. Apuntarlos con DS para que puedan usarse como variables.

Esqueleto de segmentos STARTUP