lunes, 25 de mayo de 2015

Derechos de Usuario en Windows 2008 Server

Tener acceso a este equipo desde la red: Este derecho de usuario determina a qué usuarios y grupos se les permite conectarse al equipo a través de la red. Este derecho de usuario no afecta a Servicios de Terminal Server.

Actuar como parte del sistema operativo: Este derecho de usuario permite que un proceso suplante a cualquier usuario sin autenticación. De esta forma, el proceso puede obtener acceso a los mismos recursos locales que el usuario.

Agregar estaciones de trabajo al dominio: Esta configuración de seguridad determina los grupos o usuarios que pueden agregar estaciones de trabajo a un dominio. Sólo es válida en controladores de dominio. De manera predeterminada, cualquier usuario autenticado tiene derecho a crear hasta 10 cuentas de equipo en el dominio.  Al agregar una cuenta de equipo al dominio, al equipo se le permite participar en redes basadas en Active Directory. Por ejemplo, al agregar una estación de trabajo a un dominio, se habilita a la estación para que reconozca cuentas y grupos que existan en Active Directory.

Ajustar cuotas de memoria para un proceso: Este privilegio determina quién puede cambiar la memoria máxima que puede utilizar un proceso.  Este derecho de usuario está definido en el objeto de Directiva de grupo (GPO) Controlador predeterminado de dominio y en la directiva de seguridad local de estaciones de trabajo y servidores.

Permitir el inicio de sesión local: Este derecho de inicio de sesión determina los usuarios que pueden iniciar la sesión de forma interactiva en este equipo. Los inicios de sesión iniciados presionando la secuencia Ctrl+Alt+Supr en el teclado conectado requieren que el usuario tenga este derecho de inicio de sesión. Asimismo, este derecho de inicio de sesión puede ser necesario para algún servicio o aplicación administrativa que pueda permitir a los usuarios iniciar sesión. Si define esta directiva para un usuario o grupo, también debe conceder este derecho al grupo Administradores.

Permitir inicio de sesión a través de Servicios de Terminal Server: Esta configuración de seguridad determina qué usuarios o grupos tienen permiso para iniciar sesión como cliente de Servicios de Terminal Server.

Hacer copias de seguridad de archivos y directorios: Este derecho de usuario determina qué usuarios pueden pasar por alto los permisos de archivos y directorios, del Registro y de otros objetos persistentes con el propósito de realizar copias de seguridad del sistema. Específicamente, este derecho de usuario es similar a conceder los siguientes permisos al usuario o grupo en cuestión para todos los archivos y carpetas del sistema:
  • Recorrer carpeta o ejecutar archivo
  • Enumerar carpeta o leer datos
  • Leer atributos
  • Leer atributos extendidos
  • Permisos de lectura

Omitir la comprobación de recorridoEste derecho de usuario determina qué usuarios pueden recorrer los árboles de directorios aunque no tengan permisos para el directorio recorrido. Este privilegio no permite al usuario mostrar el contenido de un directorio, sólo le da el derecho a recorrer los directorios.
Este derecho de usuario está definido en el objeto de Directiva de grupo (GPO) Controlador predeterminado de dominio y en la directiva de seguridad local de estaciones de trabajo y servidores.


Cambiar la hora del sistema: Este derecho de usuario determina qué usuarios y grupos que pueden cambiar la fecha y hora del reloj interno del equipo. Los usuarios que tengan asignado este derecho pueden modificar la apariencia de los registros de sucesos. Si se cambia la hora del sistema, los sucesos registrados contendrán esta nueva hora, no la hora real en la que se produjeron. 

jueves, 21 de mayo de 2015

Criptografía (Cifrado)

El propósito de la criptografía es tomar un mensaje o archivo, conocido como texto simple, y convertirlo en texto cifrado de tal forma que sólo las personas autorizadas sepan cómo convertirlo nuevamente en texto simple. Para todos los demás, el texto cifrado es sólo una sucesión incomprensible de bits.

Su secreto depende de los parámetros de los algoritmos, a los cuales se les denomina claves. Si es el archivo de texto simple, KE es la clave de cifrado, es el texto cifrado y es el algoritmo de cifrado (es decir, la función), entonces (P, KE). Ésta es la definición del cifrado, la cual indica que el texto cifrado se obtiene mediante el uso del algoritmo de cifrado E, con el texto simple y la clave de cifrado (secreta) KE como parámetros. La idea de que todos los algoritmos deben ser públicos y el secreto debe residir exclusivamente en las claves se conoce como Principio de Kerckhoffs, formulado por el criptógrafo holandés Auguste Kerckhoffs del siglo XIX. En la actualidad, la gran mayoría de los criptógrafos han adoptado esta idea.

De manera similar tenemos que (C, KD), donde es el algoritmo de descifrado y KD es la clave de descifrado. Esto indica que para obtener de vuelta el texto simple a partir del texto cifrado y la clave de descifrado KD, hay que ejecutar el algoritmo con KD como parámetros.

Clave Secreta

Para que esto sea más claro, considere un algoritmo en el que cada letra se sustituye por una letra distinta; por ejemplo, todas las As se sustituyen por Qs, todas las Bs se sustituyen por Ws, todas las Cs se sustituyen por Es, y así en lo sucesivo:

Texto simple:  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Texto cifrado: Q W E R T Y U I O P A S D F G H J K L Z X C V B N M

A este sistema general se le conoce como sustitución monoalfabética, en donde la clave es la cadena de 26 letras correspondiente al alfabeto completo. La clave de cifrado en este ejemplo es QWERTYUIOPASDFGHJKLZXCVBNM. Utilizando la clave anterior, el texto simple ATTACK se transformaría en el texto cifrado QZZQEA. La clave de descifrado indica cómo obtener de vuelta el texto simple a partir del texto cifrado. En este ejemplo, la clave de descifrado es KXVMCNOPHQRSZYIJADLEGWBUFT, debido a que una en el texto cifrado es una en el texto simple, una en el texto cifrado es una en el texto simple, y así sucesivamente.


Clave Pública

Los sistemas de clave secreta son eficientes debido a que el monto de cálculos requeridos para cifrar o descifrar un mensaje es razonable, pero hay una gran desventaja: el emisor y el receptor deben tener la clave secreta compartida. De hecho, tal vez hasta tengan que reunirse físicamente para que uno le entregue la clave al otro. Para resolver este problema se utiliza la criptografía de clave pública (Diffie y Hellman, 1976). Este sistema tiene la propiedad de que se utilizan distintas claves para el cifrado y el descifrado, y si se elige bien la clave de cifrado es casi imposible descubrir la clave de descifrado correspondiente. Bajo estas circunstancias, la clave de cifrado se puede hacer pública y sólo hay que mantener secreta la clave de descifrado privada.

¿Cómo funciona la criptografía de clave pública?


Todos eligen un par (clave pública, clave privada) y publican la clave pública. Esta clave pública es la clave de cifrado; la clave privada es la clave de descifrado. Por lo general, el proceso de generación de la clave es automatizado, en donde tal vez una contraseña seleccionada por el usuario se alimenta al algoritmo como una semilla. Para enviar un mensaje secreto a un usuario, un corresponsal cifra el mensaje con la clave pública del receptor. Como sólo el receptor tiene la clave privada, sólo él puede descifrar el mensaje.

miércoles, 13 de mayo de 2015

Seguridad en los Sistemas Operativos

Muchas empresas poseen información valiosa que desean tener muy bien protegida. Esta información puede ser técnica (por ejemplo, el diseño de un nuevo chip o nuevo software), comercial (por ejemplo, estudios de la competencia o planes de marketing), financiera (por ejemplo, planes para una oferta de acciones), legal (por ejemplo, documentos sobre la posible fusión o absorción de una empresa), y de muchos otros tipos. Con frecuencia, para proteger esta información se pone un guardia uniformado a la entrada del edificio, que asegura la adecuada identificación de todo el que entre. Asimismo, los archiveros y las oficinas se cierran con llave para asegurar que sólo las personas autorizadas tengan acceso a la información.

A medida que se almacena cada vez más información de este tipo en los sistemas computacionales, se vuelve cada vez más importante la necesidad de protegerla. Por lo tanto, proteger esta información contra el uso no autorizado es una de las principales preocupaciones de todos los sistemas operativos. Utilizaremos el término seguridad para hacer referencia al problema general, y mecanismos de protección para referirnos a los elementos específicos del sistema operativo que se utilizan para salvaguardar la información en la computadora.

La seguridad tiene muchas facetas. Tres de las más importantes son la naturaleza de las amenazas, la naturaleza de los intrusos y la pérdida accidental de datos. Ahora analizaremos cada una de estas facetas en orden.

AMENAZAS


Desde la perspectiva de la seguridad, en sistemas computacionales se tienen cuatro objetivos generales con sus correspondientes amenazas. 

Objetivo
Amenaza

Confidencialidad de los datos
Exposición de los datos

Integridad de los datos
Alteración de los datos

Disponibilidad del sistema
Negación del servicio

