Asignación A11
Planificación FCFS
Planificación FCFS
La forma más sencilla de planificación de disco es, desde luego,
el servicio por orden de llegada (FCFS, first come, first served). No
proporciona el servicio más rápido.
La planificación FCFS es justa en el sentido de que una vez que
llega una petición, se fija su lugar dentro de la cola de espera. Una petición,
se fija su lugar dentro de la cola de espera. Una petición no puede ser
desplazada por la llegada de otra con prioridad más alta.
La FCFS es aceptable cuando la carga en un disco es ligera. Pero
a medida que crece la carga, la FCFS tiende a saturar el dispositivo y los
tiempos de respuesta se incrementan. La FCFS ofrece una varianza pequeña, pero
tiene tiempos de espera muy grandes.
Planificación SSTF
Parece razonable atender todas las solicitudes cercanas a la
posición actual de la cabeza antes de mover la cabeza a una posición lejana
para atender otras solicitudes. Este supuesto es la base del algoritmo de tiempo
de búsqueda más corto primero (SSTF, shortest-seek-time-first), que
selecciona la solicitud que tiene el menor tiempo de búsqueda a partir de la
posición actual de la cabeza.
En esta política la petición que da por resultado la distancia
de búsqueda más corta (y, con esto, el tiempo de búsqueda más corto) es la
siguiente en ser servida, aunque esa petición no sea la primera en la cola.
Los patrones de búsqueda SSTF tienden a estar muy relocalizados,
dando como resultado que las pistas internas y externas reciban un servicio
pobre, en comparación con las pistas del centro. La SSTF es útil en sistemas de
procesamiento por lotes, en los cuales la capacidad de ejecución es lo más
importante. Pero la alta varianza de los tiempos de respuesta (es decir, su falta
de predecibilidad) lo hace inaceptable para los sistemas interactivos.
Este algoritmo mejora sustancialmente el desempeño.
La planificación SSTF es en esencia una forma de planificación
de trabajo más corto primero (SJF) y, al igual que la
planificación SFJ, puede cause inanición de algunas solicitudes.
Aunque el algoritmo SSTF representa una mejora sustancial
respecto al algoritmo FCFS, no es óptimo.
Planificación SCAN
En el algoritmo SCAN, el brazo del disco parte de un extremo del
disco y se mueve hacia el otro, atendiendo las solicitudes a medida que llega a
cada cilindro, hasta llegar al otro extremo del disco. Ahí, la dirección de
movimiento de la cabeza se invierte, y continúa la atención. La cabeza barre continuamente el disco de un lado a
otro.
Esta política, desarrollada por Denning, opera como SSTF,
excepto que selecciona la petición que da como resultado la distancia de
búsqueda más corto en una dirección seleccionada. La SCAN no cambia de
dirección hasta que ha alcanzado el cilindro exterior o hasta que ya NO haya
peticiones pendientes en la dirección con preferencia.
La SCAN se comporta de manera parecida al SSTF desde el punto de
vista de la mejora en la capacidad de ejecución y de la media de los tiempos de
respuesta, pero elimina mucha de la discriminación inherente a los esquemas SSTF y ofrece una
varianza menor.
El algoritmo SCAN también se conoce como algoritmo de
elevador, ya que el brazo del disco se comporta igual que el elevador
de un edificio, que atiende primero todas las solicitudes para subir y luego
cambia de dirección para atender las solicitudes de abajo.
Planificación SCAN de n-pasos
En esta estrategia, el brazo del disco se mueve de un lado a
otro como en SCAN, pero sólo da servicio a aquellas peticiones que se
encuentran en espera cuando comienza un recorrido particular. Las peticiones
que llegan durante un recorrido son agrupadas y ordenadas para un servicio
óptimo durante el recorrido de regreso.
La SCAN de n-pasos ofrece un buen rendimiento de la capacidad de
ejecución y de la media de los tiempos de respuesta. Su característica más
significativa es una menor varianza de los tiempos de respuesta que las
planeaciones SSTF y SCAN convencionales. La SCAN de n-pasos evita la
posibilidad de postergación indefinida que tiene lugar si un gran número de
peticiones que llegan al cilindro que está siendo servido y guarda estas
peticiones para ser servidas durante el recorrido de regreso.
Planificación C-SCAN
La planificación SCAN circular (C-SCAN) es una variante de SCAN
diseñada para dar un tiempo de espera más uniforme. Al igual que SCAN, C-SCAN
mueve la cabeza de un extremo del disco al otro, atendiendo las solicitudes en
el camino, sólo que ahora, cuando la cabeza llega al otro extremo, regresa de
inmediato al principio del disco sin atender solicitudes.
El algoritmo de planificación C-SCAN básicamente trata los
cilindros como una lista circular que continúa del último cilindro al primero.
En la estrategia C-SCAN, el brazo se mueve del cilindro exterior
al interior, sirviendo a las peticiones con menor tiempo de búsqueda. Cuando el
brazo ha completado su recorrido hacia adentro, salta a la petición más cercana
al cilindro exterior y a continuación reanuda su recorrido hacia adentro
procesando peticiones.
La C-SCAN puede implementarse de forma que las peticiones que
llegan durante un recorrido sean servidos en el siguiente. De esta forma C-SCAN
elimina completamente la discriminación contra las peticiones para los cilindros
exterior e interior. Tiene una varianza de los tiempos de respuesta muy
pequeña.
Algoritmos de planificador de procesos
Los algoritmos de planificación se encargan de gestionar el tiempo disponible del microprocesador entre todos los procesos listos para su ejecución. Estos algoritmos pueden usar prioridades, en cuyo caso a cada proceso se le asigna una prioridad y los procesos de mayor prioridad tendrán preferencia sobre los de menos. La prioridad de un proceso se puede modificar a lo largo de su vida, para evitar que un proceso de baja prioridad nunca llegue a ejecutarse ya que los de alta prioridad monopolizan el procesador.
Existen dos tipos de algoritmos de planificación, expropiativos y no expropiativos. Los expropiativos asignan un tiempo de ejecución a cada proceso después del cual se planifica otro proceso, hasta que cada proceso acabe su trabajo. También pueden expulsar a un proceso en ejecución si llega otro de mayor prioridad que necesita ejecutarse. Los no expropiativos permiten que se ejecute el proceso hasta que acabe su trabajo. Es decir, una vez les llega el turno de ejecutarse, no dejarán libre la CPU hasta que terminen o se bloqueen.
FCFS, SJF, SRTF, ROUND ROBIN
1.- En qué consisten
FCFS o también conocido como FIFO (First In, First Out) es un algoritmo no expropiativo con una planificación de servicio por orden de llegada.
SJF (Shortest Job First) seleccionará el proceso que requiera menor tiempo de ejecución (si dos tienen el mismo tiempo se decide por FIFO). Se trata de un algoritmo no expropiativo y es un caso especial de planificación por prioridad.
SRTF (Shortest Remaining Time First) es la variante expropiativa del algoritmo SJF, en la que el proceso en CPU es desalojado si llega a la cola un proceso con duración más corta. En el caso que tengamos un proceso que requiera un tiempo de ejecución para finalizar igual que un proceso nuevo que entra existen dos soluciones: dar prioridad a los procesos nuevos sobre los procesos en ejecución o dar prioridad a los procesos en ejecución sobre los procesos nuevos.
Round Robin se comporta como FCFS pero cada proceso dispone de un quantum (unidad de tiempo de CPU) de tiempo máximo, de tal forma que a cada proceso se le asigna un quantum de forma secuencial. La selección de entre los procesos activos se gestiona según una cola FIFO o lo que es lo mismo se elije el que más tiempo lleve esperando. Si llega un proceso nuevo y hay otro en ejecución, los ciclos de CPU se distribuyen entre ambos pero se ejecuta un ciclo de CPU para el proceso en ejecución e inmediatamente se le asigna un ciclo al recién llegado. Por tanto, este algoritmo es expropiativo y no emplea prioridades.
Puntos fuertes y débiles y comparativa
FCFS es el algoritmo más simple y fácil de implementar, apto para multitarea cooperativa. En contra, los tiempos de espera son bastante largos (procesos largos pueden monopolizar la CPU durante mucho tiempo generando tiempos de espera mayores de los que serían deseables).
SJF minimiza el tiempo de espera medio y favorece a los procesos cortos. El problema puede aparecer con procesos muy largos que están siempre bloqueados por procesos más cortos (riesgo de inanición).
SRTF optimiza la media del tiempo de espera respecto SJF (mantiene mejores promedios porque los procesos cortos salen antes de la ronda), pero acarrea los mismos problemas y sumando la dificultad de predecir la duración de la siguiente ráfaga de CPU.
Round Robin es adecuado para implementar tiempo compartido. Hay que adecuar el quantum: si es muy grande (más grande que el mayor tiempo de CPU de los procesos), el algoritmo Round Robin se convierte en FCFS ya que los procesos terminan sus ráfagas de CPU antes de que termine el cuanto y si es muy pequeño se provocarían constantemente cambios de contexto, disminuyendo el rendimiento.
Bloque de control del proceso
El bloque de control del proceso (BCP) o en inglés PCB (Process Control Block) es un registro especial donde el sistema operativo agrupa toda la información que necesita conocer respecto a un proceso particular. Cada vez que se crea un proceso el sistema operativo crea el BCP correspondiente para que sirva como descripción en tiempo de ejecución durante toda la vida del proceso.
Cuando el proceso termina, su BCP es borrado y el registro puede ser utilizado para otros procesos. Un proceso resulta conocido para el sistema operativo y por tanto elegible para competir por los recursos del sistema sólo cuando existe un BCP activo asociado a él. El bloque de control de proceso es una estructura de datos con campos para registrar los diferentes aspectos de la ejecución del proceso y de la utilización de recursos. La información almacenada en un BCP incluye típicamente algunos o todos los campos siguientes:
- Identificador de proceso (Process Identificator -PID-, de sus siglas en inglés).
- Estado del proceso. Por ej: listo, en espera, bloqueado.
- Contador de programa: dirección de la próxima instrucción a ejecutar.
- Valores de registro de CPU. Se utilizan también en el cambio de contexto.
- Espacio de direcciones de memoria.
- Prioridad en caso de utilizarse dicho algoritmo para planificación de CPU.
- Lista de recursos asignados (incluyendo descriptores de archivos y sockets abiertos).
- Estadísticas del proceso.
- Datos del propietario (owner).
- Permisos asignados.
- Señales (Signals) pendientes de ser servidas. (Almacenados en un mapa de bits).
Esta lista es simplemente indicativa, cada sistema operativo tiene su propio diseño de BCP, con el conjunto de metadatos necesarios para la administración. Puede medir desde 32 bits a 1024. Su denominación cambia según el sistema operativo, por ej. en IBM se designa PSW por palabra de estado de proceso. Difiere significativamente entre los sistemas de procesamiento por lotes (BATCH) y los sistemas interactivos.
Algunos sistemas de multiprogramación incluyen información de mantenimiento con el propósito de facturar a los usuarios individuales el tiempo de procesador, el almacenamiento, las operaciones de E/S y otras utilizaciones de recursos.
Una vez creado, el BCP se rellena con los atributos definidos como parámetros que se hallan en la plantilla del proceso o que son especificados como parámetros de la llamada al sistema operativo crear_proceso. En ese momento el sistema operativo suele asignar valores a otros campos. Por ejemplo, cuando se crea un proceso, los registros e indicadores hardware se fijan a los valores proporcionados por el cargador/enlazador. Cada vez que un proceso queda suspendido, el contenido de los registros del procesador es generalmente guardado en la pila, y el puntero al marco de la pila en cuestión se almacena en el BCP. De este modo los valores de los registros son restaurados cuando el proceso es seleccionado para ejecutarse nuevamente.
Diseño de memoria cache
La memoria caché es una memoria de tamaño reducido, de alta
velocidad, que se coloca entre la memoria principal y la CPU. Utilizando el
principio de localidad mantiene copias de los bloques de memoria principal más
accedidos, de manera que cuando la CPU requiere una palabra que está en uno de
los bloques almacenados en la memoria caché, el requerimiento es satisfecho
desde la memoria caché, con un tiempo de acceso mucho menor que si debiera ser
satisfecho desde la memoria principal.
Desde la memoria cache se accede a la memoria principal en
bloques de k palabras (normalmente k > 1). Cuando un bloque es leído desde
memoria se almacena en una línea de la cache. La lógica de funcionamiento de la
memoria cache es la que se esquematiza en el siguiente diagrama de flujo:
Diseño de la Cache
En el diseño de un sistema de memoria cache hay que tomar
una serie de decisiones sobre distintos aspectos que tienen impacto sobre su
rendimiento, entendido como el porcentaje de “hits” respecto al total de
accesos.
Tamaño
Uno de los elementos
a considerar es el tamaño de la memoria cache. Ya sabemos que la memoria
utilizada para este subsistema es un elemento comparativamente muy caro, por lo
que siempre deberemos lograr un compromiso entre la cantidad de memoria cache y
la cantidad de memoria principal.
Si bien el punto de equilibrio depende fuertemente del tipo
de programas que se ejecuten en el sistema, existirá una cierta cantidad de
memoria a partir de la cual el incremento del rendimiento obtenido no compensa
el costo adicional de agregar más memoria cache. Actualmente la memoria cache
se coloca en el propio “chip” del procesador, por lo cual también existe una
limitante adicional: la cantidad de transistores disponibles en el circuito
integrado es finita y compite con todos los demás sub-sistemas que deben ser
construidos.
El estado del arte actual de los procesadores comerciales
disponibles indican que se utilizan 3 niveles de cache: el L1 de unos 10KB a
20KB, el L2 de 128KB a 512 KB y el L3 de 4MB a 12MB. Si consideramos que una
computadora actual puede tener 4GB y más de memoria, vemos que la relación
entre el tamaño de la memoria principal y la cache (L3) es de 1000 a 1.
Función de Correspondencia (Mapping)
Este elemento de diseño determina como se asocia una cierta
posición de memoria con su posible ubicación en la memoria cache. La memoria
cache está formada por un cierto conjunto de líneas. En cada línea se puede
almacenar un bloque de memoria. Por tanto la función de correspondencia
establece para cada bloque de memoria cuales son las líneas posibles de ser
utilizadas en la cache para almacenarlo. La relación puede ser desde que
cualquier línea de la cache puede recibir a un bloque dado de memoria
(denominada correspondencia “completamente asociativa”) hasta que solo una
línea determinada puede recibir un bloque dado (denominada correspondencia
“directa”), pasando por que cierto conjunto de n líneas puede alojar un bloque
dado (es la correspondencia “asociativa por conjuntos de n vías”).
Algoritmo de Sustitución
Al momento que ocurre un “miss” es necesario traer un nuevo
bloque de la memoria principal a la cache. Para los casos en que hay más de un
lugar posible de colocación del bloque (casos de correspondencia “totalmente
asociativa” o “asociativa por conjuntos”) es necesario tener un algoritmo para
seleccionar cual de las líneas utilizar (y por tanto reemplazar su contenido en
caso que no haya lugares libres, lo que va a ser la situación habitual).
Política de Escritura
Hasta ahora hemos
analizado como se comporta la memoria cache en la operación de lectura, pero
también debemos analizar qué pasa cuando la CPU escribe en la memoria.
En las operaciones de escritura (write) existen dos grandes
estrategias write through y write back. La primera (write through) implica que,
de existir un hit, la operación de escritura se hace en la memoria cache y
también en la memoria principal. En la segunda en el caso del hit la escritura
se realiza solamente en la memoria cache.
Naturalmente la estrategia write back permite un mejor
desempeño del sistema en escritura, pero tiene la complejidad adicional de
determinar si es necesario actualizar la memoria principal con el contenido de
una línea de cahe que va a ser reemplazada como consecuencia de un miss, si es
que el bloque tuvo algún cambio desde que se trajo a la cache. También tiene la
tarea adicional de velar por la coherencia de la cache, aspecto que veremos más
adelante.
Tamaño del bloque
Un aspecto que debe analizarse es el tamaño del bloque (y
por tanto de la línea del cache). Para un tamaño de memoria cache dado, ¿qué
conviene más? ¿una línea más grande o más cantidad de líneas?. En el primer
caso por el principio de localidad la probabilidad de un hit luego de un miss
aumenta, pero se puede sufrir ante cambios de contexto en ambientes de
multiprogramación.
Intel® Core™ i7-9850HL Processor
Rendimiento
·
Cantidad de núcleos6
·
Cantidad de subprocesos12
·
Frecuencia básica del procesador1,90 GHz
·
Frecuencia turbo máxima4,10 GHz
·
Caché9 MB
·
Velocidad del bus8 GT/s DMI3
·
TDP25 W
·
Descenso de TDP configurable35 W
Especificaciones de
memoria
·
Tamaño de memoria máximo (depende del tipo de memoria)64 GB
·
Tipos de memoriaDDR4-2666
·
Cantidad máxima de canales de memoria2
·
Compatible con memoria ECC ‡No
Gráficos de procesador
·
Gráficos del procesador ‡Gráficos HD Intel® 630
·
Frecuencia de base de gráficos350 MHz
·
Frecuencia dinámica máxima de gráficos1.15 GHz
·
Memoria máxima de video de gráficos64 GB
·
Salida de gráficoseDP/DP/HDMI/DVI
·
Compatibilidad con 4KYes, at 60Hz
·
Resolución máxima (HDMI 1.4)‡4096x2160@30Hz
·
Resolución máxima (DP)‡4096x2304@60Hz
·
Resolución máxima (eDP - panel plano integrado)‡4096x2304@60Hz
·
Resolución máxima (VGA)‡N/A
·
Compatibilidad con DirectX*12
·
Compatibilidad con OpenGL*4.5
·
Intel® Quick Sync VideoSí
·
Tecnología Intel® InTru™ 3DSí
·
Tecnología Intel® de video nítido HDSí
·
Tecnología Intel® de video nítidoSí
·
Nº de pantallas admitidas ‡3
·
ID de dispositivo0x3E9B
Intel® Core™ i5-9600T
Processor
Rendimiento
·
Cantidad de núcleos6
·
Cantidad de subprocesos6
·
Frecuencia básica del procesador2,30 GHz
·
Frecuencia turbo máxima3,90 GHz
·
Caché9 MB SmartCache
·
Velocidad del bus8 GT/s DMI3
·
TDP35 W
·
Frecuencia de descenso de TDP configurable1.80 GHz
·
Descenso de TDP configurable25 W
Especificaciones de
memoria
·
Tamaño de memoria máximo (depende del tipo de memoria)128 GB
·
Tipos de memoriaDDR4-2666
·
Cantidad máxima de canales de memoria2
·
Máximo de ancho de banda de memoria41.6 GB/s
·
Compatible con memoria ECC ‡No
Gráficos de procesador
·
Gráficos del procesador ‡Gráficos HD Intel® 630
·
Frecuencia de base de gráficos350 MHz
·
Frecuencia dinámica máxima de gráficos1.15 GHz
·
Memoria máxima de video de gráficos64 GB
·
Compatibilidad con 4KYes, at 60Hz
·
Resolución máxima (HDMI 1.4)‡4096x2304@24Hz
·
Resolución máxima (DP)‡4096x2304@60Hz
·
Resolución máxima (eDP - panel plano integrado)‡4096x2304@60Hz
·
Compatibilidad con DirectX*12
·
Compatibilidad con OpenGL*4.5
·
Intel® Quick Sync VideoSí
·
Tecnología Intel® InTru™ 3DSí
·
Tecnología Intel® de video nítido HDSí
·
Tecnología Intel® de video nítidoSí
·
Nº de pantallas admitidas ‡3
Intel® Core™ i3-1000G4
Processor
Rendimiento
·
Cantidad de núcleos2
·
Cantidad de subprocesos4
·
Frecuencia básica del procesador1,10 GHz
·
Frecuencia turbo máxima3,20 GHz
·
Caché4 MB Intel® Smart Cache
·
Velocidad del bus4 GT/s
·
TDP9 W
·
Frecuencia de descenso de TDP configurable800 MHz
·
Descenso de TDP configurable8 W
Especificaciones de
memoria
·
Tamaño de memoria máximo (depende del tipo de memoria)32 GB
·
Tipos de memoriaLPDDR4-3733
·
Cantidad máxima de canales de memoria2
·
Máximo de ancho de banda de memoria58.3 GB/s
·
Compatible con memoria ECC ‡No
Gráficos de procesador
·
Gráficos del procesador ‡Intel® Iris® Plus Graphics
·
Frecuencia de base de gráficos300 MHz
·
Frecuencia dinámica máxima de gráficos900 MHz
·
Salida de gráficoseDP/DP/HDMI
·
Compatibilidad con 4KYes, at 120Hz
·
Resolución máxima (HDMI 1.4)‡4096 x 2304
·
Resolución máxima (DP)‡5120 x 3200
·
Resolución máxima (eDP - panel plano integrado)‡5120 x 3200
·
Compatibilidad con DirectX*12
·
Compatibilidad con OpenGL*4.5
·
Intel® Quick Sync VideoSí
·
Nº de pantallas admitidas ‡3
Cache multinivel
El uso de múltiples niveles
de caché es parcialmente un mecanismo para coordinar procesadores multi-núcleo
y parcialmente un compromiso entre precio y rendimiento.
En un procesador con
múltiples núcleos, cada núcleo tiene su propio caché L1. Esto permite al núcleo
leer y escribir desde y hacia la memoria caché sin preocuparse por interferir
con otros núcleos. Los núcleos necesitan almacenamiento compartido, sin
embargo, para que puedan intercambiar cierta información fácilmente. La caché
L2 es compartida por todos los núcleos, por lo que se utiliza como una especie
de espacio de almacenamiento común donde la información está disponible para
todos los subprocesos.
Cuadro sinoptico de Administrador de memoria
Estructura de datos de manejo de memoria
Todos los datos de una variable, arreglo y objetos en general tienen un tiempo
determinado en el transcurso del programa en el que se encuentran. Estos
datos son creados y destruidos para liberar espacio en la memoria y así otros
datos puedan ocupar ese espacio liberado.
Existen tres tipos de formas en la que se puede utilizar la memoria para
almacenar datos estos son:
a) Memoria estática
Esta tipo de memoria se crea al momento de ejecutarse el programa y crea
espacios de memorias fijos los cuales permanecen hasta finalizar el programa.
Esta memoria tiene un problema el cual es que desperdicia mucho espacio en
la memoria debido a que los espacios son fijos.
b) Memoria automática:
Es la utilizada por argumentos en una función y por las variables locales. Cada
entrada en la función crea estos objetos y son destruidos al salir de ella.
c) Memoria Dinámica:
Este tipo de memoria se crea al leer el programa y determinar el tamaño exacto
que necesita para cada programa y así crear un espacio perfecto para cada
uno de ellos el problema es al terminar un programa el espacio liberado muy
rara vez será el indicado para que un nuevo programa pueda ocupar su lugar
sin que se desperdicie espacio en la memoria.
Preguntas
1) Que ocurre detrás del escenario cuando tienen lugar la
reubicación y compactación de memoria?
Se denomina compresión o compactación de almacenamiento. Esta técnica
consiste en trasladar todas las áreas ocupadas del almacenamiento hacia
algún extremo de la memoria. Este Proceso es utilizado cuando se tiene una
memoria con partición variable en el que se tiene 5 procesos y digamos que el
3 termino su trabajo lo que hace el sistema operativo es coger el proceso 4 y el
5 hacia arriba para ocupar el lugar del 3 y así no tener huecos entre ellos,
aunque es tedioso para el sistema operativo porque a cada momento tiene que
mover los procesos. Su objetivo consiste en desplazar el contenido de la
Memoria libre en un sólo bloque de gran tamaño.
La compactación no siempre es posible, sólo es posible si la relocalización es
dinámica y se efectúa en el momento de la ejecución.
2) Que sigue la pista de cuán lejos se ha movido cada trabajo desde su
área de almacenamiento original?
El registro de reubicación
3) Que lista es necesaria actualizar?
La lista donde se encontraban los programas con particiones
Maquina Virtual
https://drive.google.com/open?id=1w-PD2-T4ZheUVZ3rr7QC43Q2bffhi5Q9
Asignacion 2.- Supercomputadoras
No hay comentarios.:
Publicar un comentario