• No se han encontrado resultados

Arquitectura de Computadores

N/A
N/A
Protected

Academic year: 2020

Share "Arquitectura de Computadores"

Copied!
102
0
0

Texto completo

(1)
(2)

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

(3)

DECODIFICADORES

• Circuito combinacional, que convierte un código de

(4)

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

(5)

CODIFICADORES

• Circuito combinacional con 2

n

entradas 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,

(6)

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

n

líneas de entrada y n líneas de

(7)
(8)

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

(9)

ORGANIZACIÓN DE COMPUTADORES

(10)

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;

(11)

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

(12)

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

(13)

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

(14)

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:

(15)

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.

(16)

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

(17)

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.

(18)

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.

(19)

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.

(20)

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.

(21)

ORGANIZACIÓN DE COMPUTADORES

Nivel 5.

(22)

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

(23)

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).

(24)

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

(25)

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.

(26)

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.

(27)

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

(28)

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

(29)

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

(30)

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

(31)

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 BATCH

SIMPLE 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

(32)

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)

(33)

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

(34)

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

(35)

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)

(36)

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

(37)

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

(38)

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

(39)

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:

(40)

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

(41)

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á

(42)

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

(43)

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

(44)

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

(45)

SISTEMAS OPERATIVOS

(46)

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

(47)

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.

(48)

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

(49)

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

(50)

SISTEMAS OPERATIVOS

Colas de planificación

(51)

SISTEMAS OPERATIVOS

(52)

SISTEMAS OPERATIVOS

(53)

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.

(54)

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

(55)

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

(56)

SISTEMAS OPERATIVOS

(57)

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.

(58)

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.

(59)

SISTEMAS OPERATIVOS

3. Tiempo de retorno (Turnaround time)

:

(60)

SISTEMAS OPERATIVOS

(61)

SISTEMAS OPERATIVOS

(62)

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

(63)

SISTEMAS OPERATIVOS

ALGORITMOS NO APROPIATIVOS

Algoritmo FCFS, First-Come-First-Served

(Primero en llegar, primero en ser servido)

(64)

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

(65)

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

(66)

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

(67)

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

(68)

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

(69)

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

(70)

• 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

(71)

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

(72)

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,

(73)

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

n

la longitud del n-ésimo ciclo de CPU (burst

time) y T

n+1

nuestro 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 

n

n

n

(74)

SISTEMAS OPERATIVOS

• Podemos ampliar la fórmula para T

n+1

sustituyendo por T

n

y 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 j

j n

n n

n

(75)

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

(76)

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

.

(77)

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

(78)

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

(79)

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.

(80)

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.

(81)

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

(82)

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

(83)

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

(84)

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

(85)

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

(86)

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

(87)

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

(88)

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.

(89)

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

i

al nodo S

j

significa

que la sentencia S

j

puede ejecutarse solamente

(90)

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.

(91)

PROCESOS CONCURRENTES

• Evidentemente, la instrucción S

4

no puede

ejecutarse antes de que se haya ejecutado la

sentencia S

3

. Por otra parte, las instrucciones S

1

y S

2

podrí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

(92)

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.

(93)

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.

(94)

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

2

no puede ejecutarse concurrentemente con

S

3

: c:=a-b

, puesto que:

(95)

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

(96)

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; • . • . • .

(97)

PROCESOS CONCURRENTES

(98)

PROCESOS CONCURRENTES

• Obsérvese que la ejecución de una instrucción

fork

divide una computación única en dos

computaciones independientes; de aquí el

nombre de

fork

(tenedor).

(99)

PROCESOS CONCURRENTES

• Tenemos que saber el número de computaciones que

hay que unir, de modo que podamos terminarlas todas

excepto la última. La instrucción

join

tiene un parámetro

para especificar el número de computaciones a reunir.

Así, la ejecución de la instrucción

join

con un parámetro

count

tiene el siguiente efecto:

count := count - 1;

if count <> 0 then quit;

• Donde

count

es una variable entera no negativa, y

quit

(100)

PROCESOS CONCURRENTES

Para ilustrar este concepto, consideremos

el siguiente segmento de programa:

count := 2;

fork L1;

.

.

S1;

go to L2

L1:

S2

L2:

join count;

Obsérvese que la ejecución de la

(101)

PROCESOS CONCURRENTES

Basándonos en el grafo de precedencia de la figura. El

programa correspondiente utilizando las instrucciones

(102)

PROCESOS CONCURRENTES

S1;

count := 3;

fork L1

;

S2;

S4;

fork L2

;

S5;

go to L3;

L2:

S6;

go to L3;

L1:

S3;

L3:

join

count;

S7;

Obsérvese que en la figura existe solamente un nodo S7

Referencias

Documento similar

Proporcione esta nota de seguridad y las copias de la versión para pacientes junto con el documento Preguntas frecuentes sobre contraindicaciones y

Para ello, trabajaremos con una colección de cartas redactadas desde allí, impresa en Évora en 1598 y otros documentos jesuitas: el Sumario de las cosas de Japón (1583),

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

o Si dispone en su establecimiento de alguna silla de ruedas Jazz S50 o 708D cuyo nº de serie figura en el anexo 1 de esta nota informativa, consulte la nota de aviso de la

De hecho, este sometimiento periódico al voto, esta decisión periódica de los electores sobre la gestión ha sido uno de los componentes teóricos más interesantes de la

Las manifestaciones musicales y su organización institucional a lo largo de los siglos XVI al XVIII son aspectos poco conocidos de la cultura alicantina. Analizar el alcance y

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)