Cap 7 EntradaSalida
Cap 7 EntradaSalida
Cap 7 EntradaSalida
ENTRADA/SALIDA
Introduccin Caracterizacin de los dispositivos de E/S Arquitectura del sistema de E/S Interfaz de aplicaciones Almacenamiento secundario Almacenamiento terciario El reloj El terminal La red Servicios de entrada/salida
Unidad principal (UCP, registros, memoria RAM, entrada/salida ( discos internos, red, ...))
7.1.
Introduccin
El corazn de una computadora lo constituye la UCP, que no servira de nada sin: Dispositivos de almacenamiento secundario (discos) y terciario (cintas y sistemas de archivo). Dispositivos perifricos, que le permitan interactuar con el usuario. Generalmente fuera de la computadora y conectados a ella. Teclados, ratones, tabletas digitalizadoras, cmaras... Tres grandes grupos: Perifricos. Comunicacin usuario UCP de entrada (ratn, teclado...) y salida (impresoras, pantalla...). Dispositivos de almacenamiento. Almacenamiento no voltil de datos y memoria. Almacenamiento secundario (discos) y terciario (cintas y sistemas de archivo). Dispositivos de comunicaciones. Mdems, tarjetas de red... Una caracterstica comn de los dispositivos de E/S es su lentitud frente a la UCP: Los ms rpidos tienen una velocidad de acceso del orden de milisegundos. Las aplicaciones son cada vez ms interactivas, ms E/S cuello de botella. Gran esfuerzo en desarrollar y optimizar todos los mecanismos de E/S. El sistema de E/S el la parte del SO que ofrece una visin lgica simplificada de los dispositivos E/S a otros componentes del SO (sistema de archivos) y al usuario.
El SO debe controlar los dispositivos de E/S para alcanzar los siguientes objetivos: Facilitar el manejo sencillo y fcil de los dispositivos perifricos. Optimizar la E/S del sistema, incrementando las prestaciones. Dispositivos virtuales, permiten conectar cualquier tipo de dispositivo fsico. Conexin de dispositivos nuevos de forma automtica tipo plug&play.
7.2.
Percepciones del sistema de E/S: Programador, caja negra que lee y escribe datos en dispositivos externos. Fabricantes, componentes electrnicos o electro-mecnicos. Diseadores de SO lugar intermedio: Nivel de detalle mayor que la funcionalidad del programador. Conocer la interfaz fsica de los dispositivos para optimizar el acceso.
7.2.1.
Elementos del modelo de un perifrico: Perifricos o dispositivos de E/S. Componente mecnicos, pticos... Controladores de dispositivos o unidades de E/S. Componente electrnico encargado del control y la transferencia de informacin. Los controladores son muy variados, casi tanto como los dispositivos de E/S. Esfuerzo importante de estandarizacin de los dispositivos: SCSI, IDE, USB... Programacin del controlador, interfaz de muy bajo nivel que proporciona acceso a los registros del controlador. Aspectos a considerar: Direccin de E/S, mediante puertos o registro en memoria. Unidad de transferencia. Dos modelos: caracteres o bloques Interaccin UCP-controlador. Conocer cundo finalizan las transferencias
7.2.2.
Modelo de dispositivos por puertos, clsico en las arquitecturas de Intel. A cada controlador se le asigna puerto, IRQ y vector de interrupcin. Operaciones de E/S mediante portin o portout con la direccin de puerto. Modelo tpico de los PCs.
Modelo proyectado en memoria, asigna un rango de direcciones de memoria No hay instrucciones especficas de E/S. Mapa nico de direcciones de memoria. Se reserva una zona de memoria fsica para asignar las direcciones de E/S.
CPU
Memoria
Controlador grfic o
Bus de expansin
7.2.3.
Dispositivos de bloque: Acceso a nivel de bloque de tamao conocido, secuencial o aleatorio Operaciones de localizacin Acceso posible a travs de ficheros proyectados en memoria Ejemplo: discos y cintas Dispositivos de carcter: Acceso a nivel de carcter Ejemplo: terminales e impresoras
7.2.4.
E/S programada La UCP analiza el estado del dispositivo, ejecuta la instruccin de E/S, extrae o enva datos entre la memoria y el controlador, espera mientras se realiza Consume mucha CPU Aplicacin: Hardware sin interrupciones Programas de control de canales de E/S
E/S mediante interrupciones La UCP enva la orden de E/S al controlador y no espera Se dedica a otras tareas hasta que llega una interrupcin del dispositivo El gestor de interrupciones recibe y maneja la interrupcin: Enmascarables para ignorar o retrasar interrupciones Vector de interrupcin, direcciones de las rutinas de atencin Algunas son NMI. Ejemplo: reset. Las rutinas de atencin suelen tener dos partes: La parte genrica: Captura la interrupcin. Salvaguarda de estado del procesador. Activa la rutina de manejo de la interrupcin (parte particular) Indica al planificador que debe poner lista para ejecutar la rutina particular. Desactivacin de la interrupcin. Restauracin del estado del procesador. Cesin de control (RETI). La parte particular: La proporciona el fabricante del hardware (driver especial) o del SO (general). Parte dependiente del dispositivo que no realiza la genrica. La parte genrica prepara el trabajo de la particular
7.2.5.
Contador
DMA Evita la E/S programada de grandes bloques de datos Transfiere los datos directamente entre los dispositivos de E/S y la memoria del usuario Memoria del ncleo Registro Necesita un canal DMA de datos Libera tiempo de UCP
Bus del sistema
Contador
Disco
Direc cin
P eticin DMA (contador, direc c in, d atos) Aceptacin DMA Interrupc in Opera cin (L/E)
Lgica de c ontrol
Controlador UCP
Otras mejoras de prestaciones: Canales de E/S con DMA - Gestin de varios dispositivos E/S en un canal - Almacenamiento en orden de instrucciones en memoria Caches de disco en los controladores - Lectura anticipada de datos (proximidad espacial) Solapamiento de bsquedas y transferencias - Controladores con varios dispositivos: SCSI - Mientras un dispositivo hace bsquedas(lento) otros hacen transferencias
7.3.
Organizada en capas con diferentes servicios y funcionalidades definidas que ocultan detalles a niveles superiores
Ges tor de B loques Gestor de Ca che Maneja dores de Dis pos itivos
(CD-ROM, cinta, disco, puerto, ... )
Interfaz del SO Software independiente de dispositivo Manejadores de dispositivos o drivers Manejadores de interrupcin
Servicios
SW de E/S independiente d e dispositivo
Gestor de archivos Gestor de bloques Gestor de cache Manejador de dispositivo Manejador de interrupcin
Copia en el controlador Copia en el sistema operativo
Software Hardware
Controlador
Dispositivo (disco)
Manejadores (drivers) de dispositivo Parte independiente de dispositivo. Interfaz de alto nivel a la capa superior Dependiente de dispositivo Mantienen listas de peticiones pendientes Diferentes polticas de extraccin de peticiones: FIFO, prioridades. En general realizan espera pasiva, salvo dispositivos en memoria como las tarjetas grficas o discos RAM
Peticiones de E/S del dispositivo
Contestacin a la peticin
Esperar interrupcin
Software E/S independiente de dispositivo Sistema de archivos y el de gestin de red, el gestor de bloques, la cach de bloques y una parte de los manejadores de dispositivo. Objetivo: ejecutar las funciones de E/S comunes a todos los dispositivos a travs de una interfaz uniforme. Aspectos: Tamao de acceso: Bloque tamao comn en el sistema de archivos Almacenamiento intermedio (cach de bloques) Evitar accesos a dispositivo Ocultar diferencias de velocidad de dispositivos Facilitar la comparticin Gestin de dispositivos (nombrado, proteccin y acceso) Planificacin de E/S (colas de peticiones, con diferentes polticas) Gestin de errores (resolucin por niveles)
7.4.
Interfaz de aplicaciones
Mediante: Llamadas al sistema (ioctl por ejemplo) Mediante bibliotecas del lenguaje (fread, fwrite, printf) Demonios de dispositivos (lpr al spooler o telnet al demonio de red inetd)
Decisiones del SO que determina el comportamiento de la interfaz: Nombres independientes de dispositivo. E/S bloqueante y no bloqueante. Control de acceso a dispositivos compartidos y dedicados. Indicaciones de error. Uso de estndares. Nombres independientes de dispositivo. En Windows hay que escribir el nombre del dispositivo al que se accede (C:, D:) UNIX con el mount, permite crear rboles de directorios sin conocer el soporte fsico E/S bloqueante y no bloqueante. Bloqueante o sncrona: procesos suspendidos hasta que la E/S termina Fcil de usar y comprender Ejemplo: read, write de POSIX
P roc es o
Op erac in d e E /S
B ibliotec a
L lam ad a de E /S Op erac in d e E /S
R egistro d e op. E /S
B liotec a ib
L lam ad a de E /S
P rog ra m a c in d e E /S
P roc eso
P rog ram a c in d e E /S
P ce o N b q e d r o s O lo u a o
P ce o b q e d r o s lo u a o
interrup c in
T ta m iento interrup c in ra Contesta c in de E /S
interrupc in
T rata m iento interrup c in Conte stac in d e E /S
P roc eso
in Op. de E ? F /S
B liotec a ib
F Op. d e E in /S
B ibliotec a
L lam ad a de E /S
R egistro d e op. E /S
R etorno de L lam ad a E /S
P roc eso
(A) E bloqueante /S
(B E no b loqueante ) /S
No bloqueante o asncrona: la llamada de E/S vuelve inmediatamente Interfaz de usuario ms complejo y espacio para copia de datos Llamadas aioread, aiowrite de POSIX Vuelve rpidamente con el estado de la operacin Los procesos ejecutan mientras la E/S se lleva a cabo Difcil de programar por operaciones pendientes El sistema de E/S seala el fin de operacin pendiente El programa debe comprobar estado y esperar (aiowait, aiocancel) El SO procesa internamente las E/S en modo no bloqueante, con independencia del formato elegido por el programador, para permitir el tiempo compartido
Control de acceso a dispositivos compartidos y dedicados. Coordinar los accesos para evitar por ejemplo mezclar dos salidas a la impresora. Se usan dos tipos de mecanismos: Mandatos externos (lpr para la impresora) o demonios que se encargan de imponer restricciones de acceso cuando es necesario. Llamadas al sistema para bloquear (lock) y desbloquear (unlock) el acceso a un dispositivo o a parte de l. La seguridad es un aspecto importante del control de accesos: No basta con que se resuelvan los conflictos de acceso Hay que asegurar que el usuario que accede al sistema de E/S tiene derechos Indicaciones de error. -1 en POSIX + variable errno Win32 otra codificacin + funcin GetLastError() Uso de estndares. Caso de POSIX, facilita la portabilidad entre sistemas
7.5.
Almacenamiento secundario
Utilizado para guardar los programas y datos en dispositivos rpidos, de forma que sean fcilmente accesibles a las aplicaciones a travs del sistema de archivos. Jerrquicamente, debajo de la memoria RAM.
Interfaz de llamadas al sistema Sistema de ficheros virtual Sistema de ficheros Cach de pginas de memoria Controlador del dispositivo [alto nivel] Cach de bloques
Gestor de peticiones a los discos Planificador de los discos Controlador de dispositivos [bajo nivel]
El almacenamiento secundario se lleva a cabo casi exclusivamente sobre discos Los Manejadores de disco controlan las operaciones sobre ellos, especialmente la planificacin de peticiones a disco.
7.5.1.
Discos
Almacenamiento masivo y no voltil de datos. Plataforma para el sistema de intercambio que usa el gestor de memoria virtual. Electro/opto/magneto/mecnicos, se acceden a nivel de bloque lgico. Las estructuras fsica y lgica de todos los discos son muy similares Dos tipos bsicos, atendiendo a la interfaz de su controlador: SCSI e IDE
Estructura fsica de los discos Compuesto por discos ferromagnticos y cabezas lectoras electromagnticas. Las superficies estn divididas en cilindros, con una pista para cada cabeza y un cierto nmero de sectores por pista. El tamao del sector es 512 bytes.
S EAGAT Barracuda AT II S 330630A E A T P armetro Valor
Capac idad: Cilindros: Cabezas: Sec tores: Veloc idad: T Bsqueda: . Latenc ia: Memoria:
10.2 GB 1023 256 83 7200 RPM 8,5 m seg. 4,16 m seg 2 Mbytes
Capacidad = cilindros * cabezas * sectores * tamao sector T acceso = T bsqueda + T latencia + T transferencia Caractersticas. Densidad de cada pista: El nmero de sectores vara de unas pistas a otras. Intercalado de sectores: Orden de los sectores para acelerar operaciones. Almacenamiento intermedio en el controlador: Cach track a time en disquetes. Controladores inteligentes: Operaciones de bsqueda de forma solapada con diferentes dispositivos. Estructura lgica de los discos Se manejan como vectores grandes de bloques lgicos, siendo el bloque la unidad mnima de transferencia. El manejador de disco no sabe nada de la organizacin de los ficheros, slo de particiones y bloques. El vector de bloques lgicos se proyecta sobre los sectores del disco: Sector 0: primer sector de la primera pista del cilindro ms externo En el sector 0 se guarda la tabla de particiones. El mapa se hace primero en esa pista, luego en las restantes pistas de ese cilindro y luego en los restantes cilindros
Particiones activas o de sistema: permiten arrancar desde un sistema operativo. Para facilitar el uso de una particin de una u otra forma, la utilidad fdisk, format o mkfs, permite crear dos imgenes asociadas a cada particin: Dispositivo de bloques. Todos los accesos al mismo pasan por el sistema de archivos y la cach de bloques. Dispositivo de caracteres. Permite acceder a bloques de la particin directamente. Las peticiones deben ser forzosamente mltiplo del tamao de bloque Deben estar alineadas al principio de un bloque. En la operacin de formato lgico de los discos hay tres tareas fundamentales: Construccin del bloque de carga. Incluye el programa de arranque del computador. El cargador incluye solo la iniciacin del hardware bsica Carga el SO en una direccin de la memoria. Salta a dicha direccin y se arranca el sistema operativo. Creacin de una lista de bloques defectuosos. Incluye los bloques en mal estado. Se marcan siempre como ocupados y no se liberan nunca. Un bloque es defectuoso porque algn sectores lo es Se sabe por la paridad del sector ECC. Creacin de una lista de bloques de repuesto. Por si algn bloque del dispositivo falla en vida.
7.5.2.
El manejador de disco
Principales funciones: 1. Atender peticiones de E/S de bloques. 2. Traduccin del formato lgico a mandatos del controlador. 3. Insertar la peticin en la cola del dispositivo, llevando a cabo la poltica de planificacin de disco pertinente (FCFS, SSF, SCAN, CSCAN, EDF, etc.). 4. Enviar los mandatos al controlador, programando la DMA. 5. Bloqueo en espera de la interrupcin de E/S. 6. Comprobacin del estado de la operacin cuando llega la interrupcin. 7. Gestionar los errores, si existen, y resolverlos si es posible. 8. Indicacin del estado de terminacin al nivel superior del sistema de E/S.
- El paso 1 se lleva a cabo en un manejador para la clase de dispositivo disco independiente del tipo de disco en particular, denominado manejador genrico. - El paso 2 se lleva a cabo en un manejador dependiente del dispositivo, denominado manejador particular. El manejador el tipo de dispositivo y el dispositivo en particular se distinguen porque en la peticin de E/S viene informacin que lo indica. En UNIX y LINUX major number y minor number - El paso 3 depende del diseo del manejador: Cola global para cada tipo de dispositivo Cola para dispositivo particular Ambas a la vez. Estructura de un manejador de disco Caso de Linux el manejador de dispositivos de bloque ofrece operaciones genricas como open, read, write, close. Accede a dos mdulos: Planificacin, implementa la poltica de atencin de peticiones Manejador de disco, selecciona segn los n mayor y menor de dispositivo
Planificador
Manejador de CD_ROM
Manejador de floppy
Planificacin del disco Objetivos: Aumentar el rendimiento bytes transferidos / tiempo de transferencia Dar un servicio determinista Minimizar el tiempo de bsqueda (proporcional a la distancia de bsqueda) Polticas: FCFS(first come first serve), SCAN(ascensor), CSCAN(cclica), SSF(shortest seek first), EDF(earliest deadline first), .
Ejemplos usando la cola de peticiones: 98, 183, 37, 122, 14, 124, 65, 67 Posicin inicial de las cabezas: 53 FCFS o FIFO
queue = 98, 183, 37, 122, 14, 124, 65, 67 head starts at 53 0 1 4 37 53 6567 98 122 124 183 199
0 1 4 37
SCAN o ascensor
queue = 98, 183, 37, 122, 14, 124, 65, 67 head starts at 53 53 6567 98 122 124 183 199
En sistemas monotarea y/o monousuario (MINIX) se utiliza FCFS El ms usado actualmente (UNIX, Linux y Windows) es CSCAN En SO-RT se utiliza SCAN-EDF o SCAN-RT Gestin de errores Errores transitorios Polvo en la superficie del disco, variaciones elctricas, fallos de calibracin, etc. El ECC los detecta y se resuelven repitiendo la operacin de E/S. Si no se resuelve el problema, superficie daada y lo comunica al nivel superior. Errores permanentes Errores de aplicacin: poco que hacer. Errores del controlador: tratar de reiniciar el controlador. Errores de superficie del dispositivo: sustituir el bloque por uno de repuesto.
7.5.3.
Discos en memoria
Tres tipos fundamentales: RAM Disk Gestin de una zona RAM como un disco. Operaciones convencionales de bloques: read, write... Memoria voltil. Discos slidos Placas con chips RAM con batera. En sistemas industriales con vibraciones o con golpes. Flash ROM Variacin de las anteriores sin batera. Diferentes formatos: Placas, smart card, memory stick...
7.5.4.
Perder el disco puede ser una prdida mayor a la del resto del sistema Tcnicas utilizadas: Cdigos correctores de error, como en las cabeceras y colas de los sectores. Operaciones read y write fiables (por duplicado), en discos espejo. Desperdicia el 50% de almacenamiento y ralentiza la operacin. WindowsNT lo gestiona bien. Redundancia hardware, conectar un disco a travs de dos controladores. Dispositivos RAID (Redundant Array of Inexpensive Disks). Un conjunto de discos que operan como nico dispositivo con su nico controlador. Datos y cdigo de paridad replicados para detectar errores y recuperarlos.
Controlador
bloque 0 paridad
bloque 1 bloque 3
bloque 2
paridad
Disc o 0
Disco 1
Disco 2
Disc o 3
7.6.
Almacenamiento terciario
Ms baratos que el secundario y extrables generalmente. Ejemplos frecuentes: disquetes, WORMs, CD-ROMs, ZIP, DVDs, cintas, Diferentes tecnologas: ferromagnticos, pticos, magneto-pticos.
7.7.
El reloj
Varias acepciones: Reloj del procesador Reloj del sistema (mantiene fecha y hora) Temporizador que activa peridicamente al SO El primero es independiente del SO, las dos ltimas no Tratado como dispositivo E/S: operaciones en registros e interrupciones Pero generalmente el SO le da tratamiento especfico
7.7.1.
Circuito temporizador que genera una seal peridica (tick) Conectado a lnea de interrupcin de alta prioridad Frecuencia programable (acta como divisor de frecuencias) Modo operacin programable (nico disparo, onda cuadrada peridica) Generalmente circuito con mltiples temporizadores No todos conectados a lnea de interrupcin (p.ej. al altavoz) Reloj alimentado por batera que mantiene hora y fecha Consultado por SO en su arranque Tambin denominado reloj CMOS
7.7.2.
Labores principal del SW del reloj: Manejo de sus interrupciones Tambin iniciacin y gestin de llamadas relacionadas Compromiso al fijar frecuencia de interrupcin: Demasiado alta: Excesiva sobrecarga por tratamiento de int. Demasiado baja: Limitada precisin en medida del tiempo Ejemplo tpico: 100 Hz (1 interrupcin cada 10 ms) Se debe minimizar el trabajo realizado por la rutina de interrupcin: Ya que mientras tanto no se atienden otras IRQs de menos prioridad Solucin tpica: Dividir trabajo asociado a int. de reloj Operaciones ms urgentes realizadas por rutina de atencin. Resto por tarea reloj (mitad inferior en Linux) activada por la rutina de atencin
Funcionalidades del SW del reloj: Mantenimiento de fecha y hora Gestin de temporizadores Contabilidad y estadsticas Soporte para la planificacin de procesos
Mantenimiento de fecha y hora En el arranque el SO programa temporizador y lee fecha A partir de entonces, en cada interrupcin el SO actualiza la hora. Cmo almacenar fecha y hora? Unidades de tiempo desde fecha fija en el pasado UNIX: segs. o segs. desde 1-1-1970 Windows: centenas de nsegs. desde 1-1-1601 Espacio dedicado a almacenar fecha y hora suficiente El SO debe poder seguir usndose en un futuro lejano Diferencias entre horarios de pases: SO almacena en UTC (Universal Coordinated Time) La conversin a horario local no la lleva el SO sino las bibliotecas El SO da servicios para leer y cambiar (slo superusuario) la hora Peligroso retrasar hora, algunos sistemas permiten hacerlo gradualmente
Gestin de temporizadores Los programas de usuario necesitan temporizadores, el SO ofrece servicios para ello El propio SO tambin lo requiere Ejemplos: mdulo de comunicaciones (timeouts) o manejador de disquete El SO crea mltiples temporizadores a partir de temporizador HW Lista de temporizadores activos (de programas e internos) Elemento: plazo restante (ticks) + funcin a ejecutar al cumplir Orden creciente y con plazos restantes relativos a anteriores Ejemplo: temp1 5 ticks, temp2 8 ticks y temp3 8 ticks: [temp1 5] [temp2 3] [temp3 0] La gestin de temporizadores puede consumir bastante tiempo Se ejecuta normalmente fuera de rutina de interrupcin
Contabilidad y estadsticas Uso de procesador al proceso que estaba ejecutando a la llegada de la IRQ de reloj Se contabiliza uso de procesador del intervalo en modo usuario o sistema Perfiles de ejecucin Cunto tiempo consumen las distintas partes del programa La rutina de atencin muestrea el PC de proceso interrumpido Se obtiene histograma de la ejecucin del programa
Soporte para la planificacin de procesos La mayora de algoritmos de planificacin tienen en cuenta el tiempo La rutina de atencin de reloj conlleva acciones de planificacin En Round-Robin: En cada interrupcin se descuenta tiempo a la rodaja Cuando llega a cero Replanificacin En algoritmos que requieren recalcular peridicamente la prioridad Dependiendo de uso de UCP/proceso en ltimo intervalo
7.8.
El terminal
Presente en todos los sistemas de propsito general. Consta de teclado y pantalla Dos tipos, dependiendo de forma de conexin: Terminales serie Terminales proyectados en memoria Otros dos tipos, dependiendo de tipo de informacin manejada: Terminales en modo alfanumrico Terminales en modo grfico
7.8.1.
Similitudes pese a la diversidad. Matices segn qu se hace por HW y qu por SW Relativa independencia entre la entrada y la salida Entrada Cdigo de tecla Carcter ASCII Se tiene en cuenta teclas modificadoras (Control, Alt, ...)
Salida Pantalla: matriz de pixels con memoria de vdeo asociada El controlador de vdeo lee esta memoria y refresca pantalla Escritura en pantalla requiere escritura en memoria de vdeo Carcter ASCII Patrn de pixels correspondiente Secuencias de escape: Permiten operaciones especiales (p.ej. borrar la pantalla)
7.8.2.
Terminales proyectados en memoria Terminal formado por 2 dispositivos independientes Teclado genera interrupcin al pulsar tecla El SO lee cdigo de tecla de registro de controlador de teclado Conversin a ASCII y manejo de teclas modificadoras por SW
Contr. de vdeo
Procesador
Memoria de vdeo
Memoria de vdeo directamente accesible al procesador Escritura en registros de controlador para mover cursor, scroll, etc. 2 modos de operacin: Alfanumrico: Memoria de vdeo contiene cdigos ASCII + atributos Controlador de vdeo genera patrones de pixels Grfico: Memoria de vdeo contiene matriz de pixels SW debe transformar de cdigo ASCII a patrn de pixels Secuencias de escape gestionadas por SW
Terminales serie Un nico dispositivo conectado por lnea serie (UART), incluye procesador interno
Procesador UART
Memoria
El SO debe programar los parmetros de UART Entrada mediante interrupciones UART notifica llegada de carcter ASCII Conversin a ASCII y manejo de teclas modif. en terminal Salida implica envo de carcter al terminal a travs de UART Uso de IRQ para indicar que el carcter ya se ha enviado Terminal obtiene el patrn y lo visualiza en pantalla Terminal maneja secuencias de escape
7.8.3.
Software de entrada Dirigido por interrupciones Si terminal proyectado Conversin a ASCII y manejo de teclas modificadoras por manejador Manejador proporciona tecleado anticipado (type ahead) El usuario teclea informacin antes de que programa la solicite El manejador debe usar zona de almacenamiento intermedio Edicin de los datos de entrada: A cargo del manejador o de la propia aplicacin? Factores a tener en cuenta: Mayora de aplicaciones requiere edicin sencilla No adecuado que todo programa se encargue de edicin Conveniente ofrecer un modo de edicin uniforme Hay aplicaciones que requieren edicin sofisticada
La mayor parte de los sistemas ofrecen las dos posibilidades Por defecto, manejador ofrece edicin sencilla Modo orientado a lnea (requiere buffer para lnea en curso) En UNIX denominado modo elaborado Se puede activar un modo donde manejador no hace edicin Modo orientado a carcter Aplicacin responsable de edicin En UNIX denominado modo crudo Existen caracteres con un significado especial Caracteres de edicin (slo si modo elaborado) Borrar carcter, Borrar lnea, Fin de lnea, Fin de datos, etc. Ejemplo de procesado: carcter back space Se elimina anterior carcter tecleado y no se almacena En UNIX: fin de lnea o retorno de carro fin de lnea Caracteres para control de procesos Abortar o parar la ejecucin de un proceso Caracteres para control de flujo Parar y reanudar la salida generada por un programa Caracteres de escape Como prefijo de carcter especial, para que no sea procesado Generalmente, son configurables/desactivables por programa Software de salida Salida no independiente de la entrada Por defecto, manejador hace eco de caracteres recibidos En pantalla aparecen mezclados escritura de programas y eco El eco se puede desactivar A diferencia de la entrada la salida no est orientada a lneas de texto Se escribe lo que solicita el programa En UNIX printf aparenta operar en modo orientado a lnea No es problema del manejador sino de memoria intermedia de la librera Terminal serie Salida dirigida por interrupciones El manejador utiliza almacenamiento intermedio y enva en cada IRQ El terminal se encarga de todo el procesamiento: Obtencin y visualizacin del patrn, caracteres especiales (bell), control de posicin del cursor, interpretacin de secuencias de escape
Terminal proyectado en memoria En la salida el manejador lee caracteres del espacio de proceso, los procesa y escribe en memoria de vdeo el resultado: En modo alfanumrico, escribe el carcter + atributos En modo grfico, escribe el patrn de pixels correspondiente No hay interrupciones ni se requiere almacenamiento intermedio El manejador se encarga de caracteres con presentacin especial: Tabulador, bell, back space, salto de lnea (scroll) Se encarga tambin de secuencias de escape
7.9.
La red
Cada da mayor importancia dentro del SO. Muchos sistemas operativos le dan tratamiento diferente a otros dispositivos En Linux no hay archivos en /dev para los dispositivos de red El software de red se organiza en general en tres niveles: Nivel de interfaz a las aplicaciones Interfaz a las aplicaciones Tpicamente, sockets (Winsock en Windows) Nivel de transporte Puede considerarse como nivel de sesin OSI Nivel de protocolos Nivel de red Implementa transporte y red OSI (o TCP/IP) SLIP Ethernet .......... Incluye funciones de encaminamiento Nivel de dispositivo de red Manejadores de dispositivos de red (Ethernet). Nivel de enlace OSI.
7.10.
7.10.1.
Servicios relacionados con el reloj Servicios de hora y fecha. Leer y cambiarlos (slo superusuario) Temporizaciones. Tanto sncronas (bloqueantes) como asncronas Servicios de contabilidad Servicios de entrada/salida Acceso a travs de interfaz de archivos. Programas independientes del medio. Operaciones dependientes de dispositivo (desactivar eco)
7.10.2.
time_t time (time_t *t); Devuelve nmero de segundos desde 1-1-1970 en UTC Algunos UNIX tienen gettimeofday con precisin de segs. Funciones de biblioteca estndar C para convertir a ao, mes, ..., segundos gmtime (UTC) y localtime (horario local) int stime (time_t *t); Fija hora segn parmetro en UTC. Slo para superusuario Algunos UNIX tienen settimeofday con precisin de segs. unsigned int alarm (unsigned int segundos); Establece temporizador del plazo especificado El proceso solicitante no se bloquea: recibe seal SIGALRM Slo una activa por proceso. Se impone la ltima POSIX define temporizadores ms avanzados (setitimer): Mayor resolucin y diversos modos de operacin clock_t times (struct tms *info); Proporciona informacin sobre el tiempo de ejecucin de proceso e hijos No se usa de forma absoluta, se realizan dos llamadas y se calcula la diferencia
int main(int argc, char *argv[]) { struct tms InfoInicio, InfoFin; clock_t t_inicio, t_fin; long tickporseg; if (argc<2) { fprintf(stderr, "Uso: %s programa [args]\n", argv[0]); exit(1); } /* obtiene el nmero de int. De reloj por segundo */ tickporseg= sysconf(_SC_CLK_TCK); t_inicio= times(&InfoInicio); if (fork()==0) { execvp(argv[1], &argv[1]); perror("error ejecutando el programa"); exit(1); } wait(NULL); t_fin= times(&InfoFin); printf ("Tiempo real: %7.2f\n", (float)(t_fin - t_inicio)/tickporseg); printf ("Tiempo de usuario: %7.2f\n", (float)(InfoFin.tms_cutime - InfoInicio.tms_cutime)/tickporseg); printf ("Tiempo de sistema: %7.2f\n", (float)(InfoFin.tms_cstime - InfoInicio.tms_cstime)/tickporseg); return 0; }
Servicios de E/S sobre dispositivos Mismos que para archivos Operaciones dependientes de dispositivo En UNIX: int ioctl (int descriptor, int peticin, ...); Realiza peticin especfica sobre disp. asociado a descriptor No definida en POSIX int tcgetattr (int descriptor, struct termios *atrib); int tcsetattr (int descriptor, int opcin, struct termios *atrib); Leer y modificar atributos del terminal Gran cantidad de atributos configurables (> 50)
/* Funciones getch() y getche() */ #include <stdio.h> #include <termios.h> #include <unistd.h> /*----------------------- Entradas por carcter --------------------------*/ int getch_fd(int fd,int desactivar) { struct termios save_term,new_term; register int ret; int ch; tcgetattr(fd,&save_term); new_term = save_term; new_term.c_lflag &= ~(ICANON|desactivar); new_term.c_cc[VMIN] = 1; new_term.c_cc[VTIME] = 0; tcsetattr(fd,TCSANOW,&new_term); ret=read(fd,&ch,1); tcsetattr(fd,TCSANOW,&save_term); return((ret==1)?ch:-1); } /*-------------------- Carcter a carcter en stdin (sin eco) ------------*/ int getch(void) { return(getch_fd(fileno(stdin),ECHO)); }
//Desactivar echo
/*-------------------- Carcter a carcter en stdin (con eco) ------------*/ int getche(void) { return(getch_fd(fileno(stdin),0)); }
7.10.3.
BOOL GetSystemTime (LPSYSTEMTIME tiempo); Devuelve fecha y hora en formato ao, ..., milisegundos en UTC GetLocalTime la devuelve en hora local
BOOL SetSystemTime (LPSYSTEMTIME tiempo); Fija hora segn parmetro en formato ao, ..., milisegundos
/*WIN32*/ #include <windows.h> #include <stdio.h> void main ( void ) { SYSTEMTIME Tiempo; GetLocalTime (&Tiempo); /*POSIX*/ #include <time.h>
printf ("%02d/%02d/%04d %02d:%02d:%02d\n", fecha->tm_mday,fecha->tm_mon, Tiempo.wDay, Tiempo.wMonth, fecha->tm_year+1900,fecha->tm_hour, Tiempo.wYear, Tiempo.wHour, fecha->tm_min, fecha->tm_sec); Tiempo.wMinute, Tiempo.wSecond); }
UINT SetTimer (HWND ventana, UINT evento, UINT plazo, TIMERPROC funcin); Establece temporizador con resolucin de milisegs. Devuelve un identificador del temporizador Mltiples temporizadores por proceso BOOL GetProcessTimes (HANDLE proceso, LPFILETIME t_creacin, LPFILETIME t_fin, LPFILETIME t_sistema, LPFILETIME t_usuario); Obtiene: t. de creacin y finalizacin y consumido en modo sistema y usuario Tiempos expresados en centenas de nsegs. desde 1-1-1601 FileTimeToSystemTime convierte a ao, ..., milisegs.
Servicios de E/S sobre dispositivos Mismos que para archivos Operaciones dependientes de dispositivo BOOL SetConsoleMode (HANDLE consola, DWORD modo); Permite configuracin del terminal: BOOL ReadConsole (HANDLE consola, LPVOID mem, DWORD a_leer, LPDWORD leidos, LPVOID reservado); Lectura de a_leer bytes del terminal BOOL WriteConsole (HANDLE consola, LPVOID mem, DWORD a_escribir, LPVOID escritos, LPVOID reservado); Escritura de a_escribir bytes en el terminal
7.11.
Ejercicios
1.- Calcule las diferencias en tiempos de acceso entre los distintos niveles de la jerarqua de E/S. Razone la respuesta. 2- Qu es el controlador de un dispositivo? Cules son sus funciones? 3.- Es siempre mejor usar sistemas de E/S por interrupciones que programados? Por qu? 4.- Qu ocurre cuando llega una interrupcin de E/S? Se ejecuta siempre el manejador del dispositivo? Razone la respuesta. 5.- Imagine un sistema donde slo hay llamadas de E/S bloqueantes. En este sistema, hay 4 impresoras, 3 cintas y 3 trazadores. En un momento dado hay 3 procesos en ejecucin A, B y C que tienen la siguiente necesidad de recursos actual y futura: A B C I 1 1 1 C 1 0 1 T 0 1 1 I 1 0 2 C T 1 2 1 1 2 2
Determinar si el estado actual es seguro. Determinar si las necesidades futuras se pueden satisfacer, usando el algoritmo del banquero. Ira todo mejor con E/S no bloqueante? 6.- Indique dos ejemplos en los que sea mejor usar E/S no bloqueante que bloqueante. 7.- Qu problemas plantea a los usuarios la E/S bloqueante? Y la no bloqueante?
8.- Se le ocurre alguna estructura para el sistema de E/S distinta de la propuesta en este captulo? Razone la respuesta. 9.- Es mejor tener un sistema de E/S estructurado por capas o monoltico? Explique las ventajas y desventajas de ambas soluciones? 10.- En qu componentes del sistema de E/S se llevan a cabo las siguientes tareas? a) Traduccin de bloques lgicos a bloques del dispositivo. b) Escritura de mandatos al controlador del dispositivo. c) Traducir los mandatos de E/S a mandatos del dispositivo. d) Mantener una cach de bloques de E/S. 11.- En qu consiste el DMA? Para que sirve? 12.- En un centro de clculo tienen un disco Winchester para dar soporte a la memoria virtual de una computadora. Tiene sentido? Se podra hacer lo mismo con un disquete o una cinta? Razone la respuesta. 13.- Suponga que un manejador de disco recibe peticiones de bloques de disco para las siguientes pistas: 2, 35, 46, 23, 90, 102, 3, 34. Si el disco tiene 150 pistas, el tiempo de bsqueda entre pistas consecutivas es 4 ms. y el tiempo de bsqueda de la pista 0 a la 150 es 8 ms. Calcule los tiempos de bsqueda para los algoritmos de planificacin de disco SSF, FCFS, SCAN y CSCAN. 14.- Sea un disco con 63 sectores por pista, intercalado simple de sectores, tamao de sector de 512 bytes y una velocidad de rotacin de 3000 RPM. Cunto tiempo costar leer una pista completa? Tanga en cuenta el tiempo de latencia. 15.- El almacenamiento estable es un mecanismo hardware/software que permite realizar actualizaciones atmicas en almacenamiento secundario. Cul es el tamao mximo de registro que este mecanismo permite actualizar atmicamente (sector, bloque, pista, ...)? Si la corriente elctrica falla justo a mitad de una escritura en el segundo disco del almacenamiento estable cmo funciona el procedimiento de recuperacin? 16.- Es lo mismo un disco RAM que una cach de disco? Tienen el mismo efecto en la E/S? Razone la respuesta. 17.- Suponga un controlador de disco SCSI, al que se pueden conectar hasta 8 dispositivos simultneamente. El bus del controlador tiene 40 Mbytes/seg. de ancho de banda y puede solapar operaciones de bsqueda y transferencia, es decir puede ordenar una bsqueda en un disco y transferir datos mientras se realiza la bsqueda. Si los discos tienen un ancho de banda medio de 2 Mbytes/seg. y el tiempo medio de bsqueda es de 6 mseg. Calcule el mximo nmero de dispositivos que el controlador podra explotar de forma eficiente si hay un 20% de operaciones de bsqueda y un 80% de transferencias, con un tamao medio de 6 Kbytes, repartidas uniformemente por los 8 dispositivos. 18.- Cules son las principales diferencias, desde el punto de vista del sistema operativo, entre un sistema de copias de respaldo y un sistema de almacenamiento terciario complejo como HPSS? 19.- Suponga que los dispositivos extrables, como las cintas, fueran tan caros como los discos. Tendra sentido usar estos dispositivos en la jerarqua de almacenamiento?
20.- Suponga un gran sistema de computacin al que se ha aadido un sistema de almacenamiento terciario de alta capacidad. De qu forma se puede saber si los archivos estn en el sistema secundario o en el terciario? Se podran integrar todo el rbol de nombres? Razone la respuesta. 21.-En algunos sistemas, como por ejemplo Linux, se almacena en una variable el nmero de interrupciones de reloj que se han producido desde el arranque del equipo, devolvindolo en la llamada times. Si la frecuencia de reloj es de 100 Hz y se usa una variable de 32 bits, cunto tiempo tardar en desbordarse ese contador? Qu consecuencias puede tener ese desbordamiento? 22.- Qu distintas cosas puede significar que una funcin obtenga un valor elevado en un perfil de ejecucin de un programa? 23.- Proponga un mtodo que permita a un sistema operativo proporcionar un servicio que ofrezca temporizaciones de una duracin menor que la resolucin del reloj. 24.- Algunos sistemas permiten realizar perfiles de ejecucin del propio sistema operativo. De qu partes del cdigo del sistema operativo no podrn obtener perfiles? 25.- Escriba el pseudo-cdigo de una rutina de interrupcin de reloj. 26.- Suponga un sistema que no realiza la gestin de temporizadores directamente desde la rutina de interrupcin sino desde una rutina que ejecuta con menor prioridad que las interrupciones de todos los dispositivos. En qu situaciones puede tomar un valor negativo el contador de un temporizador? 27.- Analice para cada uno de estos programas si en su consumo del procesador predomina el tiempo gastado en modo usuario o en modo sistema. Un compilador Un programa que copia un archivo Un intrprete de mandatos Un programa que comprime un archivo Un programa que resuelve una compleja frmula matemtica 28.- Enumere algunos ejemplos de situaciones problemticas que podran ocurrir si un usuario cambia la hora del sistema retrasndola. Podra haber problemas si el cambio consiste en adelantarla? 29.- Escriba el pseudo-cdigo de las funciones de lectura, escritura y manejo de interrupciones para un terminal serie. 30.- Lo mismo que el ejercicio anterior pero en el caso de un terminal proyectado en memoria. 31.- Enumere ejemplos de tipos de programas que requieran que el terminal est en modo carcter (modo crudo). 32.- Escriba un programa usando servicios POSIX que lea un nico carcter del terminal. 33.- Realice el mismo programa utilizando servicios Win32.
34.- Por qu cree que es conveniente en los terminales serie copiar los datos que se desean escribir desde la memoria del proceso a una zona de almacenamiento intermedio en vez de enviarlos directamente desde all? 35.- Analice si es razonable permitir que mltiples procesos puedan leer simultneamente del mismo terminal. Y escribir? 36.- Proponga mtodos para intentar reducir el mximo posible el nmero de veces que se copia un mensaje tanto durante su procesamiento en la mquina emisora como en la mquina receptora.