Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Sistema Operativo Unix (página 2)



Partes: 1, 2

Palabras clave: sistema
operativo, Unix, Linux,
"Unix-like", computación, software, kernel o
núcleo, línea de comandos,
"shell", micronucleo, software
libre, software privativo, sistema operativo
tipo Unix, "prompt", familia Unix.

CAPÍTULO I

CONCEPTOS BASICOS DE
INFORMÁTICA

El objetivo de
esta primera parte de la guía es el de familiarizar al
lector principiante en la computación con algunos de los
conceptos y terminologías básicas que se usaran a
lo largo de esta guía. Todo lo que se expone a
continuación son breves conceptos, así como alguna
otra información de importancia (autor,
creación, función,
etc.) que se considere de utilidad para
facilitar la comprensión del Capítulo II de la
presente guía del Sistema operativo Unix. Los conceptos a
tratar son:

Mainframe: o computadora
central,  es una computadora grande, potente y costosa usada
principalmente por una gran compañía para el
procesamiento de una gran cantidad de datos; por
ejemplo, para el procesamiento de transacciones bancarias.

• Kernel: es uno de los nombres con los que se le
conoce al núcleo del sistema operativo y la parte
fundamental del mismo. Es el software del sistema responsable de
facilitar a los distintos programas acceso
seguro al
hardware de
la
computadora, o, en forma más básica, es el
encargado de gestionar recursos, a
través de servicios de
llamada al sistema. Se encarga también de planificar la
ejecución de los procesos,
supervisar la transmisión de datos entre las aplicaciones
y los dispositivos
periféricos, administrar la memoria del
computador,
hacer el renderizado de texto en la
pantalla, entre otras cosas.

• Núcleo monolítico: es un tipo de
núcleo o kernel de un sistema operativo. Está
programado de forma no modular, y tiene un rendimiento mayor que
un micronúcleo. Un sistema operativo con núcleo
monolítico concentra todas las funcionalidades posibles
(planificación, sistema de archivos,
redes,
controladores de dispositivos, gestión
de memoria, etc) dentro de un gran programa. El
mismo puede tener un tamaño considerable, y deberá
ser recompilado por completo al añadir una nueva
funcionalidad. Todos los componentes funcionales del
núcleo tienen acceso a todas sus estructuras de
datos internas y a sus rutinas. Un error en una rutina puede
propagarse a todo el núcleo. Todos sus componentes se
encuentran integrados en un único programa que se ejecuta
en un único espacio de direcciones. En este tipo de
sistemas, todas
las funciones que
ofrece el sistema operativo se ejecutan en modo supervisor.

Estos sistemas operativos han surgido, normalmente, de
sistemas
operativos sencillos y pequeños a los que se les ha
ido añadiendo un número mayor de funcionalidades.
Esto les ha hecho evolucionar y crecer hasta convertirlos en
programas grandes y complejos formados por muchas funciones
situadas todas ellas en un mismo nivel

• Micronúcleo: es un tipo de núcleo
de un sistema operativo que provee un conjunto de primitivas o
llamadas al sistema mínimas, para implementar servicios
básicos como espacios de direcciones, comunicación entre procesos y
planificación básica. Todos los otros servicios
(gestión de memoria, sistema de archivos, operaciones de
E/S, etc.), que en general son provistos por el núcleo, se
ejecutan como procesos servidores en
espacio de usuario.

Las principales ventajas de su utilización son la
reducción de la complejidad, la descentralización de los fallos (un fallo
en una parte del sistema no lo colapsaría por completo) y
la facilitación para crear y depurar controladores de
dispositivos. Por otro lado, sus principales dificultades son la
complejidad en la sincronización de todos los
módulos que componen el micronúcleo y su acceso a
la memoria, la
anulación de las ventajas de "Zero Copy", la integración con las aplicaciones, mayor
complejidad en el código,
menor rendimiento o limitaciones en diversas funciones.

• Software de
aplicación:
es aquel que permite a los usuarios
llevar a cabo una o varias tareas específicas, en
cualquier campo de actividad susceptible de ser automatizado o
asistido, con especial énfasis en los negocios.
Entre este tipo de software están aplicaciones de control y
automatización industrial, aplicaciones
ofimáticas (procesador de
textos, hojas de
cálculo, bases de datos,
etc.), software educativo, software medico, entre otros.

Protocolo
TCP/IP:
el
protocolo IP ("Internet Protocol") es una
norma o protocolo no orientado a conexión usado tanto por
el origen como por el destino para la
comunicación de datos a través de una red de paquetes
conmutados. Los datos de una red basada en IP son
enviados en bloques conocidos como "paquetes" o datagramas. El IP
provee un servicio de
datagramas no fiable, ya que el mismo no provee ningún
mecanismo para determinar si un paquete ha alcanzado o no su
destino y lo único que proporciona es seguridad
mediante "checksums" o sumas de comprobación de sus
cabeceras y no de los datos transmitidos. Si se necesita
fiabilidad, esta es proporcionada por los protocolos de la
capa de transporte TCP
("Transmission Control Protocol"). Este protocolo garantiza que
los datos serán entregados en su destino sin errores y en
el mismo orden en que se transmitieron. También
proporciona un mecanismo para distinguir distintas aplicaciones
dentro de una misma máquina, a través del concepto de
puerto.

Sistema operativo: es un software de sistema, es
decir, un conjunto de programas de computadora destinado a
permitir una administración eficaz de sus recursos.
Comienza a trabajar cuando se enciende el computador, y gestiona
el hardware de la máquina desde los niveles más
básicos, permitiendo también la interacción con el usuario.

Lenguaje de
programación C:
es un lenguaje de
programación relativamente minimalista. Está
orientado a la implementación de sistemas
operativos, concretamente Unix. C es apreciado por la
eficiencia del
código que produce y es el lenguaje de
programación más popular para crear software de
sistemas, aunque también se utiliza para crear
aplicaciones. Uno de los objetivos de
diseño
de este lenguaje fue que sólo fueran necesarias unas pocas
instrucciones en "lenguaje máquina" para traducir cada
elemento del lenguaje, sin que hiciera falta un soporte intenso
en tiempo de
ejecución. Es muy posible escribir C a bajo nivel de
abstracción; de hecho, C se usó como intermediario
entre diferentes lenguajes.

• Lenguaje
ensamblador:
el lenguaje ensamblador es
un tipo de lenguaje de bajo nivel utilizado para escribir
programas informáticos, y constituye la
representación más directa del "código
máquina" específico para cada arquitectura de
computadoras
legible por un programador. Fue usado ampliamente en el pasado
para el desarrollo de
software, pero actualmente sólo se utiliza en contadas
ocasiones, especialmente cuando se requiere la
manipulación directa del hardware o se pretenden
rendimientos inusuales de los equipos.

• Ficheros y/o sistemas de ficheros: un fichero es
una abstracción muy importante en programación. Los
ficheros sirven para almacenar datos de forma permanente y
ofrecen un pequeño conjunto de primitivas muy potentes
(abrir, leer, avanzar puntero, cerrar, etc.). Los ficheros se
organizan normalmente en estructuras de árbol, donde los
nodos intermedios son directorios capaces de agrupar otros
ficheros. El sistema de ficheros es la forma en que el sistema
operativo organiza, gestiona y mantiene la jerarquía de
ficheros en los dispositivos de almacenamiento,
normalmente discos duros.
Cada sistema operativo soporta diferentes sistemas de
ficheros.

• Multitarea: es una característica de un
sistema operativo moderno. Permite que varios procesos sean
ejecutados al mismo tiempo compartiendo uno o más procesadores.

• Multiusuario: se refiere a un concepto de
sistemas operativos, pero en ocasiones también puede
aplicarse a programas de computadora de otro tipo. En general se
le llama multiusuario a la característica de un sistema
operativo o programa que permite proveer servicio y procesamiento
a múltiples usuarios simultáneamente (tanto en
paralelismo real como simulado).

• Linux: también conocido como GNU/Linux,
es un sistema operativo tipo Unix que se distribuye bajo la
Licencia Pública General de GNU (GNU GPL), es decir, que
es software
libre. Su nombre proviene del Núcleo de Linux. Las
variantes de estos sistemas se denominan "distribuciones" y su
objetivo es ofrecer una edición
que cumpla con las necesidades de determinado grupo de
usuarios. Algunas son gratuitas y otras de pago, algunas insertan
software no libre y otras contienen solo software libre.

Proyecto GNU:
se refiere a un proyecto iniciado por Richard Stallman con el
objetivo de crear un sistema operativo completamente libre. GNU
es un acrónimo recursivo que significa "GNU No es Unix",
pero si es compatible con el mismo. Esto implica que GNU
esté compuesto de pequeñas piezas individuales de
software, muchas de las cuales ya estaban disponibles, como el
sistema de edición de textos TeX y el sistema
gráfico X Windows, que
pudieron ser adaptados y reutilizados; otros en cambio
tuvieron que ser reescritos. El software GNU es libre para que
todos los usuarios puedan "ejecutarlo, copiarlo, modificarlo y
distribuirlo"

Dispositivos periféricos: se denominan
periféricos tanto a las unidades o dispositivos a
través de los cuales la computadora se comunica con el
mundo exterior, como a los sistemas que almacenan o archivan la
información, sirviendo de memoria auxiliar de la memoria
principal, es decir; son al conjunto de dispositivos que, sin
pertenecer al núcleo fundamental de la computadora,
formado por la CPU y la
memoria central, permitan realizar operaciones de entrada/salida
(E/S) complementarias al proceso de
datos que realiza la CPU. Estas tres unidades básicas en
un computador, CPU, memoria central y el subsistema de E/S,
están comunicadas entre sí por tres buses o canales
de comunicación: el bus de direcciones, para
seleccionar la dirección del dato o del periférico
al que se quiere acceder, el bus de control, básicamente
para seleccionar la operación a realizar sobre el dato
(principalmente lectura,
escritura o
modificación) y el bus de datos, por donde circulan los
datos. Existen 3 tipos de dispositivos periféricos: de
entrada, salida y de almacenamiento

• Software: es toda la información
procesada por los sistemas informáticos: programas y
datos, abarca todo lo intangible, todo lo "no físico" del
computador. Es el conjunto de los programas de cómputo,
procedimientos, reglas, documentación y datos asociados que forman
parte de las operaciones de un sistema de computación.

• Hardware: es la parte física de un
computador y más ampliamente de cualquier dispositivo
electrónico

• Bytes: se usa comúnmente como unidad
básica de almacenamiento de información en
combinación con los prefijos de cantidad. Es aceptado como
equivalente a octeto, es decir a ocho bits, para fines correctos,
un byte debe ser considerado como una secuencia de bits
contiguos, cuyo tamaño depende del código de
información o código de caracteres en que sea
definido. La unidad byte se representa con el símbolo
B.

Software libre: se refiere a la libertad de
los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar
y mejorar el software; de modo más preciso, se refiere a
cuatro libertades de los usuarios del software: la libertad de
usar el programa, con cualquier propósito; de estudiar el
funcionamiento del programa, y adaptarlo a las necesidades; de
distribuir copias, con lo que puede ayudar a otros; de mejorar el
programa y hacer públicas las mejoras, de modo que toda la
comunidad se
beneficie (para la segunda y última libertad mencionadas,
el acceso al código fuente es un requisito
previo)[]

• Software no libre: El software no libre
(también llamado software propietario, software privativo,
software privado, software con propietario o software de propiedad) se
refiere a cualquier programa informático en el que los
usuarios tienen limitadas las posibilidades de usarlo,
modificarlo o redistribuirlo (con o sin modificaciones), o cuyo
código fuente no está disponible o el acceso a
éste se encuentra restringido.

• Prompt: es el  carácter o conjunto de caracteres que se
muestran en una línea de comandos para indicar que
está a la espera de órdenes. éste puede
variar dependiendo del intérprete de comandos y suele ser
configurable.

CAPÍTULO II

SISTEMA OPERATIVO
UNIX

2.1   Historia del Sistema Operativo
Unix

Los orígenes de Unix pueden rastrearse a finales de
1960, cuando el Instituto Tecnológico de Massachusetts,
los Laboratorios Bell de AT&T y General Electric trabajaban
en un sistema operativo experimental llamado Multics
(Multiplexed Information and Computing
Service),[] desarrollado para ejecutarse en
una computadora central (mainframe) modelo GE-645.
El objetivo del proyecto era desarrollar un sistema operativo
interactivo que contase con muchas innovaciones, entre ellas
mejoras en las políticas
de seguridad. El proyecto consiguió dar a luz versiones
para producción, pero las primeras versiones
contaban con un pobre rendimiento. Los laboratorios Bell de
AT&T decidieron desvincularse y dedicar sus recursos a otros
proyectos.

Uno de los programadores del equipo de los laboratorios Bell,
Ken Thompson, siguió trabajando para la computadora
GE-635[,] y escribió un
juego llamado
"Space Travel"[][](Viaje espacial). Sin embargo,
descubrió que el juego era lento en la máquina de
General Electric y resultaba realmente
caro, algo así como 75 dólares de EE.UU. por cada
partida. De este modo, Thompson con ayuda de Dennis Ritchie; un
físico estadounidense que colaboró en el desarrollo
del sistema operativo Multics en los Laboratorios Bell y
creó el lenguaje de
programación C; escribió nuevamente el programa en
lenguaje ensamblador, para que se ejecutase en una computadora
DEC PDP-7. Esta experiencia, junto al trabajo que
desarrolló para el proyecto Multics, condujo a Thompson a
iniciar la creación de un nuevo sistema operativo para la
DEC PDP-7[.] A continuación se puede
apreciar una antigua fotografía
de los creadores originales del núcleo Unix, los
programadores Ken Thompson y Dennis Ritchie:


Image:Ken n dennis.jpg

Ken Thompson (izquierda) y Dennis Ritchie
(derecha), creadores de UNIX

Thompson y Ritchie lideraron un grupo de programadores, entre
ellos a Rudd Canaday, en los laboratorios Bell, para desarrollar
tanto el sistema de ficheros como el sistema operativo multitarea
en sí. A lo anterior, agregaron un intérprete de
órdenes (o intérprete de comandos) y un
pequeño conjunto de programas. El proyecto fue bautizado
UNICS, como acrónimo de "Uniplexed
Information and Computing System", pues
sólo prestaba servicios a dos usuarios. La autoría
de esta sigla se le atribuye a Brian Kernighan, ya que era un
"hack" de Multics. Dada la popularidad que tuvo un juego de
palabras que consideraba a UNICS un sistema MULTICS castrado, se
cambió el nombre a UNIX, dando origen al legado que llego
hasta los días actuales

Hasta ese instante, no había existido apoyo
económico por parte de los laboratorios Bell, pero eso
cambió cuando el Grupo de Investigación en Ciencias de la
Computación decidió utilizar UNIX en una
máquina superior a la PDP-7. Thompson y Ritchie lograron
cumplir con la solicitud de agregar herramientas
que permitieran el procesamiento de textos a UNIX en una
máquina PDP-11/20, y como consecuencia de ello
consiguieron el apoyo económico de los laboratorios Bell.
Fue así como por vez primera, en 1970, se habla
oficialmente del sistema operativo UNIX[] ejecutado en una PDP-11/20. Se
incluía en él un programa para dar formato a textos
(llamado "runoff") y un editor de texto. Tanto el sistema
operativo como los programas fueron escritos en el lenguaje
ensamblador de la PDP-11/20.

Este "sistema de procesamiento de texto" inicial, compuesto
tanto por el sistema operativo como de "runoff" y el editor de
texto, fue utilizado en los laboratorios Bell para procesar las
solicitudes de patentes que ellos recibían. Pronto,
"runoff" evolucionó hasta convertirse en "troff", el
primer programa de edición electrónica que permitía realizar
composición tipográfica. El 3 de noviembre de 1971
Thompson y Ritchie publicaron un manual de
programación de UNIX. En 1972 se tomó la
decisión de escribir nuevamente UNIX, pero esta vez en el
lenguaje de programación C.[] Este cambio significaba que UNIX
podría ser fácilmente modificado para funcionar en
otras computadoras y así otras variaciones podían
ser desarrolladas por otros programadores. Ahora, el
código era más conciso y compacto, lo que se
tradujo en un aumento en la velocidad de
desarrollo de UNIX. AT&T puso a UNIX a disposición de
universidades y compañías, también al
gobierno de los
Estados
Unidos, a través de licencias.[] Una de estas licencias fue otorgada
al Departamento de Computación de la Universidad de
California, con sede en Berkeley.[] En 1975 esta institución
desarrolló y publicó su propio sucedáneo de
UNIX, conocida como "Berkeley Software Distribution" (BSD), que
se convirtió en una fuerte competencia para
la familia
UNIX de AT&T.

Mientras tanto, AT&T creó una división
comercial denominada "Unix Systems Laboratories" para la
explotación comercial del sistema operativo. El desarrollo
prosiguió, con la entrega de las versiones 4, 5 y
6[] en el transcurso de 1975. Estas versiones
incluían los "pipes" o "tuberías", lo que
permitió dar al desarrollo una orientación modular
respecto a la base del código, consiguiendo aumentar
aún más la velocidad de desarrollo. Ya en 1978,
cerca de 600 o más máquinas
estaban ejecutándose con alguna de las distintas
encarnaciones de UNIX.

La versión 7,[] la última versión del
UNIX original con amplia distribución, entró en
circulación en 1979. Las versiones 8, 9 y
10[] se desarrollaron
durante la década de 1980, pero su circulación se
limitó a unas cuantas universidades, a pesar de que se
publicaron los informes que
describían el nuevo trabajo. Los resultados de esta
investigación sirvieron de base para la creación de
Plan 9, un
nuevo sistema operativo portable y distribuido, diseñado
para ser el sucesor de UNIX en investigación por los
Laboratorios Bell.

AT&T entonces inició el desarrollo de UNIX System
III, basado en la versión 7, como una variante de tinte
comercial y así vendía el producto de
manera directa. La primera versión se lanzó en
1981.[] A pesar de lo
anterior, la empresa
subsidiaria Western Electric seguía vendiendo versiones
antiguas de Unix basadas en las distintas versiones hasta la
séptima. Para finalizar con la confusión con todas
las versiones divergentes, AT&T decidió combinar
varias versiones desarrolladas en distintas universidades y
empresas,
dando origen en 1983 al Unix System V Release.[] Esta versión presentó
características tales como el editor "Vi" y la biblioteca
"curses", desarrolladas por Berkeley Software Distribution en la
Universidad de California. También contaba con
compatibilidad con las máquinas VAX de la
compañía DEC.

