domingo, 7 de septiembre de 2008

APRENDAMOS UN POCO SOBRE LINUX



BREVE HISTORIA DE LINUX


UNIX es uno de los sistemas operativos más populares del mundo debido a su
extenso soporte y distribución. Originalmente fue desarrollado como sistema multitarea
con tiempo compartido para miniordenadores y mainframes a mediados de los ‘70, y
desde entonces se ha convertido en uno de los sistemas más utilizados a pesar de su,
ocasionalmente, confusa interfaz con el usuario y el problema de su estandarización.
¿Cuál es la verdadera razón de la popularidad de UNIX? Muchos hackers
consideran que UNIX es el auténtico y único sistema operativo. El desarrollo de Linux
parte de un grupo en expansión de hackers de UNIX que quisieron hacer su sistema
con sus propias manos.
Existen numerosas versiones de UNIX para muchos sistemas, desde
ordenadores personales hasta supercomputadores como el Cray Y-MP. La mayoría de
las versiones de UNIX para ordenadores personales son muy caras. Cuando se
escribía este libro, una copia para una máquina 386 del UNIX System V de AT&T
costaba unos 1500 dólares estadounidenses.
Linux es una versión de UNIX de libre distribución, inicialmente desarrollada por
Linus Torvalds en la Universidad de Helsinki, en Finlandia. Fue desarrollado con la
ayuda de muchos programadores y expertos de UNIX a lo largo y ancho del mundo,
gracias a la presencia de Internet. Cualquier habitante del planeta puede acceder a
Linux y desarrollar nuevos módulos o cambiarlo a su gusto.
El núcleo de Linux no utiliza ninguna línea del código de AT&T o de cualquier otra
fuente de propiedad comercial, y buena parte del software para Linux se desarrolla
bajo las reglas del proyecto de GNU de la Free Software Foundation, Cambridge,
Massachusetts.
Inicialmente, sólo fue un proyecto de Linus Torvalds. Se inspiraba en Minix, un
pequeño UNIX desarrollado por Andy Tanenbaum, y las primeras discusiones sobre
Linux surgieron en el grupo de News comp.os.minix. Estas discusiones giraban en
torno al desarrollo de un pequeño sistema UNIX de carácter académico dirigido a
aquellos usuarios de Minix que querían algo más.
El desarrollo inicial de Linux ya aprovechaba las características de conmutación
de tareas en modo protegido del 386, y se escribió todo en ensamblador. Linus dice,
"Comencé a utilizar el C tras escribir algunos drivers, y ciertamente se aceleró el
desarrollo. En este punto sentí que mi idea de hacer un Minix mejor que Minix se hacía
más seria. Esperaba que algún día pudiese recompilar el gcc bajo Linux... Dos meses
de trabajo, hasta que tuve un driver de discos (con numerosos bugs, pero que parecía
funcionar en mi PC) y un pequeño sistema de ficheros. Aquí tenía ya la versión 0.01 (al
final de Agosto de 1991) no era muy agradable de usar sin el driver de disquetes, y no
hacía gran cosa. No pensé que alguien compilaría esa versión."
No se anunció nada sobre esa versión, puesto que las fuentes del 0.01 jamás
fueron ejecutables: contenían solo rudimentos de lo que sería el núcleo, y se asumía
que se tenía acceso a un Minix para poderlo compilar y jugar con él.
El 5 de Octubre de 1991, Linus anunció la primera versión "oficial" de Linux, la
0.02. Ya podía ejecutar bash (el shell de GNU) y gcc (el compilador de C de GNU), pero
no hacía mucho más. La intención era ser un juguete para hackers. No había nada
sobre soporte a usuarios, distribuciones, documentación ni nada parecido. Hoy, la
comunidad de Linux aún trata estos asuntos de forma secundaria. Lo primero sigue
siendo el desarrollo del kernel.
Linus escribía en comp.os.minix, "¿Suspiráis al recordar aquellos días de Minix-
1.1, cuando los hombres eran hombres y escribían sus propios drivers? ¿Os sentís sin
ningún proyecto interesante y os gustaría tener un verdadero Sistema operativo que
pudieras modificar a placer? ¿Os resulta frustrante el tener solo a Minix? Entonces,
este artículo es para vosotros".
"Como dije hace un mes, estoy trabajando en una versión gratuita de algo
parecido a Minix para ordenadores At-386. He alcanzado la etapa en la que puede ser
utilizable y voy a poner las fuentes para su distribución. Es solo la versión 0.02, pero he
conseguido ejecutar en él: bash, gcc, gnu-make, gnu-sed, compress, etc.".
Tras la versión 0.03, Linus saltó a la versión 0.10 al tiempo que más gente
empezaba a participar en su desarrollo. Tras numerosas revisiones, se alcanzó la
versión 0.95, reflejando la esperanza de tener lista muy pronto una versión "oficial".
(Generalmente, la versión 1.0 de los programas se corresponden con la primera
teóricamente completa y sin errores). Esto sucedía en Marzo de 1992. Año y medio
después, en Diciembre del 93, el núcleo estaba en la revisión 0.99.pl14, en una
aproximación asintótica al 1.0. Actualmente, el núcleo se encuentra en la versión 1.1
parche 52, y se acerca la 1.2.2.
Hoy Linux es ya un clónico de UNIX completo, capaz de ejecutar X Windows,
TCP/IP, Emacs, UUCP y software de correo y News. Mucho software de libre
distribución ha sido ya portado a Linux, y están empezando a aparecer aplicaciones
comerciales. El hardware soportado es mucho mayor que en las primeras versiones
del núcleo. Mucha gente ha ejecutado tests de rendimiento en sus sistemas Linux 486 y
se han encontrado que son comparables a las estaciones de trabajo de gama media
de Sun Microsystems y Digital.
¿Quién iba a imaginar que este "pequeño" clónico de UNIX iba a convertirse en
un estándar mundial para los ordenadores personales?


