viernes, 16 de mayo de 2014

Sistemas de Archivos

El sistema de archivos o ficheros (en inglés:filesystem) es el componente del sistema operativo encargado de administrar y facilitar el uso de las memorias periféricas, ya sean secundarias o terciarias. Sus principales funciones son la asignación de espacio a los archivos, la administración del espacio libre, y la administración del acceso a los datos resguardados. Estructuran la información guardada en una unidad de almacenamiento (normalmente undisco duro de una computadora), que luego será representada ya sea textual o gráficamente utilizando un gestor de archivos. La mayoría de los sistemas operativos manejan su propio sistema de archivos.1
Lo habitual es utilizar dispositivos de almacenamiento de datos que permiten el acceso a los datos como una cadena de bloques de un mismo tamaño, a veces llamados sectores, usualmente de 512 bytes de longitud (También denominados clústers). El software del sistema de archivos es responsable de la organización de estos sectores en archivos y directorios y mantiene un registro de qué sectores pertenecen a qué archivos y cuáles no han sido utilizados. En la práctica, un sistema de archivos también puede ser utilizado para acceder a datos generados dinámicamente, como los recibidos a través de una conexión de red (sin la intervención de un dispositivo de almacenamiento).
Los sistemas de archivos tradicionales proveen métodos para crear, mover, renombrar y eliminar tanto archivos como directorios, pero carecen de métodos para crear, por ejemplo, enlaces adicionales a un directorio o archivo (enlace duro en Unix) o renombrar enlaces padres (".." en Unix).
El acceso seguro a sistemas de archivos básicos puede estar basado en los esquemas de lista de control de acceso o capacidades. Las listas de control de acceso hace décadas que demostraron ser inseguras, por lo que los sistemas operativos experimentales utilizan el acceso por capacidades. Los sistemas operativos comerciales aún funcionan con listas de control de acceso.

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

Conceptos Básicos

A continuación se muestran los conceptos básicos sobre como se organiza la información de los discos en Linux.

Discos, particiones y sistemas de archivos

Un disco es un dispositivo físico capaz de almacenar información de forma permanente, por lo tanto, la información no se borrará si se produce un corte del suministro eléctrico. Los discos pueden ser fijos, como los discos duros, o removibles como los CD-ROM, DVD's o memorias Flash USB.
O bien porque la capacidad de un disco es grande, o bien porque queremos tener más de un sistema operativo instalado, o por agrupar la información según su importancia, podemos particionar un disco. Un disco particionado se comporta como si se tratasen de varios discos. Por ejemplo, tenemos un disco duro de 80GBytes y queremos instalar dos sistemas operativos, Windows y Linux, dividiremos el disco en al menos 3 particiones. Una primera de 30 GBytes para Windows, una segunda de 480 MBytes para la memoria virtual de Linux, y una tercera de aproximadamente 50 Gbytes para Linux (los números utilizados son meramente orientativos).
Cuando creamos una partición, todos los discos tienen al menos una, especificamos el sistema de archivos que vamos a utilizar. Un sistema de archivos define como se organizan los datos dentro de la partición y las operaciones que podemos realizar sobre éllos. Existen varios tipos de sistemas de archivos, los más comunes:
  • FAT, FAT16, FAT32: sistema de archivos de MS-DOS, Windows 95 y Windows 98. Se sigue utilizando por su sencillez y porque es reconocido por todos los sistemas operativos. Es un sistema de archivos muy frágil y no es tolerante a fallos, además de ser lento con respecto a los otros.
  • NTFS: sistema de archivos de Windows NT, 2000, XP y 2003. Es un sistema más sofisticado y rápido que es anterior y el actual estándard de Microsoft. Es un sistema de archivos cuya implementación es propietaria y cerrada, por lo que no es reconocido en su totalidad por todos los sistemas operativos.
  • EXT2: sistema de archivos estándard de Linux, su organización interna permite no necesitar defragmentación (fenómeno que se da en otros sistemas por el cual los archivos de distribuyen de forma que el tiempo que se tarda en acceder a ellos se incrementa, realientizando el acceso a disco).
  • EXT3: es la extensión de EXT2, incorpora tolerancia a fallos permitiendo una rápida recuperación del sistema cuando el ordenador se bloqueó o apagó inesperadamente.
  • ReinserFS y XFS: sistemas de archivos de alto rendimiento y rapidez que mejoran los sistemas anteriores.

Carpetas y el arbol de información
La información que se almacena en los discos se agrupa en archivos, que veremos mas adelante. Debido a que la capacidad de los discos es muy grande los archivos se clasifican en contenedores denominados carpetas o directorios.
Las carpetas pueden contener archivos o subcarpetas, las subcarpetas son carpetas que se encuentran dentro de otra. Asi, todas las carpetas se encuentran dentro de otra excepto la carpeta root que se representa por el símbolo / (GNOME y Nautilus la denominan sistema de archivos). Las carpetas, por lo tanto, estan organizadas con una estructura de árbol.
Las particiones de las unidades se montan sobre una carpeta, por lo que el acceso a la información por parte del usuario es independiente de la unidad donde ésta se encuentre.

Carpetas del sistema
Todos los sitemas Linux organizan la información utilizando unos nombre de carpetas comunes. Según las distribuciones algunas carpetas o archivos pueden cambiar su nombre o ubicación.

Montar y desmontar unidades
Las unidades fijas se montan en una carpeta, normalmente al arrancar Linux, y es el administrador el encargado de montarlas y desmontarlas.
Montar una unidad o partición es hacer accesible su contenido a través de la carpeta con la que se vincula.
Desmontar una unidad o partición es desvincularla de la carpeta sobre la que estaba montada. Cuando se desmonta, nos aseguramos que toda la información se almacena de forma correcta sin perder información. Si al desmontar obtenemos un mensaje indicándonos que no es posible desmontar la unidad, se debe a que estamos utilizando algún archivo de la unidad.
Las unidades removibles se montan de forma automática cuando el usuario las utiliza (como las unidades USB, CD-ROM, DVD, ...), y es el usuario el que se encarga de desmontarlas.

Archivos
Los archivos contienen documentos de texto, sonidos, imágenes, videos, programas, diapositivas, etc.
Todos los archivos se están vinculados al menos a una carpeta que los contiene y tienen un único nombre que los identifica dentro de la carpeta, no pudiendo haber dos archivos con el mismo nombre dentro de la misma carpeta.
En Linux, el contenido de un archivo se determina analizando los datos que contiene, pero en otros sistemas se utilizan extensiones. La extensiones permiten saber el tipo de contenido de un archivo con solo ver su nombre, un archivo se identifica por su nombre, un punto, y el tipo de extensión. Por ejemplo, foto1.jpg la extensión "jpg" indica que es una imagen comprimida;cancion1.mp3 la extensión "mp3" indica que contiene sonido comprimido;borrador.txt la extensión "txt" indica que el contenido del archivo es texto sin formato. GNOME y Nautilus utilizan los dos métodos, si el tipo de archivo no coincide con la extensión nos avisa informándonos del error.

Usuarios, grupos y otros. Permisos
Los archivos en Linux estan vinculados a un usuario y un grupo, siendo el usuario el dueño del archivo y quien deciden que operaciones se pueden hacer sobre estos archivos.
Las operaciones que se pueden hacer sobre un archivo son:
  • lectura(r), indica si el contenido del archivo puede ser accesible.
  • escritura(w), indica si el contenido del archivo es modificable
  • ejecución(x), indica si el archivo puede ser ejecutado o lanzado.
Sobre cada archivo se definen estas operaciones mediante permisos para el usuario (dueño del archivo), para los usuarios del grupo vinculado al archivo, y para el resto de usuarios. Así, por ejemplo, un usuario puede permitir a los miembros de su grupo que lean sus archivos pero no modificarlos, y al resto de usuarios denegar su acceso.
El único usuario que tiene acceso a todos los archivos, su contenido y permisos, es el administrador (root).
De esta forma el sistema de archivos se convierte en un sistema fiable y seguro aunque el ordenador sea utilizado por más de un usuario.

Enlaces

Los enlaces permiten saltar de forma rápida a un archivo o carpeta, reduciendo la altura del arbol cuando deseamos acceder a archivos o subcarpetas que se encuentran en niveles profundos. Además, los enlaces convierten la estructura de arbol del sistema de archivos en un gráfo, puesto que podemos acceder a subcarpetas que se encuentran también en otras subcarpetas.

lunes, 12 de mayo de 2014

Introducción: Linux

Linux es un sistema operativo, compatible Unix. Dos características muy peculiares lo diferencian del resto de los sistemas que podemos encontrar en el mercado, la primera, es que es libre, esto significa que no tenemos que pagar ningun tipo de licencia a ninguna casa desarrolladora de software por el uso del mismo, la segunda, es que el sistema viene acompañado del código fuente.
El sistema lo forman el núcleo del sistema (kernel) más un gran número de programas / bibliotecas que hacen posible su utilización. Muchos de estos programas y bibliotecas han sido posibles gracias al proyecto GNU, por esto mismo, muchos llaman a Linux, GNU/Linux, para resaltar que el sistema lo forman tanto el núcleo como gran parte del software producido por el proyecto GNU.
Linux se distribuye bajo la GNU General Public License por lo tanto, el código fuente tiene que estar siempre accesible y cualquier modificación ó trabajo derivado tiene que tener esta licencia.
El sistema ha sido diseñado y programado por multitud de programadores alrededor del mundo. El núcleo del sistema sigue en continuo desarrollo bajo la coordinacion de Linus Torvalds, la persona de la que partio la idea de este proyecto, a principios de la década de los noventa. Hoy en dia, grandes compañias, como IBM, SUN, HP, Novell y RedHat, entre otras muchas, aportan a Linux grandes ayudas tanto económicas como de código.
Dia a dia, más y más programas y aplicaciones están disponibles para este sistema, y la calidad de los mismos aumenta de versión a versión. La gran mayoría de los mismos vienen acompañados del código fuente y se distribuyen generalmente bajo los terminos de licencia de la GNU General Public License.
Más y más casas de software comercial distribuyen sus productos para Linux y la presencia del mismo en empresas aumenta constantemente por la excelente relación calidad-precio que se consigue con Linux.
Las arquitecturas en las que en un principio se puede utilizar Linux son Intel 386-, 486-, Pentium, Pentium Pro, Pentium II/III/IV, IA-64, Amd 5x86, Amd64, Cyrix y Motorola 68020,IBM S/390, zSeries, DEC Alpha, ARM, MIPS, PowerPC, SPARC y UltraSPARC. Además no es dificil encontrar nuevos proyectos portando Linux a nuevas arquitecturas.
Fuente: http://www.linux-es.org/sobre_linux

Finalidad del Blog

Debido a la necesidad de aprender a utilizar y programar en este sistema operativo (tomando consejo de un amigo) decidí realizar este blog donde publicaré toda la información que encuentre respecto al mismo.

El aprendizaje es un proceso, bienvenido al mío! 

Si alguien desea agregar información relevante acerca del tema del blog, será de mucha ayuda.