Está en la página 1de 10

FUNDAMENTOS

El núcleo del sistema Linux es el kernel. El kernel controla todo el hardware y el software. Linus
Torvalds creó el primer kernel de Linux cuando era estudiante en la Universidad de Helsinki,
intentando ser una copia del sistema Unix.

El kernel es responsable de cuatro funciones principales:

 Gestión del sistema de memoria.


 Gestión de los programas del software.
 Gestión del hardware.
 Gestión del sistema de archivos.

GESTIÓN DEL SISTEMA DE MEMORIA

El kernel no solo gestiona la memoria física disponible, sino que también puede crear y
gestionar memoria virtual. Esto último lo hace usando espacio en el disco duro (espacio de
swap). El kernel intercambia los contenidos de las posiciones de memoria virtual desde el
espacio de swap con la memoria física real. Esto permite que el sistema piense que hay más
memoria disponible que la que existe físicamente.

Las posiciones de memoria se agrupan en bloques llamados páginas. El kernel localiza cada
página de memoria, o bien en la memoria física, o bien en el espacio de swap. El kernel
entonces mantiene una tabla de las páginas de memoria que indica qué páginas están en la
memoria física y qué páginas están en el disco.

El kernel sigue el rastro de qué páginas de memoria están en uso y copia automáticamente
páginas de memoria que no han sido accedido durante un tiempo al área de swap (esto se
conoce como swapping out). Cuando un programa quiere acceder a una página de memoria
que ha sido swapped out, el kernel debe hacer sitio para ella en la memoria física hacienda
swapping out con una página de memoria diferente y swapping in la página requerida desde el
espacio de swap. Obviamente el proceso consume tiempo y puede ralentizar un proceso en
ejecución.

EXAMINANDO LA MEMORIA

Hay un para de comandos simples para ver la idea de cómo Linux está gestionando la
memoria:

$ free

total used free shared buff/cache available


Mem: 2035504 135668 1449568 1048 450268 1742704
Swap: 2097148 0 2097148

La salida muestra la cantidad total de memoria física instalada en el sistema y la cantidad de


espacio de swap actualmente configurado. Este comando solo proporciona una visión general
de la memoria. Para mayor detalle:

$ cat /proc/meminfo
MemTotal: 2035504 kB
MemFree: 1449632 kB
MemAvailable: 1742352 kB
Buffers: 25452 kB
Cached: 386028 kB
SwapCached: 0 kB
Active: 166036 kB
Inactive: 290704 kB

El kernel actualiza continuamente el archivo meminfo para mostrar exactamente que sucede
en la memoria en todo momento.

GESTIÓN DE PROGRAMAS DE SOFTWARE

Un programa corriendo bajo Linux es un proceso. Un proceso puede estar en primer plano o
correr en background. El kernel controla cómo Linux gestiona todos los procesos. El kernel crea
el primer proceso, llamado proceso init, para iniciar todos los otros procesos del sistema.
Cuando el kernel se inicia, carga el proceso init en memoria virtual. Como el kernel inicia cada
proceso adicional, le otorga un área única en memoria virtual para almacenar los datos y
código que usa el proceso.

Hay unos pocos tipos diferentes de implementaciones de proceso init disponibles en Linux,
pero actualmente las dos más populares son:

 SysVinit (SysV) – Este método de inicialización fue el método original usado por Linux y
estaba basado en el método de inicialización de Unix System V. Aunque actualmente
no es utilizado por muchas distribuciones Linux, todavía se puede encontrar en
distribuciones Linux más antiguas.

 Systemd – Este método de inicialización fue creado en 2010 y ha pasado a ser el más
popular en las distribuciones Linux.

SysVinit usaba un concepto llamado runlevels para determinar qué procesos iniciar. El runlevel
define el estado del sistema Linux en ejecución y qué procesos debería correr en cada estado:

Runlevel Description
0 Shuts down the system
1 Single-user mode used for system maintenance
2 Multiuser mode without networking services enabled
3 Multiuser mode with networking services enabled
4 Custom
5 Multiuser mode with GUI available
6 Reboots the system

El archivo /etc/inittab define el runlevel por defecto para un sistema. Los procesos que se
inician para runlevels específicos están definidos en subdirectorios de /etc/rc.d. Para conocer
el runlevel actual en cualquier momento:

$ runlevel
La salida sería:

N5

El método de inicialización Systemd se hizo popular por su habilidad para iniciar procesos
basándose en diferentes eventos, como:

 Cuando el sistema se inicia.


 Cuando se conecta un dispositivo de hardware concreto.
 Cuando se inicia un servicio.
 Cuando se establece una conexión de red.
 Cuando un timer ha expirado.

Systemd determina qué procesos correr enlazando eventos con archivos unit. Cada archivo
unit define los programas a iniciar cuando un evento específico ocurre. El programa systemctl
nos permite iniciar, detener y listar los archivos unit que están corriendo actualmente en el
sistema.

Systemd agrupa archivos unit en targets. Un target define un estado específico de ejecución
del sistema Linux, algo similar al concepto runlevel de SysVinit. En el inicio del sistema, el
target por defecto define que todos los archivos unit se inicien. Podemos ver el target por
defecto actual usando systemctl:

$ systemctl get-default

Y la salida sería:

graphical.target

El target graphical.target definiría, por ejemplo, todos los procesos que se inician cuando está
corriendo un entorno gráfico multiusuario, algo similar al runlevel 5 de SysVinit.

EXAMINANDO PROCESOS

Aunque el comando ps para ver los procesos que están corriendo actualmente en el sistema es
bastante más amplio, podemos hacer un uso básico:

$ ps ax

La salida sería:

PID TTY STAT TIME COMMAND


1 ? Ss 0:00 /sbin/init maybe-ubiquity
2 ? S 0:00 [kthreadd]
3 ? I< 0:00 [rcu_gp]
4 ? I< 0:00 [rcu_par_gp]
5 ? I 0:00 [kworker/0:0-memcg_kmem_cache]
6 ? I< 0:00 [kworker/0:0H-kblockd]
7 ? I 0:00 [kworker/0:1-events]
8 ? I 0:00 [kworker/u2:0-events_power_efficient]
...
1033 tty1 S 0:00 -bash
1054 tty1 R+ 0:00 ps ax

GESTIÓN DEL HARDWARE

Otra responsabilidad del kernel es la gestión del hardware. Cualquier dispositivo con el que
Linux deba comunicarse necesita código de driver dentro del código del kernel. El driver
permite al kernel pasar datos desde y hacia el dispositivo, actuando como intermediario entre
aplicaciones y hardware. Hay dos métodos para insertar código de driver en el kernel:

 Drivers compilados en el kernel.


 Módulos driver agregados al kernel.

Anteriormente, la únaca forma de insertar código de driver era recompilar el kernel. Cada vez
que se agregaba un nuevo dispositivo al sistema, teníamos que recompilar el código del kernel.
Este proceso llegó a ser cada vez más ineficiente a medida que los kernels tenían que dar
soporte a más hardware. Afortunadamente se desarrolló un método mejor, con el concepto de
módulos kernel, para permitir insertar código de driver en un kernel en ejecución sin tener que
recompilar el kernel nuevamente. Así también, el módulo kernel podía ser eliminado del kernel
cuando el dispositivo terminaba de ser usado. Esto simplificó y expandió enormemente el uso
del hardware en Linux.

El sistema Linux identifica los dispositivos como archivos especiales, llamados archivos de
dispositivo (device files). Hay tres diferentes clasificaciones de archivos de dispositivo:

 Character (carácter).
 Block (bloque).
 Network (red).

Los archivos de dispositivo de carácter son para dispositivos que solo pueden manejar datos un
carácter cada vez. La mayoría de tipos de modems y terminales se crean como archivos de
carácter.

Los archivos de dispositivo de bloque son para dispositivos que pueden manejar datos en
bloques grandes cada vez, como las unidades de disco.

Los archivos de dispositivo de red son para dispositivos que usan paquetes para enviar y recibir
datos. Esto incluye tarjetas de red y un dispositivo especial loopback (bucle local) que permite
al sistema comunicarse consigo mismo usando protocolos de red comunes.

Linux crea archivos especiales, llamados nodos, para cada dispositivo del sistema. Toda
comunicación con el dispositivo se realiza a través del nodo de dispositivo. Cada nodo tiene un
único par de números que lo identifica para el kernel. Este par de números incluye el número
de dispositivo mayor, y el número de dispositivo menor. Los dispositivos similares se agrupan
por el número mayor de dispositivo. El número menor de dispositivo se usa para identificar un
dispositivo específico dentro del grupo de dispositivo mayor.

