You are on page 1of 9

Sistemas Operativos I

Introduccin General

Sin programas, una computadora es un montn de fierros bsicamente sin ninguna utilidad. Si la computadora es programada, es decir, existen programas escritos para que funcione de algn modo, el montn de fierros pasa a resultar til para almacenar datos, recuperar y generar informacin, puede ocuparse del tratamiento inteligente de textos, controlar videos, presentar juegos y dems. Los programas de computadora pueden clasificarse en dos grandes grupos: los programas de sistema, que son los programas que han sido escritos para permitir que se pueda operar una computadora y los programas de aplicacin, que son aquellos que se escriben para obtener de la computadora resultados especficos (por ejemplo, una planilla de liquidacin de sueldos) a requerimientos de los usuarios. El programa base de los programas de sistema es el sistema operativo, que es el conjunto de programas que se ocupan, interactuando entre ellos, de controlar todos los recursos de la computadora y proporcionar la base operativa para que puedan ser escritos los programas de aplicacin. Como ya sabemos, una computadora consta de uno o ms procesadores, cierta cantidad de memoria principal, relojes de temporizacin, disco o ms de un disco rgido, tarjetas de interfase para redes de computadoras y otros dispositivos de entrada/salida. En definitiva, un sistema complejo. La redaccin de programas que permita un funcionamiento razonable e interactivo de todos estos componentes no es una tarea fcil y presupone un nivel muy alto de refinamiento para la redaccin del cdigo. Pinsese que si los programadores de aplicaciones tuvieran que ocuparse de mover las cabezas lectora/grabadoras de los discos rgidos, optimizar accesos, administrar colas de impresin, administrar el espacio en la memoria principal,... no sera demasiada su capacidad de producir programas de aplicacin pues tendra que afectar gran parte de su tiempo a resolver todas estas cuestiones que, por suerte, ya estn resueltas por el sistema operativo. Lo que se hace, en los hechos, es fabricar una mquina virtual, es decir, una capa de programas que funcionan de nexo entre los componentes fsicos de la computadora y los programadores de aplicaciones. Esta capa de programas, especialmente escritos para ocuparse de estas tareas es lo que se denomina genricamente sistema operativo.

En el dibujo se esquematizan los conceptos esbozados. Desde adentro hacia fuera estn los dispositivos fsicos, que constituyen la capa ms baja en la que estn los chips, cables, fuentes de poder, tubos de rayos catdicos y otros dispositivos fsicos. La forma de construccin y su

funcionamiento son de dominio del ingeniero elctrico. A continuacin existe un software de bajo nivel que se encarga directamente del control de los dispositivos y da una interfase ms prolija al que se denomina microprograma. Normalmente este programa est grabado en la memoria ROM de la mquina. Funciona como un intrprete de las instrucciones escritas en lenguaje de mquina efectundolas en una serie de pasos al ejecutarlas. El conjunto de instrucciones que es capaz de interpretar el microprograma define el lenguaje de mquina. Este lenguaje de mquina tiene variada cantidad de instrucciones. El rango va desde 50 a 300 instrucciones la mayora de las cuales sirven para desplazar datos a travs de la mquina, hacer operaciones aritmticas y comparar valores. En esta capa los dispositivos de entrada/salida se controlan mediante valores que tienen significado. Estos valores son cargados en reas especiales de la memoria principal y se denominan genricamente registros del dispositivo. Es importante notar que no debe asumirse que el contar con un gran nmero de instrucciones es sinnimo de potencia de la mquina. De hecho, las arquitecturas RISC proponen un reducido conjunto completo de instrucciones para dar una mayor velocidad de respuesta a los procesos. Esto se ver con ms detalle ms adelante. Una de las principales funciones del sistema operativo es ocultar toda esta complejidad y proporcionar al programador un conjunto de instrucciones ms apropiado para trabajar. Por arriba del sistema operativo est el resto del software del sistema. All encontramos a los compiladores, editores y programas de aplicacin. En esta clasificacin es importante notar que esta clase de programas NO forman parte del sistema operativo. Esto es porque se entiende que la capa de programas del sistema operativo est constituida por aquellos programas que se ejecutan con independencia del deseo del operador. Por contrapartida, un usuario puede elegir un determinado compilador, determinar el uso de un determinado comando o seleccionar un determinado programa de aplicacin para que sea ejecutado. Los programas del sistema operativo estn protegidos de las acciones de los usuarios. As, por ejemplo, la programacin de la controladora de un disco no es algo que pueda ser alterado o revisado libremente por un usuario, y as con otras funcionalidades similares. Por ltimo, sobre los programas del sistema mencionados se encuentran los propios programas de aplicacin (liquidaciones de sueldos, administracin de stocks, etc).

Qu es un sistema operativo ?

Es til ver al sistema operativo desde dos perspectivas: una de ellas es la de verlo como un facilitador del uso de dispositivos y componentes del hardware. Ya hemos mencionado esto. Lo que se quiere decir es que el sistema operativo consta de programas que por ejemplo administran las colas de requerimientos de lectura y/o grabacin a un disco. Los programadores, para estos casos, no tienen que preocuparse de la ubicacin en que se encuentra el requerimiento de entrada/salida que ha especificado en su programa. Asume que el sistema operativo se ocupar de eso y as lo hace efectivamente. La otra perspectiva es ver al sistema operativo como un administrador de recursos. Esto significa establecer la coordinacin y sincronizacin de todos los componentes de una mquina. Desde este punto de vista la labor del sistema operativo es la de proporcionar una asignacin ordenada y controlada de los procesadores, memorias y dispositivos de entrada/salida para los varios programas que compiten por ellos.

Historia de los Sistemas Operativos

Los sistemas operativos han evolucionado a travs de los aos. Puesto que los sistemas operativos han estado relacionados histricamente con la arquitectura de las computadoras en las cuales se ejecutan, analizaremos las generaciones sucesivas de computadoras para ver cmo eran sus sistemas operativos. La primera computadora digital real fue diseada por el matemtico ingls Charles Babbage (1792 1871). Esta mquina no pas de ser un diseo terico pues en esa poca no existan los componentes que se requeran para su construccin.

La primera generacin (1945 1955): Bulbos y conexiones

Para la 2 Guerra Mundial se produjeron los primeros avances sustantivos en este terreno. Se construyeron mquinas enormes construdas por bulbos. En esta primera generacin un solo grupo de personas diseaba, construa, programaba, operaba y daba mantenimiento a cada mquina. Toda la programacin se llevaba a cabo en lenguaje de mquina absoluto y con frecuencia se utilizaban conexiones para controlar las funciones bsicas de la mquina. Los lenguajes de programacin eran desconocidos (inclusive los lenguajes ensambladores). A principios de la dcada de los 50 la cosa mejor un poco con la introduccin de las tarjetas perforadas. Fue entonces posible escribir los programas en las tarjetas y leerlas en vez de insertar conexiones. La segunda generacin (1955 1965): Transistores y procesamiento en lotes

La introduccin del transistor a mediados de los aos 50 modific en forma radical el panorama. Por primera vez hubo una clara separacin entre diseadores, constructores, operadores, programadores y personas encargadas del mantenimiento. Estas mquinas se aislaban en cuartos especiales con aire acondicionado y un equipo de operadores profesionales para su operacin. Solamente las grandes corporaciones e instituciones estatales podan disponer de estas mquinas. Las tareas (jobs, en ingls) eran un programa o conjunto de programas que eran escritos en hojas de papel y luego eran perforados en tarjetas. Hecho esto, se llevaba el conjunto de tarjetas perforadas que conformaban el programa para ser ledo y ejecutado por la mquina. Los operadores deban controlar la lectura, ocuparse luego de operar las impresoras y otras tareas afines. Se consuma un tiempo notable caminando por la sala... El siguiente paso en la evolucin fue el del proceso por lotes. Aqu se escriban procedimientos para efectuar la totalidad de las tareas con lo que disminua el tiempo de caminatas. Las grandes computadoras de la segunda generacin se utilizaron principalmente para los grandes clculos cientficos y de ingeniera. Por lo general, se programaba en FORTRAN y lenguaje ensamblador. Los sistemas operativos ms comunes eran FMS e IBSYS, el sistema operativo de IBM para la 7094. La tercera generacin (1965 1980): Circuitos integrados y multiprogramacin

