Sistema Operativo Unix

9 05 2009

jp_unix_logo

INTRODUCCIÓN

El sistema operativo UNIX se inicio como un proyecto de investigación y se ha convertido en un importante producto ampliamente utilizado en el mundo de los negocios, en el académico y en el gubernamental. Se trata de un sistema operativo potente, flexible y versátil, originado ya hace más de 30 años, que prácticamente puede ser instalado en cualquier tipo de plataforma, incluyendo los ordenadores personales monousuarios. El código fuente del sistema UNIX, y no sólo el código ejecutable, ha estado disponible a usuarios y programadores. A causa de esto, muchos programadores han sido capaces de adaptar UNIX de formas muy diferentes. Este carácter abierto, ha conducido a la introducción de un amplio rango de características nuevas y de versiones especializadas que se ajustan a necesidades particulares.

Como se sabe, Unix es un sistema multiusuario, multitarea y además, proporciona un buen entorno para el trabajo en red. Ofrece programas y servicios que permiten construir aplicaciones basadas en red. Ha sido básico para el desarrollo de los servicios en Internet y para el propio crecimiento de Internet. Consecuentemente, con la importancia creciente de la computación distribuida e Internet, está creciendo la popularidad del sistema UNIX. El sistema UNIX es mucho más fácil de portar a nuevas máquinas que otros sistemas operativos. Esta portabilidad es consecuencia directa de estar escrito casi completamente en un lenguaje de alto nivel, el lenguaje C. La portabilidad a un amplio rango de arquitecturas hace posible mover las aplicaciones de un sistema a otro.

Los sistemas operativos UNIX desarrollados en los Laboratorios Bell se cuentan entre los éxitos más notables en el campo de los sistemas operativos. Los sistemas UNIX ofrecen un ambiente amable para el desarrollo de programas y el procesamiento de textos. Brindan facilidad para combinar unos programas con otros, lo cual sirve para fomentar un enfoque modular, de piezas de construcción y orientado a las herramientas, para el diseño de programas. Una vez transportado un sistema operativo UNIX a otra máquina, un enorme acervo de programas de utilidad general queda disponible en la máquina de destino.

El sistema operativo UNIX de 1981 era un sistema de tecleo intensivo que requería una larga lista de mandatos con diversas sintaxis. La generación más reciente de sistemas UNIX ofrece en muchos casos interfaces amables con el usuario, orientadas al uso de ratón y de ventanas tales como X Window System de MIT, NeWS de Sun Microsystem y Open Look de AT&T. Los sistemas UNIX se han convertido en los sistemas operativos para computadora personal preferidos por los usuarios de potencia, y es probable que lo mismo suceda con millones de usuarios más. Por tanto, esta guía surge para poder llevar las potencialidades y facilidades del sistema operativo Unix a aquellas personas que lo requieran.

La Universidad Nacional Experimental Politécnica de la Fuerza Armada Bolivariana promueve entre los estudiantes la realización de un proyecto de guía didáctica por semestre con el objetivo de poder aumentar el acervo informativo existente en la universidad, así como de contribuir para las futuras investigaciones de otros estudiantes y personas que deseen profundizar en algún conocimiento. Esta guía del sistema operativo Unix pone en especial interés el hecho de poder llevarle a los estudiantes y a cualquier otra persona interesada los conocimientos más básicos acerca de este gran sistema de computación muy utilizado en la actualidad en las grandes empresas, debido especialmente a toda una serie de características que lo convierten en una elección de gran rendimiento y confiabilidad.

A lo largo de esta guía el lector encontrara una gran cantidad de información, así como de conceptos básicos que le serán de utilidad para poder iniciarse en el tema de la informática. Se podrán encontrar temas referentes a los orígenes del S.O Unix, la filosofía del sistema, las familias derivadas del mismo, Unix en la actualidad, los componentes principales del sistema; a saber el kernel, el “shell” y el sistema de archivos; las ventajas y desventajas de este sistema operativo y una lista de comandos básicos a utilizar en el mismo. La estructura de esta guía se encuentra dividida de la siguiente manera: la portada, la introducción, el índice, el Capitulo I; donde se encuentran los conceptos básicos de informática; el Capitulo II; donde esta todo lo relacionado al S.O Unix y el Capitulo III; donde se encuentran las conclusiones y las recomendaciones. Al final de la guía se encuentra una lista de las referencias, principalmente electrónicas, utilizadas para la elaboración de la misma

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.

¿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”.

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.

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.

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.

Anuncios

Acciones

Information

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: