Está en la página 1de 36
Capitulo 3 ESTRUCTURAS DE LOS SISTEMAS OPERATIVOS Un sistema operativo proporciona el ambiente dentro del cual se ejecutan los programas. Internamente, los sistemas operativos tienen gran variacion en su composici6n y estan organizados en muchas lineas diferentes. El disefio de un nuevo sistema operativo es una tarea de gran envergadura. Es importante definir bien los objetivos del sistema antes de comenzar su disefio. El tipo de sistema deseado es la base para elegir entre los diver- sos algoritmos y estrategias. Existen varios puntos de vista desde los cuales se puede ver un sistema operativo. Uno consiste en examinar los servicios que proporciona; otro implica analizar la interfaz que pone a disposicién de los usuarios y los programadores. Un tercero consiste en desen- samblar el sistema en sus componentes y sus interconexiones. En este capitulo, exploraremos los tres aspectos de los sistemas operativos, mostrando la perspectiva de los usuarios, los programadores y los disefiadores de estos sistemas. Veremos qué servi- cios ofrece un sistema operativo, cémo se suministran y cuales son las diversas metodologias para disefiarlo. 3.1 m Componentes del sistema Podemos crear un sistema tan grande y complejo como es un sistema operativo slo silo descomponemos en piezas mas pequefias, Cada una de estas piezas deberd ser una porcién bien delineada del sistema, con entradas, salidas y funciones definidas con cuidado. Obviamente, no todos los sistemas tienen la misma estructura; sin embargo, muchos de los modernos comparten la meta de soportar los componentes del sistema que se describen en las secciones 3.1.1 a la 3.1.8. 45 Escaneado con CamScanner 46 Capitulo 3 Estructuras de los sistemas operativos 3.1.1. Administracién de procesos Un progr: a i parbrograma no tiene efecto. menos que sus instrucciones sean ejeeutadas por una P so puede considerarse como un programa en ejecucion, pero su definicion Pu-Un medida que lo exploremos mas. Un prog) tao ma de usuario en tiempo compartido, mo un compilador, es un proceso. Un programa de edicion de texto ejecutade a usuario individual en una PC es un proceso. Una tarea del sistema, como el envio deca daa la impresora, también es un proceso. Por ahora, usted puede co sali. " iderar que un s0 es un trabajo 0 un programa en tiempo compartido, pero después aprenderd sey ue el concepto es mis general. Como veremos en el capitulo 4, es posible pro Stents que pets Aen rdieribe prosesoe craraulrocaes pum chuataresonerrcaee Un proceso necesita recursos —incluyendo tiempo de la CPU, memoria, arene dispositivos de E/S— para realizar su tarea. Estos recursos son dados al proceso see, i crea, o le son asignados mientras esta en ejecucién. Ademés de los diversos recursos fst, cos y légicos que obtiene un proceso al crearse, puede recibir al mismo tiempo varios da tos (entrada) de inicializacién. Por ejemplo, considere un proceso cuya funcion es mostrar elestado de un archivo en la pantalla de una terminal. Al proceso se le dara como entrada nombre del archivo, y ejecutara las instruceiones apropiadas y las llamadas al sistema para obtener y exhibir en la terminal la informacion deseada. Cuando el proceso termina el sistema operativo reclamara todos los recursos reutilizabies. Hacemos énfasis en que un programa por si mismo no es un proceso; un programa es _-wwha entidad pasiva, como los contenidos de un archivo almacenado en disco, en tanto que un proceso es una entidad activa, con un contador de programa especificando la siguiente instruccién a ejecutar. La ejecucién de un proceso debe ser secuencial. La CPU ejecuta una tras otra las instrucciones del proceso, hasta que éste se completa. Ademas, en cualquier momento, a lo sumo se ejecuta una instruccién en beneficio del proceso. Porlo tanto, aunque dos procesos pueden estar asociados con el mismo programa, se les considera como dos secuencias distintas de ejecucin. Es comin tener un programa que genera muchos procesos a medida que se ejecuta. Un proceso es Ja unidad de trabajo en un sistema. Tal sistema consta de un conjunto de procesos, algunos de los cuales son del sistema operativo (aquéllos que ejecutan codigo del sistema) y el resto son de usuario (que ejecutan cédigo de usuario). Todos estes procesos pueden potencialmente ejecutarse de manera concurrente, multiplexando ala CPU entre ellos. E] sistema operativo es responsable de las siguientes actividades relacionadas con la administracion de proceso: Crear y eliminar procesos de usuario y procesos del sistema. Suspender y continuar procesos. Proporcionar mecanismos para Ja sincronizacién de procesos. Proporcionar mecanismos para la comunicacién de procesos. Proporcionar mecanismos para el manejo de ploqueos mutuos. administracién de procesos. En Jos capitulos 4 al 7 examinaremos Jas téenicas de 2 % Escaneado con CamScanner 3.1, Componentes del sistema 47 3.1.2. Administraci6n de la memoria principal Como estudiamos en el ca operacién de un sister pitulo 1, la memoria principal es un componente central en la d de cémputo moderno; es un arreglo grande de palabras o bytes, cuyo tamafio va desde cientos de miles hasta miles de millones, cada palabra o byte tiene su propia direccién; también es un depdsito de datos a los que se puede tener acceso rapi- damente y los cuales son compartidos por la CPU y los dispositivos de E/S. El procesador central lee instrucciones de la memoria principal durante el ciclo de obtener-instrucci6n, y lee y escribe datos de ésta durante cl ciclo de obtener-datos. Las operaciones de E/S implementadas via DMA también leen y escriben datos en la memoria principal. La memoria principal es el tinico dispositivo de gran almacenamiento que la CPU es capaz de direccionar, y al que puede tener acceso de manera directa. Por ejemplo, para que la CPU procese datos del disco, dichos datos deben ser transferidos, primero, ala memoria principal por medio de lamadas de E/S generadas por la CPU. De manera equivalente, las instrucciones deben estar en la memoria para que la CPU las ejecute. Para que un programa se ejecute, debe convertirse en un mapa de direcciones absolutas y cargarse en memoria, A medida que el programa se ejecuta, accede a instrucciones de programa y datos de la memoria, generando estas direcciones absolutas. Transcurrido cierto tiempo, el programa termina, su espacio de memoria se declara disponible, y el siguiente programa puede cargarse y ejecutarse. Para mejorar tanto el uso de la CPU como la velocidad de respuesta dela computadora asus usuarios, debemos mantener varios programas en la memoria. Existen muchos esque- mas diferentes para administrar la memoria. Estos esquemas reflejan diversos enfoques para la administracion de la memoria, y ta eficacia de los diferentes algoritmos depende de la situacién particular. La seleccién de un esquema de administracion para un siste- ma especifico depende de muchos factores —especialmente del disefio del Aardware del sistema. Cada algoritmo requiere su propio soporte de hardware. E] sistema operativo es responsable de las siguientes actividades relacionadas con la administracién de la memoria: « Llevar un registro de las partes de la memoria que estan siendo utilizadas en el momento y quién las est4 utilizando. © Decidir qué procesos se van a cargar en la memoria cuando el espacio de la misma esté disponible. @ Asignar y liberar espacio de la memoria segiin se necesite. Las técnicas de administraci6n de la memoria se examinaran en los capitulos 9 y 10. 3.1.3. Administraci6n de archivos La administracién de archivos es uno de los componentes més visibles en un sistema operativo. Las computadoras pueden almacenar informacién en varios tipos diferentes de medios fisicos. La cinta magnética, el disco magnético y el disco éptico son los medios mAs comunes. Cada uno de éstos tiene sus propias caracteristicas y organizaci6n fi Escaneado con CamScanner 48 Capitulo 3 Estructuras de los sistemas operativos Cada medio es controlado por un dispositive, como una unidad de disco 0 una unidad gg cinta, que también tiene caracteristicas propias Gnicas. Estas propiedades incluyen velocidad de acceso, capacidad, velocidad de transferencia de datos y método de accesy (secuencial 0 aleatorio). ; Para un uso conveniente del sistema de compute, el sistema operativo proporciong una vista logica uniforme del almacenamicnto de la informaci6n, Este sistema hace ung abstraccién de la propiedades fisica positivos de almacenamiento para definiy una unidad de almacenamiento ldgico, el archivo. EI sistema operativo hace un mapa de los archivos en los medios fisicos y accede a estos archivos via los dispositivos de almacenamiento. ‘ t Un archivo es un conjunto de informacién relacionada definida por su creador, Comtnmente, los archivos representan programas (tanto en forma de fuente como de objeto) y datos, Los archivos de datos pueden ser numéricos, alfabéticos o alfanuméricos, Asimismo, pueden ser de forma libre (por ejemplo, archivos de texto), 0 pueden tener una formato rigido (por ejemplo, campos fijos). Un archivo consta de una secuencia de bits, bytes, Iineas o registros, cuyos significados son definidos por sus creadores. E] concepto de archivo es un concepto en extremo general. EI sistema operativo implementa el concepto abstracto de un archivo administrando medios de almacenamiento masivo, como cintas y discos, y los dispositivos que los con- trolan. Asimismo, los archivos por lo regular estan organizados en directorios para facilitar su uso. Finalmente, cuando varios usuarios tienen acceso a los archivos, resulta deseable controlar dicho acceso y en qué forma (por ejemplo, leer, escribir, anexar). EI sistema operativo es responsable de la siguientes actividades relacionadas con la administracion de archivos: © Crear y eliminar archivos. © Crear y eliminar directorios. © Dar soporte a primitivas para la manipulacién de archivos y directorios. © Hacer un mapa de los archivos en el almacenamiento secundario. « Respaldar archivos en medios de almacenamiento estables (no volatiles). Las téenicas de administracién de archivos se estudiardn en el capitulo 11. 3.1.4, Administraci6n del sistema de E/S Uno de los propésitos de un sistema operativo es ocultar al usuario las pecutiaridades de los dispositivos especificos de hardware. Por ejemplo, en UNIX, el subsistema de E/S oculta las Particularidades de los dispositivos de E/S al resto del sistema operativo mismo. El subsistema de E/S consta de: * Un componente de administracién de memoria que incluye manejo de buffers asignacién de caché y spooling (operacion simultanea de periféricos en linea). © Una interfaz general de manejadores de dispositivo. © Controladores para dispositivos de Aardware especificos. Escaneado con CamScanner 3.1. Componentes del sistema 49 S6lo el manejador de dispositivos conoce las peculiaridades del dispositivo especifico al cual est asignado. Enel capitulo 2 examinamos cémo los manejadores de interrupci6n y los manejadores de dispositivo se emplean en la construccion de subsistemas de B/S eficientes. En el ca~ pitulo 12 analizaremos eémo el subsistema de E/S crea una interfaz con los demas componentes del sistema, administra dispositivos, transfiere datos y detecta la termi- nacién de operaciones de E/S. 3.1.5. Administracién del almacenamiento secundario El propésito principal de un sistema de computo es ejecutar programas. Estos programas, junto con los datos a los que acceden, deben estar en a memoria principal, 0 almace- namiento primario, durante la ejecucion. Debido a que la memoria principal es muy pequefia para acomodar todos los datos y programas, y dado que los datos que contiene se pierden cuando se interrumpe la energia, el sistema de computo debe proporcionar un almacenamiento secundario como respaldo para la memoria principal. La mayoria de los sistemas de computo modernos emplean discos como el principal medio de alma- cenamiento en linea, tanto para programas como para datos. La mayoria de los programas —incluyendo compiladores, ensambladores, rutinas de ordenamiento, editores y forma- teadores— estin almacenados en un disco hasta que se cargan en la memoria, y luego utilizan el disco como fuente y destino de su procesamiento. Por lo tanto, la administra- cién apropiada del almacenamiento en disco es de importancia central para un sistema de cémputo. El sistema operativo es responsable de las siguientes actividades relaciona- das con la administracién de discos: # Administracién de espacio libre. © Asignacién de almacenamiento. © Planificacién del disco. Ya que el almacenamiento secundario se utiliza con frecuencia, se debe usar de manera eficiente, La velocidad de operacién de una computadora puede depender de las velocidades del subsistema del disco y de los algoritmos que manipulan dicho subsistema. En el capitulo 13 se estudiaran las técnicas para la administraci6n del almacenamiento secundario. 3.1.6. Operaci6n en red Un sistema distribuido es un conjunto de procesadores que no comparten memoria, dispositivos periféricos o un reloj. En su lugar, cada procesador tiene su propia memoria y reloj local, y los procesadores se relacionan entre ellos mediante varias lineas de comu- nicacién, como buses de alta velocidad o redes. Los procesadores en un sistema distribuido varian en tamaio y en funci6n; pueden incluir pequefios microprocesadores, estaciones de trabajo, minicomputadoras y sistemas de cémputo grandes de propésito general. Escaneado con CamScanner ructuras de los sistemas operativos Los procesadores en el sistema n, Ia cual se puede configurar ¢ parcialmente conectada, F {in conectados mediante una red de comuni- diferentes form: La red puede estar total o disco de la red de comunicacién debe considerar las estrate~ para mensajes y las estrategias de conexién, ast como los seguridad. ribnido retine sistemas fisi intos, posiblemente heterogéneos, en un solo sistema coherente, proporcionando al usuario cl acceso a los diversos recursos que el sistema mantione. til acceso a un recurso compartido permite una aceleracion del cémputo, mayor fun Jad y disponibilidad de los datos y una mejora en la confiabi- lizan el acceso a redes como una forma de en red contenidos en el controlador de dispositivos de la interfaz de la red. Los protocolos que crean un sistema distribuido pueden tener un efecto importante sobre la utilidad y popularidad de dicho sistema. La innovacién de la red mundial (World Wide Web) fue crear un nuevo método de acceso para compartir informacién: mejoré los protocolos de transferencia de archivos (File Trans- Jer Protocol, FYP) y de sistemas de archivos en red (Net File System, NFS), eliminandola necesidad de que un usuario se conectara antes de que se le permitiera utilizar un recurso, remoto. Se define asi un nuevo protocolo, http, para usarse en la comunicacién entre un servidor de red y un navegador. Asi, un navegador de red s6lo necesita enviar una solici- tud de informacién al servidor de red de una maquina remota, y recibe la informacion (texto, grificos, vinculos a otra informacién). Este incremento en la comodidad promovié un enorme crecimiento en el uso del http y de la red en general. En los capitulos 14 a 17 estudiaremos las redes y los sistemas distribuidos, con un enfoque particular en el cémputo distribuido empleando Java. lidad. Los sistemas operativos ustialmente gene ingresar a archivos, con los di ss de la operac 3.1.7. Sistema de proteccién Si un sistema de computo tiene miltiples usuarios y permite la ejecucién concurrente de varios procesos, entonces estos procesos deben ser protegidos de las actividades de los dems. Para dicho fin, se incorporan mecanismos que aseguran que los archivos, los seg- mentos de memoria, la CPU y otros recursos sean operados s6lo por aquellos procesos que cuentan con una autorizacin del sistema operativo. Por ejemplo, el Aardware para direccionamiento de memoria asegura que un proceso s6lo pueda ejecutarse dentro de su propio espacio de direcciones. El temporizador (timer) asegura que ningiin proceso tenga control de la CPU sin abandonar finalmente dicho con- trol. Los usuarios no pueden tener acceso a los registros de control de dispositivos, de ma- nera que Ia integridad de los dispositivos periféricos queda protegida. i La protecci6n es cualquier mecanismo para controlar el acceso de programas, procesos 0 usuarios a los recursos definidos por un sistema de cémputo. Este mecanismo debe proporcionar los medios para especificar los controles a establecer y los medios para hacerlos cumplir. La proteccién puede mejorar la confiabilidad detectando errores latentes en las inter- faces entre los subsistemas componentes. Una pronta deteccion de errores en las interfaces Escaneado con CamScanner 3.2. evita la contaminaci6n de un subsistema saludable por parte de otro subsistema con mal funcionamiento. Un recurso sin proteccién no puede defenderse ante el uso (0 abuso) de un usuario no autorizado o incompetente, Un sistema orientado a la proteccién pro- porciona un medio para distinguir entre un uso autorizado y otro no autorizado, como se estudiaré en el capitulo 18. 3.1.8. Sistema de intérprete de comandos Uno de los programas del sistema mé importante para un sistema operativo es el intérprete de comandos, que es la interfaz. entre el usuario y el sistema operativo. Algunos sistemas operativos incluyen el intérprete de comandos en su Xerne/o nticleo. Otros siste- mas operativos, como MS-DOS y UNIX, tratan al intérprete de comandos como un pro- grama especial que se ejecuta al iniciar un trabajo, o cuando se conecta un usuario (en los sistemas de tiempo compartido). ‘Muchos comandos se transmiten al sistema operativo mediante sentencias de con- trol. Cuando se inicia un trabajo nuevo en un sistema por lotes, o cuando un usuario se co- necta a un sistema de tiempo compartido, se ejecuta automaticamente un programa que lee e interpreta estas sentencias de control. Este programa también se conoce como intérprete de tarjetas de control, 0 intérprete de linea de comandos, y con frecuencia se deno- mina shell. Su funci6n es simple: obtener la siguiente sentencia de comands y ejecutarla. Los sistemas operativos difieren en el area del s/e//, con un intérprete de comandos amigable con el usuario que permite que el sistema sea simple para algunos usuarios. Un estilo de interfaz amigable es el sistema de meniis y ventanas basado en el uso de ratén, empleado en Macintosh y en Windows. El ratén se mueve para posicionar el apuntador sobre imagenes, 0 iconos, los cuales estan en la pantalla y representan programas, archivos y funciones del sistema. Dependiendo de la ubicacién del apuntador del raton, al hacer clic a uno de sus botones, se puede invocar un programa, seleccionar un archivo o directorio —conocido como carpeta— o desplegar un ment de comandos. Algunos usua- rios prefieren otros intérpretes de comandos mas poderosos, complejos y dificiles de aprender. En estos intérpretes, los comandos se introducen desde el teclado y se exhiben enuna pantalla o terminal de impresién, con a tecla de entrada o retorno (enter) sefialando que un comando estd completo y listo para ser ejecutado. Los intérpretes de MS-DOS y UNIX operan de esta forma. Las declaraciones de comandos por ellas mismas tienen que ver con la creacién y administracién de procesos, manejo de E/S, administracién del almacenamiento secun- dario, administracion de la memoria principal, acceso al sistema de archivos, proteccién y operaci6n en red. 3.2 m Servicios del sistema operativo Un sistema operativo proporciona un ambiente para la ejecucién de programas. También, ofrece otros servicios a programas y a los usuarios de éstos; por supuesto, los servicios Escaneado con CamScanner $2 Cani Capitulo 3 Estructuras de los sistemas operativos podemos identificar clases especificos difieren de un sistema operativo a otro, pero Hh dor, para facilitar la tarea comunes. Estos servicios se dan para conveniencia del programa de programacién. cargar un programa en la me- inar su ejecucion, ya sea © Ejecucién de programas: el sistema debe ser capaz de moria y ejecutarlo. El programa debe ser eapaz de term normal o anormalmente (lo que indica an error). ma en ejecucién puede requerir de operaciones de E/ S. Asti vez estas operaciones de E/S pueden implicar aun archivo o aun dispositivo. Para dispositivos especiticos es conveniente contar con funciones especiales (como rebobingr una unidad de cinta o dejar en blanco una pantalla CRT). Para lograr Relencia y obtener proteccidn, los usuarios por To general no pueden controlar en forma directa a los dispositivos de E/S. Por lo tanto, el sistema operativo debe proporcionar un medio para realizar estas operaciones. J sistema de archivos es de interés particular. ‘tan leer y escribir archivos; también crear © Operaciones de E/S:m prog ¢ Manipulacién del sistema de archivos Obviamente, los programas necesi y borrar archivos por nombre. chas situaciones en las cuales un proceso necesita dos formas principales en las que que se estén © Comunicaciones: existen mu: intercambiar informacién con otro proceso. Hay puede darse tal comunicacién. La primera tiene lugar entre procesos ejecutando en la misma computadora; la segunda tiene lugar entre procesos que se es tan ejecutando en diferentes sistemas de cémputo y que estan enlazados mediante una red de computadoras. Las comunicaciones pueden implementarse via memoria compartida, o mediante la técnica de paso de mensajes, en la que el sistema operativo mueve paquetes de informacién entre los procesos. ‘© Deteccién de errores: el sistema operativo constantemente necesita estar preparado ante la posible aparicién de errores. Estos pueden ocurrir en la CPU y en el Aard- ware de la memoria (como un error de la memoria 0 una falla de energia), en dispositivos de E/S (un error de paridad en una cinta, una falla de conexion ala red, o falta de papel en la impresora) y en el programa del usuario (un sobreflujo aritmético, un intento de acceso a una localidad de memoria ilegal, o un uso muy grande de tiempo de la CPU). Para cada tipo de error, el sistema operativo deberd tomar la accion apropiada, para asegurar una operacién correcta y consistente. denis existe otro conjunto de funciones del sistema operativo cuya finalidad no es ayudar a usuario, sino asegurar la operacién eficiente del sistema mismo. Los sistemas con miiltiples usuarios logran eficiencia comparti a partiendo los rec ee ‘ursos de la computadora ° Asignacién de recursos: cuando existen miltiples usuarios 0 varios trabajos en ejecucion al mismo tiempo, se debe asignar recursos a cada uno de ellos. El ain operativo administra varios tipos diferentes de recursos. Algunos (como los cicl0s de la CPU, memoria principal y almacenamiento de archivos) oteden oes un Escaneado con CamScanner 3.3. Mamadasalsistema 53 codigo de asignacién especial, en tanto que otros (como los dispositivos de B/S) pueden tener un eddigo de solicitud y liberacién mucho midis general, Por ejemplo, para determinar de qué forma mejorar el uso de 1a CPU, los sistemas operativos tienen rutinas de planificacién de la CPU que toman en cuenta la velocidad del procesador, los trabajos a ejecutar y el mimero de registros disponibles entre otros factores. También podria haber rutinas para asignar una unidad de cinta aun trabajo determinado. Una de estas rutinas localiza una unidad de cinta libre y registra una tabla interna al nuevo usuario de la unidad. Otra rutina se utiliza para limpiar dicha tabla. Estas rutinas también pueden nar graficadores, médem y otros dispositivos periféricos. * Contabilidad: deseamos levar un registro de los usuarios que wtilizan los recursos y cémputo y en qué cantidad y tipos. Este registro puede ser utilizado para fines con- tables (de manera que se pueda facturar a los usuarios) o simplemente para generar estadisticas de uso. Estas estadisticas pueden ser una herramienta valiosa para los investigadores que desean reconfigurar el sistema, con el fin de mejorar los, servicios de cémputo. © Proteccién: los propietarios de la informacién almacenada en un sistema multh usuario desean que se controle el uso de dicha informacién. Cuando varios procesos distintos se ejecutan de manera concurrente, se debe evitar que un proceso inter- fiera con los demas, 0 con el sistema operativo mismo. La protecci6n implica asegurar que todo acceso a los recursos del sistema esté controlado. La seguridad del sistema ante personas externas también es importante. Tal seguridad comienza al requerir que cada usuario se tenga que acreditar a si mismo ante el sistema, generalmente mediante una contrasefia, para que se le permita el acceso a los recursos. Esto se extiende a la defensa de dispositivos de E/S externos, incluyendo médem y adaptadores de red, contra intentos de acceso invalidos, y al registro de todas estas conexiones para detectar intrusos. Para que un sistema se proteja y esté seguro, se deben establecer protecciones a lo largo de todo el sistema. Una cadena es tan fuerte como lo sea su eslabén mas débil. 3.3. m Llamadasal sistema Las Hamadas al sistema proporcionan la interfaz entre un proceso y el sistema operativo. Estas Ilamadas estan disponibles como instrucciones en lenguaje ensamblador, y comtinmente se incluyen en los manuales empleados por los programadores de estos lenguajes. Ciertos sistemas permiten que las llamadas al sistema se hagan directamente desde un programa en lenguaje de alto nivel, en cuyo caso se asemejan a lamadas a subrutin 0a funciones predefinidas. Pueden generar una Hamada a una rutina especial en tiempo de ejecucion, la cual hace la llamada al sistema, 0 ésta puede producirse directo en linea. Varios lenguajes —como C, C++ y Perl— han sido definidos para sustituir al lenguaje ensamblador para la programacién de sistemas. Estos lenguajes permiten hacer llamadas al sistema de manera directa. Por ejemplo, las amadas al sistema de UNIX pueden ii Escaneado con CamScanner 54 Capitulo 3 Estructuras de Tos sistemas operatives i jas modern invocadas desde un programa C0 C++. Las Mamadas al sist ae Wind plataformas de Windows son parte dela interfaz de programaci m ear Fodon Toe API (Application Programmer Interface, API), que esta disp’ compiladores escritos para Windows. ; : ’ Java no permite que se hagan Tamadas airectamente al sistema, ce au na Hamada a éste es especifica a un sistema operativo, y da por resultado w Pp icacié i ‘cteristicas especificas del sis- a Sor argo, si una aplicacion requiere de caracter = tel sis a plataforma. Sin embargo, p cision 2 étodo que est tema, un programa en Java puede Hamar a un Oi! s 8 picamente Co G++—y queresliza la Hamada al sisteme- "Tales métodos son conocidos como mio eau ploel uso de las Hlamadas al sistema, suponga due s escribe un peers sencillo para leer datos de un archivo y copiarlos a otr® archivo. La primera entrada que Sencillo part programa son 1os nombres de los dos archivos: el de entrada y el de salida. Estos nombres pueden especificarse de muchas maneras, dependiendo del disefio del aaa perativo, Un enfoque consiste en que el programa pid al usuario los nombres sje los dos archivos; en un sistema interactivo, este enfoque requerird una secuencia de Aes fas al sistema, primero para escribir un mensaje en la pantalla que pida informacién, y luego para leer del teclado los earacteres que definen a los dos nombres. En los sistemas y neko Pave aton y en iconos, por lo general se exhibe un ment de nombres de archivos en pasa ot ana. El usuario puede usar el rat6n para seleccionar el nombre del archivo fuente, yse abre una ventana para el nombre de destino a especificar. Unavenque se obtienen los dos nombres de archivo, el programa debe abrir el archivo de entrada y crear el de Salida, Cada una de estas operaciones requiere de otras llamadas ot Getema, También existen condiciones de error posibles para cada operacién. Cuando el programa trata de abrir el archivo de entrada, puede descubrir que no existe un archivo von dicho nombre, o que el archivo esta protegido contra acceso. En estos casos, el pro~ grama debe imprimir un mensaje en la consola (con otra secuencia de lamadas al sistema), y Juego terminar de manera anormal (otra llamada al sistema). Si existe el archivo de entrada, entonces debemos erear tun nuevo archivo de salida. Podemos descubrir que ya existe un archivo de salida con el mismo nombre; esta situacién puede ocasionar que el programa aborte (una llamada al sistema), 0 se borra el archivo existente (otra llamada al sistema) y crear uno nuevo (una llamada més al sistema). Otra opeién, en un sistema interactivo, consiste en preguntar al usuario (con una secuencia de llamadas al sistema para producir el mensaje que pide informacion y para leer la respuesta de la terminal) si se reemplaza el archivo existente 0 si se aborta el programa. : Ahora que ambos archivos estan preparados, entramos a un ciclo que lee ef archivo ae et o A ona ieee . sistema) y escribe en el archivo de salida (otra Hamada al m 1a operaci6n de lectura y escritura debe devolver informacién de estado con relacién a varias condiciones posibles de error. En la entrada, el j hha legado al fi : el programa puede descubrir que se ha legado al final del archivo, o que hubo una falla de hard: 56 a acid (enmotuneftor da paridnd), La operacioa de entllaragieds cateeie eariog Ps i6n de escritura puede encontrar varios errores, dependiendo del dispositivo de salida 2 . . . ano hay mi i ‘ ‘i de la cinta, impresora sin papel, etcétera). o y mas espacio en disco, fin fisico Después de que el archivo completo ha sido copi: dri ar am , C copiado, el programa podri: - bos archivos (otra Hamada al sistema), escribir un mensaje en la cond (mis la sida As Hamad Escaneado con CamScanner 3.3. Liamadasalsistema 55 al sistema), y terminar de manera normal (la llamada final al sistema). Como podemos ver, los programas pueden hacer un uso intenso del sistema operativo. Sin embargo, la mayorfa de los usuarios nunca ve este nivel de detalle. El sistema de soporte en tiempo de ejecucién (el conjunto de funciones incorporadas en las bibliotecas incluidas con un compilador) para la mayor parte de los lenguajes de programacién proporciona wna interfaz mucho mis 1. Por ejemplo, la declaracion cout en C++ es probablemente compilada en una Hamada a una rutina de soporte en tiempo de ejecu- cién que emite las Hamadas necesarias al sistema, verifica si hay errores, y finalmente regresa al programa del usuario. De esta forma, la mayoria de los detalles de la interfaz del sistema operativo se oculta al programador por el compilador y por el paquete de so- porte en tiempo de ejecucién, Las llamadas al sistema ocurren en diferentes formas, dependiendo de la computadora en uso. A menudo se requiere mas informacién que simplemente la identidad de la llama- da deseada. E] tipo exacto y la cantidad de informacién varian segin el sistema operativo particular y la llamada. Por ejemplo, para obtener una entrada, tal vez sea necesario especi- ficar el archivo 0 el dispositivo que se va a usar como fuente, y la direcci6n y la longitud del Suffer de memoria en el cual debera leerse la entrada. Obviamente, el dispositivo, el archivo y la longitud pueden estar implicitos en la llamada. Para pasar parametros al sistema operativo se emplean tres métodos generales. El enfoque ms sencillo consiste en pasar los pardmetros en registros. En algunos casos, sin embargo, puede haber mas pardmetros que registros. En estos casos, los paréme- tros se almacenan en un S/ogue o tabla en memoria, y la direccién del bloque se pasa como un parémetro en un registro (figura 3.1). El programa también puede colocar, 0 empujar (push) pardmetros en la pila (stacks), y el sistema operative puede sacarlos (pop) de la misma. Algunos sistemas operativos prefieren los métodos del bloque o de la pi- a, debido a que dichos enfoques no limitan el nimero o la longitud de los parametros que se estén pasando. Las Ilamadas al sistema se pueden agrupar de manera general en cinco categorias principales: control de procesos, manipulacién de archivos, manipulacién de x registro X: parametros para la llamada herpeaaeed ‘ “usar parametros| ) cédigo para la cargar direccién X Mamada al llamada al sistema 13 sistema 13 programa de usuario sistema operativo Figura 3.1. Paso de pardmetros como una tabla Escaneado con CamScanner 56 c. ‘apitulo 3 Estructuras de los sistemas operativos © Control de procesos o terminar, abortar 0 cargar, ejecutar 9 crear proceso, terminar proceso 0 obtener atributos del proceso, establecer atributos del proceso 0 esperar tiempo o esperar evento, sefialar evento o asignar y liberar memoria « Administracién de archivos o crear archivo, borrar archivo o abrir, cerrar o leer, escribir, reposicionar o obtener atributos de archivo, establecer atributos de archivo © Administracién de dispositivos 9 solicitar dispositivo, liberar dispositivo o leer, escribir, reposicionar o obtener atributos de dispositivo, establecer atributos de dispositivo o conectar o desconectar dispositivos logicamente © Mantenimiento de informaci6n o obtener hora o fecha, establecer hora o fecha o obtener datos del sistema, establecer datos del sistema o obtener atributos de proceso, archivo o dispositivo o establecer atributos de proceso, archivo 0 dispositivo ¢ Comunicaciones o crear, borrar conexién de comunicacién o enviar, recibir mensajes o transferir informacié6n de estado o conectar o desconectar dispositivos remotos Figura 3.2. Tipos de llamadas al sistema Escaneado con CamScanner 3.3. Llamadasalsistema 57 dispositivos, mantenimiento de informacién y comunicaciones. En las secciones 3.3.1 a 3.3.5 examinaremos con brevedad los tipos de llamadas al sistema que pueden ser proporcionadas por un sistema operativo. La mayorfa de estas llamadas al sistema sopor- ta 0 se soporta por conceptos y funciones que se examinan en capitulos posteriores. La figura 3.2 resume los tipos de llamadas al sistema que normalmente facilita un sistema operativo. 3.3.1. Control de procesos Un programa en ejecucién necesita ser capaz de suspender dicha ejecucién ya sea normal (end) 0 anormalmente (abort). Si se hace una llamada al sistema para terminar de mane- ra anormal el programa en ejecucién, o si el programa presenta un problema y ocasiona una trampa (¢rap) de error, se realiza un vaciado de la memoria y se genera un mensaje de error. El vaciado se escribe en un disco y puede ser examinado por un depurador para determinar la causa del problema. En cualquier circunstancia, el sistema operativo debe transferir el control al intérprete de comandos. El intérprete de comandos lee entonces el siguiente comando. En un sistema interactivo, este intérprete simplemente contintia con el siguiente comando; se supone que el usuario emitira un comando apropiado para res- ponder a cualquier error. En un sistema por lotes, el intérprete de comandos termina todo el trabajo y contintia con el siguiente. Algunos sistemas permiten tarjetas de control para indicar acciones especiales de recuperacién en caso de que ocurra un error. Si el pro- grama descubre un error en su entrada y desea terminar de manera anormal, también puede definir un nivel de error. Los errores mas severos pueden indicarse mediante un pa- rametro de error de mayor nivel. Entonces es posible combinar la terminacién normal y anormal definiendo una terminacién normal como un error a nivel 0. El intérprete de comandos o un programa subsecuente pueden utilizar este nivel de error para determi- nar la siguiente accién de manera automitica. Un proceso o trabajo que esté ejecutando un programa tal vez tenga que cargar (load) y ejecutar (execute) otro programa. Esta caracteristica le permite al intérprete de co- mandos ejecutar un programa segiin sea dirigido, por ejemplo, por un comando de usuario, elclic de un rat6n, o un comando en lote. Una pregunta interesante es a donde regresar el control cuando termina el programa cargado. Esta pregunta est relacionada con el proble- ma de definir si el programa existente se pierde, se guarda, 0 se le permite continuar su ejecucién de manera concurrente con el nuevo programa, Si el control regresa al programa existente cuando el nuevo programa termina, debemos guardar la imagen de memoria del programa existente; de esta forma, hemos creado efectivamente un mecanismo para que un programa lame a otro. Si ambos pro- de manera concurrente, hemos creado un nuevo trabajo o proceso para gramas contingan t zo yr Existe una Hamada especifica al sistema para este fin (create ser multiprogramado. processo submit job). ; : Si creamos un nuevo trabajo o proceso, o incluso un conjunto de trabajos 0 procesos, debemos ser capaces de controlar su ejecucién. Este control requiere la habilidad para de- terminar y restablecer los atributos de un trabajo o proceso, incluyendo la prioridad del trabajo, su tiempo de ejecucion maximo permisible, eteétera (get process attributes Escaneado con CamScanner 58 Capitulo 3 Estructur Ws dle los sistemas operativos Y set process attributes), También tal vez se quiera terminar un trabajo o un pro. ceso creado (terminate process) si descubrimos que es incorrecto 0 ya no se necesita Habiendo creado nuevos trabajos 0 procesos, tal vez sea preciso esperar a que termine su ejecucin. Quizd se desce esperar cierto tiempo (wait time); mas probablemente, es. perar a que ocurra tin evento expeetfico (walt event). Los trabajos 0 procesos deberin entonces sefiatar cudindo ha oeurrido dicho evento (signal event). Este tipo de Nama- das al si que ticnen que ver con Ia coordinacién de los procesos coneurrentes, se minardn con mayor detalle en el capitulo 7. a depuracién de un programa es itil otro conjunto de lamadas al sistema. Muchos sistemas proporcionan Hlamadas al sistema para generar un vaciado (dump) de la memo. ria; esta provisién es titil para fines de depuracion, Un s .guimiento 0 trazo (trace) del programa lista eada instruceiéna medida que se ejecuta; sin embargo, este servicio es propor- cionado por muy pocos sistemas, Incluso los microprocesadores facilitan un modo de la CPU conocido como paso individualo simaple, en el que la CPU ejecuta una trampa después de cada instruceién. La trampa o captura se toma por un depurador, que es un programa de sistema disefiado para ayudar al programador a encontrar y corregir errores. Muchos sistemas operativos generan un perfil de tiempo de un programa. Esta descripeién indica la cantidad de tiempo que el programa se ejecuta en una localidad par- ticular o conjunto de localidades. Un perfil de tiempo requiere un servicio de rastreo o interrupciones reguiares del temporizador. En cada ocurrencia de una interrupcién del temporizador, se registra el valor del contador de programa. Con interrupciones del tempo- rizador lo suficientemente frecuentes, se puede obtener una imagen estadistica del tiem- po consumido por las diversas partes del programa. Existen tantas facetas y variaciones en el control de procesos y trabajos que es con- veniente utilizar ejemplos para aclarar estos conceptos. El sistema operativo MS-DOS es un ejempio de un sistema de una sola tarea, y que tiene un intérprete de comandos que se invoca al iniciar la computadora (figura 3.3 a). Debido a que MS-DOS es un sistema de una memoria libre memoria libre proceso intérprete de comandos intérprete de comandos kernel kernel (a) (b) Figura 3.3. Ejecucién del MS-DOS, a) Al arranque del sistema. b) Ejecutando un programa Escaneado con CamScanner 3.3, Llamadasal sistema = 59 sola tarea, utiliza un método sencillo para la ejecueién de un programa, sin crear un nuevo proceso. El sistema carga el programa en la memoria, escribiendo sobre la mayor parte de sf mismo para dar al programa tanta memoria como sea posible (figura 3.3 b)). Luego ajusta el apuntador de instrucciones a In primera instruccion del programa, A continua~ cién ejecuta el programa y, o bien un error ocasiona una captura, o el programa solicita una Hamada al sistema para terminar. En cualquier easo, el e6digo de error se guarda en Ja memoria del sistema para un uso posterior. Después de esta accidn, la pequefia por- cién del intérprete de comandos que no fue sobrescrita continéa la ejecucion. Su primera tarea consiste en recargar desde el disco el resto del intérprete de comandos. Una vez. que esta tarea termina, el intérprete de comandos pone el cédigo de error previo a disposi- cién del usuario o del siguiente programa. Aunque el sistema operative MS-DOS no tiene capacidades generales de multitarea, si proporciona un método para ejecucién concurren- te limitada. Un TSR es un programa que “intercepta una interrupcion” y luego abandona o sale con la llamada al sistema para terminar y permanecer residente (terminate and stay resident). Por ejemplo, puede interceptar la interrupeién del reloj colocando la direccién de una de sus subrutinas en la lista de rutinas de interrupcién a ser Ilamadas cuando se activa el temporizador del sistema. De esta forma, la rutina TSR sera ejecutada va- rias veces por segundo, con cada pulso del reloj. La llamada al sistema terminate and stay resident hace que MS-DOS reserve el espacio ocupado por el TSR, de manera que no sea sobrescrito al recargar el intérprete de comandos. El sistema UNIX de Berkeley es un ejemplo de un sistema multitarea. Cuando un usuario se conecta al sistema, se ejecuta el shel/(intérprete de comandos) que él elige. Este intérprete es similar al de MS-DOS por el hecho de que acepta comandos y ejecuta programas que el usuario solicita. Sin embargo, debido a que UNIX es un sistema multita- rea, el intérprete de comandos puede continuar en ejecucién mientras otro programa tam- bién se ejecuta (figura 3.4). Para comenzar un nuevo proceso, el intérprete ejecuta la Hamada al sistema fork. Luego, el programa seleccionado se carga en la memoria via proceso D memoria libre proceso C intérprete proceso B kernel Figura 3.4. UNIX ejecutando varios programas Escaneado con CamScanner 60 Capitulo 3 strueturas do lov slstomas oporativos 1a Ramada oxec, y entor haya omitido el comando, ol intdrprete espera luego a que dermin 61 proceso que se eneuentra en segundo plino®, En eb dltime, immediate otro conunido, Cann un proceso esti en ejecucion en el segundo plang ge Puede recibir entrudas directamente det tecludo, debido aque el shel/ esti utilizando este Fecurso, Por lo tanto, las operaclones de K/S son realizadas mediante archivos, 0 por medig do una interting de ratdn y ventanas, Mientras tanto, el usuario tiene In ibertad de pedir shel/ que cieente otros prageannas, que vigile el progreso del proceso que esti en ejecucién, due cambie ta prioridad del programa, ete, Cuando ef proceso se hat completado, ejecuts una Hamada al sistema ox Lt para terminar, devolviendo tn cédigo de 0 0 un eédigo de cero 0 que lo invocd, Kste eddligo de estado o error queda entonc cidn del intérprete o de otros programas, En el capitulo 4 se estudiardn los procesos, se ejecuta ef programa, Dependiendo de la forma en que ge 1 proceso o bien eject, 180, el shell solicita gy tracién de archivos 3.3.2. Admin estudiard con mayor detalle en el capitulo 11. Sin embargo, podemos identificar varias Hamadas al sistema comunes relacionadas con archivos, Primeramente necesitamos poder crear (create) y borrar (delete) archivo: Cual- quiera de estas Hamadas al sistema requiere el nombre del archivo y quiz de algunos de los atributos de éste. Un vex que se erea el archivo, necesitamos abritlo (open) y usarlo, ‘También tal vez queramos leer (read), escribir (write), o reposicionar (reposition) (rebobinar o ir hasta el final del archivo), por ejemplo. Finalmente, necesitamos ce- rrar (close) el archivo, indicando que ya no est en uso. Tal vez requerimos estos mismos eonjuntos de operaciones para directorios, si tenemos una estructura de directorios, para la organizacién en el sistema de archivos. Ademés, tanto para archivos como para directorios, precisamos determinar los valores de sus di versos atributos, y quizd restablecerlos en caso de ser necesario. Los atributos de un archivo incluyen el nombre, tipo, los eédigos de proteccién, la informacién contable, ete. Por lo menos se requieren dos amadas al sistema, una de ellas es get. file attribute yla olraes set file attribute, para esta funci6n. Algunos sistemas operativos proporcionan otras Hamadas adicionales. EI sistema de archivos s 3.3.3. Administracién de dispositivos Un programa, al estar en ejecucién, tal vez necesite recursos adicionales para continuat. Estos pueden ser mas memoria, unidades de cinta, acceso a archivos, etc. Si los recursos estin disponibles se pueden conceder, y devolver el control al programa del usuario; en caso contrario, el programa tendra que esperar hasta que se cuente con recursos suficientes, Los archivos pueden considerarse como dispositivos abstractos o virtuales. De esta forma, muchas de las llamadas al sistema en el caso de archivos también son necesarias para los dispositivos. Sin embargo, si existen varios usuarios del sistema, primero debemos solicitar (request) el dispositivo, para asegurar un uso exclusivo, Despucs Escaneado con CamScanner 3.3. Llamadasalsistema 6 1 que hayamos terminado con el dispositivo, debemos liberarlo (release). Estas funciones son similares a las Ilamadas open y close que se emplean para los archivos. Una vez que el dispositivo ha sido solicitado (y asignado al usuario), se puede leet (read), escribir (write) y posiblemente reposicionar (reposition), tal como sucede con archivos ordinarios. De hecho, la similitud entre los dispositivos de E/S y los archivos es tan grande que muchos sistemas operativos, incluyendo UNIX y MS-DOS, combinan Jos dos en una estructura mixta archivo-dispositivo. En este caso, los dispositivos de E/S se identifican mediante nombres especiales de archivos. 3.3.4. Mantenimiento de la informacién Muchas Iamadas al sistema existen s6lo con el fin de transferir informaci6n entre el pro- grama del usuario y el sistema operativo. Por ejemplo, la mayoria de los sistemas tienen una Tlamada para devolver la hora (time) y la fecha (date) actuales. Otras lamadas al siste- ma pueden devolver informacién acerca del sistema, como el nimero de usuarios actuales, el ntimero de versiGn del sistema operativo, la cantidad de memoria 0 el espacio libre en disco. Ademis, el sistema operativo mantiene informacién acerca de todos sus procesos, y existen amadas al sistema para acceder a esta informacién. Por lo general, también hay la- madas para restablecer la informacién del proceso (get process attributes y set process attributes). En la seccién 4.1.3, examinaremos cual es la informacién que nor- malmente se conserva. 3.3.5. Comunicacion Existen dos modelos comunes de comunicacién. En el modelo de paso de mensajes, la informaci6n se intercambia mediante un servicio de comunicacién entre procesos pro- porcionado por el sistema operativo. Antes de que tenga lugar una comunicaci6n, se necesita abrir una conexin; debe conocerse el nombre del otro comunicador, ya sea otro proceso en la misma CPU, 0 uno en otra computadora conectada por una red de comu- nicaciones. Cada computadora en una red tiene un nombre de anfitrién, como un nombre IP, con el cual es conocida comanmente. De manera similar, cada proceso tiene un nom- bre de proceso, que se traduce en un identificador equivalente mediante el cual el sistema operativo hace referencia a él. Las lamadas get hostid y get processid realizan esta traduccién. Luego, estos identificadores se transfieren a las llamadas de propésito ge- neral open y close proporcionadas por el sistema de archivos, 0 a las llamadas especificas del sistema open connectiony close connection, dependiendo del modelo de comu- nicaciones del sistema. El proceso receptor por lo general debe dar su permiso para que la comunicacién tenga lugar con una llamada accept connection, La mayorifa de los procesos que estardn recibiendo conexiones son demonios de propésito especial, los cuales son programas del sistema disefiados para tal fin. Pueden ejecutar una llamada para esperar conexién, wait for connection, y despertar cuando se hace una conexion. La fuente de la comunicacién, conocida como el c/iente, y el demonio receptor, conocido como servidor, intercambian mensajes mediante las llamadas read message y write mes- sage. La llamada close connection termina la comunicacién. Escaneado con CamScanner ©2 Capitulo 3. Estructuras de los sistemas operatives proceso A proven: 4 proceso B proceso B 1 kernel hernet ©) (@) comunicaciones. a) Paso de mensajes. b) Memoria compartida En el modelo de memoria compartida, los procesos utilizan las lamadas al sistema map memory para obtener acceso a regiones de memoria que corresponden a otros, procesos. Recuérdese que, normalmente, el sistema operativo trata de impedir que un pro- eso acceda ala memoria de otro. La memoria compartida requiere que dos o mas procesos estén de acuerdo en remover esta restriccién y entonces poder intercambiar informacién leyendo y escribiendo datos en estas areas compartidas. El formato de los datos y la ubica- cion de los mismos estan determinados por estos procesos y fuera del control del sistema operativo. Los procesos también son responsables de asegurar que no estén escribiendo simult4neamente en la misma ubicacion. Tales mecanismos se estudian en el capitulo 7. ‘También examinaremos una variante del modelo de proceso —hilos— que com-parte me- moria por omisi6n. Los hilos se cubriran en el capitulo S. Estos dos métodos son comunes en los sistemas operativos, y algunos sistemas incluso implementan ambos. El paso de mensajes es util cuando se necesita intercambiar canti- dades menores de datos, ya que no es necesario evitar conflictos. También es mas facil de implementar que el caso de la memoria compartida para comunicacién entre computadoras. La memoria compartida permite una maxima velocidad y ventajas de comunicacin, ya que se realiza a las velocidades de la memoria cuando esta dentro de una computadora. Sin embargo, existen problemas en las 4reas de proteccion y sincronizacién. Los dos modelos de comunicacién se comparan en la figura 3.5. En el capitulo 4, examinaremos una implementacién en Java de cada modelo. igura 3.5. Modelos de 3.4 m Programas del sistema Otro aspecto de un sistema moderno es el conjunto de programas del sistema. Recuerde Ja figura 1.1 que ilustraba la jerarquia logica de una computadora. En el nivel mas bajo se Escaneado con CamScanner 3.4. Programas del sistema 63 encuentra el hardware. Luego le sigue cl sistema operativo, después los programas del tema y por iiltimo los programas de aplicncién. Los programas del sistema proporcio- nan un entorno conveniente para el desarrollo y ejecucién de programas. Algunos de ellos son simplemente interfaces del usuario para Hamadas al sistema; otros son considera blemente mas complejos. Pucden dividirse en las eategorias siguientes: © Administracién de archivos: ¢ nombres, imp mas erean, borran, copian, asignan nuevos ite manipulan archivos y directorios. progt cian, listan y general men, va # Informacion de estado: algunos programas simplemente le preguntan al sistema a fecha, hora, cantidad de memoria disponible o de espacio en disco, nimero de usuarios, 0 informacién similar de estado. Dicha informacion recibe formato y se imprime en la terminal u otro dispositivo de salida 0 archivo. © Modificacién de archivos: pueden estar disponibles varios editores de texto para crear y modificar el contenido de archivos almacenados en disco 0 en cinta. © Soporte para lenguajes de programaciér::os compiladores, ensambladores e intérpretes para lenguajes de programacién comunes (C, C++, Java, Visual Basic y PERL) a menudo se proporcionan al usuario junto con el sistema operativo. La mayorfa de estos programas ahora tienen un costo y se distribuyen de manera separada. © Carga y ejecucién de programas: wna vex que wn programa se ensambla 0 compila, debe cargarse en la memoria para su ejecuci6n. El sistema puede proporcionar cargadores absolutos, cargadores relocalizables, editores de encadenamiento y cargadores de superposiciones (verdays). También se necesitan sistemas de depuraci6n para lenguajes de alto nivel o lenguaje de maquina. © Comunicaciones: estos programas proporcionan los mecanismos para crear conexio- nes virtuales entre procesos, usuarios y diferentes sistemas de cémputo. Permiten a os usuarios enviar mensajes a as pantallas de otros equipos, navegar por paginas web, enviar mensajes de correo electrénico, conectarse de manera remota, o transferir archivos de una maquina a otra. La mayoria de los sistemas operativos incluyen programas titiles para la solucién de problemas, o para la realizacién de operaciones comunes. Entre estos programas se tienen navegadores, procesadores y formateadores de texto, hojas de céllculo, sistemas de base de datos, compiladores, paquetes de graficacidn y andlisis estadistico, y juegos. Estos pro- gramas se conocen como utilerias del sistema o programas de aplicacién. Tal vez el programa del sistema mas importante en un sistema operativo es el in- térprete de comandos, cuya principal funci6n consiste en obtener y ejecutar et siguiente comando indicado por el usuario. Muchos de los comandos dadbs en este nivel son para manipular archivos: crear, borrar, listar, imprimir, copiar, ejecutar, ete. Existen dos formas generales para imple- mentar estos comandos. En un enfoque, el intérprete de comandos mismo contiene el cédigo para ejecutar el comando. Por ejemplo, un comando para borrar un archivo puede hacer que el intérprete de comandos salte a una seccién de su e6digo que prepara los pa~ rémetros y realiza la lamada apropiada al sistema. En este caso, el ntimero de comandos Escaneado con CamScanner 64 Capitulo 3 ructuras de los sistemas operatives iceptados determina el tamaio del intérprete de comandos, ya que cada instruccign Tequiere su propio cédigo de implementaciér Un enfoque alterno —empleado por UNIX, entre otros sistemas operativos— implementa la mayoria de los comandos mediante programas del sistema. En este caso, g| Intérprete no entiende el comando; simplemente lo utiliza pa jentificar un archivo cargar en la memoria y ej a forma, el comando de UNIX para borrar un archivo tar, De e rm G buscarfa un archivo denominado rm, to cargaria en la memoria, y lo ejecutarfa con el parg. metro G. La funcién asociada con el comando rm estaria definida completamente por | cédigo en el archivo r7. De esta forma, los programadores pueden agregar facilmente nuevos comandos al sistema, creando nuevos archivos con los nombres adecuados. E} programa del intérprete de comandos, que puede ser pequefio, no requiere cambios para agregar estos nuevos comandos. Existen problemas con este enfoque en el disefio del intérprete de comandos. Observe primeramente que si el cddigo para ejecutar un comando es un programa distinto, el sistema operativo debe proporcionar un mecanismo para pasar parametros del intérprete de ‘comandos al programa del sistema. Esta tarea no es dgil debido a que el intérprete de comandos y el programa del sistema tal vez no estén simultaneamente en la memoria, y la lista de pardmetros puede ser extensa. Asimismo, es mas lento cargar un programa y ejecutarlo que sélo saltar a otra seccién de cédigo dentro del programa actual. Otro problema es que la interpretacién de los parametros se deja al programador del programa del sistema. Asi, se pueden proporcionar parametros de manera inconsistente entre programas que parecen similares al usuario, pero que fueron escritos en momentos diferentes por mas de un programador. La visin del sistema operativo que tienen la mayoria de los usuarios esta definida porlos programas del sistema, més que por las Ilamadas reales al sistema. Tome por ejemplo una PC. Cuando la computadora esta ejecutando el sistema operativo Windows, un usuario podria ver una interfaz de Iinea de comandos del intérprete de MS-DOS, o la interfaz grafica de raton y las ventanas. Ambos emplean el mismo conjunto de Ilamadas al sistema, pero éstas se ven diferentes y actiian de forma distinta. En consecuencia, esta vision del usuario puede estar considerablemente separada de la estructura real del sistema. El disefio de una interfaz de usuario Gtil y amigable no es, por lo tanto, una funcién directa del sistema operativo. En este libro nos concentraremos en los problemas fundamentales de proporcionar un servi- cio adecuado a los programas de usuario. Desde el punto de vista del sistema operativo, no distinguimos entre programas de usuario y programas del sistema. m. Estructura del sistema Escaneado con CamScanner 3.5. Estructura del sistema 65 en lugar de tener un sistema monolitico, Cada uno de estos médulos deber4 ser una porcién bien definida del sistema, con entradas, salidas y funcién cuidadosamente definidas. Ya hemos ‘aminado de manera breve los componentes comunes de los sistemas operativos (seccién 3.1). Ahora, examinamos la forma en que estos componentes estan inter- conectados y combinados en un kernel. 3.5.1. Estructura simple Existen numerosos sistemas comerciales que no cuentan con una estructura bien definida. Tales sistemas operativos comenzaron como sistemas pequefios, sencillos y limitados, y luego crecieron mis alla de su alcance original. MS-DOS es un ejemplo de tales sistemas. Originalmente fue disefiado e implementado por unas cuantas personas que no tenian idea de que se volveria tan popular. Fue escrito para proporcionar la mayor funcionalidad en el menor espacio (debido al hardware limitado en el que se ejecutaba), por lo que no fue dividido con cuidado en médulos. La figura 3.6 muestra su estructura. En MS-DOS, las interfaces y los niveles de funcionalidad no estén bien separados. Por ejemplo, los programas de aplicacién pueden acceder a las rutinas basicas de E/S para escribir directamente en la pantalla y las unidades de disco. Tal libertad deja al MS- DOS vulnerable ante programas errantes (o maliciosos), provocando caidas de todo el sistema cuando fallan los programas del usuario. Por supuesto, MS-DOS también estaba limitado por el hardware de su época. Debido a que el procesador Intel 8088 para el cual fue escrito no proporciona modo dual ni proteccién de Aardware, los disefiadores de MS-DOS no tuvieron mds opcién que dejar accesible el hardware basico. Otro ejemplo de una estructuracién limitada es el sistema operativo UNIX original. UNIX es otro sistema que inicialmente estaba limitado por la funcionalidad del hard- ware. Esté compuesto de dos partes separables: el kernely los programas del sistema. El manejadores de dispositivo del MS-DOS ny 4] manejadores de dispositivo del ROM BIOS) Figura 3.6. Estructura de capas del MS-DOS Escaneado con CamScanner 66 . 7 Capitulo 3 Estructuras de los sistemas operativos kernel se divide en una serie de interfaces y manejadores de dispositive, que agregado y ampliado a lo largo de los aiios a medida que UNIX ha evolucionado. Pode” ver al sistema operativo UNIX tradicional como si estuviera formado por capas, com muestra en la figura 3.7. Todo lo que se encuentra debajo de la interfaz de llamadae 4 sistema y arriba del hardware fisico es el kernel. Este proporciona el sistema de archivos la planificacion de la CPU, la administ funciones del siste, ma operativo por medio de Hamadas al sistema. ‘Tomado en conjunto, esto represents una enorme cantidad de funcionalidad para combinarse en un solo nivel. Los programas del sistema utilizan las Hamadas al sistema soportadas por el kernel para proporcionar funciones titiles, como compilacién y manipulacion de archivos. Las llamadas al sistema definen a la interfaz del programador de aplicaciones (API) para UNIX; el conjunto de programas del sistema disponible comémmente define a la interfaz del usuario. Las interfaces del programador y del usuario definen el contexto al que el kernebrinda soporte. Las nuevas versiones de UNIX estan disefiadas para usar hardware mas avanzado. Dado un adecuado soporte de hardware, los sistemas operativos pueden descomponerse en piezas mas pequefias y apropiadas que en los sistemas originales MS-DOS 0 UNIX. El sistema operativo puede, entonces, tener un mayor control sobre la computadora y sobre las aplicaciones que hacen uso de la misma. Los disefiadores tienen mayor libertad para hacer cambios al funcionamiento interno del sistema y en la creacién de sistemas operativos modulares. Bajo el enfoque descendente, la funcionalidad y caracteristicas globales estén determinadas y separadas en componentes. También es importante ocultar informacién, ya que les da a los programadores la libertad de implementar las rutinas de bajo nivel que consideran apropiadas, siempre y cuando la interfaz externa de la rutina permanezca sin modificacién y que la ratina misma realice la tarea anunciada. jon de la memoria y otr: OO (usuarios) shells y comandos compiladores e intérpretes bibliotecas del sistema interfaz de lamadas al sistema con el kernel manejo de sefiales —sistemade archivos _planificacién de de terminal sistema de E/S de la CPU sistema de E/S intercambio —_reemplazo de paginas| por caracter de bloques por paginaciér por manejadores de manejadores de discos demanda terminales y de cintas memoria virtual & interfaz del kernel con el hardware controladores de manejadores de terminales dispositivo terminates discos y cintas controladores de memoria memoria fisica : Figura 3.7. Estructura del sistema UNIX Escaneado con CamScanner 3.5. Estructura del sistema 67 3.5.2. Enfoque por capas La modularizacién de un sistema puede hacerse de muchas formas; un método es el enfoque por capas, en el que el sistema operativo se descompone en varios estratos (aiveles), cada uno de ellos construido sobre capas inferiores. La capa inferior (capa 0) es el hardware; \a mas alta (capa N) es la interfaz del usuario. Una capa del sistema operativo es una implementaci6n de un objeto abstracto, que es el encapsulamiento de datos y de las operaciones que pueden manipular dichos datos. Una capa tipica del sistema operativo —digamos la capa A/— se ilustra en la figura 3.8. Esté compuesta de estructuras de datos y un conjunto de rutinas que pueden ser invocadas por capas de mayor nivel. Esta capa, a su vez, puede invocar operaciones en capas de menor nivel. La principal ventaja del enfoque por capas es la modularidad. Las capas se seleccionan de tal manera que cada una utilice funciones (operaciones) y servicios exclu- sivamente de capas de niveles inferiores. Este enfoque simplifica la depuracién y la verificacién del sistema. La primera capa puede ser depurada sin preocuparse por el resto del sistema, ya que, por definicién, s6lo utiliza el Aardsware basico (que se supone correcto) para implementar sus funciones. Una vez que se depura la primera capa, se puede suponer que su funcionamiento es correcto mientras se depura la segunda, y asi sucesivamente. Si se encuentra un error durante la depuracién de una capa particular, el error debe estar en dicha capa, debido a que las que estan debajo de ella ya estan depuradas. Ast, el disefio e implementacién del sistema se simplifica cuando esta integrado por capas. Cada capa se implementa séio con aquellas operaciones proporcionadas por capas de nivel inferior. Una capa no necesita saber como estan implementadas estas operaciones; s6lo requiere conocer qué hacen tales operaciones. Por lo tanto, cada capa oculta alas ca- pas de nivel superior la existencia de ciertas estructuras de datos, operaciones y hardware. La principal dificultad en el enfoque por estratos radica en la definicion apropiada de las diversas capas. Debido a que una capa solo puede usar aquellas que se encuentran en operaciones nuevas operaciones, ocultas operaciones existentes Figura 3.8. Una capa de sistema operativo Escaneado con CamScanner 68 Capitulo 3 Estructuras de los sistemas operativos un nivel inferior, es necesaria una planeaci6n cuidadosa. Por ejemplo, el Manejador q, dispositivos para el almacén de respaldo (cl espacio de disco utilizado por log 41° ritmos de memoria virtual) debe estar en un nivel inferior que el de las rut administracién de la memoria, debido a que esta administracida requ usar e} almacén de respaldo. : i f an obvios. El controls alive Otros requerimientos tal ver no sean t lador del almacén ge respaldo normalmente estaria arriba del planifiendor de la CPU, debido a que tal yee necesite esperar a las operaciones de E/S, y In CPU a volver a planificarse durante este tiempo. Sin embargo, en los sistemas grandes, el planificador de la CPU pu més informacién acerea de todos los procesos activos que pueden caber en la memoria, Por lo tanto, esta informacién tal vez necesite ser intercambiada hacia y desde la memo: ria, requiriendo que la rutina del controlador del almacén de respaldo esté debajo del planificador de la CPU. | : : Un problema final con las implementaciones por capas es que tienden a ser menos eficientes que otros tipos. Por ejemplo, cuando un programa de usuario ejecuta una opera. cién de £/S, ejecuta una llamada al sistema que activa una trampa que se comunica ala capa de E/S, que llama a la capa de administracién de memoria, la cual, a su vez, llama ala capa de planificacién de la CPU, que luego es pasada al hardware. En cada estrato, pue- den modificarse los parémetros, tal vez se requiera pasar datos, etc. Cada capa agrega un trabajo adicional a la llamada original; el resultado neto es que esta llamada toma mis tiempo que en una de un sistema sin capas. En afios recientes, estas limitaciones han provocado un retroceso en el disefio por capas. Se estan disefiando menos capas, pero con mayor funcionalidad, proporcionando Ta mayoria de las ventajas del cddigo modularizado y evitando al mismo tiempo los dificiles problemas de definicién e interaccién. Por ejemplo, OS/2 es un descendiente de MS-DOS que agrega multitarea y operaci6n en modo dual, asi como otras caracteristicas nuevas. De- bido a esta complejidad adicional y al Aardware mas poderoso para el que se disefié OS/2, el sistema se implementé en una forma mAs orientada a capas. Compare la estructura de MS-DOS con la que se muestra en la figura 3.9; tanto desde el punto de vista del disetio de sistemas como de su implementacién, OS/2 tiene la ventaja. Por ejemplo, no esta permi- tido el acceso directo del usuario a los servicios de bajo nivel, dando al sistema operativo ma- yor control sobre el hardware y un mayor conocimiento acerca de los recursos en uso pot cada programa de usuario. Como un ejemplo adicional, considere la historia de Windows NT. La primera version tenia una organizacién altamente orientada a capas. Sin embargo, esta version ofrecia un bajo rendimiento en comparacin con Windows 95. Windows NT 4.0 solucioné Parcialmente el problema de rendimiento moviendo capas del espacio de usuario a la zona del kernel, e integrandolas mas estrechamente. 8 de Ta capacidad par de tener 3.5.3. Microkernels A medida que se amplié UNIX, el kerne/se volvié grande y dificil de manejar. Amediados de la década de 1980, investigadores de la Universidad de Carnegie Mellon desarrollarot un sistema operativo denominado Mach, en el que se modularizé el kerne/empleando él Escaneado con CamScanner 3.5. Estructura del sistema § 69 aplicacién| aplicacion aplicacién Interfaz para programaclén do aplieacione: extension API subsistema | | subsistema E subsistema kernel del sistema + administracién de la memoria ‘= despacho de tareas = administracién de dispositivos| SS SS Figura 3.9. Estructura en capas del sistema OS/2 enfoque microkernel. Este método estructura al sistema operativo removiendo todos los componentes no esenciales del kernel, e implementandolos como programas del sistema y de nivel de usuario. El resultado es un Kerne/ mas pequeiio. No hay mucho consenso con relaci6n a cudles servicios deben permanecer en el kerne/y cuales deben implementarse en el espacio del usuario. En general, sin embargo, los microkernels tipicamente propor- cionan una administracién minima de los procesos y de la memoria, ademis de un servicio de comunicaciones. La funcién principal del microkernel es proporcionar un médulo de comunicaciones entre el programa cliente y los diversos servicios que también estn ejecutindose en el espacio del usuario. La comunicacién se proporciona mediante el paso de mensajes, que se describio en la seccién 3.3.5. Por ejemplo, si el programa cliente desea acceder a un archi- vo, debe interactuar con el servidor de archivos. E] programa cliente y el servicio nunca interacttian de forma directa; mds bien, se comunican indirectamente intercambiando mensajes con el microkernel. Los beneficios del enfoque microkernel incluyen la facilidad de extender el sistema operativo. Todos los servicios nuevos se agregan al espacio del usuario y, en consecuencia, no requieren modificacion del kernel. Cuando éste tiene que modificarse, los cambios tienden a reducirse, debido a que el microkernel es un kernel mas pequefo. El sistema operativo resultante es mas facil de portar de un disefio de Aardwarea otro. El microkernel también proporeiona mayor seguridad y confiabilidad, ya que la mayorfa de los servicios estin ejecutindose como procesos de usuario —més que como procesos de kerne/. Si un servicio falla, el resto del sistema operativo permanece intacto. Escaneado con CamScanner 70 it Capitulo 3 Estructuras de los sistem, 185 Operatives Figura 3.10, Estructu: 4 cliente-servidor de Windows NT . Digit i2y Sistemas operativos contemporéneos han X proporciona al usuario una interfar UNIX sobre un kernel Mach. Las Il ado el enfoque microkernel usuario Pero que esta implom u h armada al sistema de UNIX son convertidas por Mabe ‘opiados a ni E Mae0$ x seat 2205 Servicios ap nivel de usuario. El sistema operative Macos x cl paso de mensajes entre las aplicaciones cliente y los servidores de aplicaciones. La estructura cliente-servidor de Windows NT se ilustra en la figura 3.10. 3.6 m Maquinas virtuales Conceptualmente, un sistema de computo esta formado por capas. El hardware es el nivel més bajo en todos estos sistemas. El kernel, que se ejecuta en el siguiente nivel, ut- liza las instrucciones de Aardware para crear un conjunto de lamadas al sistema para uso de las capas exteriores. Los programas del sistema arriba del kerne/ pueden, pot lo tanto, usar Ilamadas al sistema o bien instrucciones de hardware, y de alguna forma n0 distinguen entre estas dos. Asi, aunque su acceso es de manera diferente, ambas propor cionan una funcionalidad que el programa puede emplear para crear, incluso, funciones més avanzadas. Los programas del sistema, a su vez, tratan las Ilamadas al Aardwarey al sistema como si ambos estuvieran en el mismo nivel. bs Algunos sistemas llevan este esquema un paso mas adelante Permitiendo tore programas del sistema sean invocados facilmente por los programas de aplicaciones. i i rior aunque los programas del sistema se encuentran en un nivel supel és ‘odo lo que esti debaj Este enfoque por tema tual, mo ya se mencioné, sister alde las demés rutinas, los programas de aplicacion pueden ver t de ellos en la jerarquia como si fueran parte de la maquina misma. Este enous pas se lleva 2 su conclusién légica en el eoneepto de maquina vir ree operativo VM para los equipos IBM es el mejor ejemplo del concepto debido a que IBM fue pionera en el trabajo en esta 4rea. Escaneado con CamScanner 3.6. Méquinas virtuales 71 Mediante la planificacién de la CPU (capitulo 6) y las téenicas de maquina virtual (capitulo 10), un sistema operativo puede erear la ilus pio procesador con su propia memoria (virtual). Por n de que un proceso tiene su pro- puesto, el proceso normalmente tiene caracteristicas adicionales, como Ilamadas al sistema y un sistema de archivos, las cuales no son proporcionadas por el hardware en si. Hl enfoque de maquina virtual, por otra parte, no incluye alguna fuacionalidad adicional, sino que ms bien proporciona una interfaz que es édéntica al hardware simple que csté en la base. A cada proceso se le pre- senta una copia (virtual) de la computadora particular (figura 3.11). La computadora fisiea comparte recursos para crear a las maquinas virtuales. La planificacion de la CPU puede compartir la CPU para crear la apariencia de que los usuarios tienen sus propios procesadores. La operaci6n periférica simultanea en linea (spooling) y el sistema de archivos pueden ofrecer lectoras de tarjetas virtuales e impresoras de li- neas virtuales. Una terminal normal de usuario con tiempo compartido proporciona la funcién de la consola del operador de la maquina virtual. Una dificultad importante con el enfoque de maquina virtual tiene que ver con los sistemas de discos. Suponga que la maquina fisica tiene tres unidades de disco, pero quiere dar soporte a siete maquinas virtuales; obviamente, no puede asignar una unidad a cada méquina. Recuerde que el software mismo de la méquina virtual necesitar4 un espacio considerable en disco para la memoria virtual y spooling. La solucion consiste en pro- porcionar discos virtuales, que son idénticos en todos los aspectos excepto por el tamafio —denominados minidiscos en el sistema operativo VM. El sistema implementa cada minidisco asignando tantas pistas en los discos fisicos como sea necesario. Obviamente, la suma del tamajio de todos los minidiscos debe ser menor que la magnitud del espacio fisico disponible en disco. procesos procesos procesos procesos interfaz para —" 7 Programacién kernel implementacién de maquina virtual hardware hardware (a) ® Figura 3.11. Modelos de sistemas. a) Méquina no virtual.) Méquina virtual Escaneado con CamScanner 72 Capitulo 3 Estructuras de los sistemas operativos ‘Alos usuarios se les dan sus propias maquinas virtuales. Luego pueden ejecutar cua} de Ios sistemas operativos o paquetes de software disponibles en la maquina pas tiene caso del sistema VM, un usuario normalmente ejecuta el CMS —un sistema operativo intera, Nel para un solo usuario. El software de Ia maquina virtual se ocupa de la multiprogramacién gy itiples méquinasvirtuales en una maquina fisiea, ero ne eo ‘considerar sofiwarealgins de soporte al usuario. Este arreglo puede proporeiona? Wilt divisién dtl, en dos partes mag pequefias, para el problema de disefar un sistema interactivo multiusuario, 3.6.1. Implementacién neepto de maquina virtual, es dificil de implementar. Se requiere ‘mucho trabajo para proporeionar un duplicado exacto de la maquina particular utilizada, Reeuerde que la maquina particular presenta dos modos: de usuario y de monitor, g) software de la miquina virtual puede ejecutar en modo de monitor, ya que es el sistema operative, pero la maquina virtual sélo puede ejecutar en modo de usuario, Sin embargo, asi como la maquina fisica tiene dos modos, también debe tenerlos la maquina virtual, En consecuencia, debe existir un modo de usuario virtual y uno de monitor virtual, y los dos ejecutarse sobre un modo de usuario fisico. Aquellas acciones que ocasionan tna transferencia de modo de usuario al de monitor en una maquina real (como una llamada al sistema o un intento de ejecutar una instruccién privilegiada) también deben ocasionar tuna transferencia del modo de usuario virtual al de monitor virtual en una maquina virtual, En general, esta transferencia puede hacerse facilmente. Por ejemplo, cuando el programa en una méquina virtual, en modo de usuario virtual, hace una Hamada al sis tema, ocasiona una transferencia al monitor de méquina virtual en la maquina real. Cuando el monitor de la maquina virtual obtiene el control, puede cambiar el contenido de los registros y el contador de programa de la maquina virtual, para simular el efecto della Ila- mada al sistema. Luego puede reiniciar la maquina virtual, notando que ahora esta en modo de monitor virtual. Si después, por ejemplo, la maquina virtual intenta leer su lec- tora virtual de tarjetas, ejecutaré una instruccién de E/S privilegiada. Debido a que la maquina virtual esta en modo de usuario fisico, esta instruccién activard una trampa que se comunica al monitor de la maquina virtual. El monitor de la maquina virtual debe en- tonces simular el efecto de la instruccién de E/S. Primero, encuentra en el spoo/el archivo que implementa la lectora virtual de tarjetas. Después, traduce la lectura de la lectora virtual de tarjetas a una lectura a ese archivo en disco, y transfiere la siguiente “imagen de tarjeta” virtual a la memoria virtual de la mAquina virtual. Finalmente, puede reiniciar la maquina virtual. El estado de la maquina virtual ha sido modificado exactamente com0 sila instruccién de E/S se hubiera ejecutado con una lectora de tarjetas real para la ma- quina real que esta ejecutando en modo de monitor real. La principal diferencia, por supuesto, es el tiempo. En tanto que la operacién de E/S real podria tomar 100 milisegundos, la operacién de E/S virtual podria requerir menos tiempo (debido a que esté en spoo/) 0 mas tiempo (debido a la interpretacion descrita)- Ademés, JaCPU esta siendo multiprogramada entre muchas maquinas virtuales, haciendo yin més lentas a éstas en forma impredecible. En el caso extremo, tal vez sea necesati Aunque es titil el co Escaneado con CamScanner 3.6. Méquinasvirtuales 73 simular todas las instrucciones para proporcionar una maquina virtual verdadera. VM funciona en el caso de las maquinas IBM debido a que las instrucciones normales para las maquinas virtuales pueden ejecutarse directamente sobre el hardware. Solo se simulan as instrucciones privilegiadas (necesarias principalmente para operaciones de E/S) y, por lo tanto, se ejecutan con mas lentitud. 3.6.2. Beneficios El concepto de maquina virtual tiene varias ventajas. Observe que, en este ambiente, se tiene una proteccién completa de los diversos recursos del sistema. Cada maquina virtual esté aislada por completo de todas las demés, por lo que no hay problemas de seguridad. Por otra parte, no se comparten recursos directamente. Se han implementado dos enfoques para proporcionar la accién de compartir. Primero, es posible compartir un minidisco. Este esquema se modela sobre un disco fisico compartido, pero se implementa mediante software. Con esta técnica, los archivos se pueden compartir. En segundo lugar, se puede definir una red de méquinas virtuales, cada una de las cuales envia informacién sobre la red de comunicaciones virtual. Como se indicé, la red se modela sobre redes de comunicaciones fisicas, pero se implementa en software. Tal sistema de méquina virtual es un vehiculo perfecto para la investigacién y desarrollo de sistemas operativos. Normalmente, el cambio de un sistema operativo es una tarea dificil. Debido a que los sistemas operativos son programas grandes y com- plejos, es dificil asegurar que el cambio en una parte no provocaré errores raros u oscuros en alguna otra. Esta situacin es en particular peligrosa debido al poder del sistema ope- rativo. Puesto que el sistema operativo ejecuta en modo de monitor, un cambio incorrecto en un apuntador podria ocasionar un error que destruyera todo el sistema de archivos. Por lo tanto, es necesario probar con cuidado todos los cambios al sistema operativo. EI sistema operativo, sin embargo, corre sobre toda la maquina y la controla. Por lo tanto, el sistema actual debe detenerse y quedar fuera de uso mientras se realizan y prue- ban los cambios. Este periodo se conoce cominmente como tiempo de desarrollo de sis- temas. Debido a que el sistema deja de estar disponible para los usuarios, el tiempo de desarrollo se programa en la noche o durante los fines de semana, cuando la carga del sis- tema es baja. Un sistema de mAquina virtual puede eliminar gran parte de este problema. A los programadores de sistemas se les da su propia maquina virtual, y el desarrollo se hace en ella, en lugar de efectuarse en una maquina fisica. Ast, la operacién normal rara vez nece~ sita alterarse para el desarrollo de sistemas. . A pesar de estas ventajas, s6lo recientemente se ha mejorado un poco esta técnica. Las maquinas virtuales vuelven a estar de moda como un medio para solucionar proble- mas de compatibilidad entre sistemas. Por ejemplo, existen miles de programas dispo- nibles para MS-DOS en los sistemas basados en los procesadores de Intel. Algunos proveedores de computadoras, como Sun Microsystems y Digital eae oe tion, emplean otros procesadores mas rapidos, pero les gustaria que sus ¢ ee eran ejecutar esos programas de MS-DOS. La soluci6n consiste en crear una maq Escaneado con CamScanner 74 Capitulo 3 Estructuras de los sistemas operativos ae cat sobre el procesador native, Un progr pee * instrueciones Intel se traducen al conjunto de instrueciones nati ieee jeeuta en esta maquina virtual, por lo que el programa puede hacer sy lamadas al sis en forma normal, aque parece estar diferente. Si el procesador es lo sufici mlemente ri M: “DOS se gent ido, el program tard muy rapido, aun cuando cada instruceién estésiendo traducids instruceiones nativas para su ejecueién imilar, el Apple Macinto do con el Py werPe ineluye una méqui | Motorola 68000 para permitir la ejecucion de eédigos josh bi binarios que fueron eseritos para la anterior Ma jen dicho dispositive, Desa fortunadamente, entre mas compleja sea la wviquina que se esté emulando, mas dificil eg construir una maquina virtual exacta, ademés de que dicha maquina virtual funciona con mas lentitud. Una de las earacte’ clave de la plataforma Java es que se ejecuta en una maquina virtual. La teenologi xaminan en la sie guiente seccién. ava y la maquina virtual Java 3.7 m Java Java es una tecnologia introducida por Sun Microsystems a finales de 1995. Se hace referencia a Java como una ¢ecnologia més que como un simple lenguaje de programa- cién debido a que proporciona mas elementos que un lenguaje convencional. La tecnologia Java consta de tres componentes esenciales: 1. Especificacin de lenguaje de programacién. 2. Interfaz para programacién de aplicaciones (API). 3. Especificacion de maquina virtual. Acontinuaci6n se presenta un panorama general de estos tres componentes. 3.7.1. Lenguaje de programacién Ellenguaje Java puede caracterizarse mejor como un ienguaje de programacién multihilos, orientado a objetos, distribuido e independiente de la arquitectura. Los objetos Java se ecifican con la construccién class; un programa Java consta de una o mas clases. ) de satida en cddigo esp E Por cada clase Java, el compilador Java produce un archivo (.class de bytes (ytecode) independiente de la arquitectura, que se correra en ee implementacién de Ja maquina virtual Java (JVM). Java recibié originalmente los fa ". res de la comunidad de programacién de Internet debido a su soporte a los applets, at a recursos y que se ejecutan dentro de un naveg a soporte de alto nivel para trabajo en red y para ifica que un programa Java 1 capitulo 15 cubrimos los ‘sof programas con un acceso limitado dor para red. Java también proporciona sop¢ vel objetos distribuidos. Es un lenguaje multihilos, lo que signit puede tener varios hilos diferentes, 0 flujos, de control. En el Escaneado con CamScanner 3.7. Java 75 objetos distribuidos empleando la invocacién de métodos remotos (RMI) de Java, yen el capitulo 5 examinamos los programas Java multihilos. Java es considerado un lenguaje seguro. Esta earacteristica es en especial importante considerando que un programa puede estarse ejecutando en una red distribuida. En el capitulo 19 examinaremos Ia seguridad de Java, Java también administra la memoria de manera automitica realizando una recoleccién de basura: la practica de reclamar me- moria a objetos que ya no estiin en uso y devolverla al sistema 3.7.2. Interfaz para el programador de aplicaciones La interfaz para el programador de aplicaciones (Application Programmer Interface, AP1) para Java consta de una API basica y una extension API estandar. La API basica propor- ciona soporte en lenguaje bisico para graficar, E/S, servicios y redes. Ejemplos de la APT basica son java.lang, java.awt, java.io y java.net. Laextension estandar API incluye soporte para empresas, comercio, seguridad y medios. A medida que el lenguaje evoluciona, muchos paquetes que alguna vez fueron parte de la extension API estandar se estan volviendo parte de la API basica. 3.7.3. Maquina virtual La maquina virtual Java (Java Virtual Machine, JVM) es una especificaci6n para una computadora abstracta. La JVM consta de un cargador de clases y un intérprete de Ja~ va que ejecuta los cédigos de bytes independientes de la arquitectura. El cargador de clases carga archivos .class tanto desde el programa Java como desde la API, para su ejecucién por el intérprete de Java. Este intérprete puede ser un programa que descifra Jos eddigos uno a la vez, o puede ser un compilador justo a tiempo (just-in-time, JIT) que convierte dichos cédigos al lenguaje de méquina nativo de la computadora anfitrio- na, En otros casos, el intérprete puede integrarse en un cireuito (chip) de hardware que ejecuta los cédigos de Java de manera nativa. La JVM se presenta en la figura 3.12. La plataforma Java consta de la JVM y la API de Java, y se muestra en la figura 3.13. Laplataforma puede implementarse sobre un sistema operativo anfitrién, como UNIX 0 Windows; como parte de un navegador de red, o en hardware. archivos.class\) API Java cargador 14. declases_|* intérprete de Java sistema anfitrién}, Figura 3.12. La maquina virtual Java Escaneado con CamScanner 76 — Capitulo 3 Estructuras de los sistemas operativos programa |) programa programa | programa de Java de Java do Java do Java plataformal) plataforma plataforma plataforma| do Java do Java Windowa navegador Figura 3.13. La plataforma Java Siempre que se corre una aplicacion Java o applet se erea una instancia de la JVM, Esta instancia comienza a ejecutarse cuando se invoca el método main() de un progra- ima, Esto también se aplica a los applets, aun cuando el programador no define un main(), Eneste caso, el navegador ejecuta el métodomain() antes de crear el applet. Si ejecutamos simulténeamente dos programas Java y un applet Java en Ja misma computadora, ten- dremos tres instancias de la JVM. La plataforma Java es la que hace posible desarrollar programas que son independientes de la arquitectura y, por tanto, transportables. La implementaci6n de la plataforma es especifica al sistema, y hace una abstraccion de él en una forma estandar al programa Java, proporcionando una interfaz limpia e independiente de la arquitectura. Esta interfaz permite que un archivo .class se ejecute en cualquier sistema donde se hayan implementado la JVM y la API, como se muestra en la figura 3.14. La implemen- taciOn de la plataforma Java implica desarrollar una JVM y una API para cada sistema distinto (como Windows 0 UNIX), segiin la especificacion para la JVM. Alo largo de este texto empleamos la JVM para ilustrar conceptos sobre los sistemas operativos. Hacemos referencia a la especificacién de la JVM, mas que a alguna otra implementacién particular. plataforma |. Ide hardware en circuito de Java plataforma de Java en Windows: plataforma |) plataforma de Java en MacOS en UNIX Figura 3.14. Archivo .class de Java en plataformas cruzadas Escaneado con CamScanner Disefio e implementacién del sistema 77 3.8. progajava prog java entorno en tiempo de compilacion [prog2.class progt.class| los cédigos de bytes se mueven a través del sistema de archivos locales o de la red argador do] arenives . clases oleae | entorno en tiempo de ejecucion I para aei| | rtatorma Java) inproe ovova sistema anfitrién Figura 3.15. Entorno de desarrollo de Java 3.7.4. Ambiente de desarrollo Java Elambiente de desarrollo Java consta a su vez de un ambiente para tiempo de compilacion y otro para tiempo de ejecucién. El ambiente para tiempo de compilacién convierte un archivo fuente Java en un c6digo de bytes (archivo .class). El archivo fuente Java puede ser un programa o bien un applet. El ambiente para tiempo de ejecucién es la platafor- ma Java para el sistema anfitrién. Este ambiente de desarrollo se ilustra en la figura 3.15. 3.8 m Disefio e implementacién del sistema En esta seccién examinamos los problemas que se enfrentan al disefiar e implementar un sistema. Por supuesto, no existen soluciones completas a estos problemas de disefio, pero se tienen algunos enfoques que han tenido éxito. 3.8.1. Objetivos de diseho El primer problema al disefiar un sistema consiste en definir sus objetivos y especificaciones. En el nivel més alto, el disefio estar4 afectado por la eleccién del hard- warey el tipo de sistema: por lotes, de tiempo compartido, de usuario tinico, multiusuario, ido, de tiempo real o de propésito general. distrib Escaneado con CamScanner 78 Capitulo3 . Estructuras de Jos sistemas operatives Mas alld de este nivel, los requerimientos pueden ser mucho més dificth Pecificar. Estos requerimientos pueden divi usuario y objetivos del sistema, Los usuarios desean ciertas propiedades obvias en un sistema: debe ser conv facil de usar, facil de aprender, confiable, seguro y rapido. Por supuesto, no son particularmente iitiles en el disefio del acerca de cémo aleanzar estos objetivos. Un conjunto similar de requerimientos puede ser definido por aquellas personas qu disefiar, crear, mantener y operar el sistema: el sistema operative debe ser faci implementar y mantener; debe ser flexible, confiable, libre de errores y efi Tequerimientos son vagos y no tienen una solucién general. No existe una solucién tinica para el problema de definir los requerimientos de un sistema Operativo. La amplia gama de sistemas muestra que los diferentes requerimientos pueden dar por resultado una gran variedad de soluciones para ambientes distintos. Por ejemplo, log Tequerimientos para MS-DOS, un sistema de un solo usuario para microcomputadoras, deben haber sido muy diferentes de los del MVS, el sistema operativo multiusuario y multiacessy para las mainframes de IBM. ) La especificacion y disefio de un sistema operativo es una tarea altamente creativa, Aun cuando ningiin libro de texto dice cémo hacerlo, si existen principios generales, desarrollados por el campo de la ingenieria de software, que son aplicables en especial a los sistemas operativos. 1 de oy, se en dos grupos bésicos: objetiiny ye 0 one, istema, ya que no existe un acuerdo gen 3.8.2. Mecanismos y politicas Un principio importante es la separacion entre una politica y un mecanismo. Los mecanismos determinan cémo hacer algo; las politicas determinan gué se hard. Por ejemplo, la construccién del temporizador (ver la seccin 2.5) es un mecanismo para asegurar la proteccién de la CPU, pero la decisin acerca de cuanto tiempo se debe ajustar en el temporizador para un usuario particular esta relacionada con una politica. La separacién entre politica y mecanismo es importante por cuestiones de flexibilidad. Las politicas probablemente cambiardn de un lugar a otro o con el paso del tiempo. Enel peor de los casos, cada cambio en Ia politica requeriria un cambio en el mecanismo par- ticular. Seria mas deseable un mecanismo general; asi, un cambio en la politica requeriria, entonces, s6lo la redefinicién de ciertos parametros del sistema. Por ejemplo, si en un sistema de cémputo se toma una decision con la politica de que los programas con uso intenso de E/S deberdn tener prioridad sobre aquéllos con uso intenso de la CPU, enton- ces se podria instituir cor: facilidad la politica opuesta en algin otro sistema de cémputo, si e] mecanismo estuviera separado adecuadamente y fuera independiente de la politica. Los sistemas operativos basados en microkernel llevan la separacion del mecanismo y lapolitica a un grado extremo, implementando un conjunto basico de bloques de construccién primitivos. Estos bloques estan casi libres de politicas, permitiendo agre- gar mecanismos y politicas mas avanzados via médulos kerme/creados por el usuario, 0 por medio de los programas de usuario. En el otro extremo se encuentra un sistema como ¢! Mi Escaneado con CamScanner 80 capitulo Estructura de os sistemas operativos los sistemas Operatives son grandes, s6lo una pequeiia parte de su codigo es factor ej. {co para aleanzar un alto desempeio; el administrador dela memoria y el planificador de, CPU son, posiblemente, las rutinas més erfticas. Después de que se ha escrito el sistema std funeionando correctamente, se pueden identificar rutinas que crean cuellos de botelta, Para sustituirlas con equivalentes en lenguaje ensamblador. Para identificar los cucllos de botella, debemos ser capaces de monitorear el desem, Pefio del sistema, Se debe cédigo para el cilculo y despliegue de mediciones del comportamiento del sistema. sssos, el sistema operativo realiza esta tares, Produciendo listados con el registro del comportamiento del sistema. Todos los events, interesantes se registran en wna bitéic ndo en qué momento ocurren y parame, tros significativos, y este registro se escribe en un archivo, Posteriormente, un programa de anslisis procesa el archivo de la biticora para determinar el grado de desempero de} sistema, identificando cuellos de botella e ineficiencias. Estos mismos registros o ras. treos pueden ejecutarse como entrada para la simulacién de un sistema mejorado que se esté proponiendo, Los rastreos también pueden ayudar a encontrar errores en el com. portamiento del sistema operativo. Una alternativa consiste en ealcular y desplegar la medicion del desempeiioen tiempo real. Por ejemplo, un temporizador puede activar una rutina para almacenar el valor ae. tual del apuntador de instruccién. El resultado es una imagen estadistica de las localide. des del programa que se utilizan con mayor frecuencia dentro del mismo. Este enfoque Puede permitir a los operadores del sistema familiarizarse con su comportamients y modificar la operacién en tiempo real. 3.9 m Generacién del sistema Es posible disefiar, codificar e implementar un sistema operativo especificamente para una maquina en un sitio. Sin embargo, los sistemas se disefian para ejecutar en cual. quier maquina de una cierta clase, de en una variedad de sitios distintos y con diversas configuraciones de periféricos. El sistema debe entonces configurarse o generarse para cada instalacién especifica, en un proceso que se denomina generacién del sistema (SYSGEN). El sistema operativo normalmente se distribuye en disco o cinta. Para generar un sistema empleamos un programa especial. El programa SYSGEN lee un archivo dado y pide al operador del sistema informacién relacionada con la configuracién especifica del sistema de hardware, 0 prueba el hardware directamente para determinar qué com- ponentes existen. Se deben determinar las siguientes clases de informacion. © éQué CPU se va a usar? éQué opciones (conjuntos de instrucciones extendidas, aritmética de punto flotante, etc.) estan instaladas? En el caso de sistemas con varios procesadores se debe describir cada uno de ellos. éCudnta memoria esta disponible? Algunos sistemas determinan este valor haciendo referencia a cada una de las localidades de memoria, incrementando el nimero de Escaneado con CamScanner 3.10. Generacién del sistema 81 ocalidades hasta que se genere una falla por “direccién ilegal”. Este procedimiento define la direccién real final y, por lo tanto, la cantidad de memoria disponible. fn disponibles? El sistema necesitaré saber como direccionar rode dispositivo), st nimero de interrupei6n, el tipo y modelo mo. # Qué dispositivos es cada dispositivo (el nia del dispositivo y cualqui caracteristien especial del n, o qué valores de pardmetros se van a ntidad y tamafio de los buffers que CPU deseado, el namero # €Qué opciones del opera usar? Estas opciones o valores ineluyen la deberdin usarse, el tipo de algoritmo de planificacion de | maximo de procesos permitidos, eteétera. ema tivo se desi Una vez que se determina esta informacién, se puede usar de varias formas. En un extremo, un administrador del sistema puede emplearla para modificar una copia del c6- digo fuente del sistema operativo. Luego se compila por completo el sistema operativo. Las declaraciones de datos, los valores iniciales y las constantes, junto con la compila- cién condicional, producen como salida una versién objeto del sistema operativo, la cual se adapta al sistema descrito. En un nivel ligeramente menos personalizado, la descripcion del sistema puede originar la creacién de tablas y la seleccin de médulos en una biblioteca compilada pre- mente. Estos médulos se enlazan para generar el sistema operativo. La seleccién permite a la biblioteca contener los manejadores de dispositivo para todos los elementos de E/S aceptados, pero s6lo se encadenan al sistema operativo aquellos que se requieran. Debido a que el sistema no se compila de nuevo, la generacién es més rapida, pero el sis- tema resultante puede ser en exceso general. En el otro extremo, es posible construir un sistema que esté activado completamen- te por tablas. El sistema siempre incluye todo el cédigo, y la seleccion ocurre en el tiem- po de ejecucién, y no en la compilacién o el encadenamiento. La generacién del sistema implica sélo crear las tablas apropiadas para su descripeién. Las principales diferencias entre estos enfoques son el tamajio y la generalidad del sistema producido, asi como la facilidad de modificacién a medida que cambia la con- figuracién del Aardware. Considere el costo de modificar el sistema para dar soporte a una terminal gréfica u otra unidad de disco; como equilibrio ante dicho costo est, por supuesto, la frecuencia (0 poca frecuencia) de tales cambios. Después de que se genera un sistema operativo, debe estar disponible para que sea usado por el hardware. éPero cémo sabe el hardware dénde esta el kernel, o como car- gar dicho kerne/? El procedimiento para iniciar la actividad de una computadora cargando el kernel es conocido como arrangue (booting) del sistema. En la mayoria de los siste- mas de computo existe una pequefia pieza de cédigo, almacenada en ROM, conocida como el programa o cargador de arranque (bootstrap). Este c6digo es capaz de localizar el kernel, cargarlo en la memoria principal e iniciar su ejecucién. Algunos sistemas de cémputo, como las PC, utilizan un proceso de dos etapas en el cual un cargador de arran- que sencillo busca un programa de arranque (4002) mas complejo en el disco, el cual, a su vez, carga el kernel. La carga inicial de un sistema se estudia en la seccion 13.3.2 y en el capitulo 20. Escaneado con CamScanner

También podría gustarte