A continuación se puede observar una imagen del
aspecto de Unix a los finales de la década de 1980
utilizando X Windows System:


Imagen:X-Window-System.png

Unix a finales de 1980 utilizando X Windows
System

En 1993, la compañía Novell
adquirió la división Unix Systems Laboratories de
AT&T junto con su propiedad
intelectual.[]
Esto ocurrió en un momento delicado en el que "Unix
Systems Laboratories" disputaba una demanda en los
tribunales contra BSD por infracción de los derechos de copyright,
revelación de secretos y violación de marca de mercado. BSD no
solamente ganó el juicio sino que cambiaron tornas
descubriendo que grandes porciones del código de BSD
habían sido copiadas ilegalmente en UNIX System V. En
realidad, la propiedad intelectual de Novell (recién
adquirida de "Unix Systems Laboratories") se reducía a
unos pocos ficheros fuente. La correspondiente contra-demanda
acabó en un acuerdo extrajudicial cuyos términos
permanecen bajo secreto a petición de Novell.

Aproximadamente por esa misma fecha, un estudiante de ciencias
de la computación llamado Linus Torvalds desarrolló
un núcleo para computadoras con arquitectura de procesador Intel
x86 que mimetizaba muchas de las funcionalidades de UNIX y lo
lanzó en forma de código abierto en 1991, bajo el
nombre de Linux. En 1992, el núcleo Linux fue combinado
con los programas desarrollados por el Proyecto GNU, dando como
resultado el Sistema Operativo GNU/Linux. En 1995, Novell
vendió su división UNIX
comercial[] (es
decir, la antigua "Unix Systems Laboratories") a Santa Cruz
Operation (SCO) reservándose, aparentemente, algunos
derechos de propiedad intelectual sobre el
software.[] SCO
continúa la comercialización de System V en su producto
UnixWare, que durante cierto tiempo pasó a denominarse
OpenUnix, aunque ha retomado de nuevo el nombre de UnixWare. A
pesar de los problemas de
la empresa debido a
diversos pleitos legales, estos productos
siguen siendo usando fuertemente a nivel mundial

A continuación se puede apreciar un diagrama que
muestra como
ha sido la evolución de Unix a lo largo de los
años. A pesar de que el diagrama esta en ingles, se puede
apreciar con facilidad los distintos caminos que ha tomado el
desarrollo de este núcleo, ya sea de libre acceso o de uso
privativo, en distintos sistemas operativos desde la fecha de
creación de Unix hasta el 2008:


Image:Unix history-simple.png

Diagrama de evolución del sistema
operativo UNIX

UNIX en la
actualidad

A pesar de que muchas de las funcionalidades de Unix son
imitadas hoy en día por una gran cantidad de sistemas
operativos, entre ellos las distribuciones de GNU/Linux. Se
podría decir que las versiones más "puras" de este
sistema operativo son las de UnixWare y SCO Open Server. Estas
versiones de sistemas operativos no libres para PC son
actualmente propiedad de SCO Group. Por lo que se conoce, en
enero de 2003, SCO contrató a un abogado, anunciando que
investigarían infracciones a su derecho de
autor. El 7 de marzo, el jefe ejecutivo de SCO, Darl McBride,
anunció que demandarían a IBM por sus
contribuciones al código de Linux, alegando que IBM
robó código de UNIX y se lo otorgó a los
desarrolladores del núcleo de Linux.

En mayo de 2003, SCO Group dijo haber enviado cartas a 1.500 de
las mayores corporaciones del mundo, incluyendo las
compañías de Fortune 500, alegando que, de utilizar
Linux, podrían estar infringiendo sus derechos de
propiedad intelectual sobre el código original de UNIX.
Como resultado SCO ha sido demandado por difamación por
varias compañías, incluyendo IBM, la organización alemana LinuxTag, SuSE y Red
Hat. El 18 de Agosto de 2007 se conoció por fin la
sentencia de este pleito que llevaba en activo desde el
año 2003. Finalmente el juez concluyo que:

-        El acuerdo que SCO
tenía con Novell, el único derecho que otorgaba a
SCO era el de vender licencias de Unix a terceros.

-        SCO tiene que
pagar a Novell (SuSe) el 95% del importe de esas ventas, que
principalmente fueron 16 millones de USD de Microsoft y 10
millones de USD de Sun.

El 14 de septiembre de 2007, debido a los contratiempos
legales que sufrió la empresa, SCO solicitó
protección invocando los términos del
Cápitulo 11 del Código de Bancarrota de los Estados
Unidos de América. El 25 de octubre de 2007, SCO (el
ex-rey del Unix para PC) recibe una oferta de 36
millones de USD por parte de JGD Management por sus negocios y
propiedad intelectual. Dándole un parcial fin a las nuevas
versiones de Unix.

A pesar de todos estos contratiempos, las últimas
versiones de estos sistemas operativos todavía se
encuentran vigentes en algunos computadores. Por ejemplo, la
versión 7.1.4 de UnixWare es compatible con muchas de las
aplicaciones libres clásicas de Unix (Apache, Squid, entre
otras). Mientras que el SCO OpenServer 6.0.0 MP2, todavía
sigue siendo un software propietario de gran uso en el entorno
comercial e industrial a nivel mundial.

Para hacerlo breve, actualmente UNIX puede referirse a 3
cosas:

• Familia UNIX: como un grupo genérico de
sistemas operativos que comparten determinados criterios en su
diseño y por lo tanto son llamados de la familia (o tipo)
UNIX. Son más de 100 sistemas operativos que se consideran
de su familia.

Sistema operativo UNIX: como una
subfamilia de sistemas operativos que descienden de la primera
versión creada por Bell. Esto significa que comparten
códigos y propiedad intelectual.

• Marca UNIX: es decir, Unix como marca es
propiedad de "The Open Group", organización de
estandarización que permite el uso de dicha marca a
cualquier sistema operativo que cumpla con sus estándares.
Esto es independiente de si el sistema operativo en
cuestión es de la familia UNIX o descendiente del
original.

A continuación se puede ver una imagen de Solaris 10 de
Sun Microsystems, uno de los sistemas parecidos a Unix más
difundidos en el entorno empresarial en la actualidad debido a su
gran estabilidad y rendimiento:


Imagen:Solaris10-x86-240507.png

Solaris 10, Unix actual de gran uso en las
empresas

¿Qué es
Unix?

Es un sistema operativo portable, multitarea y multiusuario;
desarrollado en 1969 por un grupo de empleados de los
laboratorios Bell y AT&T, entre los que figuran Ken Thompson,
Dennis Ritchie y Douglas Mcllroy. Este sistema es uno de los
más utilizados y con más futuro debido a que son
muchos organismos oficiales y particulares los que defienden su
utilización, así como muchas firmas de
fabricación y comercialización de computadoras que
lo incorporan en sus productos. Para dar un ejemplo, la Comunidad
Económica Europea, impone el sistema operativo UNIX en
todas las aplicaciones que se desarrollan bajo sus auspicios.

Unix es un sistema operativo de tiempo compartido, controla
los recursos de una computadora y los asigna entre los usuarios.
Permite a los usuarios correr sus programas. Controla los
dispositivos periféricos conectados a la máquina.
Además es un sistema multiusuario, en el que existe la
portabilidad para la implementación de distintas
computadoras.

2.2   Filosofía de
UNIX

La filosofía de UNIX en si se refiere a una
serie de normas culturales
así como a unas aproximaciones filosóficas para
desarrollar Software basado en las experiencias de los creadores
del sistema operativo UNIX. Para dejarlo en corto, la
filosofía de UNIX toma en cuenta 3 parámetros
básicos, los cuales son los siguientes:

-         
Escribir programas que hagan una cosa y la hagan bien

-         
Escribir programas que trabajen juntos (en conjunción)

-         
Escribir programas que manejen "torrentes de texto", porque esa
es una interfaz universal.

Las ideas principales de UNIX fueron derivadas del
proyecto MULTICS del MIT y de General Electric. Estas ideas
son:

·       Todo se maneja
como cadena de bytes:
los dispositivos periféricos,
los archivos y los comandos pueden verse como secuencias de bytes
o como entes que las producen. Por ejemplo, para usar una
terminal en UNIX se hace a través de un archivo
(generalmente en el directorio /dev y con nombre ttyX).

·       Manejo de tres
descriptores estándares:
todo comando posee tres
descriptores por omisión llamados "stdin", "stdout" y
"stderr", los cuales son los lugares de donde se leen los datos
de trabajo, donde se envían los resultados y en donde se
envían los errores, respectivamente. El 'stdin' es el
teclado, el
'stdout' y el 'stderr' son la pantalla por defecto.

