viernes, 5 de diciembre de 2014

El sistema operativo y el manejo de archivos


MANEJO DE ARCHIVOS
Una de las principales funciones de un Sistema Operativo es la administración del almacenamiento de información, para lo cual es necesario contar con un “Sistema de Archivos”. Con este término se hace referencia, por un lado, a los mecanismos y estructuras que el sistema operativo utiliza para organizar la información en medios físicos tales como discos y diskettes (aspecto físico del sistema de archivos), y por otro a la visión que es ofrecida al usuario para permitir la manipulación de la información almacenada (una abstracción, o perspectiva lógica del sistema de archivos).
Se ofrece a continuación una descripción sintética de los aspectos lógicos del sistema de archivos de Linux.

ARCHIVOS Y DIRECTORIOS
El sistema de archivos de Linux está organizado en archivos y directorios. Un archivo es una colección de datos que se almacena en un medio físico y a la cual se le asigna un nombre. Los archivos, a su vez, están agrupados en conjuntos llamados directorios. Un directorio puede tener subdirectorios, formándose así una estructura jerárquica con la forma de un árbol invertido. El directorio inicial de esa jerarquía se denomina directorio raíz y se simboliza con una barra de división (/).
El sistema de archivos de un sistema Linux típico está formado por los siguientes directorios bajo el directorio raíz:
/bin Contiene los programas ejecutables que son parte del sistema operativo Linux. Muchos comandos de Linux como cat, cp, ls, more y tar están ubicados en este directorio.
/boot Contienen el kernel (o núcleo) de Linux y otros archivos necesarios para el administrador de inicio LILO, que realiza la carga inicial del sistema operativo cuando la computadora se enciende.
/dev Contienen todos los archivos de acceso a dispositivos. Linux trata cada dispositivo (terminales, discos, impresoras, etc.) como si fuera un archivo especial.
/etc. Contiene archivos de configuración del sistema y los programas de inicialización.
/home Contiene los directorios HOME de los usuarios. El directorio HOME el directorio inicial en el que se encuentra posicionado un usuario al ingresar al sistema, por lo que también se conoce como directorio de logín de conexión.
/lib Contiene los archivos de biblioteca utilizados por las aplicaciones y utilidades del sistema, así también como las librerías pertenecientes a diferentes lenguajes de programación.
/lost+found Directorio para archivos recuperados por el proceso de reparación del sistema de archivos, que se ejecuta luego de una caída del sistema y asegura su integridad luego de que el equipo haya sido apagado de manera inapropiada.
/mnt Es un directorio vacío que se usa normalmente para montar dispositivos como disquetes y particiones temporales de disco.
/proc Contiene archivos con información sobre el estado de ejecución del sistema operativo y de los procesos.
/root Es el directorio HOME para el usuario root (administrador del sistema).
/sbin Contienen archivos ejecutables que son comandos que se usan normalmente para la administración del sistema.
/tmp Directorio temporal que puede usar cualquier usuario como directorio transitorio.
/usr Contiene archivos de programa, de datos y de librerías asociados con las actividades de los usuarios.
/var Contiene archivos temporales y de trabajo generados por programas del sistema. A diferencia de /tmp, los usuarios comunes no tienen permiso para utilizar los subdirectorios que contiene directamente, sino que deben hacerlo a través de aplicaciones y utilidades del sistema.

La memoria como mecanismo de comunicación


Memoria compartidaEn informática, la memoria compartida es aquel tipo de memoria que puede ser accedida por múltiples programas, ya sea para comunicarse entre ellos o para evitar copias redundantes. La memoria compartida es un modo eficaz de pasar datos entre aplicaciones. Dependiendo del contexto, los programas pueden ejecutarse en un mismo procesador o en procesadores separados. La memoria usada entre dos hilos de ejecución dentro de un mismo programa se conoce también como memoria compartida.Además de C/C++ hay otros lenguajes con soporte nativo para memoria compartida. Por ejemplo PHP provee un API para crear memoria compartida similar a las funciones POSIX.5                                       SoftwareEn el software, memoria compartida puede referirse a:Un método de comunicación entre procesos, por ejemplo: el intercambio de datos entre dos programas ejecutándose al mismo tiempo. Uno de los procesos creará un área en RAM a la que el otro pueda acceder, oUn método para conservar espacio en la memoria, usando mapeos virtuales o bien soporte explícito del programa en cuestión, dirigiendo los accesos a una sola instancia de datos que normalmente serían duplicados. Comúnmente destinado para bibliotecas de enlace dinámico dinámicas y el espacio de usuario (XIP, "execute in place”).Dado que ambos procesos pueden acceder al área de memoria compartida como memoria de trabajo regular, esta es una forma de comunicación veloz (al contrario de otros mecanismos de comunicación entre procesos como tuberías nombradas, socket de dominio UNIX o CORBA. En cambio, este sistema es menos potente, si, por ejemplo, los procesos que se comunican deben ejecutarse en la misma máquina (en cuanto a otros métodos de comunicación entre procesos, solo los sockets del Internet Domain (no los sockets de UNIX), pueden usar una red de computadoras). Esto se debe a que se requiere mayor atención y cuidado si los procesos que comparten memoria corren en CPUs separadas y la arquitectura subyacente no soporta coherencia de caché.La comunicación entre procesos por memoria compartida se usa en UNIX, para transferir imágenes entre una aplicación y un XServer, o en la biblioteca COM de Windows dentro del objeto IStream devuelto por la funciónCoMarshalInterThreadInterfaceInStream. Las bibliotecas de enlace dinámico se copian una sola vez en la memoria y son "mapeadas" para múltiples procesos. Sólo las páginas que estén personalizadas se duplican, normalmente con un mecanismo conocido como copy-on-write que de manera transparente copia la página cuando se intenta escribir en ésta, y después permite que la escritura se realice en la copia privada.HardwareSe refiere a la situación dónde cada nodo (computadora) comparte sus tablas de páginas, su memoria virtual y todo lo que habita en la memoria RAM con otros nodos en la misma red de interconexión. Una ejemplo de memoria compartida esDSM.En otras palabras, una computadora convencional tiene una memoria RAM y un CPU (entre otras partes de hardware), las cuales están comunicadas de manera local. Cuando se habla de multicomputadoras es necesario entenderlas como un conjunto de máquinas convencionales trabajando coordinadamente con el objetivo de compartir recursos de software yhardware para tareas muy específicas, como por ejemplo la investigación. El hecho de que cada CPU sólo pueda acceder a la RAM local no beneficia mucho y agrega complejidad a los programadores de multicomputadoras, con la compartición de memoria se mitiga esta complejidad ya que todas las CPUs pueden acceder a la misma RAM.Soporte en Otras PlataformasEn Windows se puede usar la función CreateSharedMemory para crear memoria compartida1 o CreateFileMapping yMapViewOfFile como alternativa.2 Algunas bibliotecas para C++ proporcionan acceso portable y orientado a objetos de la memoria compartida. Por ejemplo, Boost incluye Boost.Interprocess3 y Qt proporciona QSharedMemory.4

 Los sistemas operativos y la gestión de memoria

Se denomina gestión de memoria al acto de gestionar la memoria de un dispositivo informático. El proceso de asignación de memoria a los programas que las solicitan es llamado por algunos "alocar" (del inglés "allocate" que significa asignar) pero la palabra "alocar" tiene otro significado para el Diccionario de la lengua española de la Real Academia Española. La gestión de la memoria principal de un ordenador es una tarea de suma importancia para el funcionamiento del mismo.
Los sistemas de memoria virtual separan las direcciones de memoria utilizadas por un proceso de las direcciones físicas reales, permitiendo la separación de procesos e incrementando la cantidad efectiva de memoria de acceso aleatorioutilizando la paginación. La calidad de la gestión de la memoria es crucial para las prestaciones del sistema.
El recolector de basura es la asignación y liberación automática de los recursos de memoria para un programa. La implementación suele ser a nivel del lenguaje de programación en contraposición a la gestión manual de memoria, que asigna y libera los recursos de memoria de un ordenador de forma explícita.
 Conceptos de arquitectura de memoria

El concepto de arquitectura en el entorno informático proporciona una descripción de la construcción y distribución física de los componentes de la computadora.
La arquitectura de una computadora explica la situación de sus componentes y permite determinar las posibilidades de que un sistema informático, con una determinada configuración, pueda realizar las operaciones para las que se va a utilizar.
Cualquier usuario que desee adquirir un sistema informático, tanto si es una gran empresa como un particular, debe responder a una serie de preguntas previas: ¿qué se desea realizar con el nuevo sistema informático? ¿Cuáles son los objetivos a conseguir? ¿Qué software será el más adecuado para conseguir los objetivos marcados? ¿Qué impacto va a suponer en la organización (laboral o personal) la introducción del nuevo sistema informático?
Finalmente, cuando se haya respondido a estas preguntas, el usuario tendrá una idea aproximada de los objetivos que han de cumplir los diferentes sistemas informáticos a evaluar.
En la actualidad es muy familiar el aspecto exterior de una computadora o, por lo menos, de una microcomputadoraName=g8; HotwordStyle=BookDefault; , pero se ha de advertir que, salvando las diferencias de tamaño y la posibilidad de teleproceso (manejo del sistema informático a grandes distancias a través de líneas de comunicaciones de diferentes tipos), en general, los sistemas informáticos se dividen físicamente en la unidad central del sistema y los periféricos que permiten conectarlo al mundo exterior.
La Unidad Central del Sistema es un habitáculo en forma de caja donde se sitúa el «cerebro» de la computadora, esto es, la unidad central de proceso (CPU), así como los distintos componentes que van a ayudar al sistema informático en sus operaciones habituales (busmemoriasfuentes de alimentación eléctrica, etcétera).
La unidad central de proceso se compone de:
• Una Unidad de Control que manejará los diferentes componentes del sistema informático así como los datos a utilizar en los diferentes procesos.
• Una Unidad Aritmético-Lógica que realizará las diferentes operaciones de cálculo en las que la computadora basa su funcionamiento.
• Unos Registros del Sistema que sirven como área de trabajo interna a la unidad central de proceso.
La unidad central de proceso se conecta a una serie de memorias que le sirven como soporte para el manejo de los datos y programas que se han de utilizar mientras se encuentre operativa.
Las diferentes memorias del sistema informático (Random Access Memory o RAM y Read Only Memory o ROM) son componentes fundamentales de la computadora ya que van a ser, en el caso de la RAM, el área de trabajo donde el microprocesador va a realizar las diferentes operaciones en que se van a descomponer los procesos solicitados por el usuario, mientras que la ROM va a servir para ayudar a la computadora a realizar las diferentes operaciones de arranque del sistema informático previas a que el sistema operativo tome el control de las diferentes tareas a realizar.
La unidad central de proceso y las memorias se conectan entre ellas por medio del bus. El bus es un enlace de comunicaciones que conecta todos los componentes que configuran el sistema informático y permite la transferencia de información entre ellos. Esta información se compone de datos y órdenes de comandos para manipular los datos. Existen varias tecnologías de diseño y construcción de buses entre las que se pueden distinguir las arquitecturas ISA, EISA y MCA que se verán más adelante.
Otros componentes que se conectan al bus son los puertos de conexión de los diferentes periféricos asociados a la unidad central del sistema de la computadora y que van a permitir configurar el sistema informático para una serie diferente de operaciones funcionales que siempre han de cubrir las necesidades del usuario.
Es evidente que la configuración de un sistema informático ha de realizarse en función de los objetivos operativos que vaya a cubrir la citada computadora. Así, un sistema informático que se va a dedicar exclusivamente a CAD/CAM (diseño asistido por computadora) no tendrá una configuración similar a la de una computadora que va a dedicarse a controlar los diferentes enlaces de comunicaciones que componen una red informática.
Los diferentes periféricos que se pueden conectar a un sistema informático se dividen en cuatro grupos principales:
• Periféricos de Entrada de Información.
• Periféricos de Almacenamiento de Información.
• Periféricos de Salida de Información.
• Periféricos de Comunicaciones.


Unidad 06  El sistema operativo y la gestión de recursos


Los entornos informáticos modernos deben proporcionar una respuesta flexible a las diferentes cargas de trabajo que generan las distintas aplicaciones de un sistema. Una carga de trabajo es una adición de todos los procesos de una aplicación o grupo de aplicaciones. Si no se utilizan las funciones de gestión de recursos, el sistema operativo Oracle Solaris responde a las demandas de carga de trabajo adaptándose a las nuevas solicitudes de aplicaciones de forma dinámica. Esta respuesta predeterminada general significa que toda la actividad del sistema tiene el mismo acceso a los recursos. Las funciones de gestión de recursos le permiten tratar las cargas de trabajo individualmente. Puede realizar lo siguiente:
  • Restringir el acceso a un recurso específico
  • Ofrecer recursos a las cargas de trabajo de modo preferencial
  • Aislar cargas de trabajo entre sí
La capacidad de minimizar los compromisos de rendimiento de varias cargas de trabajo, junto con las funciones que supervisan el uso de los recursos, se denomina administración de recursos. La administración de recursos se implementa a través de un conjunto de algoritmos. Los algoritmos controlan las series de solicitudes de capacidades que presenta una aplicación durante su ejecución.
Las funciones de administración de recursos permiten modificar el comportamiento predeterminado del sistema operativo con respecto a las diferentes cargas de trabajo. El comportamiento hace referencia principalmente al conjunto de decisiones que toman los algoritmos del sistema operativo cuando una aplicación presenta una o más solicitudes de recursos para el sistema. Puede utilizar las funciones de administración de recursos para:
  • Denegar recursos o preferir una aplicación para un conjunto de asignaciones mayor que no se permitiría con otra aplicación
  • Tratar determinadas asignaciones de forma colectiva en lugar de utilizar mecanismos aislados
La implementación de una configuración del sistema que utilice las funciones de administración de recursos puede tener varias finalidades. Puede realizar lo siguiente:
  • Impedir a una aplicación el consumo indiscriminado de recursos
  • Cambiar una prioridad de aplicación basándose en eventos externos
  • Equilibrar las garantías de recursos para un conjunto de aplicaciones con el fin de maximizar el uso del sistema
Al planificar una configuración administrada por recursos, algunos de los requisitos clave son:
  • Identificar las cargas de trabajo implicadas en el sistema
  • Distinguir las cargas de trabajo que no están en conflicto de las que tienen requisitos de rendimiento que afectan a las cargas de trabajo principales
Una vez identificadas las cargas de trabajo conflictivas y las de cooperación, puede crear una configuración de recursos que presente el menor compromiso para los objetivos de servicio del negocio, dentro de las limitaciones de las funciones del sistema.
El sistema Oracle Solaris cuenta con una gestión de recursos eficaz que ofrece mecanismos de control, de notificación y de supervisión. Muchas de estas funciones se proporcionan a través de mejoras en los mecanismos existentes, como el sistema de archivos proc(4), los conjuntos de procesadores y las clases de planificación. Otras funciones son específicas de la administración de recursos. Estas funciones se describen en los capítulos siguientes.

Clasificación de los recursos

Un recurso es cualquier aspecto del sistema informático que pueda manipularse con la finalidad de cambiar el comportamiento de la aplicación. En consecuencia, un recurso es una capacidad que solicita una aplicación implícita o explícitamente. Si se deniega o limita la capacidad, la ejecución de una aplicación potente es más lenta.
La clasificación de recursos, a diferencia de la identificación de recursos, puede realizarse para una serie de ejes. Los ejes se pueden solicitar de forma implícita (en contraposición a su solicitud explícita), pueden basarse en el tiempo, como el tiempo de la CPU (en contraposición a las solicitudes independientes del tiempo, como los recursos compartidos de la CPU), etc.
Generalmente, la administración de recursos basada en el planificador se aplica a los recursos que puede solicitar la aplicación de forma implícita. Por ejemplo, para continuar la ejecución, una aplicación solicita de forma implícita tiempo de CPU adicional. Para grabar datos en un socket de red, una aplicación solicita ancho de banda implícitamente. Pueden colocarse limitaciones en el uso total de un recurso solicitado de forma implícita.

Pueden presentarse interfaces adicionales para que los niveles de servicio de CPU o el ancho de banda se negocien de forma explícita. Los recursos que se solicitan de forma explícita, como una solicitud de subproceso adicional, se pueden administrar por limitación.