SISTEMA OPERATIVO UNIX

14 Nov

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, 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. 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.

SISTEMA OPERATIVO UNIX

HISTORIA

 

Ken Thompson y Dennis Ritchie, creadores de Unix.

Unix es una marca registrada de los Laboratorios Bell. “UNIX” no tiene un significado especial, no es un acrónimo;  sino un juego de palabras que imita a MULTICS,  el sistema operativo en que unos programadores  trabajaron antes de iniciar el Unix.

Pareciera mentira pero podríamos decir que el Unix nació a causa de un juego el  “Space Travel” desarrollado por Ken Thompson . Este juego corría bajo MULTICS pero los resultados eran insatisfactorios.

Transcurría el año 1969 y Thompson encontró una computadora chica  donde correrlo, la PDP-7 al cual proveía un buen manejo de gráficos.

Una vez transportado el programa necesitó mejorar el ambiente (environment) de desarrollo y fue así como creó junto con  Dennis Ritchie, un nuevo sistema operativo (S.O) para esa máquina; donde incluyeron un sistema de archivos, un subsistema de procesos y un pequeño conjunto de utilitarios. A este  nuevo sistema se le dio el nombre de Unix.

En 1971 este sistema fue portado a una PDP-11 (ocupaba 16 K para el sistema, 8 K para programas de usuario y 512 K en disco), que eran más avanzados que el obsoleto PDP-7. Estos sistemas fueron los dominantes en el mundo de los minicomputadores en la década de los 70.

Luego de un tiempo en el que el sistema era muy estable, Thompson decidió escribirlo en un  lenguaje de alto nivel, lo comenzó a escribir en lenguaje “B”. Este lenguaje tenía muchas limitaciones (era interpretado y no tenía tipos de datos estructurado), entonces fue mejorado por  Ritchie y se lo rebautizó como “C”.

En 1973, Ritchie  y Thompson rescribieron el núcleo de Unix en C, rompiendo así con la tradición  de que el software de sistemas está escrito en lenguaje ensamblador.

Hacia 1974 este S.O fue introducido en las universidades “con fines educacionales” y no pasaron unos años que ya estaba disponible para uso comercial. En estos tiempos  los sistemas Unix prosperaron en los Laboratorios Bell y de allí  se difundieron a los laboratorios, a los proyectos de desarrollo de software y a las compañías de teléfono  en Estados Unidos.

En el período 1977 a 1982  los laboratorios  Bell y AT&T acordaron agregar nuevas variantes y nace comercialmente el Unix System III. Luego de un  tiempo y con otras modificaciones nace el System V. A partir de este momento las instalaciones de sistemas Unix crecieron en todo el mundo.

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 from Bell Labs, 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 1.

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, Berkeley. También contaba con compatibilidad con las máquinas VAX de la compañía DEC.

En 1982 la empresa Microsoft  desarrolla el S.O XENIX usando el código fuente de Unix. Quien hubiera creído que Microsoft desarrollaría  un sistema el cual hoy es su competidor más aguerrido en el mercado. La historia  suele tener tantos interrogantes y uno de ellas es porque Microsoft no puso más empeño en Unix  y se volcó totalmente al D.O.S, un sistema que delante de Unix es como un grano de arena.

Hacia 1991, un estudiante de ciencias de la computación de la Universidad de Helsinki, llamado Linus Torvalds desarrolló un núcleo para computadoras con arquitectura x86 de Intel que emulaba 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 Proyecto GNU comenzó a utilizar el núcleo Linux junto a sus programas.

En 1993, la compañía Novell adquirió la división Unix Systems Laboratories de AT&T junto con su propiedad intelectual.15 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.

Aunque BSD ganó el juicio, Novell descubrió que gran parte del código de BSD fue copiada ilegalmente en UNIX System V. En realidad, la propiedad intelectual de Novell se reducía a unos cuantos archivos fuente. La correspondiente contra-demanda acabó en un acuerdo extrajudicial cuyos términos permanecen bajo secreto a petición de Novell.

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.

OBJETIVOS

  • Brindar 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.

 

  • Transportar  un sistema operativo UNIX a otra máquina, es un enorme acervo de programas de utilidad general queda disponible en la máquina de destino.

CARACTERISTICAS

  • Es interactivo: permite el diálogo entre el usuario y el computador. El sistema acepta órdenes, las ejecuta y se dispone a esperar otras nuevas.
  • Es multitarea: permite  que se puedan ejecutar varios procesos al mismo tiempo compartiendo el uso del procesador.
  • Es multiusuario: permite a varios usuarios compartir los recursos del computador simultáneamente.
  • Es portable: es un sistema independiente del procesador y del equipo, esto se debe a que en su mayoría está escrito en “C”, por lo cual puede ser portado a cualquier computador.
  • Posee distintos niveles de seguridad, incluyendo claves de ingreso al sistema; y permisos de acceso a los archivos y directorios. Contiene un potente lenguaje de programación de comando (SHELL) lo cual permite a los usuarios la creación de sus propios comando
  • Estructura jerárquica de archivos.
  • Permite trabajar en modo background, realizar tareas en segundo plano sin bloquear la terminal.
  • Mantiene colas de impresión (SPOOLER).
  • Maneja procesos diferidos, procesos que se ejecutan a determinado horario.
  • Provee utilitarios de manejo de texto.

 

FUNCIONAMIENTO

Dado que el sistema UNIX es un sistema operativo modular, subdividimos este tema en los siguientes:

  • KERNEL (NÚCLEO DEL SISTEMA OPERATIVO)

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 artes 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.

  • ADMINISTRACIÓN DE ARCHIVOS Y DIRECTORIOS

Es una estructura de almacenamiento de información. Para Unix todo dispositivo de sistema es un archivo. Se pueden distinguir tres tipos de archivos:

  • Comunes (ordinary files): textos, programas fuente, objeto, ejecutables, etc. En este sistema operativo los archivos son sólo una secuencia de bytes (no tiene en cuenta registros, ni índices, ni reconoce marca de eof). La asignación de espacio es dinámica.
  • Especiales (special files): dispositivos físicos (terminales, impresoras, cintas, etc.) y otros (named pipes por ejemplo).
  • Directorios (directory files): son archivos que a su vez contiene referencias de archivos. Los directorios se crean para mantener la información en forma ordenada, agrupan archivos con alguna relación. A un directorio contenido dentro de otro directorio se le denomina subdirectorio y el directorio que lo contiene se llama directorio padre.

MANIPULACIÓN DE ARCHIVOS

En distintos directorios puede existir un archivo con el mismo nombre, sin que el sistema tenga problemas en reconocerlo. Esto se debe a que no sólo tiene en cuenta su nombre local, sino que toma el nombre completo considerando todos los directorios por los que debe pasar desde la raíz “/” hasta llegar a él.

Al nombre completo se lo llama “pathname” del archivo ya que indica el camino en el árbol del filesystem hasta llegar al archivo.

El formato es el siguiente:

 /arch1/ arch2 / ……archn/ arch

Donde los arch i (1<= i <= n), son archivos directorios y arch puede ser un archivo directorio o un archivo común.

La primer “/” indica la raíz del filesystem , y las restantes son sólo separadores de archivos. Debido a esto es que un nombre de archivo no puede contener una “/”.

Todo archivo directorio en el filesystem es un nodo no terminal con una referencia a sí mismo llamada ‘.’, y una referencia al padre llamada ‘..’.

Al referenciarse a un archivo en cualquier comando, se lo puede hacer con su pathname completo, o sea indicando el camino en el filesystem desde root “/” o con su pathname relativo, o sea a partir del directorio donde el usuario se encuentra posicionado.

  • MANEJO DE ARCHIVOS DE INFORMACIÓN

Como ya se describió, la estructura básica del sistema de archivos es jerárquica, lo que significa que los archivos están almacenados en varios niveles. Se puede tener acceso a cualquier archivo mediante su trayectoria, que especifica su posición absoluta en la jerarquía, y los usuarios pueden cambiar su directorio actual a la posición deseada. Existe también un mecanismo de protección para evitar accesos no autorizados. Los directorios contienen información para cada archivo, que consiste en su nombre y en un número que el Kernel utiliza para manejar la estructura interna del sistema de archivos, conocido como el nodo-i. Hay un nodo-i para cada archivo, que contiene información de su directorio en el disco, su longitud, los modos y las fechas de acceso, el autor, etc. Existe, además, una tabla de descriptores de archivo, que es una estructura de datos residente en el disco magnético, a la que se tiene acceso mediante el sistema mencionado de E/S por bloques.

El control del espacio libre en el disco se mantiene mediante una lista ligada de bloques disponibles. Cada bloque contiene la dirección en disco del siguiente bloque en la cadena. El espacio restante contiene las direcciones de grupos de bloques del disco que se encuentren libres. De esta forma, con una operación de E/S, el sistema obtiene un conjunto de bloques libres y un apuntador para conseguir más.

Las operaciones de E/S en archivos se llevan a cabo con la ayuda de la correspondiente entrada del nodo-i en la tabla de archivos del sistema. El usuario normalmente desconoce los nodos-i porque las referencias se hacen por el nombre simbólico de la trayectoria. Los procesos emplean internamente funciones primitivas (llamadas al sistema) para tener acceso a los archivos; las más comunes son open, creat, read, write, seek, close y unlink, aunque sólo son empleadas por los programadores, no por los usuarios finales del sistema.

Toda esta estructura física se maneja “desde afuera” mediante la filosofía jerárquica de archivos y directorios ya mencionada, y en forma totalmente transparente para el usuario. Además, desde el punto de vista del sistema operativo, un archivo es muy parecido a un dispositivo.

Las ventajas de tratar a los dispositivos de E/S en forma similar a los archivos normales son múltiples: un archivo y un dispositivo de E/S se tornan muy parecidos; los nombres de los archivos y de los dispositivos tienen la misma sintaxis y significado, así que a un programa que espera un nombre de archivo como parámetro puede dársele un nombre de dispositivo (con esto se logra interacción rápida y fácil entre procesos de alto nivel).

El sistema Unix ofrece varios niveles de protección para el sistema de archivos, que consisten en asignar a cada archivo el número único de identificación de su dueño, junto con nueve bits de protección, que especifican permisos de lectura, escritura y ejecución para el propietario, para otros miembros de su grupo (definido por el administrador del sistema) y para el resto de los usuarios. Antes de cualquier acceso se verifica su validez consultando estos bits, que residen en el nodo-i de todo archivo. Además, existen otros tres bits que se emplean para manejos especiales, relacionados con la clave del superusuario.

Otra característica de Unix es que no requiere que el conjunto de sistemas de archivos resida en un mismo dispositivo.

Es posible definir uno o varios sistemas “desmontables”, que residen físicamente en diversas unidades de disco. Existe una orden (mkfs) que permite crear un sistema de archivos adicional, y una llamada al sistema (mount) con la que se añade (y otra con la que se desmonta) uno de ellos al sistema de archivos global.

EI control de las impresoras de una computadora que funciona con el sistema operativo Unix consiste en un subsistema (SPOOL) que se encarga de coordinar los pedidos de impresión de múltiples usuarios. Existe un proceso de Kernel que en forma periódica revise las colas de servicio de las impresoras para detectar la existencia de pedidos e iniciar entonces las tareas de impresión. Este tipo de procesos, que son activados en forma periódica por el núcleo del sistema operativo, reciben en Unix el nombre de daemons (duendes), tal vez porque se despiertan y aparecen sin previo aviso. Otros se encargan de activar procesos en tiempos previamente determinados por el usuario, o de escribir periódicamente los contenidos de los buffers de memoria en el disco magnético.

  • MANEJO DEL PROCESADOR

En Unix se ejecutan programas en un medio llamado “proceso de usuario”. Cuando se requiere una función del Kernel, el proceso de usuario hace una llamada especial al sistema y entonces el control pasa temporalmente al núcleo. Para esto se requiere de un conjunto de elementos de uso interno, que se mencionan a continuación.

Se conoce como imagen a una especie de fotografía del ambiente de ejecución de un proceso, que incluye una descripción de la memoria, valores de registros generales, status de archivos abiertos, el directorio actual, etcétera. Una imagen es el estado actual de una computadora virtual, dedicada a un proceso en particular.

Un proceso se define como la ejecución de una imagen. Mientras el procesador ejecuta un proceso, la imagen debe residir en la memoria principal; durante la ejecución de otros procesos permanece primera en la memoria principal a menús que la aparición de un proceso activo de mayor prioridad la obligue a ser copiada al disco, como ya se dijo.

Un proceso puede encontrarse en uno de varios estados: en ejecución; listo para ejecutar, o en espera.

Cuando se invoca una función del sistema, el proceso de usuario llama al Kernel como subrutina. Hay un cambio de ambientes y, como resultado, se tiene un proceso del sistema. Estos dos procesos son dos fases del mismo original, que nunca se ejecutan en forma simultánea.

  • MANEJO DE MEMORIA

 Dependiendo de la computadora en la que se ejecute, Unix utiliza dos técnicas de manejo de memoria: swapping y memoria virtual.  Lo estándar en Unix es un sistema de intercambio de segmentos de un proceso entre memoria principal y memoria secundaria, llamado swapping lo que significa que se debe mover la imagen de un proceso al disco si éste excede la capacidad de la memoria principal, y copiar el proceso completo a memoria secundaria. Es decir, durante su ejecución, los procesos son cambiados de y hacia memoria secundaria conforme se requiera.

Si un proceso necesita crecer, pide más memoria al sistema operativo y se le da una nueva sección, lo suficientemente grande para acomodarlo. Entonces, se copia el contenido de la sección usada al área nueva, se libera la sección antigua y se actualizan las tablas de descriptores de procesos. Si no hay suficiente memoria en el momento de la expansión, el proceso se bloquea temporalmente y se le asigna espacio en memoria secundaria. Se copia a disco y, posteriormente, cuando se tiene el espacio adecuado – lo cual sucede normalmente en algunos segundos – se devuelve a memoria principal.

Está claro que el proceso que se encarga de los intercambios entre memoria y disco (llamado swapper) debe ser especial y jamás podrá perder su posición privilegiada en la memoria central. El Kernel se encarga de que nadie intente siquiera interrumpir este proceso, del cual dependen todos los demás. Este es el proceso 0. Cuando se decide traer a la memoria principal un proceso en estado de “listo para ejecutar”, se le asigna memoria y se copian allí sus segmentos. Entonces, el proceso cargado compite por el procesador con todos los demás procesos cargados. Si no hay suficiente memoria, el proceso de intercambio examina la tabla de procesos para determinar cuál puede ser interrumpido y llevado al disco.

Hay una pregunta que surge entonces: ¿cuál de los posibles procesos que están cargados será desactivado y cambiado a memoria secundaria? Los procesos que se eligen primero son aquellos que están esperando operaciones lentas (E/S), o que llevan cierto tiempo sin haberse movido al disco. La idea es tratar de repartir en forma equitativa las oportunidades de ejecución entre todos los procesos, tomando en cuenta sus historias recientes y sus patrones de ejecución.

Otra pregunta es ¿cuál de todos los procesos que están en el disco será traído a memoria principal?. La decisión se toma con base en el tiempo de residencia en memoria secundaria. El proceso más antiguo es el que se llama primero, con una pequeña penalización para los grandes.

Cuando Unix opera en máquinas más grandes, suele disponer de manejo de memoria de paginación por demanda. En algunos sistemas el tamaño de la página en Unix es de 512 bytes; en otros, de 1024. Para reemplazo se usa un algoritmo que mantiene en memoria las páginas empleadas más recientemente.

Un sistema de paginación por demanda ofrece muchas ventajas en cuanto a flexibilidad y agilidad en la atención concurrente de múltiples procesos y proporciona, además, memoria virtual, es decir, la capacidad de trabajar con procesos mayores que el de la memoria central. Estos esquemas son bastante complejos y requieren del apoyo de hardware especializado.

  • MANEJO DE ENTRADAS Y SALIDAS

El sistema de entrada/salida se divide en dos sistemas complementarios: el estructurado por bloques y el estructurado por caracteres. El primero se usa para manejar cintas y discos magnéticos, y emplea bloques de tamaño fijo (512 o 1024 bytes) para leer o escribir. El segundo se utiliza para atender a las terminales, líneas de comunicación e impresoras, y funciona byte por byte.

En general, el sistema Unix emplea programas especiales (escritos en C) conocidos como manejadores (drivers) para atender a cada familia de dispositivos de E/S. Los procesos se comunican con los dispositivos mediante llamadas a su manejador. Además, desde el punto de vista de los procesos, los manejadores aparecen como si fueran archivos en los que se lee o escribe; con esto se logra gran homogeneidad y elegancia en el diseño.

Cada dispositivo se estructura internamente mediante descriptores llamados número mayor, número menor y clase (de bloque o de caracteres). Para cada clase hay un conjunto de entradas, en una tabla, que aporta a los manejadores de los dispositivos. El número mayor se usa para asignar manejador, correspondiente a una familia de dispositivos; el menor pasa al manejador como un argumento, y éste lo emplea para tener acceso a uno de varios dispositivos físicos semejantes.

Las rutinas que el sistema emplea para ejecutar operaciones de E/S están diseñadas para eliminar las diferencias entre los dispositivos y los tipos de acceso. No existe distinción entre acceso aleatorio y secuencial, ni hay un tamaño de registro lógico impuesto por el sistema. El tamaño de un archivo ordinario está determinado por el número de bytes escritos en él; no es necesario predeterminar el tamaño de un archivo.

El sistema mantiene una lista de áreas de almacenamiento temporal (buffers), asignadas a los dispositivos de bloques. El Kernel usa estos buffers con el objeto de reducir el tráfico de E/S. Cuando un programa solicita una transferencia, se busca primero en los buffers internos para ver si el bloque que se requiere ya se encuentra en la memoria principal (como resultado de una operación de lectura anterior). Si es así, entonces no será necesario realizar la operación física de entrada o salida.

Existe todo un mecanismo de manipulación interna de buffers (y otro de manejo de listas de bytes), necesario para controlar el flujo de datos entre los dispositivos de bloques (y de caracteres) y los programas que los requieren.

Por último, y debido a que los manejadores de los dispositivos son programas escritos en lenguaje C, es relativamente fácil reconfigurar el sistema para ampliar o eliminar dispositivos de E/S en la computadora, así como para incluir tipos nuevos.

  • LENGUAJE DE CONTROL DEL SISTEMA OPERATIVO

Entre los rasgos distintivos de Unix está el lenguaje de control que emplea, llamado Shell. Es importante analizar dos funciones más de Shell, llamadas re direccionamiento e Interconexión.

Asociado con cada proceso hay un conjunto de descriptores de archivo numerados 0, I y 2, que se utilizan para todas las transacciones entre los procesos y el sistema operativo. El descriptor de archivo 0 se conoce como la entrada estándar; el descriptor de archivo 1, como la salida estándar, y el descriptor 2, como el error estándar. En general, todos están asociados con la terminal de vídeo, pero, debido a que inicialmente son establecidos por Shell, es posible reasignarlos.

Una parte de la orden que comience con el símbolo ? se considera como el nombre del archivo que será abierto por Shell y que se asociará con la entrada estándar; en su ausencia, la entrada estándar se asigna a la terminal. En forma similar, un archivo cuyo nombre está precedido por el símbolo > recibe la salida estándar de las operaciones.

CONCLUSIONES

  •  El sistema operativo Unix es un importante producto utilizado ampliamente en el mundo de los negocios,  y en el académico. Es  multiusuario, multitarea y además, proporciona un buen entorno para el trabajo en red.
  • 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 rende rizado de texto en la pantalla, entre otras cosas
  • 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..
  • Unix ofrece facilidades para la creación de programas y sistemas y el ambiente adecuado para las tareas de diseños de software. Se puede decir que el Lenguaje de programación C  se creó justamente para poder desarrollar el sistema operativo Unix.

LINKGRAFIA

INDICE

TEMAS                                                                                PÁGINAS

INTRODUCCIÓN                                                                          2

HISTORIA                                                                                     3-6

OBJETIVOS                                                                                 7

CARACTERISTICAS                                                                   8

FUNCIONAMIENTO                                                                     9-18

CONCLUSIONES                                                                         19

LINKGRAFIAS                                                                              20

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: