Sie sind auf Seite 1von 38

1

GNU/Linux




























Adrian de los Santos

2
Introduccion

Linux es dificil y no tiene sentido aprenderlo, no pierdas tu tiempo, sigue usando
Windows.Adrian de los Santos

Linux es dificil de aprender porque la mayoria de los cursos se focalizan mas en
aplicaciones del sistema operativo que en el sistema operativo en si. Esto es un claro
ejemplo cuando se comienza por ensear a utilizar el ambiente grafico de Linux (el cual
es una simple aplicacin del sistema operativo) en lugar de ensear las funcionalidades
que el sistema operativo provee para que pueda lograrse desplegar un ambiente grafico.
No estoy diciendo que sea malo utilizar o ensear un ambiente grafico, pero hay que
tomar en cuenta que para ingenieros o licenciados en sistemas, el saber lo que cualquier
contador, secretaria o usuario de windows sabe (como mover el mouse, abrir aplicaciones
y cerrarlas) no es realmente enaltecedor. Un profesional en sistemas debe de saber mucho
mas que el como utilizar una aplicacin, debe de saber los mecanismos internos que el
sistema operativo utiliza para permitir a dichas aplicaciones interactuar con el usuario,
debe de saber las diferentes tecnologias y filosofias que el sistema operativo implementa
y como conjuntar esas tecnologias para lograr un resultado especifico.

Haciendo una analogia, no es lo mismo el manejar un automovil que el conocer todas las
partes involucradas para su funcionamiento; es como si entraramos a la escuela superior
de mecanica y lo que se nos enseara es a conducir un automovil (o en su caso a utilizar
un ambiente de ventanas), preparandonos para ser taxistas (o capturistas) en lugar de
mecanicos o diseadores de automoviles.

Posiblemente el asistente no entendera este razonamiento de forma total, pero el hecho es
que en el mercado laboral de computo en Mexico, existe un gran vacio en cuanto a
personas que realmente entiendan, controlen, manejen y administren sistemas operativos
Unix o GNU/Linux.

El hecho de que se comience por el ambiente grafico, no es del todo un error del
instructor, lo que pasa es que el al estar familiarizado con Windows, no encuentra una
manera diferente de ensear, mas que con el ambiente grafico, tal y como lo haria con
Windows. Impartir y tomar un curso de Unix o GNU/Linux es totalmente diferente a
impartir o tomar un curso de Windows.

Esta es una de las razones por las cuales dentro de este curso se utilizara y se vera lo mas
minimo indispensable del ambiente grafico. Posiblemente esto asuste a algunos asistentes
que siempre han utilizado Windows y que no se pueden imaginar como es posible que
antes de Windows existieran computadoras (sin ambiente grafico, sin mouse, sin iconos,
solo con comandos), la realidad en la industria es muy diferente, los sistemas operativos
GNU/Linux o Unix son utilizados en su gran mayoria como servidores, es decir, como la
maquina que administra, almacena y provee los datos hacia los clientes (los cuales
tradicionalmente son maquinas ejecutando Windows), de esta manera se trata de suavizar

3
la amplia curva de aprendizaje que los sistemas Unix representan. Escondiendolos tras
bambalinas. Pero el hecho de que no se puedan ver no significa que no esten ah.

Otra razon para que los cursos de GNU/Linux fallen es el hecho de que el asistente esta
influenciado por un esquema de control y comfort que proveen los sistemas operativos
Windows, es decir, solo existe una forma de formatear un diskette, solo existe una forma
de desplegar el ambiente grafico, solo existe una forma de abrir y cerrar aplicaciones e
incluso solo hay una forma de utilizar el mouse. Este tipo de estandarizacion,
nuevamente, suaviza la curva de aprendizaje de los usuarios novatos o nuevos en
computacion y permite a las empresas el contratar gente que esta familiarizada con el
sistema operativo que utilizan.

El problema, reto o ventaja de los sistemas Unix es que son sistemas abiertos, es decir, no
existen virtualmente limites en cuanto a la operacin e interaccion con el usuario; existen
mas de 5 formatos para almacenar la informacion, mas de 10 formas de desplegar
ambientes graficos, mas de 4 metodos para imprimir, mas de 4 formas de manipular el
mouse, etc. Esto logicamente permite mayor creatividad, productividad y tambien
adiciona complejidad a el uso de el sistema operativo, este es uno de los problemas mas
comunes de los usuarios que comienzan a utilizar o a aprender Unix, que se dan cuenta
que existe mas de una manera de hacer las cosas, y muchas veces, ellos tienen que decidir
cual manera utilizar. La creatividad que los sistemas Unix permiten a el operador,
programador o usuario, es una navaja de dos filos, aunque muchos podran decir que eso
es bueno porque permite explotar la creatividad e ingenio humano, muchos diran que es
criptico, dificil y que no existen estandares.

Adicionalmente, la mayoria de los usuarios que tratan de comenzar a utilizar sistemas
Unix o GNU/Linux bajan u obtienen un par de CDs de una distribucion, llamese a esta
distribucion RedHat, Debian, Mandrake, SuSe, Fedora, etc. La cuestion es que despues
de instalar la distribucion se encuentran con un ambiente grafico; es decir, la distribucion
que se instala, automaticamente configura el esquema de red, la tarjeta de video, el
formato de las areas de archivos, los servicios del sistema operativo, etc. Y presenta a el
usuario un ambiente grafico muy parecido a Windows, escondiendo nuevamente tras
bambalinas a el sistema operativo real y focalizando a el usuario a una sola aplicacin. El
ambiente grafico. Entonces el usuario se pregunta y que tiene de especial esto, si es
igual a Windows ?. Ah esta el primer error. Y tenemos incluso a profesorese que han
hecho lo anterior, han instalado un sistema operativo Linux y se han encontrado con un
ambiente grafico que cuenta con algunas aplicaciones, que aunque es interesante ver otro
sistema operativo, pareciera que no tiene importancia puesto que es un clon de
Windows. Aqu es donde no tiene sentido el utilizar Linux, es por eso que se escucha a
muchas personas el decir:

Si, lo instale, y luego que ?
Si, ya instale Linux, fue facil, no se porque le hacen tanta publicidad si es igual a
Windows, y aparte ni existe el Word de Microsoft ah, por eso despues de 3 dias, lo
borre

4
Eso de Linux no sirve, lo trate de instalar y quien sabe que me dijo, el chiste es que no
quiso instalarse, pero instale Windows y jalo a la primera

La falta de objetivos especificos, mala metodologia de enseanza, ausencia de ejemplos
en la vida real, no aplicacin de lo enseado, y otras cosas mas, hacen que aunque un
curso de sistemas operativos sea satisfactorio en cuanto a su contenido, se olvide
rapidamente por el asistente.

La finalidad de escribir esta introduccion es el primer paso para preparar a el asistente a
este curso y en cuanto a lo que se encontrara mas adelante. Adicionalmente, me gustaria
dar las siguientes recomendaciones:

- Olvida todo lo que sepas (o crees que sabes) de Windows
- No compares a Windows con Linux o Unix (ni sus comandos, ni su forma de
operacin)
- Preparate para teclear mucho, hacer muchas pruebas y leer mucho
- Pregunta, y vuelve a preguntar si no entendiste, mas vale detener la clase y que las
cosas queden claras que continuar sin entender.
- Preparate para aprender algo que muchos llaman: obsoleto, dificil y criptico.
- Piensa que aprendiendo Unix o Linux estaras mucho mas preparado para entrar a
una empresa de buen nivel y adicionalmente incrementar tu cultura informatica.
- Preparate para leer en ingles. Si, aunque existen distribuciones con traducciones al
espaol, no las usaremos, debido a que la informacion mas fresca y mejor
explicada (especificamente en los manuales de los comandos) esta en ingles.

El temario de este curso esta diseado (o por lo menos se trato de disear) con la
finalidad de que el asistente:

- Conozca la historia, filosofia y operacin basica de un sistema Unix o Linux
- Interactue con los comandos, forma de operacin y caracteristicas de los sistemas
Linux
- Conozca las limitaciones y ventajas que en el mundo real poseen los sistemas
Unix o Linux
- Tenga una vision general de cmo utilizar las herramientas que el sistema
operativo provee para realizar tareas que normalmente son realizadas en las
empresas.
- Pueda entender la interaccion del sistema operativo con el hardware y software
que componen a el equipo de computo.
- Conozca la filosofia del software libre y entienda sus razonamientos.
- Sea capaz de instalar software libre no incluido en el sistema y lo aplique de
forma productiva.
- Y posiblemente lo mas importante: No dependa de una pantalla grafica ni de un
mouse para ser productivo.

5

Aquellos que esten buscando un curso que muestre de manera sencilla, facil y rapida
como utilizar Linux, estan en el curso equivocado, este curso comenzara a explorar las
tecnologias y tecnicas utilizadas para que el sistema operativo Linux pueda funcionar.
Veremos las caracteristicas internas del sistema y como interactuan para llegar a formar
un todo. Aunque se tratara de presentar lo anterior de la forma mas digerida posible, en
algunas ocasiones tendremos incluso que recurrir a codigo en lenguaje C para demostrar
el punto que tratamos de ensear.

Aunque no existen prerequisitos explicitos para asistir a este curso, se recomiendas las
siguientes habilidades y aptitudes minimas:

- Conocimiento de lenguaje C (en cualquier nivel)
- Conocimiento del lenguaje ingles (a nivel de lectura de ingles tecnico)
- Conocimiento basico de esquemas de redes (opcional)
- Y lo mas importante: Deseos de aprender.

Si todavia sigues aqu, gracias y preparate para un viaje comico magico musical en la
interesante novela de la tecnologia de sistemas operativos.


6
Capitulo 1, Brevisima introduccion a la historia de los
sistemas Unix.

Antes de Unix habia caos, y despues, tambien

Despues de tres decadas de uso, el sistema operativo Unix creado en los laboratorios Bell
es aun reconocido como uno de los sistemas operativos mas poderosos, versatiles y
flexibles en el mundo computacional. Su popularidad es debida a varios factores,
incluyendo su habilidad de ejecutarse en una gran variedad de sistemas de computo,
desde micro computadoras hasta super computadoras, y su gran portabilidad (lo cual dio
paso a la adopcion del mismo por multiples fabricantes)

Tal como otra creatura legendaria, cuyo nombre tambien termina en x, Unix renace de
las cenizas de un intento de multiples compaias en los aos 60s por crear un sistema
operativo de tiempo compartido.

El intento inicial no fue exitoso, pero algunos sobrevivientes de los laboratorios Bell, lo
intentaron nuevamente, y lo que siguio fue un sistema que ofrece a sus usuarios un
ambiente de trabajo que ha sido descrito como de extrema simplicidad, poderio y
elegancia

El sistema, tmabien creo un nuevo paradigma en cuanto a el diseo de software,
resolviendo problemas al interconectar herramientas simples en lugar de crear programas
de aplicacin grandes y monoliticos
1
.

Su desarrollo y evolucion dio paso a una nueva filosofia en el computo, y ha sido una
gran fuente de alegria y retos para programadores alrededor del mundo.


1
Monolitico es algo creado en una sola pieza, sin componentes. En el ambiente computacional un
programa monolitico es aquel que ha sido creado como un largo programa, es decir que no tiene secciones
especificas ni librerias. En los sistemas modernos tal programa tambien podria ser llamado ligado
estaticamente.

7
Multics nace, y muere.

Los sistemas de computo no se hablaban entre ellos en el comienzo de la computacion.
Incluso los diferentes modelos de computadoras creadas por la misma compaa
normalmente necesitaban interpretes (para comunicar 2 modelos de computadoras IBM,
era necesario poner un equipo enmedio que no fuera de IBM). Y olvidemonos de la
interoperabilidad entre sistemas de diferentes fabricantes.

En adicion a lo anterior, los sistemas operativos, comunmente, solo realizaban un numero
de tareas limitadas, y solo en las maquina para las que fueron diseadas. Si la empresa
cambiaba a una computadora mas grande y poderosa, el viejo sistema operativo,
probablemnete no trabajaria en la misma computadora, y comunmente los datos tenian
que volver a ser introducidos otra vez en la nueva computadora.

Con el fin de desarrollar un sistema de computo, conveniente, interactivo y util, que
pudiera soportar multiples usuarios. Un grupo de expertos en computacion de los
laboratorios Bell y General Electric se unieron en las instalaciones del MIT (Instituto de
tecnologia de Masachussets) en 1965. Y comenzaron a disear el sistema denominado
Multics (Multiplexed Information and Computing Service).

Conforme el tiempo fue pasando, la esperanza fue reemplazada por la frustracion debido
a que el grupo fallo al tratar de crear un sistema economicamente viable. Los laboratorios
Bell se separaron del proyecto en 1969, pero un pequeo grupo de usuarios en las
instalaciones de los laboratorios Bell en Murray Hill continuaron buscando el santo grial.
Estos usuarios eran: Ken Thompson, Dennis Ritchie, Doug McIlroy y J.F. Ossana.

De hecho, Multics funcionaba, y eventualmente se trato de comercializar, pero no en la
escala que los desarrolladores deseaban. Aun cuanto Multics no podia soportar muchos
usuarios, podia soportar a nuestro pequeo grupo de desarrolladores, pero a un costo
sorprendentemente alto, me aclaro Dennis Ritchie en un correo electronico y agrego
Durante 1969, comenzamos a buscar una alternativa a Multics, pedimos una maquina de
mediano nivel para la cual prometimos a los laboratorios Bell que escribiriamos un
sistema operativo. Nuestra peticion nunca fue declinada, pero tampoco fue aceptada,
nunca nos dijeron nada. Eventualmente, presentamos una propuesta que incluia la compra
de un equipo por parte de un tercero, pero la propuesta fue rechazada, segn algunos
rumores, el vicepresidente de investigacion y desarrollo de los laboratorios Bell dijo que
en lugar de estar comprando productos, nosotros deberiamos de desarrollarlos, que por
eso eramos un departamento de desarrollo. Era perfectamente obio el rechazo, debido a
que estabamos pidiendo a los laboratorios gastar mucho dinero en un grupo de gente con
un plan no muy definido, realmente despues de el fallo del proyecto multics no teniamos
practicamente una razon de ser y solo esperabamos que nos despidieran. Como teniamos
mucho tiempo libre tuvimos un conjunto de reuniones informales para definir que es lo
que queriamos que tuviera un sistema operativo. Cuando Thompson se dio cuenta de que
Multics se iria a la basura, decidio satisfacer dos inquietudes suyas: Escribir un sistema
operativo el mismo y crear un ambiente en el cual pudiera realizar trabajos futuros.

8
Despues de algunas sesiones, creamos un conjunto de notas en papel, algo asi como las
minutas de las juntas, muchas de estas hojas tenian incluso marcas de caf y estaban mal
redactadas. A final de cuentas estas notas se convirtieron en las bases para Unix. Cada
desarrollador recibio una copia de estas notas y mas tarde de estas notas salio el
documento final para el desarrollo del control de archivos del sistema operativo (el
sistema de archivos o filesystem).

Mientras lidiaban con los problemas de crear un nuevo sistema operativo, Thompson en
su tiempo libre (que era mucho, debido a que estaban casi por despedirlos y no tenian un
proyecto asignado) comenzo a desarrollar un juego para computadora, llamado Viaje
Espacial. El juego simulaba el movimiento de los planetas en el sistema solar. Un
jugador podia navegar entre los planetas, disfrutar de la travesia virtual e incluso aterrizar
su nave en los planetas y lunas de los planetas.

El juego fue inicialmente escrito en el sistema Multics (en ensamblador). Cuando el
proyecto dejo de funcionar se forzo a escribirlo nuevamente en Fortran para un sistema
operativo llamado GECOS, este sistema operativo corria en una computadora General
Electic 635. Pero el juego se veia muy mal debido a que la maquina no tenia buenas
capacidades graficas, y era dificil de controlar porque el usuario tenia que teclear
comandos para controlar la nave. Aparte de todo eso, la maquina GE 635 era rentada y
costaba 75 dolares de tiempo de CPU cada vez que el ejecutaba su juego, asi que los
laboratorios Bell, comenzaron a descontar de su sueldo esos 75 dolares por cada
ejecucion del juego.

Thompson no tardo mucho en buscar otra computadora en la cual pudiera ejecutar su
juego, encontro una maquina PDP-7 que nadie utilizaba y nuevamente reescribio el juego
para ejecutarse en esta maquina, ahora en ensamblador de PDP-7. Esto le sirvio a
Thompson de practica para aprender a utilizar este nuevo equipo y debido a que
necesitaba un sistema de archivos para almacenar los resultados de su juego, tomo el
documento de el sistema de control de archivos que anteriormente habian creado en las
juntas informales que ya se habian tenido.

2
Finalmente, Thompson tenia un juego
que funcionaba bien, con buenas graficas
y con la capacidad de almacenar datos en
disco. Entusiasmado con el nuevo
equipo, y con el conocimiento que habia
obtenido del mismo, decidio crear un
sistema operativo. Comenzo con los
requerimientos basicos de un sistema
operativo, en particular la nocion de
procesos, desarrollo un conjunto de
utilerias para el usuario, tales como:

2
Thompson (de pie) y ritchie (sentado) trabajando en una PDP-11, notese que no hay monitor, todo se
imprime en papel, es por eso que la instruccin para desplegar datos en C es printf, lo cual significa
imprimir en ingles.

9
copiar, imprimir, borrar y editar archivos, tambien creo un interprete de comandos, y lo
llamo shell. En 3 semanas el habia creado un sistema operativo funcional.

Pero no fue hasta Enero de 1970 cuando Thompson lo mostro a sus compaeros, que
Brian Kernighan le sugirio el nombre de UNIX, como un nombre en broma (por su
similitud a Multics). El nombre de Unix era ideal tambien porque este sistema operativo
solo funcionaba para un usuario (uniusuario).

Debido a que la PDP-7 que se utilizo para desarollar e implementar el sistema Unix no
era de el grupo en el cual Thompson estaba asignado (hay que recordar que Thompson la
encontro por ah y la comenzo a utilizar), se realizo la propuesta para adquirir un equipo
mas reciente, una PDP-11. Dos gerentes de departamento al ver el nuevo sistema
operativo aceptaron la compra y se comenzo a realizar el traslado del sistema operativo
Unix a esta nueva maquina.

La primera version de Unix fue escrito en ensamblador, pero la intencion de Thompson
era de escribirlo nuevamente en un lenguaje de mas alto nivel (y menos complejidad). El
momento de hacer esta intencion una realidad llego con la maquina PDP-11 debido a que
el ensamblador que se utilizaba en la PDP-7 era totalmente diferente que el de esta nueva
maquina (esto era comun en esos tiempos, una maquina no era compatible con otra aun
cuando fueran del mismo fabricante).

Thompson inicialmente trato de utilizar Fortran en la PDP-7, pero se dio por vencido
despues del primer dia. Entonces escribio un lenguaje muy simple llamado B, el
lenguaje funciono, pero habia algunos problemas, primero, era un lenguaje interpretado y
era bastante lento por lo cual, en la PDP-7 utilizo ensamblador. En esta nueva maquina
PDP-11, Thompson volvio a escribir el lenguaje B haciendo algunas mejoras y lo llamo
NB por New B (Nuevo B). Dennis Ritchie vio ese lenguaje y lo mejoro tomando
caracteristicas de el lenguaje BCPL y el lenguaje ADA, el resultado fue llamado
logicamente Lenguaje C.

La siguiente parte fue volver a escribir nuevamente el sistema operativo en lenguaje C.
Durante esta fase, se le agregaron caracteristicas nuevas a el sistema Unix, tales como: el
soporte a multiples usuarios, la conexin de flujos de datos (pipes) y muchos de los
comandos y utilerias de Unix existentes hoy en dia.

Thompson reescribio el shell con el soporte a pipes (lo cual era una idea original de
Doug McIlroy) en una sola noche y eso revoluciono la forma en la cual los comandos se
ejecutarian de ese momento en adelante.

En el periodo de 1976 a 1977, Ken Thompson tomo un ao sabatico fuera de los
laboratorios Bell para ensear programacion en la universidad de California-Berkeley. Lo
que enseo, logicamente, fue el sistema Unix y mientras tanto continuo desarrollandolo y
mejorandolo.


10
El sistema fue extremadamente popular entre los academicos y alumnos de la universidad
de Berkeley.

Cuando Thompson regreso a los laboratorios Bell, los estudiantes y profesores en
Berkeley, continuaron mejorando el sistema Unix, eventualemnte estas mejoras fueron
incorporadas en lo que entonces llego a conocerse como la distribucion de software de
Berkeley (BSD o Berkeley Software Distribuition)
3
.

Las distribuciones de Unix provinientes de la universidad de Berkeley fueron agregando
caracteristicas avanzadas, como soporte de red, e incluso fueron los sistemas que se
utilizaron para crear un nuevo protocolo de red llamado TCP/IP. Internet fue creada,
diseada y puesta en funcionamiento en sistemas Unix. El World Wide Web, los
navegadores de internet y el formato HTML fueron diseados y programados en un
sistema Unix denominado NeXT
4
.

Unix comenzo a expander su uso en el mundo academico. Y los negocios comenzaron
eventualmente a enterarse del sistema operativo debido a que la mayoria de los egresados
lo habian utilizado en sus clases de programacion.

Pronto un nuevo negocio tomo forma, escribir programas para ejecutarse en sistemas
Unix con fines comerciales. Lo que hacia a Unix popular para aplicaciones de negocios
eran sus capacidades de tiempo compartido, la capacidad multitareas permitia a varias
personas utilizar el mainframe o minicomputadora al mismo tiempo
5
, ademas de su
portabilidad entre maquinas de diferentes fabricantes y las capacidades de correo
electronico integradas en el sistema.

En 1984, AT&T se diversifico y creo una subsidiaria independiente Sistemas
computacionales AT&T. La creacion de la subsidiaria permitia a AT&T entrar a el
negocio de computadoras. Esta subsidiaria comercializaba un conjunto de productos,
incluyendo el sistema operativo UNIX, ya entonces llamado Sistema 5 (System V), lo
interesante es que AT&T no vendia un producto terminado, ellos vendian el codigo
fuente del sistema operativo para que las compaias lo adecuaran a sus necesidades. Un
buen numero de compaias fabricantes de computadoras adquirieron una licencia del
sistema operativo para adecuarlo a sus propias computadoras (Compaias tales como
IBM, HP, NCR, DEC, etc.) e incluso nuevas compaias se crearon en base a Unix
(Silicon Graphics, Sun, SCO, Informix, etc.).

3
Poco tiempo despues, AT&T demando a la universidad de Berkeley por distribuir software basado en su
sistema operativo. A final de cuentas AT&T cedio los derechos de utilizacion del codigo a la universidad
permitiendo la distribucion del software para usos educativos y no comerciales.
4
NeXT fue diseado por Steve Jobs y hoy en dia es propiedad de Apple Computer y base de su sistema
operativo OS X
5
Antes de Unix todos los mainframes trabajaban en lotes, solo un usuario podia utilizar el sistema.

11
Unix en la actualidad.

El xito de Unix depende en gran parte de el lenguaje C, el primer lenguaje de proposito
general que combina la eficiencia del lenguaje ensamblador con expresiones de alto
nivel. De igual manera que el sistema operativo Unix, los programas en lenguaje C
pueden ser transportados esencialmente sin cambio entre maquina y maquina, eliminando
la necesidad de reescribir el software.

Los sistema basados en Unix son vendidos por un buen conjunto de compaas. Estos
sisteman incluyen: Solaris de SUN Microsistems, HP-UX de Hewlett-Packard, AIX de
IBM, Tru64 UNIX de Compaq, IRIX de Silicon Graphics, OpenServer de SCO,
UnixWare de SCO, OSF1 Unix de Digital Equipment Corporation, etc. En adicion,
existen multiples sistemas basados en Unix e implementaciones compatibles de Unix,
tales como: Minix, Linux, FreeBSD, NetBSD, OpenBSD, Apple OS X, QNX, etc.
6


Unix es el sistema operativo de los servidores de Internet mas popular, negocios y
universidades utilizan sistemas Unix para diferentes cuestiones, desde la enseanza, hasta
la administracion. Una gran parte de la investigacion academica, cientifica e industrial se
realiza sobre sistemas basados en Unix. La mayor parte del software comercial esta
escrita en lenguaje C, C++ (Un derivado de C que tambien fue desarollado en los
laboratorios Bell), o mas recientemente, Java, un descendiente de C++ desarollado en
Sun Microsystems y Objective-C una mezcla entre C, C++ y Java, desarollado por Apple
Computer.

6
Hoy en dia, el dueo del codigo fuente y copyright Unix es The Santa Cruz Operation o SCO, el cual esta
en un litigio legal con IBM por algunas cuestiones no aclaradas de rompimiento de contrato y agregacion
de codigo de Unix a Linux (por parte de IBM), pero despues de 2 aos, SCO no ha mostrado ninguna
prueba.

12
Capitulo 2. Filosofia y generalidades de los sistemas
Unix

Unix es un sistema operativo simple, pero aveces se tiene que ser un genio para
entender la simplicidad Dennis Ritchie.

El sistema operativo Unix fue diseado por programadores, y escencialmente para
programadores, a diferencia de otros sistemas operativos diseados para usuarios no
involucrados con sistemas computacionales (todos sabemos cuales son esos sistemas).

La filosofia general del sistema es la denominada K.I.S.S.
7
, y esto significa el tener
pequeos programas con funciones especificas y bien definidas en lugar de tener un
programa que realice todas las funciones, de esta manera es mas facil darle
mantenimiento a esos programas y corregir errores en los mismos.

Doug McIlroy, el inventor de los pipes de Unix y uno de los fundadores de el proyecto
original menciona:

- Haz que cada programa haga una sola cosa y que la haga bien. Para hacer una
nueva funcionalidad, crea un nuevo programa en lugar de complicar el programa
existente adicionado esa nueva funcionalidad.
- Asume que la salida de cada programa se convertira en la entrada de otro
programa, evita salidas binarias o en columnas, y cuando sea posible has que tus
programas funcionen sin intervencion del usuario.

Podriamos resumir lo anterior en:

Escribe programas que hagan una sola cosa, y que lo hagan bien. Escribe programas que
puedan trabajar en conjunto con otros programas. Escribe programas que puedan
manipular y desplegar texto simple, puesto que esta es una interface universal.

Y lo ultimo es muy cierto, el 99% de los archivos de configuracion, bitacoras y salida de
datos en un sistema Unix son archivos ASCII.


7
Keep it Simple Stupid.

13

Compatibilidad universal

Una de las grandes caracteristicas de los sistemas Unix es la compatibilidad de funciones
y comandos entre los vendedores de Unix. Esto se debe a que un fabricante que venda un
sistema Unix, tiene que cumplir con un conjunto de reglas especificas de operacin,
interface con el usuario y funcionamiento en general de los comandos.

Debido a la licencia de Unix, existen ciertas regulaciones que forzan a los fabricantes que
distribuyen su propia version de Unix a ser compatibles con un conjunto de estandares
8
.
El resultado es, que un comando de Unix, funciona en cualquier sabor o derivado de
Unix. Digamos que existiera el comando listar (este comando no existe, es solo para
ilustrar el ejemplo), el cual despliega una lista de los archivos que se encuentran en el
directorio actual. Este comando funcionara exactamente igual en: Solaris, OpenServer,
OS X, FreeBSD, HP-UX y si, incluso Linux.

Lo anterior permite que cualquier persona que conozca Unix (o Linux! ) puede operar,
administrar y aplicar sus conocimientos en cualquier sistema operativo basado en Unix,
no importando la plataforma. Si tu sabes manejar bien Linux, no tendras ningun problema
utilizando una SUN Ultra Sparc Enterprise 15000 (que por cierto, vale unos 3 millones de
dolares), ni una Digital OSF1 con 32 procesadores Alpha de 4 Ghz cada uno, ni tampoco
una supercomputadora Cray. Debido a que todas las anteriores utilizan Unix y cumplen
con la especificacion POSIX.

Otra caracteristica interesante de los sistemas Unix es que la documentacion de todos los
comandos, archivos de configuracion y programas de aplicacin, se encuentra instalada
de forma electronica en el sistema, esto permite a los administradores y usuarios
consultarla en cualquier momento.

8
Estas nomas son denominadas POSIX (Portable Operating System Unix)

14
Multiusuario.

Desde su diseo incial, Unix fue creado para esquemas multiusuarios. El tratar de
explicar que es un esquema multiusuario a alguien que nunca ha visto una terminal tonta
es un tanto dificil, y realmente esta es una de las caracteristicas mas importantes del
sistema, por lo anterior comenzaremos explicando que es una terminal tonta.

Una terminal tonta consiste de una pantalla (o monitor) y un teclado, pero no tiene
poder de procesamiento alguno (no contiene ningun CPU ni memoria RAM, por eso el
termino de tonta). Permiten a un usuario realizar trabajo en un servidor,
minicomputador o mainframe.

Entre los aos 1970 a 1980 multiples compaias crearon terminales tontas, las mas
comunes fueron: DEC, Wyse, Televideo e IBM.
9


Las terminales tontas fueron durante mucho tiempo
la forma de acceso de multiples sistemas de
computo, el usuario accesaba a el sistema mediante
estos dispositivos, iniciaba una sesion (con un
usuario y passsword del sistema central) y realizaba
procesos. Lo interesante es que el proceso se realiza
en el servidor a el cual el usuario acceso, debido a
que la terminal no tiene poder de procesamiento ni
memoria RAM, se utiliza el poder de procesamiento
y memoria RAM del servidor.

Los sistemas operativos multiusuarios permiten que multiples usuarios, utilizando
terminales tontas realicen procesos de computo.

La forma de conectividad de estos dispositivos con la computadora central variaba
dependiendo del tipo de servidor y de terminal, pero generalmente era por medio de cable
serial
10
o twinaxial
11
. Y debido a que existen multiples fabricantes de terminales, el
sistema operativo tiene diferentes formas de hablar con estas terminales, por ejemplo, no
hablara igual con una terminal IBM que con una terminal Wyse, para la terminal IBM, el
sistema operativo enviara caracteres que sean entendidos por terminales IBM, y en
terminales Wyse enviara caracteres que puedan ser entendidos por terminales Wyse, esto
en general se define como emulacion. Para una terminal de marca Wyse, la emulacion
depende del modelo de terminal, por ejemplo: Wyse50, Wyse60, vt100, etc. (Veremos
mas de esto cuando accesemos el sistema).

9
Las terminales tontas no soportan modo grafico, solo despliegan caracteres ASCII, existen otro tipo de
terminales con capacidades graficas, estas son denominadas Terminales X o X terminals.
10
Debido a que un modem es un dispositivo serial, se podia tener una terminal remota que se conectara a el
servidor por medio de un modem.
11
Cable Twinaxial es un tipo de cable especial utilizado por sistemas AS/400 de IBM.

15
Por mucho tiempo, los sistemas administrativos o de aplicaciones especificas que fueron
creados para sistemas Unix o mainframes, utilizaban una terminale tonta para su acceso
12
,
algunas de las ventajas de el uso de terminales tontas en las empresas incluian:

- No hay virus.
- No hay administracion de dispositivos de usuario (no hay nada que administrar).
- Son focalizadas a el trabajo de la empresa.
- Facil reemplazo de dispositivos de usuarios (no hay informacion local).
- Solo funcionan en la empresa.
- Bajo costo de propiedad.
- La administracion del servidor central equivalia a administrar todo.

En terminos generales, un sistema operativo multiusuario es aquel que permite:

- Acceso de multiples usuarios utilizando dispositivos sin poder de procesamiento
(terminales tontas)
- Control de multiples procesos de multiples usuarios
- Proteccion de memoria (que un proceso de un usuario no pueda accesar la
memoria de otro proceso de otro usuario)
- Control de sesiones
- Control de esquemas de seguridad entre los usuarios (que un usuario no pueda
accesar los archivos de otro usuario si no tiene los permisos necesarios)

No hay que confundir multiusuario con multitasking, son dos animales diferentes,
mientras uno permite multiples usuarios, otro permite multiples procesos, por lo general
un sistema multiusuario implementa multitasking, pero no necesariamente un sistema
operativo multitasking es multiusuario, un ejemplo practico: Windows NT, es
multitasking pero no multiusuario
13
.

Durante este curso utilizaremos las caracteristicas multiusuario de el sistema Linux para
poder accesar todos al mismo tiempo a un solo servidor local y realizar ah las practicas.

Hey, pero como ?, que no dijiste que necesitamos una terminal tonta para hacer eso del
multi no se que ?

Si, efectivamente, necesitas una terminal tonta, o un programa que simule ser una
terminal tonta (lo cual no es dificil, debido a que una terminal tonta unicamente sirve para
desplegar y enviar datos que se introducen desde el teclado), Windows incluye un
programa que simula una terminal tonta, con este programa podremos entrar a el servidor
Linux utilizando la red (no un cable serial, aunque tambien tendremos como invitada de
honor a una bonita terminal tonta HP-61 que se conecta por cable serial).


12
Incluso hoy en dia esto se sigue utilizando, si vas a algun banco veras que los cajeros emulan una
terminal tonta para accesar a su sistema.
13
El compartir archivos e impresoras no es un esquema multiusuario, eso se define como un servicio de
red.

16

Multitasking

Multitasking es un metodo mediante el cual multiples tareas (o procesos) se ejecutan,
aparentemente de forma simultanea
14
, en un sistema de computo. Normalmente el
multitasking es una sensacion creada por la rapida alternacion de procesos activos. Estas
alternaciones son llamadas cambios de contexto (context switches), los cuales pueden
ser voluntariamente iniciados por un proceso ejecutandose
15
, disparados por un evento tal
como un interruptor de hardware
16
o controlado por el sistema operativo
17
.

Los primero intentos por crear sistemas multitasking se hicieron en los aos 60s, y se
llamo en ese entonces tiempo compartido.

Los primeros sistemas multitasking consistian en un conjunto de aplicaciones que
voluntariamente cedian tiempo a cada una. Este tipo de operacin fue soportado por
multiples sistemas operativos y se conocio como multitasking cooperativo. Sistemas
operativos como Windows 3.11 y Windows 95 utilizaban este tipo de multitasking.

El multitasking cooperativo tenia varios problemas, comenzando por el hecho de que el
sistema deberia de depender de que cada proceso regularmente cediera tiempo para que
otros procesos pudieran utilizar el procesador. Un programa mal diseado, facilmente
podia colgar a el sistema completo. Los requerimientos de diseo y codificacion de este
tipo de programas eran complicados y normalmente resultaban ineficientes en el uso de
recursos de la computadora.

Para remediar esta situacion, la mayoria de los sistemas multitasking evolucionaron a una
alternativa llamada multitasking preemptive. En el cual, un sistema de hardware (no
incluido en maquinas antiguas) podria interrumpir un proceso en ejecucion, e informar
a el procesador de un requerimiento de ejecucion de codigo. Un sistema diseado de esta
manera no necesitaba depender en la cesion voluntaria de tiempo de procesador por parte
de procesos individuales. En lugar de eso, el interruptor de hardware podia detener
momentaneamente un proceso en ejecucion y regresar el control del procesador a el
sistema operativo, el cual despues continuaria la ejecucion del proceso en pausa en el
punto donde fue interrumpido. De esta manera los programas podian ser codificados sin
tener que preocuparse por el hecho de ceder tiempo de proceso a otros programas y el
sistema operativo tomaria control de las prioridades de cada proceso para su ejecucion.


14
El sistema operativo crea una cola de procesos y asigna cierto tiempo para la ejecucion de cada proceso,
el tiempo es tan corto que pareciera que todos se ejecutan al mismo tiempo. En realidad solo un proceso se
ejecuta a la vez.
15
Multitasking cooperativo
16
Tecnicamente conocido como requerimiento de interrupcion (IRQ o Interrupt Request), es cuando un
dispositivo de hardware requiere que el procesador realice alguna operacin, el dispositivo detiene el
proceso que se esta ejecutando e instruye a el procesador para que relalice el calculo que necesita.
17
Multitasking preemptive

17
Los sistemas con multitasking preeemptivo garantizan de mejor manera una rebanada
de procesador a cada proceso. Y tambien permiten a el sistema el lidiar con eventos
externos importantes, tales como, entrada de datos por algun periferico, lo cual puede
requerir la atencion inmediata de uno u otro proceso del sistema.

En un punto especifico, los procesos pueden ser agrupados en dos categorias: Aquellos
que estan esperando por entrada/salida (I/O Bound), y aquellos que estan utilizando
completamente el CPU (CPU Bound). En los sistemas antiguos los procesos
normalmente preguntaban o esperaban mientras esperaban la entrada de datos para
continuar procesando (tal como acceso al disco, teclado o datos de red). Durante este
tiempo, el proceso no estaba realizando trabajo util, pero aun mantenia control del tiempo
de procesador que se le fue asignado. Con la creacion de interruptores de hardware y
multitasking preemptivo, estos procesos en espera de entrada/salida pueden ser
bloqueados o puestos en pausa mientras no tengan datos para continuar. Permitiendo a
otros procesos utilizar el CPU. Cuando los datos esperados por el proceso en pausa estan
listos, se genera una interrupcion y los procesos bloqueados entonces se levantaran
para continuar su proceso normal.

Los sistemas multitasking tambien han evolucionado y los sistemas operativos modernos
generalmente incluyen mecanismos detallados para manejar prioridad de procesos y
manejo de multiples procesasdores. Un proceso con mayor prioridad, obtendra mas
tiempo de procesador que un proceso con menor prioridad, de esta manera, las
aplicaciones propias del sistema operativo pueden trabajar mas rapidamente que las
aplicaciones del usuario.
Proteccion y manejo de memoria

La proteccion de memoria es un metodo que previene que un proceso corrompa la
memoria utilizada por otro proceso ejecutandose en la misma computadora
18
.
Normalmente se implementa un mecanismo de hardware y software para asignar
diferentes areas de memoria a diferentes procesos y para manejar las excepciones cuando
un proceso trata de accesar memoria fuera de los limites establecidos por el sistema
operativo.

Existen diferentes maneras de lograr la proteccion de memoria. Segmentacion y
paginacion son dos de los metodos mas utilizados.

