miércoles, 31 de agosto de 2016

MAQUINAS VIRTUALES


MAQUINAS VIRTUALES
En informática una máquina virtual es un software que simula a una computadora y puede ejecutar programas como si fuese una computadora real. Este software en un principio fue definido como "un duplicado eficiente y aislado de una máquina física". La acepción del término actualmente incluye a máquinas virtuales que no tienen ninguna equivalencia directa con ningún hardware real.
Una característica esencial de las máquinas virtuales es que los procesos que ejecutan están limitados por los recursos y abstracciones proporcionados por ellas. Estos procesos no pueden escaparse de esta "computadora virtual".
Uno de los usos domésticos más extendidos de las máquinas virtuales es ejecutar sistemas operativos para "probarlos". De esta forma podemos ejecutar un sistema operativo que queramos probar (GNU/Linux, por ejemplo) desde nuestro sistema operativo habitual (Mac OS X por ejemplo) sin necesidad de instalarlo directamente en nuestra computadora y sin miedo a que se des configure el sistema operativo primario.

Tipos de Máquinas Virtuales
 Las máquinas virtuales se pueden clasificar en dos grandes categorías según su funcionalidad y su grado de equivalencia a una verdadera máquina:
• Máquinas virtuales de sistema (en inglés System Virtual Machine). También llamadas máquinas virtuales de Hardware, permiten a la máquina física subyacente multiplicarse entre varias máquinas virtuales, cada una ejecutando su propio sistema operativo. A la capa de Software que permite la virtualización se la llama monitor de máquina virtual o hypervisor. Un monitor de máquina virtual puede ejecutarse o bien directamente sobre el Hardware o bien sobre un sistema operativo ("host operating system").
 • Máquinas virtuales de proceso (en inglés Process Virtual Machine). A veces llamada "máquina virtual de aplicación", se ejecuta como un proceso normal dentro de un sistema operativo y soporta un solo proceso. La máquina se inicia automáticamente cuando se lanza el proceso que se desea ejecutar y se detiene para cuando éste finaliza. Su objetivo es el de proporcionar un entorno de ejecución independiente de 1 Tal y como puede verse reflejado en la definición de máquina virtual, en este texto nos estamos focalizando en las máquinas virtuales de sistema. Existen otro tipo de máquinas virtuales, como por ejemplo las máquinas virtuales de proceso o los emuladores. la plataforma de Hardware y del sistema operativo, que oculte los detalles de la plataforma subyacente y permita que un programa se ejecute siempre de la misma forma sobre cualquier plataforma.

 Aplicaciones de las Máquinas Virtuales de Sistema
Varios sistemas operativos distintos pueden coexistir sobre la misma computadora, en sólido aislamiento el uno del otro, por ejemplo para probar un sistema operativo nuevo sin necesidad de instalarlo directamente. La máquina virtual puede proporcionar una arquitectura de instrucciones que sea algo distinta de la verdadera máquina. Es decir, podemos simular Hardware. Varias máquinas virtuales –cada una con su propio sistema operativo llamado sistema operativo "invitado" o "guest"–, pueden ser utilizadas para consolidar servidores. Esto permite que servicios que normalmente se tengan que ejecutar en computadoras distintas para evitar interferencias, se puedan ejecutar en la misma máquina de manera completamente aislada y compartiendo los recursos de una única computadora.
 La consolidación de servidores a menudo contribuye a reducir el coste total de las instalaciones necesarias para mantener los servicios, dado que permiten ahorrar en Hardware. La virtualización es una excelente opción hoy día, ya que las máquinas actuales (Laptops, desktops, servidores) en la mayoría de los casos están siendo "subutilizados" (gran capacidad de disco duro, memoria RAM etc.) llegando a un uso de entre 30% a 60% de su capacidad. Al virtualizar, la necesidad de nuevas máquinas en una ya existente permite un ahorro considerable de los costos asociados (energía, mantenimiento, espacio, etc). La gran mayoría de máquinas virtuales, como por ejemplo KVM, Virtualbox o VMWare, permiten instalar prácticamente cualquier sistema operativo como por ejemplo Linux, Android, Mac OS X, Windows, Chrome OS, etc. Sin embargo existen otras máquinas virtuales, como por ejemplo Virtual PC, Hiper-V o Parallels, que están principalmente destinadas a virtualizar Windows. Cada uno de los sistemas operativos que virtualizamos es completamente independiente de los otros sistemas operativos. De este modo en el caso que una de las máquinas virtuales deje de funcionar, el resto seguirá funcionando sin ningún tipo de problema.
 Una vez instalado un sistema operativo en la máquina virtual, tenemos que usar el sistema operativo virtualizado del mismo modo que lo usaríamos si lo hubiéramos instalado en nuestro ordenador. Una máquina virtual dispone de todos los elementos de que dispone un ordenador real. Dispone de disco duro, memoria RAM, unidad de CDROM, tarjeta de red, tarjeta de vídeo, etc, pero a diferencia de un ordenador real estos elementos en vez de ser físicos son virtuales. Todos los elementos de una máquina virtual se encapsulan en un conjunto de archivos. Esto permite que podamos copiar un sistema operativo virtual de un ordenador a otro o que podemos realizar copias de seguridad sin ningún tipo de problema, de forma fácil y rápida.

Diferentes Máquinas Virtuales
  1.  VirtualBox
  2.  VMware
  3.  Virtual PC
  4.  KVM
  5.  Xen
  6.  BOCHS de licencia GPL.
  7.  QEMU de licencia GPL.
  8.  Virtuozzo, software propietario
  9.  Mac on Linux
  10.  Basilisk II
  11.  SheepShaver

martes, 9 de agosto de 2016

PROCESOS E HILOS


En esta entrada vamos a ver las diferentes maneras de como trabajar con Threads en Java (o hilos en español). Sino tienes muy claro el concepto de la multitarea te recomendamos que te leas primero la entrada de Multitaréa e Hilos, fácil y muchas ventajas aunque en esta entrada también veremos (en menor detalle) los conceptos y las ventajas de la multitarea.
En esencia la multitarea nos permite ejecutar varios procesos a la vez; es decir, de forma concurrente y por tanto eso nos permite hacer programas que se ejecuten en menor tiempo y sean más eficientes. Evidentemente no podemos ejecutar infinitos procesos de forma concurrente ya que el hardware tiene sus limitaciones, pero raro es a día de hoy los ordenadores que no tengan más de un núcleo por tanto en un procesador con dos núcleos se podrían ejecutar dos procesos a la vez y así nuestro programa utilizaría al máximo los recursos hardware. Para que veáis la diferencia en un par de imágenes, supongamos que tenemos un programa secuencial en el que se han de ejecutar 4 procesos; uno detrás de otro, y estos tardan unos segundos:

En Java para utilizar la multitarea debemos de usar la clase Thread (es decir que la clase que implementemos debe heredar de la clase Thread) y la clase Thread implementa la Interface Runnable. En el siguiente diagrama de clase mostramos la Interface Runnable y la clase Thread con sus principales métodos:

En esta entrada no vamos a ver como utilizar todos los métodos de la clase Thread, pero os los mostramos para que sepáis que existen y a parte por su nombre podéis intuir su funcionalidad.
En esta entrada vamos a poner un ejemplo para que veáis las ventajas de la multitarea, viendo como se ejecutaría un programa sin utilizar la multitarea y otro utilizándola.
En este ejemplo vamos a simular el proceso de cobro de un supermercado; es decir, unos clientes van con un carro lleno de productos y una cajera les cobra los productos, pasándolos uno a uno por el escaner de la caja registradora. En este caso la cajera debe de procesar la compra cliente a cliente, es decir que primero le cobra al cliente 1, luego al cliente 2 y así sucesivamente. Para ello vamos a definir una clase “Cajera” y una clase “Cliente” el cual tendrá un “array de enteros” que representaran los productos que ha comprado y el tiempo que la cajera tardará en pasar el producto por el escaner; es decir, que si tenemos un array con [1,3,5] significará que el cliente ha comprado 3 productos y que la cajera tardara en procesar el producto 1 ‘1 segundo’, el producto 2 ‘3 segundos’ y el producto 3 en ‘5 segundos’, con lo cual tardara en cobrar al cliente toda su compra ‘9 segundos’.
EJEMPLO DE PROCESOS E HILOS:
VER VIDEO: https://www.youtube.com/watch?v=ZoCk8w86JlU


SYMBIAN OS


SYMBIAN OS

El célebre sistema operativo cuyo principal benefactor era Nokia que durante años dominó en el mercado estando en los terminales de los principales fabricantes, y que acabó desapareciendo el año pasado tras no haberse sabido adaptar a la era de los smartphones y las pantallas táctiles.

INICIOS DE SYMBIAN


Para empezar a hablar de la historia de Symbian, nos tenemos que remontar muchos años atrás, mucho más allá de los inicios de los smartphones con pantalla táctil, allá por el 2007. Tenemos que retroceder hasta 1998 y hablar de EPOC. EPOC era un sistema operativo desarrollado por Psion principalmente para PDAs. Concretamente, hablamos de EPOC32, que fue escrito en C++ y cuyo desarrollo comenzó durante mediados de los 90, y del cual hubo cinco actualizaciones. Todo esto cambió en junio de 1998, cuando Psion Software se convirtió enSymbian Ltd. una empresa conjunta entre Psion y fabricantes comoEricsson, Motorola y Nokia, por lo que a partir de la sexta actualización, EPOC32 pasó a ser conocido como Symbian OS.