·       Capacidades de
"entubar" y "redireccionar":
El "stdin", "stdout" y "stderr"
pueden usarse para cambiar el lugar de donde se leen los datos,
donde se envían los resultados y donde se envían
los errores, respectivamente. A nivel de comandos, el
símbolo de "mayor que" (>) sirve para enviar los
resultados de un comando a un archivo. Por ejemplo, en UNIX el
comando "ls" lista los archivos del directorio actual (es lo
mismo que "dir" en DOS). Si en vez de ver los nombres de archivos
en la pantalla se quieren guardar en el archivo "listado", el
"redireccionamiento" es útil y el comando para hacer la
tarea anterior es "ls > listado". Si lo que se desea es enviar
a imprimir esos nombres, el "entubamiento" es útil y el
comando sería "ls | lpr", donde el símbolo "|"
("pipe") es el entubamiento y "lpr" es el comando para imprimir
en UNIX BSD.

·       Crear sistemas
grandes a partir de módulos:
cada instrucción
en UNIX está diseñada para poderse usar con "pipes"
o "redireccionamiento", de manera que se pueden crear sistemas
complejos a través del uso de comandos simples y
elegantes. Un ejemplo sencillo de esto es el siguiente.
Supóngase que se tienen cuatro comandos separados A,B,C y
D cuyas funcionalidades son:

o      A: lee matrices
revisando tipos de datos y formato.

o      B: recibe matrices, las
invierte y arroja el resultado en forma matricial.

o      C: recibe una matriz y le
pone encabezados "bonitos"

o      D: manda a la impresora una
matriz cuidando el salto de página, etc.

Como se ve, cada módulo hace una actividad
específica, si lo que se quiere es un pequeño
sistema que lea un sistema de ecuaciones y
como resultado se tenga un listado "bonito", simplemente se usa
el entubamiento para leer con el módulo A la matriz, que
su resultado lo reciba el B para obtener la solución,
luego esa solución la reciba el módulo C para que
le ponga los encabezados "bonitos" y finalmente eso lo tome el
módulo D y lo imprima, el comando completo
sería  "A | B | C | D".

A continuación se pueden ver 2 imágenes,
en donde se muestra en la primera, la lista de directorios del
sistema y en la segunda la lista de procesos que se encuentra
realizando el UNIX:

http://www.builderau.com.au/i/s/unix_backup_james_1.jpg

Lista de directorio del sistema operativo
UNIX


Image:Unix-process-list.png

Lista de procesos del sistema operativo
UNIX

Familias de
Unix

Como se puede deducir de la reseña histórica de
este sistema operativo, existen varias familias del sistema
operativo UNIX que han evolucionado de manera independiente a lo
largo de los años. Cada familia se distingue no tanto por
sus diferencias técnicas
como por sus diferencias en propiedad intelectual. Se observa que
todas las familias se han visto contaminadas, directa o
indirectamente, por otras familias. Las familias UNIX más
significativas son:

-        AT&T:
la familia que tuvo su origen en el UNIX de AT&T. Considerada
la familia UNIX "pura" y original. Sus sistemas operativos
más significativos son UNIX System III y UNIX System
V.

-        BSD:
familia originada por el licenciamiento de UNIX a Berkely. BSD
incorpora propiedad intelectual no originaria de AT&T, la
primera implementación de los protocolos TCP/IP que dieron
origen a Internet.

-        AIX: esta
familia surge por el licenciamiento de UNIX System III a IBM.

-        Xenix:
familia derivada de la adquisición de los derechos
originales de AT&T primero por parte de Microsoft y luego
esta los vendió a SCO.

-        GNU: en
1983, Richard Stallman anunció el Proyecto GNU, un
ambicioso esfuerzo para crear un sistema similar a Unix, que
pudiese ser distribuido libremente. El software desarrollado por
este proyecto, por ejemplo, GNU Emacs y GCC, también han
sido parte fundamental de otros sistemas UNIX.

-        Linux: en
1991, cuando Linus Torvalds empezó a proponer el
núcleo Linux y a reunir colaboradores, las herramientas
GNU eran la elección perfecta. Al combinarse ambos
elementos, conformaron la base del sistema operativo (basado en
POSIX) que hoy se conoce como Linux. Las distribuciones basadas
en el núcleo, el software GNU y otros agregados
entre las que se pueden mencionar a Red Hat Linux y Debian
GNU/Linux se han hecho populares tanto entre los aficionados
a la computación como en el mundo empresarial.
Obsérvese que Linux tiene un origen independiente, por lo
que se considera un "clónico" de UNIX y no un UNIX en el
sentido histórico.

A continuación, se puede apreciar un diagrama que
demuestra la colocación actual de Unix entre las distintas
familias que se han desarrollado:


Image:Unix history.svg

Diagrama de la división de familias
que usan sistemas Unix o "parecidos" a Unix

Características
generales de Unix / Ventajas

-        Es un sistema
operativo de tiempo compartido, controla los recursos de una
computadora y los asigna entre los usuarios.

-        Permite a los
usuarios correr sus programas.

-        Controla los
dispositivos de periféricos conectados a la
máquina.

-        Es un sistema
operativo multiusuario, con capacidad de simular
multiprocesamiento y procesamiento no interactivo.

-        Está
escrito en un lenguaje de alto nivel: C.

-        El sistema de
ficheros está basado en la idea de volúmenes, que
se pueden montar y desmontar para lo que se les asigna un nodo
del árbol como punto de anclaje. Un sistema físico
puede dividirse en uno o más volúmenes.

-        Una de las grandes
ideas de UNIX es la unificación y compatibilidad de todos
los procesos de entrada y salida. Para UNIX, el universo es un
sistema de ficheros. De esta forma existe compatibilidad entre
ficheros, dispositivos, procesos, "pipes" y "sockets".

-        Dispone de un
lenguaje de control programable llamado "Shell".

-        El sistema
presenta comandos de usuario (es decir, a nivel de "Shell") para
iniciar y manipular procesos concurrentes asíncronos. Un
usuario puede ejecutar varios procesos, intercambiarlos e
interconectarlos a través de "pipes" o "tuberías",
simbolizados por un carácter especial. En DOS,
también existe la idea del "pipe", sin embargo, al no
existir concurrencia de procesos, no se trata de una
comunicación en "tiempo real", sino de un paso de
información a través de ficheros temporales.

-        Ofrece facilidades
para la creación de programas y sistemas y el ambiente
adecuado para las tareas de diseños de software.

-        Emplea manejo
dinámico de memoria por intercambio o paginación.

-        El núcleo
de UNIX es relativamente compacto en comparación con otros
sistemas de tiempo compartido. Introduce la idea de reducir el
tamaño del "kernel" y ceder ciertas funciones a programas
externos al núcleo llamados "demonios". Esto ha sido muy
desarrollado y en la actualidad, la tendencia es el desarrollo de
"micro-kernels", sin embargo UNIX, aunque pionero, es anterior a
estos desarrollos.

-        Tiene capacidad de
interconexión y comunicaciones
de procesos.

-        Emplea un sistema
jerárquico de archivos, con facilidades de
protección de archivos, cuentas y
procesos. En este sistema de ficheros jerárquico todo se
encuentra anclado en la raíz. La mayoría de la
literatura sobre
el tema dice que el sistema de ficheros UNIX es un grafo
acíclico, sin embargo, la realidad es que se trata de un
grafo cíclico. El DOS, por ejemplo, es un árbol,
con un directorio raíz del que cuelgan subdirectorios que
a su vez son raíces de otros sub-árboles. Un grafo cíclico es como un
árbol en el que se pueden enlazar nodos de niveles
inferiores con un nivel superior. Es decir, se puede entrar en un
subdirectorio y aparecer más cerca de la raíz de lo
que se estaba.

-        Tiene facilidad
para redireccionamiento de Entradas/Salidas.

-        Garantiza un alto
grado de portabilidad.

-        UNIX realiza un
riguroso control de acceso a ficheros. Cada uno se encuentra
protegido por una secuencia de bits. Sólo se permite el
acceso global al "root" o "superusuario". Por tanto, el universo de
usuarios de UNIX se encuentra dividido en dos grupos
principales, no sólo para el acceso a ficheros sino para
todas las actividades: el "root", todopoderoso, para el que no
hay barreras; y el resto de los usuarios, controlados por el S.O.
según las directivas del "root".

-        UNIX es un S.O. de
red, algo que a veces se confunde con un S.O. distribuido. Por
ello, se ha incluido en su núcleo la arquitectura de
protocolos de internet, TCP/IP.

2.3   Desventajas de Unix

Las desventajas del mismo pueden variar entre versiones,
así como también por diversas condicionantes
externas, tales como: el área de uso (personal,
comercial o industrial), experticia del usuario, funcionalidad
específica de las aplicaciones, entre otras. En general se
podría decir que:

-        Desde el punto de
vista comercial, no muchas personas lo conocen, ya que no es un
sistema que venga precargado en cada PC que se compra. En otras
palabras, no están popular como Windows o incluso como
Linux, y por tanto, es difícil encontrar los programas que
se acostumbran a usar en esos otros sistemas operativos.

-        Desde el punto de
vista de funcionalidad, el S.O. Unix vienen en muchas variantes
como se sabe, sin embargo, el detalle es que hay variantes que
están diseñadas para ser ejecutada en equipos
especiales fabricados por una marca especifica, como IBM, SUN,
HP, DELL, entre otras. Lo que limita un tanto la portabilidad de
UNIX

