Ilustrados comunidad mundial educativa
Inicio | Escribenos
User: Pass: Recordar ó (Registrate!)

| !Publicar Articulo¡

Sistema Operativo UNIX

Resumen: 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 sistrema 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. Administración de archivos y directorios. Manejo del procesador y de la memoria. Entradas y salidas.
408 visitas
Rating: 0
Tell a Friend
Autor: Diego Martinoli

SISTEMA OPERATIVO UNIX

 

Características Generales:

 

Es un sistema operativo de tiempo compartido, controla los recursos de unacomputadora y los asigna entre los usuarios. Permite a los usuarios correr susprogramas. Controla los dispositivos de periféricos conectados a la máquina.

 

Posee las siguientes características:

- Es un sistrema operativo multiusuario, con capacidad de simularmultiprocesamiento 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 ambienteadecuado 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ónde 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 permanentementeen la memoria, y que atiende a todas las llamadas del sistema, administra elacceso a los archivos y el inicio o la suspención de las tareas de losusuarios.

La comunación con el sistema UNIX se da mediante un programa de controlllamado SHELL. Este es un lenguaje de control, un intérprete, y un lenguaje deprogramación, cuyas características lo hacen sumamente flexible para lastareas de un centro de cómputo. Como lenguaje de programación abarca lossiguientes aspectos:

- Ofrece las estructuras de control normales: secuenciación, iteracióncondicional, 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 seejecutan los programas en UNIX:

Las entradas y salidas pueden ser redireccionadas o redirigidas haciaarchivos, procesos y dispositivos;

Es posible interconectar procesos entre sí.

Diferentes usuarios pueden "ver" versiones distintas del sistemaoperativo debido a la capacidad del shell para configurar diversos ambientes deejecución. Por ejemplo, se puede hacer que un usuario entre directamente a susección, ejecute un programa en particular y salga automáticamente del sistemaal terminar de usarlo.

 

Elnúcleo del Sistema Operativo

 

 

El núcleo del sistema operativo Unix (llamado Kernel) es un programa escritocasi en su totalidad en lenguaje C, con excepción de una parte del manejo deinterrupciones, expresada en el lenguaje ensamblador del procesador en el queopera.

Las funciones del núcleo son permitir la existencia de un ambiente en el quesea posible atender a varios usuarios y múltiples tareas en forma concurrente,repartiendo al procesador entre todos ellos, e intentando mantener en grado óptimola atención individual.

El Kernel opera como asignador de recursos para cualquier proceso quenecesite hacer uso de las facilidades de cómputo. Es el componente central deUnix 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 entreprocesos, 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 losdispositivos periféricos.

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

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

 

Cuando se inicia la operación de la computadora, debe cargarse en la memoriauna copia del núcleo, que reside en e] disco magnético (operación denominadabootstrap). Para ello, se deben inicializar algunas interfaces básicas dehardware; entre ellas, el reloj que proporciona interrupciones periódicas. ElKernel también prepara algunas estructuras de datos que abarcan una sección dealmacenamiento temporal para transferencia de información entre terminales yprocesos, una sección para almacenamiento de descriptores de archivos y unavariable que indica la cantidad de memoria principal.

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

Después de haber creado el proceso 0, se hace una copia del mismo, con loque 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énforman parte del núcleo. Es decir, se inicia una cadena de activaciones deprocesos, 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 aentrar o salir de la memoria central. A partir de ese momento se conoce el número1 como proceso de inicialización del sistema, init.

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

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

A partir de ese momento el responsable de atender al usuario en esa terminales el intérprete Shell.

Cuando se desea terminar la sesión hay que desconectarse de Shell (y, por lotanto, de Unix), mediante una secuencia especial de teclas (usualmente. < CTL> - D). A partir de ese momento la terminal queda disponible para atender aun nuevo usuario.

  

Administración de Archivos y Directorios

 

El sistema de archivos de Unix; esta basado en un modelo arborescente yrecursivo, en el cual los nodos pueden ser tanto archivos como directorios, yestos últimos pueden contener a su vez directorios o subdirectorios. Debido aesta filosofía, se maneja al sistema con muy pocas órdenes, que permiten unagran gama de posibilidades. Todo archivo de Unix está controlado por múltiplesniveles de protección, que especifican los permisos de acceso al mismo. Ladiferencia que existe entre un archivo de datos, un programa, un manejador deentrada/salida o una instrucción ejecutable se refleja en estos parámetros, demodo que el sistema operativo adquiere características de coherencia yelegancia que lo distinguen.

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 contienentodos los archivos del sistema de cómputo. Cada directorio, a su vez, funcionacomo la subraíz de un nuevo árbol que depende de él y que también puedeestar formado por directorios o subdirectorios y archivos. Un archivo siempreocupará el nivel más bajo dentro del árbol, porque de un archivo no puedendepender otros; si así fuera, sería un directorio. Es decir, los archivos soncomo las hojas del árbol.

Se define en forma unívoca el nombre de todo archivo (o directorio) mediantelo que se conoce como su trayectoria (path name): es decir, el conjunto completode directorios, a partir de root (/), por los que hay que pasar para poderllegar al directorio o archivo deseado. Cada nombre se separa de los otros conel símbolo /, aunque tan sólo el primero de ellos se refiere a la raíz.

Por ejemplo, el archivo

u/gerencia/abril94l/carta2

tiene toda esta trayectoria como nombre absoluto, pero se llamagerencia/abril94l/carta2, sin 1ra diagonal inicial, si se observa desde eldirectorio /u. Para los usuarios que están normalmente en el directorio/u/gerencia, el archivo se llama abril94l/carta2. Así, también puede existirotro archivo llamado carta2, pero dentro de algún otro directorio y en caso deser necesario se emplearía el nombre de la trayectoria (completa o en partes,de derecha a izquierda) para distinguirlos. Unix ofece medios muy sencillos paracolocarse en diferentes puntos del árbol que forma el sistema de archivos, quepara el ejemplo anterior podría ser el siguiente:

 

Como se dijo antes, desde el punto de vista del directorio abril94, que a suvez pertenece al directorio gerencia del directorio /u, basta con el nombrecarta2 para apuntar al archivo en cuestión.

En esta forma se maneja el sistema completo de archivos y se dispone de unconjunto de órdenes de Shell (además de múltiples variantes) para hacerdiversas manipulaciones, como crear directorios, moverse dentro del sistema dearchivos, copiarlos, etcétera.

Unix incluye, además, múltiples esquemas para crear, editar y procesardocumentos. Existen varios tipos de editores, formadores de textos,macroprocesadores para textos, formadores de tablas, preprocesadores deexpresiones matemáticas y un gran número de ayudas y utilerías diversas, quese mencionan más adelante.

A continuación se describe el modo de funcionamiento de Unix, con base en unmodelo de estudio de sistemas operativos que lo divide en "capas" jerárquicaspara 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 puedetener acceso a cualquier archivo mediante su trayectoria, que especifica suposición absoluta en la jerarquía, y los usuarios pueden cambiar su directorioactual a la posición deseada. Existe también un mecanismo de protección paraevitar accesos no autorizados. Los directorios contienen información para cadaarchivo, que consiste en su nombre y en un número que el Kernel utiliza paramanejar 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 enel 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 datosresidente en el disco magnético, a la que se tiene acceso mediante el sistemamencionado de E/S por bloques.

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

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

Toda esta estructura física se maneja "desde afuera" mediante lafilosofía jerárquica de archivos y directorios ya mencionada, y en formatotalmente transparente para el usuario. Además, desde el punto de vista delsistema operativo, un archivo es muy parecido a un dispositivo.

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

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

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

Es posible definir uno o varios sistemas "desmontables", queresiden físicamente en diversas unidades de disco. Existe una orden (mkfs) quepermite 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 dearchivos global.

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

Procesos. Manejo del Procesador

 

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

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

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

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

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

Existe una tabla de procesos que contiene una entrada por cada uno de elloscon los datos que requiere el sistema:

identificación, direcciones de los segmentos que emplea en la memoria,información que necesita el scheduler y otros. la entrada de la tabla deprocesos se asigna cuando se crea el proceso y se libera cuando éste termina.

Para crear un proceso se requiere la inicialización de una entrada en latabla, así como la creación de segmentos de texto y de datos. Además, esnecesario modificar la tabla cuando cambia el estado del proceso o cuando recibeun mensaje de otro (para sincronización, por ejemplo). Cuando un procesotermina, su entrada en la tabla se libera y queda otro disponible para que otronuevo la utilice.

En el sistema operativo Unix los procesos pueden comunicarse internamenteentre sí, mediante el envío de mensajes o señales. El mecanismo conocido comointerconexión (pipe) crea un canal entre dos procesos mediante una llamada auna rutina del Kernel, y se emplea tanto para pasar datos unidireccionalmenteentre las imágenes de ambos, como para sincronizarlos, ya que si un procesointenta escribir en un pipe ocupado, debe esperar a que el receptor lea losdatos pendientes. Lo mismo ocurre en el caso de una lectura de datosinexistentes: el proceso que intenta leer debe esperar a que el procesoproductor deposite los datos en el canal de intercomunicación.

Entre las diferentes llamadas al sistema para el manejo de procesos queexisten en Unix están las siguientes, algunas de las cuales ya han sidomencionadas: fork (sacar una copia a un proceso); exec (cambiar la identidad deun proceso); kill (enviar una señal a un proceso); signal (especificar la acciónpor ejecutar cuando se recibe una señal de otro proceso), y exit (terminar unproceso).

Dentro de las tareas del manejo del procesador destaca la asignación dinámica(scheduling), que en Unix resuelve el scheduler mediante un mecanismo deprioridades. Cada proceso tiene asignada una prioridad; las prioridades de losprocesos de usuario son menores que la más pequeña de un proceso del sistema.

El "motor" que mantiene en movimiento un esquema de multiprogramaciónes, por un lado, el conjunto de interrupciones que genera el desempeño de losprocesos y, por otro, los constantes recordatorios que hace el reloj delprocesador para indicar que se terminó la fracción de tiempo dedicada a cadaproceso.

En el sistema Unix, las interrupciones son causadas por lo que se conoce comoeventos, entre los cuales se consideran: la ejecución de una tarea deentrada/salida; la terminación de los procesos dependientes de otro; laterminación de la fracción de tiempo asignada a un proceso, y la recepción deuna señal desde otro proceso.

En un sistema de tiempo compartido se divide el tiempo en un determinado númerode intervalos o fracciones y se asigna cada una de ellas a un proceso. AdemásUnix toma en consideración que hay procesos en espera de una operación de E/Sy que ya no pueden aprovechar su fracción. Para asegurar una distribuciónadecuada del procesador entre los procesos se calculan dinámicamente lasprioridades de estos últimos, con el fin de determinar cuál será el procesoque se ejecutará cuando se suspenda el proceso activo actual.

 

Manejo De Memoria

 

 

Dependiendo de la computadora en la que se ejecute, Unix utiliza dos técnicasde manejo de memoria: swapping y memoria virtual.

Lo estándar en Unix es un sistema de intercambio de segmentos de un procesoentre memoria principal y memoria secundaria, llamado swapping lo que significaque se debe mover la imagen de un proceso al disco si éste excede la capacidadde la memoria principal, y copiar el proceso completo a memoria secundaria. Esdecir, durante su ejecución, los procesos son cambiados de y hacia memoriasecundaria conforme se requiera.

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

Está claro que el proceso que se encarga de los intercambios entre memoria ydisco (llamado swapper) debe ser especial y jamás podrá perder su posiciónprivilegiada en la memoria central. El Kernel se encarga de que nadie intentesiquiera interrumpir este proceso, del cual dependen todos los demás. Este esel proceso 0 mencionado antes. Cuando se decide traer a la memoria principal unproceso en estado de "listo para ejecutar", se le asigna memoria y secopian allí sus segmentos. Entonces, el proceso cargado compite por elprocesador con todos los demás procesos cargados. Si no hay suficiente memoria,el proceso de intercambio examine la tabla de procesos para determinar cuálpuede ser interrumpido y llevado al disco.

Hay una pregunta que surge entonces es ¿cuál de los posibles procesos queestán cargados será desactivado y cambiado a memoria secundaria? Los procesosque 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 tratarde repartir en forma equitativa las oportunidades de ejecución entre todos losprocesos, 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 deresidencia en memoria secundaria. El proceso más antiguo es el que se llamaprimero, con una pequeña penalización para los grandes.

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

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

 

Manejo de entradas y salidas

 

El sistema de entrada/salida se divide en dos sistemas complementarios: elestructurado por bloques y el estructurado por caracteres. El primero se usapara manejar cintas y discos magnéticos, y emplea bloques de tamaño fijo (512o 1024 bytes) para leer o escribir. El segundo se utiliza para atender a lasterminales, 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 dispositivosde E/S. Los procesos se comunican con los dispositivos mediante llamadas a sumanejador. Además, desde el punto de vista de los procesos, los manejadoresaparecen como si fueran archivos en los que se lee o escribe; con esto se logragran homogeneidad y elegancia en el diseño.

Cada dispositivo se estructura internamente mediante descriptores llamados númeromayor, número menor y clase (de bloque o de caracteres). Para cada clase hay unconjunto de entradas, en una tabla, que aporta a los manejadores de losdispositivos. El número mayor se usa para asignar manejador, correspondiente auna familia de dispositivos; el menor pasa al manejador como un argumento, y éstelo 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ándiseñadas para eliminar las diferencias entre los dispositivos y los tipos deacceso. No existe distinción entre acceso aleatorio y secuencial, ni hay untamaño de registro lógico impuesto por el sistema. El tamaño de un archivoordinario está determinado por el número de bytes escritos en él; no esnecesario 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 elobjeto de reducir el tráfico de E/S. Cuando un programa solicita unatransferencia, se busca primero en los buffers internos para ver si el bloqueque se requiere ya se encuentra en la memoria principal (como resultado de unaoperación de lectura anterior). Si es así, entonces no será necesariorealizar la operación física de entrada o salida.

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

Por último, y debido a que los manejadores de los dispositivos son programasescritos en lenguaje C, es relativamente fácil reconfigurar el sistema paraampliar o eliminar dispositivos de E/S en la computadora, así como para incluirtipos 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, llamadasredireccionamiento e Interconexión.

Asociado con cada proceso hay un conjunto de descriptores de archivonumerados 0, I y 2, que se utilizan para todas las transacciones entre losprocesos y el sistema operativo. El descriptor de archivo 0 se conoce como laentrada estándar; el descriptor de archivo 1, como la salida estándar, y eldescriptor 2, como el error estándar. En general, todos están asociados con laterminal 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 elnombre del archivo que será abierto por Shell y que se asociará con la entradaestándar; en su ausencia, la entrada estándar se asigna a la terminal. Enforma similar, un archivo cuyo nombre está precedido por el símbolo >recibe la salida estándar de las operaciones.

Cuando Shell interpreta la orden

 

califica < examen > resulta

 

llama a ejecución al programa califica (que ya debe estar compilado y listopara ejecutar) y detecta la existencia de un archivo que toma el lugar de laentrada estándar y de otro que reemplaza a la salida estándar. Después, pasacomo datos de lectura los contenidos del archivo examen recién abierto (quedebe existir previamente) al programa ejecutable. Conforme el programa producedatos como salida, éstos se guardan en el archivo resulta que Shell crea en esemomento.

En la teoría de lenguajes formales desempeñan un importante papel las gramáticasllamadas de tipo 3 (también conocidas como regulares), que tienen múltiplesaplicaciones en el manejo de lenguajes. Existen unas construcciones gramaticalesconocidas como expresiones regulares, con las que se puede hacer referencia a unconjunto ilimitado de nombres con estructura lexicográfica similar; esto loaprovecha Shell para dar al usuario facilidades expresivas adicionales en elmanejo de los nombres de los archivos. Así, por ejemplo, el nombre carta * serefiere a todos los archivos que comiencen con el prefijo carta* y que seanseguidos por cualquier subcadena, incluyendo la cadena vacía; por ello, si seincluye el nombre carta* en alguna orden, Shell la aplicará a los archivoscarta, carta1, carta2 y cualquier otro que cumpla con esa especificaciónabreviada. En general, en lugares donde se emplea un nombre o una trayectoria,Shell permite utilizar una expresión regular que sirve como abreviatura paratoda una familia de ellos, y automáticamente repite el pedido de atención paralos componentes. Existen además otros caracteres especiales que Shell reconocey emplea para el manejo de expresiones regulares, lo que proporciona al lenguajede control de Unix mayor potencia y capacidad expresiva.

 

 

En Unix existe también la posibilidad de ejecutar programas sin tener queatenderlos en forma interactiva, sino simulando paralelismo (es decir, atenderde manera concurrente varios procesos de un mismo usuario). Esto se lograagregando el símbolo & al final de la línea en la que se escribe la ordende ejecución. Como resultado, Shell no espera que el proceso "hijo''termine de ejecutar (como haría normalmente), sino que regresa a atender alusuario inmediatamente después de haber creado el proceso asincrónico,simulando en esta forma el procesamiento por lotes ( batch ) Para cada uno deestos procesos Shell proporciona, además, el número de identificación, por loque si fuera necesario el usuario podría cancelarlo posteriormente, o averiguarel avance de la ejecución.

La comunicación interna entre procesos (es decir, el envío de mensajes conlos que los diversos procesos se sincronizan y coordinan) ocurre mediante elmecanismo de interconexiones (pipes) ya mencionado, que conecta la salida estándarde un programa a la entrada estándar de otro, como si fuera un conducto con dosextremos, cada uno de los cuales está conectado a su vez a un proceso distinto.Desde Shell puede emplearse este mecanismo con el símbolo | en la línea dondese escribe la orden de ejecución.

Así en el ejemplo:

 

(califica < tarea | sorte > lista) &

se emplean las características de interconexión, redireccionamiento yasincronía de procesos para lograr resultados difíciles de obtener en otrossistemas operativos. Aquí se pide que, en forma asincrónica (es decir, dejandoque la terminal siga disponible para atender otras tareas del mismo usuario), seejecute el programa califica para que lea los datos que requiere del archivotareas; al terminar, se conectará con el proceso sort (es decir, pasará losresultados intermedios) para que continúe el procesamiento y se arreglen losresultados en orden alfabético; al final de todo esto, los resultados quedaránen el archivo lista.

Con esta otra orden, por ejemplo, se busca obtener todos los renglones quecontengan las palabras "contrato" o "empleado" en losarchivos en disco cuyos nombres comiencen con la letra "E" (lo cual sedenota mediante una expresión regular). Para lograrlo, se hace uso de una funciónllamada egrep, especial para el manejo de patrones y combinaciones deexpresiones regulares dentro de los archivos:

 

egrep-n 'contrato' 'empleado' E *

 

Los resultados aparecen así:

 

Emple1: 5: en caso de que un empleado decide hacer uso de la facilidad,

Emple1:7: y el contrato así lo considere las obligaciones de la

Emple2:9: Cláusula II: El contrato colectivo de trabajo

Emple2:15: Fracción llI: El empleado tendrá derecho, de acuerdo con lo

El tercer renglón, por ejemplo, muestra el noveno renglón del archivoEmple2, que contiene una de las palabras buscadas.

Como Unix fue diseñado para servir de entorno en las labores de diseño yproducción de programas, ofrece - además de su filosofía misma - un ricoconjunto de herramientas para la creación de sistemas complejos, entre las quedestaca el subsistema make. Este último ofrece una especie de lenguaje muysencillo, con el cual el programador describe las relaciones estructurales entrelos módulos que configuran un sistema completo, para que de ahí en adelantemake se encargue de mantener el sistema siempre al día. Es decir, si semodifica algún módulo, se reemplaza o se añade otro, las compilacionesindividuales, así como las cargas y ligas a que haya lugar, serán realizadasen forma automática, por esta herramienta. Con una sola orden, entonces, esposible efectuar decenas de compilaciones y ligas predefinidas entre módulos, yasegurarse de que en todo momento se tiene la última versión de un sistema, yaque también se lleva cuenta automática de las fechas de creación, modificacióny compilación de los diversos módulos. De esta manera, se convierte en unaherramienta casi indispensable al desarrollar aplicaciones que requieren decenasde programas que interactúan entre sí o que mantienen relaciones jerárquicas.

Otras herramientas interesantes son ar, diseñado para crear y mantenerbibliotecas de programas (que serán luego utilizadas por otros programas paraefectuar las funciones ya definidas sin tener que duplicar el código); awk, unlenguaje para reconocimiento de patrones y expresiones regulares (es decir,generadas por una gramática regular o de tipo 3), útil para extraer informaciónde archivos en forma selectiva; lex, un generador de analizadores lexicográfico,y yacc, un compilador de compiladores. Estos dos últimos se emplean comoherramientas en la creación de compiladores y procesadores de lenguajes.

La lista complete de funciones, órdenes de subsistemas que forman parte delas utilerías del sistema operativo Unix es realmente grande, e incluye más deun centenar, que se pueden agrupar en los siguientes rubros:

Compiladores de compiladores.

Ejecución de programas.

Facilidades de comunicaciones.

Funciones para control de status.

Funciones para control de usuarios.

Funciones para impresión.

Herramientas de desarrollo de programación.

Lenguaje C, funciones y bibliotecas asociados.

Macroprocesamiento.

Manejo de directorios y archivos.

Manejo de gráficas.

Manejo de información.

Manejo de terminales.

Mantenimiento y respaldos.

Otros lenguajes algorítmicos integrados.

Preparación de documentos.

 

Trabajo realizado por:

Martinoli Diego

martinod@telefonica.com.ar


 
Articulos relacionados:
Futuro de los sistemas operativos
Resumen:
Ingeniería en sistemas computacionales. Sistema operativo Linux. ¿Qué es linux?. Desarrollo de sistemas operativos a futuro. Rhapsody. Diseño para desarrollo y empleo de ...
Linux: info y utilidades del squid web proxy
Resumen:
Software de Proxy. ¿Cómo configurar Squid: Servidor Proxy?. ¿Cómo configurar Squid: Restricción de acceso a sitios Web?. ¿Cómo configurar Squid: Acceso por Autenticación?.
Desarrollo de Sistemas
Resumen:
Para lograr la realización de un proyecto es muy importante que se lleven a cabo una serie de pasos y procedimientos de investigación, los cuales permitirán abrir aún más...
Sistemas operativos distribuidos
Resumen:
Introducción Histórica. Conceptos de los sistemas distribuidos. El estándar ISO OSI. Modo de transmisión asíncrona ATM. Comunicación en grupo. Otros problemas de sincroni...
Sistemas operativos
Resumen:
Introducción a los sistemas operativos. Estructura de un sistema operativo. Funciones y características de los sistemas operativos. Modalidades de trabajo de los sistemas...
Copyright © 2011 ilustrados.com, Monografias, tesis, bibliografias, educacion. Tofos los temas y publicaciones son propiedad de sus respectivos autores ©