Características del sistema


Linux implementa la mayor parte de las características que se encuentran en otras
implementaciones de UNIX, más algunas otras que no son habituales. En esta sección
nos daremos una vuelta por todo ello.
Linux es un sistema operativo completo con multitarea y multiusuario (como
cualquier otra versión de UNIX). Esto significa que pueden trabajar varios usuarios
simultáneamente en él, y que cada uno de ellos puede tener varios programas en
ejecución.
El sistema Linux es compatible con ciertos estándares de UNIX a nivel de código
fuente, incluyendo el IEEE POSIX.1, System V y BSD. Fue desarrollado buscando la
portabilidad de los fuentes: encontrará que casi todo el software gratuito desarrollado
para UNIX se compila en Linux sin problemas. Y todo lo que se hace para Linux (código
del núcleo, drivers, librerías y programas de usuario) es de libre distribución.
En Linux también se implementa el control de trabajos POSIX (que se usa en los
shells csh y bash), las pseudoterminales (dispositivos pty) , y teclados nacionales
mediante administradores de teclado cargables dinámicamente. Además, soporta
consolas virtuales, lo que permite tener más de una sesión abierta en la consola de
texto y conmutar entre ellas fácilmente. A los usuarios del programa "screen" les
resultará familiar esto.
El núcleo es capaz de emular por su cuenta las instrucciones del coprocesador
387, con lo que en cualquier 386 con coprocesador o sin él se podrán ejecutar
aplicaciones que lo requieran.
Linux soporta diversos sistemas de ficheros para guardar los datos. Algunos de
ellos, como el ext2fs, han sido desarrollados específicamente para Linux. Otros
sistemas de ficheros, como el Minix-1 o el de Xenix también están soportados. Y con el
de MS-DOS se podrán acceder desde Linux a los disquetes y particiones en discos
duros formateados con MS-DOS. Además, también soporta el ISO-9660, que es el
estándar en el formato de los CD-ROMs.
Linux implementa todo lo necesario para trabajar en red con TCP/IP. Desde
administradores para las tarjetas de red más populares hasta SLIP/PPP, que permiten
acceder a una red TCP/IP por el puerto serie. También se implementan PLIP (para
comunicarse por el puerto de la impresora) y NFS (para acceso remoto a ficheros). Y
también se han portado los clientes de TCP/IP, como FTP, telnet, NNTP y SMTP.
El núcleo de Linux ha sido desarrollado para utilizar las características del modo
protegido de los microprocesadores 80386 y 80486. En concreto, hace uso de la
gestión de memoria avanzada del modo protegido y otras características avanzadas.
Cualquiera que conozca la programación del 386 en el modo protegido sabrá que este
modo fue diseñado para su uso en UNIX (o tal vez Multics). Linux hace uso de esta
funcionalidad precisamente.
El núcleo soporta ejecutables con paginación por demanda. Esto significa que
sólo los segmentos del programa que se necesitan se cargan en memoria desde el
disco. Las páginas de los ejecutables son compartidas mediante la técnica copy-on-
write, contribuyendo todo ello a reducir la cantidad de memoria requerida para las
aplicaciones.
Con el fin de incrementar la memoria disponible, Linux implementa la paginación
con el disco: puede tener hasta 256 megabytes de espacio de intercambio o "swap" en
el disco duro. Cuando el sistema necesi ta más memoria, expulsará páginas inactivas
al disco, permitiendo la ejecución de programas más grandes o aumentando el número
de usuarios que puede atender a la vez. Sin embargo, el espacio de intercambio no
puede suplir totalmente a la memoria RAM, ya que el primero es mucho más lento que
ésta.
La memoria dedicada a los programas y a la caché de disco está unificada. Por
ello, si en cierto momento hay mucha memoria libre, el tamaño de la caché de disco
aumentará acelerando así los accesos.
Los ejecutables hacen uso de las librerías de enlace dinámico. Esto significa que
los ejecutables comparten el código común de las librerías en un único fichero, como
sucede en SunOS. Así, los ejecutables serán más cortos a la hora de guardarlos en el
disco, incluyendo aquellos que hagan uso de muchas funciones de librería. También
pueden enlazarse estáticamente cuando se deseen ejecutables que no requieran la
presencia de las librerías dinámicas en el sistema. El enlace dinámico se hace en
tiempo de ejecución, con lo que el programador puede cambiar las librerías sin
necesidad de recompilación de los ejecutables.

jueves, 4 de septiembre de 2008

REDES Y COMUNICACION

A un clik de matenimiento


Cuando hablo de Mantenimiento a una Computadora, me refiero a las medidas y acciones que se toman para mantener a una PC funcionando adecuadamente, sin que se cuelgue o emita mensajes de errores con frecuencia.
Existen dos tipos de mantenimiento
que se le puede aplicar a una computadora:
Mantenimiento Preventivo: Aquel que se le aplica a una PC para evitar futuros errores y problemas técnicos, como por ejemplo: Buscar y eliminar
virus del disco duro, buscar y corregir errores lógicos y físico en el disco, defragmentar el disco, limpiar la placa base y demás tarjetas para evitar fallas técnicas por el polvo, etc.
Mantenimiento Correctivo: Aquel que esta orientado al diagnostico y reparación del equipo cuando se presenta un problema técnico.
Cuando le damos mantenimientos a un equipo lo primero que debemos determinar es el tiempo de uso y retraso tecnológico de la computadora, Luego, evaluar las condiciones físicas en las que se encuentra la computadora. Una
computadora antigua o moderna no puede estar instalada en sitios muy cerrados o tener libros y materiales encima y no le permita disipar el calor que se genera en la placa base.