GESTIÓN DEL SISTEMA DE ARCHIVOS

A diferencia de algunos otros sistemas operativos, el kernel de Linux puede soportar diferentes
tipos de sistema de archivos para leer y escribir datos, desde y hasta las unidades de disco.
Además de diversos tipos propios, Linux puede usar sistemas de archivo usados por otros
sistemas operativos. El kernel debe estar compilado con soporte para todos los tipos de
sistema de archivos que el sistema vaya a usar. La lista de sistemas de archivo estándar que
Linux puede usar:

Filesystem Description

ext Linux extended filesystem—the original Linux filesystem


ext2 Second extended filesystem; provides advanced features over ext
ext3 Third extended filesystem; supports journaling
ext4 Fourth extended filesystem; supports advanced journaling
btrfs A newer, high-performance filesystem that supports journaling and large files
exfat The extended Windows filesystem, used mainly for SD cards and USB sticks
hpfs OS/2 high-performance filesystem
jfs IBM’s journaling file system
iso9660 ISO 9660 filesystem (CD -ROMs)
minix MINIX filesystem
msdos Microsoft FAT 16
ncp NetWare filesystem
nfs Network File System
ntfs Support for Microsoft NT filesystem
proc Access to system information
smb Samba SMB filesystem for network access
sysv Older Unix filesystem
ufs BSD filesystem
umsdos Unix-like filesystem that resides on top of msdos
vfat Windows 95 filesystem (FAT 32)
XFS High-performance 64-bit journaling filesystem

El kernel de Linux se relaciona con cada sistema de archivos usando el Virtual File System
(VFS). Este proporciona un interfaz estándar para que el kernel se comunique con cualquier
tipo de sistema de archivos. VFS cachea la información en memoria a partir de que cada
sistema de archivos sea “montado” y usado.

UTILIDADES GNU

Además de un kernel para controlar dispositivos y lanzar programas, un sistema operativo


necesita utilidades para realizar funciones estándar, como controlar archivos y programas, etc.

La organización GNU desarrolló un conjunto completo de utilidades Unix pero que no tenía un
sistema de kernel para ejecutarlas. Estas utilidades eran desarrolladas bajo una filosofía
llamada “open source software” (OSS).

Aunque el conjunto de kernel Linux y utilidades GNU es lo que a menudo se llama Linux,
algunos puristas se refieren a ello como sistema GNU/Linux, para dar crédito a la contribución
de la organización GNU.

El proyecto GNU fue diseñado principalmente para administradores de sistemas Unix que
dispusieran de un entorno de tipo Unix disponible. El paquete central de utilidades
suministradas para los sistema Linux se llama paquete coreutils. El paquete GNU coreutils
consiste en tres partes:
 Utilidades para el manejo de archivos.
 Utilidades para la manipulación de texto.
 Utilidades para gestionar procesos.

Cada uno de estos grupos contiene diversos programas de utilidad que son de gran valor para
administradores de sistemas Linux y programadores.

INTERFACES DE USUARIO

Hoy en día, la mayoría de usuarios esperan algún tipo de visualización gráfica para interactuar
con su sistema. Linux ofrece gran cantidad de escritorios gráficos que podemos elegir.
Describamos algunos.

SOFTWARE X WINDOW

Hay dos elementos básicos que controlan el entorno gráfico, que son la tarjeta gráfica y el
monitor o pantalla. Linux necesita conocer cómo hablar con ambos. El software X Window es
el elemento nuclear para presentar gráficos.

X Window es un programa de bajo nivel que trabaja directamente con la tarjeta gráfica y el
monitor, y controla como las aplicaciones pueden visualizar gráficos en el sistema.

Linux no es el único sistema operativo que usar X Window, pues hay versiones escritas para
diferentes sistemas operativos. En el mundo de Linux hay algunos diferentes paquetes que lo
implementan. Hay dos paquetes X Window que son los que más se utilizan en Linux:

 X.org.
 Wayland.

El paquete X.org es el más antiguo de los dos, basado en el original Unix X Window System
versión 11 (a menudo llamado X11). La mayoría de distribuciones Linux están migrando al más
nuevo Wayland, que es más seguro y más fácil de mantener.

En la primera instalación de una distribución, Linux intenta detectar la tarjeta gráfica y monitor
y entonces crea un archivo de configuración X Window que contiene la información requerida.

El software X Window produce un entorno gráfico, pero nada más. Aunque esto es suficiente
para correr aplicaciones individuales, no es demasiado útil en el día a día. No hay un entorno
de escritorio que permita a los usuarios manipular archivos o lanzar programas. Para ello,
necesitamos un entorno de escritorio por encima del software X Window.

ESCRITORIO KDE

El K Desktop Environment (KDE) fue lanzado en 1996 como proyecto open source para
producir un escritorio gráfico similar al de Microsoft Windows. La versión actual se conoce
como KDE Plasma.

KDE Plasma permite colocar tanto iconos de aplicación como de archivo en un área especial
del escritorio. Si hacemos click a un icono de aplicación, Linux lanza la aplicación. Si hacemos
un click en un icono de archivo, KDE intenta determinar qué aplicación lanzar para manejar el
archivo.

Una barra en la zona inferior es conocida como Panel. El Panel consiste en cuatro partes:

 Menú KDE Start – Similar al menú de Inicio de Windows.


 Accesos directos a programas – Enlaces rápidos para iniciar aplicaciones.
 Barra de tareas – Muestra iconos para las aplicaciones actualmente corriendo en el
escritorio.
 Applets – Pequeñas aplicaciones que tienen un icon el el Panel.

Todas las características del Panel son similares a las de Windows.

ESCRITORIO GNOME

GNU Network Object Model Environment (GNOME) es otro escritorio popular de Linux. Fue
lanzado en 1999, y ha llegado a convertirse en el entorno de escritorio por defecto para
muchas distribuciones Linux (destacando Red Hat Linux).

El ecritorio GNOME 3 limpia el interfaz de escritorio reduciondo los menús disponibles a solo
tres:

 Activities – Muestra favoritos, así como cualquir icono de aplicación en ejecución.


 Calendar – Muestra la fecha/hora actual, junto con los mensajes de notificación del
sistema.
 System – Muestra las conexiones de red, ajustes del sistema y opciones de reinicio de
Linux.

GNOME 3 fue diseñado para trabajar con múltiples tipos de dispositivo, por lo que no tiene un
montón de menús. Para lanzar aplicaciones, debemos primero encontrarlas usando el
Activities Overview, que es una característica de búsqueda del menú Activities.

OTROS ESCRITORIOS

Una de las principales características de Linux es la elección, lo que es más evidente aún en el
mundo de los entornos de escritorio. Hay muchos otros escritorios disponibles.

Cuando GNOME cambió radicalmente su interfaz en la versión 3, muchos desarrolladores que


preferían un aspecto de GNOME 2, crearon versiones basadas en GNOME 2. De estas, dos han
llegado a ser bastante populares:

 Cinnamon – Desarrollado en 2011 por la distribución Linux Mint en un intento de


continuar el desarrollo del GNOME 2 original. Es ahora una opción disponible en
diversas distribuciones Linux, incluido Ubuntu, Fedora y openSUSE.

 MATE – Desarrollado en 2011 por un usuario de Arch Linux disgustado con GNOME 3.
Sin embargo, incluye algunas características de GNOME 3 (como el reemplazo de la
barra de tareas), aunque manteniendo el aspecto de GNOME 2.

El lado malo de los entornos gráficos es que requieren buena cantidad de los recursos del
sistema para operar apropiadamente.
Si disponemos de un equipo antiguo, tenemos disponibles diversos escritorios orientados a
sistemas con poca memoria. Aunque estos escritorios no disponen de una gran catidad de
aplicaciones diseñadas alrededor de ellos, corren muchas aplicaciones gráficas básicas como
procesador de textos, hojas de cálculo, bases de datos, dibujo y multimedia.

Otros entornos de escritorio:

Desktop Description

Fluxbox A bare-bones desktop that doesn’t include a Panel, only a pop-up menu to
launch applications.
Xfce A desktop that’s similar to the GNOME 2 desktop, but with fewer graphics for
low-memory environments.
JWM Joe’s Window Manager, a lightweight desktop ideal for low-memory and low-
disk space environments.
fvwm Supports some advanced desktop features such as virtual desktops and Panels,
but runs in low-memory environments.
fvwm95 Derived from fvwm, but made to look like a Windows 95 desktop.