-        En cuanto a la
confiabilidad, UNIX fue desarrollado desde sus inicios para ser
más estable que cualquier otro sistema operativo, es
decir, que cuando se usa UNIX no es tan común ver ciertas
pantallas de errores que salen en los otros S.O, aunque si se
podrán dar casos en que hay computadores con sistemas UNIX
en desuso, pero será por problemas de Hardware o de
algún otro programa que trabaje mal.

-        A pesar de ser tan
estable y no "caerse" prácticamente nunca, resulta ser muy
costoso en el sentido de mantenimiento
y administración. Es decir, que por ejemplo,
hay empresas que pierden más dinero con un
equipo fuera de línea que pagando a un administrador del
sistema (que cobra mucho por su trabajo a razón de que no
muchas personas conocen UNIX).

-         El S.O UNIX
puede requerir más horas de aprendizaje que
el resto de las otras plataformas de sistemas operativos.

-        Como ya se
menciono antes, los problemas suelen ser más
difíciles de resolver dado el poco apoyo y soporte que hay
en el mercado y, normalmente, el soporte del fabricante es muy
costoso.

-        Se utiliza un
lenguaje de programación muy avanzado: C, aunque en
algunos casos permite Fortran y Java.

Generalidades de
Unix

En general UNIX mantiene una serie de procesos en
funcionamiento durante todo el tiempo que este en funcionamiento.
Todos los procesos en UNIX están identificados por un
número, el PID, que es
único. Si un proceso acaba y vuelve a empezar, su nuevo
PID nunca coincidirá con el anterior. La lista y el estado de
funcionamiento de los procesos (consumo de
recursos, etc.) es fácilmente visualizable mediante el
comando "top".

Aunque desde los años de popularización del
sistema Apple Macintosh (1983, en adelante) las interfaces
gráficas de usuario se han ido extendiendo
más y más, UNIX es más típicamente
manejado desde interfaces de tipo CLI ("Command Line Interface"),
en las que los comandos se lanzan desde el "Shell". Hay una
decena de "shells" populares en UNIX, desde el antiguo pero
universal "Bourne Shell" (sh) hasta el sofisticado "Bash Shell".
A continuación se puede ver la imagen de ejemplo de una
sesión de Bash, tomada en Gentoo Linux:


Imagen:Bash screenshot.png

Imagen de una sesión de Bash

El uso de interfaces gráficas con UNIX es tan
fácil como con cualquier otra plataforma. Sin embargo la
flexibilidad de interconexión entre los datos de entrada y
salida de las aplicaciones no es fácil de representar en
aquéllos, y es este precisamente uno de los aspectos
más importante para los programadores de sistema ya que
permite construir comandos combinados potentes muy
rápidamente a los expertos. UNIX ideó el sistema de
almacenamiento en estructuras jerárquicas que hoy es tan
popular en todos los sistemas: los directorios y
subdirectorios.

Kernel o núcleo
del sistema

El núcleo del sistema operativo Unix (llamado Kernel)
es un programa escrito casi en su totalidad en lenguaje C, con
excepción de una parte del manejo de interrupciones,
expresada en el lenguaje ensamblador del procesador en el que
opera. Las funciones del núcleo son permitir la existencia
de un ambiente en el que sea posible atender a varios usuarios y
múltiples tareas en forma concurrente, repartiendo al
procesador entre todos ellos, e intentando mantener en grado
óptimo la atención individual. El Kernel opera como
asignador de recursos para cualquier proceso que necesite hacer
uso de las facilidades de cómputo. Es el componente
central de Unix y tiene las siguientes funciones:

·       Creación
de procesos, asignación de tiempos de atención y
sincronización.

·       Asignación
de la atención del procesador a los procesos que lo
requieren.

·      
Administración de espacio en el sistema de archivos, que
incluye: acceso, protección y administración de
usuarios; comunicación entre usuarios v entre procesos, y
manipulación de E/S y administración de
periféricos.

·       Supervisión de la transmisión de
datos entre la memoria principal y los dispositivos
periféricos.

El Kernel reside siempre en la memoria central y tiene el
control sobre la computadora, por lo que ningún otro
proceso puede interrumpirlo; sólo pueden llamarlo para que
proporcione algún servicio de los ya mencionados. Un
proceso llama al Kernel mediante módulos especiales
conocidos como llamadas al sistema.

El Kernel consta de dos partes principales: la sección
de control de procesos y la de control de dispositivos. La
primera asigna recursos, programas, procesos y atiende sus
requerimientos de servicio; la segunda, supervisa la
transferencia de datos entre la memoria principal y los
dispositivos periféricos. En términos generales,
cada vez que algún usuario oprime una tecla de una
terminal, o que se debe leer o escribir información del
disco magnético, se interrumpe al procesador central y el
núcleo se encarga de efectuar la operación de
transferencia

Cuando se inicia la operación de la computadora, debe
cargarse en la memoria una copia del núcleo, que reside en
el disco magnético. Para ello, se deben inicializar
algunas interfaces básicas de hardware; entre ellas, el
reloj que proporciona interrupciones periódicas. El Kernel
también prepara algunas estructuras de datos que abarcan
una sección de almacenamiento temporal para transferencia
de información entre terminales y procesos, una
sección para almacenamiento de descriptores de archivos y
una variable que indica la cantidad de memoria principal.

A continuación, el Kernel inicializa un proceso
especial, llamado "proceso 0". En general, los procesos se crean
mediante una llamada a una rutina del sistema ("fork"), que
funciona por un mecanismo de duplicación de procesos. Sin
embargo, esto no es suficiente para crear el primero de ellos,
por lo que el Kernel asigna una estructura de
datos y establece apuntadores a una sección especial
de la memoria, llamada tabla de procesos, que contendrá
los descriptores de cada uno de los procesos existentes en el
sistema.

Después de haber creado el "proceso 0", se hace una
copia del mismo, con lo que se crea el "proceso 1"; éste
muy pronto se encargará de "dar vida" al sistema completo,
mediante la activación de otros procesos que
también forman parte del núcleo. Es decir, se
inicia una cadena de activaciones de procesos, entre los cuales
destaca el conocido como despachador, o "scheduler", que es el
responsable de decidir cuál proceso se ejecutará y
cuáles van a entrar o salir de la memoria central. A
partir de ese momento se conoce el número 1 como proceso
de inicialización del sistema, "init".

El proceso "init" es el responsable de establecer la estructura de
procesos en Unix. Normalmente, es capaz de crear al menos dos
estructuras distintas de procesos: el modo monousuario y el
multiusuario. Comienza activando el intérprete del
lenguaje de control ("Shell") en la terminal principal, o
consola, del sistema y proporcionándole privilegios de
"superusuario". En la modalidad de un solo usuario la consola
permite iniciar una primera sesión, con privilegios
especiales, e impide que las otras líneas de
comunicación acepten iniciar sesiones nuevas. Esta
modalidad se usa con frecuencia para revisar y reparar sistemas
de archivos, realizar pruebas de
funciones básicas del sistema y para otras actividades que
requieren uso exclusivo de la computadora.

"Init" crea otro proceso, que espera pacientemente a que
alguien entre en sesión en alguna línea de
comunicación. Cuando esto sucede, realiza ajustes en el
protocolo de la línea y ejecuta el programa "login", que
se encarga de atender inicialmente a los nuevos usuarios. Si la
clave del usuario, y la contraseña proporcionadas son las
correctas, entonces entra en operación el programa
"Shell", que en lo sucesivo se encargará de la
atención normal del usuario que se dio de alta en esa
terminal.

A partir de ese momento el responsable de atender al usuario
en esa terminal es el intérprete "shell". Cuando se desea
terminar la sesión hay que desconectarse de "Shell" (y,
por lo tanto, de Unix), mediante una secuencia especial de
teclas. A partir de ese momento la terminal queda disponible para
atender a un nuevo usuario.

Línea de comandos,
consola o "shell" del sistema

Es un programa informático que actúa como
interfaz de usuario para comunicar al usuario con el sistema
operativo mediante una ventana que espera ordenes escritas por el
usuario en el teclado; los interpreta y los entrega al sistema
operativo para su ejecución. La respuesta del sistema
operativo es mostrada al usuario en la misma ventana. A
continuación, el programa "shell" queda esperando
más instrucciones. Se interactúa con la
información de la manera más sencilla posible, sin
gráficas, solo el texto crudo.

Dada la importancia de esta herramienta, existe ya desde los
comienzos de la computación. Existen para diversos
sistemas operativos, diversos hardwares, con diferente
funcionalidad. Suelen incorporar características tales
como control de procesos, redirección de entrada/salida,
listado y lectura de ficheros, protección, comunicaciones
y un lenguaje de órdenes para escribir programas por lotes
o (scripts o guiones). Su contraparte es la interfaz
gráfica de usuario que ofrece una estética mejorada a costa de mayor consumo
de recursos computacionales, una mayor vulnerabilidad por
complejidad y, en general, una reducción en la
funcionalidad ofrecida.

En su forma más simple, una CLI ("Command Line
Interface")es una ventana que muestra un "prompt",
señalizando su disposición a recibir mandatos, el
usuario teclea una orden en el teclado e ingresa la orden
normalmente con la tecla "Intro/Enter".

Las órdenes dadas a la CLI son con frecuencia de la
forma:

PROMPT>comando_haz_algo [opciones] 
[a_estos_ficheros]

Al ingresar el mandato con "Intro", un programa interpretador
de mandatos analiza la secuencia de caracteres ingresada y, si la
sintaxis del mandato es correcta, ejecuta el mandato recurriendo
para ello a las funciones que ofrece el sistema operativo o el
programa que representa, un gestor de banco de datos,
una sesión de FTP, etc. La
respuesta al usuario es escrita en el monitor. Esta
forma de trabajo es interactiva, es decir, usuario y
máquina se comunican en forma sucesiva.

Pero no solo se puede trabajar interactivamente con el CLI,
también es posible usar scripts ó guión, es
decir, archivos conteniendo instrucciones guardadas como si se
estuviesen escribiendo en el momento. De esta forma, la
línea de comandos puede utilizarse sin siquiera tener que
lidiar con lo primitivo del método ni
estando presente frente al monitor o teclado. Comparada con un
ambiente gráfico la CLI consume menos recursos del CPU y
de la tarjeta gráfica, es más rápida y
más fácil de utilizar a través de una red de
computadores.

A continuación se puede observar una imagen que
describe la forma como los usuarios interactúan con el
sistema utilizando la CLI:


Image:Commandlineinterface.png

Interacción con la CLI ("Command Line
Interface")

 

Sistema de
archivos de Unix: "File System"

La tercera parte que define el sistema operativo UNIX es la
estructura de su sistema de ficheros. Un sistema de ficheros es
la forma que tiene el sistema operativo de organizar los datos en
una estructura o colección de ficheros. UNIX considera
como ficheros no sólo a los ficheros normales (en los que
se guardan datos, programas, etc.) sino también a los
directorios y los dispositivos conectados al sistema.

El sistema de ficheros en UNIX está organizado en una
estructura jerárquica de directorios que comienza en el
directorio "root" representado por
"/."  Los directorios que cuelgan de "root"
pueden variar dependiendo del sistema, aunque los mostrados en el
árbol a continuación, sí son comunes a todos
los sistemas UNIX.

·      
/bin contiene comandos y
utilidades, son ficheros ejecutables.

·      
/dev contiene los ficheros que
representan a los dispositivos conectados al sistema.

·      
/etc contiene comandos y ficheros
usados en la
administración del sistema.

·      
/home contiene los ficheros
"home" de cada usuario del sistema.

·      
/lib contiene librerías
utilizadas por diferentes programas y lenguajes.

·      
/tmp es el directorio donde se
guardan los ficheros temporales.

·      
/usr contiene ficheros del
sistema que son comunes a los usuarios como programas o
documentación.

Los ficheros pueden clasificarse dentro de las siguientes
categorías:

·       Ficheros
normales

·       Directorios

·       Ficheros
especiales

·       "Pipes" o
"tuberías"

Los ficheros normales pueden tener contenidos
muy diferentes, por ejemplo, texto, imágenes, ejecutables,
etc. Todos los ficheros tienen un propietario, aquellos creados
por los usuarios dentro de su propia cuenta y cada propietario es
el que puede controlar los permisos de acceso a ese fichero.

Los directorios son ficheros
que contienen referencias a otros ficheros. Aunque todos los
ficheros se encuentran dentro de algún directorio, no
residen realmente dentro de él. El directorio mantiene dos
informaciones básicas sobre cada fichero contenido en
él: el nombre y un número llamado
"inode number" que es un puntero
que le indica al sistema donde encontrar toda la
información que necesita del fichero, además de
almacenar otra información básica como pertenencia,
modo de acceso y tipo de archivo. A la correspondencia entre el
nombre de un fichero y el "inode
number" se le denomina "link". Un
mismo "inode number" puede tener asociados varios
nombres y se puede referir al fichero por cada uno de estos
nombres.

Los dispositivos especiales son ficheros que
representan dispositivos físicos como impresoras,
dispositivos magnéticos, el ratón, etc. Se
encuentran dentro del directorio /dev.
Los "pipes" o "tuberías" son los que
permiten enlazar la salida de un comando a la entrada de otro,
esto se hace a través de la creación de un fichero
temporal donde se guarda la salida del primer programa hasta que
es leído por el segundo.

A continuación se puede observar un diagrama en donde
se representa la interfaz para realizar llamadas al sistema en el
sistema operativo Unix:

 

Unix

 

Diagrama de interfaz de llamadas al
sistema

Comparación con
el sistema operativo Windows: principales
diferencias

-        Núcleo
monolítico Vs. Micronucleo: en Windows se utiliza una
aproximación al Micronucleo (tipo de núcleo
descentralizado pero de menor rendimiento) mientras que en Unix
se utiliza el Núcleo Monolítico (tipo de
núcleo da gran rendimiento pero de gran complejidad para
añadir nuevas funcionalidades).

-        Ficheros Vs.
Objetos: Unix es un sistema operativo orientado a ficheros (todo
es una serie de ficheros organizados de manera jerárquica)
y Windows es un sistema operativo orientado a objetos (todo es un
objeto, algo más complicado que un archivo).

-       
Súper-aplicaciones Vs. Micro-aplicaciones: En Unix se
tienden a tener un montón de pequeñas aplicaciones
que hacen una sola cosa pero muy bien, mientras que en Windows se
tiende a concentrar todo en una aplicación pero con una no
muy buena funcionalidad.

Comandos
básicos del sistema operativo Unix

Este pretende ser un pequeño resumen de comandos que se
utilizan en Unix:

-        Comandos de
directorios:

ls – lista todos los archivos de un directorio,
usando el switch -al
lista los permisos y fecha de última actualización
de los archivos.

cd
(cd_nombre_directorio)
– cambia de directorio. Por ejemplo:
cd public llevara al usuario al directorio
public

• cd.. – lleva al usuario al directorio padre (un
nivel más arriba)

cd $home – lleva al usuario al directorio
raíz sin importar donde este el mismo

mkdir – crea un nuevo directorio, por ejemplo:
mkdir nombre_directorio

• pwd – muestra el directorio actual de
trabajo

• rmdir – permite borrar un directorio

mv (mv archivo o directorio) – mueve archivos o
subdirectorios de un directorio a otro, o cambia el nombre del
archivo o directorio

• chmod (chmod modo archivo) – utilizado para
cambiar la protección o permisos de accesos a los
archivos. Lectura (r), Escritura (w) y
Ejecución (x).

Permisos de (l): Usuario: permisos que tiene con
respecto a un archivo o directorio de su propiedad. Grupo:
permisos que tiene el archivo y/o directorio para los usuarios
que pertenecen al mismo grupo. Otros: permisos que tienen
otros usuarios en el archivo o directorio.

Para modificar los permisos del usuario, grupo y otros se
utiliza "+" para añadir permiso o "-" para no dar permiso,
indicando el tipo de permiso w, r, x. Además, puede
especificarse de una forma numérica, donde cada letra
correspondiente a una parte del permiso (r,w,x) puede estar
activada o no (en 1 ó 0) para formar un número
binario, el cual es convertido luego a número decimal.

• cp (cp nom_archivo o directorio) – copia
archivos en el directorio indicado.

• rm (rm_nombre_archivo) – remueve o elimina un
archivo. Una vez eliminado el archivo no puede ser
recuperado.

• rmdir (rmdir_nombre_directorio) – elimina el
directorio indicado, el cual debe estar vacio.

• lpr (lpr_lista de requerimientos) – imprime un
archivo en la impresora predeterminada.

• wc (wc_archivo) – cuenta los caracteres,
líneas y palabras del archivo de texto.

• file (file_archivo) – determina el tipo del o de
los archivo(s) indicado(s). Ejemplo: texto, programa, grafico,
etc.

• find (find_directorio o archivo
condición)
– busca los archivos que satisfacen la
condición en el directorio indicado.

• tar (tar -[arg] archivo.tar) – comprime archivos
y directorios utilizando la extensión .tar

• gzip (gzip_archivo) – comprime solo archivos
utilizando la extensión .gz

-         
Comandos para visualizar y modificar archivos:

• more, less, cat – permite visualizar un archivo
sin realizar modificaciones.

• more (more_nom_archivo) – Muestra el archivo en
pantalla. Presionando "enter", se visualiza línea
por línea. Presionando la barra espaciadora,
pantalla por pantalla. Si se desea salir, se presiona q.

• less (less_nom_archivo) – muestra el archivo de
la misma forma que more, pero se puede regresar a la
página anterior presionando las teclas "u" o "b".

• cat (cat_nom_archivo) – muestra el contenido del
archivo en pantalla en forma continua, el prompt
retornará una vez mostrado el contenido de todo el
archivo. Permite concatenar uno o más archivos de texto:
cat arch [arch2…]

• diff (diff_archivo_1_archivo_2) – permite la
comparación de 2 archivos línea por línea.
Es utilizado para comparar archivos de datos.

• vi (vi_nom_archivo) – permite editar un archivo
en el directorio actual de trabajo. Es uno de los editores de
texto más usado en UNIX.

• view (view_nom_archivo) – es similar al vi, solo
que no permite guardar modificaciones en el archivo, es para leer
el contenido del archivo.

-         
Comandos para obtener información:

• man – ofrece información acerca de los
comandos o tópicos del sistema UNIX, así como de
los programas y librerías existentes.

• whoami – escribe el nombre del usuario en
pantalla.

• who,w – lista quienes están conectado al
servidor, con
nombre de usuario, tiempo de conexión y el computador
remoto desde donde se conecta.

• finger – permite encontrar información
acerca de un usuario.

• date – muestra el día, fecha, hora (con
minutos y segundos) y año.

• mail – coloca los correos en modo mail. El
prompt es el signo ?. La tecla "enter" pasa
al siguiente correo. Presionando h y luego "enter",
lista los correos que tiene el buzón. La tecla d y
luego "enter", elimina el correo que esté mostrando
en pantalla. Para salir se utilizan las teclas q y
"enter".

-         
Comandos de ayuda de otros comandos:

• clear – limpia la pantalla, y coloca el
prompt al principio de la misma.

• history – lista los más recientes
comandos que se han introducido en la ventana. Es utilizado para
repetir comandos ya tipiados, con el comando !.

• ! – repite el último comando colocando la
letra con la que comienza el comando o su número de
history.

-        Comandos de
acceso y uso de maquinas remotas:

• ftp – protocolo de transferencia de archivos,
permite transferir archivos de y para computadores remotos.

rlogin – conecta un host local con un
host remoto.

• ssh – "Secure Shell Client", es un
programa para conectarse en una máquina remota y ejecutar
programas en ella. Utilizado para reemplazar el rlogin y
rsh, además provee mayor seguridad en la
comunicación entre dos hosts. El ssh se
conecta al host indicado, donde el usuario debe ingresar
su identificación (login y password) en la
máquina remota, la cual realiza una autentificación
del usuario.

• telnet – conecta al host local con un
host remoto, usando la interfaz TELNET.

-         
Comandos para chequear trabajos y procesos antes de
salir:

• ps – muestra información acerca de los
procesos activos. Sin
opciones, muestra el número del proceso, terminal, tiempo
acumulado de ejecución y el nombre del comando. De otra
manera, la información de salida es controlada por las
opciones indicadas.

• kill – elimina los procesos que esté
realizando el sistema.

• jobs – lista los trabajos y sus números
de identificación. Si el prompt retorna sin ninguna
información, es que no hay ningún trabajo
corriendo. Un trabajo puede ser creado por la letra &
antes de un comando, que lo hace ejecutable

• exit – cierra las ventanas o las conexiones
remotas establecidas o las conchas abiertas. Antes de salir es
recomendable eliminar todos los trabajos o procesos de la
estación de trabajo.

CAPÍTULO III

CONCLUSIONES

3.1 Conclusiones

De la elaboración de esta guía, se pueden hacer
las siguientes conclusiones en cuanto al sistema operativo
Unix:

-        El sistema
operativo Unix es un importante producto utilizado ampliamente en
el mundo de los negocios, en el académico y en el
gubernamental a nivel mundial

-        Debido a que el
código fuente de Unix ha estado
disponible, muchos programadores han tenido la oportunidad de
moldear este sistema operativo para que se pueda adaptar a sus
necesidades.

-        Es un sistema
multiusuario, multitarea y además, proporciona un buen
entorno para el trabajo en
red.

-        El termino kernel
significa lo mismo que el núcleo del computador.

-        El kernel o
núcleo es la parte fundamental del computador. El mismo se
encarga de tareas como por ejemplo, planificar la
ejecución de los procesos, supervisar la
transmisión de datos entre las aplicaciones y los
dispositivos periféricos, administrar la memoria del
computador, hacer el renderizado de texto en la pantalla, entre
otras cosas.

-        Un sistema
operativo con núcleo monolítico concentra todas las
funcionalidades posibles dentro de un gran programa. Todos sus
componentes se encuentran integrados en un único programa
que se ejecuta en un único espacio de direcciones. En este
tipo de sistemas, todas las funciones que ofrece el sistema
operativo se ejecutan en modo supervisor.

-        El micronucleo es
un tipo de núcleo de un sistema operativo que provee de
llamadas al sistema mínimas, para implementar servicios
básicos como espacios de direcciones, comunicación
entre procesos y planificación básica. Todos los
otros servicios, que en general son provistos por el
núcleo, se ejecutan como procesos servidores en espacio de
usuario.

-        Es importante
diferenciar el termino de Software de sistema (sistema operativo)
del termino de Software de aplicación, ya que el primero
se refiere a un programa que se encarga de las funciones
básicas del computador, mientras que el segundo se encarga
de tareas más relacionadas con ayudar a los usuarios a la
realización de diversas tareas de la vida diaria, por
ejemplo, las aplicaciones ofimáticas.

-        En Unix todo se
entiende como ficheros (organizados de manera jerárquica),
mientras que en Windows todo se trata como objetos, que es casi
lo mismo, pero con una estructura diferente. Lo mismo sucede con
los directorios y sub-directorios en Unix, que se entienden como
carpetas y sub-carpetas en Windows.

-        El sistema
operativo Linux, que no es Unix, tiene gran parecido a este. De
hecho, se sabe que Linux proviene de Minix (otro sistema derivado
de Unix), por lo tanto, de no ser por la creación de Unix
probablemente nunca se hubieran creado todas las distribuciones
de Linux que existen hasta ahora.

-        El sistema
operativo Unix proviene de un trabajo de un sistema operativo
experimental llamado Multics, que se desarrollo hace más
de 30 años. El objetivo de aquel proyecto era el de
desarrollar un sistema operativo interactivo que contase con
muchas innovaciones, entre ellas mejoras en las políticas
de seguridad.

-        Se puede decir que
el Lenguaje de programación C (muy usado en la actualidad)
se creó justamente para poder
desarrollar el sistema operativo Unix.

-        Se podría
decir que el programa "runoff" fue uno de los primeros programas
de procesamiento de texto. La evolución del mismo,
conocido como "troff" fue el primer programa de edición
electrónica que permitía realizar
composición tipográfica.

-        Las versiones
más "puras" en la actualidad de este sistema operativo son
UnixWare y SCO Open Server. Ambas comercializadas por SCO Group,
a pesar de los problemas legales que ha tenido esta empresa,
estos sistemas se siguen usando ampliamente a nivel mundial,
aunque, el futuro de esta empresa y estos sistemas es incierto de
momento.

-        A pesar de que los
mencionados anteriormente constituyen sistemas operativos Unix
"puros", hay muchos sistemas en la actualidad que pertenecen a la
familia de Unix, aunque no sean exactamente igual a este, como
por ejemplo, las distribuciones de Linux, los BSD, los AIX, los
de Sun, entre otros.

-        La
filosofía de Unix se puede resumir de la siguiente manera:
escribir programas que hagan una cosa y la hagan bien, escribir
programas que trabajen juntos (en conjunción) y escribir
programas que manejen "torrentes de texto", porque esa es una
interfaz universal.

-        Las principales
ideas de Unix son: manejar todo como cadena de bytes, el uso de 3
descriptores estándar, las capacidades de "entubar" y
"redireccionar" y el hecho de crear sistemas grandes a partir de
módulos.

-        El sistema de
ficheros está basado en la idea de volúmenes, que
se pueden montar y desmontar para lo que se les asigna un nodo
del árbol como punto de anclaje. Un sistema físico
puede dividirse en uno o más volúmenes.

-        Unix ofrece
facilidades para la creación de programas y sistemas y el
ambiente adecuado para las tareas de diseños de
software.

-        El núcleo
de UNIX es relativamente compacto en comparación con otros
sistemas de tiempo compartido. Introduce la idea de reducir el
tamaño del "kernel" y ceder ciertas funciones a programas
externos al núcleo llamados "demonios". Esto ha sido muy
desarrollado y en la actualidad, la tendencia es el desarrollo de
"micro-kernels", sin embargo UNIX, aunque pionero, es anterior a
estos desarrollos.

-        Emplea un sistema
jerárquico de archivos, con facilidades de
protección de archivos, cuentas y procesos. En este
sistema de ficheros jerárquico todo se encuentra anclado
en la raíz.

-       
Desafortunadamente, Unix no es sistema que todas las personas
conozcan debido a que el mismo no está muy difundido entre
los usuarios habituales. Este mismo sistema es muy usado a nivel
comercial, industrial y gubernamental, pero a nivel de computador
personal o de escritorio pierde terreno con respecto a otros
sistemas como Windows y Linux.

-        El S.O UNIX puede
requerir más horas de aprendizaje que el resto de las
otras plataformas de sistemas operativos debido a su alto uso de
terminología técnica y que la interacción
primordial del mismo, la que demuestra toda su potencialidad, se
da a través de líneas de comandos.

-        En Unix
también se pueden usar interfaces graficas como
en otro sistemas, no obstante, las interfaces de los otros
sistemas son mas intuitivas y, por lo tanto, más
fáciles de usar.

-        El sistema
operativo Unix se divide en 3 partes básicas, a saber son:
el kernel o núcleo del sistema, el "shell" o línea
de comandos y el "File system" o sistemas de archivos del
mismo.

-        El Kernel opera
como asignador de recursos para cualquier proceso que necesite
hacer uso de las facilidades de cómputo. Es el componente
central de Unix. El Kernel reside siempre en la memoria central y
tiene el control sobre la computadora, por lo que ningún
otro proceso puede interrumpirlo.

-        El "shell" es un
programa informático que actúa como interfaz de
usuario para comunicar al usuario con el sistema operativo
mediante una ventana que espera ordenes escritas por el usuario
en el teclado; los interpreta y los entrega al sistema operativo
para su ejecución.

-        La tercera parte:
el "File system" se refiere a la estructura del sistema de
ficheros del Unix. En este sistema operativo los ficheros
están organizados de manera jerárquica y se pueden
clasificar entre: ficheros normales, directorios, ficheros
especiales y los "pipes" o "tuberías".

3.2 Recomendaciones

De acuerdo a las conclusiones expresadas anteriormente:

-        Se recomienda
tomar esta guía como referencia para aquellas personas que
necesitan iniciarse en los conceptos básicos de informática.

-        Se sugiere de
igual forma, el uso de la información en este guía
a aquellas personas que estén pensando en usar el sistema
operativo Unix, ya sea a nivel personal, comercial e industrial,
gubernamental o privado.

-        La
utilización del sistema operativo Unix es de gran
importancia para aquellos individuos que estén pensando en
montar un negocio de gran envergadura, y necesiten un sistema de
alta confiabilidad y rendimiento.

-        Esta guía
solo funciona como un material de referencia básico,
aquellos que deseen profundizar más en el
conocimiento de este sistema operativo, se les sugiere buscar
otras referencias para poder completar el proceso de
aprendizaje.

-        La mejor manera de
aprender algo es con la práctica, por tanto, se recomienda
la realización de cualquier tipo de cursos, talleres,
congresos, simposios, foros, o cualquier otra reunión que
pueda servir para complementar estos conceptos de una manera
más práctica e interactiva.

REFERENCIAS

Fuentes impresas:

Universidad Pedagógica Experimental
Libertador (1998). Manual de Trabajos de Grado de
Especialización y Maestría y Tesis
Doctorales.
Caracas.

Fuentes electrónicas:

Características del sistema
operativo
(2003). La cárcel [Pagina web en
línea]. http://lacarcel.iespana.es/1caract.htm
[Consulta: 2008, Julio 03]

Carrasquel, D. (2006).
Unix.http://www.monografias.com/trabajos36/
sistema-unix/sistema-unix.shtml [Consultado 2008, Julio
05]

Comandos básicos de Unix (2004).
Centro de atención al Usuario ULA. [Documento en
línea] http://atencion.ula.ve/manuales/unix/
resumen.html [Consulta: 2008, Julio 09]

Costales, F. (1999). Sistema operativo
Unix.
http://www.estudiagratis.com/showCourse.php?a=813&b=1&h=F7FFC2F39FB68BB0614D4A7CADF07FBE 
[Consultado 2008, Julio 06]

Gonzalez, V. (2001). Curso básico de
Unix
. Instituto de Energía Eléctrica de
Montevideo, Uruguay.
http://iie.fing.edu.uy/~vagonbar/ unixbas/introd.htm
[Consulta: 2008, Julio 03]

Historia de Unix. (2008). Geocities
[Pagina web en línea]
http://www.geocities.com/feliciaesp/historia.html [Consulta:
2008, Julio 01]

Introducción y conceptos básicos
del sistema operativo Unix
. (2006). Instituto de
astrofísica de Canarias. [Documento en línea]
http://www.iac.es/sieinvens/SINFIN/CursoUnix/cap1.php
[Consulta: 2008, Junio 29]

Irojask2 (2004). Desventajas de Unix
[Discusión en línea]
http://www.xpertia.com/home.asp?tip=usu&id=5&item=pregunta&id_item=167547&idr=129483
[Consulta: 2008, Julio 07]

Martinoli, D. (1998). Sistema Operativo
Unix.
http://www.monografias.com/trabajos/unix/unix.shtml
[Consulta: 2008, Julio 03]

Microsoft Corporation, 2007. Microsoft®
Student con Encarta® Premium 2008 [DVD].
"Unix." [Consulta: 2008, Junio 29]

Monografía de Mononeurona (2005).
¿Qué es Unix?-La historia de Unix.
Wikilearnig. http://www.wikilearning.com/monografia/que_es_unix-la_historia_de_unix/6379-1
[Consulta: 2008, Julio 02]

Mostacero, D. (2000). Historia de Unix.
Tomado de Unix® System. [Traduccion: UnixSupport].
http://www.unixsup.com/unixlinux/ historiaunixus.html
[Consulta: 2008, Julio 02]

Pablo, P. (2001). Historia de Unix.
[Pagina web de dns.bdat.net]
http://dns.bdat.net/shell/node3.html.
[Consulta: 2008, Julio 03]

POnk. (1999). Historia de Unix [Pagina web
en línea] http://www.ayuda-internet.net/tutoriales/manu-unix/manu-unix.html [Consulta:
2008, Julio 05]