Exclusión de los usuarios externos
Los virus se apropian del sistema


INTRUSOS

En la literatura de la seguridad, las personas que husmean en lugares en donde no tienen por qué hacerlo se conocen como intrusos, o algunas veces como adversarios. Los intrusos actúan en dos formas distintas. Los intrusos pasivos sólo quieren leer archivos para los cuales no tienen autorización. Los intrusos activos son más maliciosos; desean realizar modificaciones no autorizadas a los datos. Al diseñar un sistema para que sea seguro contra los intrusos, es importante tener en cuenta el tipo de intruso contra el que tratamos de protegerlo. Algunas categorías comunes son:

1.    Usuarios no técnicos que se entrometen en forma casual. Muchas personas tienen computadoras personales en sus escritorios, las cuales están conectadas a un servidor de archivos compartidos y, debido a la naturaleza curiosa de los humanos, algunas de esas personas son capaces de leer el correo electrónico y demás archivos de otras si no hay barreras que las detengan.

2.    Intrusos que husmean. Los estudiantes, programadores de sistemas, operadores y demás personal técnico a menudo consideran como un reto personal la acción de irrumpir en la seguridad de un sistema computacional local. Por lo general son muy habilidosos y están dispuestos a dedicar una cantidad considerable de tiempo a ello.

3.    Intentos determinados por obtener dinero. Algunos programadores de los bancos han tratado de robar del banco en el que trabajan. Los esquemas varían, desde cambiar el software para truncar en vez de redondear el interés, quedarse con la fracción de un centavo, desviar las cuentas que no se han utilizado en años, hasta llegar al chantaje (“Si no me pagan, destruiré todos los registros del banco”).

4.    Espionaje comercial o militar. El espionaje se refiere a un intento serio y bien fundamentado por parte de un competidor u otro país de robar programas, secretos comerciales, ideas patentables, tecnología, diseños de circuitos, planes de negocios, etcétera. A menudo para hacer esto se intervienen líneas telefónicas o incluso se montan antenas dirigidas hacia la computadora para recoger su radiación electromagnética.

5.    Los virus. En esencia, un virus es una pieza de código que se duplica a sí mismo y (por lo general) realiza cierto daño. En cierto modo, el programador de un virus es también un intruso, a menudo con habilidades técnicas elevadas. La diferencia entre un intruso convencional y un virus es que el primero se refiere a una persona que trata de irrumpir en un sistema por motivos personales para ocasionar daños, mientras que el segundo es un programa escrito por dicha persona y que después se suelta en el mundo con la esperanza de que provoque daños. Los intrusos tratan de irrumpir en sistemas específicos (por ejemplo, uno que pertenezca a cierto banco o al Pentágono) para robar o destruir datos específicos, mientras que el programador de un virus comúnmente quiere provocar daños en general, y no le importa a quién.

PERDIDA ACCIDENTAL DE LOS DATOS

Además de las amenazas ocasionadas por los intrusos maliciosos, por accidente se pueden perder datos valiosos. Algunas de las causas comunes de pérdida accidental de datos son:

Accidentes y desastres naturales: incendios, inundaciones, terremotos, guerras, disturbios o ratas que roen cintas magnéticas.
Errores de hardware o software: fallas en la CPU, discos o cintas que no se pueden leer, errores de telecomunicaciones, errores en los programas.
Errores humanos: error al introducir los datos, al montar una cinta o un CD-ROM de manera incorrecta; ejecutar el programa incorrecto, perder un disco o una cinta, o cualquier otro error.

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.

jueves, 23 de abril de 2015

Paginación y Segmentación Combinados

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 Sistemas Operativos

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 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.

Paginación en los Sistemas Operativos

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.

lunes, 20 de abril de 2015

Memoria Virtual en los Sistemas Operativos

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.

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.

Atributos de un Archivo en Windows

Un archivo informático o fichero es un conjunto de bits almacenado en un dispositivo periférico (disco duro, disco flexible, etc.). Un archivo es identificado por un nombre (en Windows nombre más extensión, en GNU Linux sólo nombre) y la descripción de la unidad y carpeta o directorio que lo contiene. Los archivos informáticos se llaman así porque son los equivalentes digitales de los archivos en papel del entorno de oficina tradicional. Los archivos informáticos facilitan una manera de organizar los recursos usados para almacenar permanentemente datos en un sistema informático.

Los posibles atributos de un fichero son:

Sólo lectura: impide que se pueda sobrescribir (modificar) o eliminar un fichero. 

