miércoles, 23 de julio de 2008

Glosario

Estas son algunos de los términos mas utilizados en UNIX:

Name
Nombre y función. Estas líneas forman el índice que se consulta mediante man -k

Synopsis
Diagrama sintáctico: el nombre, seguido de las opciones (entre corchetes) y posibles argumentos. En el caso de llamadas al sistema y rutinas de biblioteca, el formato y tipo de los parámetros.

Description
Breve descripción.

Return Value
En entradas correspondientes a llamadas al sistema y rutinas de biblioteca, lista de los posibles valores de retorno.

Errors
En entradas correspondientes a llamadas al sistema, lista de los posibles errores.

Options
En entradas correspondientes a comandos, lista detallada de las posibles opciones y sus efectos.

Commands
En entradas correspondientes a comandos interactivos, lista detallada de los mandatos propios de la utilidad.

Files
Ficheros relacionados.

See Also
Referencias a otras entradas del manual y otros tipos de documentación.

Diagnostics
En entradas correspondientes a comandos, lista de mensajes de diagnóstico y error que pueden producirse.

Bugs
Problemas conocidos, o cuestiones pendientes de resolver.

HOME
El directorio del usuario, el camino completo.

PATH
Lista de directorios donde el Shell buscará los comandos que se le pida ejecutar. Si no los encuentra ahí devuelve error.
Kernel
Parte del S.O. residente permanentemente en memoria. Dirige los recursos del sistema, memoria, E/S y procesos. Podemos distinguir dos partes: sección de manejo de procesos y sección de manejo de dispositivos.

USER
Identificador del usuario.

SHELL
Intérprete de comandos. Interpreta y activa los comandos o utilidades introducidos por el usuario.

TERM
Tipo de terminal en uso.

* Cualquier carácter

? Un único carácter

[car1...carn]
Cualquier carácter de la lista o rangos incluidos entre los corchetes.

{cadena,...}
Cada una de las cadenas de la lista.

~usuario
Directorio inicial del usuario especificado. Si no se especifica el usuario, sino solo el ~ (Altgr+ñ), se entiende que hace referencia al directorio del usuario propietario del proceso Shell.

Utilidades Generales de Unix

El número de utilidades existentes para UNIX es muy amplio, estas son las mas utilizadas:

grep
Busca una cadena en uno o más ficheros (o en la entrada estándar)
Ej. grep

head
Permite ver las primeras líneas de un fichero (o de la entrada estándar). Sin opciones muestra las 10 primeras.

tail
Permite ver las últimas líneas de un fichero (o de la entrada estándar). Sin opciones muestra las 10 últimas.

more
Permite la observación pausada de un fichero (o de la entrada estándar). Pulsando la barra espaciadora avanza una página, con b o ^B retrocede una página, con q termina.

wc
Cuenta el número de bytes, palabras o líneas en un fichero (o en la entrada estándar).

who
Muestra los usuarios que en este momento están trabajando con el sistema.

df
Permite saber cuánto espacio libre hay en cada sistema de ficheros.

du
Dice cuántos bloques ocupa un directorio con todos sus ficheros y subdirectorios.

find
Realiza una búsqueda recursiva, comenzando por el directorio especificado y descendiendo por los subdirectorios.
Ej.: find / -name mifichero -print

Tipos de Usuarios

En el Sistema Operativo UNIX pueden interactuar los siguientes usuarios:

NOVATO:

- sabe que les muestra el contenido de un directorio
- usa el editor pero lo llama "vie"
- ha oído hablar de C pero nunca lo ha usado
- ha tenido su primera mala experiencia con rm
- se pregunta cómo leer el correo
- se pregunta por qué a sus compañeros les gusta tanto UNIX

USUARIO:

- utiliza vi y nroff de forma inexperta
- ha oído hablar de las expresiones regulares pero nunca ha visto una
- ha descubierto que - se antepone a las opciones del programa
- ha intentado escribir un programa en C pero decidió volver a Pascal
- se pregunta cómo mover un directorio- sabe cómo leer su correo y se pregunta cómo leer las news

USUARIO AVANZADO:

- utiliza nroff sin problemas y está aprendiendo a usar tbl y eqn
- utiliza grep para buscar cadenas fijas- ha descubierto que mv mueve directorios
- ha aprendido que learn(1) no propociona ninguna ayuda
- alguien le ha enseñado a escribir programas en C
- una vez utilizó sed para hacer una sustitución en un texto
- piensa que make es para cobardes

EXPERTO:

- utiliza sed cuando es necesario
- utiliza macros en vi, usa ex cuando es necesario
- escribe en las news en cuanto se le presenta la oportunidad
- escribe programas en C con vi y compila con cc- ha descubierto para qué sirven && y
- piensa que "human history" (la historia de la humanidad) empieza con !h

HACKER:

- utiliza sed y awk con comodidad
- utiliza características de vi que no se encuentran en la documentación
- escribe código C con cat >foo.c y compila con !cc
- utiliza adb porque no confía en los depuradores de código fuente
- puede contestar preguntas acerca del entorno de usuario
- escribe sus propios macros para nroff
- escribe scripts para la Bourne shell (/bin/sh)- sabe cómo instalar bug fixes

GURÚ:

- escribe código para m4 y lex con comodidad
- escribe código ensamblador con cat >foo.s
- utiliza adb con el kernel mientras carga el sistema
- personaliza las aplicaciones parcheando el código fuente
- lee el código de drivers de dispositivos durante el desayuno
- puede responder cualquier pregunta sobre unix después de pensar un poco
- utiliza make para cualquier cosa que requiera de dos o más comandos
- ha aprendido a comprometer la seguridad de un sistema pero ya no lo necesitaWIZARD:
- escribe drivers usando cat >foo.o
- arregla bugs parcheando los binarios- puede responder cualquier pregunta antes de que la formules
- escribe sus propios paquetes de macros para troff- se tutea con Dennis, Bill, y Ken

Instalación

FUNCIONAMIENTO INICIAL

UNIX es un sistema operativo multiusuario, es decir, permite que más de un usuario utilice simultáneamente el sistema. Para hacer esto de forma coherente cada usuario debe identificarse para utilizar el sistema, es decir, se necesita una cuenta en el sistema. La cuenta está formada básicamente por un nombre de usuario y una clave de acceso o password. El usuario deberá introducir su nombre de usuario y su clave. A partir de ahí el sistema lanza un primer programa (generalmente lo que se conoce como una Shell) que se ejecuta con el identificador de ese usuario.

En el laboratorio se cuenta con un cierto número de ordenadores, dedicados para las prácticas de diversas asignaturas, así como para proyectistas. Cada grupo de prácticas dispone de una cuenta con su correspondiente nombre de usuario. Para iniciar la sesión, cada usuario debe introducir por teclado su nombre de usuario ante el mensaje por pantalla: "login:"
La primera vez, no se tendrá la password asignada, así que cuando salga por pantalla
"password:"se deberá conocer la password por defecto que se comunicará el primer día de prácticas.
Una vez iniciada la sesión, será cada usuario el que elija su propia password, mediante el comando yppasswd. La password debe tener al menos 8 caracteres y al menos un carácter debe ser numérico. Es obvio decir que cada password debe ser celosamente guardada por su dueño para evitar que un intruso entre en el sistema identificándose como él.

El sistema de ficheros montado en el laboratorio posibilita que los usuarios no se tengan que poner siempre en el mismo ordenador para trabajar con sus ficheros, por lo tanto puede emplearse cualquier ordenador o cambiar de uno a otro.

Una vez iniciada la sesión de trabajo se recomienda ejecutar el comando startx para iniciar una sesión del entorno de ventanas X-Window. Para concluir la sesión de trabajo hay que salir del entorno de ventanas, y luego, salir de la cuenta mediante el comando exit. Debe aparecer de nuevo la petición: login:

Nota importante: No apagar los ordenadores, aunque sí los monitores. UNIX es un sistema multiusuario y multitarea como ya se ha comentado, puede haber usuarios utilizando el sistema a través de la red que no desean ver cortado su trabajo.

Lo primero que debe saberse acerca del driver psqlODBC (o cualquier otro driver ODBC) es que debe existir un gestor de driver en el sistema donde va a usarse el driver ODBC. Existe un driver ODBCfreeware para Unix llamado iodbc que puede obtenerse en varios puntos de Internet, adem᳠de en AS200.
Las instrucciones para instalar iodbc van m᳠ allᠤel objeto de este documento, pero hay un fichero README que puede encontrarse dentro del paquete iodbc .shar comprimido que deberexplicar c󭯠realizar la instalaci󮠹 puesta en marcha.
Una vez dicho esto, cualquier gestor de driver que encuentre para su plataforma deberpoder manejar el driver psqlODBC o cualquier driver ODBC.

Los ficheros de configuraci󮠕nix para psqlODBC han sido remozados de forma intensiva recientemente para permitir una fᣩl construcci󮠥n las plataformas soportadas y para permitir el soporte de otras plataformas Unix en el futuro. Los nuevos ficheros de configuraci󮠹 construcci󮠰ara el driver deber convertir el proceso de construcci󮠥n algo simple para las plataformas soportadas. Actualmente estas incluyen Linux y FreeBSD but we esperamos que otros usuarios contribuyan con la informaci󮠮ecesaria para un rᰩdo crecimiento del n? de plataformas para las que puede ser construido el driver.

En la actualidad existen dos m鴯dos distintos para la construcci󮠤el driver en funci󮠤e c󭯠se haya recibido y sus diferencias se reducen a d󮤥 y c󭯠ejecutar configure y make. El driver puede ser construido en modo de equipo aislado, instalaci󮠤e s󬯠cliente, o como parte de la distribuci󮠼SPAN CLASS="PRODUCTNAME" >Postgres. La instalaci󮠡islada es conveniente si usted tiene aplicaciones clientes de ODBC en plataformas m?les y heterog鮥as. La instalaci󮠩ntegrada es conveniente cuando las plataformas cliente y servidora son las mismas, o cuando cliente y servidor tienen configuraciones de ejecuci󮠳imilares.

Especcamente si ha recibido el driverpsqlODBC como parte de la distribuci󮠼SPAN CLASS="PRODUCTNAME" >Postgres (a partir de ahora se referenciarᠣomo "instalaci󮠩ntegrada") entonces podrᠣonfigurar el driver ODBC desde el directorio principal de fuentes de la distribuci󮠼SPAN CLASS="PRODUCTNAME" >Postgres junto con el resto de las librer. Si lo recibi󠣯mo un paquete aislado, entonces podrᠥjecutar "configure" y "make" desde el directorio en el que desempaquet󠬯s fuentes.

Instalacion Integrada

Este procedimiento es apropiado para la instalaci󮠩ntegrada.
Especificar el argumento--with-odbc en la la de comandos para src/configure:
% ./configure --with-odbc
% make
Reconstruir la distribuci󮠼SPAN CLASS="PRODUCTNAME" >Postgres:
% make install
Una vez configurado, el driver ODBC serᠣonstruido e instalado dentro de las Ქas definidas para otros componentes del sistema Postgres. El fichero de configuraci󮠤e instalaci󮊼SPAN CLASS="ACRONYM" >ODBC serᠣolocado en el directorio principal del Ტol de destino Postgres (POSTGRESDIR). Esto puede ser cambiado en la la de comandos de make como
% make ODBCINST=filename install

Ventajas y Desventajas

