710 likes | 1.2k Views
ENTRADA Y SALIDA. CURSO DE SISTEMAS OPERATIVOS. CONTENIDO. Principios del hardware de E/S Principios del software de E/S Estancamientos Panorama general de la e/s en MINIX Discos de RAM Discos Relojes Terminales. Principios del hardware de E/S.
E N D
ENTRADA Y SALIDA CURSO DE SISTEMAS OPERATIVOS
CONTENIDO • Principios del hardware de E/S • Principios del software de E/S • Estancamientos • Panorama general de la e/s en MINIX • Discos de RAM • Discos • Relojes • Terminales
Principios del hardware de E/S Entenderemos por hardware de E/S como la programación de los dispositivos de entrada y salida. Los dispositivos de E/S se dividen en dos categorías: dispositivos de bloque y dispositivos de caracteres. Los dispositivos de bloque transfieren la información en bloques direccionables de tamaño fijo. Los dispositivos de caracteres aceptan o entregan un flujo de caracteres sin importar la estructura.
Controladores de dispositivo Los dispositivos constan de una parte mecánica y otra electrónica. A la parte electrónica se le llama controlador o manejador del dispositivo. El sistema operativo trata generalmente con el controlador.
Continuación El trabajo del controlador es convertir un flujo de bits en serie en un bloque de bytes y realizar cualquier corrección de errores que se necesite. Controladores de E/S Direcciones de E/S Vector de int. Reloj 040-043 8 Teclado 060-063 9 RS232 secundaria 2F8-2FF 11 Disco duro 320-32F 13 Impresora 378-37F 15 Despliegue mono. 3B8-3BF - Despliegue de color 3D0-3DF - Disco flexible 3F0-3F7 14 RS232 primaria 3F8-3FF 12
Acceso directo a memoria DMA El acceso directo a memoria se requiere para liberar a la CPU en la transferencia de bloque de información de o hacia la memoria. La CPU debe especificarle al controlador de DMA la dirección de la memoria donde se dirige el bloque y el número de bytes a transferir.
Intercalación (a) Sin intercalación. (b) Intercalación sencilla. (c) Doble intercalación.
Principios del software de E/S Un concepto importante es el de independencia del dispositivo. Esto quiere decir que los archivos deben utilizarse de la misma manera independientemente de si están en un disco duro o en un disco flexible.
continuación Otro aspecto importante es el de nominación, esto es, los archivos y dispositivos deben reconocerse con nombres que no dependan del dispositivo en ninguna manera, como en UNIX. Por otro lado el manejo de errores debe hacerse en los estratos más bajo. Y solo se deberá informar a los estratos superiores si el estrato bajo no puede manejarlo.
Clasificación de dispositivos Los dispositivos se clasifican en compartibles y dedicados. Los compartibles son como los discos, varios usuarios pueden hacer uso de ellos al mismo tiempo sin crear conflictos. Los dedicados como las impresoras, solo aceptan un usuario a la vez.
Estratos del software de E/S 1. Manejadores de interrupciones 2. Manejadores de dispositivos 3. Software del sistema operativo independiente del dispositivo 4. Software a nivel del usuario
Manejadores de interrupciones Las interrupciones son indeseables, una forma de ocultarlas es bloquear los procesos de E/S siempre que ocurra un comando de E/S y se espere una interrupción. Al recibir la interrupción, el procedimiento de interrupciones desbloquea al manejador mediante un semáforo o mediante señales.
Manejadores de dispositivos En términos generales, el trabajo de un manejador de dispositivo consiste en aceptar solicitudes abstractas del software independiente del dispositivo que está sobre él y observar que se cumpla la requisición. Después de que la operación se ha completado debe verificar si hubo errores. Si todo está bien, el manejador puede hacer que pasen los datos al software independiente del dispositivo.
Software del sist. Oper. Indep.del dispositivo La función básica del software independiente del dispositivo consiste en ejecutar las funciones de E/S que son comunes a todos los dispositivos y proporcionar una interfaz uniforme al software a nivel del usuario.
Funciones Sincronización uniforme de los manejadores de dispositivos Nominación de dispositivos Protección de los dispositivos Proporción de un tamaño de bloque independiente del dispositivo Separación Asignación del almacenamiento en dispositivo de bloque Asignación y devolución de dispositivos dedicados Informe de errores
Software a nivel del usuario Las llamadas al sistema, entre ellas las llamadas al sistema se E/S, normalmente son realizadas por procedimientos de biblioteca. Estos procedimientos hacen un poco más que colocar sus parámetros en el sitio adecuado para la llamada al sistema.
continuación Otro software a nivel de usuario es el manejo de la cola de impresión. La cola es controlada por un software llamado demonio impresor, el cual maneja un directorio especial llamado directorio de manejo de cola de impresión. Los demonios también se utilizan en la transferencia de archivos de un sistema a otro.
Estancamientos Supóngase que una computadora tiene una unidad de cinta y una graficadora. El proceso A solicita la cinta y B, la graficadora. Ahora A pide la graficadora (sin renunciar a la cinta) y B pide la cinta (sin renunciar a la graficadora), de manera que ambos procesos se bloquean indefinidamente. A esta situación se le llama estancamiento.
Condiciones de estancamiento 1. Condición de exclusión mutua. Cada recurso se asigna por lo regular exactamente a un proceso o bien esta disponible. 2. Condición de contención y espera. Los procesos que regularmente contienen recursos otorgados antes pueden solicitar nuevos recursos. 3. Condición de sin prioridad. Los recursos previamente otorgados no pueden extraerse por la fuerza de un proceso. Deben ser liberados en forma explícita por el proceso que lo contiene. 4. Condición de espera circular. Debe haber una cadena circular de dos o más procesos, cada uno de los cuales esté esperando un recurso contenido en el siguiente miembro de la cadena.
Estrategias para trabajar con los estancamientos 1. Simplemente se ignora el problema por completo. 2. Detección y recuperación. 3. Prevención, anulando una de las cuatro condiciones necesarias. 4. Evitación dinámica por medio de una distribución cuidadosa de los recursos.
Algoritmo del avestruz En unix simplemente se ignora el problema. Hay que tomar en cuenta que se pueden producir estancamientos por causas como: número limitado de ranuras para procesos (la llamada fork podría fracasar), el número máximo de archivos abiertos por el tamaño de la tabla de nodos i, el espacio para intercambio (swap) limitado, etc
Detección y recuperación Esta técnica consiste en eliminar los ciclos cuando estos se produzcan, esto se hace eliminando un proceso si se produce un ciclo al concederle un recurso.
Prevención del estancamiento Esta técnica consiste en garantizar que nunca se produzcan las cuatro condiciones para conducir al estancamiento. Esto se hace, por ejemplo, con el demonio impresor, ya que es el único capacitado para solicitar la impresora teniendo, por tanto, exclusión mutua.
Métodos para la prevención de estancamientos Condición Método Exclusión mutua Todo se maneja por cola de impresión Contención y espera Inicialmente se piden todos los recursos No hay prioridad Se retiran los recursos Espera circular Los recursos se ordenan numéricamente
Algoritmo del banquero El banquero sabe que no todos los clientes necesitarán su límite de crédito máximo de inmediato, en esta analogía los clientes son procesos, las unidades son, por ejemplo, unidades de cinta y el banquero es el sistema operativo.
Trayectoria de recursos En la se aprecia un modelo para trabajar con dos procesos y dos recursos, una graficadora y una impresora. El eje horizontal representa el número de instrucciones ejecutadas por el proceso A. El eje vertical denota el número de instrucciones ejecutadas por el proceso B, en I1 A solicita la impresora; en I2 necesita una graficadora. La primera la devuelve en I3 y la segunda en I4. El proceso B necesita la graficadora de I5 a I7 y la impresora de I6 a I8.
El algoritmo del banquero para múltiples recursos El algoritmo para verificar si un estado es seguro es: 1. Búsquese un renglón, R, cuyo recurso no satisfecho necesite todos los menores que A. Si no existe tal renglón, el sistema se estanca porque no ningún proceso puede ejecutarse hasta terminar. 2. Supóngase que el procesos del renglón elegido solicita todos los recursos que necesita (lo que garantiza que es posible) y termina. Márquese este proceso como terminado y súmese todos sus recursos al vector A. 3. Repítase los pasos 1 y 2 hasta que todos los procesos se marquen terminados, en cuyo caso el estado inicial era seguro, o bien hasta que ocurra un estancamiento, en cuyo caso era riesgoso.
Panorama general de la e/s en MINIX Manejadores de interrupciones en minix Muchos de los manejadores de dispositivos dan inicio a algún dispositivo de E/S y después se bloquean, esperando la llegada de un mensaje. Otros no dan inicio a ningún dispositivo físico de E/S (por ejemplo, la lectura de un disco RAM) y no esperan un mensaje de un dispositivo de E/S.
Tarea de E/Sen MINIX message mess; /* buffer de mensajes */ io_task() { int r, caller; inicialize(); /* sólo se hace una vez, durante la inic. del sistema */ while (TRUE) { receive(ANY, &mess); /* espera una solicitud para trabajar */ caller = mess.m_source; /* proceso del cual provino el mensaje */ switch(mess.m_type) { /* maneja cada tipo de solicitud posible */ case READ: r = do_read(); break; case WRITE:r = do_write(); break; case OTHER:r = do_other(); break; default: r = ERROR; } mess.m_type = TASK_REPLY; mess.REP_STATUS = r; /* código del resultado */ send(caller, &mess); /* enviar mensaje de contestación al solicitante */ } }
Software de E/S en MINIX Software de E/S independiente del dispositivo El proceso del sistema de archivo de minix contiene todo el código de E/S independiente del dispositivo. Software de E/S a nivel de usuario Se dispone de procedimientos de biblioteca para hacer llamadas al sistema y para convertir de binario a ASCII y de ASCII a binario. Manejo del estancamiento Se ignora el problema por completo. El único sitio en que pueden ocurrir estancamientos es con los recursos compartidos implícitos, como las ranuras de la tabla de procesos, ranuras de la tablas de nodos i, etc.
Discos de RAM La idea que ostenta un disco de RAM es simple. Un dispositivo de bloque es un medio de almacenamiento con dos comandos: la escritura de un bloque y la lectura de un bloque. Al colocar el directorio raíz en al disco RAM, el único disco flexible puede montarse y desmontarse a voluntad, permitiendo que haya medios removibles. Al tener el dispositivo raíz en el disco de RAM el sistema se vuelve altamente flexible: cualquier combinación de discos flexibles y duros puede montarse en él.
Manejador del disco de RAM en minix /dev/ram, es un disco de RAM verdadero. Los dos dispositivos menores que siguen se utilizan para leer y escribir memoria física y la memoria del kernel, respectivamente. Cuando /dev/mem se abre y se lee, produce el contenido de las localidades de memoria física que comienzan en 0 absoluto (vectores de interrupción). El archivo especial /dev/kmem es como /dev/mem, salvo que el byte 0 de este archivo es el byte 0 de la memoria del kernel (dirección física 0x600 o bien 1536 decimal en minix). El último archivo de este grupo, /dev/null, es un archivo especial que acepta datos y los desecha. Se utiliza comúnmente en comandos del shell cuando el programa solicitado genere una salida que no se necesita.
Hardware del disco Todos los discos reales están organizados en cilindros, donde cada uno contiene tantas pistas como haya cabezas apiladas verticalmente. Las pistas se dividen en sectores, donde el número de sectores en torno a la circunferencia en comúnmente de 8 a 32. Todos los sectores contienen el mismo número de bytes. Los parámetros de un disco flexible de la IBM PC se muestran en la tabla siguiente. Número de cilindros 40 Tiempo de localización (cilindros adyacentes) 6ms Pistas por cilindro 2 Tiempo de localización (caso promedio) 77ms Sectores por pista 9 Tiempo de rotación 200ms Sectores por disquete 720 Tiempo de arranque/detención del motor 250ms Bytes por sector 512 Tiempo para transferir un sector 22ms Bytes por disquete 368640
Manejo de errores Algunos de los más comunes son: 1. Error de programación (por ejemplo, solicitud de un sector no existente). 2. Error transitorio de la suma de verificación (por ejemplo, ocasionado por polvo en la cabeza). 3. Error permanente de la suma de verificación (por ejemplo, bloque del disco físicamente dañado). 4. Error de localización (por ejemplo, el brazo se envió al cilindro 6 pero se fue al 7). 5. Error del controlador (por ejemplo, el controlador se niega a aceptar comandos).
manejador del disco flexible en MINIX Procedimientos principales que forman el manejador del disco flexible.
Relojes Los relojes controlan la hora del día y evitan que algún proceso monopolice a la CPU, entre otras cosas.
Software del reloj Las funciones del manejador de reloj son, entre otras: 1. Conservación de la hora del día. 2. Prevención de que los procesos se ejecuten más tiempo del que tienen autorizados. 3. Conteo para uso de la CPU. 4. Manejo de la llamada al sistema alarm que hacen los procesos de los usuarios. 5. Provisión de cronómetros guardianes para cuidar partes del sistema en sí. 6. Realización de perfiles, monitoreo y recolección de estadísticas.
Simulación de cronómetros múltiples con un solo reloj Es posible simular varios relojes con un solo reloj físico. Se puede utilizar una lista enlazada como en la figura 24. Cada captación de la lista indica cuántas pulsaciones del reloj después de la anterior se debe esperar antes de producir una señal. En este ejemplo, las señales están pendientes para 4203, 4207, 4213, 4215 y 4216.
Panorama del manejador del reloj en MINIX El manejador acepta cuatro tipos de mensajes como sigue: SET_ALARM permite a un proceso fijar un cronómetro que se agote en un número especificado de pulsaciones de reloj. También lo utilizan las tareas para los cronómetros guardianes. GET_TIME produce el tiempo real corriente con el número de segundos que han transcurrido desde el 1 de enero de 1970 a las 12:00 a.m. SET_TIME fija el tiempo real. CLOCK_TICK es el mensaje que se envía al manejador cuando ocurre una interrupción de reloj.
Terminales La tarea del manejador de la terminal es ocultar la diferencias entre las diferentes terminales, de manera que la parte independiente del dispositivo del sistema operativo y los programas de los usuarios no tengan que reescribirse para cada tipo de terminal.