Organización de GNU/Linux
El sistema operativo GNU/Linux puede explicarse bajo una organización de tres capas. Una capa se considera una agrupación de componentes. En las capas se considera al hardware como componente de la primera de ellas o capa inferior. Dicho hardware incluye a la memoria y al CPU, entre otros elementos.
En la siguiente capa se encuentra el kernel o núcleo del sistema operativo. El kernel es el software que reside en memoria y le indica al CPU que hacer. Este núcleo gestiona al hardware y actúa como una interface entre éste y cualquier programa en ejecución.
Una forma más simplificada de GNU/Linux
Kernel de GNU/Linux
El Kernel o Núcleo de GNU/Linux es el responsable de la gestión de los recursos de la computadora y asignarlos a las tareas de los usuarios. Tales recursos incluyen al CPU, dispositivos periféricos como a unidad de CD/DVD, impresoras, escaners, etc.
Los programas interactúan con el kernel a través de las llamadas al sistema, funciones especiales con nombres bien conocidos. Un programador puede hacer uso de una llamada al sistema para interactuar con los dispositivos.
El kernel está a cargo de gestionar tareas para cuatro áreas generales del sistema:
- Procesos. El kernel es el responsable de determinar qué procesos pueden hacer uso del CPU.
- Memoria. El kernel asigna espacio de memoria a los procesos que están en ejecución.
- Controladores de dispositivos. El kernel actúa como una interface entre el hardware y los procesos. Es generalmente trabajo del kernel operar el hardware.
- Soporte a las llamadas al sistema. Los procesos usan las llamadas al sistema para comunicarse con el kernel.
GNU/Linux puede soportar muchos usuarios
Dependiendo del hardware y de los tipos de tareas que desempeñe una computadora, GNU/Linux puede dar soporte de uno a 1,000 usuarios, cada uno ejecutando concurrrentemente diferentes programas.
GNU/Linux puede ejecutar muchas tareas
El sistema operativo está fuertemente protegido para ofrecer multitarea, permitiendo que cada usuario ejecute más de una tarea a la vez. Los procesos pueden comunicarse uno con otro pero permanecen protegidos entre ellos.
GNU/Linux provee un sistema de archivos jerárquico
Un archivo es una colección de información, por ejemplo, un reporte o una carta. Puede contener también imágenes o una melodía o puede ser un programa ejecutable. Cada archivo es almacenadoo bajo un identificador en un dispositivo de almacenamiento como un disco duro. El sistema de archivos GNU/Linux provee una estructura donde los archivos son organizados bajo un directorio, que representa un folder.
Cada directorio tiene un nombre y puede contener archivos u otros directorios. Esta estructura ayuda al usuario a gestionar una gran cantidad de archivos agrupados jerarquicamente en directorios. Cada usuario tiene un directorio principal y todos los subdirectorios que requiera.
Para mantener una gestión fácil tanto para usuario como para administradores y desarrolladores de software, un grupo de entusiastas a través de la Internet, desarrolló el Linux Filesystem Standard (FSSTND), el cual se encuentra dentro del Linux Filesystem Hierarchy Standard (FHS) para definir un estándar en la estructura jerárquica de archivos bajo Linux.
GNU/Linux es un sistema operativo que permite la interacción de usuario a través de un shell de trabajo. Un shell es una interface, un programa o conjunto de programas que permiten acceder a los recursos que ofrece el sistema operativo y al kernel de éste a través de tal interface.
Los dos tipos de interfaces que permiten tal interacción, tanto en Unix como en los sistemas operativos derivados de él son: a) Ambiente gráfico a través de escritorios gráficos de trabajo, y b) Línea de comando a través de órdenes escritas.
Los escritorios de trabajo más populares son Gnome Desktop y K Desktop Environment, aunque existen otros como Xfce, Enlightenment, Cinnamon, Fluxbox y GNUstep, entre otros.
El programa más común en GNU/Linux para escribir las órdenes en la llamada línea de comando es Bourne Again Shell (Bash shell), pero existen otros populares como Bourne shell, Korn shell, Z shell y C shell, entre otros.
Shell de trabajo
Debido a que GNU/Linux es un sistema operativo multiusuario, cada uno puede elegir el shell de trabajo que desee. Puesto que los shells son programas que permiten interactuar con el sistema operativo a través de órdenes o comandos, el shell es un lenguaje de programación interpretado de alto nivel. Los comandos del shell pueden entonces ser agrupados en archivos de texto a manera de instrucciones para ser ejecutados posteriormente. Estos archivos que contienen comandos del shell se les conoce como shell scripts.
Esta flexibilidad le permite al usuario desarrollar complejas tareas con relativa facilidad. GNU/Linux provee de cientos de utilidades (programas para interactuar con el sistema operativo) para gestionar archivos, dispositivos y cualquier recurso con el que cuente el usuario.
GNU/Linux establece jerarquias para los usuarios. Todos sistema operativo crea un usuario principal o administrador llamado el Superusuario o root. El resto de los usuarios son considerados usuarios normales que no tienen los privilegios de gestión del sistema operativo que tiene root. Entre las actividades que tiene el administrador del sistema o root es el de instalar aplicaciones, modificar los archivos de configuración de los programas y servicios y actualizar el sistema operativo, entre otras actividades.
Interface Gráfica de Usuario
La Interface Gráfica de Usuario (GUI, Graphical User Intarface) está conformada por un servicio (programa de computadora que realiza un trabajo que será utilizado por otro(s) programa(s)) llamado X Window System (también llamado X o X11), un Escritorio de Trabajo (Desktop Manager, Gnome o K, usualmente) y un Gestor de de ventanas (Window Manager).
Un Escritorio de Trabajo es una interface para usuario que facilita la interacción con los programas del sistema operativo a través de iconos en lugar de escribir en una línea de comando las órdenes.
Un Gestor de Ventanas que ejecuta bajo el Escritorio de Trabajo y permite que se abran y cierren ventanas, se ejecuten programas y se utilice el mouse. Esta capa es la capa que permite imprimirle personalidad al escritorio.
Recursos adicionales
GNU/Linux es un sistema operativo muy versátil que ofrece facilidades para comunicación en red, compartiendo recursos y ofreciendo servicios como publicación de una página web o la compartición de una impresora. También ofrece recursos para el desarrollo de aplicaciones como compiladores e intérpretes para lenguajes de programación como C, C++, Java, Python, awk, Perl, etc., y ambientes de desarrollo que pueden instalarse de terceros como Netbeans, Eclipse o Code:Block.
Actividad:
- Describir el objetivo de cada directorio y su contenido.
- Investigar y describir a detalle los shells que pueden utilizarse en GNU/Linux.
- Investigar y describir a detalle los escritorios de trabajo que pueden utilizarse en GNU/Linux
- Desarrollar una investigación sobre X Window de al menos cinco cuartillas donde se explique con claridad la arquitectura del servicio, sus caracteríticas y su uso en GNU/Linux.
Recursos bibliográficos consultados
- Sobell, Mark G. A Practical Guide to Linux Commands, Editors and Shells Programming. Second Edition. Editorial Prentice Hall. 2009
- Ward, Brian. How Linux Works: Waht Every Superuser Should Know. Editorial No Starch Press.