Ventajas de UNIX
  • Unix es sin lugar a dudas el Sistema Operativo más importante y serio desde que en los años 70 los Sistemas Operativos se empezaron a estandarizar. Inicialmente UNIX fue desarrollado en C (de hecho C se inventó para desarrollar UNIX) y pertenecía a una empresa: la empresa AT&T Bell; tras una serie de malentendidos respecto a la propiedad de este sistema aparecen variantes en forma de Minix, FreeBSD (Berkeley San Diego), Linux, todas de tipo software libre, abierto, gratuito y en continuo desarrollo por programadores no pertecientes a ninguna empresa. Todos los tipos de UNIX comparten muchas ideas y en su conjunto se diferencian mucho de otros sistemas operativos menos robustos o sin la sencillez arquitectónica de UNIX.
  • UNIX es un sistema operativo multitarea (el propio kernel del sistema se encarga de repartir el tiempo de uso de procesador de cada aplicación que esté funcionando), y es multiusuario: para usar cualquier cosa en UNIX uno ha de estar identificado con un nombre de usuario/palabra de paso (login/password) que lo identifica de cara al sistema y le permite (con una permanente atención a privilegios de acceso a ficheros, memoria, puertos de comunicaciones, etc.) usar todo o parte de los recursos del sistema, protegiendo así al sistema ante ataques o uso inexperto del mismo.
  • UNIX presta (desde sus primeras versiones en los años 70) una especial atención a las comunicaciones, uso remoto de los equipos y compartición de recursos. Esto lo ha mantenido en cabeza siempre conforme estos aspectos de la informática se han popularizado.
  • UNIX es un sistema abierto: no sólo es posible acceder a las diferentes versiones desarrolladas para cada máquina conforme han ido creándose éstas, sino también a los programas originales (en C, porsupuesto) que son el código fuente de UNIX. Por otro lado, siendo un sistema operativo moderno y sencillo es la base del estudio del puntode partida del cómo funcionan (a nivel pedagógico) los sistemas operativos en general; típicamente el libro de texto de la mayoría de universidades de todo el mundo para la introducción al estudio de sistemas operativos es "Minix" una forma simplificada, pero operativa y compilable, de UNIX.
  • UNIX es un sistema especialmente robusto. Particularmente son elogiadas en este aspecto las versiones de UNIX con un microkernel más pequeños como son las implantadas en el UNIX Mach del ya abandonado sistema Next o el constantemente en desarrollo UNIX FreeBSD. La ventaja de este tipo de UNIX es que la parte protegida del sistema es menor y está menos acoplada con partes no esenciales del sistema. Esta ha sido siempre la filosofía de protección de este sistema. Y así es realmente. Cuando una aplicación se bloquea por algún tipo de error de funcionamiento, el resto del sistema permanece en correcto funcionamiento sin verse afectado, siendo fácil, en general, el volver al punto en el que se estaba trabajando.

Desventajas de UNIX

  • La interfaz de usuario no es muy amistosa en algunas versiones.
  • Requiere capacitación, ya que debido a su complejidad, no cualquiera puede usarlo.
  • Padece de la falta de aplicaciones comerciales con nombres importantes.
  • La efectividad como servidor de archivos e impresión no es tan eficiente como en otros NOS.
  • Hay discrepancias entre los distintos diseñadores y vendedores de UNIX.

Caracteristicas

  • Cuando arranca un servidor de Unix, se carga el kernel a memoria. El kernel es un programa ejecutable, producto de la compilación de un juego de programas fuentes de Lenguaje C, normalmente llamado /unix.
  • El Unix utiliza y administra muy eficientemente la memoria. En la memoria libre atiende a los procesos. A cada proceso le da la cantidad exacta de memoria que aquél necesite, desde pocos kilobytes hasta varios megabytes. Cuando se acaba la memoria, utiliza el Area de Swap que es una memoria virtual. Esto permite que se pueda ejecutar un programa que sea más grande que la memoria RAM total que tenga un servidor de Unix.
  • El Unix ha sido desarrollado para el procesamiento de textos y por ello tiene una gran cantidad de comandos y herramientas lo cual lo hace muy poderoso. Inclusive, hay Sistemas Operativos que corren sobre Unix.
  • Es un Sistema Operativo muy seguro. Cumple con las normas más estrictas en lo que a seguridad se refiere.
  • El Unix cumple con más de 1000 estandares. Sus comandos, herramientas y protocolos están basados y cumplen con estandares, algunos de facto y otros de jure.
  • Un disco es dividido en varios discos lógicos y al menos una área de swap. Cada disco lógico se llama File System. Un File System es una estructura muy bien organizada. El área de swap es una división del disco sin formato, es decir, es un pedazo del disco en crudo. Los directorios y archivos de un File System se representan como un árbol que tiene una sola raíz y muchas ramas, en orden jerárquico.
  • Existe un File System principal que es donde está la única raíz. Para tener acceso a los otros File Systems, éstos se "injertan" en cualquier directorio.
  • El Unix trabaja todo en memoria RAM y actualiza cada 30 segundos los File Systems evitando así el excesivo acceso a los discos fijos.
  • El Unix tiene su propia idea de la hora. No se basa en la hora del CMOS de la computadora, sino que lleva en memoria su propio contador que registra cu ntos segundos han pasado desde el 1 de septiembre de 1970. Permite que cada usuario tenga su propia hora, basada en la Zona de Tiempo Horaria donde se encuentre.
  • Para el Unix todo es un archivo. Permite crear archivos con nombres hasta de 255 caracteres de largo.
  • Permite tener conectados muchos usuarios (hasta más de mil) ya sea por medio de terminales tontas conectadas a puertos seriales o por medio de la red por telnet, rlogin o cualquier otro servicio de red. Estos usuarios pueden estar en lugares locales o remotos.
  • Cada usuario puede interactuar con el Sistema Operativo con el Interpretador de Comandos (Shell) de su agrado entre los que se destacan: El Bourne Shell (/bin/sh), el C Shell (/bin/csh), El Korn Shell (/bin/ksh), el Bourne Again Shell (/bin/bash).

