Download Tema 1. Un Recorrido por los Sistemas de Computación
Document related concepts
no text concepts found
Transcript
Organización y Estructura del Computador 1 Tema 1 – Un recorrido por los sistemas de computación Definiciones • La organización y estructura del computador, se refiere a la interconexión de las unidades funcionales que conforman un sistema de computación y en la manera como ellas interactúan. • Un sistema de computación está constituido de hardware y software del sistema que cooperan para ejecutar programas de aplicación. • El corazón de estos sistemas es el computador y la información dentro de él está representada comogrupos de bits que son interpretados de maneras diversas, dependiendo del contexto. Definiciones El software esta representado por los programas, que son traducidos por otros programas en diversas formas, comenzando como texto en código ASCII y luego siendo traducido por compiladores y enlazadores en archivos binarios ejecutables. La información es una combinación de bits y contexto. Ejemplo1: hello.c 1 #include <stdio.h> 2 3 int main() 4{ 5 printf("hello, world\n"); 6} Definiciones • Los archivos como hello.c que consisten exclusivamente de caracteres ASCII son conocidos como archivos texto. Los demás archivos son conocidos como archivos binarios. • Toda la información en un sistema incluyendo archivos en disco, programas almacenados en memoria, datos de usuario almacenados en memoria y datos transferidos a través de una red se representa como una agrupación de bits. La única cosa que distingue diferentes objetos de datos es el contexto en el cual los vemos. Por ejemplo, en diferentes contextos, la misma secuencia de bytes pueden representar un entero, un número en punto flotante, una cadena de caracteres o una instrucción de máquina. Los programas son traducidos por otros programas El programa hello comienza su vida como un programa de alto nivel en C, ya que de esta manera puede ser leído y entendido por los humanos. Sin embargo, para ejecutar hello.c sobre el sistema, las declaraciones (statements) individuales en C deben ser traducidas en una secuencia de instrucciones de bajo nivel en lenguaje de máquina. Estas instrucciones son entonces empaquetadas en una estructura denominada un programa objeto ejecutable y almacenadas como un archivo binario en disco. Fases en la traducción de los programas • Fase de compilación • Fase de ensamblaje • Fase de enlace Fase de compilación El compilador traduce el archivo texto de entrada al archivo texto hello.s, el cual contiene un programa en lenguaje ensamblador. Normalmente, cada declaración en un programa en lenguaje ensamblador describe exactamente una instrucción en lenguaje de máquina de bajo nivel en forma de archivo texto estándar. El lenguaje ensamblador es útil porque permite un lenguaje de salida común para diferentes compiladores para diferentes lenguajes de programación de alto nivel. Por ejemplo, los compiladores de C y Fortran generan archivos de salida en el mismo lenguaje ensamblador. Fase de ensamblaje el ensamblador traduce hello.s en instrucciones de lenguaje de máquina, empaquetándolas en una forma conocida como programa objeto relocalizable, y almacena el resultado en el archivo objeto hello.o. El archivo hello.o es un archivo binario cuyos bytes tienen codificados las instrucciones en lenguaje de máquina en vez de caracteres. SI quisiéramos visualizar hello.o con un editor de texto, aparecería solo caracteres especiales. Fase de enlace El programa hello llama a la función printf, la cual es parte de la librería estándar de C provista por cada compilador C. La función printf reside en un archivo objeto precompilado aparte llamado printf.o, el cual debe de alguna manera ser mezclado con el programa hello.o. El enlazador (ld) se encarga de esta unión. El resultado es el archivo hello, el cual es un archivo objeto ejecutable (o simplemente un ejecutable) que está listo para ser cargado en la memoria y ejecutado por el sistema. Organización del Hardware Organización del Hardware Buses: Están distribuidos en todas las partes del sistema y son una colección de conductos eléctricos que transportan los bytes de información entre los otros componentes de hardware. Los buses están diseñados típicamente para transferir pedazos de bytes de tamaño fijo conocidos como palabras. El número de bytes en una palabra (el tamaño de la palabra) es un parámetro fundamental del sistema que varía a lo largo de diversos sistemas. Por ejemplo, los sistemas Intel Pentium tienen un tamaño de palabra de 4 bytes, es decir. Los sistemas de clase servidor tales como los Intel Itanium y los Sun SPARCS de mayor nivel tienen tamaños de palabra de 8 bytes. Organización del Hardware Dispositivos de E/S: son la conexión del sistema al mundo exterior. Cada dispositivo de E/S está conectado al bus de E/S por un controlador o por un adaptador. La distinción entre los dos es principalmente una de empaquetado. Los controladores son conjuntos de chip en el dispositivo mismo o en el tarjeta de circuito impreso principal del sistema (a menudo llamado la tarjeta base o la tarjeta madre). Un adaptador es una tarjeta que se conecta a una ranura sobre la tarjeta madre. El propósito de cada uno es transferir la información, hacia un lado y hacia otro entre el bus de E/S y un dispositivo de E/S. Organización del Hardware Memoria Principal: La memoria principal es un dispositivo de almacenamiento temporal donde se guarda un programa y los datos que este manipula mientras el procesador está ejecutando dicho programa. Físicamente, la memoria principal está compuesta de una colección de chips de Memoria Dinámica de Acceso Aleatorio (DRAM). Lógicamente, la memoria está organizada como un arreglo lineal de bytes, cada uno de los cuales posee una dirección única comenzando desde la dirección cero. En general, cada una de las instrucciones de máquina que constituyen un programa puede consistir de un número variable de bytes. Los tamaños de los diversos datos que corresponden a variables de programas en C varían de acuerdo a su tipo. Por ejemplo, sobre una máquina Intel ejecutando Linux, los datos de tipo short requieren dos bytes, los tipos int, float, y long cuatro bytes y el tipo double requiere ocho bytes. Organización del Hardware Procesador: La Unidad Central de Procesamiento (CPU, por sus siglas en inglés – Central Processing Unit), o simplemente procesador, interpreta (o ejecuta) instrucciones almacenadas en la memoria principal. En su núcleo está un dispositivo de almacenamiento (o registro) del tamaño de una palabra denominado el contador de programa (PC, por sus siglas en inglés – program counter). En cualquier punto en el tiempo, el PC contiene la dirección de alguna cierta instrucción en lenguaje de máquina que está en la memoria principal. Organización del Hardware Procesador: Desde el momento en que el sistema es encendido, hasta el momento en que el sistema es apagado, el procesador realiza la misma tarea básica, una y otra vez: lee la instrucción de memoria que está señalada por el contador de programa (PC), interpreta los bits en la instrucción, realiza alguna operación simple determinada por la instrucción, y entonces actualiza el PC para señalar la siguiente instrucción, la cual puede estar o no contigua en la memoria a la instrucción que acaba de ser ejecutada. Organización del Hardware La unidad aritmético lógica (ALU, por sus siglas en inglés, Arithmetic Logic Unit) realiza las operaciones lógicas y aritméticas sobre los datos. El conjunto de registros es un dispositivo pequeño de almacenamiento que consiste de una colección de registros del tamaño de una palabra, cada uno de los cuales posee un nombre único. El contador de Programa (PC, program counter) contiene la dirección de la proxima instrucción en lenguaje de máquina que está en la memoria principal. Organización del Hardware Operaciones simples que el CPU realiza: • Cargar: Copiar un byte o una palabra desde la memoria principal en un registro, sobrescribiendo el contenido previo del registro. • Almacenar: Copiar un byte o una palabra desde un registro a una posición en la memoria principal, sobrescribiendo el contenido previo de dicha posición. • Actualizar: Copiar el contenido de dos registros a la ALU, la cual realiza una operación sobre las dos palabras y almacena el resultado en un registro, sobrescribiendo el contenido de dicho registro. • Lectura de E/S: Copiar un byte o una palabra desde un dispositivo de E/S a un registro. • Escritura en E/S: Copiar un byte o una palabra desde un registro a un dispositivo de E/S • Saltar: Extraer una palabra desde una instrucción y copiar dicha palabra en el contador de programa (PC), sobrescribiendo el valor anterior del PC. Ejecutando el programa hello Inicialmente, el programa shell está ejecutando sus instrucciones, esperando por un comando. Cuando se escriben los caracteres “./hello” en el teclado, el programa shell lee cada uno en un registro, y luego lo almacena en la memoria. Al presionar la tecla "enter" en el teclado, el shell sabe que hay un nuevo comando. El shell entonces carga el archivo ejecutable hello mediante la ejecución de una secuencia de instrucciones que copian el código y los datos contenidos en el archivo objeto hello desde el disco a la memoria principal. Los datos incluyen la cadena de caracteres “hello, world\n” que eventualmente será mostrada por pantalla. Usando una técnica conocida como acceso directo a memoria (DMA, por sus siglas en inglés – Direct Access Memory), los datos viajan directamente del disco a la memoria principal, sin pasar por el procesador. Ejecutando el programa hello Ejecutando el programa hello Ejecutando el programa hello Una vez que el código y los datos que están dentro del archivo objeto hello han sido cargados en la memoria, el procesador empieza a ejecutar las instrucciones en lenguaje de máquina que se encuentran en la rutina principal (main) del programa hello. Esta instrucción copia los bytes de la cadena “hello, world\n” desde la memoria al conjunto de registros, y desde allí al dispositivo de E/S, donde estos son desplegados en la pantalla. Ejecutando el programa hello Jerarquía de memoria Las restricciones de diseño de la memoria de un computador se pueden resumir en tres características: • Capacidad de almacenamiento • Velocidad de acceso • Costo por bit de almacenamiento. Es por eso que no se cuenta con un solo componente de memoria, y en consecuencia, los dispositivos de almacenamiento en cada sistema informático son organizados como una jerarquía de memoria Jerarquía de memoria Cache: Es un sistema especial de almacenamiento de alta velocidad donde se guarda un conjunto de datos duplicados de otros originales, con la propiedad de que los datos originales son costosos de acceder, normalmente en tiempo, respecto a la copia en el cache. Cuando se accede por primera vez a un dato, se hace una copia en la memoria cache; los accesos siguientes se realizan a dicha copia, haciendo que el tiempo de acceso medio al dato sea menor. • Jerarquía de memoria Jerarquía de memoria A medida que nos movemos de la cima de la jerarquía a la parte inferior, los dispositivos se hacen lentos, más grandes, y menos costosos por byte. El conjunto de registros ocupa el nivel superior de la jerarquía, que se conoce como el nivel 0 (L0). La caché L1 ocupa el nivel 1 (de allí el término L1). La caché L2 ocupa el nivel 2. La memoria principal ocupa el nivel 3, y así sucesivamente. Jerarquía de memoria El Sistema Operativo El sistema operativo, es el software que controla la ejecución de los programas en el procesador y gestiona sus recursos. Dentro de sus funciones se encuentran: la planificación de procesos y tareas, y la gestión de memoria; y sus objetivos son: -Comodidad: el sistema operativo hace que un computador sea más fácil y cómodo de usar. - Eficiencia: El sistema operativo permite que los recursos del computador se utilicen de forma eficiente. El Sistema Operativo Todos los intentos realizados por un programa de aplicación para manipular el hardware deben pasar a través del sistema operativo. El sistema operativo se encarga de proteger el hardware de un uso inadecuado por parte de aplicaciones fuera de control, y proporcionar rutinas que posean mecanismos simples y uniformes para la manipulación de complicados, y a menudo muy diferentes, dispositivos hardware de bajo nivel. El Sistema Operativo Procesos Un proceso es un programa en ejecución, que lo controla el sistema operativo, por tal motivo, cuando un programa tal como hello se ejecuta sobre un sistema moderno, el sistema operativo provee la ilusión que el programa es el único que se está ejecutando en el sistema. Por tal motivo, da la impresión como si tuviese uso exclusivo del procesador, la memoria principal y los dispositivos de E/S. El procesador ejecuta las instrucciones en el programa, una después de la otra, sin interrupción. Y el código y los datos del programa se observan como los únicos objetos en la memoria del sistema. Este entorno descrito se representa mediante un proceso. Procesos Múltiples procesos pueden ejecutarse concurrentemente sobre el mismo sistema y a cada proceso se le da la impresión de que tiene el uso exclusivo del hardware. Por concurrente, se entiende que las instrucciones de un proceso son intercaladas con las instrucciones de otro proceso. El sistema operativo realiza esta operación de intercalado con un mecanismo conocido como intercambio de contexto. Procesos El sistema operativo hace un seguimiento de toda la información de estado que el proceso necesita para ejecutarse. Este estado, el cual se conoce también como el contexto, incluye informaciones tales como los valores actuales del PC, el conjunto de registros y el contenido de la memoria principal. En cualquier instante de tiempo, sólo un proceso se está ejecutando sobre el sistema. Cuando el sistema operativo decide transferir el control desde el proceso actual a algún nuevo proceso, este realiza un cambio de contexto guardando el contexto del proceso actual, restaurando el contexto del nuevo proceso y luego pasando el control al nuevo proceso. El nuevo proceso reinicia exactamente donde había quedado. Procesos El sistema operativo hace un seguimiento de toda la información de estado que el proceso necesita para ejecutarse. Este estado, el cual se conoce también como el contexto, incluye informaciones tales como los valores actuales del PC, el conjunto de registros y el contenido de la memoria principal. En cualquier instante de tiempo, sólo un proceso se está ejecutando sobre el sistema. Cuando el sistema operativo decide transferir el control desde el proceso actual a algún nuevo proceso, este realiza un cambio de contexto guardando el contexto del proceso actual, restaurando el contexto del nuevo proceso y luego pasando el control al nuevo proceso. El nuevo proceso reinicia exactamente donde había quedado. Procesos