martes, 5 de diciembre de 2017

6.8.- Cifrado

Concepto de Cifrado.
El cifrado es un método que permite aumentar la seguridad de un mensaje o de un archivo mediante la codificación del contenido, de manera que sólo pueda leerlo la persona que cuente con la clave de cifrado adecuada para descodificarlo. Por ejemplo, si realiza una compra a través de Internet, la información de la transacción (como su dirección, número de teléfono y número de tarjeta de crédito) suele cifrarse a fin de mantenerla a salvo. Use el cifrado cuando desee un alto nivel de protección de la información.
Métodos y Técnicas de Cifrado:
Cifrado de sustitución
El cifrado de sustitución consiste en reemplazar una o más entidades (generalmente letras) de un mensaje por una o más entidades diferentes.
Existen varios tipos de criptosistemas de sustitución:
·         La sustitución monoalfabética consiste en reemplazar cada una de las letras del mensaje por otra letra del alfabeto.
·         La sustitución polialfabética consiste en utilizar una serie de cifrados monoalfabéticos que son re-utilizados periódicamente.
·         La sustitución homófona hace posible que cada una de las letras del mensaje del texto plano se corresponda con un posible grupo de caracteres distintos.
·         La sustitución poligráfica consiste en reemplazar un grupo de caracteres en un mensaje por otro grupo de caracteres.
Cifrado César
Este código de cifrado es uno de los más antiguos ya que su uso se remonta a Julio César. El principio de cifrado se basa en la adición de un valor constante a todos los caracteres de un mensaje o, más precisamente, a su código ASCII.
Cifrado ROT 13
El caso específico del cifrado César donde la clave de cifrado es N (la 13º letra del alfabeto) se denomina ROT 13 (se eligió el número 13, la mitad de 26, para que sea posible cifrar y descifrar fácilmente mensajes textuales).
Cifrado de Transposición
El método de cifrado por transposición consiste en reordenar datos para cifrarlos a fin de hacerlos ininteligibles. Esto puede significar, por ejemplo, reordenar los datos geométricamente para hacerlos visualmente inutilizables.
El Cifrado Simétrico.
El cifrado simétrico (también conocido como cifrado de clave privada o cifrado de clave secreta) consiste en utilizar la misma clave para el cifrado y el descifrado.
El cifrado consiste en aplicar una operación (un algoritmo) a los datos que se desea cifrar utilizando la clave privada para hacerlos ininteligibles. El algoritmo más simple (como un OR exclusivo) puede lograr que un sistema prácticamente a prueba de falsificaciones (asumiendo que la seguridad absoluta no existe).
El Cifrado Asimétrico.
El cifrado asimétrico (también conocido como cifrado con clave pública). En un criptosistema asimétrico (o criptosistema de clave pública), las claves se dan en pares:
·         Una clave pública para el cifrado.
·         Una clave secreta para el descifrado.

En un sistema de cifrado con clave pública, los usuarios eligen una clave aleatoria que sólo ellos conocen (ésta es la clave privada). A partir de esta clave, automáticamente se deduce un algoritmo (la clave pública). Los usuarios intercambian esta clave pública mediante un canal no seguro.

6.7.- Validación y Amenazas al Sistema

