Sistemas Operativos


Asignación A11 

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 Video
·         Tecnología Intel® InTru™ 3D
·         Tecnología Intel® de video nítido HD
·         Tecnología Intel® de video nítido
·         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 Video
·         Tecnología Intel® InTru™ 3D
·         Tecnología Intel® de video nítido HD
·         Tecnología Intel® de video nítido
·         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 Video
·         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 
https://drive.google.com/file/d/16r5FIFGA68HWKDQ3QBOjv-_J-lVUUkJH/view?usp=sharing


No hay comentarios.:

Publicar un comentario