13.07.2015 Views

Anexo C: Sobre sistemas operativos - Quaderns Digitals

Anexo C: Sobre sistemas operativos - Quaderns Digitals

Anexo C: Sobre sistemas operativos - Quaderns Digitals

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Anexo</strong> C: <strong>Sobre</strong> <strong>sistemas</strong><strong>operativos</strong>


1. Funciones de los <strong>sistemas</strong><strong>operativos</strong>. Generalidadesl. INTRODUCCIÓNUn sistema operativo (en adelante, se denotará a veces S.O.) es básicamente unprograma cuya función es controlar el entorno inmediato del programador y, hastacierto punto, el del usuario mismo.Su función es doble. Por un lado, debe crear una máquina virtual fácil de utilizar y,por otro, debe obtener el máximo provecho del hardware del sistema.Los <strong>sistemas</strong> <strong>operativos</strong> se encargan de tareas "poco gratas" como son el controlde entradas/salidas entre el ordenador y los dispositivos periféricos (impresoras,consolas...) o la gestión de los recursos internos del ordenador como, por ejemplo, lamemoria. Ésta puede servir para almacenar los datos y el código de varios programasy debe evitarse que éstos interfieran entre sí, por ejemplo, escribiendo datosen posiciones de memoria ocupadas por el código de otro programa.En algunos <strong>sistemas</strong> es posible simultanear la ejecución de varios programas. Eneste caso, el sistema operativo debe gestionar todo lo referente a la sincronizaciónde unos programas con otros (en el caso de que estén interrelacionados) o el trasvasede información entre ellos.Por último, los <strong>sistemas</strong> <strong>operativos</strong> deben gestionar la comunicación entre el usuarioy el ordenador mediante un interpretador de comandos. Éste tiene gran importanciadesde el punto de vista del usuario, porque es el que determina la sencillezde manejo del sistema.Como se ve, el papel de los <strong>sistemas</strong> <strong>operativos</strong> es muy variado. La importanciade las diversas funciones depende en gran medida de la complejidad tanto físicacomo lógica del ordenador.2. FUNCIONES MÍNIMAS: SISTEMAS MONOUSUARIO-MONOTAREAMuchos ordenadores constan de un único terminal de entrada/salida y no permitenla conexión de otros. Por esta razón sólo pueden atender simultáneamente a unusuario, y de ahí el nombre de "sistema monousuario" con que suelen denominarsePor otro lado, es usual que en los <strong>sistemas</strong> más sencillos el ordenador ejecute unsolo programa al mismo tiempo. Si queremos compilar un programa y editar un textotendremos que esperar a que acabe la compilación para ejecutar la segunda tarea,o viceversa (editar un texto y luego compilar un programa). Es por ello que este tipode <strong>sistemas</strong> reciben el nombre de "monotarea" o "monoprograma".Los conceptos monousuario y monotarea son pues diferentes, según se desprendede lo anterior. El primero va ligado a un aspecto físico del sistema (número de ter-365


Computadores personalesminales conectables), mientras que el segundo está relacionado con un aspecto lógico(gestión de CPU o procesador).Los <strong>sistemas</strong> que tienen estas dos características deben suministrar cierto tipo defunciones consideradas "mínimas", porque es lo menos que puede esperarse de todosistema operativo.2.1. Gestión del ProcesadorEn un sistema operativo monotarea la gestión de CPU es casi inexistente. No obstante,hay un cierto número de instrucciones privilegiadas sólo ejecutables en modosistema. Decimos que estamos en "modo sistema" cuando se ejecutan rutinas del sistemaoperativo y en "modo usuario" cuando se ejecutan programas del usuario. Algunasinstrucciones sólo deben ejecutarse en el primero porque realizan funciones queno es deseable utilicen los programas normales (por razones de seguridad, porejemplo).Por lo general, el sistema operativo se divide en dos partes, con funciones diferentes.La primera se encarga de arrancar el sistema cuando éste se enciende. Habitualmente,lo único que debe hacer es leer el sistema operativo completo desdeuno de los soportes de almacenamiento (por ejemplo un disco) y saltar a la primerainstrucción de éste. Este programa reside siempre en memoria y suele denominarse"monitor". La segunda parte del sistema operativo es la que reside en el disco y esla que verdaderamente gestiona el sistema. Por su longitud no se guarda en memoriaROM, pues resultaría antieconómico y, además, el sistema operativo no necesitaestar siempre en la memoria (al menos íntegramente).2.2. Gestión de memoriaUna de las tareas más importantes es la de gestionar la memoria interna del ordenador.En ella cohabitan no sólo el programa a ejecutar y sus datos, sino tambiénuna parte del sistema operativo e incluso en ciertos casos un interpretador (intérprete)de un lenguaje de programación (por ejemplo, BASIC).El sistema operativo debe encargarse de colocar un programa o sus datos en unespacio de memoria "libre", es decir, no utilizado, y evitar que este espacio se veausurpado de forma indeseada por otro programa.Lo que hace el sistema operativo es delimitar la zona libre para el programa delusuario por medio de unas "barreras", que no son más que las direcciones máxima ymínima de memoria utilizable (ver fig. 1). Encima o debajo de estas barreras estaránlos demás programas que cohabitan en la memoria (sistema operativo e intérpretede lenguaje, si lo hubiera), y el usuario no puede situar datos o rutinas propias fuerade ellas por prohibírselo el sistema operativo.Obsérvese que el usuario sólo puede tener un programa en memoria al mismotiempo. Fuera de las barreras están rutinas propias del sistema, que permitirán lacorrecta ejecución de éste.366


<strong>Anexo</strong> C <strong>Sobre</strong> <strong>sistemas</strong> <strong>operativos</strong>Las barreras pueden fijarse de antemano al diseñar el sistema operativo y dejarlasasí de una vez por todas. En este caso se dice que la configuración de memoria esestática. También es posible que dichos límites sean fijados en tiempo real, segúncriterios de máximo aprovechamiento de memoria. En este caso, la configuración dememoria es de tipo dinámico.2.3. Gestión de entradas/salidasYa hemos visto en anteriores apartados que las operaciones de entrada/salida(e/s, simplificadamente) suelen ser bastante complejas. Además, parece ilógico quepor cada programa que se escribe haya que implementar las rutinas de escriturasobre la impresora o de lectura de datos desde la consola. En vez de ello, lo queocurre es que estas rutinas se encuentran en el sistema operativo y son llamadas porlos programas cuando son necesarias. Así, los programadores no necesitan conocerlos detalles del ordenador desde un punto de vista físico.El problema de implementar las rutinas de entrada/salida dentro del sistema operativoes que los tipos de periféricos son muy variados y por lo tanto las rutinas deentrada/salida también deberán serlo.Lo que sucede en la práctica es que únicamente se implementan las rutinas deservicio de un número limitado de periféricos (de características, por lo demás, prefijadas)y se dan facilidades adicionales para que los usuarios incorporen nuevas rutinasde servicio al sistema operativo, si ello fuera necesario. Esto implica un altogrado de flexibilidad, y es por ésta, entre otras razones, por la que la gestión deentradas/salidas aparece como un módulo muy delimitado e importante del sistemaoperativo.Al pasar revista a varios <strong>sistemas</strong> <strong>operativos</strong> veremos cómo se resuelve el problema.367


Computadores personalesAl conjunto de rutinas de entrada/salida se las denomina "primitivas" y puedenrealizar dos tipos de gestión. Por un lado, se distingue la gestión lógica, que se ocupade traducir conceptos como "registro de un fichero" a otros más precisos en loque al soporte se refiere (por ejemplo, "dirección del comienzo de registro dentrodel soporte").Por otro lado, se encuentra la gestión física de entradas/salidas, que traduce lafunción lógica a una serie de operaciones de control y secuenciamiento para que losdatos sean transmitidos por los conductos adecuados y siguiendo un protocolo prefijado.2.4. Gestión de la informaciónMuchos ordenadores permiten grabar programas o datos en soportes de memoriaexterna para evitar que se borren al desconectar la corriente. El conjunto de informacionesque se graban, ya sean programas, conjuntos de datos o información dedichos soportes, se denominan "ficheros".El sistema operativo debe gestionar la lectura y escritura de ficheros, pues se tratade operaciones relativamente complejas (hay que manejar parámetros como velocidadde rotación del disco, número de cabezas de lectura, número de pistas pordisco... ).El programador no necesita entrar en detalles concretos concernientes al soporte,porque el sistema operativo le ofrece un conjunto de rutinas básicas o "primitivas",que le permiten efectuar todas las operaciones requeridas.Para saber dónde está cada fichero en el soporte (por ejemplo, un disco) es necesarioque en éste exista un índice donde vengan reseñados cuando menos el nombredel fichero y su posición en el soporte, para que así el sistema operativo lo puedalocalizar rápidamente. Estos índices se denominan "directorios" y en el caso mássimple son corno el índice de un libro, es decir, una lista con todos los nombres ydetalles de los ficheros. Este tipo de directorios se denominan "lineales" y suelen situarseen una zona prefijada del soporte para su rápida localización.Los ficheros del usuario pueden contener programas o datos. Los primeros se denominan"comandos externos", por tratarse de rutinas ejecutables que realizan unafunción conocida por el usuario.El término "externos" se debe a que dichos comandos no se almacenan siempreen la memoria principal del ordenador, sino únicamente cuando son necesitados. Uneditor de textos o un programa de dibujo son ejemplos de comandos externos.Los ficheros de datos no son ejecutables. Sirven para ser utilizados por otros programascomo fuente de información y pueden ir desde fichas de personal de unaempresa hasta documentos escritos que el usuario necesita conservar para su usoposterior. Los programas fuente escritos en un cierto lenguaje son también ficherosde datos (a veces se les llama asimismo ficheros de texto) y no son ejecutables (paraello deben compilarse primero). Este fichero contiene información para el programacompilador y será leído por éste cuando lo ejecutemos.368


<strong>Anexo</strong> C. <strong>Sobre</strong> <strong>sistemas</strong> <strong>operativos</strong>2.5. Intérprete de comandosEn todo sistema operativo es necesario un conjunto de rutinas que analicen e interpretenlos comandos del usuario. Hay varias formas de entablar comunicación conun ordenador, si bien es posible agruparlos en dos categorías conceptualmente diferentes.El primero (y más simple) método de comunicación con el ordenador consiste endar órdenes compuestas por palabras, de forma similar a cómo lo haríamos empleandofrases de nuestro propio idioma.La sintaxis es sin embargo muy limitada, pues en realidad lo que ocurre es que elsistema operativo reconoce un conjunto predefinido de palabras clave dentro decláusulas con una sintaxis también prefijada y muy rígida.Así, en CP/M, para ver un directorio del disco "B:" diríamos "DIR B:". El sistemaoperativo no reconocería una orden del tipo "Dame el directorio del disco B:".El problema es, pues, diseñar intérpretes de comandos que admitan órdenes lomás cercanas posible al lenguaje natural.Sin embargo, también es cierto que, a mayor abundancia de palabras clave y formassintácticas, más difícil resultará para el usuario recordarlas.Para resolver este problema se acude a otro método de comunicación con elusuario. En éste, el usuario no tiene que escribir ningún comando, sino que debeelegir, entre un conjunto de opciones, aquella que le permitirá llevar a cabo la operacióndeseada. Estos conjuntos se denominan "menús" y pueden ser de dos tipos.En el primero, los menús están compuestos por palabras o frases que indican quées lo que realiza dicha selección, y el usuario se limita a señalar una de dichas opciones.El segundo tipo es idéntico al anterior en todo, excepto que la forma de representarlas opciones no es ya por medio de palabras, sino por medio de dibujos o "iconos".El usuario se limita a señalar uno de éstos para realizar la función que éstossimbolizan.Independientemente de la forma en que se interpretan los comandos, éstos puedenser residentes o no residentes. Los primeros son pequeños programas que, porsu frecuente uso, residen permanentemente en memoria principal. Pueden ser comandospara visualizar directorios, o para transferir ficheros de unos discos a otros.Los comandos no residentes son programas que llevan a cabo funciones muy variadasy menos frecuentes, por lo que no siempre son necesarios en memoria principal.Por ello son cargados en memoria únicamente cuando se ejecutan.Los comandos no residentes se dividen en utilidades y programas, cuya misiónestá relacionada con el sistema en sí. Pueden servir para copiar discos, para verificarel estado de funcionamiento del sistema o para preparar el ordenador de cara ala ejecución de una aplicación. Las utilidades básicas suelen suministrarse con elpropio sistema operativo.369


Computadores personalesLos programas de aplicación están orientados a la resolución de problemas y, porello, al usuario, y no, como en el caso anterior, al sistema en sí. El usuario utiliza estosprogramas en aplicaciones particulares como proceso de textos, gestión de basesde datos, etc. En cambio, las utilidades son empleadas principalmente por elprogramador, como herramienta para desarrollar aplicaciones.3. SISTEMAS OPERATIVOS MULTITAREA-MONOUSUARIOEn la realización de algunas tareas (ejecución de programas) suele ocurrir que elordenador desarrolla múltiples funciones, mientras que el operador está inactivo. Enun sistema interactivo, esto hace que el operador pierda su atención e incluso suconcentración, o desperdicie gran cantidad de tiempo. Por otra parte, también esfrecuente el caso contrario, es decir, tareas en las que la actividad del operador esmuy importante y continuada mientras que el ordenador está muy infrautilizado. Encada caso, si fuera posible la "simultaneización" de tareas, se conseguirían varios objetivos:utilizar más los recursos de que se dispone (el ordenador); hacer que el operadorpueda estar más tiempo dedicado a realizar trabajo necesario y no esperandorespuestas, todo ello a costa de una "pérdida" de velocidad que muchas veces esimperceptible para el usuario.Desde el punto de vista del ordenador, sin embargo, este cambio supone un aumentomuy importante de las dimensiones del sistema operativo, ya que se trata deque el usuario no se tenga que preocupar de transferir control de una tarea a otra,sino que sea el S.O. quien lo haga automáticamente.3.1. Gestión del procesadorEn los S.O. monotarea tan sólo un programa podía ejecutarse a la vez. En los multitarease simultanea (aparentemente) la ejecución de varios programas. A cada programaen ejecución se le llama "proceso", el cual incluye tanto el código ejecutablecomo un cierta información acerca de la ejecución en curso (valores de variables,línea a ejecutar...). Hablaremos equivalentemente de multitarea, multiprogramacióno multiproceso, y, como es sabido, para que haya multiproceso no es necesario contarcon más de un procesador físico.En general, en los <strong>sistemas</strong> convencionales sólo se dispone de una unidad centralde proceso o procesador central (UCP; en inglés CPU, Central Processing Unit), porlo cual tan sólo puede haber un proceso que ocupe la CPU, y que esté por tanto "enejecución".Habrá además varios procesos que no estarán ejecutándose, pero que podrían hacerloen el momento en que la CPU quedara libre. De estos procesos se dice queestán "preparados".Hay, por último, otros procesos que requieren que el sistema les conceda algúnrecurso (memoria, periférico de entrada/salida... ) para su continuación. Estos procesosestán "en espera" de algún evento externo a sí mismos (evento producido por elS.O. o por otro proceso).370