Oculto: impide que se visualice al listar, por lo tanto no se pude copiar ni suprimir, a no ser que se conozca su nombre o que tengamos activa la opción de mostrar archivos ocultos. 

Archivo listo para archivar históricamente: indica si el archivo o carpeta se debe guardar cuando se realice una copia de seguridad.

Permitir al servicio de Index Server: indica que el archivo o carpeta se indexará para realizar una búsqueda rápida de texto en su contenido, propiedades o atributos. 

Comprimir contenido para ahorrar espacio en disco: indica que el archivo o carpeta se comprimirá automáticamente para ahorrar espacio en disco. 

Cifrar contenido para proteger datos: indica que el archivo o carpeta se cifrará para evitar que su contenido pueda ser visto por otro usuario. 

Sistema: indica que el archivo es para uso del sistema operativo, uso interno.

Directorio: indica que es una carpeta.

Normal: un archivo que no tiene otros atributos establecidos. El Sistema Operativo puede optar por almacenar datos de archivos con este atributo en la memoria en lugar de un almacenamiento masivo.

Fuera de línea: este atributo indica que los datos del fichero no están disponibles de inmediato, indica que el archivo ha sido movido a una conexión de datos de almacenamiento. 

Temporal: archivo utilizado para almacenamiento temporal.

Uso del comando attrib en Windows
Línea de Comandos Windows

Sistemas de Archivos

Un sistema de archivos son los métodos y estructuras de datos que un sistema operativo utiliza para seguir la pista de los archivos de un disco o partición; es decir, es la manera en la que se organizan los archivos en el disco.

Sistema operativo
Tipos de sistemas de archivos admitidos
Dos
FAT16
Windows 95
FAT16
Windows 95 OSR2
FAT16, FAT32
Windows 98
FAT16, FAT32
Windows NT4
FAT, NTFS (versión 4)
Windows 2000/XP/Vista/2003/2008/7/8
FAT, FAT16, FAT32, NTFS (Sistema de Archivos en Red, versiones 4 y 5)
Linux
Ext2, Ext3, Ext4
MacOS
HFS (Sistema de Archivos Jerárquico), MFS (Sistemas de Archivos Macintosh)
OS/2
HPFS (Sistema de Archivos de Alto Rendimiento)
SGI IRIX
XFS (sistema de Archivos Extendido)
FreeBSD, OpenBSD
UFS (Sistema de Archivos Unix)
Sun Solaris
UFS (Sistema de Archivos Unix)
IBM AIX
JFS (Sistema Diario de Archivos)


Las operaciones básicas que la mayoría de los sistemas de archivos soportan son:

  • Crear ( create ) : Permite crear un archivo sin datos, con el propósito de indicar que ese nombre ya está usado y se deben crear las estructuras básicas para soportarlo.
  • Borrar ( delete ): Eliminar el archivo y liberar los bloques para su uso posterior.
  • Abrir ( open ): Antes de usar un archivo se debe abrir para que el sistema conozca sus atributos, tales como el dueño, la fecha de modificación, etc. _ Cerrar ( close ): Después de realizar todas las operaciones deseadas, el archivo debe cerrarse para asegurar su integridad y para liberar recursos de su control en la memoria.
  • Leer o Escribir ( read, write ): Añadir información al archivo o leer el caracter o una cadena de caracteres a partir de la posición actual. _ Concatenar ( append ): llamada 'write', en la cual sólo se permite añadir información al archivo.
  • Leer atributos: Permite obtener una estructura con todos los atributos del archivo especificado, tales como permisos de escritura, de borrado, ejecución, etc.
  • Poner atributos: Permite cambiar los atributos de un archivo.

viernes, 6 de marzo de 2015

Comunicación entre Procesos

Un proceso no es más que una instancia de un programa en ejecución, incluyendo los valores actuales del contador de programa, los registros y las variables

Creación de un proceso
Hay cuatro eventos principales que provocan la creación de procesos:
1. El arranque del sistema.
2. La ejecución, desde un proceso, de una llamada al sistema para creación de procesos.
3. Una petición de usuario para crear un proceso.
4. El inicio de un trabajo por lotes.

Terminación de procesos
Una vez que se crea un proceso, empieza a ejecutarse y realiza el trabajo al que está destinado. Sin embargo, nada dura para siempre, ni siquiera los procesos. Tarde o temprano el nuevo proceso terminará, por lo general debido a una de las siguientes condiciones:
1. Salida normal (voluntaria).
2. Salida por error (voluntaria).
3. Error fatal (involuntaria).
4. Eliminado por otro proceso (involuntaria).

Estados de un proceso
En ejecución (en realidad está usando la CPU en ese instante).
Listo (ejecutable; se detuvo temporalmente para dejar que se ejecute otro proceso).
Bloqueado (no puede ejecutarse sino hasta que ocurra cierto evento externo).

Hilos
En los sistemas operativos tradicionales, cada proceso tiene un espacio de direcciones y un solo hilo de control. De hecho, ésa es casi la definición de un proceso. Sin embargo, con frecuencia hay situaciones en las que es conveniente tener varios hilos de control en el mismo espacio de direcciones. Tener un tipo de proceso dentro de otro proceso, es lo que comúnmente llamamos hilos.

Dormir y despertar

Una de las más simples primitivas de comunicación entre procesos son sleep (dormir) y wakeup (despertar). Sleep es una llamada al sistema que hace que el proceso que llama se bloquee o desactive, es decir, que se suspenda hasta que otro proceso lo despierte. La llamada wakeup tiene un parámetro, el proceso que se va a despertar o activar. De manera alternativa, tanto sleep como wakeup tienen un parámetro, una dirección de memoria que se utiliza para asociar las llamadas a sleep con las llamadas a wakeup.

Semáforos

E. W. Dijkstra (1965) sugirió el uso de una variable entera para contar el número de señales de despertar, guardadas para un uso futuro. En su propuesta introdujo un nuevo tipo de variable, al cual él le llamó semáforo. Un semáforo podría tener el valor 0, indicando que no se guardaron señales de despertar o algún valor positivo si estuvieran pendientes una o más señales de despertar.

Propuso que se tuvieran dos operaciones, down up (generalizaciones de sleep wakeup, respectivamente). La operación down en un semáforo comprueba si el valor es mayor que 0. De ser así, disminuye el valor (es decir, utiliza una señal de despertar almacenada) y sólo continúa. Si el valor es 0, el proceso se pone a dormir sin completar la operación down por el momento.

Mutexes

Cuando no se necesita la habilidad del semáforo de contar, algunas veces se utiliza una versión simplificada, llamada mutex. Los mutexes son buenos sólo para administrar la exclusión mutua para cierto recurso compartido o pieza de código. Se implementan con facilidad y eficiencia, lo cual hace que sean especialmente útiles en paquetes de hilos que se implementan en su totalidad en espacio de usuario.

Un mutex es una variable que puede estar en uno de dos estados: abierto (desbloqueado) o cerrado (bloqueado). En consecuencia, se requiere sólo 1 bit para representarla, pero en la práctica se utiliza con frecuencia un entero, en donde 0 indica que está abierto y todos los demás valores indican que está cerrado. Se utilizan dos procedimientos con los mutexes. Cuando un hilo (o proceso) necesita acceso a una región crítica, llama a mutex_lock. Si el mutex está actualmente abierto (lo que significa que la región crítica está disponible), la llamada tiene éxito y entonces el hilo llamador puede entrar a la región crítica.

Por otro lado, si el mutex ya se encuentra cerrado, el hilo que hizo la llamada se bloquea hasta que el hilo que está en la región crítica termine y llame a mutex_unlock. Si se bloquean varios hilos por el mutex, se selecciona uno de ellos al azar y se permite que adquiera el mutex.

Monitores

Para facilitar la escritura de programas correctos, Brinch Hansen (1973) y Hoare (1974) propusieron una primitiva de sincronización de mayor nivel, conocida como monitor, que es una colección de procedimientos, variables y estructuras de datos que se agrupan en un tipo especial de módulo o paquete. Los procesos pueden llamar a los procedimientos en un monitor cada vez que lo desean, pero no pueden acceder de manera directa a las estructuras de datos internas del monitor desde procedimientos declarados fuera de éste. Los monitores tienen una importante propiedad que los hace útiles para lograr la exclusión mutua: sólo puede haber un proceso activo en un monitor en cualquier instante.

Pasaje (transmisión) de mensajes

Este método de comunicación entre procesos utiliza dos primitivas (send receive) que, al igual que los semáforos y a diferencia de los monitores, son llamadas al sistema en vez de construcciones del lenguaje.

Barreras

Este mecanismo de sincronización está destinado a los grupos de procesos, en vez de las situaciones de tipo productor-consumidor de dos procesos. Algunas aplicaciones se dividen en fases y tienen la regla de que ningún proceso puede continuar a la siguiente fase sino hasta que todos los procesos estén listos para hacerlo. Para lograr este comportamiento, se coloca una barrera al final de cada fase. Cuando un proceso llega a la barrera, se bloquea hasta que todos los procesos han llegado a ella.






Emisora de Radio