Es un sistema operativo multitarea y es multiusuario que trabaja y funciona de manera similar a Linux.
Funcionamiento básico de UNIX
Dado que el sistema UNIX es un sistema operativo modular, no podemos contener en un solo documento el cómo funciona, por lo anterior, subdividimos este tema en los siguientes:
• Kernel (núcleo del sistema operativo)
• Administración de archivos y directorios
• Manejo de archivos de información
• Manejo del Procesador
• Manejo de memoria
• Manejo de entradas y salidas
• Lenguaje de control del sistema operativo
KERNEL
El núcleo del sistema operativo Unix (llamado Kernel) es un programa escrito casi en su totalidad en lenguaje C.
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. 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.
Cuando se inicia la operación de la computadora, debe cargarse en la memoria una copia del núcleo, que reside en e] disco magnético (operación denominada bootstrap). 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. 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.
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 (usualmente. < CTL > - D). A partir de ese momento la terminal queda disponible para atender a un nuevo usuario.
ADMINISTRACIÓN DE ARCHIVOS
El sistema de archivos de Unix; está basado en un modelo arborescente y recursivo, en el cual los nodos pueden ser tanto archivos como directorios, y estos últimos pueden contener a su vez directorios o subdirectorios. Debido a esta filosofía, se maneja al sistema con muy pocas órdenes, que permiten una gran gama de posibilidades. Todo archivo de Unix está controlado por múltiples niveles de protección, que especifican los permisos de acceso al mismo.
La raíz del sistema de archivos (conocida como root ) se denota con el símbolo "/", y de ahí se desprende un conjunto de directorios que contienen todos los archivos del sistema de cómputo. Cada directorio, a su vez, funciona como la sub raíz de un nuevo árbol que depende de él y que también puede estar formado por directorios o subdirectorios y archivos. Un archivo siempre ocupará el nivel más bajo dentro del árbol, porque de un archivo no pueden depender otros; si así fuera, sería un directorio. Es decir, los archivos son como las hojas del árbol.
Se define en forma unívoca el nombre de todo archivo (o directorio) mediante lo que se conoce como su trayectoria (path name): es decir, el conjunto completo de directorios, a partir de root (/), por los que hay que pasar para poder llegar al directorio o archivo deseado. Cada nombre se separa de los otros con el símbolo /, aunque tan sólo el primero de ellos se refiere a la raíz.
Unix incluye, además, múltiples esquemas para crear, editar y procesar documentos. Existen varios tipos de editores, formadores de textos, microprocesadores para textos, formadores de tablas, preprocesadores de expresiones matemáticas y un gran número de ayudas y utilerías diversas, que se mencionan más adelante.
A continuación se describe el modo de funcionamiento de Unix, con base en un modelo de estudio de sistemas operativos que lo divide en "capas" jerárquicas para su mejor comprensión.
MANEJO DE ARCHIVOS Y 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.
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.
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).
* Otra característica de Unix es que no requiere que el conjunto de sistemas de archivos resida en un mismo dispositivo.
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 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.
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 mencionado antes. 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 examine la tabla de procesos para determinar cuál puede ser interrumpido y llevado al disco.
Hay una pregunta que surge entonces es ¿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.
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; la 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 redireccionamiento 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.
CARACTERISTICAS DE UNIX
Características Generales:
• 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.
• Posee las siguientes características:
- Es un sistema operativo multiusuario, con capacidad de simular multiprocesamiento y procesamiento no interactivo.
- Está escrito en un lenguaje de alto nivel: C.
- Dispone de un lenguaje de control programable llamado SHELL.
- 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.
- Tiene capacidad de interconexión de procesos.
- Permite comunicación entre procesos.
- Emplea un sistema jerárquico de archivos, con facilidades de protección de archivos, cuentas y procesos.
- Tiene facilidad para redireccionamiento de Entradas/Salidas.
- Garantiza un alto grado de portabilidad.
• El sistema se basa en un Núcleo llamado Kernel, que reside permanentemente en la memoria, y que atiende a todas las llamadas del sistema, administra el acceso a los archivos y el inicio o la suspensión de las tareas de los usuarios.
• La comunicación con el sistema UNIX se da mediante un programa de control llamado SHELL. Este es un lenguaje de control, un intérprete, y un lenguaje de programación, cuyas características lo hacen sumamente flexible para las tareas de un centro de cómputo. Como lenguaje de programación abarca los siguientes aspectos:
- Ofrece las estructuras de control normales: secuenciación, iteración condicional, selección y otras.
- Paso de parámetros.
- Sustitución textual de variables y Cadenas.
- Comunicación bidireccional entre órdenes de shell.
• El shell permite modificar en forma dinámica las características con que se ejecutan los programas en UNIX:
• Las entradas y salidas pueden ser redireccionadas o redirigidas hacia archivos, procesos y dispositivos;
• Es posible interconectar procesos entre sí.
• Diferentes usuarios pueden "ver" versiones distintas del sistema operativo debido a la capacidad del shell para configurar diversos ambientes de ejecución. Por ejemplo, se puede hacer que un usuario entre directamente a su sección, ejecute un programa en particular y salga automáticamente del sistema al terminar de usarlo.
REQUERIMIENTOS DE UNIX
Antes de que se precipite e instale el software, tiene que asegurarse de los requerimientos y limitaciones de hardware.
Tenga en cuenta que fue desarrollado por sus usuarios. Esto significa, en la mayoría de las ocasiones, que el hardware soportado por él es únicamente aquél al que usuarios y desarrolladores tienen realmente acceso. Según van apareciendo, se van soportando la mayor parte del hardware y los periféricos populares para sistemas 80386/80486 (de hecho, soporta más hardware que algunas implementaciones comerciales de UNIX). Sin embargo, aún no son reconocidos algunos de los periféricos más oscuros.
Otro inconveniente en el soporte de hardware es que muchas compañías han decidido conservar las especificaciones del interfaz de su hardware en propiedad. Como consecuencia de esto, los desarrolladores voluntarios simplemente no pueden escribir controladores (drivers) para esos periféricos (y si pudieran, tales controladores serían propiedad de la compañía dueña del interfaz, lo cual violaría la GPL). Las compañías que mantienen interfaces en propiedad, escriben sus propios controladores para sistemas operativos como MS-DOS y Microsoft Windows; el usuario final (es decir, usted) no necesita saber nada del interfaz.
En algunos casos, los programadores han intentado escribir controladores "clonados" basándose en supuestos acerca del interfaz. En otras ocasiones, los desarrolladores trabajarán con la compañía en cuestión e intentarán obtener información del interfaz del periférico con un nivel de éxito que puede variar.
En las siguientes secciones, trataremos de resumir los requerimientos hardware.
Aclaración: Gran parte del soporte para hardware para está actualmente en fase de desarrollo. Algunas distribuciones puede que soporten, o no, estas características experimentales. Esta sección presenta en primer lugar el hardware que ya lleva cierto tiempo soportado y del que se sabe de su estabilidad.
En las subsunciones siguientes se tratara cada punto del hardware correspondiente para dicho soporte, enumerando cada componente del ordenador:
• Requisitos de Placa Base y de CPU
• Requisitos de memoria
• Requisitos de la controladora de disco duro
• Requisitos de espacio en disco
• Requisitos de monitor y adaptador de vídeo
• Hardware diverso
• Ratones y otros dispositivos apuntadores
• Unidades de CD-ROM
• Unidades de cinta
• Impresoras
• Módems
• Tarjetas Ethernet
VENTAJAS Y DESVENTAJAS DE UNIX
El sistema operativo UNIX es un sistema poderoso y confiable, puede trabajar en diferentes plataformas, maneja la protección a nivel archivo y directorio sin la necesidad e estar tecleando contraseñas, se puede restringir el acceso a ciertos niveles dentro del árbol jerárquico de directorios.
El manejo y la manipulación de procesos es mucho más amplio a comparación de otros sistemas operativos.
Muchos usuarios pueden ingresar al sistema y ser atendidos por diferentes procesos además de tener ciertos permisos diferentes a otros usuario conectados, esto hace que el control de procesos y de información este más controlada.
El problema con el sistema UNIX, es su complejidad en un inicio, ya que no es muy amigable y da por hecho de que el usuario ya conoce lo que es un sistema operativo.
Si la mayoría de los usuarios de computadora empezaran a utilizar el sistema operativo UNIX, pensarían que el manejo de las computadoras es muy complicado y las tomarían como un castigo y no como una herramienta.
Para que UNIX sea un poco mas amigable existen visualizadores gráficos que hacen que el manejo de ciertas tareas administrativas sea muy parecido a Windows.
Otra ventaja es la de NO TENER VIRUS. Esto se debe a su diseño.
Un virus para actuar requiere 2 requisitos:
• Poder ejecutarse.
• Poder escribir en otros archivos.
Estos 2 requisitos se cumplen por default en Windows.
En UNIX el primero se evita por hecho de que un programa solo se puede ejecutar si tiene activado el permiso de ejecución. Este permiso NO se enciende solo, hay que encenderlo explícitamente por parte del usuario.
El segundo se evita por el permiso de escritura. Un virus de actuar solo podría a lo más dañar los archivos del usuario dueño de la cuenta donde se ejecutase el virus. No podría alojarse en cualquier parte del disco.
VENTAJAS
• PRECIO: Podemos descargarlo gratuitamente desde internet o comprarlo a un precio accesible
• REQUERIMIENTOS: Funciona exclusivamente en modo de texto sin la necesidad de cargar un entorno grafica y puede ejecutarse en cualquier maquina.
• ESTABILIDAD: A tener su núcleo basado en Unix, enreda esa estabilidad que siempre ha caracterizado a los sistemas Unix.
• SEGURIDAD: A nivel de servidor podemos encontrar que la seguridad del Unix frente a otros servidores del mercado es mucho mayor.
• COMPATIBILIDAD: Reconoce la mayoría de otros sistemas operativos en una red.
• MULTITAREA REAL: Ejecuta varias aplicaciones y procesos simultáneamente.
• VELOSIDAD: Su entorno grafico para ejecutar servicios o aplicaciones hacen que su velocidad sea muy superior a los actuales sistemas operativos.
• CODIGO FUENTE: Es posible modificarlo y adaptarlos a nuestras necesidades libremente.
• ENTORNO DE PROGRAMACION: Se puede programar para otro sistema operativo.
• CRECIMIENTO: Gracias a la licencia GNU, el código abierto, y la gran comunidad de miles de programadores es los más rápidos que existen en la actualidad.
DESVENTAJAS
• SOPORTE: Algunos Linux no cuentan con empresas que lo respalden, por lo cual no existe un soporte sólido como el de otros sistemas operativos.
• SIMPLICIDAD: Gracias al entorno de ventanas, sus escritorios y las aplicaciones diseñadas específicamente, para el cada día resulta más sencillo su integración y uso.
• SOFWARE: A veces es difícil encontrar una aplicación determinada, y lo más importante, es que no todas las aplicaciones esta en castellano.
• HARDWARE: Actualmente Linux soporta un máximo de 16 procesadores simultáneamente contra los 64 procesadores de otros sistemas operativos.