Download Diseño de un sistema de archivos. - hola, este es el servidor de
Document related concepts
Transcript
Unidad 6 ADMINISTRADOR DE ARCHIVOS 6.1 Sistema de Archivos 6.2 Jerarquía de Datos 6.3 Tipos de Archivos 6.4 Interfaz con el Usuario 6.4.1 El Sistema de Archivo visto por el Usuario 6.4.2 Diseño del Sistema de Archivos 6.4.3 Servidor de Archivos 6.4.4 Seguridad en los Archivos 6.4.5 Mecanismos de Protección 6.4.6 Implementación 6.5 Llamadas al Sistema (Systems Calls) 6.6 Tipos de Interfaz 6.7 Lenguaje de Comunicación (comandos de control) y Pipelines o Conductos 6.1 SISTEMA DE ARCHIVOS Todas las aplicaciones de computadora necesitan almacenar y recuperar información. Mientras un proceso se está ejecutando, puede almacenar una cantidad de información limitada dentro de su propio espacio de direcciones. Sin embargo, la capacidad de almacenamiento está restringida al tamaño del espacio de direcciones virtual. En el caso de algunas aplicaciones, este tamaño es adecuado, pero en el de otras, como Las de reservaciones de líneas aéreas, las aplicaciones bancadas o las bases de datos corporativas, dicho tamaño resulta excesivamente pequeño. Un segundo problema de mantener la información dentro del espacio de direcciones de un proceso es que cuando el proceso termina la información se pierde. En muchas aplicaciones (como las bases de datos), la información debe retenerse durante semanas, meses, o incluso eternamente. No es aceptable que la información desaparezca cuando el proceso que la está usando termina. Además, la información no debe perderse cuando una caída de la computadora termina el proceso. Un tercer problema es que en muchos casos es necesario que múltiples procesos accedan a (partes de) la información al mismo tiempo. Si tenemos un directorio telefónico en línea almacenado dentro del espacio de direcciones de un solo proceso, únicamente ese proceso tendrá acceso a él. La forma de resolver este problema es hacer que la información misma sea independiente de cualquier proceso individual. Por tanto, tenemos tres requisitos esenciales para el almacenamiento de información a largo plazo: 1. Debe ser posible almacenar una gran cantidad de información. 2. La información debe sobrevivir a la terminación del proceso que la usa. 3. Múltiples procesos deben poder acceder a la información de forma concurrente. La solución usual a todas estas exigencias es almacenar la información en discos y Otros medios externos en unidades llamadas archivos. Así, los procesos pueden leerlos y escribir archivos nuevos si es necesario. La información almacenada en archivos debe ser persistente, es decir, no ser Afectada por la creación y terminación de procesos. Un archivo sólo debe desaparecer cuando su Propietario lo elimina explícitamente. Los archivos son administrados por el sistema operativo. La forma como se estructuran, nombran, acceden, usan, protegen e implementan son temas importantes en el diseño de sistemas operativos. Globalmente, la parte del sistema operativo que se ocupa de los archivos se denomina sistema de archivos y es el tema de este capítulo. Desde el punto de vista del usuario, el aspecto más importante de un sistema de archivos es la cara que presenta ante él, es decir, qué constituye un archivo, cómo se nombran y protegen los archivos, qué operaciones pueden efectuarse con los archivos, etc. Los detalles de si se usan listas enlazadas o mapas de bits para mantenerse al tanto del espacio de almacenamiento disponible y de cuántos sectores hay en un Bloque lógico tienen menos interés, aunque son de gran relevancia para los diseñadores del sistema de archivos. Por esta razón, hemos estructurado el capítulo en varias secciones. Las dos primeras se ocupan de la interfaz entre el usuario y los archivos y directorios, respectivamente. Luego viene una explicación detallada de cómo se implementa el sistema de archivos. Después, examinaremos la seguridad y los mecanismos de protección de los sistemas de archivos. Un Componente importante de cualquier sistema operativo es el sistema de archivos. En general, los sistemas de archivos contienen: # Métodos de acceso # Administración de archivos # Administración de Almacenamiento Secundario # Mecanismos de Integridad de los Archivos. Una forma de organización de un sistema de archivos puede ser la siguiente: * Se utiliza una “raíz” para indicar en qué parte del disco comienza el “directorio raíz”. * El “directorio raíz” apunta a los “directorios de usuarios”. * Un “directorio de usuario” contiene una entrada para cada uno de los archivos del usuario. * Cada entrada de archivo apunta al lugar del disco donde está almacenado el archivo referenciado. Los nombres de archivos solo necesitan ser únicos dentro de un directorio de usuario dado. El nombre del sistema para un archivo dado debe ser único para el sistema de archivos. 6.2 Jerarquía de Datos Los bits se agrupan en patrones de bits para representar en los sistemas de cómputo a prácticamente todos los datos de interés. Existan 2^n posibles patrones de bits para una cadena de n bits. El siguiente nivel hacia arriba en la jerarquía de datos esta formado por Bytes, los cuales son patrones de bits de longitud fija .la mayor parte de los sistemas de computo actuales emplean Bytes de 8 bits de modo que es posible representar 2^8 o 256 caracteres en su conjunto de caracteres. Los dos conjuntos de caracteres de uso mas generalizado en la actualidad son ASCII EBCD. Un campo es un conjunto de caracteres. Un registro es un grupo de campos. Un archivo es un grupo de registros relacionados entre si Una base de datos es un conjunto de archivos Base De Datos Archivo Registro Campo 00000010=@ 10101010110 6.3 TIPOS DE ARCHIVOS Archivos normales y directorios. UNIX también tiene archivos especiales por caracteres y por bloques. Los archivos regulares son los que contienen información del usuario. Todos los archivos de la Fig. 5-2 son Archivos normales. Los directorios son archivos de sistema que sirven para mantener la estructura del sistema de archivos. Estudiaremos los directorios más adelante. Los archivos especiales por caracteres están relacionados con entrada/salida y sirven para modelar dispositivos E/S en serie como las terminales, impresoras y redes. Los archivos especiales por bloques sirven para modelar discos. En este capítulo nos interesarán primordialmente los archivos normales. Los archivos normales generalmente son archivos ASCII o bien archivos binarios Los archivos ASCII consisten en líneas de texto. En algunos sistemas cada línea termina con un carácter de retorno de carro; en otros se emplea el carácter de salto de línea. Ocasionalmente se requieren ambos. Las líneas no tienen que tener toda la misma longitud. La gran ventaja de los archivos ASCII es que pueden exhibirse e imprimirse tal como están, y se pueden editar con un editor de textos normal. Además, si una gran cantidad de programas usan archivos ASCII como entradas y salidas, es fácil conectar la salida de un programa a la entrada del otro, como en Los conductos de shell. (La interconexión entre procesos no es más fácil, pero ciertamente lo es la interpretación de la información si se emplea una convención estándar, como ASCII, para expresarla.) Otros archivos son binarios, lo que simplemente significa que no son archivos ASCII. Si listamos estos archivos en una impresora, obtendremos un listado incomprensible lleno de lo que parece ser basura. Por lo regular, estos archivos tienen alguna estructura interna. Por ejemplo, en la Fig. 5-3(a) vemos un archivo binario ejecutable sencillo tomado de una de las primeras versiones de UNIX. Aunque técnicamente el archivo no es sino una secuencia de bytes, el sistema operativo sólo ejecuta un archivo si éste tiene el formato correcto. El ejemplo tiene cinco secciones: encabezado, texto, datos, bits de reubicación y tabla de símbolos. El encabezado comienza con lo que se conoce como un número mágico, que identifica el archivo como ejecutable (a fin De evitar la ejecución accidental de un archivo que no tiene este formato). Luego vienen enteros de 16 bits que indican los tamaños de los distintos componentes del archivo, la dirección en la que se inicia la Ejecución y algunos bits de bandera. Después del encabezado vienen el texto y los datos del programa mismo. Éstos se cargan en la memoria y se reubican empleando los bits de reubicación. La tabla de símbolos sirve para la depuración. Nuestro segundo ejemplo de archivo binario es un archivo de archivado, también de UNKs| Este Archivo consiste en una colección de procedimientos de biblioteca (módulos) compilado»;! pero no enlazados. Cada módulo va precedido por un encabezado que indica su nombre, fechada creación, propietario, código de protección y tamaño. Al igual que en el archivo ejecutable, los encabezados de módulo están llenos de números binarios; si los copiáramos en una impresora obtendríamos un listado ininteligible. Todos los sistemas operativos deben reconocer un tipo de archivo, su propio archivo Ejecutable, pero algunos reconocen más. El antiguo sistema TOPS-20 llegó al extremo de examinará tiempo de creación de todo archivo por ejecutar; luego localizaba el archivo fuente y veía si éste se había modificado después de crearse el binario. Si tal era el caso, el sistema recompilaba automáticamente el archivo fuente. En términos de UNIX, se había incorporado el programa make en el shell. Las extensiones de archivo eran obligatorias para que el sistema operativo pudiera saber cuál programa binario se derivaba de cuál fuente. Algo por el estilo es lo que hace WINDOWS cuando un usuario hace doble clic sobre el nombre de un archivo: pone en marcha un programa apropiado con el nombre de archivo como parámetro. El sistema operativo determina cuál programa debe ejecutar basándose en la extensión del archivo. Tener archivos con tipificación estricta como éstos causa problemas siempre que el usuario hace algo que los diseñadores del sistema no esperaban. Consideremos, por ejemplo, un sistema en el que los archivos de salida de los programas tienen el tipo dat (archivos de datos). Si un usuario escribe un formateador de programas que lee un archivo .Pas, lo transforma (p. ej., convirtiéndolo a una organización con sangrías estándar) y luego envía el archivo transformado a la salida, el archivo de salida será de tipo.dat. Si el usuario trata de ofrecer este archivo al compilador de Pascal para que lo compile, el sistema no lo permitirá porque el archivo no tiene la extensión correcta. El sistema rechazará los intentos por copiar archivo.dat en archivo.pas por considerarlos no válidos (tratando de proteger al usuario contra errores). En computación existen básicamente dos tipos de archivos, los archivos ASCII y los archivos binarios. El vocablo ASCII es un acrónimo para American Standard Code for Information Interchange. Es un estándar que asigna un valor numérico a cada carácter, con lo que se pueden representar los documentos llamados de Texto Plano, es decir, los que son legibles por seres humanos. Los archivos binarios son todos los demás. Como ejemplos tenemos: Archivos binarios: De imagen: .jpg, .gif, .tiff, .bmp (Portable bitmap), .wmf (Windows Meta File), .PNG (Portable Network Graphics), .pcx (Paintbrush); entre muchos otros De video: .MPG, .mov, .avi, .gif Comprimidos o empaquetados: .zip, .Z, .gz, .tar, .lhz Ejecutables o compilados: .exe, .com, .cgi, .o, .a Procesadores de palabras: .doc Archivos ASCII Archivos fuente: .f, .c, .p Formatos de texto: .tex, .txt, .html, Formatos de intercambio: .rtf, .ps, .uu Dentro de los archivos ASCII de uso común por los programas de bioinformática están los siguientes: De secuencias: .seq • De secuencias múltiples: .aln, .msf (Multiple Sequence Format, secuencias alineadas), .rsf (Rich Sequence Format, estos archivos pueden incluir una o más secuencias relacionadas o no). Los archivos también se pueden separar por grupos como son: Nomenclatura: Todos los formatos de archivo o extensiones están escritos en mayúscula en la columna de la izquierda. A su derecha y en la misma línea todos ellos poseen una explicación adjunta o bien los programas recomendados para su uso. Todas las extensiones más importantes y que requieren una explicación más completa están marcados con un asterisco (*) y ampliadas en la parte final de su categoría correspondiente. Listado: Aquí tenemos la lista completa de tipos de archivos ordenados, tal y como se indicó anteriormente. Sistema: Estos son los archivos necesarios para el funcionamiento interno del Sistema Operativo así como de los diferentes programas que trabajan en él. No esta recomendado moverlos, editarlos o variarlos de ningún modo porque pueden afectar al buen funcionamiento del sistema. Audio: Los archivos de audio son todos los que contienen sonidos (no solo música). Las diferentes extensiones atienden al formato de compresión utilizado para convertir el sonido real en digital. Video: Los formatos de video no sólo contienen imágenes sino también el sonido que las acompaña. Es bastante habitual que al intentar visualizar un vídeo no podamos ver la imagen aunque sí oigamos el sonido. Esto es debido al formato de compresión utilizado en ellos que puede no ser reconocido por nuestro ordenador, por ello siempre se ha de tener actualizados los codecs de cada uno de los formatos. Comprimidos: Los formatos de compresión son de gran utilidad a la hora del almacenamiento de información ya que hacen que esta ocupe el menor espacio posible y que se puedan reunir muchos ficheros en uno sólo. Images: Poco hay que decir de las imágenes y de sus formatos salvo que cada uno de ellos utiliza un método de representación y que algunos ofrecen mayor calidad que otros. También cabe destacar que muchos programas de edición gráfica utilizan sus propios formatos de trabajo con imágenes. Texto: Dentro de los documentos de texto hemos de diferenciar entre el texto plano y el enriquecido. Es decir, entre los formatos que sencillamente guardan las letras (txt, Log…) y los que podemos asignarles un tamaño, fuente, color, etc. (doc) Programas La mayoría de los programas tienen formatos de archivo propios para utilizarlos en distintas funciones. 6.4 INTERFASE CON EL USUARIO Interfaz de usuario La interfaz de usuario es el medio con que el usuario puede comunicarse con una máquina, un equipo o una computadora, y comprende todos los puntos de contacto entre el usuario y el equipo. Funciones principales Sus principales funciones son los siguientes: Puesta en marcha y apagado Control de las funciones manipulables del equipo Manipulación de archivos y directorios Herramientas de desarrollo de aplicaciones Comunicación con otros sistemas Información de estado Configuración de la propia interfaz y entorno Intercambio de datos entre aplicaciones Control de acceso Sistema de ayuda interactivo. Tipos de interfaces de usuario Según la forma de interactuar del usuario Atendiendo a como el usuario puede interactuar con una interfaz, nos encontramos con varios tipos de interfaces de Usuario: Interfaces alfanuméricas (intérpretes de mandatos) que solo presentan texto. Interfaces gráficas de usuario (GUI, Graphics User Interfaces), las que permiten comunicarse con el ordenador de una forma muy rápida e intuitiva representando gráficamente los elementos de control y medida. Interfaces táctiles, que representan gráficamente un “panel de control” en una pantalla sensible que permite interaccionar con el dedo de forma similar a si se accionara un control físico. Según su construcción Pueden ser de hardware o de software: Interfaces hardware.- Se trata de un conjunto de controles o dispositivos que permiten la interacción hombre-máquina, de modo que permiten introducir o leer datos del equipo, mediante pulsadores, reguladores e instrumentos. Interfaces software.- Son programas o parte de ellos, que permiten expresar nuestros deseos al ordenador o visualizar su respuesta. 6.4.1 El sistema de Archivo visto por el Usuario Para que un ordenador pueda hacer funcionar un programa informático (a veces conocido como aplicación o software), debe contar con la capacidad necesaria para realizar cierta cantidad de operaciones preparatorias que puedan garantizar el intercambio entre el procesador, la memoria y los recursos físicos (periféricos). El sistema operativo (a veces también citado mediante su forma abreviada OS en inglés) se encarga de crear el vínculo entre los recursos materiales, el usuario y las aplicaciones (procesador de texto, videojuegos, etcétera). Cuando un programa desea acceder a un recurso material, no necesita enviar información específica a los dispositivos periféricos; simplemente envía la información al sistema operativo, el cual la transmite a los periféricos correspondientes a través de su driver (controlador). Si no existe ningún driver, cada programa debe reconocer y tener presente la comunicación con cada tipo de periférico. De esta forma, el sistema operativo permite la "disociación" de programas y hardware, principalmente para simplificar la gestión de recursos y proporcionar una interfaz de usuario (MMI por sus siglas en inglés) sencilla con el fin de reducir la complejidad del equipo. 6.4.2 Diseño del Sistema de Archivos A los diseñadores de un sistema de archivo les interesa: Cómo se maneja el espacio en el disco. Cómo se almacenan los archivos. Cómo hacer que todo funcione eficiente y confiablemente. Manejo del espacio en el disco. Diseño de un sistema de archivos. Son posibles dos estrategias para almacenar un archivo de n bytes: Se distribuyen n bytes consecutivos de espacio del disco. El archivo se divide en varios bloques (no necesariamente) contiguos. Los bloques: Casi todos los sistemas de archivo recortan los archivos en bloques de tamaño fijo que no necesitan ser adyacentes. ¿Qué tan grande debe de ser el bloque? Tener una unidad de asignación grande, como un cilindro, significa que todos los archivos, aun uno de 1 byte, se le asigna un cilindro completo. Una unidad de asignación pequeña, quiere decir que cada archivo consta de muchos bloques. La lectura de cada bloque requiere una localización y una demora rotatoria, de modo que un archivo de muchos bloques será lenta. ¿Cómo llevar a cabo el control de los bloques libres? Se utilizan dos métodos: Lista enlazada de bloques de disco, donde cada bloque contenga tantos números de bloque de disco libres como le quepan. Mapa de bits con n bits. Un disco con n bloques, requiere un mapa de bits con n bits. Los bloques libres suelen ser representados con 1 (unos); los bloques asignados con 0 (ceros), o viceversa. Almacenamiento en Archivos. Un archivo consta de una sucesión de bloques, el sistema de archivo debe contar con alguna manera de llevar el control de los bloques de cada archivo. La forma más evidente (el almacenamiento consecutivo de los bloques), suele no ser viable por los archivos pueden crecer. Un método que resulta adecuado consiste en almacenar los bloques de un archivo como una lista enlazada. Desventajas: El número de bytes de datos en un bloque ya no es potencia de dos. El acceso al azar es costoso, hay que leer todos los bloques anteriores antes de localizar un dato Almacenamiento en archivos, el esquema de asignación de MS-DOS. Es la idea de representar un archivo como una lista enlazada conservando los apuntadores en memoria. Con cada disco hay una tabla llamada tabla de asignación de archivos (FAT) Tiene una captación por cada bloque del disco. La captación del directorio de cada archivo da el número de bloque del primero del archivo. Esa ranura en la FAT contiene el número de bloque del siguiente bloque. 6.4.3 SERVIDOR DE ARCHIVOS Tipo de servidor en una red de ordenadores cuya función es permitir el acceso remoto a archivos almacenados en él o directamente accesibles por este. En principio, cualquier ordenador conectado a una red con un software apropiado, puede funcionar como servidor de archivos. Desde el punto de vista del cliente de un servidor de archivos, la localización de los archivos compartidos es transparente. O sea, normalmente no hay diferencias perceptibles si un archivo está almacenado en un servidor de archivos remoto o en el disco de la propia máquina. Algunos protocolos comúnmente utilizados en servidores de archivos: SMB/CIFS (Windows, Samba en Unix) NFS (Unix) Un servidor de archivos proporciona una ubicación central en la red, en la que puede almacenar y compartir los archivos con usuarios de la red. Cuando los usuarios necesiten un archivo importante, como un plan de proyecto, podrán tener acceso al archivo del servidor de archivos en lugar de tener que pasarlo entre distintos equipos. Si los usuarios de la red necesitan tener acceso a los mismos archivos y aplicaciones accesibles a través de la red. Si tiene toda la información de la empresa almacenada en su servidor de archivos, el respaldo de este es más simple de realizar. 6.5.4 SEGURIDAD EN LOS ARCHIVOS Los sistemas de archivos generalmente contienen información muy valiosa para sus usuarios, razón por la que los sistemas de archivos deben protegerla. El Ambiente de Seguridad Se entenderá por seguridad a los problemas generales relativos a la garantía de que los archivos no sean leídos o modificados por personal no autorizado; esto incluye aspectos técnicos, de administración, legales y políticos. Se consideran mecanismos de protección a los mecanismos específicos del sistema operativo utilizados para reguardar la información de la computadora. La frontera entre seguridad y mecanismos de protección no esta bien definida. Dos de las más importantes facetas de la seguridad son: La perdida de datos los intrusos. Algunas de las causas más comunes de la perdida de datos son: Actos y hechos diversos, como incendios, inundaciones, terremotos, guerras, revoluciones, roedores, etc. Errores de hardware o de software, como fallas en el cpu, discos o cintas ilegibles, errores de telecomunicación, errores en los programas, etc. Errores humanos, por ejemplo; entrada incorrecta de datos, mal montaje de cintas o discos, ejecución incorrecta de programas, perdida de cintas o discos, etc. La mayoría de estas causas se pueden enfrentar con el mantenimiento de los respaldos (back-ups) adecuados: debería haber copias en un lugar alejado de los datos originales. Respecto del problema de los intrusos, se los puede clasificar como: Pasivos: solo desean leer archivos que no están autorizados a leer. Activos: desean hacer cambios no autorizados a los datos. Para diseñar un sistema seguro contra intrusos: Hay que tener en cuenta el tipo de intrusos contra lo que se desea tener protección. Hay que ser consiente de que la cantidad de esfuerzo que se pone en la seguridad y la protección depende claramente de quien se piensa sea el enemigo. Algunos tipos de intrusos son los siguientes: Curiosidad casual de usuarios no técnicos Conocidos (técnicamente capacitados) husmeando. Intentos deliberados por hacer dinero. Espionaje comercial o militar. Otro aspecto del problema de la seguridad es la prevacía: Protección de las personas respecto del mal uso de la información en contra de un o mismo. Implica aspectos legales y morales También debe señalarse la posibilidad del ataque del caballo de Troya. Modificar un programa normal para que haga cosas adversas además de su función usual. Arreglar las cosas para que la victima utilice la versión modificada. Además debe considerarse la posibilidad de ataques al estilo del gusano de Internet. Fue liberado por Robert Tappan Morris el 02/11/88 e hizo que se bloquearan la mayoría de los sistemas sun y vax de Internet (fue descubierto y condenado). Constaba de un programa arrancador y del gusano propiamente dicho. Utilizaba fallas de seguridad del UNIX y de los programas Finger y Sendmail d Internet. Una forma de probar la seguridad de un sistema es contratar un grupo de expertos en seguridad, conocido como el equipo tigre o el equipo de penetración, cuyo objetivo es intentar el sistema de seguridad Para descubrir sus falencias y proponer soluciones. Otro aspecto importante de la seguridad consiste en no subestimar los problemas que pueden causar el personal. Virus Los virus computacionales: Constituyen una categoría especial de ataque. Son un enorme problema para muchos usuarios. Son fragmentos de programas que se añaden a programas legítimos con la intención de infectar a otros. Un virus difiere de un gusano en lo siguiente: - Un virus esta a cuestas de un programa existente. - Un gusano es un programa completo en si mismo. Los virus y los gusanos intentan diseminarse y pueden crear un daño severo. Generalmente se propagan a través de copias ilegitimas de programas. Continuamente los virus se ejecutan e intentan reproducirse cada vez que se ejecutan el programa que los aloja. Frecuentemente los problemas con los virus son mas fáciles de evitar que de curar: - Utilizar un software original adquirido en comercios respetables. - No utilizar copia “piratas”. - Efectuar controles rigurosos y frecuentes con programas antivirus actualizados. - Trabajar con metodología y disciplina rigurosa en el intercambio de discos y en las copias a través de redes de comunicación de datos. Principios del diseño para la Seguridad. El diseño del sistema debe ser público, ya que pensar que el intruso no conocerá la forma de funcionamiento del sistema es un engaño. El estado predefinido debe ser el de no acceso, dado que los errores en donde se niega el acceso valido se reportan mas rápido que los errores en donde se permite el acceso no autorizado. Verificar la autorización actual: El sistema no debe: - Verificar el permiso - Determinar que el acceso esta permitido. - Abandonar esta información para su uso posterior. El sistema tampoco debe: - Verificar el permiso al abrir un archivo y no después de abrirlo, púes un acceso habilitado permanecería como valido aunque haya cambiado la protección del archivo. Dar a cada proceso el mínimo privilegio posible,lo que implica un esquema de “protección de grano fino”. El mecanismo debe ser simple, uniformé e integrado hasta las capas mas bajas del sistema: Dotar de seguridad a un sistema inseguro es casi imposible. La seguridad no es una característica que se pueda añadir fácilmente. El esquema de seguridad debe ser psicológicamente aceptable: Los usuarios no deben sentir que la protección de sus archivos les implica demasiado trabajo. - Podrían dejar de proteger sus archivos. - Se quejarían en caso de problemas. - No aceptarían fácilmente su propia culpa. Autentificación del Usuario Muchos esquemas d protección se basan en la hipasteis de que el sistema conoce la identidad de cada usuario. La identificación de los usuarios se conoce como la autentificación d los usuarios. Muchos métodos de autentificación se basan en: La identificación de algo conocido por el usuario Algo que posee el usuario Algo que es el usuario. Contraseñas: Son la forma de autentificación mas utilizada. Son de fácil comprensión e implementación. Deben almacenarse cifradas (encriptadas). Se deben prever intentos de penetración consistentes en pruebas de combinaciones de nombres y contraseñas. Si las contraseñas fueran de 7 caracteres elegidos al azar de los 95 caracteres ASCII que se puedan imprimir: El espacio búsqueda será de 95^7, alrededor de 7x10^13. A1.000 ciframentos por seguido tomaría 2.000 anos construir la lista a verificar contra el archivo de contraseñas. Una mejora al esquema de contraseñas consiste en: Asociar un número aleatorio de “n” bits a cada contraseña. El número aleatorio se modifica al cambiar la contraseña. El número se guarda en el archivo de contraseñas en forma no cifrada. Se concatenan la contraseña y el número aleatorio y se cifran juntos. El resultado cifrado se almacena en el archivo de contraseñas. Se aumenta por 2^n el espectro de búsqueda: a esto se llama salar el archivo de contraseñas. Una protección adicional consiste en hacer ilegible l archivo de contraseña encriptadas. Otra protección adicional consiste en que el sistema sugiera a los usuarios contraseñas generadas según ciertos criterios; con esto se evita que el usuario elija contraseñas muy sencillas. También es conveniente que el sistema obligue al usuario a cambiar sus contraseñas con regularidad; se pude llegar a la contraseña de una sola vez. Una variante de la idea de contraseña es solicitar al usuario repuestas sobre información de contexto que debe conocer. Otra variante es la reto-respuesta: Se acuerdan con el usuario algoritmos (por ejemplo formulas matemáticas) que se utilizaran según el día y/o la hora. Cuando el usuario se conecta: - El sistema suministra un argumento - El usuario debe responder con el resultado correspondiente al algoritmo vigente ese día o es hora. Identificación Física Una posibilidad es la verificación de si el usuario tiene cierto elemento (generalmente una tarjeta plástica con una banda magnética), que generalmente se combina con una contraseña. Otro aspecto consiste en la medición de características físicas difíciles de reproducir: Huellas digitales o vocales Firmas Longitud de los dedos de las manos. Mediadas Preventivas. Limitar los intentos de acceso fallidos y registrarlos; Registrar todos los accesos. Tender trampas para atrapar a los intrusos. 6.4.5 Mecanismos de Protección Dominios de Protección Muchos objetos del sistema necesitan protección, tales como la cpu, segmentos de memoria, unidades de disco, terminales, impresoras, procesos, archivos, base de datos, etc. Cada objeto se referencia por un nombre y tiene habilidades un conjunto de operaciones sobre el. Un dominio es un conjunto de parejas (objeto, derechos). Cada pareja determina: - Un objeto. - Un subconjunto de las operaciones que se puedan llevar a cabo en el. Un derecho es el permiso para realizar alguna de las operaciones. Es posible que un objeto se encontré en varios dominios con” distintos” derechos en cada dominio. Un proceso se ejecuta en alguna de los dominios de protección: Existe una colección de objetos a lo que puede tener acceso. Cada objeto tiene cierto conjunto de derechos. Los procesos pueden alternar entre los dominios durante la ejecución. Una llamada al sistema operativo provoca una alternancia de dominio En algunos sistemas operativos los dominios se llaman anillos Una forma en que el sistema operativo lleva un registro de los objetos que pertenecen cada dominio es mediante una matriz. Los renglones son los dominios. Las columnas son los objetos. Cada elemento de la matriz contiene los derechos correspondientes al objeto en ese dominio, por ejemplo.; leer, escribir, ejecutar. Listas para el control de acceso Las “matrices de protección” son muy grandes y con muchos lugares vacíos. Desperdician espacio de almacenamiento. Existen métodos prácticos que almacenan solo los elementos no vacíos por filas o columnas. La lista de control de acceso (ACL: Access control list) Asocia a cada objeto una lista ordenada con: - Todos los dominios que puedan tener acceso al objeto. - La forma de dicho acceso (Ej.: lectura(r), grabación (w), ejecución(x)). Una forma de implementar las ACL consiste en: Asignar tres bits(r,w,x)para cada archivo,para: - El propietario, el grupo del propietario y los demás usuarios. Permitir que el propietario de cada objeto pueda modificar su ACL en cualquier momento. - Permite prohibir accesos antes permitidos. Posibilidades La matriz de protección también puede dividirse por renglones Se le asocia a cada proceso una lista de objetos a los cuales puede tener acceso. Se le indica las operaciones permitidas en cada uno. Esto define su dominio. La lista de objetos se denominan lista de posibilidades y los elementos individuales se llaman posibilidades. Cada posibilidad tiene: Un campo tipo: - Indica el tipo del objeto. Un campo derechos: - Mapa de bits que indica las operaciones básicas permitidas en este tipo de objeto. Un campo objeto: - Apuntador al propio objeto(por Ej.: su numero de nodo-i) Las listas de posibilidades son a su vez objetos y se les puede apuntar desde otras listas de posibilidades; esto facilita la existencia de subdominios compartidos. Las listas de posibilidades o listas-c deben ser protegidas del manejo indebido por parte del usuario. Los principales métodos de protección son: Arquitectura marcada: - Necesita un diseño de hardware en el que cada palabra de memoria tiene un bit adicional. - Indica si la palabra contiene una posibilidad o no - Solo puede ser modificado por el sistema operativo. Lista de posibilidades dentro del sistema operativo: - Los procesos hacen referencia a las posibilidades mediante su número. Lista de posibilidades cifrada dentro del espacio del usuario - Cada posibilidad esta cifrada con una clave secreta desconocida por el usuario - Muy adecuado para sistemas distribuidos Generalmente las posibilidades tienen derechos genéricos aplicables a todos los objetos Ej.: Copiar posibilidad: - Copiar objeto - Crear un duplicado del objeto con una nueva posibilidad Eliminar posibilidad: - Crear una nueva posibilidad para el mismo objeto. Eliminar un dato dentro de la lista-c sin afectar al objeto. Destruir objeto: - Eliminar en forma permanente un objeto y una posibilidad. Muchos sistemas con posibilidades se organizan como una colección de módulos con módulos administradores de tipos para cada tipo de objeto y entonces es esencial que el modulo administrador de tipos pueda hacer mas cosas con la posibilidad de un proceso ordinario. Se utiliza la técnica de amplificación de derechos: Los administradores de tipo obtienen una plantilla de derechos que les da más derechos sobre un objeto de los que permitía la propia lista de posibilidades. Modelos de Protección Las matrices de protección no son más estáticas sino dinámicas Se pueden identificar seis operaciones primitivas en la matriz de protección Crear objeto Eliminar objeto Crear dominio Eliminar dominio Insertar dominio Eliminar derecho Las primitivas se pueden combinar en comandos de protección, que pueden ser ejecutados por los programas del usuario para modificar la matriz de protección. En cada momento, la matriz de protección determina lo que puede hacer un proceso en cualquier momento; no determina lo que no esta autorizado a realizar. La matriz es impuesta por el sistema. La autorización tiene que ver con la política de administración Control de Acceso Por Clases de Usuarios Una matriz de control de acceso puede llegar a ser tan grande que resulte impractico mantenerla Una técnica que requiere menos espacio es controlar el acceso a varias clases de usuarios. Un ejemplo de esquema de clasificación es el siguiente: Propietario: - Usuario especificado - Suele ser el usuario que creo el archivo. El propietario especifica quien mas puede usar el archivo. Grupo o proyecto: - Los diferentes miembros de un grupo de trabajo sobre un proyecto, acceden a los diferentes archivos relacionados con el proyecto. Publico: - Un archivo publico puede ser accedido por cualquier usuario de la computadora - Generalmente permite leer o ejecutar pero no escribir sobre el archivo. Respaldo y Recuperación La destrucción de la información, ya sea accidental o intencional, es una realidad y tiene distintas causas. Fallas de hardware y de software Fenómenos meteorológicos atmosféricos Fallas en el suministro de energía Incendios e inundaciones Robos, vandalismo(incluso terrorismo) Etc. 6.4.6 IMPLEMENTACION Tal vez el aspecto más importante de la implementación del almacenamiento en archivos sea poder relacionar bloques de disco con archivos. Se emplean diversos métodos en los diferentes sistemas operativos. En esta sección examinaremos algunos de ellos. Asignación Contigua El esquema de asignación más sencillo es almacenar cada archivo como un bloque contiguo de datos en el disco. Así, en un disco con bloques de 1K, a un archivo de 50K se le asignarían 50 bloques consecutivos. Este esquema tiene dos ventajas importantes. Primera, la implementación es sencilla porque para saber dónde están los bloques de un archivo basta con recordar un número, la dirección en disco del primer bloque. Segunda, el rendimiento es excelente porque es posible leer todo el archivo del disco en una sola Operación. Desafortunadamente, la asignación contigua tiene también dos ventajas igualmente importantes. Primera, no es factible si no se conoce el tamaño máximo del archivó en el momento en que se crea el archivo. Sin esta información, el sistema operativo no sabrá cuánto espacio en disco debe reservar. Sin embargo, en los sistemas en los que los archivos deben escribirse de un solo golpe, el método puede usarse con gran provecho. La segunda desventaja es la fragmentación del disco que resulta de esta política de asignación. Se Desperdicia espacio que de otra forma podría haberse aprovechado. La compactación del disco suele tener un costo prohibitivo, aunque tal vez podría efectuarse de noche cuando el sistema estaría ocioso. Asignación por lista enlazada El segundo método para almacenar archivos es guardar cada uno como una lista enlazada de bloques de disco, como se muestra en la Fig. 5-8. La primera palabra de cada bloque se emplea como apuntador al siguiente. El resto del bloque se destina a datos. A diferencia de la asignación contigua, con este método es posible utilizar todos los bloques. No Se pierde espacio por fragmentación del disco (excepto por fragmentación interna en el último bloque). Además, basta con que en la entrada de directorio se almacene la dirección en disco del primer Bloque. El resto del archivo puede encontrarse siguiendo los enlaces. Por otro lado, aunque la lectura secuencial de un archivo es sencilla, el acceso aleatorio es Extremadamente lento. Además, la cantidad de almacenamiento de datos en un bloque ya no es una potencia de dos porque el apuntador ocupa unos cuantos bytes. Si bien tener un tamaño peculiar no es fatal, resulta menos eficiente porque muchos programas leen y escriben en bloques cuyo tamaño es una potencia de dos. Asignación por lista enlazada empleando un índice Las dos desventajas de la asignación por lista enlazada pueden eliminarse si se toma la palabra de Apuntador de cada bloque y se le coloca en una tabla o índice en la memoria. La Fig. 5-9 muestra el aspecto que la tabla tendría para el ejemplo de la Fig. 5-8. En ambas figuras, tenemos dos archivos. El archivo A usa los bloques de disco 4, 7, 2,10 y 12, en ese orden, y el archivo B usa los bloques de disco 6, 3, 11 y 14, en ese orden. Si usamos la tabla de la Fig. 5-9, podemos comenzar en el bloque 4 y seguir la cadena hasta el final. Lo mismo puede hacerse comenzando en el bloque 6. Si se emplea esta organización, todo el bloque está disponible para datos. Además, el acceso Directo es mucho más fácil. Aunque todavía hay que seguir la cadena para encontrar una distancia dada dentro de un archivo, la cadena está por completo en la memoria, y puede seguirse sin tener que consultar el disco. Al igual que con el método anterior, basta con guardar un solo entero (el número del bloque inicial) en la entrada de directorio para poder localizar todos los bloques, por más grande que sea el archivo. MS-DOS emplea este método para la asignación en disco. La desventaja primordial de este método es que toda la tabla debe estar en la memoria todo el Tiempo para que funcione. En el caso de un disco grande con, digamos, 500 000 bloques de 1K (500M), la tabla tendrá 500 000 entradas, cada una de las cuales tendrá que tener un mínimo de 3 bytes. Si se desea acelerar las búsquedas, se necesitarán 4 bytes. Así, la tabla ocupará de 1.5 a 2 megabytes todo el tiempo, dependiendo de si el sistema se optimiza en cuanto al espacio o en cuanto al tiempo. Aunque MS-DOS emplea este mecanismo, evita manejar tablas muy grandes empleando bloques grandes (de hasta 32K) en los discos de gran tamaño. Nodos-i Nuestro último método para saber cuáles bloques pertenecen a cuál archivo consiste en asociar a cada archivo una pequeña tabla llamada nodo-i (nodoíndice), que lista los atributos y las direcciones en disco de los bloques del archivo, como se muestra en la Fig. 5-10 Las primeras pocas direcciones de disco se almacenan en el nodo-i mismo, así que en el caso de Archivos pequeños toda la información está contenida en el nodo-i, que se trae del disco a la memoria principal cuando se abre el archivo. En el caso de archivos más grandes, una de las direcciones del nodo-i es la dirección de un bloque de disco llamado bloque de in dirección sencilla. Este bloque contiene direcciones de disco adicionales. Si esto todavía no es suficiente, otra dirección del nodo-i, llamada bloque de in dirección doble, contiene la dirección de un bloque que contiene una lista de bloques de indirección sencilla. Cada uno de estos bloques de indirección sencilla apunta a unos cuantos cientos de bloques de datos. Si ni siquiera con esto basta, se puede usar también un bloque de dirección triple. UNIX emplea este esquema. 6.5 Llamadas al sistema (system calls) Definición breve: llamadas que ejecutan los programas de aplicación para pedir algún servicio al SO. Cada SO implementa un conjunto propio de llamadas al sistema. Ese conjunto de llamadas es el interfaz del SO frente a las aplicaciones. Constituyen el lenguaje que deben usar las aplicaciones para comunicarse con el SO. Por ello si cambiamos de SO, y abrimos un programa diseñado para trabajar sobre el anterior, en general el programa no funcionará, a no ser que el nuevo SO tenga el mismo interfaz. Para ello: Las llamadas correspondientes deben tener el mismo formato. Cada llamada al nuevo SO tiene que dar los mismos resultados que la correspondiente del anterior. Modos de Ejecución en un CPU Las aplicaciones no deben poder usar todas las instrucciones de la CPU. No obstante el SO, tiene que poder utilizar todo el juego de instrucciones del CPU. Por ello, una CPU debe tener (al menos) dos modos de operación diferentes: Modo usuario: el CPU podrá ejecutar sólo las instrucciones del juego restringido de las aplicaciones. Modo supervisor: la CPU debe poder ejecutar el juego completo de instrucciones. Llamadas al Sistema Una aplicación, normalmente no sabe dónde está situada la rutina de servicio de la llamada. Por lo que si ésta se codifica como una llamada de función, cualquier cambio en el SO haría que hubiera que reconstruir la aplicación. Pero lo más importante es que una llamada de función no cambia el modo de ejecución de la CPU. Con lo que hay que conseguir llamar a la rutina de servicio, sin tener que conocer su ubicación, y hacer que se fuerce un cambio de modo de operación de la CPU en la llamada (y la recuperación del modo anterior en el retorno). Esto se hace utilizando instrucciones máquina diseñadas específicamente para este cometido, distintas de las que se usan para las llamadas de función. Bibliotecas de interfaz de llamadas al sistema Las llamadas al sistema no siempre tienen una expresión sencilla en los lenguajes de alto nivel, por ello se crean las bibliotecas de interfaz, que son bibliotecas de funciones que pueden usarse para efectuar llamadas al sistema. Las hay para distintos lenguajes de programación. La aplicación llama a una función de la biblioteca de interfaz (mediante una llamada normal) y esa función es la que realmente hace la llamada al sistema. Interrupciones y excepciones El SO ocupa una posición intermedia entre los programas de aplicación y el hardware. No se limita a utilizar el hardware a petición de las aplicaciones ya que hay situaciones en las que es el hardware el que necesita que se ejecute código del SO. En tales situaciones el hardware debe poder llamar al sistema, pudiendo deberse estas llamadas a dos condiciones: Algún dispositivo de E/S necesita atención. Se ha producido una situación de error al intentar ejecutar una instrucción del programa (normalmente de la aplicación). En ambos casos, la acción realizada no está ordenada por el programa de aplicación, es decir, no figura en el programa. Según los dos casos anteriores tenemos las interrupciones y las excepciones: Interrupción: señal que envía un dispositivo de E/S a la CPU para indicar que la operación de la que se estaba ocupando, ya ha terminado. Excepción: una situación de error detectada por la CPU mientras ejecutaba una instrucción, que requiere tratamiento por parte del SO. Tratamiento de las interrupciones Una interrupción se trata en todo caso, después de terminar la ejecución de la instrucción en curso. El tratamiento depende de cuál sea el dispositivo de E/S que ha causado la interrupción, ante la cual debe poder identificar el dispositivo que la ha causado. Importancia de las interrupciones El mecanismo de tratamiento de las interrupciones permite al SO utilizar la CPU en servicio de una aplicación, mientras otra permanece a la espera de que concluya una operación en un dispositivo de E/S. El hardware se encarga de avisar al SO cuando el dispositivo de E/S ha terminado y el SO puede intervenir entonces, si es conveniente, para hacer que el programa que estaba esperando por el dispositivo, se continúe ejecutando. En ciertos intervalos de tiempo puede convenir no aceptar señales de interrupción. Por ello las interrupciones pueden inhibirse por programa (aunque esto no deben poder hacerlo las mismas). 6.6 TIPOS DE INTERFAZ Interfaz de preguntas y respuestas Interfaz de menú simple Interfaz orientada a ventanas Interfaz de cuarta generación Interfaz de preguntas y respuestas: En los primeros días de las computadoras (antes de pantallas gráficas, el ratón, etc.) era la única forma realista de interfaz. El usuario podía comunicarse con el sistema específico con órdenes de la forma indicada en la figura. Aunque es una forma concisa, es muy propensa a errores, muy estricta y difícil de aprender. Interfaz de menú simple: Es una variante de la forma anterior, se presenta al usuario una lista de opciones y la selección se realiza por medio de un número, letra o un código en particular. Ofrece al usuario un contexto global y tiene menos porcentaje de errores que el anterior, pero su uso puede llegar a ser tedioso. Este es el caso de las opciones del ejemplo de la figura, que incluyen subopciones (que a su vez puede incluir otras opciones) dentro de las opciones principales. Interfaz orientada a ventanas: A medida que el hardware se ha hecho más eficiente y los ingenieros de software han aprendido más sobre los factores humanos, las técnicas de interfaz evolucionaron, llegando a lo que se conoce como interfaces de la tercera generación. Ofrece al usuario las siguientes ventajas: - Se puede visualizar diferentes tipos de información simultáneamente - El esquema de menús desplegadles permite realizar muchas tareas interactivas diferentes. - Se realizan tareas de control y de dialogo en forma sencilla. - La utilización de menús desplegadles, botones y técnicas de presentación reducen el manejo del teclado. Interfaz de cuarta generación: Esta es la generación actual. Une todos los atributos de la generación anterior con el hipertexto y la multitarea (varias tareas simultáneamente). 6.7 LENGUAJES DE COMUNICACION (comandos de control) y Pipelines o Conductos. Los lenguajes de comunicación son aquellos que entiende la maquina ya sea en MS-dos y código ASCII y para el usuario serian los numéricos, letras, caracteres especiales etc. Los pipelines sirven para ejecutar uno o varios procesos a la vez: Por ejemplo: En la línea de tiempo aparentemente: Conductos y Archivos Especiales: Los conductos y los archivos especiales difieren de los archivos ordinarios en un aspecto importante. Dando un proceso trata de leer de, o escribir en, un archivo en disco, no hay duda de que la acción se completará en unos cuantos cientos de milisegundos como máximo. En el peor de casos, podrían necesitarse dos o tres accesos a disco, no más. Al leer de un conducto, la sitúales diferente: si el conducto está vacío, el lector tendrá que esperar hasta que algún otro proBcoloque datos en él, lo cual podría tardar horas. Asimismo, al leer de una Terminal, un procera que esperar hasta que alguien teclee algo. Por tanto, la regla normal que tiene el sistema de archivos de atender una solicitud hasta ir no Funciona aquí. Es necesario suspender las solicitudes y reiniciarías después. Cuando «so trata de leer de, o escribir en, un conducto, el sistema de archivos puede verificar el del conducto de inmediato para ver si la operación puede completarse. Si se puede, se ejecuta, pero si no, el sistema de archivos registra los parámetros de la llamada al sistema en la e procesos, a fin de poder reiniciar el proceso cuando llegue el momento. Cabe señalar que el sistema de archivos no necesita emprender acción alguna para hacer que el Irse suspenda; lo único que tiene que hacer es no enviar una respuesta, dejando al invocador Bloqueado esperándola. Así pues, después de suspender un proceso, el sistema de archivos regresa a su ciclo principal para esperar la siguiente llamada al sistema. Tan pronto como otro proceso modifica el estado del conducto de modo tal que el proceso suspendido ya puede completar la operación, el sistema de archivos iza una bandera para que en la siguiente iteración del ciclo principal extraiga de la tabla de procesos los parámetros del proceso suspendido y ejecute la llamada. La situación con las terminales y otros archivos especiales por caracteres es un poco distinta. El nodo-i de cada archivo especial contiene dos números, el dispositivo principal y el dispositivo secundario. El número de dispositivo principal indica la clase del dispositivo (p. ej., disco en RAM, disquete, disco duro, Terminal) y se usa como índice para consultar una tabla del sistema de archivos que lo transforma en el número de la tarea correspondiente (es decir, controlador de E/S). En efecto, el dispositivo principal determina cuál controlador de E/S debe invocarse. El número de dispositivo secundario se pasa al controlador como parámetro, y especifica cuál dispositivo debe usarse, por ejemplo, la Terminal 2 o la unidad de disco 1.