Buses
El programa almacenado
En 1945 John von Neumann construye una maquina de propósito general (computadora),
capaz de almacenar instrucciones y datos en una memoria, trabaja en binario y con posibilidad
de provocar una ruptura de secuencia.
Está formada por: CPU, memoria y unidades de E/S. La CPU cuenta con una unidad aritmético-
lógica (ALU), unidad de control (UC). Los módulos están relacionados entre sí por colectores de
datos e instrucciones (buses).
Arquitectura de computadoras
Hardware: Conjunto de dispositivos electrónicos que constituyen la estructura física de
la computadora.
Software: Conjunto de programas para procesar datos en un equipo de computación.
Sin el software, el hardware no podría procesar dato alguno o quedaría limitado a una
tarea fija.
Firmware: Dispositivos físicos programados, fusionan los conceptos de hardware y
software.
Bit: Unidad mínima de información, valores "0" o "1". La computadora está compuesta
por dispositivos electrónicos que actúan como llaves que permiten el paso de ciertos
niveles de tensión. Un "1" lógico se corresponde con un nivel de tensión alto, un "0"
con un nivel bajo.
Byte: Combinación de 8 bits. Unidad elemental de representación de un dato.
Nibble: Medio byte, 4 bits.
Palabra de CPU: Unidad de trabajo que puede procesar en un paso expresada en bits.
Una computadora puede operar con datos de tamaño superior que la capacidad de sus
registros, pero su tratamiento implica una mayor cantidad de pasos.
Capacidad de dirección: Cantidad de líneas que transfieren los bits de una dirección
física (con 32 bits se pueden representar 232 direcciones diferentes). Esto determina la
cantidad de memoria principal a la que se puede acceder.
Cap. 2: Sistemas numéricos
El sistema binario representa letras, números, signos, comandos e instrucciones con bits.
Sistemas de notación posicional: Están formados por "n" símbolos, cuya combinación
representa diferentes valores. Cada digito tiene un peso según el lugar que ocupa; el
peso es la base elevada a la posición. La suma de cada digito multiplicado por su peso
permite obtener el valor final del número.
Una base "B" tiene B dígitos posibles (de 0 a B-1). Ej.: Base octal (de 0 a 7), decimal (0 a
9).
Los sistemas octal y hexadecimal permiten "compactar" bits. Indica lo mismo con
menor cantidad de símbolos. Cuanto más grande la base, más importante es la
reducción.
LSB (LeastSignificant Bit): Bit de menor peso, el primer bit de la derecha.
MSB (MostSignificant Bit): Bit de mayor peso, el primer bit de la izquierda.
Cap. 3: Representación de datos en la computadora
Flujo de datos dentro de la computadora
Tanto las instrucciones de un programa como los datos que ingresan en la memoria desde el
exterior lo hacen en un código alfanumérico de representación de caracteres (ASCII). Las
instrucciones son transformadas por un programa de traducción (compilador) a código
maquina. Los encargados de la transformación de los datos son rutinas previstas por
bibliotecas del lenguaje e incluidas en el programa.
Código alfanumérico: Establece la relación necesaria para que una computadora
intérprete el lenguaje del usuario. Determina una única combinación binaria posible
para cada símbolo.
Formato: Estructura y cantidad de bits de un determinado tipo de dato para su
tratamiento en la computadora. Un byte alojado en la memoria puede ser un carácter
alfanumérico, un operando o una instrucción según quien lo interprete.
*Tipos de representaciones de datos:
Alfanuméricas ASCII
UNICODE
Coma o punto fijo sin signo (enteros-positivos)
Números enteros Coma o punto fijo con signo (enteros)
Binarias Coma o punto fijo con complemento a la base (enteros)
Coma o punto fijo con complemento restringido (enteros)
Números reales Coma o punto flotante (entera y fraccionaria)
Coma o punto flotante con mantisa normalizada
Redundantes Códigos de Paridad vertical o a nivel carácter
(detección de paridad Paridad horizontal o a nivel bloque
errores) Paridad entrelazada
Código de Hamming
El código ASCII de 7 bits permite determinar 27 (128) combinaciones distintas.
Los primeros 3 bits son "bits de zona", los últimos 4 bits son "bits de digito"
Código ASCII ampliado: ASCII de 8 bits. 4 bits de zona y 4 bits de digito. Tiene 128
caracteres adicionales.
Delimitación de strings
Las cadenas de caracteres alfanuméricas (strings) almacenadas en la computadora pueden ser;
De longitud fija: Cada dato ocupa un número determinado de bytes fijo. El comienzo y
el final puede conocerse con rapidez.
De longitud variable: Hay dos métodospara determinar el final
o Cada dato tiene en su inicio un campo que indica la longitud en bytes.
4 H O L A 2 S I
o Cada dato se separa mediante un símbolo (CR) que marca el final de la cadena,
pero no se considera parte de esta.
CR CR CR CR
Códigos de representación decimal (BCD)
Los códigos BCD son convenciones que permiten la representación de números decimales (0 a
9) en bloques binarios de 4 bits.
BDC puro o natural: Los pesos en cada bloque coinciden con el valor de los 4 primeros
pesos del sistema binario puro
Valor decimal BCD puro 8421 Valor decimal BCD puro 8421
0 0000 5 0101
1 0001 6 0110
2 0010 7 0111
3 0011 8 1000
4 0100 9 1001
Ej.: 15 --> 0001 0101
256 --> 0010 0101 0110
BCD empaquetado: La ALU puede operar en BCD (con un grupo reducido de dígitos
decimales) considerando como base del sistema la decimal y no la binaria. En ASCII los
números se representan con octetos divididos en zona y digito, los números así
representados se denominan "zoneados" (unpacked). Los bits de zona distinguen
números de letras, por lo tanto para ser operado en la ALU se les deben eliminar la
zona. El producto final al eliminar la zona y agrupar los dígitos en forma reducida se
conoce como "empaquetado" y cada digito queda representado con solo 4 bits de
digito.
BCD exceso tres: Se obtiene a partir del BCD puro, sumando un 3 binario a cada cifra
decimal. Esto logra un código simétrico o autocomplementario que permite hallar el
complemento de un número invirtiendo sus dígitos.
Valor decimal BCD exceso tres
0 0011
1 0100
2 0101
3 0110
4 0111
5 1000
6 1001
7 1001
8 1011
9 1100
BCD AIKEN o 2421: Adjudica a cada "1" binario el peso que resulta de la combinación
2421, en lugar del BCD puro que impone un peso igual a 8421.Genera un código
simétrico.2313
Valor decimal BCD 2421
0 0000
1 0001
2 0010
3 0011
4 0100
5 1011
6 1100
7 1101
8 1110
9 1111
Coma o punto fijo con signo/ Magnitud con signo (enteros): Igual que el formato
anterior, pero reserva el bit de extrema izquierda para el signo (0: positivo, 1:
negativo).
Rango: −(2𝑛−1 − 1) 𝑎 (2𝑛−1 − 1)
111 110 101 100 000 001 010 011
-3 -2 -1 -0 +0 +1 +2 +3
Coma o punto fijo con signo con negativos complementados a "2" (enteros): Igual al
anterior, reservando el bit de extrema izquierda para el signo (0: positivo, 1: negativo).
Los n-1 bits restantes se representan con magnitud binaria real si es positivo, y en
complemento a la base de la magnitud (complemento a 2, complemento autentico) si
es negativo.
Rango: −(2𝑛−1 ) 𝑎 (2𝑛−1 − 1)
100 101 110 111 000 001 010 011
-4 -3 -2 -1 +0 +1 +2 +3
Coma o punto fijo con signo con negativos complementados a "1" (enteros): Igual al
anterior, reservando el bit de extrema izquierda para el signo (0: positivo, 1: negativo).
Los n-1 bits restantes se representan con magnitud binaria real si es positivo, y en
complemento restringido de la magnitud (complemento a 1, complemento directo) si
es negativo.
Rango: −(2𝑛−1 − 1) 𝑎 (2𝑛−1 − 1)
100 101 110 111 000 001 010 011
-3 -2 -1 -0 +0 +1 +2 +3
Reales en coma o punto flotante (números muy grandes o muy chicos y números
reales):
±𝑀. 𝐵±𝑃
M = Mantisa, B = Base, P = Exponente (indica la posición del punto en el número)
En memoria solo se almacena M y P, la base B se da por programación.
Representaciones redundantes
El cambio de un bit en el almacenamiento o la manipulación de datos origina resultados
erróneos. Para detectar o incluso corregir esto se usan códigos que agregan "bits
redundantes". Por ejemplo, los bits de paridad (bits redundantes agregados a una cadena de
bits en la que se pretende detectar un posible error) se agregan al dato en el momento de su
envió y son corroborados en el momento de su recepción.
Paridad vertical simple o a nivel carácter: Al final de cada carácter se incluye un bit, de
manera que la suma de "unos" del carácter completo sea par (paridad par) o impar
(paridad impar). 0101
0111
00110010|1 se agrega un uno que permita obtener paridad par 1101
1011
01001011|0 se agrega un 0 para lograr paridad par 1110
1010
Paridad horizontal a nivel de bloque: Por cada bloque de caracteres se crea un byte 0110
-----
con bits de paridad. 0110
Paridad entrelazada: Se construye utilizando en conjunto el código de paridad vertical
con el horizontal, que además de detectar errores permite corregirlos. No se considera
óptimo debido a la cantidad de bits de paridad que se deben agregar.
Sin error Con error
0 1 0 1 0 0 1 0 1 0
0 1 1 1 1 0 0 1 1 1
1 1 0 1 1 1 1 0 1 1
1 0 1 1 1 1 0 1 1 1
1 1 1 0 1 1 1 1 0 1
1 0 1 1 1 1 0 1 1 1
0 1 1 0 0 0 1 1 0 0
0 1 1 1 1 0 1 1 1 1
Cap. 4: Aritmética de la computadora
Aritmética binaria
En una computadora cada operando será transferido de una o varias locaciones de memoria a
una de los registros de la CPU, que tiene una capacidad fija y limitada. La ALU no reconoce el
formato de los operandos.
El circulo indica
"negación"
Compuertas lógicas: Dispositivos físicos que implementan una función booleana simple.
OR: A + B (Falso cuando todas las variables están en 0).
AND: A • B (Verdadera cuando todas las variables están en 1).
NOT: A̅ (Invierte el valor).
OR-EX/XOR: A B (Verdadera cuando hay un nro. impar de 1).
NOR: A̅+B ̅ ̅ (Verdadera solo cuando todas las variables están en 0).
NAND: A̅ •B ̅ ̅ (Falsa cuando todas las variables están en 1).
Propiedades:
* Conmutativa: a+b = b+a / a•b = b•a
* Distributiva: a • (b+c) = (a•b) + (a•c) / a + (b•c) = (a+b) • (a+c)
* Asociativa: a + b + c = (a+b) + c = a + (b+c) / a • b • c = (a•b) • c = a • (b•c)
* Identidad: a + 0 = a / a • 1 = a
* Complemento: a + a̅ = 1 / a • a̅ = 0
* Idempotencia: a + a = a / a • a = a
* Involución: a̅̅ = a
* Leyes de De Morgan: a+b ͞ +c
͞ ͞ = a̅ • b̅ • c̅ / a͞•b͞•c͞ = a̅ + b̅ + c̅
- Función booleana: Conjunto de variables booleanas vinculadas entre sí mediante los
operadores de suma, producto y complemento lógico. Se expresan con tablas de verdad,
expresiones literales (polinómica y factorial), expresiones simbólicas y forma canoníca (los
términos contienen la totalidad de las variables del problema).
Ej.: El sistema de seguridad contra incendiosde un depósito funciona en base a tres sensores
S0, S1 y S2. Cuando dos deestos sensores están activados (en “1”) seenciende una alarma
luminosa [AL].Además, si S2 se activa, también seenciende la alarma sonora [AS].
S2 S1 S0 AL AS
Expresión literal completa: Como todos los términos contienen todas 0 0 0 0 0
AL= S͞2.S1.S0 + S2.S1.S0 ͞ + S2.S1.S0 ͞ + S2.S1.S0 las variables esta es la expresión 0 0 1 0 0
͞ ͞ ͞ ͞
AS = S2.S1.S0 + S2.S1.S0 + S2.S1.S0 + S2.S1.S0 CANONICA. 0 1 0 0 0
0 1 1 1 0
1 0 0 0 1
1 0 1 1 1
1 1 0 1 1
1 1 1 1 1
Circuitos:
Minimización de circuitos:
͞
AL= S2.S1.S0 ͞
+ S2.S1.S0 + S2.S1.S0͞ + S2.S1.S0
AL = (S͞2 + S2).S1.S0 + (S͞1 + S1).S2.S0 + (S͞0 + S0).S2.S1
AL = S1.S0 + S2.S0 + S2.S1
a, b: Bits de A y B
𝐶𝑛+1 𝐶𝑛 𝐶3 𝐶2 S: Resultado de la suma
SC ... SC SS
C: acarreo
𝑆𝑛 𝑆2 𝑆1
Los bits de ambos operando son las entradas del circuito sumador e ingresan al mismo tiempo.
La suma de los dos primeros bits genera un acarreo que afectara al bloque siguiente; esto
ocurre en todos los bloques.
* Circuito semisumador (SS): Su función es sumar 2 bits sin tener en cuenta el acarreo
anterior. Tiene dos salidas, la suma y el acarreo resultante.
La función 𝑆0 responde a la
compuerta XOR.
𝑆0 = 𝑎 𝑏
La función 𝐶0 responde a la
compuerta AND.
𝐶0 = 𝑎 • 𝑏
*Circuito sumador completo (SC):Su función es sumar 2 bits y el acarreo anterior, generando
como salidas el resultado de la suma y el nuevo acarreo.
𝑆𝑖 = 𝑎 𝑏 𝐶𝑖−1
𝑎𝑖 𝑏𝑖 𝑐𝑖−1 𝐶𝑖 = (𝑎 • 𝑏) + (𝑎 𝑏) • 𝐶𝑖−1
SS
𝑐𝑖
𝑆𝑖
Cap. 6: Lógica digital
Circuitos Combinacionales
Son dispositivos cuya salida depende exclusivamente de la entrada en un instante dado. Se
implementan mediante compuertas, en forma exclusiva.
A
X (par)
B
_
C
X (impar)
D
A X
Y
B Z
Codificadores: Es un circuito con varias entradas (entre 2n y 2n-1) y “n” salidas, cuya
misión es presentar en la salida el código binario correspondiente a la entrada
activada.
A X
B
C Y n salidas
Entre 2ny 2n-1
entradas D
Z
E
F
G
1 2 3 4 5 6 7 8 9 A3 A2 A1 A0
1 0 0 0 0 0 0 0 0 0 0 0 1
0 1 0 0 0 0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 0 0 0 1 1
0 0 0 1 0 0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0 0 0 1 0 1 A0: 1 + 3 + 5 + 7 + 9
0 0 0 0 0 1 0 0 0 0 1 1 0 A1: 2 + 3 + 6 + 7
0 0 0 0 0 0 1 0 0 0 1 1 1
A2: 4 + 5 + 6 + 7
0 0 0 0 0 0 0 1 0 1 0 0 0
A3: 8 + 9
0 0 0 0 0 0 0 0 1 1 0 0 1
Decodificadores:Un decodificador es un circuito combinacional, cuya función es
inversa a la del codificador, esto es, convierte un código de n bits de entrada y 2n
líneas de salida. Las salidas se representan algebraicamente con el minitermino que
corresponde al valor de la entrada.
Un ejemplo de aplicación del circuito es que se puede utilizar para el acceso, al
seleccionar una dirección al azar de memoria. La dirección se ve representada en las
entradas y se habilitara solo una de las salidas, la que dirige a esta dirección.
A
B
C S
A
B
C T
A
A B
C U
A
B
V
nentradas B
C
A 2nsalidas
B
C
W
A
B
C
X
C A
B
C
Y
A
B
C
Z
A E0
E1
B E0
n
2 entradas E1 s
C E0
E1
D E0
E1
E0 E1
n líneas de selección
E0
E1 X
2nsalidas
E0
E1 Y
E0
E1 Z
E0E1
n líneas de selección
Circuitos Secuenciales
En estos dispositivos el valor de la salida depende de la entrada y del historial (salidas previas).
Se puede decir que un dispositivo secuencial se caracteriza porque a partir de una entrada y un
estado (interno) actual, produce una salida y un nuevo estado interno. La implementación de
estos dispositivos requiere la incorporación de elementos de memoria destinados a retener los
estados internos. Hay 2 tipos:
• Asincrónicos: Los cambios solo se producen cuando están presentes las entradas sin
necesidad de una señal de reloj.
• Sincrónicos: Los cambios se producen cuando se establecen las entradas, y además, se
genera una transición de señal de reloj.
Biestables o flip-flops
Es una celda binaria capaz de almacenar un bit. El biestable es un arreglo de compuertas,
caracterizado por tener lazos de realimentación que permitan mantener o memorizar el efecto
de combinaciones anteriores en las entradas.
S= Entrada de seteo.
F F’
S
Si S=0 y F=0, entonces F’=0.
Si S=1 y F=0, luego de que la señal de S pase por la compuerta, F’=1.
Cuando F’ cambia a 1, su estado permanecerá en 1 de manera indefinida y en forma
independiente al valor de S (ya que F=F’=1).
Si bien este tipo de circuito almacena un bit, no podrá volver a 0 nunca.
Ahora, para poder volver el estado a 0 podemos agregar una entrada R que permite resetear el
contenido de F’.
F´ R= Entrada de reseteo.
F S= Entrada de seteo.
S
R
Entonces, cuando R=1, F´=0
R Q
S Q’
D Q
Clock
Clock: Emite señales cada cierto tiempo, y es quien habilita que pasen las señales de D a Q.
Estas se llaman señales de sincronismo y ya vienen asignadas. Como sean escuchadas las
señales depende de Q, existen 2 formas:
- Clock por nivel: Funciona mientras que haya señal.
- Clock por flanco: Funciona durante la subida o bajada de la señal.
Clock
Q nivel
Q flanco
Cap. 7: Diseño de una computadora digital
Modulo de cálculo en una computadora digital
- Diseño de una computadora digital: Es la organización de módulos de hardware relacionados
por rutas de control y sus datos. Su función es permitir el flujo de señales binarias para
transformar datos de entrada en información útil al usuario.
Un modulo está constituido por una configuración determinada de compuertas. Un circuito es
una "caja negra" que cumple una determinada función lógica.
Cada modulo realiza una o varias operaciones sobre datos codificados en binario, que se
almacenan en registros asociados al modulo mientras dura la operación.
- Microoperación (µop): Operación aplicada a un registro. Se activa en un instante de tiempo
sincronizado por los pulsos del reloj.
Ej.: Sumador binario paralelo.
A B
Su función es operar datos binarios para obtener en la salida el resultado de su suma. Los
datos de entrada se almacenan en forma temporal en los registros A y B y, tras la orden de
comando S, el resultado se obtiene sobre el registro C. La orden de comando es la
microoperación de suma que habilita al registro C para que actué como receptor del resultado.
Incremento
Carga
IP + 1 → IP
DATA → IP
Por orden de la IP, en general durante la
Por ejecución de una instrucción de salto
fase fetch, para direccionar a la próxima
(ruptura de secuencia).
instrucción.
Una vez que la CU envía a memoria el contenido del IP, da la orden de lectura para que la
palabra implicada se almacene en el registro de palabra de memoria (MDR, Memory Data
Register).
La fase fetch termina con la transferencia de la instrucción leída a un registro interno de la CU,
donde la instrucción permanece almacenada mientras dura su ejecución. Este registro se
denomina registro de instrucción (IR, Instruction Register) y su capacidad es igual a la cantidad
de bits del código de instrucción (16 bits en este caso).
15 11 0 Carga de la instrucción
COP DATA MDR → IR
Envío directo al módulo de control Envío a registros receptores de Por orden de la CU (ultimo evento
que decodifica la instrucción. dirección (MAR, IP). ocurrido durante la fase fetch).
Por orden de la CU.
Cuando termina
vale 0
Fase execute
Una vez que se hace efectiva la búsqueda, la CU entra en fase de ejecución (F: 0). Cada código
de instrucción tiene asignada una secuencia de microoperaciones definida en el control.
Supongamos un programa: sumar dos datos almacenados en memoria en las palabras A0A y
A0B y calcular su promedio, almacenando el resultado en la palabra A0C.
A y B son binarios enteros signados. A = 0004𝐻 y B = 0002𝐻 .
Nombre Código
Cargar el acumulador con la palabra LDA A0A 1A0A
A0A (Load accumulator)
Sumar al acumulador la palabra A0B ADA A0B 2A0B
(Add accumulator)
Desplazar el acumulador SHR AXXX
(Equivale a dividir por la base) (Shift right)
Almacenar el acumulador en la palabra STA A0C 3A0C
A0C (Store accumulator)
Fin del programa HLT 0XXX
LDA A0A: La interpretación de su COP (0001) permite la transferencia del dato almacenado en
la palabra A0A al acumulador de la ALU.
𝑓6 : DATA → MAR //Habilita la transferencia de la dirección del dato indicada por la instrucción al registro de
direccionamiento de memoria.
𝑓7 : WORD → MDR // Habilita la lectura de la unidad de memoria.
𝑓8 : MDR → AC // Habilita la transferencia del dato leído al acumulador
𝑓9 : 1 → F // Actualiza la flag F provocando que el control se entere que debe producir microoperaciones de
búsqueda para la instrucción siguiente.
ADA A0B: Para la ejecución de esta instrucción se incluye un sumador binario paralelo. En el
acumulador (AC) está el primer operando. El segundo operando (dato leído de la palabra A0B)
está en el MDR. La microoperación final habilita al acumulador como receptor de la suma y
habilita al SR (Status Register) para que se actualice.
𝑓10 : DATA → MAR //Habilita la transferencia de la dirección del dato indicada por la instrucción al registro de
direccionamiento de memoria.
𝑓11 : WORD → MDR // Habilita la lectura de la unidad de memoria.
𝑓12 : MDR + AC → AC // Habilita al acumulador como receptor del resultado (0006𝐻 ) y al SR como receptor de la
información del estado final de la operación (signo, cero, carry y overflow).
𝑓13 : 1 → F // Actualiza la flag F provocando que el control se entere que debe producir microoperaciones de
búsqueda para la instrucción siguiente.
⃗⃗⃗⃗⃗ → AC // Permite desplazar la información del AC una posición a la derecha con lo que divide por la base.
𝑓14 : 𝐴𝐶
𝑓15 :1 → F // Actualiza la flag F provocando que el control se entere que debe producir microoperaciones de
búsqueda para la instrucción siguiente.
STA A0C: Permite la escritura del promedio calculado en la palabra de memoria A0C.
𝑓16 : DATA → MAR // Habilita la transferencia de la dirección de la palabra donde se va a escribir el dato, indicada
por la instrucción, al registro de direccionamiento de memoria.
𝑓17 :AC → MDR // Habilita la transferencia del dato almacenado en el acumulador al registro de palabra de memoria.
𝑓18 : MDR → WORD // Habilita la escritura en la unidad de memoria.
𝑓19 : 1 → F // Actualización de la flag F para entrar en una nueva fase de búsqueda.
HLT: Inhibe la generación de microoperaciones dejando a "X" suspendida. De no existir se produce una
etapa fetch, considerando la siguiente posición de memoria como una instrucción, esto implica que el
programa continúe de manera imprevista y provoque el fracaso de su ejecución.
Juego de instrucciones de "X"
Tiene 3 tipos: Instrucciones que afectan datos de la memoria (ej. LDA A0A), instrucciones que
afectan datos de registros (ej. SHR) e instrucciones que permiten la entrada de un dato a "X"
desde el exterior, o la salida de un dato desde "X" al exterior (ej. INP).
Formato: Tres letras para el COP y tres dígitos hexadecimales para la dir.del operando.
Instrucción Código Acción
(hexa)
HLT 0XXX H Determina el fin del programa.
LDA HHH 1HHHH Transfiere el dato almacenado en HHH al acumulador.
ADA HHH 2HHHH Incluye como dispositivo de cálculo un sumador binario paralelo.
STA HHH 3HHHH Almacena el resultado final en HHH.
JMP HHH 4HHHH Se usa cuando se necesita romper el orden secuencial del programa
ANA HHH 5HHHH Asocia el AC y el dato obtenido mediante el operador AND. El resultado queda en el AC.
XOA HHH 6HHHH Asocia el AC y el dato obtenido mediante el operador OR EXCLUSIVE.
CLA 7XXX H Pone en 0 el acumulador.
CMA 8XXX H Invierte los bits del acumulador (calcula el complemento restringido).
INC 9XXX H Suma una unidad al dato cargado en el acumulador.
SHR/SHL AXXX H Desplaza hacia la derecha/izquierda un bit del dato almacenado en el acumulador.
SNA HHH BHHHH Salta a HHH si el flag S/N = 1.
SZA HHH CHHHH Salta a HHH si el flag Z = 1.
SCA HHH DHHHH Salta a HHH si el flag C = 1.
INP EXXXH Permite la entrada de un dato desde el periférico de entrada. Transferencia desde ENT (registro del
único periférico de "X") al acumulador.
OUT FXXXH Permite la salida de un dato almacenado en el AC hacia el periférico. Transferencia desde AC a SAL
(registro del periférico).
1 1 1 Hz = 1 ciclo / 1 segundo
Ciclo de reloj
0 0
Ej. ¿Cuántos ns tarda un ciclo de reloj en una PC que trabaja a una frec. de 25 MHz?
25.000.000
25 𝑀𝐻𝑧 =
𝑠𝑒𝑔
1 𝑠𝑒𝑔 1 𝑠𝑒𝑔
1 𝑐𝑖𝑐𝑙𝑜 = = = 0,04 𝑠𝑒𝑔 . 10−6 = 40 . 10−6 . 10−3 𝑠𝑒𝑔 = 40 . 10−9 𝑠𝑒𝑔 = 10 𝑛𝑠
25.000.000 25 . 106
Una computadora controlada por un sistema de reloj se denomina sincrónica.
Ciclo de la computadora / maquina: El tiempo de una secuencia repetitiva formada por
4, 8 o 16 señales de tiempo.
Tiempo de acceso a memoria: Tiempo que tarda la CU en buscar la información en la
memoria y dejarla disponible en el MDR.
El sistema de reloj de "X" genera 8 señales de tiempo (𝑡0 , 𝑡1 , 𝑡2 , 𝑡3 , 𝑡4 , 𝑡5 , 𝑡6 , 𝑡7 ) asociadas a un
registro de desplazamiento circular que inicia en 10000000 y por cada pulso desplaza el único
bit 1 a la derecha. Genera una señal de tiempo cada ocho pulsos del reloj.
La CU de "X" está formada por dos bloques: decodificador de instrucciones y el secuenciador
que genera microoperaciones. Las cuatro entradas (COP) del decodificador varían entre 0000 y
1111, según la instrucción almacenada en el IR. Las salidas indican con un 1 cuál de las 16
combinaciones se dio en la entrada.
Operaciones lógicas:
o Complementación: Invertir el valor de cada uno de los bits. Una de sus
aplicaciones es para el cálculo de restas mediante la suma del complemento
del sustraendo.
o "y"/producto lógico: Se aplica a dos operandos, A ᴧ B. Hallando el producto
lógico bit a bit de cada par de bits.
o "o"/suma lógica: Se aplica a dos operandos, A v B. Hallando la suma lógica bit a
bit de cada par de bits. Aplicación: Permite agregar los bits de zona para
transformar un digito BCD a ASCII.
o "o exclusivo": Se aplica a dos operandos, A v̲ B. Es similar a la suma aritmética,
solo que no se consideran los acarreos al operar cada par de bits. Aplicación:
Permite comparar si dos operandos son iguales (el resultado seria 0).
Microprocesador
Chip: Circuito electrónico diseñado sobre una estructura de silicio donde se incluyen millones
de componentes electrónicos. Es de bajo costo y gran capacidad lógica.
Una compuerta lógica se arma con transistores y permite satisfacer la tabla de verdad a la que
pertenece la compuerta. La evolución permite incluir más compuertas en el mismo espacio.
Longitud de palabra: Grupos de bits que el microprocesador “procesa” (se obtiene de una
memoria (MP), se los opera y luego almacena el resultado de nuevo en memoria). La longitud
de palabra se relaciona con la capacidad de trabajo simultáneo expresado en bits, puede
procesar grupos de 32 o 64 bits.
Procesamiento
Multitarea: El procesador realiza las operaciones de forma alternada a gran velocidad,
parece que fuera al mismo tiempo aunque no lo es. Coincide con el procesamiento
pipeline.
Multiprocesamiento: El procesador es realmente capas de realizar varias operaciones
al mismo tiempo.
Periféricos: Dispositivos que permiten el ingreso de datos (de entrada), salida de resultados (de
salida) y el almacenamiento a largo plazo (de E/S o memorias externas). Utilizan interfaces que
transfieren datos entre la memoria y el periférico. Están compuestos por dos partes físicas:
Parte electromecánica y su controlador que se encarga de la comunicación con un bus
(constituido por un buffer interno que permite el almacenamiento de la información que viaja
desde o hacia el soporte y una lógica de control que interpreta comandos y genera señales de
control para la operación del periférico).
Puerto: En hardware permite que la CPU se enlace a un periférico. En software un port es una
dirección del espacio de direccionamiento de la memoria principal. Un puerto serie permite el
envió o la recepción de bits en serie.
Sistema de reloj
Cada microprocesador tiene su propio reloj interno, cuya frecuencia indica con que velocidad
puede procesar bits Las instrucciones pueden ser medidas en ciclos de reloj. Los ciclos indican
el tiempo de comienzo y fin de cada etapa. Esta señal oscila a intervalos regulares entre 0 y
1.La velocidad de ejecución depende de la velocidad del reloj del sistema.
1 ciclo
En 1 ciclo se cumplen las 4 tareas del ciclo de instrucción.
Frecuencia (f): f (Hertz) = Ciclos x Segundo
Periodo (T): T = 1/f (inverso de frecuencia) Tiempo que tarda el ciclo
Tecnologías
El microprocesador tiene incorporadas cuales son las instrucciones que puede entender y
ejecutar, a esto se lo llama set de instrucciones.
CISC: Set de instrucciones complejo que tiene mayor cantidad de instrucciones. Este
admite múltiples modos de obtención del dato y, por lo tanto, un mismo verbo tendrá
en el set tantas instrucciones distintas como modos de direccionamiento acepte el
verbo. Permiten diseñar programas de lógica compleja con pocas instrucciones de alta
complejidad (programas más cortos).
RISC: Tienen un set de instrucciones constituido por pocas operaciones simples y
rápidas (instrucciones más rápidas).Su finalidad es que cada instrucción tenga la mayor
cantidad de micro operaciones posibles, de modo que estas se ejecuten en 1 ciclo del
reloj. Sin embargo es menos eficiente que el CISC.
EPIC:Combina ambas, permite la ejecución de múltiples instrucciones en paralelo.
Modos de trabajo
Modo real: Se utiliza en el arranque del sistema, o también después de un Reset. Se
caracteriza por:
o MP de 1MB (20 líneas de bus de direcciones).
o Mono-tarea: Solo 1 tarea por vez.
o No manejo de memoria virtual.
La memoria aparece como un conjunto de porciones de memoria de 64 K.
Recursos para gestionar la memoria:
o CS: Code Segment (allí va la ubicación del código).
o DS: Data Segment (allí va la ubicación de datos).
o SS: Stack Segment.
o ES: Segmento extra de datos.
Los registros de segmento son de 16 bits pero enmascaran una dirección de 20 bits.
Modo protegido: Modo habitual de trabajo del Pentium.
o Mayor manejo de MP (32 bits de dir. 4 GB)
o Multiusuario
o Multitarea
o Memoria virtual (64TB)
o Métodos de protección.
Los programas de usuario tienen acceso limitado al juego de instrucciones.
Registros
Los registros son memorias de alta velocidad y poca capacidad integradas al microprocesador,
permite guardar transitoriamenteinformación y acceder a valores muy usados.
Registros visibles: Aquellos que pueden actualizarse por las aplicaciones. (A
continuación)
Registros Invisibles: Aquellos que son de alcance exclusivo de instrucciones de mayor
privilegio. Se los puede acceder por medio de los programas del SO.
Registros de cálculo
Ligados a las operaciones de la UAL
31 16 15 8 7 0 (32 / 16 / 8 bits)
EAX AH AX AL
EBX EBX BH BX BL
ECX CH CX CL
EDX DH DX DL
AX: Registro acumulador. Lo utiliza la ALU cada vez que necesita hacer una operación.
BX: Registro base de direccionamiento a memoria.
CX: Registro Contador. En general se lo utiliza como contador (repetitivas, por ej.).
DX: Registro para datos. Extensión de datos del AX, por si este excede su capacidad.
Registros punteros
Son utilizados para desplazarse dentro de un bloque o zona de memoria.
31 16 15 0 (16 / 8 bits)
EIP IP
ESP SP
EBP BP
ESI SI
EDI DI
Puntero de instrucción (IP): Apunta a la locación de memoria donde se encuentra la
próxima instrucción a ejecutar, no contiene la dirección física final.
Stack pointer o puntero de pila (SP):Puntero que apunta a la zona de pila. Este contiene
la dirección de la celda que se debe consultar de la zona de Pila para saber a donde
retornar luego de ejecutar una subrutina.
Puntero base (BP): Relacionado con la zona de pila (falta info).
Source and Destiny o fuente y destino (SI/DI): Se utiliza para el movimiento de la
cadena de caracteres.
Registro de estado
Es donde se almacenarlos flags (indicadores)aritméticos (para operaciones de ALU), flags de
modo de trabajo del micro, flags asociadas a interrupciones, etc.
31 16 15 0 (32/ 16 bits)
Eflags Rflags
Registro de segmento
Brindan soporte a los SO que administran la memoria en segmentos. Almacenan la referencia
binaria a donde empieza la zona de memoria para este objeto.
15 0
CS
DS
SS
ES
FS
DS
Unidad de Control
Su función es buscar las instrucciones en la memoria principal, decodificarlas (interpretación) y
ejecutarlas.
MI1
UC (Unidad de control) Micro-Instrucciones MI2
MI3 Mov AX, Inmed
Alimentación
Fuente: Es un dispositivo que transforma la corriente que nos entrega la red eléctrica para que
sea aceptable para los circuitos electrónicos. La corriente suministrada por la red es alterna y,
por lo tanto, requiere de un procedimiento de rectificación para convertirla en continua. El
proceso de transformación genera de una entrada de 220V, una salida de, por ej, 5V.
Interrupciones y excepciones
Son acontecimientos acusados tanto por dispositivos de E/S como por el programa que se
ejecuta en el microprocesador y su efecto produce una suspensión de la actividad actual del
micro.
Cada interrupción esta asociada con un numero que la identifica; este permite convocar al
servicio que la atiende.
Interrupciones
Externas o Hardware: Son convocadas asincrónicamente en cualquier momento. No se
encuentra bajo el control del programa.
o No Enmascarables: Siempre es atendida. Se considera de máxima importancia.
Se avisa al CPU por la señal NMI.
o Enmascarables: Se produce según una condición. Ej.: Si EI esta activada, es
atendida por el CPU. De ser así, un circuito externo especial, llamado
Controlador Programable de Interrupciones, decide que prioridad tiene sobre
las demás peticiones de interrupción posibles y le da curso a la consulta del
vector de interrupciones correspondiente. INTR?
Internas o Software: Se convocan en forma sincrónica en el programa. Se pueden
producir por la ejecución de una instrucción específica dentro de un programa, para
solicitar una interrupción que cumpla con alguna función determinada. INTO? / INT n?
Excepciones
Faltas o errores: Son las que se pueden detectar y corregir antes que se produzca la
ejecución de una instrucción determinada.
Trampas o excepciones: Otra falta común puede ser el código de operación no valido.
Son las que se detectan una vez ejecutada la instrucción que las provoca.
Abortos: Son las que se detectan sin poder localizar la instrucción que las provoca,
abortando el procesamiento del programa.
TABLA DE VECTORES DE
INTERRUPCION IDT
IDT
ENTRADA 255
.
.
.
.
.
.
/16 1MB
. +
.
.
CS . IP
.
. X16
. /16 /20
ENTRADA 0
Interrupciones y excepciones en modo protegido
En modo protegido la tabla IDT esta compuesta por entradas que contienen descriptores de
puertas, que permiten acceder al segmento donde se encuentra la rutina. Cada entrada es un
descriptor de 64 bits, por lo que el tamaño máximo de la IDT es de 2 KB (256 entradas x
64b/entradas).
REGISTRO IDTR
MEMORIA PRINCIPAL
+ DESCRIPTOR
TIPO 255
TABLA DE
DESCRIPTORES
DE INTERRUPCION
2KB
DESCRIPTOR
TIPO 1
DESCRIPTOR
TIPO 0
Memoria Principal
La memoria principal esta constituida por 2 tipos de memorias semiconductoras (no
magnéticas):
RAM: Memoria transitoria, cuyo contenido puede variar. Se utiliza cuando se quieren
procesar programas o datos intercambiables, puesto que se puede leer y escribir. Es
volátil.
ROM: Memoria fija, que se mantiene inalterable atendiendo actividades
imprescindibles y no modificables. Almacena programas y datos fijos asociados en
forma directa a la CPU, por ende es de solo lectura. Es no volátil.
La RAM y ROM son de acceso aleatorio.
Tecnologías RAM
SRAM (estática): Cada celda es un elemento biestable diseñado con compuertas. Se
puede modificar solo en un proceso de escritura, sino permanece inalterable.
DRAM (dinámica):Cada celda almacena un “1” que se representa con carga de un
condensador, este conserva su carga con cierto nivel de deterioro por un periodo
prestablecido, por lo que antes de que la información se pierda hay que restablecer la
carga. Este proceso de regeneración se denomina ciclo de refresco, el cual se produce
en intervalos regulares y esta a cargo del controlador de memoria. Son mas lentas que
las SRAM pero tienen mayor capacidad.
RAM de acceso directo: Permite el acceso de forma random, para esto se organiza de
manera matricial en filas y columnas (p*q). Cada fila (o palabra (p)) tiene igual
cantidad de bits (q). El número que identifica la palabra se denomina dirección física y
representa al ordinal que corresponde dentro de la matriz (desde 0 hasta p-1).
RAM con acceso asociativo:La posibilidad de asociación requiere que todas las celdas
de almacenamiento se relacionen con circuitos que permitan la comparación.
Segmento: Es una porción de memoria de tamaño variable que contiene un mismo tipo de
dato o información. No son de tamaño fijo y hay distintos tipos:
Dirección de memoria:
Dirección segmentada:
Ej: 0D1F:0100 Seg = 0D1F Des=0100
(Segmento) : (Desplazamiento)
Dirección física:
Puede calcularse en base a la siguiente formula:
DF = RS x 10h + desplazamiento
Ej.: CS = A000 IP = 0500
DF = CS x 10h + IP
DF: Dirección física
DF = A0000 + 0500 = A0500
RS: Registro de segmento
CS x 10h es donde comienza el segmento y dentro de ahí es el IP quien dice la dirección
Final.
Tipos del almacenamiento:
Big Endian (para código y no numericos): Almacenamiento invertido (Intel). El byte de
menor peso se almacena en la dirección más baja de memoria y el byte de mayor peso
en la más alta.
Little Endian (para números): Almacenamiento directo. El byte de mayor peso se
almacena en la dirección más baja de memoria y el byte de menor peso en la dirección
más alta.
1 34 LE: 1234
2 12 BE: 3412
Ej.: MP
0DF1:0100 10111000 B8 i1) B83412 B8: COP // 3412: DATO
0DF1:0101 00110100 34 i1 i2) 056745 05: COP // 6745: DATO
0DF1:0102 00010010 12
i3) 89C1 89C1: COP
0DF1:0103 00000101 05
0DF1:0104 01100111 67 i2
0DF1:0105 01000101 45
0DF1:0106 10001001 89 i3
0DF1:0107 11000001 C1
Memoria Cache
La caché es una memoria más diminuta y rápida, la cual almacena copias de datos ubicados en
la memoria principal que se utilizan con más frecuencia. Es de tipo SRAM.
MP MC CPU
Memoria de Memoria de
etiquetas datos
Lógica de control
10
10 b direccionan 2 posiciones de memoria.
10
MP = 2 B = 1KB
1ra dir: 000
Rango …
Ultima dir: 3FF
La capacidad de la MC se puede obtener multiplicando la cant de Líneas por la cant de datos:
6
MC = 8 Datos x 8 Líneas = 64 B = 2 B
Una vez obtenidas la capacidad de MP y MC, podemos obtener la cantidad de grupos:
10 6 4
Cant de grupos = MP / MC = 2 / 2 = 2 B
Niveles de caché:
Las ventajas de contar con varios niveles se empiezan a notar cuando las aplicaciones son muy
grandes o requieren acceso frecuente a datos de la MP. En la medida en que se acceda a un
nivel secundario con mayor frecuencia por no haber encontrado la info en la primaria,
resultara en un mejor rendimiento global del sistema.
Nivel 1: Es de tamaño reducido y se ubica funcionalmente interceptando los datos que
entran en el microprocesador desde la memoria y los que salen ya procesados hacia la
memoria.
Nivel 2: Es de mayor tamaño y se encuentra entre la cache de 1er nivel y la MP.
Atiende a pedidos menos frecuentemente que la 1ria, ya que normalmente el éxito en
el acceso se lograra allí.
MEMORIA
UNIDAD DIRECCIÓN UNIDAD DIRECCIÓN
MEMORIA LINEAL DE FÍSICA
DIRECCIÓN FÍSICA
VIRTUAL DE PAGINACIÓN
LÓGICA
46 46 32 32 (RAM-ROM)
SEGMENTACIÓN
(DISCO)
4 GB max
64 TB
SI NO ESTA ACTIVADA
LA UNIDAD DE PAGINACIÓN
La dirección lógica que usan los programadores consta de:
Selector: Campo de 14 bits que selecciona un determinado segmento del espacio
virtual. Este campo está contenido en los 14 bits de más peso del registro de
segmento, sirviendo los 2 restantes para referenciar al nivel de privilegio.
Desplazamiento: Campo de 32 bits que determina una posición del segmento (tamaño
máximo 4 GB). También puede ser de 16 bits para mantener compatibilidad (máx.: 64
KB).
SELECTOR DESPLAZAMIENTO
15 3 2 1 0 31 0
INDICE TI RPL
(REGISTRO SEGMENTO)
Descriptores de segmento
En modo Protegido un segmento tiene tres parámetros:
Base (32 bits): Contiene la dirección lineal donde comienza el segmento.
Limite (20 bits): Expresa el tamaño del segmento. Su forma de expresión depende de
un campo de los atributos, donde el tamaño máximo puede ser 1 MB o 4 GB.
Atributos (12 bits): Proporciona características relevantes del segmento:
o Bit de presencia (P): P=1 el segmento esta en MP, P=0 segmento ausente.
o Nivel de privilegio (DPL): Compuesto por 2 bits, puede variar entre 0 y 3.
o Clase de segmento (S): S=1 Segmento normal (código, pila o datos), S=0
segmento del sistema (manejados por el programador de sistemas o el SO).
o Tipo: Distingue entre los segmentos normales si es de código, datos o pila y
además determina el acceso permitido (lectura/escritura/ejecución). Campo
de 3 bits.
o Accedido (A): Se pone automáticamente en 1 cada vez que el procesador
accede al segmento. El SO lleva la cuenta de veces que es accedido cada
segmento para poder implementar algoritmos como el LRU.
o Granularidad (G): G=0 indica que el limite (tamaño del segmento) esta
expresado en bytes (máx. tamaño de segmento: 1 MB), G=1 indica que esta
expreso en paginas de 4 KB (máx. tamaño de segmento: 4 GB).
o Defecto/Grande (D/B): Permite distinguir los segmentos nativos de 32 bits para
el Pentium (para compatibilidad). D=1 direcciones efectivas y operandos de 32
bits. D=0 de 16 bits.
o Disponible (AVL): Bit a disposición del usuario para poder diferenciar ciertos
segmentos que contengan un tipo determinado de información o que cubran
alguna función específica.
Al conjunto de esta información (base, limite y atributos) se lo denomina Descriptor (64 bits) y
se almacena en dos posiciones de memoria de 32 bits.
Los 14 bits de más peso del Registro Segmento conforman el Selector del Segmento que actúa
como una entrada en la Tabla de Descriptores que referencia a los segmentos que maneja la
MMU.
Los Pentium trabajan en un ambiente multitarea, en el que hay varias tareas atendidas por la
CPU y cada una de estas tareas está formada por segmentos. El sistema multitarea distribuye
el espacio de memoria en un área global (en la que residen los segmentos comunes a todas las
tareas) y en un área local exclusiva para cada tarea, con los segmentos propios de cada una.
Cada segmento del área global estará definido por un descriptor, existiendo una Tabla de
Descriptores Globales (GDT), que contiene todos los descriptores que referencian a segmentos
del área global. Por otro lado, existe una tabla para cada tarea, que reúne todos los
descriptores de los segmentos de cada una de ellas (Tabla de Descriptores Locales, LDT).
Existirán tantas LDT como tareas soporte el sistema.
Como la CPU tiene activadas dos tablas de descriptores, GDT y LDTn , hay un bit en el selector
del registro de segmentos (TI), que indica a cuál de ellas se refiere; TI=1 se selecciona la LDTn .
TI=0 referencia a la GDT. Los 13 bits más significativos del selector se los denomina Índice, y
apuntan a una de las entradas a la tabla de descriptores seleccionada con TI (el valor del Índice
se multiplica por ocho para apuntar la dirección concreta de inicio del descriptor).
Cap. 10: Instrucciones
Instrucciones
Algoritmo: Grupo finito de operaciones organizadas de manera lógica y ordenada que
permiten solucionar un determinado problema. Se trata de una serie de instrucciones o reglas
establecidas que permiten la solución al problema.
Su estructura es:
(Nemónico) (Destino) , (Fuente)
Operandos
Si (destino) tiene [ ] indica posición de memoria, sino es un dato directo.
Los operandos (fuente) y (destino) deben tener el mismo tamaño
Formato
Instrucciones sin dirección: Se representa únicamente con el COP, ya queque no es
necesario un dato para realizar la operación o porque el dato esta implícito en el la
misma. Ej: RET o LAHF (load AH flags).
Instrucciones de una dirección: Todas las instrucciones hacen referencia implícita en el
COP, al registro acumulador, y Data1 hace referencia al dato afectado. Ej: MOV AX, 15E
(hexa) o MOV BX, [FFFF]
Instrucciones de dos direcciones:Consta de 3 campos. COP, Data1 y Data2. Data 2 se
utiliza para hacer referencia al 2do operando y además es donde se almacena el
resultado. Ej: ADD 100 A02
Instrucciones de tres direcciones: Consta de 4 campos. COP, Data1, Data2 y Data3.
Data2 se utiliza exclusivamente como operando y el resultado se almacenara en
Data3.Ej: ADD 100 A02 B2A
Instrucciones de cuatro direcciones: En este caso Data4 hace referencia a la próxima
instrucción por ejecutarse. Ej: ADD 100 A02 B2A 020
Usar un formato de varias direcciones reduce la cantidad de instrucciones que deberían
ejecutarse para realizar tal operación en caso de usar de menos direcciones.
Modos de direccionamiento
Inmediato: Cuando el dato esta incluido en la misma instrucción.MOV AX, 1234
Directo:
o Por memoria: La misma instrucción da la dirección de memoria a la que
acceder. MOV AX,[1234]
o Por registro: Mueve el contenido de un registro a otro.MOV AX, BX
Indirecto: Mueve el contenido de una dirección de memoria a un registro.MOV
AX,[BX]
Indexado: Se utiliza un registro índice (SI) para realizar una operación, ya que la tarea
se simplifica y se gana velocidad puesto que los registros son de mas rápido acceso
que la memoria.
MOV SI, 0003
AH 05 0000 SI AH 06 0003 SI
ADD AH, [SI]
31 | A1 | 3B | 01 31 | A1 | 3B | 01
0 1 2 3 0 1 2 3
Relativo a la base: Si cada vez que un vector se carga en memoria lo hace en áreas
distintas el registro BX (base) del CPU indica el comienzo de este. Se usa el caso de
querer acceder a una pos del vector.
MOV BX, 0200
AH 00 0000 BX AH 01 0200 BX
MOV AH, [BX] + 3;
31 | A1 | 3B | 01 31 | A1 | 3B | 01
0200 0201 0202 0203 0200 0201 0202 0203
Funciones del SO
Control de tiempos de ejecución en el procesador y sincronización de los procesos.
Asignación de espacio en memoria requerido para cada proceso.
Interfaz con los manejadores de dispositivos de E/S.
Control y recuperación de errores.
Protección en el uso de recursos.
Prevención de errores en el mal uso del sistema.
Etc.
Tipos de SO
Multitarea: Tratan de administrar los recursos repartiéndolos de manera equitativa.
Permite que datos o instrucciones procedentes de varios procesos residan al mismo
tiempo en la MP y en el disco.
Multiusuario: Permiten el acceso de varios usuarios desde distintas terminales
administradas por el mismo SO.
Tiempo real: Tienen como objetivo proporcionar tiempos más rápidos de respuesta.
Administración de procesador y procesos
Un proceso es un programa en estado de ejecución. El despachador es el modulo del SO que
asigna el proceso al procesador, es el que permite la creación de un nuevo proceso al aceptar
la solicitud de otro proceso o de un usuario. Esto implica su reconocimiento por parte del SO,
para verificar que haya recursos suficientes para su ejecución.
Existen 5 etapas por las que pasa un proceso hasta finalizar:
Estado Nuevo: Se crea el entorno adecuado para comenzar su ciclo de vida.
Estado Listo:Tiene los suficientes recursos asignados para que la CPU comience o
continúe ejecución. Todavía no cuenta con la asignación del procesador.
Estado de ejecución: Se esta haciendo uso del CPU.
Estado de espera: El proceso no puede continuar su ejecución por la falta de algún
recurso.
Estado Parado: El proceso termino su ejecución y se requiere un tiempo en el que el
SO libere los recursos que le había asignado y destruya toda la info de contexto para
eliminarlo del sistema.
Si un proceso P1 esta en espera porque, por ej., necesita una operación de E/S, el SO posibilita
que P2 (que esta en estado listo) pase a estado de ejecución. Esto es producido por
intervención del dispatcher. Al finalizar la operación de E/S, P1 podrá pasar de nuevo a estado
listo.
Administración de memoria
El SO asigna la memoria que un proceso requiere para su ejecución. Además, fija limites y
restricciones a los procesos en estado de ejecución, como por ej., a que partes de la memoria
puede acceder un programa en ejecución y cuales no.
También administra la memoria virtual.
Administración de archivos
Supervisa la gestión de archivos para su creación, acceso y eliminación. Define la política que
determina de que forma serán almacenados físicamente. Informa de su disponibilidad cuando
el sistema permite que varias aplicaciones puedan acceder a archivos de forma alternada.
Cap. 12: Dispositivos de E/S
Para almacenar los resultados obtenidos por la CPU de forma permanente se actualizan los
archivos, que se graban en medios magnéticos u ópticos. Existe una variedad de opciones de
almacenamiento masivo.
Disco rígido
Es el dispositivo de E/S más habitual por ofrecer la ventaja de poder almacenar grandes
volúmenes de información de acceso rápido, utilizando tecnología de medios magnéticos. Su
arquitectura se compone de:
Plato: Dentro de un disco duro hay uno o varios discos (de aluminio o cristal) concéntricos
llamados platos, y que giran todos a la vez sobre el mismo eje, al que están unidos.
Cara: Cada plato posee dos caras, y es necesaria una cabeza de lectura/escritura para cada
cara.
Pistas: una circunferencia dentro de una cara; la pista 0 está en el borde exterior. Es una
división lógica no física. Su cantidad depende tanto de la unidad como del SO.
Cilindro: conjunto de varias pistas; son todas las circunferencias que están alineadas
verticalmente (una de cada cara). Los archivos suelen guardarse por cilindros para que los
cabezales no tengan que desplazarse por el radio del disco, ya que esto tardaría mucho.
Cabezas: Por norma general hay una cabeza de lectura/escritura para cada superficie de
cada plato. Cada cabeza esta en el extremo del brazo, las cuales están alineadas
verticalmente y se desplazan de forma simultanea hacia el interior o exterior de los platos,
lo cual, combinado con la rotación de los mismos, permite que los cabezales puedan
alcanzar cualquier posición de su superficie.
Sector: Cada una de las divisiones de una pista. El tamaño del sector no es fijo, siendo el
estándar actual 512 bytes.
Transferencia de datos
Luego de posicionar la cabeza, la unidad de disco esta lista para leer/escribir datos. En
cualquier caso, esta conlleva una transferencia de datos entre el disco y la memoria interna.
El buffer cache de una unidad de disco se usa tanto en las transferencias de datos del disco al
host (lectura) como del host al disco (escritura).
Una vez que la CPU genera un pedido de datos, la unidad de disco accede a los sectores
apropiados, los lee y los almacena en la memoria caché. No obstante, no solo lee lo pedido
sino que continua leyendo los datos secuenciales hasta que el buffer de cache este lleno. La
búsqueda de estos datos adicionales no pedidos se llama pre-búsqueda o “cache look ahead”.
Si esos datos son pedidos por el siguiente comando de lectura, pueden transferirse desde la
cache, lo que es más rápido.
Velocidad de transferencia
La velocidad de transferencia de datos es dependiente de dos medidas:
Velocidad de transferencia del disco: Rapidez con que pasan los datos desde el disco
hacia el buffer o la memoria controladora.
Velocidad de transferencia del host: Rapidez con que la controladora pasa los datos a
la memoria interna a la que accede la CPU.
Tipos de Buses
Buses internos al chip: Comunican registros (por ej: de un microprocesador). Son de los
tipos más simples.
Buses que conectan chips sobre una placa: Son conexiones que sirven para
transferencias sincrónicas y bidireccionales
Buses que conectan distintas placas: Al estar conectadas en diferentes placas, existe la
necesidad de compatibilizar la forma de transferir un dato. Se denominan
normalizados y posee un control de transferencia más complejos.
Buses de entrada/salida: Determinan la estructura que se denominan arquitectura de
buses. Permite definir normas de comportamiento para la transferencia de datos.
Algunas de las señales más comunes son: OWS (previene al procesador de insertar
datos adicionales), ALE (señala que la CPU coloco una direccion valida en el bus de
direcciones), etc.
Dispositivos de entrada/salida
Se encargan de efectivizar una transferencia entre la memoria interna y la externa en los
periféricos.
Funciones
Comunicarse con el periférico y el sistema PCU – Memoria.
Controlar la temporizacióndurante la transferencia.
Almacenar temporalmente Bits para compensar la diferencia de velocidad entre
emisor y receptor.
Detectar si se produjeron errores durante la transferencia.
Señales utilizadas para controlar la transferencia:
Señal de clock, permite sincronizar el ciclo del bus con la operación de la CPU.
Señal de escritura y lectura.
Señales de interrupción.
Señal de bus cedido u ocupado.
Señales de reconocimiento.
Controladores de periféricos
Dispositivo asociado en forma directa al periférico.
Consta de un Buffer interno y una lógica de control.
Funciones fundamentales:
Aislar al software de servicio de entrada/salida.
Compatibilizar la velocidad del periférico respecto de la del resto del sistema.
Adaptadores
Provee una función para conectar y lograr la operación de un componente conectado a un bus.
Todo dispositivo que no cumpla la función por si solo necesita su propio adaptador.
Puertos de entrada/salida
Área de almacenamiento alojada en una interface que permite la comunicación con un
periférico con la memoria para enviar o recibir una secuencia de bits.
Interfaces
Es un hardware que actúa de nexo entre un periférico o un adaptador y el bus.
Interfaz paralela: permite el control de la transferencia en paralelo entre el bus del
sistema y un periférico. Cuenta con registros denominados Ports.
Interfaz serie: permite el control de la transferencia de bits en serie entre el bus y un
dispositivo de entrada y salida. Tiene una lógica de direccionamiento que permite
establecer que interfaz fue seleccionada para la transferencia. Acepta las modalidades
sincrónica y asincrónica. Su principal desventaja es la dificultad de la delimitación de
los caracteres.
Los dispositivos maestros tienen el control del BUS en un momento determinado y los esclavos
pueden pedir un servicio de transferencia pero no inicializarlos.
Drivers
Son programas que conocen el dispositivo periférico.
Su codificación se hace en referencia a los comandos propios para cada periférico.
Comandos de los periféricos
Bits que hacen referencia a que es lo que el dispositivo debe hacer.
Comando de verificación
Comando de control