Amenazas a la seguridad en el acceso al sistema:
·         Intrusos.
·         Programas malignos.
Intrusos:
1.   Piratas o hackers: individuos que acceden al sistema sin autorización.
2.   Los sistemas presentan agujeros por donde los hackers consiguen colarse.
Técnicas de intrusión:
1.   Averiguar contraseñas (más del 80% de las contraseñas son simples).
2.   Probar exhaustivamente.
3.   Descifrar archivo de contraseñas.
4.   Intervenir líneas.
5.   Usar caballos de Troya. 
Técnicas de prevención de intrusos:
Establecer una buena estrategia de elección de contraseñas:
·         Contraseñas generadas por ordenador (difícil memorización).
·         Inspección activa (proceso periódico de averiguación).
·         Inspección proactiva (decidir si es buena en su creació
Técnicas de detección de intrusos:
Investigar actividades inusuales:
·         Detección de anomalías estadísticas.
·         Uso de registros de auditoría que recogen información del comportamiento de cada usuario.
·         Detección basada en reglas.
·         Conjunto de reglas empleadas para decidir si una actividad es inusual. 
Tipos de amenazas:
Amenazas pasivas:
·         Revelación del contenido del mensaje.
Amenazas activas:
·         Alteración del flujo de mensajes.
Privación del servicio:
·          Impide el uso normal de los servicios de comunicaciones.
  Suplantación:
·           Cuando una entidad finge ser otra diferente. 
  Análisis del tráfico:
·         En caso de que los mensajes vayan encriptados.
·         Determinar las máquinas que se comunican y la frecuencia y longitud de los mensajes.
·         Alteración del flujo de mensajes.

Clasificación de programas malignos:
Programas malignos que necesitan anfitrión:
Forman parte de un programa. 
Trampillas:
·         Punto de entrada secreto a un programa.
·         Se usan para depuración y prueba.
·         Pueden usarse para acceso no autorizado. 
Bomba lógica:
·         Se ejecutan cuando se cumplen ciertas condiciones.
·         Ej: se borra el disco duro si programador no estáen nómina. 
Caballo de Troya:
·         Código dañino incrustado en programa que se ejecuta cuando se ejecuta el programa. 

Programas malignos que no necesitan anfitrión:
Gusanos:
·         Programas independientes.
·         Se reproducen a través de la red.
·         Además de propagarse pueden causar daños. 
Bacterias:
·         No dañan explícitamente.
·         Su único objetivo es reproducirse.
·         Se reproducen exponencialmente agotando la capacidad del procesador. 
Virus:
·         Código incrustado en un programa.
·         Se reproducen e insertan en otros programas.
·         Pueden causar daños.

Algoritmo de virus muy simple (tan sólo se reproduce):
·         Encontrar 1ª instrucción de un ejecutable del disco.
·         Sustituirla por salto a posición siguiente a la última instrucción.
·         Insertar copia del código de virus (este algoritmo) en dicha posición.
·         Hacer que el virus simule la instrucción sustituida por el salto.

·         Saltar a la segunda posición.

6.6.- Clasificaciones de La Seguridad

Clasificación de seguridad.
Es decir que la clasificación de los sistemas de computación según sus requerimientos de la seguridad ha sido ampliamente discutida de la seguridad del sistema.
En esta clasificación especifica, hay cuatro niveles de seguridad: a, b, c y d… a continuación, se describen estos niveles de seguridad y las características de cada uno.
·         Nivel D es el Sistemas con protección mínima o nula no pasan las pruebas de seguridad mínima. MS-DOS y Windows 3. 1 son sistemas de nivel d. Puesto que están pensados para un sistema mono proceso y mono usuario, no proporcionan ningún tipo de control de acceso ni de separación de recursos.
·         Nivel C a la Capacidad discrecional para proteger recursos, La aplicación de los mecanismos de protección depende del usuario, o usuarios, que tienen privilegios sobre los mismos. Entonces esto significa que un objeto puede estar disponible para lectura, escritura o cualquier otra operación. Y entonces casi todos los sistemas operativos comerciales de propósito general, como Unix, Linux o Windows NT se clasifican en este nivel.es decir dos son:
  • Control de acceso por dominios.
  • Control de acceso individualizado.
·         Nivel B es el Control de acceso obligatorio en este nivel, los controles de acceso no son discrecionales de los usuarios o los dueños de los recursos, que deben existir obligatoriamente. Esto significa que todo objeto controlado debe tener protección sea del tipo que sea. Es decir que son tres y son:
  • Etiqueta de seguridad obligatoria.
  • Protección estructurada.
  • Y el dominio de seguridad.
·         Nivel A es el Sistemas de seguridad certificados para acceder a este nivel, la política de seguridad y los mecanismos de protección del sistema deben ser verificados y certificados por un organismo autorizado para ello.es decir dos tipos:
  • Diseño verificado.
  • Desarrollo controlado.

6.5.- Concepto de Seguridad

La seguridad está definida en el diccionario como el conjunto de medidas tomadas para protegerse contra robos, ataques, crímenes y espionajes o sabotajes. La seguridad implica la cualidad o estado de estar seguro, es decir, la evitación de exposiciones a situaciones de peligro y la actuación para quedar a cubierto frente a contingencias adversas.
El uso creciente y la confianza en los computadores en todo el mundo ha hecho surgir una preocupación legítima con respecto a la seguridad informática. El uso de los computadores ha extendido en ambientes comerciales, gubernamentales, militares e incluso en los hogares. Grandes cantidades de datos vitales sensibles se están confiando y almacenado cada vez más en computadores. Entre ellos se incluyen registros sobre individuos, negocios y diferentes registros públicos y secretos gubernamentales y militares. Grandes transacciones monetarias tienen lugar diariamente en forma de transferencia electrónicas de fondos. Más recientemente, informaciones tales como notificaciones de propiedad intelectual y datos comerciales estratégicos son también almacenados, procesados y diseminados mediante computadores. Entre ellos se incluyen diseños de ventas, contratos legales y muchos otros.
La seguridad, no solo requiere un sistema de protección apropiado, sino también considerar el entorno externo en el que el sistema opera. La protección interna no es útil si la consola del operador está al alcance de personal no autorizado, o si los archivos se pueden sacar simplemente del sistema de computación y llevarse a un sistema sin protección. Estos problemas de seguridad son esencialmente de administración, no problemas del sistema operativo.

La información almacenada en el sistema, así como los recursos físicos del sistema de computación, tienen que protegerse contra acceso no autorizado, destrucción o alteración mal intencionada, y la introducción accidental de inconsistencia.

6.4.- Protección Basada en el Lenguaje.

La protección que se ofrece en los sistemas de computación existentes casi siempre se ha logrado con la ayuda del núcleo de un sistema operativo, que actúa como agente de seguridad que inspecciona y valida cada intento por acceder a un recurso protegido. Puesto que la validación de todos los accesos puede dar pie a un gasto extra considerable, debemos apoyarla con hardware para reducir el costo de cada validación o bien debemos aceptar que el diseñador del sistema podría inclinarse por sacrificar los objetivos de la protección. Es difícil satisfacer todos estos objetivos si los mecanismos de soporte con que se cuenta restringen la flexibilidad para implementar diversas políticas de protección. 
A medida que ha aumentado la complejidad de los sistemas operativos, sobre todo al trata de ofrecer interfaces de más alto nivel con el usuario, lo objetivos de la protección se han vuelto mucho más refinados. En esta refinación observamos que los diseñadores de los diseñadores de los sistemas de protección se han apoyado mucho en ideas que se originaron en los lenguajes de programación y especialmente en los conceptos de tipos de datos abstractos y objetos. Los sistemas de protección ahora se ocupan no sólo de la identidad de un recurso al cual se intenta acceder, sino también de la naturaleza funcional de ese acceso. En los sistemas de protección más nuevos, el interés en la función que se invocará se extiende más allá de un conjunto de funciones definidas por el sistema, como los métodos de acceso a archivos estándar, para incluir funciones que también podrían ser definidas por el usuario.
Las políticas para el uso de recursos también podrían variar, dependiendo de la aplicación, y podrían cambiar con el tiempo. Por estas razones, la protección ya no puede considerarse como un asunto que sólo concierne al diseñador de un sistema operativo; también debe estar disponible como herramienta que el diseñador de aplicaciones pueda usar para proteger los recursos de un subsistema de aplicación contra intervenciones o errores.
Aquí es donde los lenguajes de programación entran en escena. Especificar el control de acceso deseado a un recurso compartido en un sistema es hacer una declaración acerca del recurso. Este tipo de declaración se puede integrar en un lenguaje mediante una extensión de su mecanismo de tipificación. Si se declara la protección junto con la tipificación de los datos, el diseñado de cada subsistema puede especificar sus necesidades de protección así debería darse directamente durante la redacción del programa, y en el lenguaje en el que el programa mismo se expresa. Este enfoque tiene varias ventajas importantes:
·         Las necesidades de protección se declaran de forma sencilla en vez de programarse como una secuencia de llamadas a procedimientos de un sistema operativo.
·         Las necesidades de protección pueden expresarse independientemente de los recursos que ofrezca un sistema operativo en particular.
·         El diseñador de un subsistema no tiene que proporcionar los mecanismos para hacer cumplir la protección.
·         Una notación declarativa es natural porque los privilegios de acceso están íntimamente relacionados con el concepto lingüístico de tipo de datos.
Hay diversas técnicas que una implementación de lenguaje de programación puede utilizar para hacer cumplir la protección, pero cualquiera de ellas deberá depender hasta cierto punto del grado de soporte de una máquina subyacente y su sistema operativo.
¿Qué ventajas relativas tiene entonces el cumplimiento basado exclusivamente en un núcleo, en comparación con el cumplimiento forzado en gran medida por un compilador?
·         Seguridad: La obligación del cumplimiento por un núcleo ofrece un mayor grado de seguridad del sistema de protección mismo, que el que ofrece la generación de código de verificación de protección por un compilador. En un esquema apoyado por compilador, la seguridad depende de lo correcto que sea el traductor, de algún mecanismo subyacente de gestión de almacenamiento que proteja los segmentos desde los cuales se ejecuta el código compilador y, en última instancia, de la seguridad de los archivos desde los que se carga el programa.
·         Flexibilidad: Hay límites a la flexibilidad de un núcleo de protección para implementar una política definida por el usuario, aunque podría proporcionar recursos suficientes para que el sistema haga cumplir sus propias políticas. Con un lenguaje de programación, se puede declarar la política de protección y hacerse cumplir según sea necesario en una implementación.
·         Eficiencia: Se logra la eficiencia máxima cuando hardware apoya directamente el cumplimiento de la protección. En la medida en que se requiera soporte de software, el cumplimiento basado en el lenguaje tiene la ventaja de que es posible verificar el cumplimiento del acceso estático fuera de línea en el momento de la compilación.


En síntesis, la especificación de la protección en un lenguaje de programación permite describir un alto nivel de políticas de asignación y uso de recursos.

6.3.- Implantación de Matrices de Acceso

¿Qué es el Dominio de Protección?

  • Un sistema computacional esta compuesto por procesos y objetos, los Objetos involucran Hardware y Software, cada objeto tiene un nombre único que lo diferencia y cada objeto puede ser accesado solamente mediante operaciones bien definidas. Ejemplo:
    1. El CPU se utiliza solamente para ejecución.
    2. Los segmentos de memoria se pueden leer y escribir.
    3. Un archivo puede ser leído, escrito, ejecutado y borrado.

6.2.- Funciones del Sistema de Protección.

Dado que los sistemas de computo se han venido haciendo cada vez más sofisticados en sus aplicaciones, la necesidad de proteger su integridad, también ha crecido. Los aspectos principales de protección en un Sistema Operativo son:
1.  Protección de los procesos del sistema contra los procesos de usuario.
2. Protección de los procesos de usuario contra los de otros procesos de usuario.
3. Protección de Memoria.

4. Protección de los dispositivos. 

6.1.- Concepto y Objetivos de Protección

Los procesos en un sistema operativo deben protegerse de las actividades realizadas por otros procesos. Para proporcionar dicha protección, podemos utilizar diversos mecanismos para garantizar que sólo los procesos que hayan obtenido la adecuada autorización del sistema operativo puedan operar sobre los archivos, los segmentos de memoria, sobre la CPU y sobre otros recursos del sistema. .
El concepto de protección hace referencia a un mecanismo para controlar el acceso de los programas, de los procesos o de los usuarios a los recursos definidos por el sistema informático. Este mecanismo debe proporcionar un medio de especificar los controles que hay que imponer, junto con un modo de imponerlos. Podemos distinguir entre los conceptos de protección y seguridad; este último es una medida de la confianza en que se puedan preservar la integridad de un sistema de sus datos.
 .
Objetivos de la protección.
  .
A medida que los sistemas informáticos se han hecho más sofisticados y a medida que su rango de aplicaciones se ha ido incrementando, también ha crecido la necesidad de proteger la integridad de esos sistemas. La protección se concebía originalmente como algo asociado a los sistemas operativos multiprogramados, de modo que a los usuarios que no fueran de confianza pudieran compartir de manera segura un espacio lógico de nombres común, como por ejemplo un directorio de archivos, o compartir un espacio físico de nombres común, como por ejemplo la memoria. Los conceptos modernos de protección han evolucionado para incrementar la fiabilidad de cualquier sistema complejo que haga uso de recursos compartidos.
Necesitamos proporcionar protección por diversas razones. La más obvia es la necesidad de impedir una violación maliciosa e intencionada de una restricción de acceso por parte de un usuario. Sin embargo, tiene una mayor importancia general la necesidad de garantizar que cada componente de programa activo en un sistema utilice los recursos del sistema sólo en ciertas formas que sean coherentes con las políticas establecidas. Este requerimiento tiene un carácter primordial si se quiere disponer de un sistema fiable.
 .
Los mecanismos de protección pueden mejorar la fiabilidad detectando los errores latentes en las interfaces definidas entre los distintos subsistemas de componentes. La detección temprana de errores de interfaz puede a menudo impedir que un subsistema correcto se vea contaminado por otro que no esté funcionando adecuadamente. Un recurso no protegido no puede defenderse frente al uso (o mal uso) por parte de un usuario no autorizado o incompetente. Un sistema orientado a la protección proporcionará medios para distinguir entre el uso autorizado y el no autorizado.
  
.
El papel de protección en un sistema informático es proporcionar un mecanismo para la imposición de las políticas que gobiernen el uso de recursos. Estas políticas pueden establecerse de diversas formas. Algunas están fijas en el diseño de un sistema, mientras que otras se formulan al administrar ese sistema. Existen también otras que son definidas por los usuarios individuales para proteger sus propios archivos y programas. Un sistema de protección deberá tener la flexibilidad sificiente para poder imponer una diversidad de políticas.
  
.
Las políticas de uso de recursos pueden variar según la aplicación y también pueden variar a lo largo del tiempo. Por estas razones, la protección no es sólo cuestión del diseñador de un sistema operativo. El programador de aplicaciones necesita utilizar también los mecanismos de protección, para defender de un uso incorrecto los recursos creados y soportados por un subsistema de aplicación. En este capítulo, describiremos los mecanismos de protección que el sistema operativo debe proporcionar para que los diseñadores de aplicaciones puedan usarlos a la hora de diseñar su propio software de protección.
 
.
Observe que los mecanismos son distintos de las políticas. Los mecanismos determinan cómo se llevará algo a cabo; las políticas deciden qué es lo que hay que hacer. La separación entre políticas y mecanismos resulta importante si queremos tener una cierta flexibilidad. Es probable que las políticas cambien de un lugar a otro a lo largo del tiempo. En el caso peor, cada cambio de políticas requeriría un cambio en el mecanismo subyacente; la utilización de mecanismos generales nos permite evitar este tipo de situaciones.
 
.
La protección es un mecanismo control de acceso de los programas, procesos o usuarios al sistema o recursos. Hay importantes razones para proveer protección. La más obvia es la necesidad de prevenirse de violaciones intencionales de acceso por un usuario. Otras de importancia son, la necesidad de asegurar que cada componente de un programa, use solo los recursos del sistema de acuerdo con las políticas fijadas para el uso de esos recursos.
 
.
Un recurso desprotegido no puede defenderse contra el uso no autorizado o de un usuario incompetente. Los sistemas orientados a la protección proveen maneras de distinguir entre uso autorizado y desautorizado. 
·             Inicialmente protección del SO frente a usuarios poco confiables.
·           Protección: control para que cada componente activo de un proceso sólo pueda acceder          a los recursos especificados, y sólo en forma congruente con la política establecida.
·                     La mejora de la protección implica también una mejora de la seguridad.
·                     Las políticas de uso se establecen:
·                                             Por el hardware.
·                                             Por el administrador / SO.
·                                             Por el usuario propietario del recurso.
·                     Principio de separación entre mecanismo y política:
·                                             Mecanismo con qué elementos (hardware y/o software) se realiza la protección.
·                                             Política es el conjunto de decisiones que se toman para especificar cómo se usan esos elementos de protección.
·                     La política puede variar dependiendo de la aplicación, a lo largo del tiempo.

·                     La protección no sólo es cuestión del administrador, sino también del usuario.

5.8 Mecanismos Recuperación Caso de Falla

Debido a que los archivos se mantienen tanto en memoria principal como en el disco, debemos asegurarnos de que un fallo del sistema no de por resultado la perdida de datos o inconsistencia en los mismos.

La destrucción de la información, ya sea accidental o intencional, es una realidad y tiene distintas causas:
  1. Fallas de hardware y de software
  2. Fenómenos meteorológicos atmosféricos
  3. Fallas en el suministro de energía
  4. Incendios e inundaciones
  5. Robos, vandalismo (incluso terrorismo)
  6. Esta posible destrucción de la información debe ser tenida en cuenta por:
  7. Los sistemas operativos en general
  8. Los sistemas de archivos en particular
Una técnica muy usada para asegurar la disponibilidad de los datos es realizar respaldos periódicos:
  1. Hacer con regularidad una o más copias de los archivos y colocarlas en lugar seguro.
  2. Todas las actualizaciones realizadas luego del último respaldo pueden perderse.
Otra técnica es pasar todas las transacciones a un archivo, copiándolas en otro disco:
  • Genera una redundancia que puede ser costosa
  • En caso de fallas en el disco principal, puede reconstruirse todo el trabajo perdido si el disco de reserva no se dañó también
También existe la posibilidad del respaldo incremental:
  • Durante una sesión de trabajo los archivos modificados quedan marcados.
  • Cuando un usuario se retira del sistema (deja de trabajar), un proceso del sistema efectúa el respaldo de los archivos marcados.
  • Se debe tener presente que es muy difícil garantizar una seguridad absoluta de los archivos.
El método correcto de manejar fallos consiste básicamente en detectarlos a tiempo y de forma correcta. La inclusión de equipos de test en el sistema es esencial para mantener esta capacidad de monitorización.

En cualquier caso, la caída total o parcial del sistema se puede subsanar en parte si hay puntos de restauración del sistema (chkpt). Esta posibilidad aumenta la disponibilidad de recuperación en caso de fallos.

  1. Mecanismos de Protección
  2. Dominios de Protección
  3. Muchos objetos del sistema necesitan protección, tales como la cpu, segmentos de memoria, unidades de disco, terminales, impresoras, procesos, archivos, bases de datos, etc.
  4. Cada objeto se referencia por un nombre y tiene habilitadas un conjunto de operaciones sobre él.
Un dominio es un conjunto de parejas (objeto, derechos):
Cada pareja determina:
  1. Un objeto.
  2. Un subconjunto de las operaciones que se pueden llevar a cabo en él.
  3. Un derecho es el permiso para realizar alguna de las operaciones. Es posible que un objeto se encuentre en varios dominios con “distintos” derechos en cada dominio. 
  4. Un proceso se ejecuta en alguno de los dominios de protección:
  5. Existe una colección de objetos a los que puede tener acceso.
  6. Cada objeto tiene cierto conjunto de derechos.
Una forma en la que el S. O. lleva un registro de los objetos que pertenecen a 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 ej.: leer, escribir, ejecutar.
  • Listas Para 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 por columnas.
La lista de control de acceso (ACL: access control list):
Asocia a cada objeto una lista ordenada con:
  • Todos los dominios que pueden tener acceso al objeto.
  • La forma de dicho acceso (ej: lectura ®, 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 indican las operaciones permitidas en cada uno.
  • Esto define su dominio.
La lista de objetos se denomina lista de posibilidades y los elementos individuales se llaman posibilidades. 
Cada posibilidad tiene:
  1. Un campo tipo:
  2. Indica el tipo del objeto.
  3. Un campo derechos:
  4. 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 número de nodo-i).

5.7 Modelo Jerarquico Memoria Secundaria

Tanenbaum y Woodhull (1997) definen lo siguiente en su investigación:

  • La cuestión de la cantidad es simple, cuanto más memoria haya disponible, más podrá utilizarse. La velocidad óptima para la memoria es la velocidad a la que el procesador puede trabajar, de modo que no haya tiempos de espera entre cálculo y cálculo, utilizados para traer operandos o guardar resultados. En suma, el costo de la memoria no debe ser excesivo, para que sea factible construir un equipo accesible.
Como puede esperarse los tres factores compiten entre sí, por lo que hay que encontrar un equilibrio. Las siguientes afirmaciones son válidas:
  1. A menor tiempo de acceso mayor coste
  2. A mayor capacidad mayor coste
  3. A mayor capacidad menor velocidad.
  • Se busca entonces contar con capacidad suficiente de memoria, con una velocidad que sirva para satisfacer la demanda de rendimiento y con un coste que no sea excesivo. Gracias a un principio llamado cercanía de referencias, es factible utilizar una mezcla de los distintos tipos y lograr un rendimiento cercano al de la memoria más rápida.

5.6 Manejo Espacio Memoria Secundaria

Tanenbaum y Woodhull (1997) Abarcan los siguientes conceptos en su investigación:


  • La memoria secundaria requiere que la computadora use sus canales de entrada/salida para acceder a la información y se utiliza para almacenamiento a largo plazo de información persistente. Sin embargo, la mayoría de los sistemas operativos usan los dispositivos de almacenamiento secundario como área de intercambio para incrementar artificialmente la cantidad aparente de memoria principal en la computadora. La memoria secundaria también se llama "de almacenamiento masivo".
  • Habitualmente, la memoria secundaria o de almacenamiento masivo tiene mayor capacidad que la memoria primaria, pero es mucho más lenta. En las computadoras modernas, los discos duros suelen usarse como dispositivos de almacenamiento masivo. El tiempo necesario para acceder a un byte de información dado almacenado en un disco duro es de unas milésimas de segundo (milisegundos). En cambio, el tiempo para acceder al mismo tipo de información en una memoria de acceso aleatorio se mide en mil-millonésimas de segundo (nanosegundos).

5.5 Mecanismos De Acceso a Los Archivos

Tanenbaum y Woodhull (1997) Abarcan los siguientes mecanismos en su investigación:

  • Método de Acceso Secuencial: El acceso secuencial significa que un grupo de elementos es accedido en un predeterminado orden secuencial. El acceso secuencial es a veces la única forma de acceder a los datos, por ejemplo en una cinta de cassette.
  • Método de Acceso Secuencial Indexado: Método de acceso secuencial indexado. Método común de acceso a disco que almacena datos en forma secuencial, al tiempo que mantiene un índice de campos claves para todos los registros en el archivo para acceso directo.
  • Método de Acceso Directo o de Dispersión (Hashed): Los archivos directos explotan la capacidad de los discos para acceder directamente a cualquier bloque de dirección conocida. Como en los archivos secuenciales y secuenciales indexados, se requiere un campo clave en cada registro. Sin embargo, aquí no hay concepto de ordenamiento secuencial.

5.4 Organización Lógica Y Física de los Sistemas De Archivos

Tanenbaum y Woodhull (1997) Describen en su investigación:

  • Un sistema de archivos garantiza la organización lógica de los datos en los discos duros y proporciona al sistema operativo las rutinas necesarias para que puedan ser accedidos, modificados y eliminados.
  • Cualquier sistema operativo suele tener soporte para varios sistemas de archivos, aunque sólo sea en modo lectura. Los sistemas de archivos de la familia Microsoft que podemos encontrarnos son: FAT (FAT16 y FAT32) y NTFS (NTFS4, NTFS5). NTFS (New Technology File System) fue diseñado para NT e incorporaba un sistema de seguridad integrado que nos permitía asignar permisos a archivos y directorios a nivel de usuarios y grupos. Definiciones relacionadas con un sistema de archivo:
  • Unidad física: El propio disco duro, sin más.
  • Unidad lógica: Fragmento que se comporta como una partición y que está dentro de una partición extendida.
  • Partición: Puede ser el total del tamaño del disco o una parte.
  • Partición primaria: Partición que el sistema marca como iniciable o arrancable.
  • Partición extendida: partición que no es de inicio y que a su vez puede contener unidades lógicas. Sólo puede haber una por disco.
  • RAID (matriz redundante de discos independientes): Utilizar varias unidades físicas en una matriz para ofrecer mayor tamaño, tolerancia a fallos y mayor rendimiento. Hay varios niveles, RAID-0, RAID-1, RAID-5,etc. La numeración no indica mejor rendimiento o tolerancia a fallos, tan solo diferencias de métodos.

5.3.- Componentes de un Sistema de Archivos.

Un “Archivo” es un conjunto de registros relacionados.

El “Sistema de Archivos” es un componente importante de un S. O. y suele contener:
  • “Métodos de acceso” relacionados con la manera de acceder a los datos almacenados en archivos.
  • “Administración de archivos” referida a la provisión de mecanismos para que los archivos sean almacenados, referenciados, compartidos y asegurados.
  •  “Administración del almacenamiento auxiliar” para la asignación de espacio a los archivos en los dispositivos de almacenamiento secundario.
  •  “Integridad del archivo” para garantizar la integridad de la información del archivo.
El sistema de archivos está relacionado especialmente con la administración del espacio de almacenamiento secundario, fundamentalmente con el almacenamiento de disco.
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.
En sistemas de archivo “jerárquicos” el nombre del sistema para un archivo suele estar formado como el “nombre de la trayectoria” del directorio raíz al archivo.
Archivos
Se considerará el punto de vista del usuario.
Nombre de los Archivos
Las reglas exactas para los nombres de archivos varían de sistema a sistema.
Algunos sistemas de archivos distinguen entre las letras mayúsculas y minúsculas, mientras que otros no.
Muchos S. O. utilizan nombres de archivo con dos partes, separadas por un punto:
  •  La parte posterior al punto es la extensión de archivo y generalmente indica algo relativo al archivo, aunque las extensiones suelen ser meras convenciones.
Estructura de un Archivo

Los archivos se pueden estructurar de varias maneras, las más comunes son:

  • “Secuencia de bytes”:
  • El archivo es una serie no estructurada de bytes.
  •  Posee máxima flexibilidad.
  •  El S. O. no ayuda pero tampoco estorba.
  • “Secuencia de registros”:
  •  El archivo es una secuencia de registros de longitud fija, cada uno con su propia estructura interna.
  • “Árbol ”:
  •  El archivo consta de un árbol de registros, no necesariamente de la misma longitud.
  • Cada registro tiene un campo key (llave o clave) en una posición fija del registro.
  • El árbol se ordena mediante el campo de clave para permitir una rápida búsqueda de una clave particular.
Tipos de Archivos
Muchos S. O. soportan varios tipos de archivos, por ej.: archivos regulares, directorios, archivos especiales de caracteres, archivos especiales de bloques, etc., donde:
  • Los Archivos Regulares son aquellos que contienen información del usuario.
  • Los Directorios son archivos de sistema para el mantenimiento de una estructura del sistema de archivos.
  • Los Archivos Especiales de Caracteres:
  • Tienen relación con la e / s.
  • Se utilizan para modelar dispositivos seriales de e / s (terminales, impresoras, redes, etc.).
  • Los Archivos Especiales de Bloques se utilizan para modelar discos.
Acceso a un Archivo
Los tipos de acceso más conocidos son:
  • Acceso Secuencial: el proceso lee en orden todos los registros del archivo comenzando por el principio, sin poder:
  • Saltar registros.
  • Leer en otro orden.
  • Acceso Aleatorio: el proceso puede leer los registros en cualquier orden utilizando dos métodos para determinar el punto de inicio de la lectura:
  • Cada operación de lectura (read) da la posición en el archivo con la cual iniciar.
  • Una operación especial (seek) establece la posición de trabajo pudiendo luego leerse el archivo secuencialmente.
Atributos de Archivo
Cada archivo tiene:
  • Su nombre y datos.
  • Elementos adicionales llamados atributos, que varían considerablemente de sistema a sistema.
Algunos de los posibles atributos de archivo son:
  • “Protección”: quién debe tener acceso y de qué forma.
  • “Contraseña”: contraseña necesaria para acceder al archivo.
  • “Creador”: identificador de la persona que creó el archivo.
  • “Propietario”: propietario actual.
  • “Bandera exclusivo - para - lectura”: 0 lectura / escritura, 1 para lectura exclusivamente.
  • “Bandera de ocultamiento”: 0 normal, 1 para no exhibirse en listas.
  • “Bandera de sistema”: 0 archivo normal, 1 archivo de sistema.
  • “Bandera de biblioteca”: 0 ya se ha respaldado, 1 necesita respaldo.
  • “Bandera ascii / binario”: 0 archivo en ascii, 1 archivo en binario.
  • “Bandera de acceso aleatorio”: 0 solo acceso secuencial, 1 acceso aleatorio.
  • “Bandera temporal”: 0 normal, 1 eliminar al salir del proceso.
  • “Banderas de cerradura”: 0 no bloqueado, distinto de 0 bloqueado.
  • “Longitud del registro”: número de bytes en un registro.
  • “Posición de la llave”: ajuste de la llave dentro de cada registro.
  • “Longitud de la llave”: número de bytes en el campo llave.
  • “Tiempo de creación”: fecha y hora de creación del archivo.
  • “Tiempo del último acceso”: fecha y hora del último acceso al archivo.
  • “Tiempo de la última modificación”: fecha y hora de la última modificación al archivo.
  • “Tamaño actual”: número de bytes en el archivo.
  • “Tamaño máximo”: tamaño máximo al que puede crecer el archivo.
Operaciones con Archivos
Las llamadas más comunes al sistema relacionadas con los archivos son:
  •  Create (crear): el archivo se crea sin datos.
  •  Delete (eliminar): si el archivo ya no es necesario debe eliminarse para liberar espacio en disco. Ciertos S. O. eliminan automáticamente un archivo no utilizado durante “n” días.
  •  Open (abrir): antes de utilizar un archivo, un proceso debe abrirlo. La finalidad es permitir que el sistema traslade los atributos y la lista de direcciones en disco a la memoria principal para un rápido acceso en llamadas posteriores.
  •  Close (cerrar): cuando concluyen los accesos, los atributos y direcciones del disco ya no son necesarios, por lo que el archivo debe cerrarse y liberar la tabla de espacio interno.
  •  Read (leer): los datos se leen del archivo; quien hace la llamada debe especificar la cantidad de datos necesarios y proporcionar un buffer para colocarlos.
  •  Write (escribir): los datos se escriben en el archivo, en la posición actual. El tamaño del archivo puede aumentar (agregado de registros) o no (actualización de registros).
  •  Append (añadir): es una forma restringida de “write”. Solo puede añadir datos al final del archivo.
  •  Seek (buscar): especifica el punto donde posicionarse. Cambia la posición del apuntador a la posición activa en cierto lugar del archivo.
  •  Get attributes (obtener atributos): permite a los procesos obtener los atributos del archivo.
  • Set attributes (establecer atributos): algunos atributos pueden ser determinados por el usuario y modificados luego de la creación del archivo. La información relativa al modo de protección y la mayoría de las banderas son un ejemplo obvio.
  • Rename (cambiar de nombre): permite modificar el nombre de un archivo ya existente.
  • Archivos Mapeados a Memoria
  • Algunos S. O. permiten asociar los archivos con un espacio de direcciones de un proceso en ejecución .
  • Se utilizan las llamadas al sistema “map” y “unmap”:
  • “Map”: utiliza un nombre de archivo y una dirección virtual y hace que el S. O. asocie al archivo con la dirección virtual en el espacio de direcciones, por lo cual las lecturas o escrituras de las áreas de memoria asociadas al archivo se efectúan también sobre el archivo mapeado.
  • “Unmap”: elimina los archivos del espacio de direcciones y concluye la operación de asociación.
El mapeo de archivos elimina la necesidad de programar la e / s directamente, facilitando la programación.
Los principales problemas relacionados son:
·         Imposibilidad de conocer a priori la longitud del archivo de salida, el que podría superar a la memoria.
·         Dificultad para compartir los archivos mapeados evitando inconsistencias, ya que las modificaciones hechas en las páginas no se verán reflejadas en el disco hasta que dichas páginas sean eliminadas de la memoria.



 5.4. Organización Lógica y Física
En esta parte vamos a usar el término organización de archivos para referirnos a la estructura lógica de los registros determinada por la manera en que se accede a ellos. La organización física del archivo en almacenamiento secundario depende de la estrategia de agrupación y de la estrategia de asignación de archivos.
Para seleccionar una organización de archivos hay diversos criterios que son importantes:
  • Acceso Rápido para recuperar la información
  • Fácil actualización
  • Economía de almacenamiento
  • Mantenimiento simple
  • Fiabilidad para asegurar la confianza de los datos
La prioridad relativa de estos criterios va a depender de las aplicaciones que va a usar el archivo. El número de alternativas de organización de archivos que se han implementado o propuesto es inmanejable, incluso para un libro dedicado a los sistemas de archivos. La mayor parte de las estructuras empleadas en los sistemas reales se encuadran en una de estas categorías o puede implementarse como una combinación de estas:
  • Pilas
  • Archivos secuenciales
  • Archivos Secuenciales indexados
  • Archivos indexados
  • Archivos directos o de dispersión.

 5.5.- Mecanismo de Acceso a los Archivos

Tipos:
Método de Acceso Secuencial: El acceso secuencial significa que un grupo de elementos es accedido en un predeterminado orden secuencial. El acceso secuencial es a veces la única forma de acceder a los datos, por ejemplo en una cinta de cassette. También puede ser el método de acceso elegido, para simplemente procesar una secuencia de datos en orden.
Método de Acceso Secuencial Indexado: Método de acceso secuencial indexado. Método común de acceso a disco que almacena datos en forma secuencial, al tiempo que mantiene un índice de campos claves para todos los registros en el archivo para acceso directo. El orden secuencial sería el más comúnmente usado para el procesamiento por lotes y la impresión (número de cuenta, nombre, etc.).
Método de Acceso Indexado: Los archivos secuenciales indexados retienen la limitación del archivo secuencial: la eficacia en el procesamiento se limita al basado en un único campo del archivo. Cuando es necesario buscar un registro basándose en algún otro atributo distinto del campo clave ambas formas de archivo secuencial no son adecuadas. En algunas aplicaciones esta flexibilidad es deseable. Para alcanzar esta flexibilidad, se necesita una estructura que utilice múltiples índices, uno para cada tipo de campo que pueda ser objeto de la búsqueda.
Se suelen utilizar dos tipos de índices. Un índice exhaustivo contiene una entrada para cada registro del archivo principal. Otro índice parcial contendrá entradas a los registros donde este el campo de interés. Con registros de longitud variable, algunos registros no contendrán todos los campos.
Los archivos indexados son muy utilizados en aplicaciones donde es critica la oportunidad de la información y donde los datos son rara vez procesados de forma exhaustiva.
Método de Acceso Hashed: Pendiente la definición.

Archivos Secuenciales.
La forma más común de estructura de archivo es el archivo secuencial. En este tipo de archivo, un formato fijo es usado para los registros. Todos los registros tienen el mismo tamaño, constan del mismo número de campos de tamaño fijo en un orden particular. Como se conocen la longitud y la posición de cada campo, solamente los valores de los campos se necesitan almacenarse; el nombre del campo y longitud de cada campo son atributos de la estructura de archivos.
Un campo particular, generalmente el primero de cada registro se conoce como el campo clave. El campo clave identifica unívocamente al registro. así, los valores de la clave para registros diferentes son siempre diferentes.
Los archivos secuenciales son típicamente utilizados en aplicaciones de proceso de lotes Y son óptimos para dichas aplicaciones si se procesan todos los registros. La organización secuencias de archivos es la única que es fácil de usar tanto en disco como en cinta.
Para las aplicaciones interactivas que incluyen peticione s o actualizaciones de registros individuales, los archivos secuenciales ofrecen un rendimiento pobre.
Normalmente un archivo secuencial se almacena en bloques, en un orden secuencial simple de los registros. La organización física del archivo en una cinta o disco se corresponde exactamente con la ubicación lógica del archivo. En este caso, el procedimiento para ubicar los nuevos registros en un archivo de pila separado, llamado archivo de registro (log file) o archivo de transacciones. Periódicamente, se realiza una actualización por lotes que mezcla el archivo de registro con el archivo maestro para producir un nuevo archivo en secuencia correcta de claves.

Archivos Secuenciales indexados
Un método popular para superar las desventajas de los archivos secuenciales es el del archivo secuencias indexado. El archivo secuencial indexado mantiene las características básicas de los archivos secuenciales: los registros están organizados en una secuencia basada en un campo. Dos características se añaden: un índice del archivo para soportar los accesos aleatorios y un archivo de desbordamiento ( overflow ). El índice provee una capacidad de búsqueda para llegar rápidamente a las proximidades de un registro deseado. El archivo de desbordamiento (overflow) es similar al archivo de registro usado en un archivo secuencial, pero esta integrado de forma que los registros del archivo de desbordamiento se ubican en la dirección de un puntero desde si registro precedente. En la estructura secuencial indexada más simple, se usa un solo nivel de indexación. El índice, en este caso, es un archivo secuencial simple. Cada registro del archivo índice tiene dos campos: un campo clave, que es el mismo que el campo clave del archivo principal y un puntero al archivo principal. Para encontrar un campo especifico se busca en el índice hasta encontrar el valor mayor de la clave que es igual o precede al valor deseado de la clave. La busqueda continua en el archivo principal a partir de la posición indicada por el puntero
Archivos Indexados
Los archivos secuenciales indexados retienen la limitación del archivo secuencial: la eficacia en el procesamiento se limita al basado en un único campo del archivo. Cuando es necesario buscar un registro basándose en algún otro atributo distinto del campo clave ambas formas de archivo secuencial no son adecuadas. En algunas aplicaciones esta flexibilidad es deseable.
Para alcanzar esta flexibilidad, se necesita una estructura que utilice múltiples índices, uno para cada tipo de campo que pueda ser objeto de la búsqueda.
Se suelen utilizar dos tipos de índices. Uno índice exhaustivo contiene una entrada par cada registro del archivo principal. Otro índice parcial contendrá entradas a los registros donde este el campo de interés. Con registros de longitud variable, algunos registros no contendrán todos los campos.
Los archivos indexados son muy utilizados en aplicaciones donde es critica la oportunidad de la información y donde los datos son rara vez procesados de forma exhaustiva.
Archivos Directos o de Dispersión (Hashed)
Los archivos directos explotan la capacidad de los discos para acceder directamente a cualquier bloque de dirección conocida. Como en los archivos secuenciales y secuenciales indexados, se requiere un campo clave en cada registro. Sin embargo, aquí no hay concepto de ordenamiento secuencial.