La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Funcionamiento de una Computadora

Presentaciones similares


Presentación del tema: "Funcionamiento de una Computadora"— Transcripción de la presentación:

1 Funcionamiento de una Computadora
Ciclo de Ejecución de Instrucciones

2 Funcionamiento de una Computadora – Ciclo de Instrucción
La función básica de una computadora es la ejecución de un programa (proceso). El procesador realiza este trabajo ejecutando las instrucciones especificadas por el programa. Un proceso es una instancia de ejecución de un programa. Un programa puede ser ejecutado varias ocasiones, y en cada ocasión se crea un proceso distinto, generalmente identificado por un número conocido como PID (Identificador de Proceso). Al ejecutarse el programa se crea un proceso, lo cual consiste en cargar en memoria las instrucciones y datos de un programa. Generalmente, al proceso se le asignan tres áreas en memoria llamadas segmento de código, segmento de datos y segmento de stack o pila. Nota: Normalmente, la dirección de inicio de cada segmento es guardada en un registro de segmento.

3 Funcionamiento de una Computadora – Ciclo de Instrucción
Segmento de Código - En este segmento se almacenan las instrucciones del programa. Segmento de Datos - En este segmento se almacenan los datos – variables y constantes del programa. Segmento de Stack o Pila - (en la que usando una estructura de stack, es decir, LIFO, se almacena de manera controlada la información para controlar la secuencia en que se llaman funciones o rutinas o cuando el procesador cambia de proceso a ejecutar (cambio de contexto). El procesamiento requerido por una instrucción es conocido como ciclo de instrucción. La ejecución de un programa o proceso consiste en repetir el ciclo de instrucción, instrucción por instrucción hasta el fin del programa. En su forma más simple, el procesamiento de instrucciones consiste en dos pasos: El procesador lee de memoria (fetch) las instrucciones, una a la vez y ejecuta cada instrucción. Estos dos pasos son referidos como ciclo fetch y ciclo de ejecución.

4 Funcionamiento de una Computadora – Ciclo de Instrucción
A lo largo de la ejecución de un proceso de inicio a fin (vida del proceso), éste puede pasar por varios estados (Estados de un Proceso):

5 Funcionamiento de una Computadora – Ciclo de Instrucción
Ciclo de Instrucción de una Computadora moderna El ciclo de instrucción de las computadoras actuales contempla los siguientes pasos: Fetch de Instrucción: Se procede a leer la siguiente instrucción a ejecutar en la dirección de memoria proporcionada por el registro PC (Contador de Programa). El código de instrucción contenido en la localidad de memoria direccionada se deposita en el registro IR (Registro de Instrucción) del procesador y se incrementa PC. Decodificación de Instrucción: El código de operación contenido en el código de instrucción se lee para determinar o identificar (decodificar) la instrucción a ejecutar y, en caso de requerirse, los operandos a usar.

6 Funcionamiento de una Computadora – Ciclo de Instrucción
Cálculo de Dirección de Operandos: Si la operación involucra la referencia de uno o más operandos en memoria o disponibles vía I/O (E/S), entonces se determina la dirección del operando u operandos. La dirección de cada operando se deposita en el registro MAR (Memory Address Register) para que, cuando la unidad de control lo determine, la dirección sea propagada en el Bus de Direcciones. Fetch de Operando: Se procede a leer los operandos requeridos en las direcciones de memoria calculadas o de la I/O. Una vez que el operando se lee en la memoria, éste se deposita temporalmente en el registro MBR (Memory Buffer Register), mismo que transfiere el operando a algún registro del procesador cuando lo indique la unidad de control. Ejecución de la Instrucción: La unidad de control envía de manera organizada y sincronizada las señales a los distintos elementos y circuitos de la ALU que procesan la operación indicada en la instrucción. Escritura de Resultados: Si se requiere, se escribe (guarda) el o los resultados en memoria en la dirección indicada. En ocasiones, el o los resultados se almacena en un registro del procesador, lo que no requiere acceso a memoria, o simplemente la instrucción no produce un resultado a almacenar. En caso de requerirse escribir el resultado en memoria, el resultado es depositado temporalmente en el MBR y posteriormente se propaga por el bus de datos e instrucciones para que sea escrito en la localidad de memoria con la dirección contenida en el MAR.

7 Ejemplo de ejecución de un programa (proceso)
Funcionamiento de una Computadora – Ejemplo de ejecución de un programa (proceso) Ejemplo de ejecución de un programa (proceso)

8 Funcionamiento de una Computadora – Ejemplo de ejecución de un programa (proceso)

9 Funcionamiento de una Computadora – Ejemplo de ejecución de un programa (proceso)
En el ejemplo anterior, se aprecia la ejecución de tres ciclos de instrucción: Fetch de Instrucción: El registro PC contiene la dirección hexadicimal 300H de la siguiente instrucción. Esta instrucción tiene el código de instrucción hexadecimal 1940H, el cual es cargado en el registro de instrucción IR y se incrementa PC. Note que el proceso involucra el uso del registro MAR y el registro MBR.

10 Funcionamiento de una Computadora – Ejemplo de ejecución de un programa (proceso)
Decodificación de Instrucción: Los 4 bits (byte) más significativo (los localizados al extremo izquierdo) representan el opcode de la instrucción, mismo que en este caso indica la operación o instrucción cargar el registro acumulador AC con el contenido de la localidad de memoria cuya dirección queda especificada por los restantes 12 bits (tres dígitos hexadecimales) a la derecha del opcode (calculo de dirección de operando). En este caso, la dirección 940H indica la localidad de memoria del dato a ser traido al procesador y almacenado en el registro MBR para después ser depositado en el registro acumulador AC (fetch de operando).

11 Funcionamiento de una Computadora – Ejemplo de ejecución de un programa (proceso)
Se realiza el fetch de la siguiente instrucción (5941H) de la localidad de memoria 301H y el PC se incrementa. El opcode 5H (0101 en binario) indica sumar al contenido del acumulador el valor en la localidad de memoria 941H. El contenido previo del registro AC y el contenido de la localidad 941H se suman y el resultado es depositado en el registro AC. Se realiza el fetch de la siguiente instrucción (2941H) de la localidad de memoria 302H y el PC se incrementa. El opcode 2H (0010 en binario) indica almacenar el contenido del acumulador en memoria. El Contenido del acumulador AC se almacena en la localidad de memoria 941H (escribir resultado en memoria).

12 Funcionamiento de una Computadora - Interrupciones
Virtualmente todas las computadoras proveen un mecanismo por medio del cual programas, unidades I/O o memoria pueden interrumpir el procesamiento normal del procesador. Una interrupción es una señal que se envía al procesador para indicarle la ocurrencia de un evento. Subsecuentemente, el procesador “interrumpe o pospone” la ejecución del proceso en turno para proceder a “servir” el programa o rutina correspondiente al evento inherente a la interrupción recibida. Usualmente, tras procesar una interrupción, el procesador continúa con el procesamiento de la tarea que realizaba, en el punto en el que se quedó antes de servir la interrupción.

13 Funcionamiento de una Computadora - Interrupciones

14 Funcionamiento de una Computadora - Interrupciones
Las interrupciones son usadas primordialmente como un medio para mejorar la eficiencia de procesamiento. Por ejemplo, la mayoría de los dispositivos externos o periféricos son mucho más lentos que el procesador, por lo que es necesario que se implemente un mecanismo de sincronía entre el CPU y los dispositivos I/O. Una interrupción, dependiendo de su tipo y naturaleza, puede requerir atención inmediata, esperar a que el CPU le dé servicio, o, simplemente, ser ignorada. Existen dos tipos de interrupciones: Interrupciones de software (conocidas también como excepciones o trampas). Estas interrupciones son generadas dentro de un programa y son usadas para indicar al CPU que hacer una vez que recibe la interrupción. Usualmente, las interrupciones de software son implementadas como instrucciones dentro del conjunto de instrucciones de una computadora. Estas interrupciones causan un cambio de contexto (context switch), lo cual significa que se graba el estado de ejecución de la operación en curso y se procede a ejecutar una rutina manejadora similar a la de una instrucción de hardware. Clases de Interrupciones de software: Programa – Generadas por alguna condición que ocurre como resultado de la ejecución de una instrucción (ejemplo: overflow o sobreflujo resultante de una división por cero u otra operación aritmética) o por alguna condición señalada por el sistema operativo.

15 Funcionamiento de una Computadora - Interrupciones
Interrupción de hardware. Este tipo de interrupciones son producidas por otros dispositivos, dispositivos periféricos, o componentes de hardware de la computadora. Estas interrupciones causan que el procesador grabe el estado de ejecución actual y que inicie la ejecución de una rutina manejadora de la interrupción (interrupt handler). La unidad de control en la computadora que recibe la interrupción es quien determina en dónde se encuentra la rutina de manejo correspondiente e instruye que se inicie el procesamiento de la misma. Clases de Interrupciones de hardware: Timer o temporizador - Generada por un temporizador dentro del procesador para permitir que el sistema operativo realice ciertas funciones en forma regular. I/O - Generada por un controlador I/O para indicar una terminación normal de una operación o para indicar una variedad de condiciones de error. Falla de hardware – Generada por una falla, tal como la falla de poder o de error de paridad de memoria. Nota: Las PCs, hasta hace poco, daban soporte a 256 interrupciones de software y 15 de hardware.

16 Funcionamiento de una Computadora - Interrupciones
Ciclo de Instrucción de una Computadora moderna con Interrupciones Habilitadas Cuando una computadora permite y habilita interrupciones, al ciclo de instrucción se le agrega los siguientes pasos: Fetch de Instrucción: Se procede a leer la siguiente instrucción a ejecutar en la dirección de memoria proporcionada por el registro PC (Contador de Programa). El código de instrucción contenido en la localidad de memoria direccionada se deposita en el registro IR (Registro de Instrucción) del procesador y se incrementa PC. Decodificación de Instrucción: El código de operación contenido en el código de instrucción se lee para determinar o identificar (decodificar) la instrucción a ejecutar y, en caso de requerirse, los operandos a usar.

17 Funcionamiento de una Computadora - Interrupciones
Todos los pasos contenidos en el ciclo de instrucciones pueden ser agrupados en tres subciclos o ciclos: Ciclo Fetch: Incluye el fetch de instrucción. Ciclo de Ejecución: Incluye la decodificación de la instrucción, cálculo de direcciones de operandos, fetch de operandos, ejecución de la instrucción u operación y escritura de resultados. Ciclo de Interrupción: Incluye la revisión de ocurrencia de interrupciones y el procesamiento de las interrupciones.

18 Funcionamiento de una Computadora - Interrupciones
Mayor Eficiencia de Procesamiento Mediante Interrupciones Caso sin Interrupciones Supóngase que un procesador no tiene interrupciones y, por lo tanto, que éste está transfiriendo datos a una impresora usando el esquema del ciclo de instrucción sin interrupciones. Después de cada operación de escritura, el procesor debe entrar en una pausa y mantenerse inactivo hasta que la impresora termina su trabajo. La longitud de la espera puede estar en el orden de cientos o, incluso, miles de ciclos de instrucción que no involucran la memoria. Claramente, esto implica un gran desperdicio de procesador. El programa de usuario ejecuta una serie de llamadas de sistema (system calls) WRITE dentro del código del programa. Los segmentos de código 1, 2 y 3 se refieren a secuencias de instrucciones que no involucran entrada/salida (I/O). Las llamadas WRITE invocan a un programa I/O que a la vez es una utilidad del sistema y que llevará a cabo la verdadera operación de I/O.

19 Funcionamiento de una Computadora - Interrupciones
El Programa I/O consiste de 3 secciones: Una secuencia de instrucciones, etiquetada con el número 4 en la figura de la siguiente página, usada para preparar la operación de I/O. Esto puede incluir el copiar los datos a ser transferidos a la salida en un buffer y preparar los parámetros para un comando de dispositivo. El comando de I/O. Sin el uso de interrupciones, una vez que se emite este comando, el programa debe esperar que el dispositivo I/O ejecute la función solicitada (o periódicamente monitorear el dispositivo). El programa debe esperar realizando repetidamente una operación de prueba para determinar si la operación I/O terminó. Una secuencia de instrucciones, etiquetada con el número 5 en la figura de la siguiente página, para completar la operación. Esto puede incluir el asignar un valor a una bandera para indicar el éxito o falla de una operación.

20 Funcionamiento de una Computadora - Interrupciones
Caso sin Interrupciones

21 Funcionamiento de una Computadora - Interrupciones
Caso con Interrupciones Con interrupciones, el procesador puede involucarse en la ejecución de otras instrucciones mientras la operación de I/O está en progreso. Como en el caso anterior, el programa de usuario alcanza un punto en el cual realiza una llamada de sistema en la forma de una llamada WRITE. El programa I/O que es invocado en este caso consiste solamente en el código de preparación y el comando de I/O. Después de que estas pocas instrucciones han sido ejecutadas, el control regresa al programa de usuario. Por lo pronto, el dispositivo externo está ocupado recibiendo datos de la memoria de la computadora e imprimiéndolos. Está operación I/O se lleva a cabo concurrentemente con la ejecución de la instrucción del programa. Cuando el dispositivo externo se vuelve disponible, esto es, cuando está listo a aceptar más datos del procesador, el módulo I/O para el dispositivo externo envía una señal de solicitud de interrupción. El procesador responde suspendiendo el proceso del programa en curso, saltando a un programa para dar servicio al dispositivo de I/O particular, conocido como manejador de interrupción (interrupt handler), y continuar con el proceso original después que el dispositivo es servido.

22 Funcionamiento de una Computadora - Interrupciones
Caso con Interrupciones X = Punto en que se recibe señal de interrupción

23 Funcionamiento de una Computadora - Interrupciones
Interrupciones Múltiples Considérese ahora el caso en el que pueden presentarse múltiples interrupciones. Por ejemplo, un programa puede recibir datos de una línea de comunicaciones y resultado de impresión. La impresora generará una interrupción cada vez que termina una operación de impresión. El controlador de la línea de comunicación generará una interrupción cada vez que una unidad de datos se presenta. La unidad puede ser un caracter simple o un bloque, dependiendo de la naturaleza de la comunicación. En cualquier caso, es posible que una interrupción de comunicación ocurra mientras que la interrupción de la impresora está siendo procesada. Las interrupciones múltiples pueden ser tratadas de dos maneras:

24 Funcionamiento de una Computadora - Interrupciones
Deshabilitación de Interrupciones mientras se procesa otra interrupción Una interrupción deshabilitada significa simplemente que el procesador ignora la señal de solicitud de interrupción. Si una interrupción ocurre durante este tiempo, generalmente queda pendiente y será revisada por el procesador después de que el procesador ha habilitado la interrupciones de nueva cuenta. Por lo tanto, cuando un programa de usuario está siendo ejecutado y una interrupción se presenta, las interrupciones son deshabilitadas inmediatamente. Cuando el procesamiento de la rutina de la interrupción es completada, las interrupciones son habilitadas antes de regresar al procesamiento del programa de unuario y el procesador revisa para ver si se han presentado interrupciones adicionales. Este método es simple, ya que las interrupciones son manejadas en un estricto orden secuencial.

25 Funcionamiento de una Computadora - Interrupciones

26 Funcionamiento de una Computadora - Interrupciones
Definición de prioridades para interrupciones Se define prioridades para interrupciones y se permite que una interrupción de mayor prioridad cause que el manejador de interrupción (rutina) de una interrupción de menor prioridad se interrumpa así mismo.

27 Funcionamiento de una Computadora - Interrupciones
Como ejemplo, considérese un sistema con tres dispositivos I/O: una impresora, un disco y una línea de comunicaciones, con prioridades crecientes de 2, 4 y 5, respectivamente. La siguiente figura ilustra una posible secuencia:

28 Funcionamiento de una Computadora - Interrupciones
Un programa de usuario (proceso) inicia en t = 0. En t = 10, se presenta una interrupción de impresora. La información (contexto) del proceso de usuario es almacenada en el stack del sistema, y se inicia el procesamiento de la rutina de servicio (ISR) de la impresora. Mientras la ISR de la impresora está siendo procesada, en t = 15, ocurre una interrupción de comunicaciones. Ya que la línea de interrupciones tiene mayor prioridad que la impresora, se interrumpe el procesamiento de la ISR de la impresora, su estado (contexto) es almacenado en el stack, y se procede a procesar la ISR de la línea de comunicaciones. Mientras la ISR de comunicaciones se procesa, se presenta una interrupción de disco en t = 20. Ya que esta interrupción tiene una prioridad menor, simplemente es puesta en espera mientras se termina el proceso de la ISR de comunicaciones. Cuando se completa la ISR de comunicaciones en t = 25, el estado o contexto anterior es reestablecido en el procesador, el cual corresponde a la ejecución de la ISR de la impresora. Sin embargo, antes de que cualquier instrucción de esta rutina de la impresora sea ejecutada, el procesor otorga su atención a la interrupción de disco con mayor prioridad que la impresora y transfiere el control a la ISR del disco. Solamente cuando el procesamiento de la ISR de disco se ha completado, (t = 35), se reestablece el procesamiento de la ISR de la impresora. Cuando la rutina termina en t = 40, el control regresa finalmente al programa de usuario.

29 Función I/O y Acceso Directo a Memoria (DMA)
Funcionamiento de una Computadora - Función I/O y Acceso Directo a Memoria (DMA) Función I/O y Acceso Directo a Memoria (DMA) Un módulo I/O (por ejemplo, el controlador de un disco) puede intercambiar datos directamente con el procesador. En la misma manera que un procesador puede iniciar una operación de lectura o escritura con la memoria, designando la dirección de una localidad de memoria específica, el procesador también puede leer datos de o escribirlos en un módulo I/O. En este caso, el procesador identifica un dispositivo específico que es controlado por un módulo I/O particular. Por lo tanto, una secuencia de instrucciones similar a la que se presenta en la ejecución de un proceso entre el procesador y la memoria, también puede darse con instrucciones de I/O en lugar de instrucciones que referencian a la memoria. En algunos casos, es deseable permitir que el intercambio I/O ocurra directamente con la memoria. En tal caso, el procesador otorga a un módulo I/O la autoridad de leer de o escribir en la memoria directamente, de tal menera que la transferencia I/O – memoria ocurra sin involucrar al procesador. Durante tal transferencia, el módulo I/O emite comandos de lectura o escritura, liberando al procesador de la responsabilidad del intercambio. Esta operación is conocida como acceso directo a memoria (DMA – Direct Memory Access).

30 Información Complementaria: Llamadas de Sistema (system call)
Funcionamiento de una Computadora – Información Complementaria: Llamadas de Sistema Información Complementaria: Llamadas de Sistema (system call) Las llamadas de sistema son funciones similares a las funciones en Lenguaje C que permiten que un programa de usuario pueda comunicarse con el Kernel (núcleo) del Sistema Operativo (OS). En el Kernel del sistema operativo se encuentran las funciones más básicas o primitivas del mismo, incluyendo aquellas que permiten comunicación u operación con distintos componentes de la computadora o dispositivos I/O.


Descargar ppt "Funcionamiento de una Computadora"

Presentaciones similares


Anuncios Google