VICTIMA DE LA ERA DE LOS SMARTPHONES

Tras una pausa más larga de lo que nos hubiera gustado, hemos vuelto. Esta semana volvemos a traer otra edición de Sistemas operativos muertos. Tras haber visto MeeGoBada y WebOS, esta semana traemosla historia de Symbian, el célebre sistema operativo cuyo principal benefactor era Nokia que durante años dominó en el mercado estando en los terminales de los principales fabricantes, y que acabó desapareciendo el año pasado tras no haberse sabido adaptar a la era de los smartphones y las pantallas táctiles. ¿Listos para un viaje atrás en el tiempo?

CAIDA DE SYMBIAN: LA ERA DEL IPHONE
En enero de 2007, Steve Jobs asombró al mundo con el iPhone de la compañía Apple. Bueno, en realidad para muchos no fue un amor a primera vista para muchos, y no fue hasta el iPhone 3G cuando verdaderamente se vió la importancia de lo que acabábamos de ver. Symbian quizás fue una de las que no logró ver el valor potencial que tenía la plataforma creada por Apple, al igual que le pasó a Steve Ballmer. Esto es un hecho por el que pocos pueden ser culpados, el no ver la tendencia que iba a marcar, sino que se debe culpar por el hecho de no haberla seguido.




Y esto es precisamente lo que le pasó a Symbian, al igual que a BlackBerry: no sólo no supo adaptarse a los tiempos, sino que no siguió la corriente ganadora que marcó el iPhone desde un principio, a diferencia de otros como Android. Este pensamiento arrastró también a Nokia de forma indirecta cuando, en junio de 2008, la compañía ahora propiedad de Microsoft adquirió Symbian Ltd., acordando la compra con sus restantes socios. Bajo este acuerdo Nokia se convirtió en el más importante contribuyente de la firma y, a su vez fue fundada una organización sin ánimo de lucro denominada Symbian Foundation.
La Symbian Foundation fue creada con varios propósitos: dar a conocer, coordinar y asegurar compatibilidad entre diferentes versiones de Symbian y diferentes dispositivos. También actuó como un enlace para la comunidad, aportando servicios clave a sus miembros como la colección, escritura y distribución y distribución de código Symbian, ya que la fundación solo aportaba las herramientas y nunca escribía ningún tipo de código. Esto nos recuerda en cierto modo a lo que vemos hoy en día con Android y AOSP (Android Open Source Project) cuyas funciones no son muy diferentes a lo que hacía la Symbian Foundation.

Evidentemente, el tirón que tenía Symbian no iba a perderlo de la noche a la mañana, al igual que Nokia, uno de sus principales benefactores, ya quehasta finales de 2010 serían líderes en ventas a nivel mundial, siendo superados a principios de 2011 por iOS. Pero no había dudas en cuanto a la situación: era un síntoma definitivo de caída, tras la superación por parte de Android en Europa, dejando atrás a iOS y Symbian. El resto de camino que quedaba era cuesta abajo y sin frenos, y los siguientes meses serían muestra de ello, por mucho que Symbian y Nokia hicieran por remediarlo.
En 2010, Symbian^3 (Symbian OS 9.5) fue presentado y liberado al público y, aunque las pantallas táctiles era evidentemente el camino a seguir, no había todavía una base de usuarios masiva de dispositivos táctiles para que los desarrolladores comercializar. De hecho, aunque había planeado una actualización a Symbian^4, ésta nunca llegó. Además, seguía habiendo un grave problema de fragmentación ya que había algunas aplicaciones que funcionaban en los S60 quinta edición, pero no funcionaban en Symbian^3.

Sin embargo, el último clavo en el ataúd estaba aún por llegar, e iba a venir por aquella compañía que en su día apostó por Symbian cuando todas las demás desistieron, comprando Symbian en su totalidad. El 11 de febrero de 2011, Nokia anunció una colaboración con Microsoft que permitiría a Nokia tener Windows Phone como su plataforma móvil para smartphones de forma primaria, dejando a Symbian en plano secundario. Esto fue desastroso para Symbian, ya que una investigación realizada en junio de ese mismo año indicaba que casi un 40% de desarrolladores que trabajaban con Symbian abandonarían próximamente la plataforma. Era un barco que se hundía y no había nada que hacer para remediarlo.
A partir de aquí, Nokia comenzó a cerrar filas, cesando el 5 de abril de 2011 cualquier cesión de software Symbian de forma libre y reduciendo su colaboración a un pequeño grupo de partners en Japón. Más adelante, en diciembre de 2011, Nokia sustituye la denominación Symbian por Nokia Belle hacia el público como parte de sus planes de unificación de marcas. Sin embargo, el sistema operativo Symbian seguiría llamándose como tal de forma interna y de cara a los desarrolladores para no provocar confusión, como un símbolo de resistencia a su próxima desaparición.

Desafortunadamente, este lavado de cara no motivó a los desarrolladores para nada y durante el 2012 no hubo noticias de relevancia del sistema operativo que en su día arrasó en el mercado. Cero. Nada. Y si algo necesita un sistema operativo (o cualquier cosa, dicho sea de paso) es publicidad, sea buena o mala, y que los focos de atención estén pendientes de él. Symbian había perdido hasta eso y otros jugadores en el tablero habían ocupado su lugar. Lo único que le quedaba era ver cuando Nokia decidía prescindir de sus servicios y jubilar a Symbian.
En enero de 2013, sin embargo, hubo una cierta sorpresa, seguido de una nota aclaratoria que explicaba el por qué de esta sorpresa: Nokia presentaba el Nokia 808 Pureview, un Symbian con una espectacular cámara de 41 megapíxeles, siendo el primero en su clase en ofrecer una lente Carl Zeiss con la tecnología PureView, precursor de lo que veríamos con el Lumia 1020. Pero este móvil llegaba con una mala noticia bajo el brazo, y es que sería el último modelo de la compañía con este sistema operativo, y por tanto, el último teléfono con Symbian.

Con el apartado del hardware despachado, sólo quedaba por saber que pasaría con el software, ya que tanto Symbian y MeeGo todavía tenían soporte para subir nuevos contenidos a su tienda y actualizarlos. Esto finalizó el 1 de enero de este año, a pesar de que Elop anunció que Symbian recibiría soporte hasta 2016, cortando el acceso a Symbian de contenido nuevo o actualizaciones de lo que ya hubiera en la tienda de aplicaciones, aunque sí podías descargar lo que hubiera ya disponible para esas plataformas. Symbian había muerto.



ACTUALIDAD  DE SYSMBIAN

Podríamos decir que Symbian tuvo una segunda vida como está teniendo webOS, o sufrió una especie de reencarnación como la que vimos en Bada con Tizen o MeeGo con el smartphone Jolla, o incluso que vivió en una granja a las afueras de la ciudad. Pero sería engañarles. Symbian fue un producto que, aunque dió lo que los usuarios demandaban en su día, no supo adaptarse a los tiempos y por tanto fue víctima de su propia negativa a evolucionar.

Además, dentro de la historia de Symbian, no debemos olvidar a quién arrastró en su caída: Nokia, una empresa que era líder en el sector, y que acabó vendida a Microsoft por (al menos bajo mi opinión) un precio insuficiente. Podemos echarle las culpas a su negativa a usar pantallas táctiles hasta que fue demasiado tarde, o su software lento y fragmentado, cuando lo más correcto sería echarle la culpa a todo el conjunto. Este negocio va de innovación y progreso y, resumiendo, Symbian no supo estar a la altura de las circunstancias.



sábado, 9 de julio de 2016

INTERBLOQUEOS







INTERBLOQUEOS







Interbloqueo Se dice que dos o más procesos están bloqueados, cuando están suspendidos en espera de un evento que sólo puede ser activado por uno de los procesos bloqueados, y por lo tanto dicho evento nunca sucederá. Para este problema no existe solución Un ejemplo fácil para entender este contexto es imaginar que existen dos procesos que compiten por dos recursos que necesitan para funcionar, que solo pueden ser usados por un proceso a la vez. El primer proceso obtiene el permiso de utilizar uno de los recursos. El segundo proceso toma el otro recurso, y luego intenta utilizar el recurso ya utilizado por el primer proceso, por lo tanto queda en espera. Cuando el primer proceso a su vez intenta utilizar el otro recurso, se produce un interbloqueo, donde los dos procesos esperan la liberación del recurso que utiliza el otro proceso.
Condiciones necesarias para un interbloqueo  • Exclusión mutua: Si dos procesos solicitan un recurso exclusivo, uno de los dos quedará suspendido hasta que el favorecido libere el recurso.     • Contención o retención y espera: Si un proceso necesita más de un recurso para realizar su trabajo, conservará en su poder los recursos exclusivos ya asignados, mientras espera por otro recurso adicional.
Condiciones necesarias para un interbloqueo • Inapropiatividad: Los recursos asignados a un proceso, sólo pueden ser liberados por el proceso mismo y no pueden ser desasignados por el sistema, cuando otro proceso los necesite. • Espera circular: Dependencia: Si un proceso P1 está suspendido en espera de un recurso exclusivo que está asignado a otro proceso P2, entonces decimos que P1 depende de P2 (P1 <= P2).
Formas de enfrentar los interbloqueos • Indiferencia: Problema del usuario y del programador, lograr que no se dé el interbloqueo. • Prevención: Consisten en condicionar el sistema con una serie de restricciones a los programadores, para que no se den al menos una de las condiciones del interbloqueo, por lo que éste nunca sucederá.




Formas de enfrentar los interbloqueos • Evitación o predicción: Esta estrategia consiste en dejar que las condiciones para el interbloqueo se puedan dar, pero en el momento de asignar recursos, y se detecte que puede ocurrir un interbloqueo, deniega la asignación del recurso que puede desencadenar el interbloqueo. • Detección y recuperación: En esta política, el sistema deja que suceda el interbloqueo, pero se implementan procesos encargados de revisar el estado de asignación de los procesos, para detectar los interbloqueo. Una vez detectado, se pueden implementar políticas de recuperación de interbloqueo, que básicamente consisten en matar procesos.





Ejemplos de  interbloqueo

  El Interbloqueo se puede definir como el bloque permanente de un conjunto de procesos que compiten por los recursos del sistema, todos los interbloqueos suponen necesidades contradictorias de recursos, por parte de dos o más procesos.
Un ejemplo clásico de interbloqueo es el interbloqueo de tráfico:


2.- Ahora se describe una situación de interbloqueo, en la que intervienen procesos y recursos informáticos, al siguiente gráfico se le asigna la siguiente forma:

           Proceso P                               Proceso Q
         Obtener A                               Obtener B
         Obtener B                               Obtener A
         Liberar A                                Liberar B
         Liberar B                                Liberar A



El que se produzca interbloqueo o no, depende de la dinámica de la ejecución, por ejemplo; supóngase que p no necesitara ambos recursos en el mismo instante y tuviera la siguiente forma:
Proceso P
Obtener A
Liberar A
Obtener B
Liberar B


Ejemplo Ilustrativo:




•Dos procesos compiten por el acceso exclusivo a un archivo D del disco y a una unidad de cinta C. Guiarse por la tabla  6.4, el interbloqueo se produce si un proceso pide un recurso y retiene otro.
                                      p0p1q0q1p2q2
Esta es la forma para que se produzca un interbloqueo en un sistema multiprogramado







jueves, 7 de julio de 2016

ADMINISTRACIÓN DE MEMORIA



Administración de la Memoria





Administración de la memoria sin intercambio o paginación.
Los sistemas de administración de memoria se pueden clasificar en dos tipos. Los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecución (intercambio y paginación) y aquellos que no.

Monopogramación sin intercambio o paginación.
Es en forma secuencial pues solo se tiene un objeto en memoria en cada instante, el usuario carga toda la memoria con un programa, esto implica que cada proceso debe contener controladores de dispositivo para cada uno de los dispositivos E/S que utilice.

 Multiprogramación y uso de la memoria.
La multiprogramación facilita la programación de una aplicación al dividirla en dos o mas procesos. La mayoría de los procesos tardan cierto tiempo en la espera de datos de dispositivos E/S.
Un modelo para el uso y aprovechamiento de la CPU es el modelo probabilístico dado por la fórmula :
Uso de la CPU = 1 - pn

Multiprogramación con particiones fijas.
El objetivo en todo esto es tener mas de un proceso en memoria a la vez, solución posible sería dividir la memoria en n partes al inicio de una sesión de uso de la máquina, pero aún así se obtiene el desperdicio de particiones grandes con una tarea pequeña, la respuesta puede ser tener particiones pequeñas también.
Las tareas que van llegando se forman hasta que una partición adecuada está disponible, en cuyo momento la tarea se carga en esa partición y se ejecuta hasta terminar.



Intercambio.
En un sistema por lotes la organización de la memoria en particiones fijas es adecuado pero en un ambiente multiusuario la situación es distinta con el tiempo compartido, ya que existen mas usuarios de los que puede albergar la memoria, por lo que es conveniente albergar el exceso de los procesos en disco., por supuesto para ser ejecutados estos procesos deben ser trasladados a la memoria principal. Al traslado de procesos de disco a memoria y viceversa se le llama intercambio.

