lunes, 27 de octubre de 2014

Mecanismos de Protección

Es más fácil obtener seguridad si hay un modelo claro de lo que se debe proteger y de a quién se le permite hacer qué cosa, nos concentraremos en unos cuantos modelos generales y en los mecanismos para llevarlos a cabo.

Dominios de protección

Un dominio es un conjunto de pares (objeto, permisos). Cada par especifica un objeto y cierto subconjunto de las operaciones que se pueden realizar en él. Un permiso en este contexto indica el permiso para realizar una de las operaciones. A menudo, un dominio corresponde a un solo usuario y le indica lo que puede hacer y lo que no, pero un dominio también puede ser más general que sólo un usuario. Por ejemplo, los miembros de un equipo de programación que trabajan en cierto proyecto podrían pertenecer al mismo dominio, de manera que todos tengan acceso a los archivos del proyecto.

La manera en que se asignan los objetos a los dominios depende de los detalles sobre quién necesita saber qué. Sin embargo, uno de los conceptos básicos es el POLA (Principle of Least Authority, Principio de menor autoridad), o la necesidad de saber. En general, la seguridad funciona mejor cuando cada dominio tiene los mínimos objetos y privilegios para realizar su trabajo; y no más.

Listas de control de acceso

La mayoría de los dominios no tienen acceso a la mayoría de los objetos, por lo que se desperdicia mucho espacio en disco al almacenar una matriz muy grande y en su mayor parte vacía. Existe un método práctico: almacenar la matriz por columnas y después almacenar solo los elementos no vacíos, esta técnica consiste en asociar con cada objeto una lista (ordenada) que contenga todos los dominios que pueden acceder al objeto, y la forma de hacerlo. A esta lista se le conoce como Lista de control de acceso (Access Control List, o ACL).

Capacidades

La otra manera de almacenar la matriz es por filas. Al utilizar este método, a cada proceso se le asocia una lista de objetos que puede utilizar, junto con una indicación de las operaciones permitidas en cada objeto; en otras palabras, su dominio. A esta lista se le conoce como lista de capacidades (o lista-C) y a los elementos individuales que contiene se les conoce como capacidades, cada capacidad otorga al propietario ciertos derechos sobre un objeto.

Además de los derechos específicos dependientes del objeto, como lectura, escritura y ejecución, las capacidades por lo general tienen permisos genéricos que se pueden aplicar a todos los objetos. Algunos ejemplos de permisos genéricos son:
1. Capacidad de copia: crea una nueva capacidad para el mismo objeto.
2. Copiar objeto: crea un objeto duplicado con una nueva capacidad.
3. Eliminar capacidad: elimina una entrada de la lista-C; el objeto no se ve afectado.
4. Destruir objeto: elimina un objeto y una capacidad de manera permanente.

Sistemas y base de cómputo confiables

En el mundo de la seguridad, todos hablan con frecuencia sobre los sistemas confiables en vez de sistemas seguros. Éstos son sistemas que han declarado formalmente requerimientos de seguridad y cumplen con ellos. En el centro de todo sistema confiable hay una TCB (Trusted Computing Base, Base de cómputo confiable) mínima que consiste en el hardware y software necesarios para cumplir con todas las reglas de seguridad. Si la base de cómputo confiable funciona según las especificaciones, no se puede comprometer la seguridad el sistema, sin importar qué otra cosa esté mal.

Las funciones del sistema operativo que deben formar parte de la TCB son: creación de procesos, cambio de procesos, administración del mapa de memoria y parte de la administración de archivos y de la E/S. En un diseño seguro es frecuente que la TCB esté muy separada del resto del sistema operativo para poder minimizar su tamaño y verificar que sea correcto.

Seguridad multinivel

La mayoría de los sistemas operativos permiten a los usuarios individuales determinar quién puede leer, escribir y ejecutar sus archivos y demás objetos, a esta directiva se le conoce como control de acceso discrecional. En muchos entornos este modelo funciona bien, pero hay otros en donde se requiere una seguridad más estricta, como en la computación militar, los departamentos de patentes corporativas y los hospitales.


En estos entornos, la organización ha establecido reglas sobre qué es lo que puede ver cada quién, y los soldados, abogados o doctores no pueden modificar estas reglas, por lo menos no sin antes obtener un permiso especial del jefe. Estos entornos necesitan controles de acceso obligatorio para asegurar que el sistema implemente las directivas de seguridad establecidas, además de los controles de acceso discrecional estándar. Lo que hacen estos controles de acceso obligatorio es regular el flujo de información, para asegurar que no se fugue de una manera que no esté considerada.

miércoles, 8 de octubre de 2014

Paginación y Segmentación Combinadas

Tanto la paginación como la segmentación tienen sus ventajas:

La paginación elimina la fragmentación externa y de este modo, aprovecha la memoria principal de forma eficiente. Además, puesto que los fragmentos que se cargan y descargan de la memoria principal son de tamaño fijo e iguales, es posible construir algoritmos se gestión de memoria sofisticados que aprovechen mejor el comportamiento de los programas.

La segmentación tiene las ventajas antes citadas, incluida la capacitación de gestionar estructuras de datos que puedan crecer, la modularidad y el soporte de la compartición y la protección. Para combinar las ventajas de ambas, algunos sistemas están equipados con hardware del procesador y software del S.O.

En un sistema con paginación y segmentación combinadas, el espacio de direcciones de un usuario se divide en varios segmentos según el criterio del programador. Cada segmento se vuelve a dividir en varias páginas de tamaño fijo, que tienen la misma longitud que un marco de memoria principal. Si el segmento tiene menor longitud que la página, el segmento ocupará sólo una página. Desde el punto de vista del programador, una dirección lógica todavía está formada por un número de segmento y un desplazamiento en el segmento. Desde el punto de vista de sistema, el desplazamiento del segmento se ve como un número de página dentro del segmento y un desplazamiento dentro de la página.




La entrada de la tabla de segmentos contiene la longitud del segmento. Los bits de presencia y modificación no son necesarios, puesto que estos elementos se gestionan en la página. Pueden usarse otros bits de control para compartición y protección. La entrada de la tabla de páginas es, la misma que se usa en un sistema de paginación pura. Cada número de página se convierte en el número de marco correspondiente si la página está presente en la memoria. El bit de modificación indica si se necesita escribir la página en el disco cuando se asigna el marco a otra página.

Segmentación en los SO

La segmentación permite al programador contemplar  la memoria como si constara de varios espacios de direcciones o segmentos. Los segmentos pueden ser de distintos tamaños, incluso de forma dinámica. Las referencias a la memoria constan de una dirección de la forma (número de segmento, desplazamiento).

Definición: La segmentación es un esquema de administración de la memoria que soporta la visión que el usuario tiene de la misma.

Un espacio de direcciones lógicas es una colección de segmentos.
Cada segmento tiene un nombre y una longitud.
Las direcciones especifican tanto el nombre del segmento como el desplazamiento dentro del segmento.

Por lo tanto, el usuario especifica cada dirección mediante dos cantidades: un nombre de segmento y un desplazamiento.


Esta organización ofrece al programador varias ventajas sobre un espacio de direcciones no segmentado:

1.   Simplifica la gestión de estructuras de datos crecientes. 
2.   Permite modificar y recopilar los programas independientemente.
3.   Se presta a la compartición entre procesos. 
4.   Se presta a la protección. 

Organización

En el estudio de la segmentación, se llegó a la conclusión de que cada proceso tiene su propia tabla de segmento y que, cuando todos los segmentos se encuentran en la memoria principal, la tabla de segmentos del proceso se crea y se carga en la memoria. Cada entrada de la tabla contiene la dirección de comienzo del segmento correspondiente de la memoria principal, así como su longitud.

La misma estructura se necesitará al hablar de un esquema de memoria virtual basado en la segmentación donde las entradas de la tabla de segmentos pasan a ser más complejas. Puesto que sólo algunos de los segmentos de un proceso estarán en la memoria principal, se necesita un bit en cada entrada de la tabla de segmentos para indicar si el segmento correspondiente está presente en la memoria principal. Si el bit indica que el segmento está en la memoria, la entrada incluye también la dirección de comienzo y la longitud del segmento.


Otro bit de control necesario en la entrada de la tabla de segmentos es un bit de modificación que indique si el contenido del segmento correspondiente ha sido modificado desde que se cargó por última vez en la memoria principal. Si no ha habido cambios, no será necesario escribir en el disco el segmento cuando llegue el momento de reemplazarlo en el espacio que ocupa actualmente.

lunes, 6 de octubre de 2014

Paginacion en los SO

El término memoria virtual se asocia normalmente con sistemas que emplean paginación, aunque también se puede usar memoria virtual basada en la segmentación. El uso de la paginación en la memoria virtual fue presentado por primera vez en el computador Atlas.

DefiniciónLa paginación es uno de los esquemas de manejo de memoria en donde un computador puede almacenar y recuperar datos de un dispositivo de almacenamiento secundario para su uso en la memoria principal. En el esquema de manejo de memoria de paginación, el sistema operativo recupera datos desde un dispositivo de almacenamiento secundario en bloques de un mismo tamaño llamados páginas.
La paginación consiste en considerar el espacio de direcciones lógicas de cada proceso como un conjunto de bloques de tamaño consistente llamados páginas. Cada dirección lógica manejada para un proceso estará conformada por un par de valores [página: desplazamiento].

Método básico:

La memoria física se compone en bloques de tamaño fijo denominados marcos.
La memoria lógica también se compone en bloques del mismo tamaño denominados páginas  



Cada proceso tiene su propia tabla de páginas y cuando carga todas sus páginas en la memoria principal, se crea y carga en la memoria principal una tabla de páginas. Cada entrada de la tabla de páginas contiene el número de marco de la página correspondiente en la memoria principal. Puesto que sólo algunas de las páginas de un proceso pueden estar en la memoria principal, se necesita un bit en cada entrada de la tabla para indicar si la página correspondiente está presente (P) en la memoria principal o no. Si el bit indica que la página está en la memoria, la entrada incluye también el número de marco para esa página.

Otro bit de control necesario en la entrada de la tabla de páginas es el bit de modificación (M), para indicar si el contenido de la página correspondiente se ha alterado desde que la página se cargó en la memoria principal. Si no ha habido cambios, no es necesario escribir la página cuando sea sustituida en el marco que ocupa actualmente.

Memoria Virtual en los SO

La memoria virtual es una técnica para proporcionar la simulación de un espacio de memoria mucho mayor que la memoria física de una máquina. Esta ilusión permite que los programas se hagan sin tener en cuenta el tamaño exacto de la memoria física.

La memoria virtual ha llegado a ser un componente esencial de la mayoría de los S.O actuales. Y como en un instante dado, en la memoria solo se tienen unos pocos fragmentos de un proceso dado, se pueden mantener más procesos en la memoria.

La memoria virtual también simplifica la carga del programa para su ejecución llamado reubicación, este procedimiento permite que el mismo programa se ejecute en cualquier posición de la memoria física.

Memoria virtual= memoria física + área de swapping en disco

Evaluación de las Organizaciones de Almacenamiento

Almacenamiento virtual "significa la capacidad de direccionar un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario de determinado sistema de computación”. Esta tecnología apareció en 1960 en la Universidad de Manchester (Inglaterra), en el sistema “Atlas”.

Los métodos más comunes de implementación son mediante:
•Técnicas de “paginación”.
•Técnicas de “segmentación”.
•Una combinación de ambas técnicas.


miércoles, 1 de octubre de 2014

Memoria Real en los Sistemas Operativos

La memoria real o principal es donde son ejecutados los programas y procesos de una computadora. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de más rápido acceso. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor.

La organización y administración de la “memoria principal”, “memoria primaria” o “memoria real” de un sistema ha sido y es uno de los factores más importantes en el diseño de los S. O.

Los términos “memoria” y “almacenamiento” se consideran equivalentes.

Los programas y datos deben estar en el almacenamiento principal para:
•Poderlos ejecutar.
•Referenciarlos directamente

Estrategias de Administración de Memoria

Están dirigidas a la obtención del mejor uso posible del recurso del almacenamiento principal.
Se dividen en las siguientes categorías:

•Estrategias de búsqueda:
◦     Estrategias de búsqueda por demanda.
◦     Estrategias de búsqueda anticipada.
•Estrategias de colocación.
•Estrategias de reposición.

Las “estrategias de búsqueda” están relacionadas con el hecho de cuando obtener el siguiente fragmento de programa o de datos para su inserción en la memoria principal.
En la “búsqueda por demanda” el siguiente fragmento de programa o de datos se carga al almacenamiento principal cuando algún programa en ejecución lo referencia; en caso contrario, en la “búsqueda anticipada”, ningún programa referencia y por esto se considera que puede producir un mejor rendimiento del sistema.

Las “estrategias de colocación” están relacionadas con la determinación del lugar de la memoria donde se colocara (cargara) un programa nuevo.

Las “estrategias de reposición” están relacionadas con la determinación de que fragmento de programa o de datos desplazar para dar lugar a los programas nuevos.

Emisora de Radio