La segmentacion significa que una parte, o partes de la memoria son aislados del proceso
ejecutandose por medio de dos registros de hardware
19
. Si los datos a leer o escribir se
encuentran fuera de las direcciones permitidas para ese proceso, entonces se dispara un
error de proteccion general.



18
O que un proceso pueda leer o modificar la memoria de otro proceso.
19
Estos registros definen la direccion minima de memoria y maxima de memoria que el proceso puede
accesar.

18


Paginacion de memoria es el metodo utilizado por la mayoria de sistemas Unix (debido a
que la segmentacion de memoria requiere hardware especializado). A cada proceso se le
asigna una tabla de paginas
20
. La paginacion hace posible la creacion de una memoria
virtual lineal y contigua aun si la memoria fisica se encuentra fragmentada
21
. La tabla de
paginas es normalmente invisible para el proceso en ejecucion. La paginacion tiene
mutiples ventajas debido a que la memoria aparece como paginas; la memoria virtual
es dividida en pequeos pedazos, llamados paginas. El tamao de una pagina de memoria
es normalmente de 4KB
22
o de 8KB
23
. Cada pagina puede apuntar a cualquier parte de la
memoria fisica, y puede haber diferentes paginas que apunten a la misma direccion de
memoria. Esto hace mas facil el asignar memoria para el proceso, debido a que las
paginas de memoria pueden ser mapeadas hacia cualquier parte. Partes de la memoria de
una aplicacin tambien pueden ser intercambiadas a otros medios de almacenamiento
de memoria. Esto sucede cuando la memoria utilizada por el proceso casi no tiene uso y
tambien hace que la aplicacin crea que tiene un area de memoria para trabajar mucho
mayor.

La paginacion es una de las partes importantes de manejo de memoria de los sistemas
Unix y en resumen comprende la creacion de una parte en el disco duro que se utilizara
como area de intercambio. Esta area de intercambio es utilizada por el sistema operativo
para mapear la memoria de procesos con acceso estatico a la memoria (procesos que
practicamente no modifican el area de memoria que se les ha asignado, o procesos que
tienen poco acceso a el area de memoria asignada). Esto permite liberar la memoria real
para poder ejecutar mas aplicaciones.

El area de intercambio tambien es conocida como memoria virtual debido a que cuando
un proceso requiere mas memoria fisica que la existente en el sistema, el sistema
operativo mapea (o asigna) partes del disco duro como si fuera memoria real a el proceso
que hace el requerimiento. El proceso no tiene conocimiento de si las paginas de
memoria asignadas por el sistema operativo son memoria real o memoria virtual (espacio
de disco duro asignado como si fuera memoria ram).

Otra funcion importante del area de intercambio es la de paginar la memoria de procesos
que estan en espera de algun dispositivo, supongamos que el proceso X esta esperando
entrada de datos del disco duro, pero este se encuentra ocupado con otros procesos,
mientras el proceso X espera, el sistema operativo envia su area de memoria a el disco
duro
24
(debido a que el proceso ha tenido poco acceso a la misma, porque esta esperando)

20
Imaginemos esta tabla de paginas como un array de memoria o una tabla de memoria ram que apunta a
direcciones de memoria para las cuales el proceso tendra acceso.
21
La memoria se fragmenta de igual manera que los discos duros, cuando un proceso deja de ejecutarse y
libera memoria, genera pequeos fragmentos de memoria, cuando muchos procesos se ejecutan y liberan
memoria despues de su ejecucion, la memoria se fragmenta. Algunos procesos requieren memoria no
fragmentada para su funcionamiento (como las bases de datos).
22
En maquinas con procesador Intel y compatibles
23
En maquinas RISC
24
Esta funcion recibe el nombre tecnico de page-in

19
y de esta manera libera memoria RAM fisica del sistema. Cuando el dispositivo esperado
por el proceso se libera, entonces se realiza la operacin inversa, la memoria del disco
duro es mapeada a memoria RAM
25
y el proceso continua operando de forma normal.

Esta area de intercambio del sistema es generalmente una particion o segmento del disco
duro y tecnicamente recibe el nombre de swap.

Cuando un proceso trata de accesar memoria que no se encuentra mapeada en su tabla de
paginas de memoria, el sistema operativo mata a el proceso y vacia el contenido de su
area de memoria en un archivo llamado core, en ese momento, un bonito mensaje como
este:

Memory fault, core dumped

Aparece en la pantalla, indicando que el proceso ha realizado una operacin no permitida
por el sistema operativo (tratar de accesar el area de memoria de otro proceso) y el
sistema operativo ha detenido el proceso, almacenando el area de memoria que el proceso
estaba ocupando en el archivo llamado core
26
.

Acceso a dispositivos

El termino dispositivo (device) es utilizado para indicar componentes de hardware que
externamente o internamente se conectan a la computadora, tales dispositivos pueden ser:
disco duro, impresoras, tarjetas de video, CD ROMs, etc. Tambien existen los llamados
pseudo disopsitivos (pseudo-devices), en los cuales, un programa o software simula el
comportamiento de un dispositivo de hardware
27
.

El sistema operativo
28
permite al las aplicaciones acceso a los dispositivos por diferentes
metodos, mediante programacion y mediante abstraccion.

Mediante programacion, envuelve el hecho de crear un programa o software que utilice
los metodos que el sistema operativo provee para accesar los dispositivos que el controla.

Mediante abstraccion, representa la utilizacion de un nodo de dispositivo (device node),
estos nodos de dispositivos se abstraen de la programacion mediante la representacion de
archivos especiales en el sistema.





25
Esta funcion recibe el nombre tecnico de page-out
26
Este archivo core pude despues analizarse con debuggers para saber porque el proceso trato de realizar
esa funcion, es por eso que se vacia el area de memoria del proceso, para su analisis posterior.
27
Veremos ejemplos de estos en las pseudo terminales y en el loopback driver
28
Mas especificamente el Kernel

20
Mas claramente, existe un archivo en el sistema por cada dispositivo, el accesar a dicho
archivo representa accesar al dispositivo, de esta manera, usuarios, programas, comandos
y utilerias, pueden simplemente abrir el archivo que apunta a el dispositivo deseado y leer
o escribir en el
29
.
Niveles de seguridad y accesos

Un sistema Unix provee servicio a varios usuarios y/o procesos. Usuarios es una
abstraccion que denota una entidad logica para la signacion de privilegios en el sistema.
Un usuario puede corresponder a una personal real, pero tambien a una operacin del
sistema, estos identificadores del sistema son usuarios virtuales que ciertas aplicaciones
requieren para poder realizar sus operaciones
30
.

El sistema Unix no distingue usuarios o identificadores reales de identificadores virtuales,
lo unico que ve, son los privilegios que el usuario tiene y que puede hacer con esos
privilegios (abrir un archivo, accessar un dispositivo tal como el puerto serial, ejecutar un
programa, etc).

El sistema Unix identifica cada usuario mediante un numero secuencial llamado User
ID.

Esta es una de las caracteristicas de seguridad mas basicas encontradas en sistemas Unix.
A diferencia de otros sistemas, un usuario comun y corriente, tiene un conjunto de
privilegios y restricciones para operar el sistema.

Por ejemplo:

Si el usuario juan crea un archivo, entonces el usuario luis no podra accesarlo (leer o
escribir en ese archivo) a menos que el usuario juan le de explicitamente permiso
mediante una serie de comandos.

En Unix los usuarios se dividen en dos categorias:

- Usuarios normales
- Superusuario

Un usuario normal es aquel que opera el sistema con privilegios y restricciones dadas,
mientras que el superusuario tiene poder y control total del sistema
31
.

El superusuario tiene el identificador o nombre de usuario root y el identificador
numerico (o USER ID) 0 (cero).


29
Logicamente existen dispositivos que solo soportan lectura o escritura y algunos que soportan ambas
funciones.
30
Lo cual se vera mucho mas adelante
31
Es por eso que no es recomendable utilizar un sistema Unix con el usuario root.

21
Cualquier programa que se ejecute, carga los privilegios y restricciones del usuario que lo
ejecuta, para poner esto de una manera mas clara, supongamos:

El usuario juan ejecuta el comando para borrar archivos y le indica que desea borrar
todos los archivos del disco duro. En realidad solo podra eliminar los archivos a los
cuales el tiene permisos.

Se pueden definir permisos a los usuarios para operaciones de archivos (leer, modificar,
eliminar, copiar, etc), para la ejecucion de programas (los permisos del usuario definen si
el es capaz de ejecutar o no un programa especifico), para el acceso a dispositivos y
recursos del sistema (disco duro, puertos seriales y paralelos, tarjeta de red, etc) e incluso
para el uso del procesador. Aun cuando el usuario sea capaz de ejecutar un programa, los
permisos o privilegios del usuario lo acompaan en esa ejecucion.

En Windows, un virus tiene la capacidad de infectar a cualquier archivo del sistema,
precisamente porque en Windows no existe el control de usuarios ni privilegios. En Unix
un virus seria inutil, debido a que solo podria infectar los archivos a los cuales el usuario
tiene privilegios (y la mayoria de los ejecutables no permiten la modificacion por parte de
usuarios mortales).

Efectivamente, si un usuario esta trabajando con la cuenta de el superusuario (root), y el
ejecutara un virus, debido a que el tiene el control completo del sistema, el seria capaz de
infectar todos y cada uno de los archivos del sistema. Es por eso que trabajar siempre con
la cuenta del superusuario (root) es simplemente ESTUPIDO. La cuenta de root es una
cuenta de administracion, no de operacin del sistema.
Independencia

Desde su diseo inicial, los sistemas Unix fueron creados para no depender de
intervencion humana en su operacin y para tolerar fallas en servicios no necesarios.

