1.2 La Evolución Del Linux y Los Sistemas Operativos Populares

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 5

1.

2 La evolución del Linux y los sistemas


operativos populares
La definición de la palabra Linux depende del contexto en el que se utiliza. Linux se refiere
al kernel. Es el controlador central de todo lo que pasa en el equipo (veremos más detalles
a continuación). Quienes dicen que su equipo "se ejecuta con Linux" generalmente se
refiere al kernel y el conjunto de herramientas que vienen con él (llamados distribución). Si
tienes "Experiencia con Linux", probablemente te refieres a los propios programas, aunque
dependiendo del contexto, podrías hablar sobre tu capacidad de ajustar con precisión el
kernel. Cada uno de estos componentes será explorado para que puedas entender
exactamente qué papel juega cada uno.
El término que más complica las cosas es UNIX. UNIX era originalmente un sistema
operativo desarrollado en los laboratorios de Bell AT&T en la década de 1970. Éste fue
modificado y bifurcado (es decir, las personas lo modificaron y estas modificaciones
sirvieron de base para otros sistemas). En la actualidad hay muchas variantes de UNIX.
Sin embargo, UNIX es ahora una marca registrada y una especificación, propiedad de un
consorcio industrial llamado Open Group. Sólo el software que ha sido certificado por el
Open Group puede llamarse UNIX. A pesar de la adopción de todos los requisitos de la
especificación de UNIX, Linux no ha sido certificado. ¡Eso significa que Linux realmente no
es un UNIX! Es sólo... como UNIX.

1.2.1 Rol del Kernel


El kernel del sistema operativo es como un controlador de tráfico aéreo en un aeropuerto.
El kernel determina que programa obtiene que pedazos de memoria, arranca y mata a los
programas, y se encarga de mostrar texto en un monitor. Cuando una aplicación necesita
escribir en disco, debe pedir al sistema operativo que lo haga. Si dos aplicaciones piden el
mismo recurso, el kernel decide cuál de las dos lo recibe y en algunos casos, mata a una
de las aplicaciones para salvar el resto del sistema.
El kernel también se encarga de cambiar entre aplicaciones. Un equipo tendrá un pequeño
número de procesadores CPU y una cantidad finita de memoria. El kernel se encarga de
descargar una tarea y cargar una nueva si hay más tareas que CPUs. Cuando la tarea
actual se ha ejecutado una cantidad suficiente de tiempo, la CPU detiene la tarea para que
otra pueda ejecutarse. Esto se llama multitarea preferente. Multitarea significa que la
computadora realiza varias tareas a la vez, preferente significa que el kernel decide
cuándo cambia el enfoque entre las tareas. Con las tareas de conmutación rápida, parece
que el equipo está haciendo muchas cosas a la vez. Cada aplicación puede pensar que
tiene un bloque grande de memoria en el sistema, pero es el kernel que mantiene esta
ilusión, reasignando bloques más pequeños de memoria, intercambiando bloques de
memoria con otras aplicaciones, o incluso sacando al disco bloques que aún no se hayan
tocado.
Cuando el equipo arranca, carga un pequeño trozo de código llamado gestor de arranque.
El gestor de arranque debe cargar el kernel y arrancarlo. Si estás más familiarizado con
sistemas operativos como Microsoft Windows y Apple OS X, probablemente nunca ves al
gestor de arranque, pero en el ambiente de UNIX es generalmente visible por lo que
puedes modificar la manera en la que tu equipo arranque.
El gestor de arranque carga el kernel de Linux y luego transfiere el control. Linux continúa
con el funcionamiento de los programas necesarios para hacer que el equipo sea útil, tales
como conexión a la red o abrir un servidor web.
1.2.2 Las Aplicaciones
Al igual que un controlador de tráfico aéreo, el kernel no es útil sin tener algo que controlar.
Si el kernel es la torre, las aplicaciones son los aviones. Las aplicaciones mandan
peticiones al kernel, en cambio, éste recibe recursos tales como memoria, CPU y disco. El
kernel también abstrae los detalles complicados de la aplicación. La aplicación no sabe si
un bloque de disco es una unidad de estado sólido de fabricante A, un disco duro metálico
de spinning del fabricante B, o incluso, alguna parte del archivo de red. Las aplicaciones
sólo tienen que seguir la Interfaz de Programación de Aplicaciones (API - Application
Programming Interface) del kernel y a cambio no tienen que preocuparse por los detalles
de implementación.
Cuando nosotros, como usuarios, pensamos en aplicaciones, tendemos a pensar en los
procesadores de texto, navegadores web y clientes de correo electrónico. Al kernel no le
importa si se está ejecutando algo orientado al usuario, es un servicio de red que se
comunique con un equipo remoto, o una tarea interna. Por lo tanto, de esto obtenemos una
abstracción llamada proceso. Un proceso es solamente una tarea que está cargada y
rastreada por el kernel. Una aplicación puede necesitar incluso múltiples procesos para
funcionar, por lo que el kernel se encarga de ejecutar los procesos, los arranca y para
según lo requerido, y entrega los recursos del sistema.

1.2.3 Rol de Código Abierto


Linux comenzó como un proyecto de pasatiempo por Linus Torvalds en 1991. Hizo la
fuente disponible libremente y otros se unieron para formar este sistema operativo de
vanguardia. Su sistema no fue el primero desarrollado por un grupo. Sin embargo, ya que
fue un proyecto creado desde cero, los primeros usuarios podían influir el rumbo del
proyecto y asegurarse de que no se repitieran los errores de otros UNIXes.
Los proyectos de software toman la forma de código fuente, que es un conjunto de
instrucciones de computo legibles para el humano. El código fuente puede escribirse en
cualquiera de los cientos de lenguajes diferentes, Linux ha sido escrito solamente en C,
que es un lenguaje que comparte historia con el UNIX original.
El código fuente no se entiende directamente por el equipo, por lo que debe ser compilado
en instrucciones de máquina por un compilador. El compilador reúne todos los archivos
fuente y genera algo que se puede ejecutar en el equipo, como el kernel de Linux.
Históricamente, la mayor parte del software se ha publicado bajo una licencia de código
cerrado, lo que significa que obtienes el derecho a utilizar el código de máquina, pero no
puedes ver el código fuente. ¡A menudo la licencia dice específicamente, que no se intente
revertir el código máquina al código de fuente para averiguar lo que hace!
El Código Abierto toma una vista centrada en la fuente del software. La filosofía de código
abierto es que tienes derecho a obtener el software y modificarlo para tu propio uso. Linux
adoptó esta filosofía con gran éxito. La gente tomó la fuente, hizo cambios y lo compartió
con el resto del grupo.
Junto a ésto, fue el proyecto GNU (GNU, no UNIX). Mientras que GNU estaba
construyendo su propio sistema operativo, eran mucho más eficaces en la creación de las
herramientas que están de acuerdo con el sistema operativo UNIX, como los compiladores
y las interfaces de usuario. La fuente era completamente gratuita, así que Linux pudo
enfocar sus herramientas y proporcionar un sistema completo. Como tal, la mayoría de las
herramientas que forman parte del sistema Linux provienen de estas herramientas GNU.
Hay muchas diversas variantes en código abierto, y los veremos en un capítulo posterior.
Todos coinciden en que debes tener acceso al código fuente, pero difieren en cómo
puedes, o en algunos casos, cómo debes redistribuir los cambios.
1.2.4 Distribuciones de Linux
Toma las herramientas de GNU y Linux, añade algunas aplicaciones para el usuario como
un cliente de correo, y obtienes un sistema Linux completo. Se empezó a empaquetar todo
este software en una distribución casi tan pronto como Linux llegó a ser utilizable. La
distribución se encarga de configurar el almacenamiento de información, instalar el kernel
e instalar el resto del software. Las distribuciones recomendadas completas también
incluyen herramientas para administrar el sistema y un administrador de paquetes para
añadir y eliminar el software después de la instalación.
Como en UNIX, hay muchos sabores diferentes de distribuciones. En estos días, hay
distribuciones que se centran en el funcionamiento en servidores, computadoras de
escritorio (desktop) o incluso herramientas específicas de la industria como el diseño de la
electrónica o la computación estadística. Los principales actores en el mercado se
remontan a Red Hat o Debian. La diferencia más visible es el administrador de paquetes,
aunque encontrarás otras diferencias en todo, desde ubicaciones de archivos a filosofías
de políticas.
Red Hat empezó como una simple distribución que introdujo el Administrador de Paquetes
Red Hat (RPM- Red Hat Package Manager). El desarrollador eventualmente formó una
compañía alrededor de éste, que intentó comercializar una computadora de escritorio
Linux para negocios. Con el tiempo, Red Hat comenzó a centrarse más en las aplicaciones
de servidor web y servicios de archivos, y lanzó Red Hat Enterprise Linux, que era un
servicio de pago en un ciclo de liberación largo. El ciclo de liberación dicta con qué
frecuencia se actualiza el software. Una empresa puede valorar la estabilidad y quiere
ciclos de liberación largos, un aficionado o un principiante puede querer un software más
reciente y optar por un ciclo de liberación más corto. Para cumplir con este último grupo,
Red Hat patrocina el Proyecto Fedora que hace que el escritorio personal contenga el
software más reciente, pero aun construido sobre los mismos principios como la versión
para empresas.
Porque todo en Red Hat Enterprise Linux es de código abierto, un proyecto
llamado CentOS llegó a ser el que volvió a compilar todos los paquetes RHEL y los
proporcionó gratis. CentOS y otros proyectos similares (como Scientific Linux) son en gran
parte compatibles con RHEL e integran algún software más reciente, pero no ofrecen el
soporte pagado que Red Hat si ofrece.
Scientific Linux es un ejemplo de una distribución de uso específico basada en Red Hat.
El proyecto viene patrocinado por Fermilab siendo una distribución diseñada para habilitar
la computación científica. Entre sus muchas aplicaciones, Scientific Linux se utiliza con
aceleradores de partículas como el Gran Colisionador de Hadrones en el CERN.
Open SUSE, originalmente derivado de Slackware, aun incorpora muchos aspectos de
Red Hat. La compañía original fue comprada por Novell en el año 2003, que entonces fue
adquirida por el Grupo Attachmate en 2011. El grupo Attachmate luego se fusionó con
Micro Focus Internacional. A través de todas las fusiones y adquisiciones SUSE ha logrado
continuar y crecer. Mientras que Open SUSE se basa en escritorio y es disponible al
público en general, SUSE Linux Enterprise contiene código propietario y se vende como
un producto de servidor.
Debian es más bien un esfuerzo de la comunidad y como tal, también promueve el uso de
software de código abierto y la adherencia a estándares. Debian desarrolló su propio
sistema de administración de paquetes basado en el formato del archivo .deb. Mientras
que Red Hat deja sin soporte las plataformas Intel y AMD para proyectos derivados,
Debian es compatible con muchas de estas plataformas directamente.
Ubuntu es la distribución derivada de Debian más popular. Es la creación de Canonical,
una empresa que apoyó el crecimiento de Ubuntu ganando dinero proporcionando soporte.
Linux Mint se inició como una bifurcación de Ubuntu Linux mientras sigue dependiendo
sobre los repositorios de Ubuntu. Existen varias versiones, todas libres de costo, pero
algunas incluyen códigos propietarios que no pueden ser distribuidos sin restricciones de
la licencia en algunos países. Linux Mint está suplantando rápidamente Ubuntu como
solución de Linux escritorio más popular del mundo.
Hemos tratado el tema de las distribuciones mencionadas específicamente en los objetivos
de Linux Essentials. Debes saber que hay cientos, y hasta miles más que están
disponibles. Es importante entender que si bien hay muchas diferentes distribuciones de
Linux, muchos de los programas y comandos siguen siendo los mismos o muy similares.