Existen varios métodos para dividir el tiempo de CPU entre los distintos procesos.El más sencillo consiste en realizar una tarea hasta su conclusión. Ahora bien, estemétodo va en contra de la idea básica de multitarea, ya que fuerza de nuevo a lamonotarea efectiva (un proceso no abandona el procesador hasta su muerte, hastaconcluir su código). Para evitar este hecho es por lo que surgieron los métodos de"tiempo compartido", por los cuales el procesador divide su tiempo en cortos períodos("time slices") al cabo de los cuales se saca al proceso en ejecución del procesador("pre-emption", prevaciado).En todos estos cambios, el proceso debe conservar de alguna manera todos losdatos propios para poder reanudarse en el punto en que se interrumpió, sin rehacernada del trabajo ya realizado. Esa información se guarda en el "descriptor de proceso",que incluye el estado del proceso (espera/preparado/ejecución), la línea siguientede código que hay que ejecutar, los contenidos de los registros del procesadorcentral, así como otros datos de contexto.En cada momento puede haber varios procesos preparados, o esperando por algúnrecurso específico, por lo que se necesita algún algoritmo para elegir entreellos el primero en ser atendido. De este tema se ocupa la teoría de <strong>sistemas</strong> deespera, y más concretamente la teoría de colas. Cada nuevo proceso preparado, porejemplo, ocupa un lugar en la "cola de procesos preparados", que depende del algoritmode gestión de la cola, y que fundamentalmente puede ser FCFS (First-Come-First-Served, el primero llegado es el primero servido), con prioridades(HOL, "head of the line") o dependiente del trabajo demandado del procesador.Para un análisis en profundidad del tema véase (Kobayashi, 1981).De la misma manera, para cada recurso del sistema por el que puede haber unconflicto de acceso se forma una cola de espera asociada, que controla la entrada alrecurso en cuestión.37 1


Computadores personales3.2. Gestión de la memoriaOtro problema que se presenta en el multiproceso es el de la gestión de memoria.En el monoproceso bastaba con saber la zona de memoria disponible para elprograma en ejecución; ahora se hace necesario establecer algún mecanismo paracontrolar la memoria ocupada por un proceso, y para evitar que algún otro destruyainformación del mismo. Lo que se hace habitualmente es dividir la memoria enpartes, una por proceso.Estas zonas de la memoria pueden ser estáticas, esto es, cada proceso dispone deun cierto espacio de memoria fijo e inalterable, debido a imposiciones físicas. Unejemplo de este tipo de memoria es la "memoria de bancos seleccionables", en elcual se elige un "banco" (zona) de memoria, y no se puede salir de él sin abandonarel proceso. Como puede intuirse, este método es muy poco eficaz desde el punto devista de aprovechamiento de la capacidad de la memoria, ya que si un proceso esmuy corto se desperdicia casi toda la partición (inutilizable por otros procesos). Porotra parte, se limita de una manera importante el tamaño de los programas que puedenejecutarse, ya que en ningún caso se puede sobrepasar la memoria asignada aun proceso. También se limita el número de procesos simultáneos, por muy pequeñosque sean, al número de zonas de memoria disponibles.Un paso adelante es la división dinámica de la memoria, por la cual cada procesotoma de la memoria del sistema tan sólo la zona que le es necesaria, lo cual resuelvealgunos de los problemas de la división estática. Cuando un proceso termina, se liberala memoria de que disponía; cuando otro comienza, se busca en la memoriauna zona lo suficientemente grande como para acogerlo. Sin embargo, este métodoprovoca la división excesiva de la memoria, lo cual puede llegar a causar que unprograma que cabría en la memoria libre existente no pueda ser cargado, ya quetodos los huecos son demasiado pequeños. Para evitar esto se utiliza la compactaciónde zonas de memoria, que consiste en agrupar dentro de lo posible todos loshuecos en uno (o unos pocos) mayor. A pesar de esto, es imposible el evitar desperdiciaruna cierta porción de memoria, si bien esta pérdida es inferior a la del casode particiones estáticas.Estos dos conceptos (particiones estáticas y particiones dinámicas) evolucionaronhacia otros dos más sofisticados pero también más potentes: la paginación y la segmentación.La paginación consiste en dividir la memoria en zonas estáticas, las páginas, quesuelen ser pequeñas (128 bytes, 256 bytes, 1 Kbyte son valores típicos), y que notienen por qué albergar la totalidad de un proceso. El proceso estará distribuido a lolargo de un cierto número de páginas. Así, se limita el espacio desperdiciado a unapágina (en promedio, tan sólo media página) por proceso en memoria, si bien introduceuna complicación adicional en el control de las páginas.La segmentación, por otra parte, es una evolución de las particiones dinámicas,pero con una intención más bien de racionalizar el almacenamiento en memoria quede aprovechar al máximo ésta. Consiste en separar el programa en varios segmentos,los cuales deben ser entidades lógicamente compactas, como por ejemplo el código(instrucciones ejecutables), los datos, las pilas de ejecución de operaciones...Cada una de estas entidades ocupará un segmento cuya longitud es dinámica. Estadivisión es lógica, frente a las divisiones físicas que suponían los otros métodos.372


<strong>Anexo</strong> C <strong>Sobre</strong> <strong>sistemas</strong> <strong>operativos</strong>En la actualidad, casi todos los <strong>sistemas</strong> <strong>operativos</strong> multitarea soportan la paginación,y bastantes, la segmentación, siendo común el caso de presentar ambos métodoscombinados, esto es, una organización en segmentos que a su vez están paginados,o una división en páginas agrupadas en conjuntos lógicos que representan segmentos.3.3. Gestión de entradas/salidasLa multitarea supone también un cambio importante en lo que respecta a la entraday salida del sistema, ya que ahora varios procesos comparten, por ejemplo, unasola pantalla. Debe haber algún mecanismo que evite que se entremezclen los datosy resultados de varios programas. Este mecanismo son las colas de espera, ya descritasen el punto 3.1.Existe, sin embargo, una diferencia importante en el tratamiento que se debe dar alos procesos "en tiempo real" (procesos interactivos, que deben atenderse de inmediato)y a los procesos "batch" (por lotes, o procesos que se realizan en ratos libres,esto es, cuando no hay que atender procesos en tiempo real, y que no necesitanentradas interactivas por lo general). Los primeros deben tener una alta prioridadpara que su ejecución sea lo más pronta posible, siendo en este particular lo másimportante el control de los dispositivos de entrada/salida, ya que son éstos los queretardan la ejecución.Hay dos mecanismos especiales de entrada/salida, utilizados para agilizar ésta ypara evitar que los accesos de e/s provoquen un retardo excesivo a la ejecución delos diversos procesos. Estos son el "buffering'", utilizado generalmente con dispositivosrápidos, y el "spooling", frecuente en el manejo de impresoras.El "buffering" consiste en realizar lecturas o escrituras en bloques relativamentegrandes, que se almacenan temporalmente en una zona de memoria especificadade antemano ('buffer"), por lo cual la lectura o escritura física tan sólo se realizacuando esa zona se llena por completo. Dado que la tasa de transferencia de estosdispositivos rápidos (por lo general discos) es muy alta, el tiempo necesario paratransferir el buffer completo es tan sólo ligeramente superior al necesario para almacenaro recuperar un dato único, debido al tiempo utilizado en el posicionamientodel dispositivo sobre el lugar adecuado para realizar la transferencia, muy elevadofrente al tiempo de lectura o escritura de datos.El "spooling" consiste en almacenar (en forma de cola) la información a imprimiren un fichero de disco, del cual se extraerá posteriormente para la impresión. Mientrastanto, el procesador puede continuar como si la escritura hubiera sido realizada.Cuando llegue su turno, el 'spooler" abrirá el fichero y se imprimirá lo necesario,pero no se habrá retardado el proceso original. Este mecanismo se instrumenta paracompensar la lentitud de las impresoras con respecto al procesador (y con respectoa las unidades de disco) y evitar así desperdiciar un tiempo considerable esperandoque las impresoras finalicen su tarea.3.4. Gestión de la informaciónTambién surgen problemas con los ficheros al intentar simultanear varios proce-373


Computadores personalessos. Puede ser que dos tareas accedan a los mismos datos, incluidos en un fichero;en ese caso, es necesaria la "compartición" de ficheros por varias tareas.Por otra parte, esta compartición no puede ser admitida en todos los casos. Porejemplo, no se debe poder estar editando y compilando el mismo fichero simultáneamente.surge el problema de mantener la "privacidad" de fichero a un proceso.La sincronización entre procesos también requiere algunos mecanismos especialesde compartición de ficheros, pero serán estudiados en puntos sucesivos.Con respecto a la organización de la información surge ahora el concepto de "directoriojerarquizado", en el sentido de dividir el directorio de un dispositivo en subdirectorios,generalmente ocupados cada uno por grupos de ficheros relacionadoslógicamente entre sí. Son especialmente útiles para su empleo con discos duros,de gran capacidad, y que por tanto contienen gran cantidad de ficheros. Su organizaciónen un solo directorio es ineficiente desde el punto de vista del operador (sepuede perder entre una gran cantidad de ficheros que no le son necesarios en uncierto momento) y desde el punto de vista del ordenador (se tarda mucho en buscarun fichero en un directorio convencional con muchas entradas).3.5. Intérprete de comandosEl intérprete de comandos en sí es muy similar al de los <strong>sistemas</strong> monoproceso,pero dada la complejidad creciente del sistema operativo se dan otras facilidades alusuario para su mayor comodidad.Quizá la única peculiaridad del intérprete de comandos específica de este tipode <strong>sistemas</strong> es la distinción entre comandos para ser ejecutados en forma interactivao en batch, lo cual es importante a la hora de asignar prioridades a los diferentesprocesos.De entre las ventajas ofrecidas al usuario para el manejo del ordenador citaremostan sólo algunas, ya que este campo presenta una evolución muy rápida en este momento.En primer lugar, citaremos los programas de comandos, es decir, grupos de instruccionespara el sistema operativo que deben ser ejecutadas en secuencia, y quese expresan en un fichero específico. Se permite así la ejecución sucesiva de comandossin la intervención del operador. El ejemplo más simple de este tipo de facilidadeses el comando SUBMIT de CP/M y MP/M (CP/M no es multitarea, pero incluyeesta mejora).Otra facilidad para el operador es el concepto de "ventana". Disponer de ventanassupone que cada proceso disponga de una "pantalla virtual" para sí, sin tener quecompartirla. El operador en cada momento puede a conveniencia seleccionar la visualizaciónde una o varias de ellas, a través de las "ventanas" creadas en la pantallareal. Este método se está extendiendo con verdadera rapidez.Cabe citar, por último, los intérpretes de comandos cuyo acceso no es por "comandotecleado", sino a través de menús. El operador selecciona la tarea a realizar374


<strong>Anexo</strong> C. <strong>Sobre</strong> <strong>sistemas</strong> <strong>operativos</strong>mediante unas selecciones parciales en menús. Esto permite una gran facilidad deuso, si bien ralentiza algo al operador experto. Tampoco está excesivamente difundido,si bien su concepción diferente en la interpretación de órdenes nos recomiendasu inclusión en este anexo.4, CARACTERÍSTICAS AVANZADAS; SISTEMASMULTITAREA-MULTIUSUARIOEn este último apartado de descripción de las características generales de losS.O. entramos en el terreno de las funciones y utilidades más sofisticadas, que normalmentevan respaldadas por un importante equipo de hardware con objeto de obteneruna buena eficiencia del conjunto hardware-sistema operativo. Los S.O. másavanzados son aquellos calificados como "multiusuario", en el sentido de que ofrecenla posibilidad de que más de un usuario puede utilizar el sistema, y "multiproceso",en el sentido de que permiten la ejecución concurrente de procesos del mismo y dedistintos usuarios. La forma en que se alcancen estas características determinará eltipo particular de tareas para la que el S.O. resulta más eficiente (p. ej.: trabajo interactivoen tiempo compartido, procesamiento en tiempo real, trabajo en batch... ).4.1. Gestión del procesadorAl hablar de los S.O. multitarea-monousuario vimos la necesidad de introducir elconcepto de proceso y la estructura de datos necesaria para su manejo: el descriptosde proceso. Esta estructura debe añadir, en el caso de que el S.O. sea multiusuario,información del propietario o creador del proceso, con objeto de someterle a lasrestricciones y otorgarle los privilegios asignados a ese usuario en el ámbito del sistema(por ejemplo, no tendrá los mismos privilegios un proceso creado por el "manager"del sistema que otro creado por un usuario que se dedica normalmente a laejecución de tareas interactivas).A la hora de otorgar privilegios durante la ejecución de un proceso no sólo es importanteel usuario que lo creó, sino el modo en que se está ejecutando. Sistemas<strong>operativos</strong> complejos, como el VMS de DEC, establecen una verdadera jerarquía deprotección multimodo con objeto de garantizar la integridad del sistema. Dentro deesta jerarquía de capas sólo los procesos del sistema pueden llegar a ejecutarse ensus capas más internas, donde se poseen privilegios vedados para las capas más externasy se disfrutan de todos los que estas últimas tienen concedidos.En los S.O. sofisticados podemos distinguir varios niveles en la gestión del procesador,es decir, en la tarea de la elección del proceso que en un instante dado obtienela CPU para ejecutarse. Podemos hablar de un "planificador a largo plazo", quedetermina qué procesos son admitidos en el sistema para que participen en la competiciónpor la CPU, esto es, qué procesos son admitidos en la cola de procesos preparados.El "planificador a corto plazo" es el que decide en cada instante qué procesosde los que esperan en la cola de procesos preparados obtiene la CPU. Este planificadordebe ejecutarse muy rápidamente con objeto de no desperdiciar tiempode CPU, para lo cual debe usar un algoritmo sencillo. Sin embargo, el planificador alargo plazo se ejecuta menos frecuentemente: en los momentos en que un procesova a dejar de competir por la CPU por haber concluido su ejecución. Esto le permite375


Computadores personalesbasarse en un algoritmo más complejo y mejor elaborado. Hay que tener en cuentaque su labor así lo exige, ya que es el encargado de controlar el grado de multiprogramacióndel sistema, y debe conseguir que el conjunto de procesos que compitenpor la CPU sea una mezcla en proporciones adecuadas de procesos con muchasoperaciones de entrada/salida y procesos con tiempos largos de uso de la CPU. Sóloasí se obtendrá un buen rendimiento, tanto de la CPU como de los dispositivos deentrada/salida.Aún podemos distinguir un nivel intermedio en la planificación de la CPU: el "planificadora medio plazo". Éste, en los <strong>sistemas</strong> con capacidad de trasiego de procesoscompletos entre memoria principal y secundaria, es el que se encarga de gestionarla cola de procesos trasegados a memoria secundaria con objeto de devolverlosa la cola de procesos preparados.Por último, es importante reseñar que el aludido planificador a corto plazo, siendoquien fija la estrategia del sistema, en el sentido de favorecer características concretasde la aplicación a la que se destina (p. ej.: minimización del tiempo de respuestainteractivo, ejecución de tareas en tiempo real...), es diferente del "dispatcher" (distribuidor),módulo del S.O. que se encarga de la tarea rutinaria del cambio de contextouna vez que el planificador a corto plazo ha terminado su labor.Pero, además de una serie de algoritmos que permitan un uso eficiente de laCPU, el S.O. debe ofrecer un conjunto de mecanismos tanto para la creación denuevos procesos como para la coordinación entre los mismos durante su ejecuciónconcurrente. Dentro del concepto de coordinación podemos distinguir dos campos:el de la "sincronización", para la cual los <strong>sistemas</strong> <strong>operativos</strong> sofisticados proporcionanherramientas como los semáforos, y el de la "comunicación", en su doble enfoquede memoria compartida y paso de mensajes. Un soporte adecuado y eficientede la coordinación entre procesos y de la detección, prevención y evitación de bloqueospermite a un sistema operativo potente dar el soporte adecuado para el usode los modernos lenguajes de programación concurrente.4.2. Gestión de memoriaYa vimos cómo los conceptos de paginación y segmentación permiten una gestiónde la memoria real de un ordenador adecuada al hecho de la compartición del sistemapor distintos procesos. Muchos <strong>sistemas</strong> <strong>operativos</strong> avanzados adoptan uno deestos esquemas de gestión de memoria real, pero otros dan un paso más hacia lasofisticación y la eficiencia en el uso del hardware introduciendo el concepto dememoria virtual.La gestión de memoria virtual consiste en una serie de técnicas mixtas de softwarey hardware orientadas a permitir que un proceso pueda ejecutarse aunque noresida completamente en memoria principal, pudiendo permanecer partes del mismoen memoria secundaria hasta que sea necesaria su ejecución, en cuyo momentola parte requerida es trasladada a memoria principal. Esta forma de gestión de memoriale permite al programador trabajar con un espacio de direccionamiento lógicomucho mayor que el realmente disponible como memoria principal, lo que se traduceen una simplificación de la tarea de la programación.376


<strong>Anexo</strong> C <strong>Sobre</strong> <strong>sistemas</strong> <strong>operativos</strong>La técnica de memoria virtual más extendida se basa en el concepto de paginación(la memoria virtual segmentada presenta algunos problemas que la hacen bastantecompleja). Cuando un proceso en ejecución referencia una dirección lógica,ésta se traduce a una dirección física mediante el uso de la tabla de páginas asociadaa ese proceso; ahora bien, dicha tabla permitirá la obtención de la dirección físicade memoria principal que corresponde a la dirección lógica referenciada sólo sila página a la que pertenece reside en ese instante en memoria principal; si no esasí, indicará la necesidad de ir a buscar la página completa a memoria secundaria,se cargará ésta en memoria principal y se accederá tras ello a la dirección física correspondiente.El uso de memoria virtual implica una complejidad lógica adicional, como consecuenciade la necesidad de una serie de algoritmos relacionados con su gestión. Así,se precisa un algoritmo de abastecimiento, que decida en cada instante qué páginasde qué procesos deben residir en memoria principal; asociado con él aparece, entreotras estrategias, el concepto de "working-set" (conjunto operativo), conjunto depáginas usadas en las últimas referencias de un proceso, cuya elección adecuadatendrá una importancia capital para la eficiencia del sistema de memoria virtual.Además, se precisa un algoritmo de sustitución que decida, en el caso de que hayaque desalojar una página de memoria principal con objeto de dejar su sitio a otrapágina que se encuentra en memoria secundaria, cuál ha de ser la página 'víctima"(del mismo proceso o de otro) que ceda su ubicación a la que va a ser cargada enmemoria principal. Una elección adecuada de los algoritmos de abastecimiento ysustitución permite minimizar la tasa de fallos (intentos de acceder en la memoriaprincipal a una dirección lógica correspondiente a una página residente en memoriasecundaria), haciendo así rentable para las prestaciones del sistema el uso de memoriavirtual. Los algoritmos óptimos serán los que mejor se adapten al principio delocalidad de los programas (Peterson, 1983).Con el uso de memoria virtual se consigue ofrecer al usuario un espacio de direccionamientológico cuya capacidad es mucho mayor que la del espacio de direccionamientode la memoria principal, pero a costa de obtener un tiempo de accesomedio sensiblemente superior que el de dicha memoria principal. Para mejorar eltiempo de acceso, los <strong>sistemas</strong> <strong>operativos</strong> sofisticados hacen uso de un nuevo nivelen la jerarquía de memoria: la memoria "cache". Esta es una memoria sensiblementemás pequeña que la principal, pero mucho más rápida, cuyo objeto es contener encada instante la localidad actual de los procesos en ejecución, lo cual permite reducirel tiempo de acceso medio al espacio de direccionamiento resultante en el gradoen que se consiga tal objetivo. La memoria "cache" juega el mismo papel conrespecto a la principal que el que ésta tiene con respecto a la secundaria en la gestiónde memoria virtual, siendo preciso por tanto la adición de nuevos algoritmos deabastecimiento y sustitución para su gestión, como contrapartida a la obtención deun menor tiempo medio de acceso.4.3. Gestión de entradas/salidasUn sistema operativo avanzado debe permitir la gestión de un conjunto muy diversificadode dispositivos de entrada/salida, sin aumentar sustancialmente la complejidadde las primitivas que debe utilizar el usuario.377


Computadores personalesUno de los enfoques adoptados para la obtención de este objetivo es la fusión delsistema de ficheros con la gestión de entrada/salida, haciendo que un dispositivo deentrada/salida posea la misma estructura lógica que un fichero; así, los dispositivosde entrada/salida se convierten, de cara al usuario, en simples "ficheros especiales"cuya gestión se realiza con las mismas primitivas que ofrece la capa de gestión de lainformación. Este enfoque va asociado normalmente a una ejecución síncrona de lasoperaciones de entrada/salida con el proceso que las solicita, esto es, el procesoqueda "dormido" hasta la conclusión de la operación, con lo que para él ésta tiene elaspecto de una instrucción atómica ininterrumpible.Otro enfoque para la gestión de los dispositivos de entrada/salida es el de dotar alS.O. de una capa con entidad propia para la realización de tal labor. Con este enfoque,el proceso que desea realizar una operación de entrada/salida debe efectuaruna llamada a una primitiva de la capa de gestión de entrada/salida informando deldispositivo lógico sobre el que desea operar, qué operación desea realizar y el restode informaciones necesarias para poder realizar tal operación; al ejecutarse la primitivaentra en acción un proceso de entrada/salida que verifica la consistencia dela operación solicitada con las características del dispositivo físico involucrado en lamisma; si es así, construye un "bloque de demanda de entrada/salida" (BDES) con lainformación de la petición concreta realizada por el proceso y lo encola a las demáspeticiones hechas sobre el mismo dispositivo. El manejador del dispositivo es el quese encarga de ir desencolando las peticiones e inicializando las operaciones en sísobre el dispositivo. Cuando recibe información de la conclusión de la operación,por ejemplo mediante una rutina de interrupción asociada al dispositivo, compruebaque ésta se ha verificado correctamente, e informa al proceso que la solicitó delevento de su conclusión correcta. Este enfoque permite que la operación de entrada/salidase realice de forma asíncrona con el proceso que la solicitó, pudiendo dedicarseéste durante el tiempo que requiere el servicio de su petición a la realizaciónde otras tareas; pero si el proceso lo desea puede "dormirse" hasta que el manejadorle informe del fin de la operación, ejecutándose así en forma síncrona conésta (Listen, 1979).4.4. Gestión de la informaciónEl sistema de gestión de ficheros de un S.O. avanzado debe añadir mecanismosadecuados para asegurar la protección, fiabilidad de almacenamiento y coexistenciaarmoniosa de ficheros creados por distintos usuarios.El sistema puede soportar normalmente más de un tipo de acceso (secuencial, directo)y estructura física del fichero en disco (contigua, lista encadenada, indexada),dejando al usuario la elección de las características concretas que desea para cadanuevo fichero en la primitiva correspondiente para su creación.En un S.O. multiusuario-multiprogramación sería altamente ineficiente el uso deun directorio con estructura lineal; es preferible una estructura arbórea multinivel,con la introducción de subdirectorios, que permita una ubicación lógica de los ficheros,adecuada tanto a la identidad de su creador como al significado que cada ficherotiene para su propietario.Con objeto de permitir la compartición de ficheros, el sistema puede ofrecer eluso de "enlaces" (links; ver apartado 3.4 del capítulo 4 de este anexo), dotando así al378


<strong>Anexo</strong> C <strong>Sobre</strong> <strong>sistemas</strong> <strong>operativos</strong>directorio de una estructura no estrictamente arbórea, denominada de "grafo acíclico,'.Con respecto a la protección del sistema de ficheros, podemos distinguir dos niveles:una protección externa, de entrada al sistema mediante una palabra de pasoy a una cuenta determinada, con un subdirectorio definido por defecto y unas restriccionesimpuestas al movimiento por el árbol de subdirectorios; y una proteccióninterna que, mediante un campo del descriptor del fichero, indique el tipo de accesopermitido (lectura, escritura, ejecución, borrado) al propietario (también identificadoen el descriptor del fichero), su grupo, el resto de usuario y el sistema.4.5. Lenguaje de control de trabajos (JCL)Un sistema operativo sofisticado no puede limitarse a ofrecer un simple intérpretede comandos para comunicarse con el usuario, sino que debe soportar un verdaderolenguaje de control de trabajos que permita al usuario combinar adecuadamentecomandos y programas propios en programas de comandos con un flujo de controlperfectamente definido y, si es posible, estructurado y asistido mediante el uso devariables.Es la altura del nivel que se obtenga en la evaluación de la relación sencillez/potenciadel lenguaje de control de trabajos ofrecido por el sistema la que define elgrado en que se ha conseguido el objetivo de ofrecer al programador una máquinavirtual potente y sencilla de utilizar; de ahí la importancia de cuidar en extremo elJCL (Job Control Language, en inglés), incluso en la forma de presentar los mensajesde error, como interfaz entre el usuario y el sistema.Es preferible que el S.O. ofrezca al usuario un conjunto de utilidades básicas, fácilmentecombinables para la obtención de otras más sofisticadas, que un repertorioamplísimo de comandos con multitud de opciones; aunque esto no quiere decir queel sistema no deba ofrecer, opcionalmente y sólo al usuario interesado, una serie depaquetes de herramientas especializadas en determinadas aplicaciones. Es precisamentela integración en un S.O. básico de un conjunto de herramientas especialmentepensadas para la ayuda a la gestión en proyectos de desarrollo de software loque hace que el conjunto hardware-sistema operativo deje de ser una simple máquinavirtual de propósito más o menos general orientado a ejecución, para convertirseen un verdadero Entorno de Programación, orientado a conseguir que la labor deprogramar resulte más sencilla y abordable, y que los resultados obtenidos reflejenuna mayor eficiencia, productividad, corrección y fiabilidad..RESUMENpersonal la utilización de los ordenadores y sacar al tiempo el máximo provecho delos recursos informáticos disponibles.Su tarea es compleja. Se ocupan, en resumen, de la creación, planificación, coordinacióny ejecución de procesos bajo el siguiente y doble principio de compromiso:a) optimizar la gestión de los recursos del sistema, como son, entre otros, el pro-379


Computadores personalescesador central, la memoria y las informaciones; b) optimizar su simplicidad de manejo,eficiencia y seguridad. En suma, optimizar simultáneamente su funcionalidad, ysu convivencialidad.En este capítulo se ha hecho una descripción muy general de algunos de los mecanismosque son más habituales en la realización de tal tarea. La estrategia seguidaha consistido en dividirlo convencionalmente en tres apartados según un orden decomplejidad creciente de los <strong>sistemas</strong> <strong>operativos</strong>: 1. S.O. monousuario-monotarea; 2.S.O. multitarea-monousuario; 3. S.O. multitarea-multiusuario.Este orden pone de manifiesto la adopción de un equipo de hardware cada vezmás abundante y potente, lo que impone la necesidad de organizar los recursos enjerarquías y, consecuentemente, de introducir prioridades y otros tipos de restricciones.En el caso de los ordenadores personales, el crecimiento de la potencia y funcionalidaddel sistema operativo pasa siempre por la arquitectura del microprocesador.Cabría cuestionar que un sistema multiusuario puede llegar a ser consideradoun sistema personal, pero ésta no es materia para este anexo.El capítulo sintetiza, tal vez simplificando en exceso, un tema por fortuna muy bientratado ya en la literatura técnica, hacia la que remitimos al lector interesado en profundizaren él. Dentro del enfoque general aquí empleado son especialmente recomendableslos libros de Peterson (1983, 1985) y de Deitel (1984) y, en un plano muchomás esquemático y conceptual, el de Lister (1979). Por nuestra parte, hemospretendido seleccionar en ellos un conjunto adecuado de conceptos y técnicas paraabordar un estudio somero de los tres <strong>sistemas</strong> <strong>operativos</strong> más difundidos en la informáticapersonal.Los próximos tres capítulos describirán lo esencial de los <strong>sistemas</strong> CP/M, MS-DOSy UNIX. A la familia UNIX le dedicaremos mayor espacio, porque, por el momento,es menos conocida entre los usuarios de computadores personales y muchos signosnos la anuncian como el estándar industrial de la última generación.Además, tanto MS-DOS, desde sus orígenes, como las últimas versiones de CP/M,han recibido influencias de los conceptos UNIX.380


2. Sistema operativo CP/M1. INTRODUCCIÓNCP/M (Control Program for Microcomputers), también llamado CP/M-80 en susversiones iniciales, es un sistema operativo monotarea-monousuario, diseñado enprincipio para funcionar con los microprocesadores Intel-8080 y Z-80 (véase <strong>Anexo</strong>sobre Microprocesadores). Posteriormente, la empresa distribuidora de CP/M (DigitalResearch Inc.) ha diseñado y distribuido diversas versiones de la idea original,incluyendo la utilización en microordenadores de 16 bits (CP/M-86, diseñado para lafamilia Intel-8086, 8088), en <strong>sistemas</strong> multiusuario (MP/M) y la integración en redesde ordenadores (CP/NET). De todos ellos hablaremos aquí, después de recordar algunosdatos históricos.2. BREVE HISTORIA DE CP/MLa historia de CP/M reposa sobre tres pilares básicos, a saber, el microprocesadorZ-80 o el Intel-8080, el desarrollo de los discos flexibles, y el lenguaje PL/M. Estostres elementos se desarrollaron a principios de los años 70 de forma casi simultánea,y CP/M es el resultado de su integración de una forma muy peculiar.El primer bosquejo de CP/M fue elaborado en Intel por Gary Kildall, cuya intenciónera crear un sistema de desarrollo de programas en PL/M que mantuviera uncompilador residente de dicho lenguaje y permitiera el acceso a ficheros en discoflexible. Esta idea fue rechazada en un principio por la empresa Intel, ya que sepensó que los entornos PL/M disponibles sobre grandes ordenadores eran suficientespara las necesidades del momento.Este rechazo tuvo como consecuencia que CP/M se convirtió en el primer productode la empresa Digital Research Inc., a la que se pasó Kildall con su invento. Distribuidocomercialmente hacia 1976, fue inmediatamente adoptado por bastantesconstructores de microcomputadores que pretendían así eliminar los costos de desarrollode un sistema propio. Esto fue posible debido a la gran portabilidad de CP/M,que comentaremos más adelante.A la popularidad de CP/M han contribuido también sus propios usuarios, quienesaportaron numerosos refinamientos, introducidos paulatinamente en sucesivas versiones.Otro elemento a destacar es la cantidad de programas desarrollados en y paraCP/M, los cuales a su vez contribuyen a un mayor rendimiento (y, por tanto, a unmayo número de usuarios) del sistema operativo. Existen compiladores para casi todoslos lenguajes de programación (BASIC, PASCAL, C, PL/M, FORTH, LISP, ADA,COBOL, FORTRAN...), así como intérpretes para algunos otros (BASIC, PROLOG)(Hogan, 1982). También hay herramientas de diseño de bajo nivel (ensambladores ydepuradores de diversos tipos) y gran cantidad de editores y procesadores de textos.Asimismo, existe una gran variedad de programas de gestión y de bases de datos.38 1


Computadores personalesComo resumen, CP/M ha llegado a tener varios cientos de miles de usuarios en elmundo funcionando con miles de configuraciones físicas diferentes, que lo conviertenen el sistema operativo para ordenadores personales más utilizado por el momento.En 1984, CP/M ocupaba un 70% del mercado de los <strong>sistemas</strong> <strong>operativos</strong> para computadorespersonales de 8 bits. (Fertig, 1985). Ha tenido muchos imitadores o "clones".3. ESTRUCTURA DE CP/MPara facilitar la portabilidad de CP/M, sus diseñadores lo dividieron en dos partes,una variable y otra invariable para todas las instalaciones. Así, para trasladar CP/M aotra máquina tan sólo habría que reescribir las rutinas variables, que correspondenal control de los dispositivos físicos de entrada/salida. Esta parte debe estar escritaen el ensamblador de la máquina en la que se desea instalar CP/M, mientras que laparte invariable está escrita en PL/M y contiene las rutinas de control de discos.Por otra parte, los parámetros de los discos del sistema están almacenados en tablasen la zona variable, por lo que un cambio en los discos físicos tan sólo suponeun cambio mínimo en esas tablas.En cuanto a la estructura funcional de CP/M se distinguen tres sub<strong>sistemas</strong>:a) Procesador de Comandos de Consola (CCP, Console Command Processor).b) Sistema Básico de Entrada/Salida (BIOS, Basic Input/Output System);c) Sistema Operativo Básico de Disco (BDOS, Basic Disk Operating System).El usuario interacciona con el sistema a través del CCP, el cual llama a BDOS oBIOS, dependiendo de la tarea a realizar. El BIOS contiene los controladores de dispositivosde entrada/salida, y el BDOS contiene las rutinas básicas de manejo de disco(figura 3).


<strong>Anexo</strong> C <strong>Sobre</strong> <strong>sistemas</strong> <strong>operativos</strong>La parte residente de CP/M ocupa aproximadamente 8 Kbytes, pero este valordepende mucho del computador concreto. Esa memoria está fuera del control delusuario, por lo que no puede ser utilizada en ningún caso. Aparte de esto, en la primerapágina (página cero a página base, primeros 256 bytes de la memoria) se almacenandiversos parámetros del sistema. La estructura de la memoria queda portanto como sigue (figura 4).La parte no residente de CP/M, así como la mayoría de los comandos del sistema,se cargan en la TPA (Transient Program Area, Area de Programas Transitorios)como si se tratara de otro programa de usuario.4. SISTEMA BÁSICO DE ENTRADA/SALIDASu tarea es el manejo de los dispositivos físicos de los periféricos, a un bajo nivel.Sus funciones incluyen la lectura de consola, obtención de status, posicionamientode la cabeza de lectura del disco, lectura y escritura de cadenas de caracteres, y engeneral todas las operaciones con periféricos. Sin embargo, los ficheros (ver másadelante) le son desconocidos, es decir, realiza las operaciones sin atender a ningunaorganización lógica, limitándose a la realización física de la tarea.Esta parte debe reescribirse para cada nuevo sistema, ya que cambian los periféricosa manejar.5. SISTEMA OPERATIVO BÁSICO DE DISCOManeja la entrada y salida del disco (también ciertas partes de la de consola). Suoperación ya tiene un componente lógico mucho mayor, realizando todas las operacioneshabituales sobre ficheros, incluyendo el manejo de ficheros secuenciales yde acceso directo. Permite cambiar el nombre o los atributos de un fichero (sólolectura, fichero sistema...), determinar y cambiar el disco activo, definir la zona deADM (acceso directo o memoria), etc.Estas funciones, sin embargo, no se llaman directamente sino que son llamadaspor CCP o por programas de usuario, ya que tan sólo proporcionan las primitivasnecesarias para realizar ciertas operaciones (citadas en el apartado anterior).6. PROCESADOR DE COMANDOS DE CONSOLASu función es muy simple: carga en un buffer la línea tecleada por el usuario, ana-383


Computadores personaleslizándola después para detectar algún comando realizable por el ordenador. Si detectaese comando, llama al BIOS y al BDOS para ejecutar las operaciones requeridas:Su tratamiento es distinto según se trate de una orden residente de CP/M, o deuna orden transeúnte o, simplemente, no residente.Para las primeras, el mismo CCP contiene el código necesario para ejecutar lasórdenes, ya que éstas son muy simples y cortas. Son las siguientes:• DIR: Muestra el directorio de ficheros en disco.• TYPE: Visualiza en pantalla el fichero ASCII.• ERA: Borra el fichero o ficheros especificados.• REN: Cambia de nombre un fichero.• SAVE: Guarda la memoria en un fichero de disco.• d: Cambio del disco activo.• USER: Cambio del usuario en curso. Este comando sólo está presente en versionesposteriores a 2 0 y en CP/M-86Para las órdenes transitorias, el CCP busca en el directorio del disco un ficherode tipo COM (Comand-comando ejecutable) con el nombre especificado. Si lo encuentra,lo carga en memoria (TPA) y lo ejecuta. Este proceso es el mismo para lasórdenes transitorias de CP/M y para los programas de usuario. En CP/M-86 se buscanficheros de tipo CMD (ejecutables en código 8086) primero, y en su defecto sebusca el tipo COM. Si no se encuentra el fichero ejecutable adecuado se respondecon un "?".Entre las órdenes transistorias de CP/M están:• STAT (Statistics, estadísticas): Proporciona estadísticas sobre ficheros, discos,usuarios... Indica el tamaño de ficheros, el espacio libre, los atributos de un discoo fichero, etc.• PIP (Peripheral Interfacing Program, Programa de Intercambio entre Periféricos):Copia información entre varios dispositivos, copia ficheros, etc.• ED (Editor de textos): Permite la creación, mantenimiento y modificación de ficherosde texto.• DUMP (Volcador): Presenta el contenido hexadecimal de un fichero en pantallapara su examen por el operador.• SUBMIT: Redirecciona a entrada, es decir, realiza varias órdenes CP/M en secuenciasin intervención del operador, obteniendo éstas de un fichero tipo SUB.Es una versión rudimentaria del proceso batch, descrito en el primer capítulo deeste anexo.7. ORGANIZACIÓN DE FICHEROSUn fichero es un conjunto de datos organizados de una cierta manera, y que puedenmanejarse como una unidad.Los ficheros los trata CP/M en CCP y BDOS, facilitando el uso de los dispositivosfísicos de que se dispone, organizándolos en dispositivos lógicos (los ficheros), que384


<strong>Anexo</strong> C <strong>Sobre</strong> <strong>sistemas</strong> <strong>operativos</strong>son manejados con mayor facilidad por el usuario. La traducción entre estos dos tiposla realiza CP/M.En CP/M, los ficheros se organizan en "registros" de 128 bytes, los cuales se encuentrandispersos a lo largo del disco para facilitar su lectura. Para saber a quéfichero corresponde cada sector existen ciertas estructuras de datos (los FCB, FileControl Blocks) agrupadas en el directorio, que contienen una lista de todos los "sectores"(registros) que contienen al fichero en cuestión, amén de otras informacionessobre el mismo (nombre, tipo, longitud...).También se mantiene un mapa de ubicación de memoria (Allocation Bit Map,ABM) en el cual se guarda la información correspondiente a los sectores libres yocupados.Usualmente, los sectores se agrupan en "clusters" (racimos), pero esta agrupacióndepende mucho de las características hardware del disco utilizado y por tanto no lacomentaremos.8. VERSIONES Y AMPLIACIONES DE CP/MSegún fue evolucionando el mercado, Digital Research tuvo que hacer evolucionartambién su producto inicial, proponiendo las sucesivas versiones CP/M-80 (1.3, 1.4,2.0, 2.2, 3.0), así como algunos otros <strong>sistemas</strong> <strong>operativos</strong> de la misma familia, pero decaracterísticas distintas. CP/M 3.0 se conoce también por CP/M Plus. Es una versiónmejorada de CP/M 2.2, que maneja ya estructuras jerárquicas de ficheros y bancosde memoria seleccionables (para expandir la memoria por encima de los 64 KB).Digital Research ha lanzado asimismo las versiones CP/M-68K, escrita en el lenguajeC de Unix para ejecutarse sobre el microprocesador Motorola 6800, y CP/M-Z8000,para el microprocesador de Zilog Z8000.8.1. CP/M-8 6 y CCP/M-86Es la versión de CP/M escrita para los microprocesadores INTEL 8086 y 8088, convistas a competir con MS-DOS. Su estructura es fundamentalmente la misma que lade CP/M, con la diferencia de utilizar un microprocesador de 16 bits. Se han comentadoa lo largo de la descripción de CP/M algunas características especiales de CP/M-86, pero, para más información, puede el lector acudir a la bibliografía recomendada.CCP/M-86, Concurrent CP/M-86, es una versión ampliada de CP/M-86, capazde soportar hasta cuatro procesos concurrentes.8.2. MP/MSupone el salto del sistema monousuario-monotarea al multiusuario-multitarea. Elsalto producido supone la inclusión de varias características específicas así comonuevas órdenes. Resumiremos estas características en los párrafos siguientes.En cuanto a la estructura, MP/M es muy parecido a CP/M. Sustituye BIOS y BDOScon versiones extendidas de ellos mismos (XIOS y XDOS), CCP se transforma en385


Computadores personalesCLI (Command Line Interpreter, Intérprete de Líneas de Comando) para permitir suuso por varios usuarios, y por último se incluye TMP (Terminal Message Processor,Procesador de Mensajes de Terminales) para permitir la sincronización de procesos.Una característica interesante es la capacidad de cada terminal MP/M para elmultiproceso, esto es, puede haber varios programas ejecutándose desde un mismoterminal.El algoritmo de gestión de CPU se basa en prioridades, y entre procesos con lamisma prioridad es FCFS ("El primero llegado, el primero servido"). Asimismo, unproceso no monopoliza la CPU, sino que es interrumpido si excede un cierto tiempo("Time Slice").La sincronización entre procesos se basa en mecanismos de mensajes, profusamentedescritos en (Peterson, 1983, 1985), y que no trataremos por caer muy lejos delas intenciones de este anexo.Otros aspectos característicos de MP/M, explicados en la obra que acabamos decitar son los "comandos reubicables" (o mejor, "código reubicable") y la memoria seleccionablepor bancos, lo cual permite una agilización del uso de la memoria, asícomo un incremento sustancial de las dimensiones de ésta.8.3. CP/NETTeóricamente, CP/NET representa un paso final hacia la generalización de la familiaCP/M. Se trata de una red de ordenadores, en la cual el usuario "maestro" disponede CP/NET y MP/M, y los usuarios "locales" disponen de CP/M. Se permite asíconectar <strong>sistemas</strong> que tengan procesadores diferentes, con la única restricción dedisponer de CP/M o MP/M.Como el resto de la familia, ha sido diseñado pensando en la portabilidad, por locual se ha hecho independiente del medio de transmisión utilizado tanto como delprotocolo de transferencia.La estructura usual de CP/NET comprende un nodo "maestro" (al menos) congrandes unidades de memoria masiva (discos duros, cintas... ) y periféricos caros(impresoras de calidad o muy rápidas, trazadores...) y gran cantidad de usuarios potencialesde los recursos a compartir (bases de datos, periféricos...), que pueden poseersus propios recursos privados.9. RESUMENComo se ha podido ver, CP/M es un sistema operativo extremadamente simple,por lo que su potencia está muy limitada. Ahora bien, este mismo hecho ha provocadouna gran demanda dada su gran facilidad de utilización. Además, gracias a quees un sistema operativo basado en tablas para su adaptación a cada hardware particular,su portabilidad ha hecho posible su instalación en miles de equipos diferentes.En suma, dentro del campo de los <strong>sistemas</strong> <strong>operativos</strong> para ordenadores personales,CP/M es (y probablemente seguirá siéndolo durante algún tiempo) el más popular.386


<strong>Anexo</strong> C <strong>Sobre</strong> <strong>sistemas</strong> <strong>operativos</strong>En cuanto a las ampliaciones de CP/M, su éxito es más incierto, dada la gran competenciadentro de estos nuevos mercados. Por ejemplo, en el campo de los ordenadorespersonales basados en microprocesadores de 16 bits, CP/M-86 ha sido segundodetrás de MS-DOS. La competencia con Microsoft (propietaria de MS-DOS) suponeuna fijación en la estrategia de Digital Research, cuyos desarrollos se inspirancasi siempre en la referencia de productos y movimientos de Microsoft. Así ocurrecon el sistema C-DOS.A mediados de 1984, Digital Research ha lanzado el sistema Concurrent DOS (C-DOS o C-PC-DOS), con la ambición de situarlo como uno de los primeros <strong>sistemas</strong><strong>operativos</strong> portables orientado al soporte de software integrado (sobre el conceptode software integrado, véase tercer capítulo del <strong>Anexo</strong> sobre Software).387


3. Sistema operativo MS-DOSl. INTRODUCCIÓNMS-DOS es el sistema operativo para ordenadores personales más vendido en laactualidad (1985-86). El hecho de haber sido adoptado por la firma IBM para su ordenadorpersonal básico supuso un impulso decisivo para su enorme difusión.MS-DOS es un sistema monousuario y monotarea, que sin embargo incorpora mecanismosingeniosos para simular algunas operaciones que implican cierto grado demultiproceso.2. BREVE HISTORIA DE MS-DOSMS-DOS nació como un intento de respuesta por parte de la sociedad MicrosoftCorporation a la nueva generación de microprocesadores y ordenadores de 16 bits.Se diseñó basándose inicialmente en un sistema operativo llamado QDOS, cuyosderechos de mercado compró Microsoft en 1980 a la empresa Seattle Computer Pro~ducts. Su éxito comercial se ha debido a la circunstancia de que IBM lo adquiriópara convertirlo en 1981 con el nombre de PC-DOS en el principal sistema operativode su primer ordenador personal.Se trata de un sistema operativo pensado para <strong>sistemas</strong> basados en el microprocesador8086 de Intel y derivados (ver anexo sobre microprocesadores).La primera versión (versión 1.24) resultó ser bastante parecida a CP/M y muypronto surgió la necesidad de mejorarla.En vez de dar unos retoques, la firma Microsoft decide reescribirlo completamente,con vistas a hacer MS-DOS compatible (1) con su hermano mayor para entornosmultitarea, XENIX.En esta segunda versión se introducen algunos de los alicientes que harán famosoa MS-DOS: Una nueva organización de ficheros con directorios jerárquicos, una gestiónde entradas/salidas más eficientes gracias a los "drivers" o "controladores" deentradas/salida, posibilidades de simulación de algunos conceptos de alto nivelcomo los 'pipes" y los 'filtros" -ver más adelante- y un lenguaje de control de trabajosmejorado con respecto a la primera versión.Con la aparición en el mercado del computador personal IBM PC-AT, surge la necesidadde una tercera versión del sistema operativo -hasta la fecha del fin de laredacción de este anexo la última de ellas-, en la cual se incluyen sobre todo facilidadespara adaptar el sistema a entornos muy diversos, respetando los estándares(1) En conjunto, la estrategia de Microsoft se sustenta sobre estos tres pilares: a) Posicionar MS-DOS comocompetidor de CP/M-86, cosa que se consiguió ya con la versión 2.0; b) posicionar Xenix como "el" sistemaoperativo de los ordenadores personales multiusuario del extremo alto de la gama; c) construir un caminosuave de migración entre MS-DOS y Xenix (Fertig, 1985, p. 127).38 8


<strong>Anexo</strong> C.. <strong>Sobre</strong> <strong>sistemas</strong> <strong>operativos</strong>de cada país, y mejorando la interfaz con el usuario mediante la posibilidad de incorporarexternamente un intérprete de comandos hacia el que se desviaran las órdenesdel usuario para ser analizadas.Microsoft ha lanzado también una extensión a MS-DOS, llamada MS-Windows,cuyo objetivo es añadir facilidades visuales de la escuela PARC Xerox en la interfazcon el usuario. En 1985, están catalogados más de 7.000 programas que corren bajoMS-DOS.3. GESTIÓN DE FICHEROSLa gestión de ficheros con MS-DOS es muy completa y sin duda uno de sus mássobresalientes aspectos.Los ficheros se distribuyen en el disco en "bloques", que no tienen por qué serconsecutivos. En el directorio se guardan las características del fichero y un punteroa una lista de sectores utilizados (Daney & Foth, 1984)En los primeros sectores del disco se encuentra un mapa de éste, en el que seindican los sectores libres y ocupados, de forma que la gestión de ficheros es muyrápida.Los discos se referencian por medio de letras. Cada unidad de disco tiene asignadauna letra por defecto, si bien es posible cambiarla mediante el comando ASSIGN(aunque no es recomendable).Las unidades de disco duro no pueden verse como varios discos, aunque el espaciopuede particionarse para ser utilizado por distintos <strong>sistemas</strong> <strong>operativos</strong>.Además, los discos pueden recibir una etiqueta para ser utilizada en lugar de laletra asociada al dispositivo físico. Este nombre es fijo para un soporte dado, y sólopuede cambiarse formateándolo de nuevo.Finalmente, es posible simular discos en memoria RAM sin más que disponer deuna cantidad de memoria para ello y ejecutar un comando de MS-DOS. De esta formael acceso es mucho más rápido, lo cual puede ser interesante en ciertas aplicaciones.4. DIRECTORIOSLos directorios con MS-DOS son de estructura arbolada o jerárquica. En MS-DOSse utiliza el concepto "Directorio actua", del mismo modo que hay un "Disco actual",al que se accede por defecto en las operaciones con el disco. El directorio actual esaquel en donde se van a buscar los ficheros cuyo nombre se especifique.Podemos trasladarnos de un directorio a otro, pero en cada momento hay un únicodirectorio actual.Se puede acceder a ficheros del directorio actual sin más que especificar su nombre,y para especificar los ficheros de otro directorio es necesario especificar su389


Computadores personales"nombre de camino" que es el conjunto de directorios por los que se pasa (partiendode la raíz) hasta llegar al directorio que guarda el fichero, seguido del nombre delfichero en sí.El directorio raíz es el que se crea al formatear el soporte y su nombre es "/".Los subdirectorios se crean desde el directorio padre mediante el comandoMKDIR y pueden ser renombrados o borrados.Finalmente, es posible especificar un conjunto de "nombres de camino" que seránutilizados por defecto, cuando un fichero no se halle en el directorio actual.S. GESTIÓN DE ENTRADAS/SALIDASAsociados a la gestión de entradas/salidas están los conceptos de "entrada estándar"y "salida estándar".La entrada estándar es el fichero o dispositivo periférico del cual va a tomar susdatos un comando. Por defecto, es el teclado. La salida estándar es el fichero o periféricodonde se escriben las salidas del comando y por defecto es la pantalla.No obstante, los comandos pueden especificar una entrada o salida diferentes, y aesto se le llama redireccionar las entradas/salidas.El redireccionamiento puede efectuarse también en programas como en comandosde MS-DOS y puede ser dinámico (se especifica en el propio comando) o permanente(se da una orden previa al sistema operativo para que cambie el valor pordefecto de la entrada o salida estándar).Los programas que leen la entrada estándar, la procesan y escriben unos resultadosen la salida estándar se llaman "filtros". En MS-DOS hay tres tipos de filtros:• SORT: Ordena la entrada y la pone en la salida.• MORE: Lee la entrada por páginas, y las presenta en la salida esperando entrecada página a que el usuario pulse una tecla.'• FIND: Lee la entrada y selecciona las cadenas de caracteres con arreglo a unasespecificaciones, mostrándolas a la salida.MS-DOS permite especificar varios comandos en una línea, de forma que la salidade cada uno constituye la entrada del siguiente. A esto se le llama "piping" y en MS-DOS se implementa utilizando ficheros temporales en donde se escribe la salidadel último proceso para ser utilizada como entrada del siguiente, debido a que no esun sistema multiproceso y los diferentes comandos han de ejecutarse secuencialmente.En UNIX, los comandos se ejecutan a la vez y resulta más eficiente.6. CONTROLADORES DE DISPOSITIVOSPara controlar las entradas/salidas sin hacer que el sistema operativo sea dependientede la configuración hardware, se implementan los "controladores de dispositi-390


<strong>Anexo</strong> C <strong>Sobre</strong> <strong>sistemas</strong> <strong>operativos</strong>vos" o "device drivers". Se trata de rutinas utilizadas para controlar periféricos comoel teclado o la pantalla. MS-DOS permite que el usuario instale sus propios controladoresal inicializar el sistema, leyéndolos del disco.De esta forma, el sistema operativo se desvincula parcialmente de la gestión deentradas/salidas, siendo tarea de los fabricantes de periféricos la de suministrar loscontroladores a añadir (Larson, 1983).La posibilidad de instalar controladores de dispositivos permite a MS-DOS soportarteclados de diferentes países, o adaptar la salida a pantalla a los estándares vigentesen cada país. Algunas facilidades para esto se incluyen en la versión 3.0 deMS-DOS. Para más información sobre este tema consúltese (Field, 1983) y (Wood &Whelan, 1984).7. COMPATIBILIDAD CON XENIXMS-DOS incorpora muchos conceptos propios del XENIX, versión de UNIX producidapor la sociedad Microsoft. Entre ellos, la posibilidad de tratar las operacionesde acceso a ficheros por medio de primitivas muy eficientes que se encuentranen el núcleo del sistema operativo.Otra de las posibilidades incorporadas es la de llamar a un proceso desde otro yque este último llame a su vez a un tercero..., etc., volviéndose al proceso anteriorcuando se ha terminado con el actual.Por último, MS-DOS dispone de un lenguaje de control de trabajos o "batch processinglanguage", que permite programar un conjunto de operaciones para que seejecuten una tras otra. Este lenguaje dispone de algunas estructuras de alto nivelcomo IF... THEN, WHILE..., operaciones de tratamiento de errores y otras facilidades,pero en cambio no permite el uso de variables y por lo demás no es muy eficiente.De todas formas, la pretendida compatibilidad es limitada y se encuentra supeditadaa que los programadores respeten ciertas reglas muy específicas concernientesa la forma de desarrollar los programas.8. SOLAPAMIENTO DE TAREASGracias a una gestión ingeniosa de las interrupciones, MS-DOS permite simultanearalgunas tareas de gestión de entradas/salidas con la ejecución de un programao comando. Esto permite, entre otras cosas, gestionar la impresión de documentos(spooler) y el correo electrónico, realizando aparentemente funciones propias de<strong>sistemas</strong> multitarea.Para la gestión del "spooler", se incorporan algunos comandos que actualizan lacola de ficheros en espera de ser impresos y activan o desactivan el spooler segúnlas necesidades del usuario.391