¿Para que SIrve?

UNIX permiten múltiples tareas y múltiples usuarios. Su sistema de archivos proporciona un método sencillo de organizar archivos y permite la protección de archivos. Sin embargo, las instrucciones del UNIX no son intuitivas.
El sistema operativo cumple varias funciones:
  1. Administración del procesador: el sistema operativo administra la distribución del procesador entre los distintos programas por medio de un algoritmo de programación. El tipo de programador depende completamente del sistema operativo, según el objetivo deseado.
  2. Gestión de la memoria de acceso aleatorio: el sistema operativo se encarga de gestionar el espacio de memoria asignado para cada aplicación y para cada usuario, si resulta pertinente. Cuando la memoria física es insuficiente, el sistema operativo puede crear una zona de memoria en el disco duro, denominada "memoria virtual". La memoria virtual permite ejecutar aplicaciones que requieren una memoria superior a la memoria RAM disponible en el sistema. Sin embargo, esta memoria es mucho más lenta.
  3. Gestión de entradas/salidas: el sistema operativo permite unificar y controlar el acceso de los programas a los recursos materiales a través de los drivers (también conocidos como administradores periféricos o de entrada/salida).
  4. Gestión de ejecución de aplicaciones: el sistema operativo se encarga de que las aplicaciones se ejecuten sin problemas asignándoles los recursos que éstas necesitan para funcionar. Esto significa que si una aplicación no responde correctamente puede "sucumbir".
  5. Administración de autorizaciones: el sistema operativo se encarga de la seguridad en relación con la ejecución de programas garantizando que los recursos sean utilizados sólo por programas y usuarios que posean las autorizaciones correspondientes.
  6. Gestión de archivos: el sistema operativo gestiona la lectura y escritura en el sistema de archivos, y las autorizaciones de acceso a archivos de aplicaciones y usuarios.
  7. Gestión de la información: el sistema operativo proporciona cierta cantidad de indicadores que pueden utilizarse para diagnosticar el funcionamiento correcto del equipo.

martes, 22 de julio de 2008

¿Qué es?

Unix (registrado oficialmente como UNIX®) es un sistema operativo portable, multitarea y multiusuario. 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.

SISTEMA OPERATIVO UNIX

HISTORIA


Ken Thompson y Dennis Ritchie

El Sistema Operativo UNIX fue desarrollado a principios de 1969 por un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Ken Thompson, Dennis Ritchie y Douglas McIlroy.

A finales de 1960, 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 escribió nuevamente el programa, con ayuda de Dennis Ritchie, 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. 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 Uniplexed Information and Computing System, pues sólo prestaba servicios a dos usuarios (de acuerdo a Andrew Tanenbaum, era sólo a un usuario). 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 (pues eunuchs, en inglés, es un homófono de UNICS), se cambió el nombre a UNIX, dando origen al legado que llega hasta nuestros días.


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 (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 Thomson y Ritchie publicaron un manual de programación de UNIX (título original en inglés: "UNIX Programmer's Manual").


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 (de esta manera, se volvía portable) 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.