Ejercicio
• Diseñar un
circuito
conversor
de código de
BCD
, por sus siglas en inglés, (Decimal
Codificado en Binario) a
EXCESO
en
3
, también
conocido como código
AUTOCOMPLEMENTARIO
, utilizando el
DECODIFICADORES
• Circuito combinacional, que convierte un código de
DECODIFICADORES
• La Figura, muestra la circuitería para un decodificador
con
3
entradas y
2
3=8
salidas. Como sólo usan
compuertas
AND
, las salidas activadas son
1
. Para
tener salidas activadas
0
, deberían usarse compuertas
CODIFICADORES
• Circuito combinacional con 2
nentradas y n salidas cuya
misión es presentar en la salida el código binario
correspondiente a la entrada activada.
• Existen 2 tipos fundamentales de codificadores.
Codificadores sin prioridad y codificadores con prioridad.
Los primeros solo admiten una entrada activada,
MULTIPLEXOR
• Circuito combinacional que se selecciona
información binaria de una de muchas líneas de
entrada para dirigirla a una sola línea de salida.
• La selección de una línea de entrada en
particular es controlada por un conjunto de
líneas selección (líneas de control).
• En general 2
nlíneas de entrada y n líneas de
ORGANIZACIÓN DE COMPUTADORES
• Computador: Maquina que realiza cálculos
velozmente mediante circuito electrónicos.
•
Informática:
(Infor: Información; Matica:
Automática).
• El computador procesa información
digitalizada que proviene de una entrada,
mediante una secuencia de instrucciones
(Programa) y produce información útil
ORGANIZACIÓN DE COMPUTADORES
ORGANIZACIÓN DE COMPUTADORES
• Rozamiento Humano (Alto nivel)
1)
Program suma x, y;
2)
Var x, y, aux;
3)
Imput x, y;
4)
Aux = x+y;
5)
Print aux;
ORGANIZACIÓN DE COMPUTADORES
Nuestro programa de alto nivel lo podemos bajar a un nivel
intermedio mediante técnicas especiales (Traducción,
Interpretación).
0 0 0 0 aux
0 0 0 1 variable x
0 0 1 0 variable y
0 0 1 1 add x, y Nivel intermedio (
lenguaje
0 1 0 0 loud aux
ensamblador
)
0 1 0 1 out aux
0 1 1 0
ORGANIZACIÓN DE COMPUTADORES
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1
Zona de datos
0 0 1 0 1 1 1 1 1 1 1 1
0 0 1 1 1 1 1 1 0 0 0 0
0 1 0 0 1 0 0 0 0 0 0 0
0 1 0 1 0 0 0 0 1 1 1 1
Zona de programa
0 1 1 0 1 1 0 0 0 0 0 0
ORGANIZACIÓN DE COMPUTADORES
x y 0 0 1 1 1 1 0 0 1 1 1 1
A.L.U.
1 0 0 1
Unidad Decodificador de de instrucción Control
ORGANIZACIÓN DE COMPUTADORES
Computador Digital Maquina que resuelve problemas ejecutando Instrucciones dadas.
Programas Secuencia de instrucciones que describe como ejecutar una tarea.
Circuitos Electrónicos Reconocen y ejecutan un conjunto limitado de Instrucciones simples.
- Sumar dos números - Ver si un número es 0
- Mover datos en la memoria
Por esto todo programa debe convertirse a estas instrucciones simples.
Lenguaje de maquina:
ORGANIZACIÓN DE COMPUTADORES
El lenguaje de maquina tiene instrucciones simples que ejecutan vía la circuiteria electrónica.
Debido a la problemática de programar el lenguaje L1, es que se crea un nuevo conjunto de instrucciones que esté mas cerca de la persona. Este nuevo lenguaje L2 difiere del L1 en el modo en que los programas escritos en L2 son ejecutados por el computador, ya que el computador solo trabaja con lenguaje de programación L1.
Como hemos dicho, el computador solo trabaja con lenguaje L1, por lo tanto, tenemos que buscar la forma de poder ejecutar nuestro programa escrito en L2, en una maquina que solo habla en L1.
ORGANIZACIÓN DE COMPUTADORES
Método de Traducción
En este método se sustituye con una intrusión de de L2 por su secuencia equivalente de instrucciones en L1.
Esto nos entrega un programa totalmente escrito en L1. El computador ejecutara el nuevo programa escrito en L1 y desechara el escrito en L2.
Método de Interpretación
ORGANIZACIÓN DE COMPUTADORES
Maquina Virtual
En vez de pensar traducción o interpretación se modela un computador hipotético o maquina virtual, cuyo lenguaje de maquina es L2. Esto significa que se pueden escribir programa en L2 y hacer que la maquina virtual los ejecute. De esta forma nos preocupamos de lo que esta ocurriendo en los niveles inferiores en el computador real.
ORGANIZACIÓN DE COMPUTADORES
MÁQUINA MULTINIVELES ACTUALES
Los computadores actuales constan de 2 o más niveles:
Nivel 0.
-Es el más bajo o inferior, es el Hardware de la maquina. Sus circuitos ejecutan los programas escritos en lenguaje L1. Es el nivel de lógica digital y todo relacionado de los compuestos lógicos.
Nivel 1.
-Conforma un verdadero nivel de lenguaje de maquina o diferencia del nivel cero donde no existe el concepto de programa.
ORGANIZACIÓN DE COMPUTADORES
Nivel 2.
-Cada maquina del nivel 1 tiene uno o más microprogramas que pueden ejecutarse en ella. Cada microprograma define implícitamente un lenguaje de nivel 2 (una maquina virtual), cuyo lenguaje de maquina es ese lenguaje. A este nivel se le denomina “Nivel de Maquina Convencional”: Generalmente los fabricantes de computadores entregan un manual asociado a este nivel “Manual de Referencia de Lenguaje de Maquina xxx”.
Nivel 3.
ORGANIZACIÓN DE COMPUTADORES
Nivel 4.
-Los niveles inferiores a este no están diseñados para que lo usen los programadores corrientes. Estos niveles están concebidos para ejecutar los interpretes y traductores necesarios que soportan los niveles superiores. El nivel 4 y superiores están pensados para los programadores de aplicaciones. Otro cambio que se produce en el nivel 4, es el método por el que se soporta los niveles superiores. Los niveles 2 y 3 siempre se interpretan los niveles 4 y 5, generalmente se soportan por traducción.
ORGANIZACIÓN DE COMPUTADORES
Nivel 5.
ORGANIZACIÓN DE COMPUTADORES
FUNCIONAMIENTO DE UN PROCESADOR
Anteriormente hemos visto una organización simple y estándar de un computador. La C.P.U. es el centro o “el cerebro” de sistema. Tiene como función ejecutar programas, que están almacenados en la memoria central tomando sus instrucciones, examinándolas y luego ejecutándolas unas tras otras.
La C.P.U. esta compuesta por varias partes:
Unidad de Control: Se encuentra dentro de la C.P.U. y es la encargada de analizar y determinar que se hará con las instrucciones presente en la memoria principal. Por otra parte la ALU realiza las operaciones de tipo aritmética lógica que se requiere en cada una de las instrucciones. Adicionalmente la C.P.U
ORGANIZACIÓN DE COMPUTADORES
Para el manejo de la memoria tenemos dos registros que son el MAR
(memory adress Register) y el MDR (memory data Register).
ORGANIZACIÓN DE COMPUTADORES
C.U ALU
Memoria de registro PC IR
MAR MDR Memoria Entrada Salida CPU
000
001 xxxxx 00100 PC 010 yyyyy
011 00110 00110 IR 100 zzzzz
ORGANIZACIÓN DE COMPUTADORES
CICLO DE EJECUCION DE LAS INSTRUCCIONES
La CPU ejecuta cada instrucción como una serie de pequeños pasos. 1.- Extrae de memoria la siguiente instrucción y la lleva a un IR.
2.- Cambia en PC de modo que apunte la siguiente instrucción. 3.- Determina el tipo de instrucción que acaba de extraer.
4.- Verifica si la instrucción requiere datos de memoria y si es así determina a donde estos datos están ubicados.
5.- Extrae los datos si los hay y los carga en los registros internos de la CPU.
6.- Ejecuta la instrucción (aquí se realiza el trabajo verdadero de la maquina).
7.- Almacena los resultados en el lugar apropiado.
ORGANIZACIÓN DE COMPUTADORES
MEMORIA U ORGANIZACIÓN DE LA MEMORIA
La memoria es aquella parte de la arquitectura del computador que nos permite almacenar la información con que trabajamos.
ORGANIZACIÓN DE COMPUTADORES
Si la memoria tiene n palabras entonces tendrá las direcciones asociadas desde 0 a n-1. Todas las palabras de memoria tienen el mismo largo ó numero de bits, si una palabra de memoria consta de k bits, podrá almacenar cualquiera de las 2k combinaciones e información
binaria posible.
K bits
N celdas
SISTEMAS OPERATIVOS
¿Qué es un Sistema Operativo?
En términos simples un sistema operativo es un software que tiene por objetivo fundamental el administrar y controlar de manera integral todos los recursos de un sistema computacional.
HARDWAR E
USUAR IO 1 USUARIO 2 USUARIO N
Compilador Editor de texto Bases de datos
SISTEMA OPERATIVO
3
1
2
1. Define la utilizaci�n de los recursos 2. Control y coordinaci�n de los recursos 3. Provee recursos computacionales
HARDWAR E
USUAR IO 1 USUARIO 2 USUARIO N
Compilador Editor de texto Bases de datos
SISTEMA OPERATIVO
3
1
2
SISTEMAS OPERATIVOS
Los primeros sistemas computacionales
•
No disponían de sistema operativo
•
Operación por medio de consola
•
Se escribía manualmente los programas (dirección de inicio de
ejecución)
•
Uso de cintas magnéticas o tarjetas perforadas
•
La consola permite monitorear la ejecución de los programas
•
El usuario tenia acceso a los registros de memoria (errores de
programación)
•
Los resultados se entregaban en formulario continuo o tarjeta
•
El computador era asignado a los usuarios por bloque de
tiempo
SISTEMAS OPERATIVOS
Procesos BATCH simple (conjuntos o lotes)
•
Los pasos de ejecución se repiten debido a errores normales de
compilación
•
Proceso Batch, ¿Qué sucede entonces al agrupar los procesos
de la misma naturaleza?
•
El proceso Batch también presenta ciertos problemas en la
óptima utilización de la CPU (detención de procesos)
•
Tiempo ocioso de la CPU impulsa a la creación de un
SISTEMAS OPERATIVOS
VECTOR DE INTERRUPCIONE S DRIVERS E/S SECUENCIADOR DE PROCESOS INTERPRETADOR DE TARJETAS DE CONTROL AREA DE PROGRAMAS DE USUARIO MONITOR RESIDENTE ESQUEMA DEL SISTEMA BATCHSIMPLE VECTOR DE INTERRUPCIONE S DRIVERS E/S SECUENCIADOR DE PROCESOS INTERPRETADOR DE TARJETAS DE CONTROL AREA DE PROGRAMAS DE USUARIO MONITOR RESIDENTE VECTOR DE INTERRUPCIONE S DRIVERS E/S SECUENCIADOR DE PROCESOS INTERPRETADOR DE TARJETAS DE CONTROL AREA DE PROGRAMAS DE USUARIO MONITOR RESIDENTE ESQUEMA DEL SISTEMA BATCH
SISTEMAS OPERATIVOS
Sistema BATCH Sofisticado
•
Se analiza la optimización de la CPU desde el punto de vista de
los periféricos del sistema computacional (E/S)
SISTEMAS OPERATIVOS
Soluciones a la lentitud de los dispositivos de E/S: Sistema BUFFERING
•El proceso se ejecuta entre el dispositivo de entrada, la memoria principal, la CPU y el dispositivo de salida (operación ON-LINE)
Tiene por objetivo mantener ocupados en todo momento tanto los dispositivos de E/S como la CPU
•Al ser la CPU mucho más rápida que los dispositivos de E/S, se considera esta solución como parcial
CPU
Memoria Principal
Lector de Tarjetas Impresora en L ?
_nea CPU
Memoria Principal
SISTEMAS OPERATIVOS
Operación OFF-LINE
•Se incorpora los medios en cintas magnéticas para equilibrar los tiempos de respuestas
•Posee un computador denominado satélite que permite la interacción entre los dispositivos de tarjetas y las unidades de cinta (transformación)
•La desventaja es la presencia de un sistema con “acceso secuencial”
CPU
Memoria Principal
Lector de Tarjetas Impresora
Cinta 1A Cinta 1B Cinta 2A Cinta 2B Proceso de
lectura Descarga OPERAC
I
? N OFF-LINE
Job 1 Job 1
Job 2
Job 1 CPU
Memoria Principal
Lector de Tarjetas Impresora
Cinta 1A Cinta 1B Cinta 2A Cinta 2B Proceso de
lectura Descarga OPERAC
I
? N OFF-LINE
Job 1 Job 1
SISTEMAS OPERATIVOS
SPOOLING (Simultaneous Peripherical Operation On Line)
Se incorpora el disco duro como medio de almacenamiento
•
Se guarda una imagen de la tarjeta en disco duro una vez leída
•
Esencialmente consiste en el uso del disco como un gran buffer
de memoria para la lectura y registros de salida parciales hasta
terminar los procesos
•
Una ventaja importante es que permite desarrollar en paralelo la
E/S de un job con el procesamiento de otro job
•
El Spooling provee de una nueva estructura de datos:
un
conjunto de jobs
•
Este proceso de secuenciación se denomina
Scheduling
Proccess
(Proceso de Planificación)
SISTEMAS OPERATIVOS
CPU
Lector de Tarjetas Impresora Disco Duro Buffer Input Buffer Output SISTEMA SPOOLING CPU
Lector de Tarjetas Impresora Disco Duro Buffer Input Buffer Output CPU
SISTEMAS OPERATIVOS
MULTIPROGRAMACIÓN
•
Su objetivo es lograr que la CPU este siempre procesando algún
job
•
Requiere varios programas residentes en memoria al mismo
tiempo
Pasos a seguir por la Multiprogramación:
•
El SO selecciona uno de los jobs residentes en memoria y
comienza su proceso
•
Si el proceso necesita esperar por alguna información de entrada
el SO asignará otro job a la CPU
•
Si este último job necesita esperar nuevamente se asignará un
tercer job y así sucesivamente
SISTEMAS OPERATIVOS
Gestión y planificación de procesos
PROCESO
Propios del S.O. (ejecutan c ?
_digos de un
sistema)
Propios de los usuarios (ejecutan c ?
_digos de los
usuarios) PROCESO
Propios del S.O. (ejecutan c ?
_digos de un
sistema)
Propios de los usuarios (ejecutan c ?
_digos de los
usuarios)
Proceso Secuencial
•El proceso en cualquier momento deberá ejecutar una instrucción asociada a él en forma secuencial
•Un proceso es más que el código del programa asociado a la actividad, por ejemplo: parámetros de rutinas, direcciones de retorno, variables temporales y variables globales
SISTEMAS OPERATIVOS
Concepto de Planificación
•En multiprogramación varios procesos se conservan en memoria a la vez y cuando uno de ellos tiene que esperar el SO cambia la CPU hacia otro proceso.
•Se logra una mayor productividad.
Ejemplo:
SISTEMAS OPERATIVOS
1 2 3 4 5 6 7
1 2 3 4 5 6 7
P0
P1 P0
P1
(a) 4 MINUTOS
(b) 2 MINUTOS
1 2 3 4 5 6 7
1 2 3 4 5 6 7
P0
P1 P0
P1
(a) 4 MINUTOS
SISTEMAS OPERATIVOS
Conceptos de Multiprogramación
Sin multiprogramación
:
Cuando ejecutamos el programa A éste
pasa a ocupar la CPU pero por un requerimiento de E/S el
proceso deja la CPU libre, quedando en un estado de espera
hasta que se satisface ese requerimiento.
Con multiprogramación
:
En un sistema ideal, si
multiprogramamos los trabajos A y B podemos mejorar
considerablemente las prestaciones del sistema. Cuando el
trabajo A debe esperar, ejecutamos el trabajo B; cuando el trabajo
B debe esperar, retornamos a la ejecución del trabajo A. Con
multiprogramación se aumenta la productividad de los sistemas, la
utilidad de la CPU (en esta situación ideal la CPU nunca está
SISTEMAS OPERATIVOS
Los trabajos se clasifican en:
Trabajos limitados por I/O
: Tienen muchos ciclos de I/O y
además son pequeños.
Trabajos limitados por CPU
: Tienen muchos ciclos y grandes
SISTEMAS OPERATIVOS
•
Conceptos de Planificación
• Un problema persistente con los sistemas
operativos consiste en como llamar a todas las
actividades de la CPU. En muchos sentidos,
todas estas actividades son similares, de modo
que a todas ellas las llamamos procesos. Un
proceso es un programa en ejecución, un trabajo
batch, un programa de usuario en tiempo
SISTEMAS OPERATIVOS
•
Estados de los Procesos
• A medida que se ejecuta el programa, el
proceso cambia de estado. Es estado de
un proceso de define por su actividad
actual. Así todo proceso puede
SISTEMAS OPERATIVOS
SISTEMAS OPERATIVOS
• Un proceso nuevo nunca se ha asignado a la
CPU y estará en disco esperando ser asignado
a memoria. Un proceso está activo si está en
memoria dispuesto a ser asignado a la CPU o
cuando esta ejecutándose en la CPU. Un
proceso está en espera generalmente cuando
está esperando a que se complete el proceso de
E/S. Un proceso está parado cuando se ha
SISTEMAS OPERATIVOS
•
Bloque de control de los procesos
• Cada proceso está representado en el sistema operativo por
su propio
bloque de control de proceso
. Un bloque de
control de proceso (PCB) es una estructura o bloque de
datos que contiene muchas de las informaciones asociadas
a un proceso específico y que incluyen:
• El identificador del proceso. El estado del proceso que
puede ser nuevo, preparado, en ejecución, esperando o
detenido.
SISTEMAS OPERATIVOS
• Campos para almacenar los registro de la CPU.
Paralelamente al contador del programa, hay que salvar
esta información de estado cuando se produce una
interrupción para permitir que el proceso continúe
correctamente.
• Cualquier información de gestión de la memoria,
incluyendo registros base y límite o tablas de página.
• Información sobre la forma de ejecutarse ese proceso
SISTEMAS OPERATIVOS
• Información de estado de la E/S incluyendo los
dispositivos de E/S (como unidades de cintas)
asignados al proceso, una lista de ficheros
abiertos para ese proceso, etc.
• Información sobre la planificación de la CPU,
que incluye prioridad del proceso, punteros a
colas de planificación y cualesquiera otros
SISTEMAS OPERATIVOS
•
Colas de planificación
SISTEMAS OPERATIVOS
SISTEMAS OPERATIVOS
SISTEMAS OPERATIVOS
•
Formas de planificación
Hay dos formas de planificación de la CPU principales: la
planificación a largo plazo y la planificación a corto plazo.
• 1
La planificación a largo plazo
(long term scheduler
(LT-S)) determina cuales son los trabajos que se admiten
en el sistema para su procesamiento. Esto es debido a
que hay más trabajos dispuestos que los que se pueden
ejecutar inmediatamente.
SISTEMAS OPERATIVOS
• La distinción básica entre estas dos formas de
planificación es la frecuencia de su ejecución.
• La planificación a corto plazo tiene que seleccionar
un nuevo proceso para la CPU con mucha
frecuencia. Además, debido al corto período de
tiempo entre ejecuciones, ha de ser muy rápido.
• Por otra parte, la planificación a largo plazo se
ejecuta con mucha menor frecuencia. La
SISTEMAS OPERATIVOS
• Algunos sistemas, especialmente aquellos que
tienen memoria virtual o tiempo compartido,
introducen un nivel intermedio adicional de
planificación denominada
planificación a medio
plazo
(medium term scheduler (MT-S)). La idea
clave es que en ocasiones puede resultar
ventajoso eliminar procesos de la memoria y
reducir así el grado de multiprogramación. Más
tarde el proceso puede reintroducirse en la
memoria y continuar en el punto donde abandonó.
A este esquema se le denomina
intercambio
SISTEMAS OPERATIVOS
SISTEMAS OPERATIVOS
•
Algoritmos de planificación de la CPU
• La planificación de la CPU consiste en decidir a
cuál de los procesos situados en la cola de
procesos listos hay que asignar la CPU. Hay
muchos algoritmos de CPU diferentes.
SISTEMAS OPERATIVOS
•
Criterios de evaluación de prestaciones
• Los diferentes algoritmos tienen propiedades
distintas que pueden favorecer a una clase de
procesos cobre las demás. Entre los criterios que
se emplean están los siguientes:
1. Utilización de la CPU
:
El porcentaje de CPU
ocupada ha de ser lo mas alto posible.
SISTEMAS OPERATIVOS
3. Tiempo de retorno (Turnaround time)
:
SISTEMAS OPERATIVOS
SISTEMAS OPERATIVOS
SISTEMAS OPERATIVOS
•
Tipos de algoritmos:
•
a)
Apropiativos
:
Son aquellos algoritmos en los
que un proceso puede apropiarse de la CPU que
puede estar ocupada por otro proceso.
•
b)
No apropiativos
:
Una vez asignada la CPU a
un proceso, este puede mantenerla hasta que desee
liberarla, bien por haber terminado o bien por
SISTEMAS OPERATIVOS
ALGORITMOS NO APROPIATIVOS
•
Algoritmo FCFS, First-Come-First-Served
(Primero en llegar, primero en ser servido)
SISTEMAS OPERATIVOS
•
Prueba con FCFS
:
• Consideremos los siguientes trabajos 1, 2 y 3 con ciclos
24, 3 y 3 respectivamente. Debemos calcular el tiempo
medio de retorno para servir a estos tres ciclos.
• Si los trabajos llegan en el orden 1, 2, 3 y se sirven en
orden FCFS, entonces el resultado obtenido es el que se
muestra en el siguiente
diagrama de Gantt
.
Trabajo 1 Trabajo 2 Trabajo 3
SISTEMAS OPERATIVOS
• El tiempo de retorno del trabajo 1 es de 24; el del trabajo 2,
27 y el del trabajo 3, 30. De esta manera, el tiempo medio
de retorno (turnaround time) es (24+27+30)/3=27.
• Sin embargo, si los trabajos llegan en el orden 2, 3, 1,
obtenemos los resultados que muestra el siguiente
diagrama de Gantt.
• Ahora el tiempo medio de retorno es de (30+3+6)/3=13, lo
que supone una reducción sustancial. Por tanto, el tiempo
medio de retorno en el FCFS generalmente no es mínimo y
puede variar sustancialmente.
Trabajo 2 Trabajo 3 Trabajo 1
SISTEMAS OPERATIVOS
• En este algoritmo los procesos largos
hacen esperar a los procesos cortos.
Supongamos que tenemos un trabajo
limitado por CPU y muchos trabajos
limitados por E/S. A medida que los
trabajos van fluyendo por el sistema, el
trabajo limitado por CPU obtendrá y
SISTEMAS OPERATIVOS
• Durante ese tiempo, todos los demás acabarán
sus E/S y pasarán a la cola de procesos listos
esperando a la CPU. Mientras esperan en la
cola, los dispositivos de E/S permanecen
inactivos. Esto hace que la cola de procesos
listos esté llena y que se haga una baja
utilización de los dispositivos de E/S. Se
SISTEMAS OPERATIVOS
• Este algoritmo casi nunca se utiliza como
algoritmo principal de planificación aunque
se puede emplear como una parte de
políticas de planificación cuando los
SISTEMAS OPERATIVOS
•
Algoritmo SJF, Shortest-Job-First
(Trabajo más corto primero)
• El SJF asocia a cada trabajo la longitud de
su siguiente ciclo de CPU. Cuando la CPU
queda libre, se asigna al trabajo que tenga
el siguiente ciclo (burst) de CPU más
• A modo de ejemplo, consideremos el siguiente
conjunto de trabajos.
• Utilizando el SJF, planificaríamos estos trabajos
según el diagrama de Gantt siguiente:
0 3 9 16 24
SISTEMAS OPERATIVOS
Trabaj o 2
Trabajo 1 Trabajo 4 Trabajo 3
Trabajo Ciclo
1 6
2 3
3 8
SISTEMAS OPERATIVOS
• El tiempo medio de retorno (turnaround time) es
(3+9+16+24)/4=13.
• El SJF es óptimo, en el sentido de que da el
mínimo tiempo medio de espera para un
conjunto dado de trabajos. La experiencia
SISTEMAS OPERATIVOS
• Aunque el SJF es óptimo, no puede
implementarse ya que no hay manera de
conocer los burst time. Podríamos,
entonces, predecir su valor suponiendo
que el ciclo siguiente de la CPU será
similar en longitud a los anteriores. Así,
calculando una aproximación de la
longitud del ciclo de CPU siguiente,
SISTEMAS OPERATIVOS
• El ciclo de CPU siguiente se predice
generalmente como una media exponencial de las
longitudes medidas de los ciclos de CPU previos.
Sea t
nla longitud del n-ésimo ciclo de CPU (burst
time) y T
n+1nuestro valor calculado del burst time
siguiente. Entonces, para
, siendo , se
define:
• , donde
:
peso relativo de la historia reciente del proceso
• 1 -
: peso de la historia pasada del proceso.
1 0
nn
n
SISTEMAS OPERATIVOS
• Podemos ampliar la fórmula para T
n+1sustituyendo por T
ny llegamos a:
• Se puede hacer un SJF sobre predicciones sobre
burst time pero esto produce una sobrecarga del
sistema operativo ya que tiene que hacer el cómputo
de predicción y el cálculo de cual es menor.
• SJF es un algoritmo NO apropiativo, da prioridad a los
trabajos cortos y no se puede implementar realmente
(sólo basándose en predicciones).
n jj n
n n
n
SISTEMAS OPERATIVOS
•
Algoritmos basados en prioridad
• Estos algoritmos asignan a cada trabajo una
prioridad, y la CPU se asigna al trabajo que tiene la
prioridad más alta. Los trabajos con la misma
prioridad se planifican por FCFS.
• Un algoritmo SJF es sencillamente un algoritmo
por prioridades en el que la prioridad (p) es la
SISTEMAS OPERATIVOS
• Las
prioridades
pueden
definirse
bien
internamente o externamente. Las prioridades
definidas internamente utilizan alguna cantidad o
cantidades mensurables para calcular la prioridad
de un proceso, como por ejemplo,
límites de
tiempo
, el
requerimiento de memoria
, el
número
de ficheros abiertos
y la relación entre la
media de
ciclos de E/S
y la media de
ciclos de CPU
.
SISTEMAS OPERATIVOS
• Otra clasificación de las prioridades las divide en
prioridades estáticas y prioridades dinámicas. Las
prioridades estáticas son aquellas asignadas a un
proceso y que no cambian según se van ejecutando
los procesos. Las prioridades dinámicas, por el
contrario, varían en función de los procesos en
espera en cada momento. Estas prioridades
SISTEMAS OPERATIVOS
• Un problema importante de los algoritmos de
planificación por prioridades es el
starvation
(postergación indefinida o inanición). Un algoritmo por
prioridades puede dejar algunos procesos de baja
prioridad esperando a la CPU indefinidamente. Una
solución al problema es el
aging
(envejecimiento). El
aging es una técnica que consiste en incrementar
gradualmente la prioridad de los trabajos que esperan
en el sistema durante mucho tiempo. Esta operación de
incremento de la prioridad se realiza mediante
SISTEMAS OPERATIVOS
•
Algoritmo de Brinch Hansen HRN, Highest
Response Ratio Next
(Siguiente con relación de respuesta rápida)
• Este algoritmo es una corrección al SJF en el sentido
que el SJF favorece excesivamente a los trabajos cortos
con un exceso de prejuicios hacia los trabajos largos.
SISTEMAS OPERATIVOS
• El funcionamiento del algoritmo es igual que el
funcionamiento del SJF de forma que los trabajos más
cortos demandan mayor prioridad, es decir, si dos
trabajos tienen igual tiempo de espera, será el trabajo
más corto el que tendrá mayor prioridad.
• Al asignar el tiempo de espera a un trabajo se hace una
pequeña corrección dando mayor prioridad a los trabajos
largos que llevan más tiempo en la cola.
SISTEMAS OPERATIVOS
•
Algoritmos apropiativos "Preemptive"
• El FCFS es un algoritmo intrínsecamente no apropiativo,
pero tanto el SJF como los algoritmos por prioridad pueden
modificarse para convertirse en algoritmos apropiativos.
• Cuando se está ejecutando un proceso y llega un nuevo
trabajo a la cola de procesos listos con un ciclo de CPU
más corto, el algoritmo SJF apropiativo revocará la
SISTEMAS OPERATIVOS
• El SRF presenta el mismo problema que el SJF en
cuanto al conocimiento del burst time de un proceso
antes de su ejecución con lo que se ha de aplicar la
técnica de predicción del burst time.
• Los algoritmos por prioridad también pueden ser
apropiativos. Cuando llega un trabajo a la cola de
SISTEMAS OPERATIVOS
• En ocasiones se define un umbral para que cuando un
trabajo está en la CPU (en ejecución) y necesite para
terminar una cantidad menor que la de ese umbral se
garantiza su terminación sin que pueda ser apropiado
por otro
• Si el tiempo asignado de servicio (burst time) del
proceso que llega es solo algo menor del que resta en
ejecución y si la sobrecarga de la apropiación es mayor
que la diferencia de esos tiempos entonces la
SISTEMAS OPERATIVOS
•
Algoritmo Round-Robin
• Este algoritmo es intrínsecamente apropiativo (versión
apropiativa del FCFS) y está especialmente definido para
sistemas en tiempo compartido.
• Se define una pequeña unidad de tiempo común llamada
quantum de tiempo
. El quantum de tiempo generalmente
tiene un valor entre 10 y 100 MS. La cola de procesos
listos se trata como una cola circular (FIFO). El planificador
de la CPU recorre la cola, asignando a cada proceso
SISTEMAS OPERATIVOS
• El planificador de la CPU selecciona el primer trabajo de
la cola, fija un temporizador para interrumpir tras un
quantum de tiempo y despacha el proceso. Ocurrirá,
entonces, una de estas dos cosas:
– El proceso puede tener un burst time inferior a un quantum de
tiempo. En este caso, el proceso mismo libera la CPU
voluntariamente. Entonces pasamos al siguiente proceso en la
cola.
– Si el burst time del proceso en ejecución es mayor que el
quantum de tiempo, se producirá la apropiación, y el proceso
pasará al final de la cola de procesos listos salvando en su PCB
los registros del proceso. El planificador de la CPU selecciona el
trabajo siguiente de la cola y le asigna el quantum de tiempo
SISTEMAS OPERATIVOS
• Por ejemplo, consideremos el siguiente conjunto de trabajos:
Trabajo Burst time
1 24
2 3
3 3
• Si tenemos un quantum de
tiempo de 4, la planificación round-robin resultante es:
JOB 1 JOB 2 JOB 3 JOB 1 JOB 1 JOB 1 JOB 1 JOB 1
SISTEMAS OPERATIVOS
• El trabajo 1 obtiene las primeras 4 unidades de tiempo.
Puesto que necesita de otras 20, es revocado después
del primer quantum de tiempo, pierde la CPU, que se
asigna al siguiente trabajo en la cola, el 2. Puesto que el
trabajo 2 no necesita de cuatro unidades, sale antes de
que el quantum de tiempo acabe. Entonces la CPU pasa
al proceso siguiente. Una vez que cada uno de los
SISTEMAS OPERATIVOS
• Al final de cada quantum de tiempo nos encontramos con una interrupción procedente del temporizador. El procesamiento de la interrupción para conmutar la CPU a otro proceso requiere salvar los registros del proceso antiguo y restaurar los registros del proceso nuevo.
• Este trabajo recibe el nombre de cambio de contexto. Deseamos que el quantum de tiempo sea largo respecto al tiempo de cambio de contexto. Si este tiempo fuera aproximadamente el 10% del tiempo del quantum entonces alrededor del 10% de tiempo de la CPU se desperdiciaría en cambiar de contexto. Normalmente oscila entre el 10% y el 20%.
• El algoritmo round-robin es muy usado en sistemas interactivos.
PROCESOS CONCURRENTES
•
Grafos de precedencia
• Es una técnica que permite expresar las restricciones
de precedencia en un programa.
• Un
grafo de referencia
es un grafo acíclico orientado
cuyos nodos corresponden a sentencias individuales.
Un arco (S
i,S
j) desde el nodo S
ial nodo S
jsignifica
que la sentencia S
jpuede ejecutarse solamente
PROCESOS CONCURRENTES
• Según esto en un programa que normalmente sus
instrucciones se ejecutan secuencialmente, podemos
encontrar que algunas de estas instrucciones se podrían
haber ejecutado concurrentemente.
• Consideremos el siguiente segmento de programa y
supongamos que deseamos ejecutar algunas de estas
instrucciones concurrentemente.
PROCESOS CONCURRENTES
• Evidentemente, la instrucción S
4no puede
ejecutarse antes de que se haya ejecutado la
sentencia S
3. Por otra parte, las instrucciones S
1y S
2podrían ejecutarse concurrentemente
puesto que ninguna de ellas depende de la otra.
• El grafo de precedencia ha de ser acíclico, ya
que, en caso contrario, las condiciones de
PROCESOS CONCURRENTES
• Condiciones de concurrencia
• ¿Cuándo pueden ser ejecutadas concurrentemente dos instrucciones en un programa sin que varíen sus resultados?. Antes de responder a esta pregunta, definamos algunas notaciones.
• · R(Si) = {a1, a2, ..., am}, conjunto de lectura de Si, es el conjunto de todas las variables cuyos valores son referenciados en la instrucción Si durante su ejecución.
– Por ejemplo: R(S1) = {x,y}
• · W(Si) = {b1, b2, ..., bn}, conjunto de escritura de Si, es el conjunto de todas las variables cuyos valores se cambian (escriben) por la ejecución de la instrucción Si.
PROCESOS CONCURRENTES
• Otro ejemplo: consideremos la instrucción S6 = read(a). Obsérvese que el valor de a es cambiante. Los conjuntos de lectura y escritura son:
– R(S6) = { } – W(S6) = {a}
• Para que dos instrucciones sucesivas S1 y S2 sean ejecutables concurrentemente sin variación de resultados, tienen que satisfacerse las tres condiciones siguientes. Estas condiciones fueron enunciadas por vez primera por Bernstein y se conocen como condiciones de Bernstein.
PROCESOS CONCURRENTES
• Como ilustración, consideremos el ejemplo anterior
S
1: a:=x+y
y
S
2: b:= z+1
. Estas dos instrucciones pueden ejecutarse
concurrentemente porque:
– R(S1) = {x,y} – R(S2) = {z} – W(S1) = {a} – W(S2) = {b}
• Sin embargo, S
2no puede ejecutarse concurrentemente con
S
3: c:=a-b
, puesto que:
PROCESOS CONCURRENTES
•
Especificación de concurrencia
• Es necesario facilitar otros medios para permitir al
programador la especificación de las relaciones de
precedencia entre las distintas instrucciones de un programa.
•
Los constructores Fork y Join
PROCESOS CONCURRENTES
• La instrucción
fork L
genera dos ejecuciones concurrentes en un
programa. Una ejecución se inicia en la instrucción etiquetada con
L
,
mientras que la otra es la continuación de la ejecución en la
instrucción siguiente a la instrucción
fork
.
• Para ilustrar este concepto, consideremos el siguiente segmento de
programa:
• S1; • fork L
• S2; • . • . • .