Computadores personales9, AYUDAS AL USUARIODe cara a conseguir una mejor interfaz de usuario, el intérprete de comandosefectúa un complejo tratamiento de errores. Los comandos sintácticamente incorrectosno son rechazados inmediatamente, sino que se da la oportunidad de editarlospor si se hubiera cometido alguna falta ortográfica o algún fallo menor. Esto es posibledado que MS-DOS guarda el último comando recibido en un buffer de memoria.Gracias a ello el comando puede ser editado a voluntad.Los mensajes de error pueden ser adaptados al idioma de cada país, y en cualquiercaso, la existencia de errores, como una mala lectura del disco, no produceerrores irrecuperables.Sin embargo, MS-DOS no aporta muchas ayudas en el sentido de informar al usuario,sobre todo con la actual tendencia admitida hacia una mejor convivencialidad.No existe comando "HELP" para ayuda como en CP/M-86, aunque existen en el mercadoutilidades que realizan dicha función. Pero, en conjunto, la industria acepta algunasuperioridad de MS-DOS sobre CP/M-86 en este campo.Finalmente, MS-DOS permite modificar la interfaz de usuario desviando los comandosa un intérprete externo, escrito por un particular e incorporado al sistemaoperativo mediante un simple comando. Adicionalmente, la estructura del sistemaoperativo permite convertir MS-DOS en un sistema con "ventanas", tal y como se explicóen el apartado 3.5 del primer capítulo de este anexo.10. RESUMENResumiendo lo anterior, vemos que MS-DOS es un sistema operativo muy potente,que intenta adaptar conceptos típicos de <strong>sistemas</strong> multiproceso a los entornos másrestringidos de los ordenadores personales monotarea.Sus mayores cualidades son la existencia de controladores de dispositivos que lohacen fácilmente adaptable a numerosos entornos hardware, una gestión muy eficientede los ficheros, una organización de directorios propia de <strong>sistemas</strong> <strong>operativos</strong>tipo UNIX y una interfaz de usuario muy cuidada (recientemente potenciada con laextensión a ventanas) en la que sólo se echa de menos la inexistencia de un comandode ayuda que explique el significado de cada comando de MS-DOS.392


4. Sistemas <strong>operativos</strong>de la familia UNIXI. INTRODUCCIÓNEl objetivo de un sistema operativo es crear sobre el hardware de un sistema unamáquina virtual que el usuario pueda manejar muy fácilmente. Si durante el procesode diseño se permite una fuerte interacción entre el sistema operativo y la arquitecturaque va a soportar, se obtiene además un uso eficiente del hardware, pero serestringe la portabilidad del sistema operativo a otras arquitecturas.UNIX está diseñado con el objetivo principal de ser una ayuda para el programador,creando un entorno adecuado para el desarrollo de programas, aún a costa deceder terreno en el campo de la eficiencia en el uso del hardware. Esto, sin embargo,le proporciona una buena portabilidad, de forma que para soportar su sistemamultiusuario en tiempo compartido basta con disponer de un microprocesador de 16bits con 256 KB de memoria principal y una unidad de disco de acceso rápido.Las características de un sistema típico, con sistema operativo tipo UNIX, de loscomercializados en la actualidad son las siguientes:- Microprocesador Motorola 68000. (Véase <strong>Anexo</strong> sobre Microprocesadores).- Reloj de 8 MHz (obteniendo de 0.7 a 1.0 MIPS (2)).- 256 KB de RAM (ampliables a más de 1 MB).- 1 disco Winchester de 1 MB.- Sistema operativo UNIX (con licencia de Western Electric).- Pantalla gráfica soportada en memoria.- Multibus.- Soporte para conexión a red Ethernet- Capacidad multiusuario desde 4 hasta 16 usuarios.2. BREVE HISTORIA DE LA FAMILIA UNIXEl sistema operativo UNIX es el resultado del trabajo llevado a cabo en 1969 porun grupo de investigadores de los Laboratorios Bell, dirigido por Ken Thompson, apartir del potente y complejo sistema MULTICS. Sus objetivos eran mejorar las prestacionesde tiempo compartido que ofrecían los <strong>sistemas</strong> <strong>operativos</strong> de DigitalEquipment Corp. (D.E.C.) en aquella época y lograr un entorno adecuado para eldesarrollo de programas. A partir de este embrión de UNIX, escrito en el ensambladordel PDP-7, hacia 1973 Dennis Ritchie mejora y reescribe el sistema en lenguajeC, dotando así a UNIX de la base fundamental de su buena portabilidad: el 90% delnúcleo está escrito en C, siendo el 10% restante rutinas en ensamblador de manejodel hardware o tan frecuentemente usadas que, por razones de eficiencia, no convieneque estén escritas en C. Western Electric accedió a suministrar esta versiónde UNIX a organizaciones sin propósito de lucro, con lo cual se popularizó enormementeen los ambientes académicos durante la primera mitad de los años setenta(2) MIPS, Millones de Instrucciones Por Segundo,393


Computadores personalesUNIX se suministra con su código fuente, lo cual permite a sus usuarios personalizary adaptar el sistema a sus aplicaciones y necesidades particulares. La popularidadde UNIX despierta el interés de IBM, UNIVAC, INTERDATA, etc., fruto del cualson las versiones 6 y 7, que intentan mejorar UNIX como producto comercial, alejándolode su papel de sistema operativo "construible a la medida de sus usuarios". Esen el año 1977 cuando aparece la versión 7 del UNIX de AT&T, que es la primeraoferta realmente comercial de este sistema, aunque el mercado para el mismo no sehabía estudiado aún en profundidad. La versión de 1979 presenta las tan esperadasherramientas de desarrollo de software de la Estación de Trabajo del Programador"Programmer's Workbench"; PWB), que tuvieron una amplia aceptación.Pero, debido al carácter de monopolio de entonces de AT&T, Western Electric seve incapaz de comercializar UNIX como un producto competitivo (por ejemplo, nopodía proporcionar servicio de garantía ni mantenimiento); esto provoca la apariciónde una gran cantidad de <strong>sistemas</strong> <strong>operativos</strong> basados en UNIX con particularidadesorientadas hacia la competitividad comercial y la adaptación a aplicaciones para lasque el UNIX de los Laboratorios Bell no era adecuado. Este conjunto de <strong>sistemas</strong> sedenomina "<strong>sistemas</strong> <strong>operativos</strong> tipo UNIX". Muchas de las mejoras introducidas porestos "clones" de UNIX son asimiladas por el sistema de los Laboratorios Bell. Haciamediados de 1983, ya unas veinte empresas vendedoras independientes de softwarey otras cincuenta vendedoras de super-microcomputadores han adquirido licenciasde UNIX. De esta forma, alrededor de treinta versiones de UNIX pasan a ser losprincipales competidores del UNIX de AT&T; entre ellas merecen destacarse (Fertig,1985, pp. 110-111):- XENIX (Microsoft) - SI (Multisolutions)- Idres (Whitesmiths) - Regulus (Alycon)- HP-UX (Hewlett-Packard) - Unisis (Codata)- Zeus (Zilog) - M/OS (Morrow Designs)- Coherent (Mark Williams) - Unity (Human Computing)- UNIX de Berkeley (Unisoft) - Uniflex (Technical Systems)- MORE/BSD (Mt. Xinu) - Sunix (Venturcom)- AUX (Apollo) - BBN-UNIX (BBN)- Unos (Charles River) - Qunix- Cromix (Cromenco) - Sydix (Sydis)- Venix (Venturcom) - OS/RT (Destek Group)En un apartado posterior de este mismo capítulo se describen con más detalle algunosde estos <strong>sistemas</strong> de la "familia UNIX"Ante tal diversificación, la falta de estándares amenazaba con estrangular el mercadode las excesivamente proliferantes versiones de UNIX. Así, la entrada deAT&T en el mercado de UNIX se produce en el momento crítico, ya que de haberseretrasado más la falta de estándares habría puesto en serio peligro el desarrollode aplicaciones. Con la realización del Sistema III (1981) el número de aplicacionescreció espectacularmente, y continuó creciendo al mismo ritmo con el Sistema V(1983). Muchos vendedores de clones de UNIX se vieron así sorprendidos por la intenciónde AT&T de estandarizar UNIX con los Sistemas 111 y V, y, aunque se acusaa estas versiones de no aportar mejoras funcionales significativas, el estándar delSistema V ha permitido a AT&T corregir muchas de las debilidades previas deUNIX y conseguir importantes beneficios, gracias al elevado nivel de aceptaciónque el mercado ha demostrado para el mismo.394


<strong>Anexo</strong> C <strong>Sobre</strong> <strong>sistemas</strong> <strong>operativos</strong>cesos. Cada proceso tiene asociado otro segmento, el segmento de datos del sistema,que es donde se guardan su contexto y datos de contabilidad del sistema, asícomo datos temporales y la pila para la fase de sistema del proceso.Un proceso se ejecuta en modo usuario accediendo al segmento de código y alsegmento de datos de usuario, y en modo sistema accediendo a código del núcleo yal segmento de datos del sistema.UNIX otorga los mismos privilegios a los programas que se ejecutan en modousuario que a los que se ejecutan en modo sistema, salvo en lo que concierne a restriccionesen el acceso a ficheros. Esto redunda en beneficio de la sencillez de lasllamadas al sistema realizables por el usuario en sus programas (no son diferentesde un procedimiento o subrutina escritos directamente por el programador).El algoritmo de planificación a corto plazo de la CPU (elección de un proceso dela cola de procesos preparados) se basa en prioridades. El núcleo asigna una prioridadinicial a un proceso y ésta varía dinámicamente, disminuyendo en relación proporcionalal tiempo de procesador que recibe. Los procesos del sistema tienen prioridadesiniciales más altas que los de usuario. El tiempo que un proceso puede retenerla CPU está limitado a la duración de un "cuanto" (típicamente 1 segundo). Losprocesos de igual prioridad se sirven en forma "robo de ciclo", esto es, cada unorecibe una porción igual de tiempo de CPU. Con este algoritmo se minimiza el tiempode respuesta a los usuarios interactivos.La sincronización de procesos se consigue mediante un mecanismo de eventos.un proceso espera por un evento hasta que otro señaliza, al completarse, la verificaciónde tal evento. En cada instante, todos los procesos, excepto el que está en ejecución,han solicitado una espera por evento (liberación de la CPU); cuando el procesoactivo solicita una espera, aquel proceso al que señalice el núcleo (aplicandoel algoritmo de planificación) obtendrá la CPU.3.2. Gestión de memoriaUNIX realiza una gestión de memoria real segmentada. Para que un proceso puedaejecutarse, su imagen de memoria debe residir en memoria principal, aunque noes necesario que se ubique en forma contigua, sino que se asigna memoria a cadasegmento por separado mediante una estrategia "firts-fit" (un segmento se ubica enel primer hueco libre de la "cola de huecos" suficientemente grande para contenerlo).La traducción de direcciones lógicas a físicas se realiza a través de la tabla desegmentos de cada proceso, que contiene para cada uno de sus segmentos la direcciónfísica de comienzo y la longitud en palabras de memoria (esta última con objetode impedir accesos a memoria que podrían alterar segmentos de otros procesos).El que el código ejecutado por un proceso sea reentrante permite que dos o másprocesos puedan ejecutar concurrentemente el mismo segmento de código. Paraque dos procesos compartan el segmento de código reentrante basta con que lasentradas correspondientes en sus respectivas tablas de segmentos apunten al mismosegmento de memoria física. Así se evita la existencia de segmentos idénticos en397


distintos lugares de la memoria, redundando en un mejor aprovechamiento de lamisma.3.3. Nivel superior de gestión del procesadorUn proceso puede crear una copia de sí mismo ejecutando la primitiva "fork". Padre(proceso que ejecuta la primitiva) e hijo (copia creada) comparten todos los ficherosabiertos, pero no el espacio de memoria principal. Padre e hijo tienen diferentesnúmeros de identificación. Para que un proceso cambie su imagen de memoriapor otra especificada en un fichero se usa la primitiva "exec". Por tanto, la creaciónde un nuevo proceso que no sea una mera copia del padre se consigue comomuestra la figura 8Un proceso puede autodestruirse voluntariamente, ejecutando la primitiva "exit", oinvoluntariamente, por intentar una acción ilegal (p ej.: intento de acceso a una direcciónfísica no perteneciente a su espacio de direccionamiento lógico). Se puededestruir un proceso con las primitivas °interrupt" y 'quit', (esta última facilita la depuracióndel programa que ejecutaba el proceso).UNIX dispone de capacidad de trasiego de procesos completos entre memoriaprincipal y secundaria (ambas asignadas con técnica "first-fit"). Cuando un procesosolicita más espacio de memoria principal, pues, por ejemplo, necesita más espaciopara la pila de usuario, se asigna al segmento que quiere crecer una nueva secciónde memoria suficientemente grande para contenerlo una vez expandido, se copia ala nueva sección y se libera la antigua. Pero si no hay en memoria principal un huecosuficientemente grande para contener al segmento y la expansión solicitada, elproceso completo es trasegado a memoria secudaria (con su nuevo tamaño), y serádevuelto a memoria principal cuando se disponga en ella de sitio suficiente paracontenerlo.Cuando el algoritmo de planificación de la CPU a medio/largo plazo, que trata lacola de procesos trasegados a memoria secundaria y preparados para su ejecuciónmediante estrategia FCFS (First-Come-First-Served), decide devolver a memoriaprincipal el primer proceso de la cola (pues su prioridad ha crecido mucho por nousar la CPU), el trasegador busca sitio para reintroducir el proceso completo; si lo en-398