Unique Computer Operations S.A. (UNICOPSA)
(2004). Características del Unix. Geocities.
http://www.geocities.com/gzsuniq/ unix_char.htm [Consulta:
2008, Julio 04]

Vieyra, G. (2000). Características
generales de Unix/Linux
. [Pagina web de dns.bdat.net]
http://www.fismat.umich.mx/~elizalde/ tesis/node24.html
[Consulta: 2008, Julio 06]

Wikipedia (2008). Computadora central.
Wikimedia Foundation Inc.
http://es.wikipedia.org/wiki/Computadora_central
[Consulta: 2008, Julio 09]

Wikipedia (2008). GNU. Wikimedia
Foundation Inc. http://es.wikipedia.org/wiki/GNU
[Consulta: 2008, Julio 10]

Wikipedia (2008). Inode. Wikimedia
Foundation Inc. http://en.wikipedia.org/wiki/Inode
[Consulta: 2008, Julio 14]

Wikipedia (2008). Lenguaje de
programación C
. Wikimedia Foundation Inc.
http://es.wikipedia.org/wiki/ANSI_C [Consulta: 2008, Julio
10]

Wikipedia (2008). Lenguaje ensamblador.
Wikimedia Foundation Inc.
http://es.wikipedia.org/wiki/Assembly [Consulta: 2008,
Julio 10]