Estos entornos de escritorio no son tan maravillosos como KDE Plasma o GNOME 3, pero
proporcionan una funcionalidad suficiente.

Si usamos un equipo antiguo, podemos intentar una distribución Linux que use uno de estos
escritorios.

INTERFAZ DE LINEA DE COMANDOS (CLI)

Es un interfaz basado en texto, que proporciona una forma de que los usuarios inicien
programas, gestionen el sistema de archivos o gestionen los procesos que están corriendo, a
base de introducir comandos de texto que serán interpretados y ejecutados por el kernel.

El shell contiene un conjunto de comandos internos para controlar cosas como copiar archivos,
renombrarlos, mostrar los programas actualmente corriendo en el sistema, etc.

Podemos agrupar comandos shell dentro de archivos y ejecutarlos como un programa. Estos
archivos se llaman sell scripts. Cualquier comando utilizable en línea de comando puede ser
utilizado en un shell script y ejecutado.

Existen diversos shells disponibles para Linux. Cada shell tiene diferentes características. El
shell por defecto usado en todas las distribuciones Linux es el Bash Shell. Fue desarrollado por
el proyecto GNU como reemplazo del shell estándar de Unix, el Bourne shell (Bash Shell es un
juego de palabras de “Bourne again shell”).

Además de Bash Shell, hay otros populares:

Shell Description
ash A simple, lightweight shell that runs in low-memory environments but has full
compatibility with the Bash Shell.
korn A programming shell compatible with the Bourne shell but supporting advanced
programming features like associative arrays and floating-point arithmetic.
tcsh A shell that incorporates elements from the C programming language into shell scripts.
zsh An advanced shell that incorporates features from bash, tcsh, and korn, providing
advanced programming features, shared history files, and themed prompts.

La mayoría de distribuciones Linux incluyen más de un shell, aunque escogen uno por defecto.

DISTRIBUCIONES LINUX

Un paquete de sistema Linux completo es lo que se conoce como distribución. Hay muchas. La
mayoría están personalizadas para tipos específicos de usuario. Cada distribución incluye los
paquetes requeridos para soportar funciones especializadas. Las diferentes distribuciones se
dividen a menudo en dos categorías:

 Distribuciones Core Linux.


 Distribuciones especializadas.

DISTRIBUCIONES CORE LINUX

Una distribución core Linux contiene un kernel, uno o más escritorios y cada aplicación Linux
que esté disponible, precompilado para el kernel. Proporciona una instalación completa Linux
de una vez:

Distribution Description

Slackware One of the original Linux distribution sets, popular with Linux geeks.
Red Hat Enterprise A commercial business distribution used mainly for Internet servers.
Gentoo A distribution designed for advanced Linux users, containing only Linux
source code.
openSUSE Different distributions for business and home use.
Debian Popular with Linux experts and commercial Linux products.

DISTRIBUCIONES LINUX ESPECIALIZADAS

Es un nuevo subgrupo de distribuciones Linux que ha comenzado a aparecer. Estan


típicamente basadas en una de las distribuciones principales, pero contienen solo un
subconjunto de aplicaciones para un área específica de uso. Además de proporciona un
software especializado, intentan ayudar a los usuarios que empiezan mediante la
autodetección y autoconfiguración de los dispositivos comunes, lo que hace la instalación más
fácil:

Distribution Description

Fedora A free distribution, originally used as a testing ground for Red Hat
Enterprise Linux, now a popular distribution in its own right.
Ubuntu A free distribution originally intended for school and home desktop
use, now also used as a server.
MX Linux A free distribution for home use.
Linux Mint A free distribution for home entertainment use.
Puppy Linux A free small distribution that runs well on older PCs.
Esto es solo un pequeño ejemplo. Hay cientos de distribuciones especializadas. Muchas de las
distribuciones especializadas están basadas en Debian.

LINUX LIVEDVD

La mayoría de distribuciones Linux tienen también disponible una versión LiveDVD, que es una
imagen autocontenida de imagen ISO que podemos grabar en DVD o USB, para iniciar Linux
directamente sin tener que instalar en un disco duro. El beneficio de LiveDVD es poder probar
con nuestro hardware de sistema antes de instalar.

También podría gustarte