Download Diseño de un sistema de archivos. - hola, este es el servidor de

Document related concepts

Sistema de archivos wikipedia , lookup

Archivo (informática) wikipedia , lookup

Cifrado de disco wikipedia , lookup

Hierarchical File System wikipedia , lookup

Desfragmentación wikipedia , lookup

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.