Wikipedia (2008). Linea de comandos.
Wikimedia Foundation Inc.
http://es.wikipedia.org/wiki/Unix_shell [Consulta: 2008,
Julio 14]

Wikipedia (2008). Linux. Wikimedia
Foundation Inc. http://es.wikipedia.org/wiki/Linux
[Consulta: 2008, Julio 06]

Wikipedia (2008). Micronucleo. Wikimedia
Foundation Inc.
http://es.wikipedia.org/wiki/Micron%C3%BAcleo [Consulta:
2008, Julio 08]

Wikipedia (2008). Núcleo
(informática)
. Wikimedia Foundation Inc.
http://es.wikipedia.org/wiki/N%C3%BAcleo_(inform%C3%A1tica)
[Consulta: 2008, Julio 08]

Wikipedia (2008). Núcleo
monolítico
. Wikimedia Foundation Inc.
http://es.wikipedia.org/wiki/N%C3%BAcleo_monol%C3%ADtico
[Consulta: 2008, Julio 08]

Wikipedia (2008). Software libre.
Wikimedia Foundation Inc.
http://es.wikipedia.org/wiki/C%C3%B3digo_libre [Consulta:
2008, Julio 10]

Wikipedia (2008). Software no libre.
Wikimedia Foundation Inc.
http://es.wikipedia.org/wiki/Software_no_libre [Consulta:
2008, Julio 10]

Wikipedia (2008). Unix Philosophy.
Wikimedia Foundation Inc.
http://en.wikipedia.org/wiki/Unix_philosophy [Consulta:
2008, Julio 04]

Wikipedia (2008). Unix. Wikimedia
Foundation Inc. http://es.wikipedia.org/wiki/Unix
[Consulta: 2008, Junio 28]

Información adicional del autor principal del trabajo:
Ángel Betancourt, nacido en la ciudad de Caracas, Estado
Miranda, Venezuela. Es
Bachiller en Ciencias, graduado de la U.E. Colegio "San
Lázaro" en Cumana, Estado Sucre. Actualmente se encuentra
cursante de los estudios de Ing. Mecánica en la Universidad Nacional
Experimental Politécnica de la Fuerza Armada
Bolivariana (UNEFA)- Núcleo Sucre. Cuenta con experiencia
en la presentación de proyectos y trabajos, experiencia en
exposiciones y asesoría básica en la
elaboración de trabajos.

Créditos: se agradece la colaboración de los
alumnos de la sección "6" de Ing. Mecánica de la Universidad Nacional
Experimental Politécnica de la Fuerza Armada Bolivariana
(UNEFA) – Núcleo Sucre, en especial a Carlos Chiarelli por
su ayuda en la recopilación de la información para
la realización de esta guía.

Datos del proyecto: elaborado en Cumaná, Estado
Sucre, Venezuela, julio de 2008.

 

 

 

 

 

Autor:

Angel Betancourt

Venezuela

2008

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter