LINUX

CONCEPTOS BÁSICOS DE LINUX

Los conceptos fundamentales que se utilizan en el sistema operativo LINUX son los siguientes:

PROCESO

Es un algoritmo interpretado o compilado que está ejecutándose en un sistema y se encuentra residente en la memoria RAM. También es la representación de cualquier programa en ejecución el cual puede ser auditado, analizado, terminado, etc.

SERVICIO

Es un tipo de proceso que está a la escucha, es decir, no está haciendo nada a no ser que sea requerido, en cuyo caso atiende convenientemente la petición. Un servicio suele cargarse de forma permanente en memoria hasta que sea terminado o el Sistema Operativo lo cierre.

DEMONIO

Es un tipo especial de servicio que escucha a otros servicios o procesos. El demonio es un “programa que escucha a otro programa”. Un ejemplo claro de esto sería XINETD (extended Internet daemon) en sistemas Unix, que se encarga de escuchar a los procesos o servicios que soliciten conexión de red, y atiende esas peticiones.

SHELL O INTERFAZ DE USUARIO

Es un programa encargado de comunicar el entorno de aplicaciones con el kernel o núcleo del sistema. Un shell puede ser tanto una interfaz gráfica como intérprete de comandos.

Un shell interpreta y ejecuta instrucciones que le hemos proporcionado por medio de una línea de comandos (prompt). Es decir, el intérprete de comandos recibe lo que se escribe en la terminal (sinónimo de shell o interfaz) y lo convierte en instrucciones para el sistema operativo.

El prompt es una indicación que muestra el intérprete para anunciar que espera una orden del usuario. Cuando el usuario escribe una orden, el intérprete la ejecuta. En dicha orden, puede haber programas internos o externos: Los programas internos son aquellos que vienen incorporados en el propio intérprete, mientras que los externos son programas separados.

INODO

Se puede definir como un descriptor de una entrada de un sistema de archivos o archivos. Todo archivo tiene asociado un único inodo. Un inodo también puede ser definido como una clave numérica para el acceso al sistema plano de archivos, donde cada punto es capaz de recibir o entregar información.

FILESYSTEM (SISTEMA DE ARCHIVOS)

Una colección de todos los archivos y directorios de un sistema organizados en una jerarquía en forma de árbol.

SISTEMA DE DIRECTORIOS

Los sistemas de archivos UNIX se caracterizan generalmente por tener una estructura jerárquica, dar tratamiento consistente a la información de los archivos y a la protección de ellos.

El sistema de LINUX sigue básicamente el mismo de UNIX. Pero se puede encontrar una nueva división del sistema de directorios respecto de los archivos que lo componen como es: Compartible y No Compartible dependiendo si a la información de un host local pueden o no acceder otros hosts, además Estática y No Estática cuando la información puede ser o no alterada por el usuario.

El primer sistema de directorios que se aplicó a LINUX en su momento cumplió con las necesidades básicas, pero se volvió restrictivo, ya que, en los archivos, el nombre no podía superar los 14 caracteres y los 64 MB de espacio. Para resolver este problema surgió el primer sistema de archivos especialmente diseñado para LINUX, el ext2 (extended filesystem). En el desarrollo del sistema extendido (ext2) surgió un importante cambio en lo que respecta a sistemas de archivos, el sistema virtual de archivos (VFS, virtual filesystem) que existe entre el sistema real de archivos y el sistema operativo y sus servicios.

El logro del sistema virtual de archivos (VFS), es que a LINUX le permite montar una serie de sistemas de archivos diferentes y variados; es decir, todos los detalles de los sistemas de archivos son tratados por programas de modo que parezcan lo mismo tanto para el kernel como para las demás aplicaciones que se ejecutan en el sistema, en términos prácticos, es un modo de unificar los sistemas de archivos para poder ser manipulados por LINUX de un modo uniforme.

El sistema virtual de archivos ha sido implementado de tal forma que sea rápido y eficiente. Otra de sus funciones es analizar y verificar que la información sea almacenada adecuadamente. Una característica particular del sistema virtual de archivos es que guarda cierta información (caché) en la medida que monta y utiliza los sistemas de archivos, de tal forma de acelerar el procesamiento de la información.

El sistema de archivos real de LINUX, el ext2, funciona a través de bloques de información que va siendo almacenada en el disco duro, pero sin fragmentar la información. En muchos sentidos el sistema de almacenaje por bloques de información es, muchas veces, poco óptimo perdiéndose mucho espacio por la asignación de éstos, pero a pesar de todo esto, es el mejor método hasta el momento.

Cada archivo en el sistema ext2 posee un inodo único y cada inodo posee un único número identificador. Los directorios tan solo son archivos especiales que contienen punteros a los inodos de sus archivos miembros.

LINUX

KERNEL O NÚCLEO DE GNU/LINUX

El kernel del sistema GNU/LINUX (al que habitualmente se le denomina LINUX) es el corazón del sistema: se encarga de arrancar el sistema, para que sea utilizable por las aplicaciones y los usuarios. Gestiona los recursos del host para la gestión de la memoria, sistema de archivos, entrada/salida, procesos e intercomunicación de procesos.

El núcleo o kernel es la parte básica de cualquier sistema operativo, y en él descansa el código de los servicios fundamentales para controlar el sistema entero. Básicamente, su estructura se puede separar en:

  • Gestión de procesos: qué tareas se van a ejecutar y en qué orden y prioridad. Un aspecto importante es la planificación de CPU(Unidad Central de Procesamiento), cómo se optimiza el tiempo de la CPU para ejecutar las tareas con el mayor rendimiento o interactividad posible con los usuarios.
  • Intercomunicación de procesos y sincronización: cómo se comunican tareas entre sí, con qué diferentes mecanismos y cómo pueden sincronizarse grupos de tareas.
  • Gestión entrada/salida (E/S): control de periféricos y gestión de recursos asociados.
  • Gestión de memoria: optimización del uso de la memoria, sistema de paginación y memoria virtual.
  • Gestión de archivos: cómo el sistema controla y organiza los archivos presentes en el sistema y el acceso a los mismos.
DERECHO INFORMÁTICO, LINUX

SOFTWARE LIBRE Y OPEN SOURCE

Desde su origen LINUX se desarrolló bajo licencia pública GNU, lo que implica que se distribuye de manera gratuita y junto al código fuente de las aplicaciones incluidas, se puede copiar y distribuir libremente, o modificar el código fuente para mejorarlo o adaptarlo a nuestras necesidades, pero sin dejar de mencionar el autor original y de mantenerlo bajo la misma licencia.

Por otra parte, la Fundación de Software Libre FSF (Free Software Foundation), mediante su proyecto GNU, produce software (desde 1984) que puede ser utilizado libremente. En este modelo, el negocio no está en la ocultación del código, sino en el software complementario añadido, en la adecuación del software a los clientes y en los servicios agregados, como el mantenimiento y la formación de usuarios.

Frente a un código de tipo propietario, en el cual un fabricante (empresa de software) encierra su código, ocultándolo y restringiéndose los derechos a sí misma, sin dar posibilidad de realizar ninguna adaptación ni cambios que no haya realizado previamente la empresa fabricante.

Los programas con código abierto ofrecen las siguientes consideraciones:

  • Acceso al código fuente, ya sea para estudiarlo o modificarlo, para corregir errores, adaptarlo o añadir más prestaciones.
  • Gratuidad: normalmente, el software, ya sea en forma binaria o en la forma de código fuente, puede obtenerse libremente o por una módica cantidad en concepto de gastos de empaquetamiento, distribución y valores añadidos.
  • Evitar monopolios de software propietario: no depender de una única opción o único fabricante del software. Esto es más importante cuando se trata de una gran organización, ya sea una empresa o estado, los cuales no pueden (o no deberían) ponerse en manos de una determinada única solución y pasar a depender exclusivamente de ella.
  • Un modelo de avance, no basado en la ocultación de información, sino en la compartición del conocimiento, para lograr progresos de forma más rápida, con mejor calidad, ya que las elecciones tomadas están basadas en el consenso de la comunidad.