1.2.4.1 ¿Qué es un Comando?


La respuesta más simple a la pregunta "¿Qué es un comando?" es que un comando es un
programa de software que cuando se ejecuta en la línea de comandos, realiza una acción
en el equipo.
Cuando tomas en cuenta un comando utilizando esta definición, en realidad estás tomando
en cuenta lo que sucede al ejecutar un comando. Cuando se escribe un comando, el
sistema operativo ejecuta un proceso que puede leer una entrada, manipular datos y
producir la salida. Desde esta perspectiva, un comando ejecuta un proceso en el sistema
operativo, y entonces la computadora realiza un trabajo.
Sin embargo, un comando se puede ver desde una perspectiva diferente: desde su origen.
La fuente es desde donde el comando "proviene" y hay varios orígenes diferentes de
comandos dentro de shell de la CLI:
 Comandos integrados en el shell: Un buen ejemplo es el comando cd ya
que es parte del bash shell. Cuando un usuario escribe el comando cd, el
bash shell ya se está ejecutando y sabe cómo interpretar ese comando, sin
requerir de ningún programa adicional para iniciarse.
 Comandos que se almacenan en archivos que son buscados por el
shell: Si escribes un comando ls, entonces shell busca en los directorios
que aparecen en la variable RUTA DE ACCESO (PATH) para tratar de
encontrar un archivo llamado ls que puede ejecutar. Estos comandos se
pueden ejecutar también escribiendo la ruta de acceso completa del
comando.
 Alias: Un alias puede reemplazar un comando integrado, la función o un
comando que se encuentra en un archivo. Los alias pueden ser útiles para
la creación de nuevos comandos de funciones y comandos existentes.
 Funciones: Las funciones también pueden ser construidas usando los
comandos existentes o crear nuevos comandos, reemplazar los comandos
integrados en el shell o comandos almacenados en archivos. Los alias y
las funciones normalmente se cargan desde los archivos de inicialización
cuando se inicia el shell por primera vez, que veremos más adelante.
Para considerar
Aunque los alias serán tratados en detalle en una sección posterior, este ejemplo breve
puede ser útil para entender el concepto de comandos.
Un alias es esencialmente un apodo para otro comando o una serie de comandos. Por
ejemplo, el comando de cal 2014 muestra el calendario para el año 2014. Supongamos
que acabes ejecutando este comando a menudo. En lugar de ejecutar el comando
completo cada vez, puedes crear un alias llamado mycal y ejecutar el alias como se
muestra en el siguiente gráfico:

sysadmin@localhost:~$ alias mycal="cal 2014"


sysadmin@localhost:~$ mycal
2014
Enero Febrero Marzo
Do Lu Ma Mi Ju Vi Sá Do Lu Ma Mi Ju Vi Sa Do Lu Ma Mi Ju Vi Sá
1 2 3 4 1 1
5 6 7 8 9 10 11 2 3 4 5 6 7 8 2 3 4 5 6 7 8
12 13 14 15 16 17 18 9 10 11 12 13 14 15 9 10 11 12 13 14 15
19 20 21 22 23 24 25 16 17 18 19 20 21 22 16 17 18 19 20 21 22
26 27 28 29 30 31 23 24 25 26 27 28 23 24 25 26 27 28 29
30 31
Abril Mayo Junio
Do Lu Ma Mi Ju Vi Sá Do Lu Ma Mi Ju Vi Sa Do Lu Ma Mi Ju Vi Sá
1 2 3 4 5 1 2 3 1 2 3 4 5 6 7
6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14
13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21
20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28
27 28 29 30 25 26 27 28 29 30 31 29 30
Julio Agosto Septiembre
Do Lu Ma Mi Ju Vi Sá Do Lu Ma Mi Ju Vi Sa Do Lu Ma Mi Ju Vi Sá
1 2 3 4 5 1 2 1 2 3 4 5 6

 Previous

 Next

También podría gustarte