Clase Práctica de Perifericos Gastón Aguilera Departamento de Computación, FCEyN, Universidad de Buenos Aires, Buenos Aires, Argentina
Que haremos hoy? Temas: Administración de E/S Asignación de Periféricos Qué es? Dónde se realiza? Tipos de Periféricos Planificación de E/S Estructura conceptual de un proceso y las E/S El buffer de E/S y la memoria virtual Las E/S y el estado bloqueado en espera Planificación de los pedidos El Concepto de SPOOLING para virtualizar dispositivos Que es el SPOOL? Tipos El SPOOL y Gráfico de Gantt Ejercicios sobre spooling Ejercicios sobre planificación de E/S
Administración de Periféricos Un periférico no es mas que un recurso del sistema operativo que debe ser administrado, como ocurre con el recurso procesador. A diferencia del procesador que es compartido por varios procesos de usuarios y de kernel, los recursos pueden resultar ser dedicados y por lo tanto no se puede compartir entre los procesos. Por lo tanto los periféricos o los recursos en general deben ser asignados a los procesos utilizando una politica de asignación, asignación total o parcial de recursos necesarios. Asignación al comienzo del trabajo Asignación al comienzo de una etapa Asignación al realizarse la apertura del recurso
Administración de Periféricos Los periféricos pueden ser: Dedicados: Periféricos que solo los puede tener asignado un proceso (ej. Impresora, w(cdrom)) Compartidos: Aquellos que soportan accesos de varios procesos (ej. Disco) Virtuales: Periféricos simulados por el sistema operativo (ej. SPool, RAM Disk,...) Los periféricos deben ser nombrados por el sistema operativo y tener una interfaz de acceso a los mismos (En linux los periféricos son tratados como archivos especiales, compartiendo las mismas funciones que los archivos comunes y algunas otras funciones) Nota: Hay que tener cuidado con la asignación de los recursos dedicados, ya que se pueden generar Deadlocks
Planificación de E/S El Proceso En el PCB del proceso debera estar representados los recursos asignados y la modalidad de uso de los mismos (R/W) Durante la ejecución del código el proceso puede hacer llamadas al s.o. READ/WRITE/OPEN/CLOSE sobre algunos recursos del sistema Algunas de dichas llamadas, necesitan indicar un buffer de memoria para dejar o tomar la información a tratar. P0 P1 char Buff[4096]; char Buff[20]= who am i? Open 3, /dev/sda, r Open 4, /dev/sda, w Procesa 10 ms Procesa 10 ms Read 3, Buff, 4096 Write 4, Buff, 10 Procesa 20 ms Procesa 10 ms Termina Close 4 - Termina
Los periféricos y la memoria del proceso Los buffers desde el punto de vista de un proceso no es mas que una variable o un espacio de memoria adquirido apuntado por un puntero Según lo visto en administracion de memoria, las direcciones utilizadas por el codigo de un proceso no son direcciones reales de memoria, sino una abstracción (Pagina:Offset). Los periféricos solo pueden acceder a la memoria real y por lo tanto no pueden referenciar a (Pagina:Offset), esto hace que los drivers realicen la conversión a memoria real y pasen dicha dirección a los periféricos para realizar la E/S. Otro tema importante es la existencia de DMA y por lo tanto los buffers se deben adecuar a las condiciones de direccionamiento de los DMA. Esto hace que muchos drivers generen buffers internos aptos para realizar operaciones con DMA.
El diagrama de transición y la administración de periféricos Según el tipo de asignacion de recursos que tenga el sistema operativo, puede suceder que distintos estados sean los involucrados Asignacion al Comienzo: El estado involucrado es ACOMENZAR. Alli se realiza la asignación de los periféricos. Asignacion en etapa: Es muy similar al siguiente. Asignacion al Open: El estado involucrado es BLOQUEADO subestado EN ESPERA DE ASIGNACION en caso que el Periférico sea dedicado y esté asignado a otro proceso. Según el tipo de acceso del recurso y si es compartido, puede ocurrir que lleguen muchos requerimientos de E/S, haciendo que se genere un estado BLOQUEADO EN USO DE RECURSO y otro BLOQUEADO EN ESPERA DE RECURSO. El estado BLOQUEADO EN USO DEL RECURSO, corresponde cuando el pedido de E/S del proceso esta llevandose a cabo y el otro estado, corresponde cuando el proceso hizo el pedido de E/S y el recurso esta atendiendo a otro u otros pedidos anteriores (multiplexación).
Planificación de los pedidos de E/S Los pedidos que lleguen a BLOQUEADOS EN ESPERA DEL RECURSO, pueden ser reordenados segun algun algoritmo de planificación, que tenga en cuenta las caracteristicas físicas del recurso en cuestión. La rutina del S.O. que lleva a cabo esta tarea se la denomina Scheduler I/O y pone los pedidos en la cola correspondiente al driver asociado a cada recurso. Los drivers son capaces de manejar un tipo de recurso y se instancia por cada recurso de dicho tipo. (MAYOR - MINOR NUMBER)
Poĺıticas de Planificación de los pedidos de E/S Las politicas del algoritmo de planificacion de E/S, son muy dependientes del hardware, por ejemplo: El disco puede utilizar la tecnica de CSCAN, que reordena los pedidos de tal forma que el brazo de las cabezas del disco cubra los pedidos como lo hace un ascensor. O utilizar el orden por posición angular del sector. O una planificación por deadline. O una FCFS
El Concepto de SPOOLING para virtualizar dispositivos El concepto de spool viene de la epoca de los viejos mainframes, la idea básica de mejorar los tiempos de lectura de datos por parte de los procesos (en esa epoca tarjetas perforadas), haciendo que las tarjetas sean cargadas en discos rigidos y redireccionado las lecturas del proceso a dichos discos. Con esto artilugio se logró mejorar los tiempos del ciclo LISTO-EJECUTANDO-BLOQUEADO POR LECTURA DE TARJETA, dado que no se tenía que obtener los datos desde la lectora de tarjeta (muy lenta). El mismo concepto se aplicó luego a las impresiones. El spool no solo permite mejorar el ciclo mencionado, sino que permite compartir periféricos dedicados, mediante la virtualización de periféricos permitiendo tener concurrencia de procesos que usan dicho periférico dedicado.
El SPOOL y Gráfico de Gantt El Spool es una rutina del sistema operativo que atrapa los pedidos por parte de los procesos al periférico dedicado y los deriva cuando es necesario al disco de spool o zona de spool. Funciones del usuario sobre el dispositivo simulado con spool: 1 Open : Genera el spool correspondiente para el proceso 2 Write : Escribe en el disco de spool, no en el dispositivo 3 Read : Lee del disco de spool, no desde el dispositivo 4 Close : Cierra el spool (No se elimina) P 3 - Un Proceso que usa la impresora char Linea[80]; Open Impresora Procesa 10 ms Write Impresora, Linea Procesa 20 ms Write Impresora, Linea Procesa 30 ms Termina
Diagrama de Gantt para el proceso P3 Tiempos tomando sola la actividad de spooling Realice el diagrama de Gantt sin tener spool sabiendo que grabar Linea en el periférico Impresora toma 10ms.
Planificación de E/S Ejercicios de SPool Sistema Se tiene un sistema con las siguientes características : a) una unica impresora de 2000 lin/minuto b) no existe reloj de intervalos c) la cola de listos se administra según FIFO Proceso A Proceso B 20 mseg y lee 1er registro de disco 10 mseg y lee 1er registro de disco 10 mseg y lee 2do registro de disco 10 mseg e imprime una ĺınea 10 mseg e imprime una ĺınea 10 mseg 10 mseg y termina termina 1 Se pide construir un diagrama de Gantt de estos procesos despreciando los tiempos de las rutinas del SO, y el tiempo de E/S de discos, según las siguientes condiciones: 1 no hay spooling de salida 2 hay spooling de salida
Planificación de E/S Ejercicios de Planificación de E/S Driver de Disco Suponga que tenemos una unidad de almacenamiento en discos con una cabeza movil. Existen 200 posiciones (pistas) desde donde la cabeza puede leer o grabar información (pistas 0-199). Sobre cada pista hay 8 registros (0-7). El disco realiza una revolución cada 8 ms. La cabeza es movida entre pistas adyacentes en 0,8 ms. La rutina que maneja el disco recibe la siguiente lista de solicitudes Pista 0 10 10 10 20 20 de lectura : Registro 2 2 3 5 4 3 1 Cuánto tiempo tardará en realizar los requerimientos de E/S en el orden recibido (FCFS)?. Suponga que la posición inicial de la cabeza es 0,0. 2 Cuál es el orden óptimo para satisfacer los requerimientos? Describa en palabras el algoritmo que utiliza.
Planificación de E/S Ejercicios de Planificación de E/S 3 Explique cómo cada uno de los siguientes puntos pueden ser usados en la rutina para optimizar los tiempos de E/S : 1 Una instrucción para tomar conocimiento de la posición actual de la cabeza sobre la pista. 2 Una instrucción que mueve la cabeza liberando al canal mientras la instrucción se complete. 3 Un tiempo de movimiento de cabeza entre pistas adyacentes de 0,2 ms. 4 Indique qué efectos espera obtener sobre el tiempo de respuesta del disco si: 1 Agrega más cabezas. 2 Agrega una 2da cabeza en el lado opuesto del disco.