cuentra, trasiega el proceso, segmento a segmento, a memoria principal, pero si nolo encuentra trasiega a disco los procesos completos que haga falta para conseguirlo.Los procesos a desalojar se eligen entre los que llevan más tiempo en memoriaprincipal, esperan por eventos que tardan en producirse y el número de eventospor los que esperan es grande.3.4. Gestión de la información/Gestión de e/sLas operaciones de entrada/salida en UNIX son orientadas a flujo (secuencia debytes terminada con un carácter delimitador "fin-de-flujo") en lugar de a registro, yse realizan de forma síncrona con el proceso que las solicita (el proceso se suspendehasta que la operación se completa). Posee dos técnicas distintas, según el tipode dispositivo:a) e/s de bloques: para dispositivos rápidos (disco/cinta) con transferencia de bloquesde caracteres a través de bufferes,b) e/s de caracteres: para dispositivos lentos (impresora, cinta de papel...) queutiliza bloques de un solo carácter.Una característica esencial de UNIX es el solapamiento de las capas de gestiónde dispositivos de e/s y de gestión de ficheros, de tal forma que las primitivas de e/sson las mismas que las de manejo de ficheros. Para UNIX, un dispositivo de e/s no esmás que un "fichero especial". Esto da una gran versatilidad al tipo de dispositivosmanejables y proporciona sencillez de programación al poderse tratar las operacionesde e/s como si fueran simples acceso a ficheros. Sin embargo, esta generalidadobliga al usuario a escribir el código apropiadc ;para el manejo de datos que precisacada dispositivo (p. e¡.: simulación de entrada/salida orientada a registro para acce399


Computadores personalesso a disco) y conlleva un recorte de la eficiencia obtenida en la ejecución de lasoperaciones sobre los dispositivos.UNIX utiliza únicamente cinco primitivas para el manejo de ficheros (y dispositivosde e/s): "open", 'close", "read", "write" y "seek" (esta última ha desaparecido en lasmodernas versiones de UNIX); además, dispone de primitivas de estado. El reducidonúmero de primitivas y su sencillez colaboran en beneficio de la labor de programación.UNIX no soporta ninguna estructura interna determinada para los ficheros; un ficherotendrá la estructura que su creador quiera imponerle. La ubicación en memoriasecundaria se realiza mediante la técnica de lista encadenada. Los huecos (registrosdel disco) libres también se tratan mediante una lista encadenada. Sólo se permiteacceso secuencia) a los ficheros (el acceso directo puede ser simulado por elprogramador).Los descriptores de fichero en UNIX se denominan i-nodos; contienen informacióndel nombre y tipo del fichero, número de identificación de usuario de su propietarioy del grupo de su propietario, bits de protección, un puntero al primer bloque delfichero, tamaño del fichero, instante de su creación, último uso y última modificación,y número de enlaces al mismo.El directorio de ficheros en UNIX está organizado en forma de estructura jerárquicaarbórea multinivel. Cada fichero se identifica con un único camino desde el nodoraíz. Los "ficheros especiales" que representan a los dispositivos de e/s están especificadosen un directorio del sistema.UNIX proporciona la capacidad de compartir ficheros que no sean de tipo directoriomediante el uso de enlaces (links). Un enlace es una especie de puntero al


<strong>Anexo</strong> C <strong>Sobre</strong> <strong>sistemas</strong> <strong>operativos</strong>fichero, de tal forma que un mismo fichero puede aparecer en más de un directoriosin más que introducir un enlace al mismo en todos los directorios que lo comparten.Un fichero se borra cuando se borran todos sus enlaces. El uso de enlaces dota aldirectorio de UNIX de una estructura no estrictamente arbórea conocida como de"grafo acíclico".Como protección externa, UNIX permite el uso de cuentas y palabras de paso,pero no es un sistema muy elaborado, ya que UNIX asume usuarios amistosos (p. epun grupo de colaboradores en un proyecto).A nivel interno, UNIX realiza la protección de ficheros mediante nueve bits, situadosen el ¡-nodo del fichero, que especifican si están permitidas o no la lectura, escrituray ejecución al propietario del fichero, grupo del propietario y resto de usuariosdel sistema.3.5. Lenguaje de Control de Trabajos: el ShellEl Shell es el intérprete de comandos de UNIX. Está compuesto por rutinas reentrantesno residentes en memoria principal. También se conoce con el nombre deShell al Lenguaje de Control de Trabajos de UNIX; éste es un verdadero lenguajede programación que sirve para desarrollar tareas del grado de complejidad que sedesee mediante una combinación hábil de las funciones mínimas aportadas por elsistema operativo y de pequeñas funciones escritas por el usuario en C, sin necesidadde tener que modificar éstas para cada aplicación concreta.Shell es un lenguaje muy potente, dotado de sentencias estructuradas para el controlde flujo y capaz de soportar programas en C. Dispone, por ejemplo, de las sentenciascase, for, if-then-else,..., que permiten construir programas estructurados decomandos del grado de sofisticación que desee el usuario, utilizando variables comoayuda en el control de flujo y programas en C escritos por el propio usuario o soportadospor el sistema donde lo considere necesario.Sin embargo, la base real de la potencia del Shell es la capacidad de UNIX pararedirigir la e/s de los programas. Un programa (fichero ejecutable) tiene asignadospor defecto tres ficheros: uno para entrada (normalmente el teclado), otro para saliday otro para salida de errores (estos dos últimos, normalmente la pantalla). Sinembargo, los comandos del Shell permiten redirigir la e/s a los ficheros que deseeel programador. Por ejemplo, el comandoacciones < A > Bejecuta el programa "acciones" tomando su entrada del fichero "A" y dirigiendo susalida hacia el fichero "B".Sin embargo, las posibilidades de la redirección de la e/s de los programas no seacaban aquí. Gracias a ella pueden encadenarse en forma de "tubería" ("pipeline")varios programas, haciendo que cada uno tome su entrada de la salida del anterioren la cadena y envíe su salida a la entrada del siguiente. Un fichero ejecutable queprocesa un flujo de datos de entrada y produce un flujo de datos de salida se denomina'filter". El mecanismo de comunicación de la salida de un proceso con la en-40 1


Computadores personalestrada del siguiente se denomina "pipe" y consiste en un fichero abierto que conectados procesos; la sincronización, planificación y "buffering" necesarios son soportadosde forma automática por el sistema operativo.El soporte automático proporcionado por el Shell de los conceptos de "pipe" y "filter"es la razón de su extraordinaria potencia como constructor de tareas complejasa partir de herramientas básicas sencillas proporcionadas por el sistema y el usuario.Otros <strong>sistemas</strong> <strong>operativos</strong> pueden simular un "pipe" y un "filter", pero con la necesidadde introducir modificaciones en el código de las herramientas básicas y ungrado de participación del usuario en la gestión que hacen su uso mucho más incómodoque el obtenido con el soporte automático de UNIX. La influencia de estosconceptos en los modernos <strong>sistemas</strong> <strong>operativos</strong> como herramientas de ayuda al programadorhace que los JCL (Job Control Language) tiendan a basar su potencia cadavez más en conceptos análogos a los de "pipe" y "filter" y menos en un amplio repertoriode opciones para cada comando.Shell proporciona además la capacidad de ejecución de comandos en "batch",mientras que el usuario continúa con un trabajo interactivo.4. PORTABILIDAD Y EFICIENCIAComo ya se comentó, la portabilidad de UNIX se basa en que está escrito en C.Sus incondicionales lo consideran no sólo como el mejor entorno para desarrollo deprogramas, sino también como el sistema operativo "universal", aplicable tanto a <strong>sistemas</strong>microcomputadores como a super-miniordenadores.Aunque sería de esperar una gran facilidad para la transferencia de programas enC entre dos máquinas que corren la misma versión de UNIX, ésta no se obtiene si nose observa, a la hora de escribir los programas, la sana costumbre de evitar las característicasdel lenguaje dependientes de la máquina; además, como UNIX, el lenguajeC no es un lenguaje estándar, sino que presenta una variedad de versiones enevolución, lo cual dificulta la transferencia de programas entre máquinas distintas.Obviamente, si no se usa el lenguaje C o se intenta el trasvase hacia una máquinaque corre una versión distinta de UNIX, la transferencia puede resultar imposible.En cuanto a la eficiencia de UNIX, en lo concerniente al uso del hardware bastarecordar que no fue éste un objetivo del diseño de UNIX. La eficiencia de UNIX hayque evaluarla en otra dimensión, concretamente en la comodidad obtenida por elprogramador que lo utiliza y la calidad de las herramientas que proporciona para eldesarrollo de software.UNIX no proporciona una cantidad ingente de sofisticadas llamadas al sistema queden al usuario las utilidades que necesita para el desarrollo de sus programas, sinoque dispone de unas funciones mínimas que dan al buen programador la flexibilidadque necesita para trabajar deprisa. Será éste, ayudado por un lenguaje de comandospotente pero no complejo, el que, combinando adecuadamente esas herramientasbásicas, construya otras herramientas con el grado de sofisticación que necesiteUNIX dispone de algunas utilidades más elaboradas dirigidas a la ayuda en lagestión de proyectos de desarrollo de software. Así, la utilidad SCCS (Source Code402


<strong>Anexo</strong> C. <strong>Sobre</strong> <strong>sistemas</strong> <strong>operativos</strong>Control System) permite controlar y documentar ficheros de texto y programas fuente,registrando los cambios introducidos, quién los hizo y por qué,La utilidad MAKE acepta una especificación de las interdependencias entre losdiversos módulos de un programa, de tal forma que, al solicitar la compilación delmismo, sólo recompila los módulos actualizados y aquellos a los que afectan los cambiosintroducidos; el resto de los módulos simplemente se montan sin ser recompilados.LEX genera un analizador lexicográfico a partir de las reglas lexicográficas de unlenguaje; utilizados en conjunción con la utilidad YACC permite la generación de unanalizador sintáctico para una gramática especificada con notación BNF (Forma Normalde Backus).Junto con estas utilidades, la capacidad del Shell de ejecutar comandos en 'batch',permitiendo la continuación de trabajos interactivos con el usuario, ayuda a minimizarlos "tiempos muertos" que sufren los programadores cuando trabajan con utilidadeso programas de aplicación que necesitan un tiempo significativo para su ejecución.De esta forma, UNIX ayuda a mejorar la productividad obtenida en la relaciónprogramador-máquina.5, SISTEMAS OPERATIVOS TIPO UNIXLa mayor parte de los ataques que sufre UNIX por parte de sus detractores estánrelacionados con lagunas encontradas en su espectro de aplicaciones, su fiabilidad ysu seguridad. Esto, junto con el interés por hacer de UNIX un producto comercialmentecompetitivo, trajo consigo la aparición de una familia de <strong>sistemas</strong> <strong>operativos</strong>basados en UNIX, pero que muestran algunas variantes sustanciales en determinadascaracterísticas del sistema, con objeto de mejorar sus prestaciones o el campode sus aplicaciones.Así, cuando en 1980 el Departamento de Defensa americano encarga a la Universidadde Berkeley (California) que rediseñe el sistema UNIX, el grupo de Berkeleyse propone convertir lo que hasta entonces había sido un puro sistema operativo detiempo compartido en un vehículo apropiado para la investigación en el campo delprocesamiento distribuido. El resultado se conoce comúnmente como 4BSD ("FourthBerkeley Software Distribution"; estudios anteriores del grupo de Berkeley para elPDP/11 se conocen como 2BSD). El primer desarrollo de este proyecto se llamó4.1BSD; sus raíces eran el Sistema 32V, una versión de UNIX que corría sobre elVAX de D.E.C., pero que no explotaba las facilidades de memoria virtual de estamáquina. 4 1BSD incluye un espacio de direccionamiento significativamente expandido,memoria virtual paginada, un sistema de ficheros más rápido y robusto, y comunicacióninterprocesos generalizada, incluyendo el soporte básico para una redlocal. Berkeley añadió también programas de utilidad, como un editor de pantalla,un sistema de gestión de bases de datos y un nuevo Shell. Este segundo grupo defacilidades se conoce como las "mejoras de Berkeley", pero es realmente el primergrupo el que constituye el logro más significativo del trabajo de esta universidad sobreel sistema operativo UNIX.Por otro lado, su algoritmo de planificación de la CPU, la gestión de memoria yrelativa lentitud en el cambio de contexto, así como el hecho de que las rutinas del403


Computadores personalesShell sean no residentes, hacen de UNIX un sistema inadecuado para el procesamientoen tiempo real. Pero dentro de la "familia UNIX" encontramos versionesadaptadas al manejo de tareas en tiempo real. El VENIX de Venturcom mejora lacomunicación de procesos usando memoria compartida, introduce la sincronizaciónmediante semáforos y dota al sistema de capacidad de e/s rápida consiguiendo asíla adecuación a aplicaciones en tiempo real de laboratorio. Regulus, de Alycon, impideel trasiego a disco de las tareas en tiempo real, usa colas multinivel en la planificacióna corto plazo de la CPU con prioridades elevadas para las tareas en tiemporeal, y no sujeta a la expiración del cuanto a dichas tareas. UNOS, de Charles RiverData Systems, incluye un mecanismo de cuenta de eventos para conseguir la sincronizaciónde las tareas en tiempo real en laboratorios o procesos industriales.Parallel and Computer Consoles Inc, ofrece tolerancia a fallos usando el hardwaredel microprocesador M68000. Auragen Systems ofrece una destacable versión deUNIX tolerante a fallos con una relación precio/prestaciones superior a la de las demásversiones de este estilo.GENIX, de National Semiconductor, incluye mejoras en el procesamiento en puntoflotante, añadiendo a sus cualidades como entorno de programación el carácterapropiado para ser un entorno de ejecución.TNIX, de Tektronix, es una adaptación de UNIX a un entorno de ingeniería desoftware, suministrando herramientas tan sofisticadas como un depurador simbólicode alto nivelLa versión IS/1 de Interactive Systems proporciona paquetes especializados paraautomatización de oficinas.Aunque, en principio, UNIX se diseñó para desenvolverse en un entorno centralizadomonoprocesador, la serie Arete introduce ya procesadores esclavos para agilizarlas operaciones de e/s, entrando de alguna forma en las arquitecturas multiprocesador.Un sistema con arquitectura realmente distribuida será el DRM (DistributedRealtime Multiprocessing) de Philips Research Labs.Una serie de <strong>sistemas</strong> UNIX (Sun, Forward Technology, Chromatics) están orientadoshacia el mercado de las aplicaciones gráficas, con pantallas de alta resolución yel interfaz gráfico estándar CORS.UNIX fue diseñado pensando en el campo de los miniordenadores de 16 bits;como ya se comentó, su primera versión corría en un PDP-7 y, hoy en día, sueleemplearse en <strong>sistemas</strong> construidos sobre los microprocesadores Z8000, M68000 e Intel-1.286.Sus versiones han migrado así, de forma natural, hacia el ámbito de los microcomputadoresde 16 bits, e incluso de 8 bits. CROMIX, de Cromenco, y MICRO-NIX, de Morrow Decisions, son versiones de UNIX que corren sobre el microprocesadorZ80. QNX, de Quantum Software Systems, mejora la comunicación entre procesos,otorga prioridades a la ejecución de las tareas, soporta emuladores de discoy dispone de una utilidad para intercambio de ficheros con MS-DOS. ZEUS, de Zilog,presenta mejoras en el sistema de ficheros apropiadas para aplicaciones comerciales.Pero quizás sea Microsoft Corporation la empresa que mejor ha planteado el aprovechamientode su licencia UNIX. Ha lanzado al mercado el sistema multiusuario XE-404


<strong>Anexo</strong> C.- <strong>Sobre</strong> <strong>sistemas</strong> <strong>operativos</strong>NIX, dotándolo de una buena capacidad de recuperación frente a errores del hardware,posibilidad de compartición de segmentos de datos, mejora de la comunicaciónentre procesos, soporte para los lenguajes BASIC, COBOL, FORTRAN y PAS-CAL, y otras mejoras de características existentes en UNIX. También ha introducidoen XENIX características peculiares que no se encuentran en UNIX, como aritméticaen punto flotante en el núcleo, un compilador de C optimizado o un configurados XE-NIX para generación del sistema. De esta forma, XENIX era bastante superior alUNIX de 1980. Pero al poder hacerse cargo AT&T del mercado de UNIX, introdujoen él muchas de las mejoras de XENIX; este fenómeno es denominado en (Fertig,85) XENIXización de UNIX.Recordemos, por otro lado, que Microsoft se inspiró en UNIX, del que recoge laestructura jerárquica del directorio de ficheros y un intérprete de comandos parecidoal Shell, para mejorar sus iniciales versiones de MS-DOS. Este asunto ya lo hemosanalizado en el capítulo anterior. Para hacer más atractivo MS-DOS y facilitar la migraciónnatural de sus usuarios hacia XENIX, Microsoft le dota de algunas de las mejorasque había conseguido en XENIX, como el Shell dirigido por menú, un sistemade correo electrónico y lenguaje C compatible; de ahí que también se hable de laXENIXización de MS-DOS en (FERTIG, 85).6. RESUMENAmplios sectores de usuarios de UNIX claman por la estandarización del sistemacomo la única forma de cumplir su promesa de transportabilidad. Sin embargo, laadaptabilidad del sistema, causa de sus múltiples versiones, es quizás su mayor fuerza,y le permitirá resistir a los esfuerzos por crear una única versión estándar.A la vista de la disponibilidad de UNIX en el ámbito de los micro, mini y grandesordenadores, las casas comerciales seguirán generando productos compatibles conel sistema para todo el espectro de tamaños de los <strong>sistemas</strong> computadores. En elfuturo, es previsible que los computadores personales basados en UNIX se sitúen ala cabeza de los índices de ventas ya que, aunque pueda argumentarse que la popularidadde CP/M-86 (sistema monousuario) sea mayor entre el gran público que lade UNIX (debido sobre todo al éxito de su hermano menor, el CP/M-80), hay quetener en cuenta que MS-DOS ha sido adoptado por IBM como sistema operativo básicopara su Ordenador Personal y que MS-DOS es un sistema que, en varios aspectos,se inspira en UNIX. Por tanto, es muy probable que los próximos años sean elescenario del gran éxito de la "filosofía UNIX" para el diseño de <strong>sistemas</strong> <strong>operativos</strong>.405


5. Perspectivas futuras en el campode los <strong>sistemas</strong> <strong>operativos</strong> paraordenadores personales1. INTRODUCCIÓNEn los tres capítulos anteriores se ha realizado una presentación de los <strong>sistemas</strong><strong>operativos</strong> que han experimentado un auge más importante en los últimos años: CP/M, MS/DOS y la familia UNIX.Si observamos los gráficos de ventas desde 1980 (figura 10) se comprueba cómo elmercado ha estado prácticamente copado por CP/M hasta la aparición, hacia 1981,de MS-DOS, con una fuerza tal que sus ventas reflejan un crecimiento exponencial.Ante esto, Digital Research reacciona lanzando al mercado la versión de 16 bits, CP/M-86, observándose un trasvase de ventas de CP/M-80 hacia este último, siendo lamagnitud neta de ambos en la actualidad incluso superior a la de MS-DOS (3). Sinembargo, se aprecia que las buenas prestaciones ofrecidas por MS-DOS frente aCP/M, y el hecho de que sea el sistema operativo suministrado con el ordenadorpersonal de IBM, hacen que su índice de ventas sea claramente superior a la sumade las dos versiones de la familia CP/M. Para comparar ambas familias ver (Taylor,1982).Con respecto a UNIX, desde 1983 experimentó un despegue lento pero firme, notan espectacular como el de MS-DOS, debido sobre todo a la mayor especializacióndel público al que inicialmente está destinado y a la inexistencia de una versión estándardefinitiva. A pesar de ello, va ganando terreno continuamente pues, como yase comentó, casi todas las previsiones apuntan a un triunfo total de la "filosofía" dediseño propuesta por UNIX.2. ALGUNAS CARACTERÍSTICAS DESEABLESAparte de los <strong>sistemas</strong> <strong>operativos</strong> mencionados, cuyas características y prestacioneslos hacen parecer los más adecuados a las necesidades del público actual y delpróximo futuro, podríamos señalar unas características que un buen sistema paracomputador personal debería incorporar.Así, por ejemplo, consideramos que la posibilidad de multitarea resultará imprescindiblepara la obtención de un rendimiento aceptable del sistema (Hardware +Software), a no ser que éste haya sido concebido para un público no especializado.Además, de cara a facilitar el desarrollo de software, es importante que el sistemaposea una buena flexibilidad tanto en hardware como en software. La primera, en elsentido de que el desarrollo del sistema operativo debe alejarse en todo lo posiblede las particularidades del hardware, tanto de soporte como periférico, que vaya autilizar. La segunda, en el sentido de que la portabilidad de un sistema operativogarantiza la posibilidad de desarrollar aplicaciones distribuyendo el trabajo en dis-(3) Atención al hecho de que el gráfico está confeccionado en 1983, por lo que desde 1983 a 1986 losresultados representados no son producto de la contabilidad sino de una estimación.40 6


tintos medios, sin necesidad de que el soporte empleado por los mismos sea un impedimentopara el trabajo.Finalmente, cabe esperar una mayor atención a la interfaz con el usuario que minimiceel esfuerzo de aprendizaje, haga agradable y eficiente la comunicación conel sistema, y permita obtener una alta cota de rendimiento en la labor de programación.En este sentido, y con vistas a usuarios especializados, será necesario que todosistema operativo proporcione opcionalmente paquetes de herramientas de softwarepara aplicaciones concretas, tales como herramientas destinadas a facilitar el procesamientoen tiempo real, tratamiento sofisticado de textos (por ejemplo, en automatizaciónde oficinas), ayudas para la gestión de proyectos de desarrollo de software, eincluso software de comunicaciones.Este último aspecto convertiría los <strong>sistemas</strong> aislados, cuya potencia se basa únicamenteen sus propias prestaciones y utilidades, en elementos integrantes de un SIS-TEMA INFORMÁTICO, en el que la especialización en determinadas tareas podríaconcentrarse en lugares físicos concretos para ser accesibles por cualquier elementodel sistema. Actualmente encontramos en el mercado los <strong>sistemas</strong> <strong>operativos</strong> enred como CP/NET, en el que la estructura distribuida del sistema informático no estransparente para el usuario, sino que éste debe solicitar explícitamente los serviciosno residentes, en su ubicación física. Un sistema operativo en RED es un sistemaoperativo convencional al que se le añade una nueva capa por encima de las yaconocidas, que es la que se encarga de gestionar la conexión a la red.407


Computadores personalesSin embargo, parece más interesante el camino que actualmente han tomado lasinvestigaciones, que pretende alcanzar un sistema operativo realmente distribuido,en el cual cada capa sea consciente de la naturaleza distribuida del hardware quegestiona, de tal forma que ésta sea transparente para el usuario. Este enfoque permitiráno sólo conectar un sistema aislado a una red, ocultando la estructura de ésta alusuario, sino también diseñar <strong>sistemas</strong> hardware aislados con estructura distribuida(multiprocesador con procesadores de igual jerarquía, especializándose cada unoen determinadas tareas), gestionada por un sistema operativo distribuido.3. OTROS DESARROLLOS: SISTEMAS TIPO SMALLTALKY LISPEn el capítulo 3 de este libro se. ha señalado hasta qué punto es amplio y deslizanteel concepto de computador personal. Con independencia de que nuestro estudiose focaliza sobre el perfil de ordenador personal establecido en el primer capítulo,ha podido verse cómo computadores supermicro y otras categorías elevadas le comenel terreno a los minis y en un futuro al alcance de nuestra mano sus prestacionesserán disponibles a precios rápidamente decadentes en ordenadores personalesde 32 bits auténticos.A decir verdad, el sistema UNIX entra en la categoría de futuro-presente en cuantoa ordenadores personales. Pero para terminar este anexo no pueden dejar de citarsedesarrollos de <strong>sistemas</strong> hoy ya acreditados en minis y estaciones de trabajo ycon una tendencia previsible al corrimiento hacia futuros ordenadores personales.Una vez más, habría que hablar de familias, escuelas o "filosofías" tecnológicas. Estála familia Smalltalk, inspirada en los desarrollos del Centro de Investigación de Xeroxen Palo Alto. A ella pertenecen, tanto el sistema monotarea del Macintosh (1984),como las estaciones Apple Lisa (1983), Xerox Star y Apollo DN300, cuyos precios deventa pueden oscilar entre $6.000 y $26.000.La filosofía Lisp ha inspirado <strong>sistemas</strong> que combinan las funcionalidades de lenguajede alto nivel y de sistema operativo, como el Interlisp-D, o que han sido diseñadosexpresa y conjuntamente como lenguaje y sistema operativo. Tal es el casodel lenguaje Zetalisp y el S.O. Symbolics. Los <strong>sistemas</strong> Lisp proceden del campo dela Inteligencia Artificial y su futuro como estaciones de trabajo hay que considerarloa medio y largo plazo. Ejemplos actuales de máquinas, desconocidas del gran público,son la Symbolics 3600 y la Lamda. Disponiendo de las familias de microprocesadoresMotorola MC68020 o Intel 80386, el precio de las estaciones Lisp puede situarseen torno a los $15.000 (Fertig, 1985, p. 58).REFERENCIAS BIBLIOGRÁFICASBrown, L. y Denning, Peter, J., Advanced Operating Systems". IEEE Computer. Octubre 1984,pp. 173-190.Canosa, J., El sistema UNIX y sus aplicaciones. Marcombo, Boixareu Editores. Barcelona, 1984.Christian, K., The UNIX Operating System. John Wiley & Sons. Nueva York, 1983.Dahmke, M., Microcomputer Operatiñg Systems. McGraw-Hill Byte Books. Petersborough,N. H. , 1982.408


<strong>Anexo</strong> C.<strong>Sobre</strong> <strong>sistemas</strong> <strong>operativos</strong>Daney, C. y Foth, T., "A tale of two Operating Systems". Byte, volumen 9, número 9, 1984, pp.42-56.Deitel, H.M., An Introduction toOperating Systems. Addison-Wesley. Londres, 1984.Field, T., "Installable Device Drivers for PC-DOS 2.0". Byte, vol. 8, N.° 11. Noviembre, 1983, pp.188-196.Hogan, T., Sistema Operativo CP/M Guia del usuario. Osborne/McGraw-Hill. Segunda edición,1982.Larson, C., "MS-DOS 2.0: An enchanced 16 bit Operating System'". Byte, vol. 8, N.° 11. Noviembre1983, pp. 285-290.Lister, A.M. Fundamentals of Operating Systems. The Macmillan Press Ltd. Segunda edición,Londres, 1979.Peterson, J. L. y Silberschatz, A., Operating System Concepts. Addison-Wesley. Reading, Massachusetts,1983 (2.a edic., 1985).Wood, L.E.P. y Whelan, C.H., "Operating System and Firmware of the HP-150 Personal Computer".Hewlett-Packard Journal. Agosto 1984, pp. 6-10.Taylor, R. y Lemmons, P., "Upward Migration, Part 2: A comparison of CP/M-86 and MS-DOS".Byte, vol. 7, N.° 7, julio 1982, pp, 330-356.Yates, J.L., " UNIX and the Standardization of Small Computer Systems". Byte. Octubre, 1983, p.160.Kobayashi, H., Modeling and Analysis. An Introduction to System Performance Evaluation Methodology.Addison-Wesley, 1981 (primera edición, 1978).Fertig, R. T., The Software Revolution. Trends, Players, Market Dynamics in Personal ComputerSoftware, Elsevier Science Publishing, North-Holland, N.Y., 1985.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!