jueves, 29 de agosto de 2013
miércoles, 28 de agosto de 2013
Actividad #5
Interrupciones
Las interrupciones pueden ser producidas por Hardware o por Software
Las interrupciones por Hardware son producidas por un dispositivo y viajan por el mismo bus del sistema.
Las interrupciones por Software son producidas por medio de la ejecución de una operación especial que se conoce como "llamada al sistema" (system call) o por errores producidos dentro de un proceso, también conocidas como excepciones.
Interrupciones software
Un dispositivo periférico puede generar una señal eléctrica llamada interrupción que modifica ciertas banderas que se encuentran en el CPU. La detección de una interrupción es parte del ciclo de instrucción. En cada ciclo de instrucción, el CPU chequea las banderas hardware para ver si algún dispositivo necesita atención.
Las interrupciones generadas por los dispositivos periféricos son generalmente asíncronas con respecto al programa que se está ejecutando. Un evento es asíncrono a una entidad si el momento cuando ocurre no está determinado por la entidad. Las interrupciones no siempre ocurren en el mismo punto dentro de la ejecución de un programa. En contraste, un evento de error como la división por cero es síncrono en el sentido de que siempre ocurre durante la ejecución de una instrucción particular si el mismo dato es presentado a la instrucción.
Los Sistemas de Operación usan interrupciones para implementar el tiempo compartido. Tienen un dispositivo llamado timer que genera una interrupción después de un intervalo específico de tiempo. El Sistema de Operación inicializa el timer antes de actualizar el Program Counterpareejecutar un programa de un usuario. Cuando el timer expira, genera una interrupción causando que el CPU ejecute la rutina de servicio de la interrupción timer.
Una señal o signal es la notificación por software de que un evento ocurrió. Por lo general es la respuesta del Sistema de Operación. Por ejemplo, ctrl-C genera una interrupción para el manejador de dispositivo que maneja el teclado. El manejador notifica al proceso apropiado mandando un signal. El Sistema de Operación también puede enviar signals a un proceso para notificar la finalización de una E/S o de un error.
Pasos durante una interrupción
- El CPU suspende lo que estaba realizando. El hardware transfiere el control al sistema de operación.
- Deshabilita las interrupciones. Mientras se atiende una interrupción no se puede atender otra que llegue. Algunas arquitecturas con manejo de interrupciones sofisticadas permiten, mediante un esquema de prioridades, interrumpir un servicio de interrupción para atender otra de mayor prioridad. Aquellas interrupciones de menor o igual prioridad son deshabilitadas.
- El kernel del sistema de operación salva el estado actual del proceso interrumpido
- Transfiere su ejecución a una dirección fija. Esta dirección por lo general contiene la dirección de comienzo donde la rutina de servicio de la interrupción se encuentra.
- Se ejecuta la rutina de interrupción
- Se restaura el estado anterior
- Se habilitan las interrupciones.
- La arquitectura de interrupciones debe también almacenar la dirección de la instrucción interrumpida.
Son aquellas programadas por el usuario, es decir, el usuario decide cuando y donde ejecutarlas, generalmente son usadas para realizar entrada y salida.
Interrupciones por hardware
Interrupciones por hardware
Son aquellas que son provocadas por dispositivos externos al procesador su característica principal es que no son programadas, esto es, pueden ocurrir en cualquier momento en el programa. Existen dos clases de interrupciones de este tipo
Interrupciones por hardware enmascarables
Aquellas en las que el usuario decide si quiere o no ser interrumpido.
Aquellas en las que el usuario decide si quiere o no ser interrumpido.
Interrupciones por hardware no enmascarables (NMI)
Aquellas que siempre interrumpen al programa.
Aquellas que siempre interrumpen al programa.
Las llamadas son peticiones a ejecución de rutinas y proporcionan la interfaz entre el sistema operativo y un programa en ejecución. Estas llamadas son instrucciones de lenguaje ensamblador y se presentan en los manuales que emplean los programadores de este lenguaje. Algunos sistemas permiten efectuar llamadas al sistema directamente desde un programa realizado en el lenguaje de mayor nivel, normalmente estas llamadas se asemejan a una función o sub-rutinas predefinidas, que generan una llamada a una ruta en especial de tiempo de ejecución, que realice efectivamente la llamada al sistema, o bien pueden generarla directamente en la línea. Por ejemplo: En el procesador INTEL es INT y en UNIX son rutinas en C.
Las llamadas al sistema para ejecución y el control de programas, usualmente incluyen un conjunto completo de los servicios accesibles por la vía del lenguajes de órdenes, tales como: RUN, EXECUTE, ABORT y planificación relacionada con el tiempo, además los usuarios con las llamadas del sistema pueden suspender, establecer o cambiar atributos del tiempo de ejecución de uno ó más programas. También se proporcionan algunas facilidades muy extendidas en sistemas de tiempo real, para comunicación entre programas y sincronización.
Las llamadas del sistema para el gestor de recursos, proporcionan servicios para la asignación, reserva y reclamación de los recursos del sistema. Por ejemplo, existen llamadas del sistema para extender o reducir la cantidad de memoria poseída por el programa que se llama. Las llamadas del sistema pueden asignar o reservar otros tipos de objetos del sistema y después destruir o devolver su custodia al sistema operativo.
El siguiente diagrama ilustra la relación entre la Shell y el Kernel. Recordemos que el Shell es lo que el sistema operativo nos muestra, la portada, el intérprete de comandos, etc. El Kernel es el núcleo del sistema operativo.
Actividad #4
REGISTROS
Para
ejecutar las instrucciones la CPU requiere de algún tipo de almacenamiento
temporal. Esta pequeña memoria interna,
de alta velocidad, está constituida por registros, los cuales se pueden
utilizar para el almacenamiento temporal de
operandos o datos que se utilicen con frecuencia. Cada registro puede almacenar una palabra de dato. Los tiempos de acceso a los
registros son generalmente de 5 a 10 veces más
rápidos que los de acceso a memoria.
En la
figura se muestra un esquema simplificado de las conexiones entre registros ULA
y unidad de
control en el CPU.


Los
registros de la CPU están clasificados en dos categorías de acuerdo a sus
funciones, aunque no existe una clara separación
entre las dos.
- Registros
visibles al usuario. Permiten al programador de lenguaje de máquina o
ensamblador minimizar las
referencias a la memoria principal, cuando optimiza el uso de los registros.
- Registros de control y estado. Son utilizados por la unidad
de control para controlar el funcionamiento
de la CPU, y por programas privilegiados del sistema operativo para
controlar la ejecución de programas.
(Antes
mencionamos que no existe una clara separación entre las dos categorías, por
ejemplo aunque en la mayoría de las máquinas el
Contador de Programa(PC) no es visible al usuario, en algunas si lo es.
REGISTROS VISIBLES AL USUARIO:
Son
aquellos que pueden ser referenciados por medio del lenguaje de máquina que
ejecuta la CPU. Se pueden clasificar en las
siguientes categorías:
- Registros
de Propósito General: pueden ser asignados por el programador a una gran
variedad de funciones. Puede
contener el operando de cualquier instrucción.
- Registros de Datos: Se utilizan únicamente para almacenar
datos, y no pueden utilizarse para el cálculo de la dirección de un operando.
REGISTROS DE DIRECCIONES
Pueden
ser de uso más o menos general, o pueden estar dedicados a un modo particular
de
direccionamiento. Como ejemplo tenemos:
- Apuntadores de segmento: contiene la dirección de la base del
segmento en una máquina con direccionamiento
segmentado.
- Registros
índices: Utilizados para direccionamiento indexado, y pueden ser autoindexados.
- Apuntadores de Pila: Si existe un direccionamiento de pila
visible al usuario, entonces la pila está en memoria y hay un registro dedicado que apunta
al tope de esta.
REGISTROS DE CODIGOS DE CONDICION (banderas(flags)
Son bits
fijados por el hardware de la CPU como resultados de una operación. Por ejemplo
una operación
aritmética puede producir un resultado positivo,
negativo, nulo o con desbordamiento. Además de almacenar
el propio resultado en memoria, se obtiene también un código de condición, que
puede ser consultado como parte de una
bifurcación condicional. Los bits de códigos
de condición se reúnen en uno o más registros. Normalmente forman parte del
registro de control. Generalmente las máquinas
permiten que estos bits se lean mediante referencias
Implícitas,
pero no pueden ser alterados por el programador. En algunas máquinas, una llamada a una subrutina implica
guardar el contenido de los registros visibles al
usuario, para reestablecerlos al regreso. Esta tarea es realizada por el CPU
como parte de la ejecución de la llamada y del
regreso. Esto permite que cada subrutina utilice los registros
independientemente. En otras máquinas es
responsabilidad del programador guardar y reestablecer los valores de los
registros Al momento de diseñar los registros
de un CPU hay varios puntos que hay que considerar. Uno muy importante es la especialización, que trata de si deben
utilizarse únicamente registros de propósito general
o especializar su uso. Con el uso de registros especializados puede estar
implícito en el código de operación el tipo de
registro al que hará referencia un operando. Este debe identificar únicamente
un registro de un conjunto especializado, en
lugar de uno de entre todos los registros. Esto por un lado ahorra bits, pero la especialización limita la flexibilidad
del programador. No existe una solución única en este punto, pero la tendencia es el uso de los registros especializados.
Otro
punto es el Número de Registros, ya sean de propósito general, de datos o de
direcciones. Esto afecta el diseño del conjunto
de instrucciones dado que más registros requieren más bits de operandos.
Al
parecer de 8 a 32 registros son opt5imos. Utilizar pocos registros produce más
referencias a la memoria; muchos registros no
reducen notablemente el número de referencias a memoria. Sin embargo, existe un nuevo planteamiento, el cual encuentra ventajas
en el uso de cientos de registros, y se encuentra
en algunos sistemas RISC Un último punto en el
diseño es la Longitud de los Registros. Los registros que contienen direcciones
deben ser lo suficientemente grandes para contener
direcciones grandes. Los registros de datos deben ser capaces de almacenar valores de la mayoría de los tipos
de datos. Algunas máquinas permiten el uso de
dos registros contiguos para almacenar valores de longitud doble.
REGISTROS
DE CONTROL Y ESTADO
Hay una
gran variedad de registros que son utilizados para controlar la operación del
CPU. La mayoría de estos, en muchísimas
máquinas, no son visibles al usuario. Algunos duden ser visibles a
instrucciones de máquina realizadas en un modo
de control o de sistema operativo.
Por
supuesto, existen diferentes organizaciones de registros y utilizan diferente
tecnología. A
continuación se muestra una lista, razonablemente
completa, de tipos de registros y una breve descripción.
Registros
esenciales para la ejecución de una instrucción:
- Registro
de dirección de memoria MAR: Específica la dirección de memoria a la que
se está
accediendo. Está conectado al bus de dirección.
- Registro
de datos de memoria MDR: Contiene el valor a escribir en la memoria o el
último valor leído de la memoria. Está conectado al
bus de datos.
- Contador
de Programa PC: Contiene la dirección de la próxima instrucción a captar.
- Registro
de Instrucción IR: Almacena la instrucción que actualmente se está ejecutando
MAR: Memory
Address Register;
MDR: Memory
Data Register;
PC:Program
Counter;
IR:Instruction
Register
El PC es actualizado por el CPU después de cada búsqueda de
instrucción, por lo que siempre apunta a la siguiente instrucción a ser ejecutada. Una instrucción
de salto también modifica al PC. La instrucción buscada
se coloca en el IR donde el código de operación y el operando son analizados.
Los datos se intercambian utilizando MAR y
MDR. Estos cuatro registros se utilizan para
la transferencia de datos entre el CPU y la memoria. Dentro del CPU los datos son presentados a la ULA para procesarlos. La
ULA debe tener acceso directo al MDR y a los
registros visibles al usuario.
En la figura se muestran los dos registros involucrados directamente con
el acceso a memoria.

Todos los
diseños del CPU incluyen un registro, o conjunto de registros, conocido como
palabra de
estado del programa PSW (program status word).
Frecuentemente el PSW contiene códigos de condición y otra información de estado. Entre los campos comunes se
incluyen los siguientes:
- Signo: Contiene el bit de signo resultante en la última
operación aritmética.
- Cero: Puesto a 1 cuando el resultado es cero.
- Acarreo: Puesto a 1 si la operación da como resultado un
acarreo del bit más significativo.
- Igual: Puesto en 1 si el resultado de una comparación lógica
es la igualdad.
- Overflow: Utilizado para indicar un desbordamiento en una
operación aritmética.
- Interrupt enable disable: Utilizada para habilitar o deshabilitar
las interrupciones.
Supervisor: Indica cuando el CPU está operando en modo supervisor
o en modo usuario. Ciertas instrucciones y
áreas de memoria solo pueden accesar en modo supervisor.
domingo, 25 de agosto de 2013
ACTIVIDAD #3
ESTRUCTURA Y ORGANIZACIÓN DE UN PROCESADOR (CPU)
ORGANIZACIÓN DEL PROCESADOR
Se deben de cumplir algunos requisitos:
Captar instrucción: El procesador lee una instrucción de la memoria.
Interpretar instrucción: la instrucción se decodifica para determinar qué acción es necesaria.
Captar datos: La ejecución de una instrucción puede exigir leer datos de la memoria o de un módulo de entrada y salida.
Procesar datos: La ejecución de una instrucción puede exigir llevar a cabo alguna operación aritmética o lógica con los datos.
Escribir datos: Los resultados de una ejecución pueden exigir escribir datos en la memoria o en un módulo de E/S.
El procesador necesita almacenar algunos datos temporalmente, debe recordar la posición de la última instrucción de forma que pueda saber de dónde tomar la siguiente, necesita almacenar instrucciones y datos temporalmente mientras una instrucción está ejecutándose.
En otras palabras, el procesador necesita una pequeña memoria interna.
La Unidad Central de Procesos (CPU), se encarga de calcular y distribuir las tareas que se deben ejecutar. Entre sus funciones está la de hacer solicitudes a la memoria para obtener todos los datos necesarios para realizar su computación; también está la de hacer gestiones a la interfaz de entrada y salida para permitir la lectura de los caracteres del teclado, los clicks del ratón, mostrar las ventanas en el monitor, etc.
Frecuentemente, en las computadoras de un solo CPU, la velocidad de proceso se ve frenada por la capacidad de transmitir datos de un lado al otro, entre el CPU, la memoria y la interfaz de E/S. Antiguamente, las computadoras podían transmitir datos en conjuntos de 8 bits, ahora las computadoras pueden transmitir hasta 64 bits en cada tick del reloj (aunque a la fecha hay equipos de cómputo de 128 bits, pero son dedicados a consolas de juegos).
viernes, 23 de agosto de 2013
ACTIVIDAD # 2
- QUE ES EL LENGUAJE ENSAMBLADOR?
es un lenguaje de programación de bajo nivel para los computadores, microprocesadores,micro controladores y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador.
- QUE ES EL LENGUAJE ENSAMBLADOR?
2- EN QUE SE UTILIZA EL LENGUAJE ENSAMBLADOR?
es usado para traducir sentencias del lenguaje ensamblador al código de máquina del computador objetivo. El ensamblador realiza una traducción más o menos isomorfa (un mapeo de uno a uno) desde las sentencias mnemónicas a las instrucciones y datos de máquina.
3- QUE ES UN LENGUAJE DE ALTO NIVEL, DE BAJO NIVEL Y LENGUAJE DE MAQUINA?
Un lenguaje de alto nivel permite al programador escribir las instrucciones de un programa utilizando palabras o expresiones sintácticas muy similares al inglés. Por ejemplo, en C se pueden usar palabras tales como: case, if, for, while, etc.
Un lenguaje de programación de bajo nivel de abstracción es el que proporciona un conjunto de instrucciones aritmeticológicas sin la capacidad de encapsular dichas instrucciones en funciones que no estén ya contempladas en la arquitectura del hardware.
El lenguaje máquina es el único que entiende directamente la computadora, utiliza el alfabeto binario que consta de los dos únicos símbolos 0 y 1, denominados bits (abreviatura inglesa de dígitos binarios). Fue el primer lenguaje utilizado en la programación de computadoras, pero dejó de utilizarse por su dificultad y complicación, siendo sustituido por otros lenguajes más fáciles de aprender y utilizar, que además reducen la posibilidad de cometer errores.
4-CUAL ES LA IMPORTANCIA DE LENGUAJE ENSAMBLADOR?La importancia del lenguaje ensamblador radica principalmente que se trabaja directamente con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de que en el se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar. Otro punto sería que los programas en ensamblador ocupan menos espacio en memoria.
Suscribirse a:
Entradas (Atom)