Multiprogramación con particiones variables.
Mediante un algoritmo de administración de memoria las particiones variables varían de forma dinámica durante el uso de la máquina, evitando desperdicio de memoria
Otros métodos de administración de memoria que tenemos son:
la administración de memoria con mapa de bits la memoria se divide en unidades de asignación, a cada asignación le corresponden un bit en el mapa de bits, un mapa de bits es una forma sencilla para llevar un registro de las palabras de la memoria en una cantidad fija de memoria.
la administración de memoria con listas ligadas otra forma de mantener un registro en memoria es mediante una lista ligada donde cada entrada de la lista específica un hueco o un proceso.
la administración de memoria con el sistema de los asociados basado en el sistema binario o utiliza para las direcciones.

 Memoria Virtual
El método diseñado por Fotheringham en 1961 se conoce como Memoria Virtual, la idea es que el tamaño combinado de la pila, programa y datos puede exceder la memoria física disponible para ello. El S.O. mantiene en memoria aquellas partes del programa que se deben permanecer en memoria y el resto lo deja en disco, las partes entre el disco y la memoria se intercambian de modo que se vayan necesitando.










Paginación.
El espacio de direcciones de cada proceso se divide en bloques de tamaño uniforme llamados páginas, los cuales se pueden colocar dentro de cualquier para página marco disponible en memoria. Cuando las tablas de páginas son muy grandes se puede utilizar un esquema de paginación de varios niveles para que las páginas se paginen a sí mismas.
Existen distintos niveles de paginación y a su vez distintos modelos de computadoras han trabajado con ellas.
Paginación de nivel 1: PDP-11
Paginación de 2 niveles: la VAX
Paginación de 3 niveles: la SPARC
Paginación de 4 niveles: la 68030

Memoria asociativa
En los algoritmos de paginación las tablas de páginas se mantienen en la memoria debido a su gran tamaño, en potencia este diseño tiene un efecto enorme en el rendimiento.

PARA COMPRENDER AUN MEJOR ACERCA DE ADMINISTRACION DE MEMORIA RECOMIENDO VER EL SIGUIENTE VIDEO QUE AQUI DEJO LA DIRECCION, NOS DA UNA BUENA EXPLICACION A CERCA DE ESTE TEMA:











jueves, 30 de junio de 2016

SISTEMAS DE ARCHIVOS


Funciones del Sistema de Archivos

Los usuarios deben poder crear, modificar y borrar archivos. Se deben poder compartir los archivos de una manera cuidadosamente controlada.

El mecanismo encargado de compartir los archivos debe proporcionar varios tipos de acceso controlado:
•             Ej.: “Acceso de Lectura”, “Acceso de Escritura”, “Acceso de Ejecución”, varias combinaciones de estos, etc.
Se debe poder estructurar los archivos de la manera más apropiada a cada aplicación.
Los usuarios deben poder ordenar la transferencia de información entre archivos.
Se deben proporcionar posibilidades de “respaldo” y “recuperación” para prevenirse contra:
•             La pérdida accidental de información.
•             La destrucción maliciosa de información.
Se debe poder referenciar a los archivos mediante “Nombres Simbólicos”, brindando “Independencia de Dispositivos”.
En ambientes sensibles, el sistema de archivos debe proporcionar posibilidades de “Cifrado” y “Descifrado”.

El sistema de archivos debe brindar una interfase favorable al usuario:
•             Debe suministrar una “visión lógica” de los datos y de las funciones que serán ejecutadas, en vez de una “visión física”.
•             El usuario no debe tener que preocuparse por:
o             Los dispositivos particulares.
o             Dónde serán almacenados los datos.
o             El formato de los datos en los dispositivos.
o             Los medios físicos de la transferencia de datos hacia y desde los dispositivos.
  
El 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.


Rutas y nombre de archivos
En los sistemas de archivos jerárquicos, usualmente, se declara la ubicación precisa de un archivo con una cadena de texto llamada ruta(path, en inglés).
La nomenclatura para rutas varía ligeramente de sistema en sistema, pero mantienen por lo general una misma estructura. Una ruta viene dada por una sucesión
de nombres de directorios y subdirectorios, ordenados jerárquicamente de izquierda a derecha y separados por algún carácter especial que suele ser una barra diagonal
 (/) o barra diagonal invertida (\) y puede terminar en el nombre de un archivo presente en la última rama de directorios especificada.

 ¿Qué son los 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. El término también es utilizado para referirse a una partición o disco que se está utilizando para almacenamiento, o el tipo del sistema de archivos que utiliza. Así uno puede decir “tengo dos sistemas de archivo” refiriéndose a que tiene dos particiones en las que almacenar archivos, o que uno utiliza el sistema de “archivos extendido”, refiriéndose al tipo del sistema de archivos.
La diferencia entre un disco o partición y el sistema de archivos que contiene es importante. Unos pocos programas (incluyendo, razonablemente, aquellos que crean sistemas de archivos) trabajan directamente en los sectores crudos del disco o partición; si hay un archivo de sistema existente allí será destruido o corrompido severamente. La mayoría de programas trabajan sobre un sistema de archivos, y por lo tanto no utilizarán una partición que no contenga uno (o que contenga uno del tipo equivocado).
Antes de que una partición o disco sea utilizada como un sistema de archivos, necesita ser iniciada, y las estructura de datos necesitan escribirse al disco.


Ejemplo de 'ruta' en un sistema Unix

Así, por ejemplo, en un sistema tipo Unix como GNU/Linux, la ruta para la canción llamada "La canción.ogg" del usuario "Fulano" sería algo como:
/home/Fulano/Mi música/La canción.ogg
donde:
•             / representa el directorio raíz donde está montado todo el sistema de archivos.
•             home/Fulano/Mi música/ es la ruta del archivo.
•             La canción.ogg es el nombre del archivo que se establece como único.


Sistemas de archivos soportados por Linux

Linux soporta una gran cantidad de tipos diferentes de sistemas de archivos. Para nuestros propósitos los más importantes son:

minix
El más antiguo y supuestamente el más fiable, pero muy limitado en características (algunas marcas de tiempo se pierden, 30 caracteres de longitud máxima para los nombres de los archivos) y restringido en capacidad (como mucho 64 MB de tamaño por sistema de archivos).
xia
Una versión modificada del sistema de archivos minix que eleva los límites de nombres de archivos y tamaño del sistema de archivos, pero por otro lado no introduce características nuevas. No es muy popular, pero se ha verificado que funciona muy bien.  
ext3
El sistema de archivos ext3 posee todas las propiedades del sistema de archivos ext2. La diferencia es que se ha añadido una bitácora (journaling). Esto mejora el rendimiento y el tiempo de recuperación en el caso de una caída del sistema. Se ha vuelto más popular que el ext2.
ext2
El sistema de archivos nativo Linux que posee la mayor cantidad de características. Está diseñado para ser compatible con diseños futuros, así que las nuevas versiones del código del sistema de archivos no necesitará rehacer los sistemas de archivos existentes.
ext
Una versión antigua de ext2 que no es compatible en el futuro. Casi nunca se utiliza en instalaciones nuevas, y la mayoría de la gente que lo utilizaba han migrado sus sistemas de archivos al tipo ext2.
reiserfs
Un sistema de archivos más robusto. Se utiliza una bitácora que provoca que la pérdida de datos sea menos frecuente. La bitácora es un mecanismo que lleva un registro por cada transacción que se va a realizar, o que ha sido realizada. Esto permite al sistema de archivos reconstruirse por sí sólo fácilmente tras un daño ocasionado,
por ejemplo, por cierres del sistema inadecuados.
Adicionalmente, existe soporte para sistemas de archivos adicionales ajenos, para facilitar el intercambio de archivos con otros sistemas operativos. Estos sistemas de archivos ajenos funcionan exactamente como los propios, excepto que pueden carecer de características usuales UNIX , o tienen curiosas limitaciones, u otros inconvenientes.
msdos
Compatibilidad con el sistema de archivos FAT de MS-DOS (y OS/2 y Windows NT).
umsdos
Extiende el dispositivo de sistema de archivos msdos en Linux para obtener nombres de archivo largos, propietarios, permisos, enlaces, y archivos de dispositivo. Esto permite que un sistema de archivos msdos normal pueda utilizarse como si fuera de Linux, eliminando por tanto la necesidad de una partición independiente para Linux.  
vfat
Esta es una extensión del sistema de archivos FAT conocida como FAT32. Soporta tamaños de discos mayores que FAT. La mayoría de discos con MS Windows son vfat.
iso9660
El sistema de archivos estándar del CD-ROM; la extensión popular Rock Ridge del estándar del CD-ROM que permite nombres de archivo más largos se soporta de forma automática.
nfs
Un sistema de archivos de red que permite compartir un sistema de archivos entre varios ordenadores para permitir fácil acceso a los archivos de todos ellos.
smbfs
Un sistema de archivos que permite compartir un sistema de archivos con un ordenador MS Windows. Es compatible con los protocolos para compartir archivos de Windows.
hpfs
El sistema de archivos de OS/2.
sysv
EL sistema de archivos de Xenix, Coherent y SystemV/386..
La elección del sistema de archivos a utilizar depende de la situación. Si la compatibilidad o alguna otra razón hace necesario uno de los sistemas de archivos no nativos, entonces hay que utilizar ése. Si se puede elegir libremente, entonces lo más inteligente sería utilizar ext3, puesto que tiene todas las características de ext2,  y es un sistema de archivos con bitácora.
Existe también el sistema de archivos proc, generalmente accesible desde el directorio /proc, que en realidad no es un sistema de archivos, aún cuando lo parece. El sistema de archivos proc facilita acceder a ciertas estructura de datos del núcleo, como la lista de procesos (de ahí el nombre). Hace que estas estructuras de datos parezcan un sistema de archivos, y que el sistema de archivos pueda ser manipulado con las herramientas de archivos habituales.
Por ejemplo, para obtener una lista de todos los procesos se puede utilizar el comando
$ ls -l /proc
total 0
dr-xr-xr-x   4 root     root            0 Jan 31 20:37 1
dr-xr-xr-x   4 liw      users           0 Jan 31 20:37 63
dr-xr-xr-x   4 liw      users           0 Jan 31 20:37 94
dr-xr-xr-x   4 liw      users           0 Jan 31 20:37 95
dr-xr-xr-x   4 root     users           0 Jan 31 20:37 98
dr-xr-xr-x   4 liw      users           0 Jan 31 20:37 99
-r--r--r--   1 root     root            0 Jan 31 20:37 devices
-r--r--r--   1 root     root            0 Jan 31 20:37 dma
-r--r--r--   1 root     root            0 Jan 31 20:37 filesystems
-r--r--r--   1 root     root            0 Jan 31 20:37 interrupts
-r--------   1 root     root      8654848 Jan 31 20:37 kcore
-r--r--r--   1 root     root            0 Jan 31 11:50 kmsg
-r--r--r--   1 root     root            0 Jan 31 20:37 ksyms
-r--r--r--   1 root     root            0 Jan 31 11:51 loadavg
-r--r--r--   1 root     root            0 Jan 31 20:37 meminfo
-r--r--r--   1 root     root            0 Jan 31 20:37 modules
dr-xr-xr-x   2 root     root            0 Jan 31 20:37 net
dr-xr-xr-x   4 root     root            0 Jan 31 20:37 self
-r--r--r--   1 root     root            0 Jan 31 20:37 stat
-r--r--r--   1 root     root            0 Jan 31 20:37 uptime
-r--r--r--   1 root     root            0 Jan 31 20:37
version$
(Puede haber no obstante algunos archivos adicionales que no correspondan con ningún proceso. El ejemplo anterior se ha recortado.)
Tenga en cuenta que aunque se llame sistema de archivos, ninguna parte del sistema de archivos proc toca el disco. Existe tan sólo en la imaginación del núcleo.
Cuando alguien intenta echar un vistazo a alguna parte del sistema de archivos proc, el núcleo hace que parezca como si esa parte existiera en alguna parte, aunque no lo haga. Así, aunque exista un archivo /proc/kcore de muchos megabytes, no quita espacio del disco.

Ejemplo de 'ruta' en un sistema Windows
Un ejemplo análogo en un sistema de archivos de Windows (específicamente en Windows 8) se vería como:
C:\Users\Fulano\Music\canción.mp3
donde:
•             C: es la unidad de almacenamiento en la que se encuentra el archivo.
•             \Users\Fulano\Music\ es la ruta del archivo.
•             canción es el nombre del archivo.
•             .mp3 es la extensión del archivo, este elemento (parte del nombre) es especialmente relevante en los sistemas Microsoft Windows, porque sirve para identificar qué tipo de archivo es y la aplicación que está asociada con el archivo en cuestión, es decir, con qué programa se puede abrir y leer, editar o reproducir el archivo. Para la mayoría de los sistemas operativos modernos la extensión del archivo es un complemento burocrático solo útil para la observación del usuario, ya que los entornos de administración de archivos y aplicaciones varias, analizan la información contenida en el principio del interior del archivo (MIME headers) para determinar su función o asociación, la cual normalmente está catalogada en la tabla MIME Content-Type en el sistema.
El sistema Windows permite ocultar la extensión de los archivos si el usuario lo desea, de no hacerlo la extensión aparece en los nombres de todos los archivos. En el sistema operativo Windows XP, si el usuario cambia la extensión de un archivo, el archivo puede quedar inutilizable si la nueva extensión lo asocia a un programa que no tenga la capacidad de editar o reproducir ese tipo de archivo. Algunos usuarios igual habilitan la visualización de las extensiones en los sistemas Windows como medida de precaución para evitar virus que utilicen íconos o nombres parecidos a los archivos personales del usuario, ya que la extensión permite identificar a los ficheros .EXE (ejecutables en Windows).

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.