Para poner un ejemplo practico, supongamos que en un sistema Windows sucede un
error, tradicionalmente mostrara un cuadro de dialogo con un mensaje como este:



Lo que hay que notar es que el programa no continua su ejecucion, debido a que requiere
intervencion por parte del usuario.

Esta es la filosofia general de los sistemas Windows, muestra todo en la pantalla y
preguntale todo a el usuario (para que quieres un ambiente grafico si nadie lo va a ver).

22

En un sistema Unix, tradicionalmente cuando ocurre un error, el sistema envia un correo
electronico al administrador indicando el mensaje de error y continua con su
procesamiento.

Debido a que los sistemas Unix son servidores de datos, toleran todo tipo de fallas de
hardware que comunmente harian que una maquina Windows detuviera su ejecucion por
las razones mas tontas (no esta conectado el mouse, no tiene teclado conectado, la
resolucion del monitor no es la correcta, etc.)

Un sistema Unix correctamente configurado no requiere tener un monitor, ni un teclado,
ni un mouse conectado para realizar sus funciones de servidor, la administracion se
realiza en un 90% de forma remota.
Resumen

Algunas de las caracteristicas que hemos visto de los sistemas Unix son:

- Efectividad en el uso de recursos
- Alta portabilidad
- Modularidad y sencillez en los comandos
- Multiusuario
- Multitasking preemptive
- Proteccion de memoria
- Manejo de memoria virtual
- Abstraccion de dispositivos
- Control de privilegios y accesos
- Independencia de interactividad humana
- Estandarizacion en la salida de datos y archivos de configuracion
- Unix es un ambiente de creatividad y no hay reglas escritas.


23
Capitulo 3. Servidores vs. Clientes.

Como el asistente se habra dado cuenta, el sistema operativo Unix fue desarollado por
programadores y para programadores, precisamente esa es una de las fortalezas
especificas del sistema. Pero tambien una de sus grandes desventajas cuando se trata de
comparar contra otros sistemas operativos comerciales.

Para cualquier tipo de creacion nueva, hay que tomar en cuenta la audiencia (quienes lo
usuaran y con que fines).

Desde su desarrollo inicial, DOS, fue creado con la mentalidad de que usuarios que no
tuvieran experiencia en computacion pudieran utilizarlo, el mercado principal de DOS no
eran los ingenieros o expertos en informatica, mas bien los usuarios comunes.

La siguiente evolucion de DOS, Windows, reforzo mucho mas esa idea y filosofia. El
incluir un ambiente grafico permitio que multitudes de personas que no tenian ni idea de
que era un byte o un bit pudieran utilizar una computadora, y eso no es malo. Pero
tambien debemos de tomar en cuenta que la facilidad contiene restricciones (de igual
manera que el poder tiene consecuencias).

Windows ha sido popular por su facilidad de instalacion y uso, estandarizacion en la
operacin y gran multitud de programas para usuarios.

Unix es popular en las empresas por su gran versatilidad, alta seguridad, facil
adaptabilidad a tareas complejas, alta estabilidad y en especial: Es una excelente
plataforma de desarrollo para nuevas tecnologias.

Algunos se preguntaran, Si Unix es tan bueno, porque es mas popular Windows ?

Respuesta rapida: Porque es mas facil
32
.

Por sus mismas caracteristicas, los sistemas Unix no estan enfocados a usuarios comunes
y corrientes, y aparte de eso, la curva de aprendizaje de un sistema Unix es muy alta en
comparacion con un sistema Windows
33
.

Aquellos que crean que cuando van a un cajero, ese cajero se comunica con un sistema
Windows para verificar los datos del usuario o que los sistemas de control aereo estan
controlados por sistemas Windows, o los servidores de nombres de Internet ejecutan
sistemas Windows, estan totalmente equivocados.


32
Ahora que si la facilidad es el argumento fuerte, existen sistemas operativos mucho mas faciles de
utilizar y con mejores prestaciones que Windows (OS X, por ejemplo)
33
Es tambien por eso que se le paga mucho mejor a un administrador de Unix.

24
Podemos encontrar sistemas Unix en los lugares menos sospechados, pero regresamos al
punto inicial. Estos sistemas estan escondidos tras bambalinas, para enmascarar la
complejidad que los mismos encierran.

Como norma general, las empresas utilizan sistemas Unix como servidores de datos
(servidores de archivos e impresoras, bases de datos, paginas de web, control numerico,
aplicaciones administrativas, etc). Y como clientes para accesar a esos servicios
maquinas Windows.

Hoy en dia Linux trata de cambiar la mentalidad de el mercado al incluir ambientes
graficos con la misma facilidad y prestaciones que los sistemas Windows, pero el
problema tambien es el enfoque cultural que existe en el mercado.

Muchas veces cuando se menciona Unix a un administrador de Windows, el
administrador se asusta (la mayor parte de las veces porque ha escuchado que es dificil,
criptico y que no usa ventanitas).

Otra cuestion es que no se provee la educacion adecuada en las instituciones para
preparar a los futuros profesionales a proveer una solucion basada en Linux, la mayoria
de los planes de estudio se basan alrededor de Windows y de sus herramientas de
desarrollo, de esta manera Microsoft tiene un mercado cautivo.

Si alguien por su propia cuenta desea estudiar Unix se encontrara que los cursos de
capacitacion para Unix son extremadamente caros (de los 5,000 pesos para arriba por
cursos basicos del sistema operativo).

En el mercado laboral es dificil encontrar personas capacitadas y con suficientes
conocimientos para administrar sistemas Unix o Linux, pero es facil encontrar personas
que puedan manejar servidores Windows, esto ya se reduce no a una cuestion
tecnologica, mas bien de oferta, demanda y educacion.


25
Capitulo 4. De Unix a Linux, evolucion o revolucion ?

Cada sistema operativo en el mercado es igual. Todos apestan Brian Valentine de
Microsoft

Para ilustrar el nacimiento de Linux, tendremos que regresar nuevamente en la historia y
entender los eventos que motivaron y facilitaron su creacion.

Todo comenzo mas o menos en 1972, cuando John Lions
34
, profesor de la universidad
New South Wales de Australia, fue invitado a los laboratios Bell por un periodo de 6
meses, con la finalidad de estar como profesor adjunto y ver los desarollos tecnologicos.

John, se sintio inmediatamente atraido a un proyecto nuevo que un peqeueo grupo de
desarolladores estaba creando, el proyecto se llamaba Unix y estaba en sus primeras
versiones. John se volvio muy cercano a Dennis Ritchie y Ken Thompson y durante la
mayoria de esos 6 meses estuvo con ellos viendo el progreso que tenian creando el
sistema operativo y haciendo preguntas a ellos acerca de el diseo, funcionamiento y
operacin del sistema. Era tanta informacion que John le pregunto a el par de
desarrolladores si podria tomar notas de sus explicaciones y logicamente de el codigo
fuente que estaban creando, ellos aceptaron gustosos y apartir de ese momento John
Lions comenzo a redactar varios documentos describiendo las partes y funcionalidades
del sistema operativo.

Ken Thompson, que era un maestro tambien, sintio la necesidad de proveer a Lions con
el codigo fuente del sistema operativo y explicarle linea por linea su funcionamiento.

Lions eventualmente regreso a su universidad y comenzo a dar el curso de sistemas
operativos, en su curso el no enseaba a utilizar un sistema operativo, el enseaba como
crear un sistema operativo.

Con el fin de proporcionar documentacion a sus estudiantes, paso en limpio sus apuntes
de el sistema operativo Unix y creo un libro con el codigo fuente que Thompson le dio.
Asi es, en un libro que el entregaba a sus estudiantes tenia el codigo fuente de linux (en
lenguaje C) comentado linea por linea.

Aunque el libro nunca se publico realmente, las copias fotostaticas comenzaron a
circular, incluso a lugares tan lejanos como Amsterdam, en donde Andrew Tanenbaum,
otro profesor de computacion, obtuvo una copia.

Andrew Tanenbaum vio que era un excelente material y comenzo a crear un curso
alrededor de las copias, con el fin de tambien ensear como crear un sistema operativo.


34
No confundir con Linus, este no entra en accion hasta aos despues.

26
En esas andaba el Tanenbaum cuando AT&T se dio cuenta de que en una universidad de
Australia se estaba enseando directamente del codigo fuente de Unix. AT&T no estaba
feliz de que eso estuviera pasando y movio cielo y tierra con tal de erradicar esas copias.

El primer documento prohibido de la industria de computo habia nacido. El libro de
Lions.

No solo se prohibio la distribucion de las copias, tambien el leerlo estaba penado por
leyes de copyright y secretos industriales
35
.

Lions se vio forzado a destruir los originales y copias que tenia en su poder y de pedir
todas las copias que habia distribuido a sus alumnos, haciendo jurar a cada uno de sus
alumnos que no habian distribuido otra copia adicional.

Tanenbaum tambien fue tocado por esa caceria de brujas, tuvo que entregar la copia del
documento, informar de donde la obtuvo y firmar un contrato de confidencialidad
indicando que nunca usaria el documento o el codigo fuente que observo.

Los efectos fueron tan fuertes que Lions fue forzado a renunciar de su puesto de profesor
en la universidad Australiana.

Ken Thompson, sintiendose culpable de todo eso (a final de cuentas, el le entrego el
codigo fuente a Lions), consiguio un puesto de profesor para Lions en la universidad de
Berkeley (en donde el mismo Thompson habia sido profesor). Pero por cuestiones de el
problema que ambos habian pasado, se le prohibio a John Lions dar la materia de
sistemas operativos.

Al otro lado del mundo Andrew Tanenbaum estaba muy desilusionado de lo que habia
pasado y decidio que si no podia utilizar el codigo fuente de un sistema operativo
existente, entonces el crearia uno con el fin de ensear como crear un sistema operativo.

El mismo comenta en su pagina de web Ken Thompson me llamo por telefono para
disculparse por lo sucedido y me dijo que si el habia creado un sistema operativo solo, en
menos de un mes, seguramente yo tambien podria crearlo. Me tomo mas de un mes, pero
yo no soy tan inteligente como Thompson, de hecho, nadie es tan inteligente como
Thompson. Me dispuse a crear un clon minimo de Unix, y lo hice yo solo, debido a que
era un sistema minimalista de Unix, el nombre que le puse fue Minix.


35
Y hoy en dia sigue siendo ilegal

27

En 1983, un programador del MIT, Richard Stallman, informo que deseaba escribir un
sistema operativo como Unix, pero totalmente gratuito, le llamo a su proyecto, el
proyecto GNU
36
. Una de las partes mas importantes de la creacion de un sistema
operativo es el lenguaje de programacion, y de igual manera el compilador para ese
lenguaje. Richard Stallman comenzo a crear el compilador de lenguaje C, y le llamo
GNU C Compiler o GCC, tambien creo un conjunto de herramientas pero todavia no
existia el sistema operativo como tal, el proyecto lentamente fue perdiendo fuerza y se
quedo en un conjunto de utilerias que podrian servir para crear un sistema operativo, pero
no en un sistema operativo funcional.

En lugar de volver a crear el hilo negro, Tanenbaum utilizo GCC y muchas de las
utilerias creadas por el proyecto GNU para crear su propio sistema operativo Minix.

Tanenbaum publico el codigo fuente completo de su sistema minimalista en 1987 como
un apendice del libro Sistemas operativos, diseo e implementacion.

A los tres meses de su liberacion, Minix se convirtio muy famoso en el mundo educativo,
y ah es donde comenzaron los problemas para Tanenbaum. El comenta: Mucha gente
comenzo a pedirme que mejorara el sistema operativo, estaba recibiendo mas de 200
correos electronicos diarios (en una epoca en la cual solo los elegidos recibian un par de
correos electronicos), los correos decian cosas como: Necesito que Minix soporte
pseudoterminales y lo necesito para el Viernes!. Mi respuesta era generalmente rapida y
tajante: NO!. Las razon para negarme es que todo el mundo trataba de convertir a Minix
en un sistema operativo de alta calidad, tal como Unix. Eso haria al sistema operativo
muy extenso y complicado como para ensear en base a el. Minix es un sistema operativo
sencillo y facil de entender, con el fin de que los estudiantes puedan ver de forma rapida
y efectiva como crear un sistema operativo. Efectivamente le faltan muchas
caracteristicas adicionales que Unix tiene, pero eso no importa debido a que la funcion
principal de Minix es mostrar el diseo de un sistema operativo no competir contra
Unix.

36
GNU es un acronimo recursivo de GNUs Not Unix

28

El 25 de Agosto de 1991, en los grupos de noticias de internet
37
aparecio el siguiente
mensaje:

Un saludo a todos lo que esten usando Minix.

Estoy haciendo un sistema operativo (gratuito), esto es solo como un hobby y no sera
nada profesional como Unix. Lo estoy haciendo para maquinas 386 y 486, he estado
programandolo desde Abril y esta comenzando a funcionar. Me gustaria que me dieran
algunos consejos en cuanto a lo que le falta a Minix ya que mi sistema operativo esta
siendo desarrollado en Minix y estoy utilizando las herramientas del proyecto GNU,
especificamente el shell y el compilador GCC. Las sugerencias son bienvenidas pero no
prometo poder implementarlas todas.

Por cierto, estoy usando a Minix como base de desarrollo pero mi sistema operativo no
tiene codigo de Minix
38
.

Linus (torvalds@kruuna.helsinki.fi)

Y la revolucion comenzo.

El kernel denominado Linux, fue gradualmente adquiriendo funcionalidades y miles de
programadores comenzaron a mejorarlo. El proyecto GNU volvio a la vida y debido a
que ellos tenian las herramientas pero no el sistema operativo, Linux se convirtio en el
sistema operativo del proyecto GNU.


37
USENET, es mas viejo que el web, no todo en internet son navegadores de web.
38
Codigo no, pero si filosofia de Minix, el cual contiene filosofia y metodos de operacin de Unix, en otras
palabras, el clon del clon.

29
Capitulo 5. El alcance de la libertad (libre o gratis)

El software es como el sexo, es mejor cuando es gratis Linus Torvalds

El software libre es cuestion de libertad, no de precio. Para entender el concepto hay que
pensar en la libertad, tal como en la libertad de expresion, no en la cuestion del precio
(porque el software puede ser gratis, pero no libre).

El software libre idealiza con la libertad del usuario para ejecutar, copiar, distribuir,
estudiar, cambiarlo y mejorar software. Mas precisamente se refiere a cuatro tipos de
libertad:

- La libertad de ejecutar el programa para cualquier proposito
- La libertad de estudiar como el programa funciona y adaptarlo a sus necesidades.
El libre acceso a el codigo fuente es una condicion para esto.
- La libertad de redistribuir copias del software.
- La libertad de mejorar un programa y liberar esas mejoras a el publico. De esta
manera toda la comunidad se beneficia.

Un porgrama es software libre si cumple todos los puntos anteriores. Por lo cual, se tiene
la libertad de redistribuir copias, ya sea con o sin modificaciones y con o sin costo (el
costo no es por el software, es por la distribucion del mismo). Al estar libre de realizar
estas cuestiones no se tiene que pedir permiso o pagar para ejercer estos beneficios.

El software libre no significa no comercial. Un programa libre puede estar disponible
para uso comercial, desarrollo comercial y distribucion comercial.

Pero de igual manera que todo, la libertad tambien requiere proteccion. La idea mas
revolucionaria en el software libre es el derecho de copia o copyleft. Copyleft es una
subversion de el sistema de copyrigth, usando la ley en contra de el mismo. Bajo las
licencias de copyleft, tal como la GPL, todas las copias y modificaciones del software
deben ser relicenciadas bajo los mismos terminos. Esto garantiza las mismas libertades
para todos. Para ilustrar lo anterior: Tu regalas un CD de Linux a un amigo, el ahora se
obliga a pasar los derechos de copia, modifiacion y libertades del software a cualquier
otra persona. De igual manera cualquier modificacion que el realice o adicion a ese
software, retiene la licencia con la que fue inicialmente concebido. De esta manera se
genera un ciclo virtuoso, un software comun a el que todo mundo puede contribuir pero
que no pertenece a nadie. A diferencia de las licencias comunes de copyright, las
licencias libres aseguran una base de conocimiento que se incrementa con cada individuo
que utiliza el software. Es por eso que Microsoft se ha referido en cuanto a la licencia
GPL como un cancer para la industria.


30
El software libre comunmente tiene mejor calidad y tecnologia que el software comercial,
para mencionar algunos proyectos:

- Apache, el servidor de web mas utilizado a nivel mundial
- Bind, el servidor de resolucion de nombres estandar en Internet
- Sendmail, el servidor de correo mas utilizado en Internet
- PHP, uno de los lenguajes de programacion con mas adeptos en Internet
- Perl, la navaja suiza de la programacion

El software libre promueve la economia local, debido a que si tu realizas un servicio con
software libre, solo cobras por la implementacion del mismo y por tus conocimientos.
Ese pago que se realiza es utilizado en la misma comunidad. A diferencia de adquirir un
software comercial americano, el dinero que se invierte en esa compra va a parar a las
manos de empresas trasnacionales.

El software libre es una forma de ganar reconocimiento internacional, de apoyar la
economia local, de aplicar tecnologia de punta y de conocer nuevas ideas y metodos de
computo.

A diferencia del software comercial, con el software libre, el beneficio es para todos.


31
Capitulo 6, La catedral y el bazar

Podria aqu copiar completamente el documento de Eric S. Raymond, La catedral y el
bazar, pero creo que tiene mas caso poner la direccion de Internet donde se encuentra la
traduccion en espaol y alentar a el asistente a leer dicho documento:

http://www.sindominio.net/biblioweb/telematica/catedral.html


32
Capitulo 7. La relacion GNU, Linux.

Podria ganar dinero programando software propietario, y posiblemente me divertiria
escribiendo codigo. Pero yo se que al final de mi carrera, veria hacia atrs y me daria
cuenta que inverti muchisimos aos construyendo murallas para dividir a la gente, en
lugar de hacer algo por unirla Richard Stallman

Los nombres dan significados; nuestra elecion de nombre determina el sentido de lo que
decimos. Un nombre inapropiado le da a la gente una idea incorrecta. Una rosa, con
cualquier otro nombre seguiria siendo una rosa. Pero si le llamamos lapiz en lugar de
rosa, la gente se decepcionara cuando traten de escribir con ella. Y si le decimos lapices a
las rosas, la gente no tendra idea de para que sirven. Si tu llamas al sistema operativo
simplemente Linux eso genera una idea erronea del los origenes, historia y proposito
del sistema operativo. Pero si se le llama GNU/Linux eso le da un significado mas
entendible.

Es importante que la gente conoza los origenes, historia y proposito del sistema ? Si,
porque la gente que no toma en cuenta la historia, esta condenada a repetirla.

Hay que entender que lo que Linus Torvalds creo, fue unicamente el kernel denominado
Linux.

Un sistema operativo no puede solamente ser el kernel, para poner un ejemplo practico,
hablemos de el sistema operativo DOS, un sistema extremadamente sencillo, en el cual,
el equivalente de kernel son solo dos archivos: io.sys y msdos.sys. Todos los comandos,
interpretes de comandos, herramientas de programacion, programas de aplicacin, etc.
No son partes del kernel.

De igual manera, Linux es unicamente el kernel del sistema GNU/Linux. Un kernel por
si solo no puede bootear, no puede compilar, no puede interpretar comandos, no puede
ejecutar aplicaciones, no puede desplegar graficos, no puede controlar el mouse, etc.

El kernel es la parte primordial del sistema operativo, debido a que permite la interaccion
de los programas con el hardware, pero hay que entender que eso no es un todo que
permita la operacin real del sistema. Se requieren herramientas externas, compiladores,
programas, utilerias, shells, etc. Todo lo adicional para la operacin real del sistema
operativo es software que el proyecto GNU ha creado. Y como todo trabajo bien hecho,
requiere y merece reconocimiento. El decirle Linux a todo este conjunto de herramientas
es incorrecto y muestra la falta de conocimiento de la historia del proyecto GNU, del
kernel de Linux y de los requerimientos de funcionamiento de un sistema operativo real.






33
Entendamos a el proyecto GNU como una sociedad que apoya la creacion de software
libre, dentro de esta sociedad multiples proyectos de software son creados y apoyados.

Por nombrar algunos:

- El servidor de web Apache
- El ambiente grafico X11
- El ambiente de desktop KDE
- El ambiente de desktop Gnome
- El software de aplicacin OpenOffice
- El software de aplicacin Gimp
- El kernel denominado Linux
- Y miles de proyectos mas.

Por todo lo anterior, es incorrecto y denota ignorancia el llamar a todo un sistema
operativo como solo Linux, cuando su nombre es GNU/Linux.



34
Capitulo 8. Anatomia basica de los sistemas operativos
Unix y Linux

Que es un sistema operativo.

Para tratar de explicar que es Linux, se tiene que explicar que es un sistema operativo.
Lo interesante de un sistema operativo es que tu nunca debes de verlo, porque realmente
nadie usa un sistema operativo, la gente utiliza programas en sus computadoras y la unica
mision de un sistema operativo es permitir que esos programas se puedan ejecutar, asi es
que un sistema operativo nunca hace nada por si solo. El simplemente espera que los
programas le pidan ciertos recursos, o le pidan cierto archivo en el disco o que permita la
comunicacin via red, y entonces el sistema operativo realiza estas funciones y le da a la
gente mayor facilidad para escribir programas Linus Torvalds

En general, un sistema operativo es la primera capa de software que se carga en la
memoria de la computadora cuando esta inicia. Por ser la primer capa, todos los otros
programas que se cargan despues de el, dependen de este software para que les proveea
varios servicios elementales de la computadora. Algunos de estos servicios incluyen:
Acceso a disco, manejo de memoria, manejo de tareas y procesos e interface de usuario.
Debido a que este conjunto basico de servicios son proveeidos por el sistema operativo,
no hay necesidad de reimplementar las mismas funciones una y otra vez en cada
programa que se utilice. La porcion de codigo que provee estos servicios elementales es
llamada Kernel.

Las responsabilidades del kernel

Manejo de procesos e interrupciones (multitasking, SMP)
Manejo de sistema de archivos (filesystems)
Manejo de paginas de memoria (asignacion, paginacion y proteccion)
Manejo de mecanismos de comunicacin entre procesos (memoria compartida, colas de
mensajes, semaforos, IPCs)
Manejo y control de dispositivos de entrada/salida (device drivers)
Implementacion de metodos de acceso a dispositivos por medio de APIs
39
.
Las herramientas alrededor del kernel.

Como se ha mencionado, el kernel permite a los programas acceso a los dispositivos,
memoria y mecanismos de control de tareas, pero por si mismo no puede realiza ninguna
tarea, el indicarle que debe de realizar y que hacer con los resultados de la tarea solicitada

39
Application Program Interface

35
es responsabilidad de programas externos que utilizan las facilidades que el kernel
provee.

Cuando un programa solicita a el kernel realiza alguna funcion, esto se denomina
llamada a sistema (system call).

Una llamada a sistema, es un mecanismo utilizado por un programa para requerir
servicios del sistema operativo. Las llamadas a sistema implementan el uso de
instrucciones que causan que el procesador cambie de modo de operacin.

Modos de operacin del procesador

Existen dos modos de operacin general del sistema, modo de usuario y modo de sistema
(o user level y kernel level), esto es tambien compatible con el esquema de ejecucion de
los procesadores normales.

La mayoria de los procesadores tienen por lo menos dos modos de operacin
(tradicionalmente tambien conocido como modo real y modo protegido). El procesador
x86 tiene de hecho cuatro modos de operacin identificados como anillos o rings, todo
lo que se ejecute en el ring 0 tiene mayor prioridad de ejecucion y puede realizar
cualquier tipo de operacin con el procesador (y los dispositivos), mientras lo que se
ejecute en el ring 4 tiene menos prioridad de operacin y puede fallar sin afectar a los
niveles anteriores
40
. Normalmente en procesadores Intel, aunque se tienen cuatro rings,
solo se utilizan el ring0 y el ring4.

Precisamente de este tipo de
separacion o prioridades de ejecucion
hace uso el sistema Linux. El kernel se
ejecuta en el ring0 y los programas de
usuario (programas que el usuario
ejecuta) en el ring4.

Debido a que en el ring0 se tiene
acceso a dispositivos y no en el ring4,
el programa hace una llamada al
sistema operativo para que le permita
accesar al dispositivo, utilizar una area
de memoria o cambiar su prioridad de
procesamiento, esto precisamente es
una llamada al sistema.

Mas adelante veremos mas de este tipo de operaciones (en el capitulo de control de
procesos)

40
Normalmente el ring4 solo permite la ejecucion de calculos pero no la peticion o asignacion especifica de
dispositivos o memoria.

36
Capitulo 9. Organizacin general del sistema.

Organizacin de archivos

El sistema operativo Unix tiene un esquema de organizacin basado en directorios
41
.
Cada uno de estos directorios contiene un conjunto de archivos de configuracion,
programas y librerias
42
para diferentes tipos de usuarios y procesos.

Como hemos visto anteriormente, existen 2 tipos de usuarios en sistemas Unix, el usuario
root y los usuarios normales.

El sistema separa en directorios los programas que un usuario comun puede ejecutar y las
partes en donde el usuario puede escribir.

De igual manera, el sistema define directorios que contienen programas que solo el
superusuario (root) puede utilizar y directorios para el uso propio del sistema (los
programas, librerias y archivos de configuracion que el sistema requiere para su
funcionamiento).

Aunque no existe un estandar en cuanto a los nombres de los directorios de usuario, si
existe para los directorios del sistema.

En la mayoria de los sistemas GNU/Linux, cuando se crea un usuario, se le define un area
en la cual el puede trabajar (mas especificamente leer y escribir datos). Tradicionamente
esta area, es el directorio /home (en sistemas Unix, es el directorio /usr), dentro de este
directorio se genera un subdirectorio con el nombre del usuario; asi, suponiendo que
existiera un usuario llamado joel, su directorio de trabajo o en el cual el tiene
posibilidades de manipulacion seria /home/joel. Ya mas formalmente, ese directorio
asignado para que el usuario trabaje, se llama directorio de casa de el usuario o home
directory.












41
Unix fue el primer sistema operativo en usar directorios.
42
Una librera es un archivo que se utiliza de forma dinamica por programas en ejecucion, es muy parecido
en funcionamiento a un DLL.

37
En el siguiente diagrama podemos ver 2 home directorys, uno del usuario juan
(/home/juan) y otro del usuario joel (/home/joel).




Tambien este diagrama (que no es un listado completo de los directorios de un sistema
Unox o Linux, solo se utiliza para ilustrar este punto) vemos otros directorios que a
continuacion describimos:


/ - raiz, de aqu parten todos los directorios del sistema y tambien se le llama root (no
confundir con el usuario root el cual tambien se traduce como raiz. Por lo cual existe
un usuario llamado raiz y un directorio raiz)
/home En sistemas Linux
43
contiene los home directorys o directorios de casa de los
usuarios
/usr Contiene librerias, documentos y programas que los usuarios comunes pueden
ejecutar. /usr/bin seria entonces una contraccion de User Binaries (Binarios de
usuario) y de igual manera /usr/lib que significaria User Libraries (librerias de
usuario). En sistemas Unix tambien contiene los home directorys de los usuarios.
/sbin Contraccion de Superuser binaries, contiene los programas binarios que el
superusuario (root) puede ejecutar (programas que permiten la administracion del equipo,
dar de baja el equipo, crear nuevos usuarios, etc).
/etc Etcetera, contiene archivos de configuracion del sistema
/lib Contiene las librerias compartidas para la mayoria de las operaciones del sistema
/var Contraccion de Variable, contiene bitacoras del sistema
44
(/var/log), archivos
de correo de los usuarios (/var/spool/mail), archivos enviados a impresin
(/var/spool/lp), etc.
/root (no incluido en la ilustracion anterior) Es el directorio de casa o home directory
del superusuario.
/dev Contraccion de Devices (tambien se me olvido incluirlo en el dibujo) contiene
referencias a los dispositivos detectados por el sistema operativo y provee la abstraccion
en forma de archivos.


43
Es raro encontrarlo en sistemas Unix
44
En sistemas Unix estas se encuentran en /usr/adm

38
Estos son solo algunos de los directorios del sistema, veremos muchos mas en el
transcurso de este curso.

El asistente notara la similitud de la ilustracion con un arbol invertido, es por eso que a el
directorio principal se le llama raiz, porque es de donde parten todas las ramas o
directorios. Es comun referirse a la estructura de directorios en sistemas Unix y Linux
como el arbol de directorios.

Das könnte Ihnen auch gefallen