A principios de la dcada de los 60 los fabricantes de computadoras tenan un problema grave: producan dos tipos bien diferentes de computadoras, aquellas destinadas al clculo cientfico y aquellas destinadas a usos comerciales. Esta diversificacin conllevaba grandes costos de produccin. IBM intent resolver el problema lanzando al mercado una mquina capaz de realizar las dos tareas a la vez: el Sistema/360. En los aos siguientes, IBM produjo sucesores (una familia de computadoras) compatibles con la 360, con una tecnologa ms moderna, conocidas como las series 370, 4300, 3080 y 3090. La enorme fuerza de la idea de una familia era al mismo tiempo su debilidad. La intencin era que todo el software, sistema operativo incluido, deba funcionar en todos los modelos. El resultado fue un sistema operativo enorme y extraordinariamente complejo. Constaba de millones de lneas de lenguaje ensamblador, escrito por miles de programadores, con miles y miles de errores, que requeran de un flujo continuo de nuevas versiones, en un intento por corregirlos. A pesar de todos estos problemas, estas familias fueron aceptadas por los usuarios y, lo que es ms importante, dieron lugar a que se tomaran ciertas tcnicas fundamentales, ausentes de los sistemas operativos de la segunda generacin. Sin dudas, la tcnica ms importante fue la de la multiprogramacin. El problema, hasta ese momento era que en el caso del procesamiento de operaciones comerciales no podan darse el lujo de que la computadora permaneciese inactiva hasta tanto se terminase una operacin de entrada/salida (situacin irrelevante en el ambiente del clculo cientfico). La solucin que se desarroll fue la de partir la memoria en varias partes, con un trabajo distinto en cada particin. Mientras que un trabajo esperaba a que se terminara su

requerimiento de entrada/salida otro trabajo poda utilizar la CPU. Si se lograba mantener ms de un trabajo en lnea en la memoria principal poda optimizarse el uso de la CPU hasta en un 100 por ciento. El mantenimiento de varios programas en memoria requera tambin de hardware especial en el que bsicamente se procuraba de que cada trabajo ocupara una parte especfica y no fuera intervenido por otro en ejecucin.

Otra de las caractersticas principales de los sistemas operativos de la tercera generacin era la capacidad de leer trabajos de las tarjetas al disco. De esta manera, al finalizar un trabajo, el sistema operativo poda cargar otro en la particin que quedaba desocupada y ejecutarlo. Esta tcnica se llama spooling y tambin se utiliz para las salidas. El hecho de que estos sistemas siguieran siendo esencialmente sistemas de procesamiento por lotes haca que los tiempos de respuesta fueran lentos. La tcnica que tenda a minimizar esos tiempos se denomin timesharing (tiempo compartido) en la que cada usuario tena una terminal en lnea. En un sistema de tiempo compartido puede asignarse tiempo de CPU a ciertos usuarios dejando a otros con menos o ninguna clase de tiempo. Otro desarrollo fundamental durante la tercera generacin fue el crecimiento fenomenal de las minicomputadoras. A partir de la DEC PDP-1 que se vendi en grandes cantidades debido a su precio y funcionalidad se dio lugar a una nueva industria. La cuarta generacin (1980 1990): Computadoras Personales

Como sabemos, con el desarrollo de circuitos LCI se inici la era de los computadores personales y con ello la masiva utilizacin de este tipo de tecnologa extendindose incluso a aplicaciones hogareas. La gran capacidad de cmputo con fuerte interaccin y la expansin de plataformas GUI hizo que fuera un negocio interesante fabricar software para este tipo de ambientes. Sobre esta base la tendencia, prcticamente aceptada como estndar, es que los programas que se producen cuentan con interfases amigables, esto es, los programas son pasibles de ser utilizados por personas que no saben nada de computacin. Dos sistemas operativos han dominado la escena de las computadoras personales y las estaciones de trabajo (PC ms grandes): en un principio el MS-DOS de Microsoft y sus sucesores Windows y en otro nivel de propuesta el sistema operativo UNIX. En el caso de UNIX, por dems interesante, dominan las computadoras que no utilizan procesadores Intel y, en el caso de las estaciones de trabajo, conforman la base de las plataformas con diseo RISC. Estas mquinas tienen en general la misma potencia de cmputo de una minicomputadora, aunque se dediquen a un solo usuario, por lo que es lgico que estn equipadas con un sistema operativo que en principio fue diseado para ellas. Lo que constituye hoy por hoy el dominio de las computadoras son las redes de computadoras personales con sistemas operativos de red y sistemas operativos distribuidos . En un sistema operativo de red los usuarios estn conscientes de la existencia de varias computadoras y pueden conectarse con mquinas remotas y copiar archivos de una mquina a otra. Cada mquina ejecuta su propio sistema operativo local y tiene su propio usuario (o grupo de usuarios). Por el contrario, un sistema operativo distribuido es aqul que aparece frente a sus usuarios como un sistema operativo tradicional de un solo procesador an cuando est compuesto por

varios procesadores. En un sistema distribuido verdadero, los usuarios no deben ser conscientes del lugar donde su programa se ejecute o del lugar donde se encuentran sus archivos; eso debe ser manejado en forma automtica y eficaz por el sistema operativo. Los sistemas operativos de red no tienen diferencias fundamentales con los sistemas operativos de un solo procesador. Lgicamente, necesitan una controladora para interfase con la red, al igual que programas que permitan la conexin y el acceso a un archivo remoto, pero estas caractersticas adicionales no modifican la estructura esencial del sistema operativo. Los verdaderos sistemas operativos distribuidos requieren de algo ms que agregar un poco de cdigo a un sistema operativo de un solo procesador. Por ejemplo, los sistemas distribuidos permiten a menudo que un programa se ejecute mediante varios procesadores a la vez, por lo que necesitan algoritmos de asignacin del tiempo ms complejos con el fin de optimizar la magnitud de paralelismo lograda. Los retardos en la comunicacin a travs de la red hacen que los algoritmos puedan no ser ejecutados completamente y por ende se produzcan fallos que deben ser corregidos. Esto, sin dudas, difiere mucho de la problemtica que atienden los sistemas operativos en los que un solo procesador tiene toda la informacin sobre el estado del sistema. Nos ocuparemos ms delante de los sistemas operativos distribuidos con un mayor nivel de detalle.

Principales conceptos de los sistemas operativos

La forma de comunicacin de los programas de aplicacin y los sistemas operativos se produce por medio de un procedimiento denominado genricamente llamadas al sistema. Las llamadas al sistema (system calls) crean, administran y eliminan componentes bajo control del sistema operativo. Los ms importantes son los procesos y los archivos. Nos ocuparemos de ellos en los siguientes pargrafos centrando la base de ejemplos en el sistema operativo UNIX y algunas caractersticas del MS-DOS que an al da de hoy son relevantes. Procesos

Un proceso es bsicamente un programa en ejecucin. Consta del programa ejecutable, un stack, un contador de programa y otros registros de uso general que le son asignados para su ejecucin y, obviamente, los datos para efectuar sus acciones. Bajo esta visin simplificada debemos pensar en programas en ejecucin que, para funcionar en ambientes complejos como los de las mquinas deben ser interrumpidos para pasar el control a otro proceso que atiende otro recurso del sistema. Tpicamente, el colocar un requerimiento de lectura hace que se ejecute un proceso para administracin de la cola de acceso al dispositivo, mientras no se atiende el requerimiento, otro proceso puede ser arrancado. Cuando un proceso se detiene en forma temporal como en el ejemplo, ste debe volverse a inicializar en el mismo estado en que se encontraba al detenerse. Esto quiere decir que toda la informacin sobre el estado en que se encuentran los objetos tratados por el proceso interrumpido deben guardarse en algn lugar en forma explcita. Por ejemplo, si el proceso abri varios archivos debe guardarse la informacin sobre el estado de acceso a ellos para poder retomar las operaciones pertinentes en el estado preciso en que haban quedado. En muchos sistemas operativos, toda la informacin relativa a un proceso, distinta del contenido de su propio espacio de direccin, se guarda en una tabla que es propiedad del sistema operativo denominada tabla de procesos. Bsicamente esta tabla es un array de array o, en su defecto, dependiente de la implementacin del sistema operativo, una lista encadenada a cada uno de los procesos. As, un proceso (en estado suspendido) consta de su espacio de direccin, llamado imagen central y los datos de su tabla de procesos, que entre otras cosas contiene sus registros. Las llamadas al sistema de control de procesos fundamentales son las que se ocupan de la creacin y fin de los procesos. Un proceso llamado intrprete de comandos o shell lee los comandos desde una terminal. Por ejemplo, el usuario digita una solicitud de compilacin para un programa (por ejemplo, compile pepe). El intrprete de comandos debe crear entonces un nuevo proceso para ejecutar el compilador invocado. Cuando ese proceso ha concludo la compilacin ejecuta una llamada al sistema para terminarlo.

Si un proceso puede crear a su vez uno o ms procesos (en una estructura arborescente en la que se les denomina procesos hijo) lo que obtenemos es un rbol de dependencia jerrquica en el que se organizan los procesos y les son aplicables los algoritmos de navegacin conocidos para los rboles n-arios. Se dispone asimismo de otros tipos de llamadas a procesos para solicitar ms memoria (o liberar memoria no utilizada), esperar a que un proceso hijo termine o rutear sobre otro programa. En ciertas ocasiones, existe la necesidad de comunicar informacin a un proceso en ejecucin de forma de evitar que ste que de bloqueado a la espera de esa informacin. Por ejemplo, en un ambiente de redes de computadoras la comunicacin entre programas residentes en distintas mquinas se hace mediante mensajes. Toda la dinmica de manejo de los mensajes, esto es, direccionarlos adecuadamente, garantizar que no se pierda la totalidad o parte de ellos, obtener la respuesta de recepcin debe ser programado en un sistema operativo de red. Entre otras cosas, se toma como base ciertos factores de temporizacin. Por ejemplo, esperar mensaje de confirmacin de recepcin correcta hasta cierta cantidad de segundos. Si este mensaje no llega se retransmite. Durante ese intervalo de confirmacin el programa puede seguir ejecutando alguna otra tarea. Al transcurrir esa cantidad predeterminada de tiempo, el sistema operativo enva una seal al proceso. Esta seal provoca que el proceso entre en estado suspendido y pase sus registros al stack. Acto seguido pasa a ejecutar un procedimiento especial de control de la seal (por ejemplo puede haber llegado mal el mensaje y es necesario su retransmisin). Una vez que este proceso especial termina de ejecutarse el proceso suspendido retoma su operacin al instante justo en que fue interrumpido. Este mecanismo de control y administracin de interrupciones realizado por el sistema operativo es aplicable a una gran variedad de situaciones en las que se hace necesario derivar el control de la ejecucin hacia programas especializados segn el tipo de interrupcin. Las seales se utilizan tambin para la comunicacin entre procesos. En un sistema de multiprogramacin es importante registrar a qu usuario pertenece cada proceso. Bajo este ambiente cada usuario tiene asignado una identificacin de usuario (uid, en ingls) que, por lo general, es un entero de 16 o 32 bits. Cada proceso tiene asociada la clave del usuario. Por extensin a este concepto pueden formarse grupos de usuarios que responden a una determinada identificacin. Es normal en ambientes de bases de datos realizar este tipo de definiciones y otorgar permisos especficos para cierto grupo de usuarios (por ejemplo permiso de modificacin de archivos). Archivos

La otra gran categora de llamadas al sistema se relaciona con el sistema de archivos. Debera resultar claro que el sistema operativo se encarga de funciones tales como el acceso y bsquedas sobre el almacenamiento en los dispositivos de entrada/salida. Antes de poder leer un archivo es necesario abrirlo; despus de terminar de utilizarlo hay que cerrarlo; las llamadas permiten hacer cosas como estas. Para poder proporcionar un espacio donde almacenar los archivos, la mayora de los sistemas operativos soportan el concepto de directorio como una forma de agrupar los archivos. Asumimos que el concepto ya es conocido por los lectores. Ahora bien, en esta situacin deben existir llamadas al sistema que permitan navegar entre directorios, crear y eliminar directorios, etc. De hecho este modelo es una jerarqua representable en forma de rbol n-ario. Las jerarquas de los procesos, sin embargo, no son en general muy profundas, no van ms all de tres niveles y tienen corta vida. En cambio, para los archivos las jerarquas definen rboles de profundidades que van en varios niveles y su vida puede ser muy larga (una estructura de directorios convenientemente definida puede durar aos). La propiedad y la proteccin tambin son distintas en los procesos y los archivos. Lo comn es que un proceso padre pueda controlar e incluso acceder a un proceso hijo, pero, por lo menos en principio, la estructura de directorio es accesible sin tener en cuenta esta relacin de dependencia. En cada momento, cada proceso tiene activo un directorio de trabajo en el que se buscan aquellos nombres de las rutas de acceso. Los procesos pueden modificar su directorio de trabajo mediante una llamada al sistema que especifique un nuevo directorio de trabajo. Si varias personas tienen acceso a la misma computadora es importante contar con alguna forma de proteger la privaca de los archivos de cada persona. Para realizar esta tarea los

distintos sistemas operativos tienen diferentes propuestas. Por ejemplo, en UNIX, los archivos y directorios se protegen al asignarles un cdigo de proteccin binario de 9 bits. El cdigo de proteccin consta de campos de tres bits, uno para el propietario, otro para los dems miembros del mismo grupo del propietario y otro ms para las dems personas. Cada campo tiene un bit para acceso a la lectura del archivo, otro para la escritura en el archivo y otro para la ejecucin del archivo. Estos tres bits se conocen como los bits rwx (Read, Write, eXecute). Por ejemplo, el cdigo de proteccin rwxr-xx indica que el propietario puede leer, escribir en o ejecutar el archivo, los otros miembros del grupo pueden leer o ejecutar el archivo y las dems personas pueden ejecutar el archivo. En un directorio la letra x indica el permiso para realizar bsquedas. Un guin indica que no se dispone del permiso correspondiente. Antes de que un archivo pueda ser ledo o escrito, debe abrirse, momento en el cual se verifican los permisos. Si se permite el acceso el sistema devuelve un entero llamado descriptor del archivo para ser utilizado en las operaciones subsiguientes. Si el acceso est prohibido se devuelve un cdigo de error. Muchos sistemas operativos, entre los que se encuentran la familia Windows y UNIX proporcionan una abstraccin para que los usuarios ejecuten operaciones de entrada/salida sin tener que ocuparse de cuestiones asociadas al hardware. Lo que se hace es representar a cada dispositivo de entrada/salida como un archivo especial. Esta clase de archivos hacen que los usuarios vean a los dispositivos de entrada/salida como si tambin fuesen archivos. Existen dos tipos de archivos especiales: archivos de bloque y archivos de carcter. Los archivos de bloque se utilizan para modelar los dispositivos que constan de un conjunto de bloques de direccionamiento aleatorio, como los discos. Al leer un archivo de bloque el programa que pretende realizar la operacin debe poder acceder al lugar que desea sin importar la estructura de archivos en la que se encuentra. Los programas que realizan operaciones de mantenimiento necesitan a menudo esta caracterstica. El acceso a estos archivos especiales se controla mediante el mismo mecanismo de proteccin utilizado para proteger los archivos comunes. En funcin de esto, por lo general, el acceso a este tipo de archivos queda reservado para el administrador del sistema. Los archivos especiales de red se utilizan para modelar los dispositivos que constan de flujos de caracteres. Las terminales, impresoras de lnea y las interfases de red son ejemplos de este tipo de archivos. En UNIX y en los sistemas operativos de Microsoft, al iniciar un proceso, se establece que el descriptor de archivo 0, llamado entrada estndar, indica la terminal para fines de lectura. El descriptor 1, llamado salida estndar, indica la terminal para fines de escritura. El descriptor de archivo 2, llamado error estndar, tambin indica la terminal para la salida, pero, por lo general, solamente se utiliza para escribir mensajes de error. Por ltimo, es de destacar una clase muy especial de archivo, casi un seudoarchivo, que se denomina pipeline o tubo. La funcin principal de este archivo es la de conectar dos procesos. Cuando, por ejemplo, el proceso A desea enviar datos al proceso B escribe en el tubo como si fuera un archivo de salida. El proceso B, a su vez, puede leer los datos, leyendo del tubo como si fuese un archivo de entrada. De esta manera, la comunicacin de procesos es vista y administrada como si se tratase de operaciones simples de escritura y lectura de archivos. De hecho, los procesos no se enteran de que tal accin est siendo realizada por un tubo, salvo que realice una llamada especial al sistema para verificar el medio de comunicacin. Llamadas al sistema

Los programas de usuario se comunican y solicitan servicios al sistema operativo mediante llamadas o invocaciones al sistema. Para cada una de estas llamadas existe un procedimiento de la biblioteca que est accesible a los requerimientos del usuario. Este procedimiento se ocupa de ubicar los parmetros de la invocacin en los registros que corresponde, es decir, configura la invocacin rellenando de valores los registros que van a ser utilizados. Luego de esto, se ejecuta una instruccin TRAP (que es una llamada a un procedimiento interno) que arranca el sistema operativo. La finalidad del procedimiento que est en la biblioteca es ocultar los detalles de la ejecucin de TRAP y hacer que las llamadas al sistema parezcan simples invocaciones a procedimientos. Cuando el sistema operativo recupera el control (pues eso es lo que hace TRAP), se ocupa de examinar los parmetros que estn en los registros para ver si son vlidos. De ser as, se pasa a realizar el trabajo solicitado. Al terminar esa ejecucin el sistema operativo escribe un cdigo de estado en un registro (lo que se trata es de colocar informacin sobre el xito o el fracaso de

la operacin que se intent realizar); adems ejecuta una instruccin RETURN FROM TRAP para devolver el control al procedimiento de la biblioteca. Este procedimiento devuelve a su vez el control al procedimiento que hizo la llamada devolviendo el cdigo de estado como un valor de funcin. A veces, en los parmetros son devueltos valores adicionales. Para poner en claro el mecanismo de la llamada a funcin, vamos a revisar un ejemplo sencillo, la llamada a READ que se utiliza en UNIX y en MS-DOS. Esta invocacin tienen tres argumentos, el primero de ellos es el archivo que se pretende leer, el segundo especifica la direccin de un buffer en donde se colocarn los datos ledos y el tercero define la cantidad de bytes que se van a leer. Una llamada a READ en el lenguaje de programacin C sera algo as como: Cuenta = read(archivo, buffer, cant_bytes) El efecto de invocar a READ consiste en colocar los datos del archivo especificado en la direccin del almacenamiento colocada como segundo argumento de manera que el programa pueda acceder a los datos. Si la llamada al sistema no puede llevarse a cabo, ya sea debido a un argumento no vlido o a un error de disco, la variable COUNT se inicializa en 1 y el nmero de error se escribe en una variable global, de modo que el programa, al recuperar el control, sea capaz de inspeccionarla. Los programas deben verificar siempre los resultados de las llamadas al sistema para ver si no se han producido interrupciones. Sin perjuicio de un mayor nivel de detalle luego, basta decir que, por lo general, hay llamadas al sistema para crear procesos, controlar la memoria, leer y escribir y efectuar tareas de entrada/salida. El Shell del sistema operativo

El sistema operativo es el conjunto de programas que se encargan de ejecutar las llamadas al sistema. Los editores, compiladores, ensambladores, linkers e intrpretes de comandos no forman parte del sistema operativo. A los efectos de clarificar un poco la cosa se analizar someramente el intrprete de comandos del sistema operativo UNIX, denominado Shell, el cual, sin ser parte del sistema operativo, hace un uso extenso de muchas de las caractersticas del sistema. Tambin juega el papel de interfase principal entre un usuario sentado frente a un equipo y el sistema operativo. Cuando un usuario empieza una sesin el Shell es arrancado. Shell reconoce a la terminal como su entrada y salida estndar. Comienza mostrando un indicador (el signo $) que indica al usuario que Shell est esperando para aceptar un comando. Si el usuario escribe, por ejemplo, date Shell crea un proceso hijo y ejecuta el programa date como hijo. Al ejecutarse el proceso hijo, Shell espera hasta que ste termine. Al finalizar la tarea del hijo, Shell vuelve a escribir el smbolo $ en la pantalla e intenta leer la siguiente lnea de entrada. El usuario puede determinar que la salida estndar cambie de direccin a un archivo al escribir, por ejemplo, date > archivo La salida de un programa puede ser utilizada como entrada para otro mediante la especificacin de tubos. As, cat archivo1 archivo2 archivo3 | sort > /dev/lp llama al programa cat para que concatene tres archivos y enve la salida a sort para ordenar todas las lneas en forma alfabtica. La salida de sort se dirige hacia el archivo dev/lp que es un nombre comn para el archivo especial de carcter asociado a la impresora de lnea.

Prof. Ing. Sergio Bouza

You might also like