% Linux Installation and Getting Started    -*- TeX -*-
% features.tex
% Copyright (c) 1992-1994 by Matt Welsh <mdw@sunsite.unc.edu>
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by the 
% copyright for the entire document, in the file "copyright.tex".
%
% Traduccion realizada por Juan Jose Amor. Envie sus comentarios a:
%            Juan Jose Amor, 2:341/12.19 (FidoNet)
%            jjamor@gedeon.ls.fi.upm.es (InterNet)
% $Log: system.tex,v $
% Revision 0.5.0.1  1996/02/10 23:45:11  rcamus
% Primera beta publica
%
%


\section{Caracter\'{\i}sticas del sistema}

Linux implementa la mayor parte de las caracter\'{\i}sticas que se
encuentran en otras implementaciones de UNIX, m\'as algunas otras que no
son habituales. En esta secci\'on nos daremos una vuelta por todo ello.
\index{Linux!Caracter\'{\i}sticas del sistema|(}
\index{Caracter\'{\i}sticas!del sistema|(}
\index{Caracter\'{\i}sticas!kernel|(}
\index{kernel!Caracter\'{\i}sticas|(}

Linux es un sistema operativo completo con multitarea y multiusuario (como
cualquier otra versi\'on de UNIX). Esto significa que pueden trabajar varios
usuarios simult\'aneamente en \'el, y que cada uno de ellos puede tener
varios programas en ejecuci\'on.
\index{multitasking}
\index{multitarea}

El sistema Linux es compatible con ciertos est\'andares de UNIX a nivel
de c\'odigo fuente, incluyendo el IEEE POSIX.1, System V y BSD.
\index{POSIX.1}
\index{est\'andares}
Fue desarrollado buscando la portabilidad de los fuentes: encontrar\'a
que casi todo el software gratuito desarrollado para UNIX se compila
en Linux sin problemas. Y todo lo que se hace para Linux (c\'odigo del
n\'ucleo, drivers, librer\'{\i}as y programas de usuario) es de libre
distribuci\'on.

En Linux tambi\'en se implementa el control de trabajos POSIX (que se
usa en los {\it shells} {\tt csh} y {\tt bash}), las pseudoterminales
\index{job control}
(dispositivos {\tt pty}), y teclados nacionales mediante manejadores
de teclado cargables din\'amicamente. Adem\'as, soporta {\bf consolas virtuales},
\index{consolas virtuales}
lo que permite tener m\'as de una sesi\'on abierta en la consola de texto
y conmutar entre ellas f\'acilmente. A los usuarios del programa ``{\tt
screen}'' les resultar\'a familiar esto.

El n\'ucleo es capaz de emular por su cuenta las instrucciones del
coprocesador 387, con lo que en cualquier 386 con coprocesador o sin
\'el se podr\'an ejecutar aplicaciones que lo requieran.
\index{floating-point math}
\index{coprocesador matem\'atico}

Linux soporta diversos sistemas de ficheros para guardar los
datos. Algunos de ellos, como el {\em ext2fs\/}, han sido
desarrollados espec\'{\i}ficamente para Linux.
\index{filesystems}
\index{Sistemas de archivos}
Otros sistemas de ficheros, como el Minix-1 o el de Xenix tambi\'en
est\'an soportados. Y con el de MS-DOS se podr\'an acceder desde Linux a
los disquetes y particiones en discos duros formateados con
MS-DOS. Adem\'as, tambi\'en soporta el ISO-9660, que es el est\'andar
seguido en el formato de los CD-ROMs. Hablaremos m\'as sobre los
sistemas de ficheros en los cap\'{\i}tulos~\ref{chap-install-num}
y~\ref{chap-sysadm-num}. 

Linux implementa todo lo necesario para trabajar en red con
TCP/IP. Desde manejadores para las tarjetas de red m\'as populares hasta
SLIP/PPP, que permiten acceder a una red TCP/IP por el puerto
serie. Tambi\'en se implementan PLIP (para comunicarse por el puerto de
la impresora) y NFS (para acceso remoto a ficheros). Y tambi\'en se han
portado los clientes de TCP/IP, como FTP, {\tt telnet}, NNTP y
SMTP. Hablaremos m\'as acerca de esto en el cap\'{\i}tulo~\ref{chap-advanced}.
\index{networking}
\index{redes}
\index{TCP/IP}
\index{SLIP}
\index{PPP}

El n\'ucleo de Linux ha sido desarrollado para utilizar las
caracter\'{\i}sticas del modo protegido de los microprocesadores 80386 y
80486.
\index{modo protegido}
En concreto, hace uso de la gesti\'on de memoria avanzada del modo
protegido y otras caracter\'{\i}sticas avanzadas. Cualquiera que conozca la
programaci\'on del 386 en el modo protegido sabr\'a que este modo fue
dise\~nado para su uso en UNIX (o tal vez Multics). Linux hace uso de
esta funcionalidad precisamente.

El n\'ucleo soporta ejecutables con paginaci\'on por demanda. Esto
significa que s\'olo los segmentos del programa que se necesitan se
cargan en memoria desde el disco. Las p\'aginas de los ejecutables son
compartidas mediante la t\'ecnica {\it copy-on-write}, contribuyendo
todo ello a reducir la cantidad de memoria requerida para las aplicaciones.
\index{ejecutables}

Con el fin de incrementar la memoria disponible, Linux implementa la
paginaci\'on con el disco: puede tener hasta 256 megabytes de espacio de
intercambio o ``swap''\footnote{El nombre swap es inadecuado: no se
intercambian procesos completos, sino p\'aginas individuales. Por
supuesto, en muchos casos se expulsan al disco procesos completos,
pero no siempre ocurre} en el disco duro. Cuando el sistema necesita
m\'as memoria, expulsar\'a p\'aginas inactivas al disco, permitiendo la
ejecuci\'on de programas m\'as grandes o aumentando el n\'umero de usuarios
que puede atender a la vez. Sin embargo, el espacio de intercambio
\glossary{swap} no puede suplir totalmente a la memoria RAM, ya que el primero es mucho
m\'as lento que \'esta.
\index{swap space}
\index{espacio de intercambio}

La memoria dedicada a los programas y a la {\it cache} de disco est\'a
unificada. Por ello, si en cierto momento hay mucha memoria libre, el
tama\~no de la cache de disco aumentar\'a acelerando as\'{\i} los accesos.

Los ejecutables hacen uso de las librer\'{\i}as de enlace din\'amico.
\index{librar\'{\i}as!shared}
\index{librar\'{\i}as!compartidas}

Esto significa que los ejecutables comparten el c\'odigo com\'un de las
librer\'{\i}as en un \'unico fichero, como sucede en SunOS. As\'{\i}, los
ejecutables ser\'an m\'as cortos a la hora de guardarlos en el disco,
incluyendo aquellos que hagan uso de muchas funciones de
librer\'{\i}a. Tambi\'en pueden enlazarse est\'aticamente cuando se deseen
ejecutables que no requieran la presencia de las librer\'{\i}as din\'amicas
en el sistema. El enlace din\'amico se hace en tiempo de ejecuci\'on, con
lo que el programador puede cambiar las librer\'{\i}as sin necesidad de
recompilaci\'on de los ejecutables.

Para facilitar la depuraci\'on de los programas, el n\'ucleo de Linux
puede generar volcados de la imagen de memoria de los programas
(ficheros {\tt core}). Entre esto y la posibilidad de compilar
ejecutables con soporte de depuraci\'on, el programador podr\'a averiguar
la causa de los fallos de su programa.
\index{core dumps}
\index{debugging!core dumps}
\index{programaci\'on!core dumps}
\index{Linux!Caracter\'{\i}sticas del sistema|)}
\index{Caracter\'{\i}sticas!del sistema|)}
\index{Caracter\'{\i}sticas!kernel|)}
\index{kernel!Caracter\'{\i}sticas|)}

