Download SISTEMA OPERATIVO OS/2 GENERALIDADES, FUNCIONES Y
Document related concepts
Transcript
UNIVERSIDAD NACIONAL EXPERIMENTAL DE LA FUERZA ARMADA CICLO PROFESIONAL INGENIERÍA DE SISTEMAS SISTEMA OPERATIVO OS/2 GENERALIDADES, FUNCIONES Y CARACTERÍSTICAS GARCÍA SERRANO ERIKA ZULAY GUTIÉRREZ INFANTE CHRISTIAN GERARDO GUZMÁN MONTOYA GLORIA ELENA MENDOZA BUROZ ROBERT GABRIEL NAVARRO HAGEN CESAR AUGUSTO RODRÍGUEZ ÁVILA ANDRÉS JOSÉ ROJAS MORALES KELEN JAIRO WU JIMÉNEZ SICWING JOSÉ RAFAEL Profesor Guía: Ing. Rafael Chieffo Caracas, Venezuela 2010 UNEFA ING. SISTEMAS Página 1 ÍNDICE CONTENIDO . . . . . . . . .PÁGINA INTRODUCCIÓN . . . . . . . . . .03 RESEÑA HISTÓRICA Y CARACTERÍSTICAS GENERALES DE OS/2 . .04 FUNCIONES DEL OS/2 . . . . . . . . .06 BÚSQUEDA DE FICHEROS EN OS/2 . . . . . . .06 REDIRECCIÓN DE ENTRADAS Y SALIDAS EN OS/2 . . . .07 VARIABLES DE ENTORNO DE OS/2 . . . . . . .08 LOS SUBSISTEMAS EN OS/2 . . . . . . .09 GESTIÓN DE MEMORIA DE OS/2 . . . . . . .12 MULTITAREA EN OS/2 . . . . . . . . . .16 ESTRUCTURA DEL OS/2 . . . . . . . . .18 SHELL DEL SISTEMA DE OS/2 . . . . . . . .20 SELECTOR DE PROGRAMAS . . . . . . . .22 SINCRONIZACIÓN Y COMUNICACIÓN ENTRE PROCESOS . . .23 APLICACIÓN DE SEMÁFOROS . . . . . . . .24 TEMPORIZADORES EN OS/2 . . . . . . . .26 SEGURIDAD DEL OS/2 . . . . . . . .28 DESEMPEÑO Y PRODUCTIVIDAD . . . . . . .28 VENTAJAS DE OS/2 . . . . . . . . . .30 DESVENTAJAS DE OS/2 . . . . . . . . .31 CONCLUSIONES . . . . . . . . . .32 BIBLIOGRAFÍA . . . . . . . . .33 . UNEFA ING. SISTEMAS Página 2 INTRODUCCIÓN Las computadoras están diseñadas para realizar tares diversas que van desde procesar texto, reproducir audio y video, navegar en Internet, juegos o diseño gráfico y, como hemos estudiado en clases, estas tareas son un conjunto de instrucciones y datos agrupadas en programas. Para hacer sus tareas, los programas necesitan poder acceder a los recursos de la computadora y de ésta manera, escribir sus datos sobre el disco duro, tener acceso a una impresora, mostrar los datos por pantalla, entre otras. Si cada programa actuara independientemente entonces nada impediría que un programa sobrescribiera sus datos sobre los de otro o se apoderara de un recurso indefinidamente. He allí la importancia de los sistemas operativos, servir de plataforma y brindar los mecanismos y las reglas básicas de funcionamiento que permiten que los programas puedan ejecutarse sin conflictos accediendo a los recursos disponibles del computador de una forma ordenada. Existen muchos sistemas operativos dependiendo del tipo de computadora, los estudiantes pretendemos profundizar en el sistema operativo OS/2 siglas de “Sistema operativo de segunda generación” desarrollado por IBM y lanzado al mercado en 1985. En tal sentido hemos realizado una investigación referente a las características y funciones del OS/2 motivados por la certidumbre de que la correcta comprensión de estas nociones nos va a permitir tener mayor amplitud de criterio para razonar sobre los sistemas operativos actuales y nos dará una perspectiva de la evolución de los sistemas operativos, lo anterior viene a justificar la elaboración del presente material. UNEFA ING. SISTEMAS Página 3 RESEÑA HISTÓRICA Y CARACTERÍSTICAS GENERALES DE OS/2 El sistema operativo OS/2 fue pensado con la finalidad de procesar datos, proporcionar manejadores gráficos independientes de los dispositivos, lograr que las aplicaciones tuvieran acceso directo a periféricos con gran ancho de banda, ofrecer capacidad multitarea, proporcionar un ambiente adaptado para cada programa y ofrecer un contexto protegido para garantizar la estabilidad del sistema. OS/2 corre en máquinas con procesador Intel 286 y fue desarrollado por la empresa International Business Machines (IBM) aunque en un principio surgió como un proyecto conjunto entre ésta y la empresa Microsoft Corporation que pretendían diseñar un sistema operativo para remplazar al MS-DOS (Sistema operativo de disco de Microsoft) que ya comenzaba a quedar obsoleto , OS/2 tenia muchas mejoras con respecto a éste como por ejemplo el uso real de memoria, la ejecución en modo protegido y el soporte de multiprogramación en forma elegante. El sistema OS/2, en su momento fue uno de los sistemas operativos más estables rápidos y potentes. Desde la versión 1.0 lanzada en diciembre de 1987 y en sus sucesivas versiones el sistema operativo OS/2 fue incorporando entre otras mejoras la capacidad multitarea, la memoria virtual, la característica de comparición de código: al cargar dos veces un mismo programa, el código de este no se duplicaba en memoria, sino que el mismo código era ejecutado por dos Threads diferentes. Esto permitía ahorrar mucha memoria. Al principio era íntegramente en modo texto aunque daba la posibilidad de usar los modos gráficos de la tarjeta del ordenador, pero no incluía ningún API que ayudase en ello, en octubre de 1988, llegó por fin el Presentation Manager, un gestor de modo gráfico, junto con la primera versión de Work Place Shell. Ambos formaban un entorno gráfico muy parecido a Windows 3.0 que para ese momento aún no se comercializaba. UNEFA ING. SISTEMAS Página 4 Al salir al mercado los procesadores 386 OS/2 fue teniendo inconvenientes al ser un sistema operativo de 16 bits con lo que no aprovechaba plenamente las capacidades de los 386 de la época, lo único que se sabe a ciencia cierta es que la versión de OS/2 de 32 bits presentada por Microsoft en 1990 era casi igual que la versión 1.3, con la única diferencia de que el kernel era de 32 bits. IBM, por su parte, quería un escritorio orientado a objetos, y no el clásico Shell de OS/2 1.x (el cual Microsoft copiaría para su Windows 3.0). OS/2 2.0, la primera versión de OS/2 de 32 bits, iba a salir inicialmente a finales de 1990; pero al no contar con la ayuda de Microsoft, IBM no fue capaz de sacarlo hasta 1992, dándole a Windows 3.0 el tiempo suficiente para asentarse en el mercado. A principios de 1994 aparece OS/2 Warp, nombre comercial de la versión 3.0 de OS/2. En ella surgen nuevos elementos: un Kit completo de multimedia (mejora del que traía la versión 2.1) y el Bonus Pak, un kit de aplicaciones que permite ponerse a trabajar con el ordenador nada más instalar el Sistema Operativo, pues contiene elementos como un Kit de conexión a Internet completo, el paquete integrado IBM Works (formado por un procesador de textos, hoja de cálculo, base de datos y gráficos de empresa). Así mismo, la cantidad de hardware soportado fue ampliado de manera considerable, soportando casi cualquier dispositivo existente en el mercado: CD-Roms, impresoras, tarjetas de sonido, tarjetas de vídeo, tarjetas de captura de vídeo, tarjetas SCSI, etc. Los requisitos mínimos de esta versión seguían siendo un 386sx a 16MHz con 4 megas de RAM, los mismos que Windows 3.11, y podía ejecutar programas DOS, OS/2 16bits, OS/2 32 bits, Windows 2.x y Windows 3.x (incluía además el API Win32s, con lo que se podían ejecutar incluso programas Windows de 32bits). En Noviembre de 1996 se hizo la presentación de Merlín, nombre clave de OS/2 4.0, trae todo lo que ofrecía OS/2 3.0, pero lo amplia con un conjunto extra de características, como son: UNEFA ING. SISTEMAS Página 5 Un soporte todavía mayor de hardware y mayor simplicidad de instalación. Mejores librerías Un Kernel aún más optimizado. Escritorio mejorado, ofreciendo una orientación a objeto aún mayor. HPFS mejorado: mayor capacidad por disco y seguridad. Sesiones DOS reales Software reconocedor de voz, capaz de funcionar con cualquier tarjeta de sonido FUNCIONES DEL OS/2 La principal función del OS/2, es la de gestionar la información que entra, sale y se guarda en un ordenador, para ello ofrece una gran colección de llamadas para gestionar ficheros en el sistema de archivos. Estas llamadas permiten copiar un fichero a otro, renombrarlo, borrarlo, cambiar de directorio, entre otros. Por ejemplo: DosCopy DosMove DosDelete DosForceDelete DosCreateDir DosDeleteDir DosQueryCurrentDir DosQueryCurrentDisk DosSetCurrentDir DosSetDefaultDisk BÚSQUEDA DE FICHEROS EN OS/2 El OS/2 facilita una serie de funciones que permiten realizar en muchas ocasiones, que un programa necesite conocer todos los ficheros que coinciden con un patrón determinado. Es el caso por ejemplo, de mostrar una lista de ficheros que acaben en AL, o que tengan la letra F en el tercer lugar. En ellas se debe especificar un nombre de fichero, donde: UNEFA ING. SISTEMAS Página 6 El símbolo ? sustituye a cualquier carácter situado en esa posición. Así, la búsqueda de program?.exe devolverá los nombres de los ficheros que empiecen por program, a continuación tengan un carácter cualquiera, y por último, terminen con .exe, como por ejemplo: programa.exe, o programz.exe; pero no devolverá programad.exe ni programa. El símbolo * sustituye a cualquier cadena situada desde esa posición en adelante. Así, la búsqueda de prog* devolverá cualquier fichero que empiece por prog, tenga lo que tenga después. Por ejemplo: devolverá programa, progs. DosFindFirst DosFindNext DosFindClose REDIRECCIÓN DE ENTRADAS Y SALIDAS EN OS/2 Existen tres archivos especiales, los cuales son: La entrada estándar (STDIN) La salida estándar (STDOUT) La salida de error estándar (STDERR) Para STEIN por defecto está asociada al teclado y STDOUT y STDERR a la pantalla; sin embargo, pueden ser redireccionadas desde la línea de comandos a un fichero o incluso a otro programa por medio de cauces o Pipes. Por ejemplo, si se tiene un programa UPCASE.EXE que lee de la entrada estándar un carácter, lo convierte en mayúsculas y lo escribe en la salida estándar y se realiza desde la línea de comandos un C:\>UPCASE.EXE <entrada.txt >salida.txt donde no se quedará esperando a que se pulse una tecla, ni mostrará en pantalla lo que haya convertido. Lo que hará será leer caracteres del fichero entrada.txt, y todo lo que salga lo escribirá en el fichero salida.txt. Se ha redireccionado la entrada al fichero UNEFA ING. SISTEMAS Página 7 entrada.txt y la salida al fichero salida.txt. También se puede direccionar la salida de un programa a la entrada de otro programa distinto, con el carácter |. Por ejemplo: C:\>UPCASE.EXE <entrada.txt |MORE.EXE saldría el texto contenido en entrada.txt por pantalla y cada vez que se llene ésta, esperará a que se pulse una tecla. La salida de UPCASE.EXE ha sido tomada como entrada de MORE.EXE. Para poder hacer esto en los programas, simplemente se necesita leer las órdenes a través de la entrada estándar (indicando 0 como handle en DosRead) y enviar los resultados y errores por la salida estándar y la salida de error estándar (indicando respectivamente 1 y 2 como handle en DosWrite). VARIABLES DE ENTORNO DE OS/2 OS/2 facilita las variables de entorno para permitir la colocación de programas en múltiples directorios y simplificar algunas opciones de configuración. Se trata de una serie de variables que se definen bien en la línea de comandos, bien en el CONFIG.SYS, por medio de la sentencia SET. Por ejemplo, la línea: SET mi_variable=C:\OS2UTIL\MIPROGRAMA Asigna a la variable de entorno mi_variable el valor C:\OS2UTIL\MIPROGRAMA. De este modo, el usuario puede especificar el directorio en donde estarán diversas partes de un programa, o bien diversas opciones para éste. Por ejemplo, el compilador EMX requiere de algunas variables de este tipo para saber donde están las librerías y documentación. El propio OS/2 hace uso de esta facilidad para implementar variables como el PATH de datos. Otras funciones del DOS son las siguientes: DosResetBuffer DosShutdown DosBeep UNEFA ING. SISTEMAS Página 8 LOS SUBSISTEMAS EN OS/2 En principio, el uso del sistema de ficheros para Entrada/Salida con el teclado y la pantalla debería ser suficiente, pero lamentablemente no es así. Su uso es relativamente lento, por lo que solo parece útil utilizarlo cuando se necesita poder redireccionar la entrada o la salida del programa, o cuando la velocidad no es importante. Para mejorar y simplificar el acceso a los tres dispositivos principales de entrada de datos, OS/2 permite el acceso directo a los subsistemas de: Video, Teclado y Ratón, de modo que se puede mejorar notablemente la velocidad de los programas. El acceso a estas funciones va desde el mismo procedimiento que en el acceso a través del sistema de archivos hasta el acceso directo al hardware del sistema. Entre ambos extremos hay un amplio abanico de posibilidades. De entre todas ellas, se deberá escoger la que mejor se adapte a las necesidades de velocidad y flexibilidad del programa. Exactamente siempre usamos los subsistemas. El sistema de ficheros, cuando sabe que una salida es para la pantalla, envía los datos al subsistema de video (VIO). Sin embargo, antes tiene que comprobar para quien es la salida, con lo que pierde algo de rendimiento. Así mismo, la posibilidad de redireccionar entradas y salidas es otra opción que realiza el sistema. En muchos casos, la pérdida de velocidad es totalmente inapreciable, pero en algunos programas (como juegos, aplicaciones a pantalla completa) el uso del sistema de ficheros puede ser totalmente contraproducente para el rendimiento. Usando el subsistema directamente se ahorran pasos intermedios y así no perder la posibilidad de redirección y de entrada/salida generalizada para ficheros y dispositivos. En OS/2 se disponen de los siguientes subsistemas: Subsistema de Video: encargado de gestionar la comunicación entre los programas y la pantalla. Dado que puede haber varios programas ejecutándose a la vez en el sistema, pero solo uno puede acceder a la vez a la pantalla UNEFA ING. SISTEMAS Página 9 (normalmente el programa que se encuentra en primer plano o foreground), es necesario virtualizar ésta por medio de un buffer de pantalla propio de cada programa: el LVB (Logic Video Buffer, buffer de vídeo virtual). Cuando una aplicación quiere escribir en pantalla y se encuentra en segundo plano (background), su salida se escribe en dicho LVB. En el momento en que el usuario conmuta dicho programa a primer plano, el LVB se copia tal cual en la memoria de pantalla y el resto de las escrituras van a ésta directamente. Si se vuelve a conmutar dicho programa a segundo plano, OS/2 copia lo que hubiese en pantalla en ese momento al LVB. De este modo, el programa nunca sabe ni le preocupa cuando está en primer o en segundo plano. Subsistema de Teclado:encargado de gestionar el acceso de los programas a este periférico. se usa porque el acceso a través del sistema de archivos solo permite detectar códigos ASCII, pero no la pulsación de teclas de función, como por ejemplo: si se tiene pulsada la tecla ALT, o CTRL. Para este tipo de funciones se necesitan usar los servicios del subsistema de teclado. Subsistema de Puntero (Ratón): controla todo lo referente a este dispositivo. Lo primero que hay que hacer para trabajar con el ratón es abrir el dispositivo. Esta acción crea una cola de eventos para el ratón e inicializa todos los parámetros de la sesión a un valor conocido. La cola de eventos del ratón almacena todos los sucesos ocurridos con éste dispositivo, de modo que puedan ser leídos por el programa en el momento adecuado. Un evento es, por ejemplo, mover el ratón, pulsar un botón, soltarlo, entre otros. Existe la posibilidad de filtrar determinados eventos, de modo que al leer la cola, el resultado será exactamente igual que si no se hubiesen producido. Cuando se lee la cola, se puede especificar además si la función retornará aún en el caso de que ésta esté vacía, o bien si debe esperar a que haya algún evento en ella. Además de esto, se puede conocer en cualquier momento la posición actual del ratón, así como cambiarla por otra. Estas opciones deben usarse sólo con fines de actualizar alguna variable del programa; si se pretende que sea el propio UNEFA ING. SISTEMAS Página 10 programa el que pinte el cursor, es mejor leer las coordenadas por medio de la cola de eventos. El controlador de ratón puede encargarse él mismo de pintar el cursor en pantalla (solo en sesiones de texto). Así mismo, puede devolver las coordenadas bien en coordenadas de pantalla, bien en Mickeys, que son unidades naturales del ratón. Por otro lado, es posible definir un área de la pantalla que será específica de la aplicación, de modo que el controlador no pintará el cursor cuando éste se encuentre dentro de aquella. Por defecto, esta área ocupa toda la pantalla. En este gráfico se puede ver como está construido el acceso a los dispositivos en OS/2. La aplicación se comunica con el Sistema de Ficheros de OS/2, que forma parte del núcleo y éste determina a quien tiene que enviar o de quien debe leer los datos. Si el programa quiere acceder a la pantalla, el Sistema de Ficheros envía los caracteres al Subsistema de Vídeo (VIO). Lo mismo si se trata del teclado, el ratón o un fichero de disco. La razón de usar el Sistema de Ficheros para acceder tanto a los archivos de disco como a los dispositivos, es que permite que el programa no se tenga que preocupar de la estructura de estos: cualquier entrada o salida es tratada como un conjunto de caracteres en serie. Esta independencia de estructura es cómoda para algunas aplicaciones, pero en otras puede ser mejor poder acceder directamente a cada dispositivo, normalmente por razones de velocidad. Por esto s que OS/2 permita a las aplicaciones acceder directamente a los Subsistemas de Vídeo (VIO), teclado (KBD) y ratón (MOU). UNEFA ING. SISTEMAS Página 11 GESTIÓN DE MEMORIA DE OS/2 Tomando en consideración que OS/2 trabajó en principio con microprocesador 286 tomemos en cuenta que éste incluía dos modos de funcionamiento: El modo real: En el que se comporta exactamente igual que un 8086. El modo protegido: En el que surgen capacidades nuevas, como memoria virtual, protección de segmentos, entre otros. La forma de acceder a la memoria en el modo protegido, el cual es el que trabaja OS/2 1.x, es mediante una combinación de dos valores de 16 bits cada uno: un selector y un offset o desplazamiento. El valor del selector se almacena en un registro del microprocesador y se usa como índice para acceder a una tabla de selectores, esta tabla se almacena en la memoria RAM del sistema, al cargar un nuevo valor en el registro de selector consumía mucho tiempo ya que se hacen dos lecturas a RAM aparte de numerosas comprobaciones. Dado que la dirección base almacenada en la tabla de selectores viene definida con 24 bits, se puede situar cada segmento en cualquier punto de la memoria física (el 286 tiene un bus de direcciones de 24 líneas, luego se puede direccionar hasta 16 megas) y recorrerlo con el valor de offset. Dado que este valor es de 16 bits, el tamaño máximo de cada segmento es de 64 kilobytes. A continuación en el siguiente gráfico se ve el proceso seguido, para calcular una dirección en base al valor del selector y del offset. UNEFA ING. SISTEMAS Página 12 Se puede observar que este sistema permite cambiar de sitio, cada uno de los segmentos sin que el programa falle. Esto es porque, el programa se refiere a cada segmento a través de un selector y no por medio de su dirección base, como ocurre en el modo real. Si para compactar la memoria, el OS/2 necesita mover el segmento 3 a otra zona, cambiará también la dirección base en la tabla de selectores. Como el programa se refiere a esa zona como el 'Selector 3', siempre accederá de forma correcta. También el tamaño de cada segmento es variable, pudiendo medir desde 1 byte hasta 64 Kbytes. Si el segmento mide menos que el máximo y se intenta leer o escribir más allá de sus límites, se produce un error, una excepción, que hace que OS/2 intercepte el programa y lo termine inmediatamente. Lo mismo si se carga un valor no válido en el registro de selector. Además, este esquema permite implementar un sistema de memoria virtual. Entre los muchos datos que se almacenan en la tabla de selectores, uno de ellos es si ese segmento está presente o no en la memoria física. Si el programa carga en el registro de selector un valor correspondiente a un segmento no presente, se produce una excepción, la cual salta al gestor de memoria virtual que lo que hará será pasar a disco un segmento poco usado, marcándolo como no presente, cargar en esa zona el segmento reclamado por el programa, marcarlo como presente y anotar su dirección base en la tabla de selectores y devolver el control a la aplicación. De este modo se puede trabajar con más memoria que la que tiene físicamente la máquina. Finalmente, este esquema también tiene una desventaja porque dado que los segmentos pueden tener un tamaño variable, puede ser necesario liberar varios segmentos pequeños para hacer sitio a uno grande. Además, la memoria puede fragmentarse con facilidad, lo que obliga a reorganizarla para juntar pequeños huecos libres en uno solo grande. Todo esto consume tiempo extra durante el intercambio a disco. UNEFA ING. SISTEMAS Página 13 Para el microprocesador 386 se mejoró el modo protegido, de modo que se facilita la gestión de la memoria virtual. Cuando se creó este microprocesador, al ser un micro de 32 bits se varió la estructura del modo protegido para darle una mayor potencia, aparte de permitirle direccionar los 4GBytes que permite su bus de direcciones de 32 bits. El modo protegido del 386 funciona igual que el del 286. Se tiene un registro de selector de 16 bits y uno de offset, esta vez de 32 bits y en la tabla de selectores se disponen 32 bits para indicar la posición base de cada segmento. Sin embargo, se tienen solamente de 20 bits para indicar la longitud de cada segmento. Esto lo limitaría, en principio, a una longitud máxima de 1 mega por segmento. Pero, los diseñadores de Intel reservaron un bit de granularidad entre los muchos reservados del registro de estado. Este bit permite conseguir segmentos de hasta 4 GBytes con solo 20 bits. La finalidad es que, si el bit está a cero, la unidad de longitud será 1 byte, con lo que solo se podrá tener segmentos de hasta 1 mega. En este modo se es compatible con el 286. Pero si este bit se pone a 1, la unidad será 4 KBytes. Esto significa que un segmento puede tener una longitud múltiplo de esta: 4, 8, 12, 16, 20, 24, 28, 32, KBytes. En total, se puede disponer de hasta 64 TeraBytes de memoria para cada programa. Sin embargo, cuando se usa memoria virtual, este método tiene un inconveniente dado que los segmentos pueden tener un tamaño variable, puede ser necesario liberar varios pequeños para hacer sitio a uno grande. Además, la memoria puede fragmentarse con facilidad, lo que obliga a reorganizarla para juntar pequeños huecos libres en uno solo grande. Todo esto consume tiempo extra durante el intercambio a disco. Para evitarlo, se incluyó el modo paginado. Si este modo está activo, las direcciones que salen de la suma del selector y del offset son pasadas por un esquema que a continuación se muestra: UNEFA ING. SISTEMAS Página 14 En esta grafica se observa que el sistema se ha complicado mucho más. Se puede dividir la memoria en bloques de 4KBytes, e intercambiar solo aquellos que conciernan. De esta forma, si se tiene que cargar un segmento de 24 KBytes, solo se liberaría 24 KBytes de otro segmento y no un segmento completo. Esto acelera las transferencias, elimina la fragmentación y evita el crecimiento incontrolado del fichero de Swap. Sin embargo, hace el sistema algo más lento, pues tiene que hacer más accesos a la RAM. Para evitarlo, se incluyen una serie de Buffers que retienen las páginas de dirección y de tabla mas usadas. En OS/2 2.0 y posteriores se define un único segmento para cada programa, de 4 GBytes de longitud y se activa el modo paginado. De esta forma el acceso es más rápido, pues no es necesario cargar múltiples valores en el registro de selector y se conserva la capacidad de memoria virtual. Esta es la razón de que cada vez que se hace una reserva de memoria con DosAllocMem o similar, la cantidad se redondea al múltiplo de 4KBytes superior. Subasignación de Memoria: La asignación de memoria es muy importante en cualquier sistema operativo, porque concede a los programas la capacidad de adaptarse dinámicamente a las necesidades de cada momento. Sin embargo, hay un coste relativamente elevado en la asignación de memoria dinámica. En cada petición es preciso buscar una zona libre, cambiar los descriptores de segmento y cargar los registros de nuevo. Todo esto lleva un tiempo muy elevado, debido a la propia arquitectura del microprocesador. Lo mismo ocurre al liberar una zona. UNEFA ING. SISTEMAS Página 15 Se debe utilizar toda la memoria que se necesite, pero hay que evitar asignar y desasignar constantemente bloques. La solución consiste en asignar un bloque de tamaño moderado y dentro del subasignar bloques de tamaño más pequeño, aumentando el tamaño del bloque físico sólo cuando se necesita más espacio. OS/2 ofrece un grupo completo de subasignación de memoria, los cuales son: DosSubAllocMem DosSubFreeMem DosSubSetMem DosSubUnsetMem MULTITAREA EN OS/2 Un Thread es la unidad básica de ejecución de OS/2. Cualquier programa que se ejecute consta de, al menos un thread. También, se puede considerar como la agrupación de un trozo de programa, junto con el conjunto de registros del procesador que utiliza y una pila de máquina. Por otro lado una definición mas completa de proceso seria un conjunto de threads que ejecutan el mismo código, junto con las zonas de memoria asociadas a ellos y los ficheros que tienen abiertos. Un programa consta al menos de un proceso, y un proceso, al menos de un thread. Cuando un programa tiene varios procesos, lo normal es que cada uno ejecute un código distinto, los cuales se encuentran en ficheros ejecutables separados. Dos procesos solo pueden compartir una zona de memoria, si esta es definida expresamente como tal. Así mismo, es en este caso cuando los sistemas de sincronización a la hora de compartir memoria se vuelven especialmente necesarios e importantes. En un sistema operativo multitarea como OS/2 los procesos compiten por tener el máximo tiempo de CPU. Sin embargo, no todos tienen la misma importancia. Por UNEFA ING. SISTEMAS Página 16 ejemplo, un programa que controle un MODEM tiene que tener prioridad sobre otro que controle una impresora. En tal sentido OS/2 se maneja con 4 niveles de prioridad, en orden de mayor a menor, los cuales son: 1. Nivel Crítico: En este nivel se ejecutan aplicaciones que necesiten una atención inmediata por parte del procesador, como sistemas de comunicaciones o en tiempo real (sonido, videos). Dentro de este nivel existen 32 subniveles distintos de prioridad. El subnivel en el que se sitúa el programa es escogido por él mismo. Un ejemplo seria el siguiente: el selector de programas del OS/2, el cual corre en el subnivel más bajo (0) del nivel crítico. 2. Nivel Primer Plano: En el nivel de primer plano se ejecuta la aplicación que se encuentra en primer plano en ese momento. Solo tiene un subnivel de prioridad. 3. Nivel Medio: En este nivel se ejecutan los programas normales, como las aplicaciones, juegos, entre otros. Tiene 32 subniveles distintos de prioridad. El subnivel en que se sitúa es escogido por OS/2 y varia de forma dinámica en función de los accesos de E/S y del tiempo de CPU que consuma el programa, de forma que los más consumidores tendrán menor prioridad que los menos consumidores. 4. Nivel Desocupado (Idle): En este nivel desocupado (o Idle Time), se sitúan aquellos programas que no necesitan una atención excesiva de la CPU. Es lo opuesto al nivel crítico. Tiene 32 subniveles de prioridad. El subnivel en el que se sitúa el programa es escogido por él mismo. Un ejemplo es el Spooler de impresora, o un salvapantallas. Un detalle importante a tener en cuenta en el diseño de un programa, es el consumo de CPU que hace. Para que nuestro programa consuma poca CPU, no se debe realizar nunca una espera activa. UNEFA ING. SISTEMAS Página 17 Una espera activa, es cuando entramos en un bucle que se limita a comprobar el estado de una variable y solo se sale del cuando cambia a un valor determinado. Sesión: Una sesión es un conjunto de procesos junto con una pantalla, teclado y ratón virtuales. Cada vez que se abre un programa en modo texto, OS/2 crea para él una sesión, asignándole un LVB en donde escribir los datos de salida y una cola de teclado y de ratón, en donde se almacenarán las pulsaciones y los movimientos hasta que pueda procesarlos. Si esa sesión se encuentra en primer plano, su VDU, cola de teclado y cola de ratón estarán conectadas directamente a la pantalla física, al teclado físico y al ratón físico, así hasta que el usuario conmute a otra sesión usando el selector de programas, el cual es una parte especial de OS/2 dedicada precisamente a gestionar las sesiones. Todos los procesos pertenecientes a una sesión acceden al mismo LVB y a la misma cola de teclado y ratón. Esto no es un problema, sino un efecto buscado, pues si es necesario, es posible desde una sesión crear otras nuevas y arrancar en ellas procesos, de modo que no interfieran con el actual. Es donde surge que también existe una jerarquía de sesiones y ciertas implicaciones entre ellas. Por ejemplo, una sesión padre puede ser notificada de que ha terminado una sesión hijo. También una sesión padre puede traer a primer plano a cualquiera de sus hijos (siempre y cuando ella esté en primer plano), o vincularse a ellos, de modo que cuando uno sea traído a primer plano, el padre también lo haga (y viceversa). Finalmente, un padre puede parar una sesión hijo, pero solo a ella, y no a sus 'nietos', o a ella misma. Sin embargo, cuando se para una sesión hijo, se paran también todas sus sesiones descendientes. ESTRUCTURA DEL OS/2 Cuando un programa se está ejecutando se puede establecer un punto especifico de ejecución en el programa en un momento. En la programación secuencial, en un instante de tiempo dado, solo una única tarea puede ser llevada a cabo. Los UNEFA ING. SISTEMAS Página 18 hilos permiten a los programadores realizar múltiples tareas en forma simultánea. Algunas de las características importantes de los hilos son las siguientes: Los hilos son componentes ligeros. Los hilos tienen un inicio, una secuencia de pasos para ser ejecutados y un final. Los hilos tienen una ejecución específica en un momento dado. Los hilos no son programas y de allí que no pueden ejecutarse por sí mismos. Los hilos operan a nivel de proceso. Varios hilos pueden estar ejecutándose en un mismo programa. Un sistema operativo tal como OS/2 permite ejecutar muchos procesos simultáneamente, por ejemplo, se puede navegar en Internet usando un navegador Web, abrir un documento, ejecutar una música, y mantener una conversación con un amigo en línea al mismo tiempo aplicando la multitarea. Cada instancia de un programa en ejecución es un proceso, mientras que cada secuencia de control dentro de un programa es un hilo. Los hilos son componentes ligeros mientras que los procesos son componentes pesados. Cada proceso tiene su propio espacio de direcciones. Los hilos comparten en el mismo espacio de direcciones reservado para el programa. Partiendo de lo anteriormente expuesto, se explicara en detalle el funcionamiento de la estructura de OS/2. Esta estructura se centra en los threads, procesos y sesiones. Los procesos y threads son gestionados por el núcleo, y las sesiones son gestionadas por los subsistemas y por el selector de programas. Ahora teniendo en cuenta esto explicamos qué papel juega cada uno de estos, para ello necesitamos manejar dos conceptos y varias características que describirán la importancia de los mismos, debido a que son fundamentales para entender dicha estructura. Estos son el Shell que se detallara a continuación y el kernel expuesto anteriormente. UNEFA ING. SISTEMAS Página 19 SHELL DEL SISTEMA DE OS/2 El sistema operativo OS/2 usa un Shell (programa que provee una interfaz de usuario para acceder a los servicios del sistema) para transferir los comandos desde el teclado a la computadora. El Shell es el intérprete de comandos. Actúa como un intérprete entre los programas de los usuarios y el kernel. Traduce los comandos del usuario en la acción apropiada. El Shell interactúa con el usuario, mientras que el kernel interactúa con el hardware de la máquina. El Shell es el programa que toma comandos y, ejecuta el programa apropiado o lo traduce en instrucciones que el kernel entiende. El Shell es una de las herramientas más poderosas del sistema OS/2. Como se explicó anteriormente, el Shell es un programa que ejecuta un conjunto de comandos y procesa las entradas del usuario. El Shell del sistema, en principio, puede ser cualquier programa, de manera que al arrancar OS/2, se arrancará éste también. Para que este sea útil, tiene que permitir arrancar nuevas sesiones desde él y pasar el control a éstas para que fluya el curso de las mismas. En OS/2 1.0, el Shell del sistema era un simple menú, que contenía los programas básicos, era como una especie de línea de comandos. Pulsando sobre estos, se arrancaba una nueva sesión con éste, y se le cedía el control. En las versiones posteriores como Shell, se pone algo llamado Presentation Manager o PM, este es el gestor de ventanas de OS/2. Sin embargo, el PM no incluye ningún Shell, por lo que surge una nueva línea en el CONFIG.SYS, que especifica qué Shell debe arrancar el PM. Este Shell, por defecto, es el Work Place Shell, o WPS, que es el que nos da la orientación a objetos del escritorio de OS/2; sin embargo, puede ser cambiado por otro cualquiera. Por ejemplo, poniendo como Shell el CMD.EXE de OS/2, tendremos una situación parecida a UNIX, en la que arrancamos siempre desde una línea de comandos. UNEFA ING. SISTEMAS Página 20 Algunas de las responsabilidades del Shell son: Controlar y asignar trabajos. Manejar más de un proceso a la vez. Redireccionar la entrada y salida estándar. Mantener un historial de comandos. SELECTOR DE PROGRAMAS El selector de programas es la parte de OS/2 que se encarga de conmutar la pantalla, teclado y ratón físicos hacia los buffer lógicos de cada sesión. Para ello, incluye un API propio, que permite a una sesión hacer pasar a primer plano a cualquier sesión hija. El proceso de iniciar un sistema operativo es llamado arranque (bootstrapping o booting). Se mencionaran algunos puntos acerca de cómo se inicia un sistema operativo: Las instrucciones para el arranque están incluidas el chip BIOS (Basic Input/Output System). El chip BIOS informa a la computadora que busque un programa especial llamado el gestor de arranque (boot loader). El gestor de arranque está disponible en un lugar fijo en el disco de arranque. El disco de arranque en cualquier computadora es el disco duro primario. El gestor de arranque inicia la parte principal del sistema operativo. Se nombran los puntos anteriores porque surge el tema de cómo se arranca la primera sesión, la que nos permitirá arrancar nuevos programas, etc. Para ello, OS/2 incluye una línea en el CONFIG.SYS que le indica un proceso que debe arrancar al principio de todo. Este proceso será el Shell del sistema, el cual se definirá a continuación. UNEFA ING. SISTEMAS Página 21 El selector de programas incorpora dos Hot Keys o Teclas Calientes: Ctrl+Esc y Alt+Esc. La primera pasa la sesión actual a segundo plano y vuelve a poner el Shell en primer plano. Esto nos permite arrancar nuevas sesiones sin cerrar la actual. La segunda permite conmutar de una sesión a otra de forma cíclica, pero sin pasar por la del Shell. OS/2 es muy atento con el usuario, y por eso tiene especial cuidado con el Shell. Dado que se trata del principal nexo de unión entre ambos, si se produce un error y el Shell se cierra, OS/2 apertura uno nuevo inmediatamente, sin afectar para nada al resto de las aplicaciones que estaban corriendo, lo cual es una gran ventaja. De esta forma el usuario nunca se queda sin control de la máquina. No olvidemos que el Shell es un programa más, que no corre en el núcleo, y que por tanto puede contener errores y por eso hay que ser muy cuidadoso con en este aspecto. De todo lo anterior se puede deducir varias cosas: El Shell del sistema es un programa más, que se ejecuta en una sesión independiente, por lo que nada impide que escribamos nuestro propio programa shell. Un Shell nunca debe arrancar ningún programa en su misma sesión, pues eso implicaría que el pulsar Ctrl+Esc no nos devolvería al Shell, sino al programa que estamos ejecutando en su sesión. Dado que el Shell es el padre de todas las sesiones que se arrancan, puede conmutar a cualquiera de ellas sin usar ningún truco especial, simplemente usando el API del selector de programas. Por esto mismo, tiene acceso a todas las sesiones de la lista de tareas de OS/2, y también puede matar a cualquiera de ellas. UNEFA ING. SISTEMAS Página 22 SINCRONIZACIÓN Y COMUNICACIÓN ENTRE PROCESOS. Anteriormente se identifico lo que son los multihilos, en el cual una aplicación puede tener varios hilos ejecutándose en paralelo. Sin embargo, hay ciertas consideraciones que se deben tomar en cuenta cuando se manejan más de un hilo. Los datos compartidos por los hilos pueden corromperse. Para evitar esto se usa un concepto llamado sincronización de hilos. Un recurso crítico es aquel que puede ser usado solo por un usuario a la vez. Si varios usuarios acceden al recurso critico simultáneamente, se puede llegar a un estado inconsistente. Cuando hilos en paralelo compiten por un recurso crítico compartido e intentan acceder a la vez al mismo como por ejemplo, una zona de memoria compartida el resultado puede ser en el mejor de los casos impredecible. Debe haber un proceso para asegurar que este recurso será usado solo por un hilo a la vez, a este proceso se le llama sincronización. Estos permiten establecer un sincronismo entre dos o más hilos y procesos de una forma consistente y, sobre todo, fiable y predecible. Si los hilos que compiten por un recurso compartido no se sincronizan de forma apropiada, esto llevara a una condición de competencia o condición de carrera. Si esto ocurre el resultado no será consistente y dependerá del orden en el que se haya asignado el CPU a los hilos para su ejecución. A continuación se explica lo que es una condición de carrera. Una condición de carrera se define como el comportamiento irregular causado por una dependencia inesperada con relación a la ocurrencia relativa en el tiempo de los eventos. Por esto se puede decir que este comportamiento inesperado ocurre cuando un programador asume incorrectamente que un evento en particular ocurrirá siempre antes que otro. UNEFA ING. SISTEMAS Página 23 La razón de este resultado indeseable es que los hilos están haciendo su trabajo sin sincronización. A raíz de esto se infiere que debe existir un mecanismo que sincronice a los hilos que acceden a recursos compartidos. En OS/2, estos sistemas están formados por los semáforos. APLICACIÓN DE SEMÁFOROS Un semáforo es una estructura diseñada para sincronizar dos o más hilos, de modo que su ejecución se realice de forma ordenada y sin conflictos entre ellos. Cuando nos referimos a que no hallan conflictos entre ellos, es que a estos se les aplican el principio de exclusión mutua. Exclusión mutua significa que cuando un hilo accede a un recurso, no puede ser accedido por ningún otro hilo, hasta que el hilo anterior libere el control del recurso. Los semáforos se usan en el proceso de sincronización para asegurar el uso exclusivo de recursos en un momento dado. Un semáforo básico es una estructura formada por una posición de memoria y dos instrucciones, una para reservarlo y otra para liberarlo. A esto se le puede añadir una cola de threads para recordar el orden en que se hicieron las peticiones. A continuación se explica el funcionamiento de los semáforos. Se comienza por inicializar la posición de memoria a 1 o al valor correspondiente si ese recurso concreto admite más de un acceso simultáneo. Esto se hace en el inicio del programa principal. Seguidamente cada vez que un hilo o un proceso quieran acceder a dicho recurso como por ejemplo un fichero, hará primero una petición con la primera de las llamadas disponibles. Cuando el S.O. ejecuta esa llamada, comprueba el valor UNEFA ING. SISTEMAS Página 24 que hay en la posición de memoria del semáforo, y si es distinta de cero, se limita a restarle 1 y devolver el control al programa, sin embargo, si ya es cero, duerme al proceso que hizo la petición y lo mete en la cola de procesos, en espera de que el semáforo se ponga a un valor distinto de cero. Por último, cuando el proceso ha terminado el acceso al recurso, usa la segunda llamada para liberar el semáforo. Cuando el S.O. la ejecuta, comprueba si la cola del semáforo está vacía, en cuyo caso se limita a incrementar el valor del semáforo, mientras que si tiene algún proceso, lo despierta, de modo que vuelve a recibir ciclos de CPU y sigue su ejecución. Si había varios procesos en espera, se irán poniendo en marcha uno tras otro a medida que el anterior va liberando el semáforo. Cuando termina el último, el semáforo se vuelve a poner a 1. Se trata de un procedimiento que cuenta con la ventaja de que es un mecanismo estándar para todos los procesos, y como es una operación atómica esto es, que durante su ejecución no se admiten cambios de tarea, surge el problema de que una conmutación pueda producir errores aleatorios. Vemos que la primera vez que un proceso usa el semáforo, este tiene valor 1, por lo que pasa a cero y el proceso puede acceder al recurso. Si durante ese tiempo otro proceso quiere acceder también, al usar el semáforo, este tiene valor cero, por lo que el S.O. deja de darle ciclos de CPU. Cuando el primer proceso ha terminado, libera el recurso, con lo que el S.O. puede comprobar que el segundo proceso está esperando, por lo que le vuelve a dar ciclos. En este punto, el proceso sigue como si nunca hubiese sido detenido. Este tipo de semáforos son los de Exclusión mutua o Mutex. Entre estos tenemos: DosCreateMutexSem DosOpenMutexSem DosCloseMutexSem DosQueryMutexSem DosReleaseMutexSem DosRequestMutexSem UNEFA ING. SISTEMAS Página 25 Otra utilización de los semáforos es cuando uno o más procesos tienen que esperar a que otro haya terminado una tarea. Para ello, el primer proceso borra el semáforo y con una primitiva adecuada se pone a esperar a que el semáforo se active (posted). Mientras el segundo proceso va trabajando y cuando termina lo que tiene que hacer, activa el semáforo con lo que el primer proceso vuelve a ponerse en marcha, sin haber desperdiciado ciclos de CPU. Son semáforos evento. Vemos que puede haber varios procesos esperando por el mismo semáforo, y el thread que lo activa no tiene por qué saber cuántos son. Cobran su importancia cuando el evento no es producido por otro thread, sino por otras funciones del S.O. Entre estos tenemos: DosCreateEventSem DosOpenEventSem DosCloseEventSem DosPostEventSem DosQueryEventSem DosResetEventSem DosWaitEventSem TEMPORIZADORES EN OS/2 En muchos casos, un programa necesita perder tiempo, esto es, esperar unos segundos sin hacer nada, o similar. Un sistema muy usado en programas DOS consiste en un bucle de espera, que tarde justo el tiempo que nos interesa. Sin embargo, este sistema es bastante imperfecto, pues si el programa funciona bien en un ordenador concreto, en otro que sea más rápido o más lento no lo hará. La segunda solución que encontraron los programadores fue usar el timer del ordenador, un integrado que puede ser programado para que provoque interrupciones cada n milisegundos. Como ese chip es el mismo en todos los PCs, sin importar su velocidad, permite que los programas funcionen igual en todos. UNEFA ING. SISTEMAS Página 26 En OS/2, sin embargo, no se puede permitir esto, pues puede haber múltiples programas que necesiten el temporizador a la vez. Para solucionarlo, surgen los temporizadores. Antes de nada, conviene señalar que los temporizadores de OS/2 así como los de cualquier otro S.O. multitarea no son todo lo precisos que sería deseable. Esto se debe en primer lugar a que, aunque especifiquemos la temporización al milisegundo, será redondeado al ciclo superior del conmutador de tareas en OS/2, normalmente, son 32 milisegundos. Por otro lado, OS/2 es un Sistema Operativo multitarea por prioridades, por lo que puede ocurrir que en el momento en que expire un temporizador, haya otro proceso de más prioridad esperando a ejecutarse, en cuyo caso se producirá otro retardo. Sin embargo, existen maneras de minimizar estos efectos, y OS/2 las ofrece. Una primera clasificación de los temporizadores los divide en síncronos y asíncronos. Un temporizador síncrono se activa y no devuelve el control al thread hasta que este termine. Es el caso más básico: si queremos hacer una pausa de 1 segundo, llamamos a la función DosSleep, y el thread correspondiente se dormirá durante el tiempo fijado. Como ejemplo tenemos el contador: DosSleep. Sin embargo, puede no interesarnos este sistema, sino que durante ese intervalo podemos necesitar hacer alguna operación y luego dormirnos hasta terminarlo. Un temporizador asíncrono necesita de un semáforo, pues lo necesita para notificar al thread que se ha acabado el intervalo de tiempo. Como ejemplo tenemos el contador: DosAsyncTimer Como decíamos, la temporización no es precisa por estar redondeada a 32 milisegundos. Esto puede ser problemático cuando se encadenan temporizaciones. UNEFA ING. SISTEMAS Página 27 Existe otro temporizador asíncrono que borra un semáforo no una vez, sino constantemente, a cada paso del ciclo. Este temporizador, como es cíclico está contando constantemente intervalos del tiempo que queramos. Como ejemplo tenemos los contadores: DosStartTimer DosStopTimer Por último, tenemos las funciones de fecha y hora, las cuales permiten obtener y cambiar estos datos. Un detalle importante es que solo existe una fecha y una hora en el ordenador. Esto significa que si un programa los cambia, lo hace para todos, no solo para él mismo. Como ejemplo tenemos los contadores: DosGetDateTime DosSetDateTime SEGURIDAD DEL OS/2 EL OS/2 protege a las aplicaciones unas de otras y evita que dañe el sistema operativo. La protección es vital sobre todo en redes de computadoras a través de las cuales interactúan muchos usuarios. OS/2 utiliza mecanismos de protección de anillo del 80286. Las aplicaciones se ejecutan en anillos, el núcleo y los manejadores de dispositivos se ejecutan en anillo; ciertas rutinas que requieren privilegios de Entradas y Salidas se ejecutan en anillo. Un programa en cualquier anillo tiene acceso a los datos de ese anillo de números más altos. En DOS, el ambiente de un programa es todo el sistema de computo, pero en OS/2 muchos procesos comparten la maquina. Los procesos compiten entre sí por los recursos y pueden solicitar acceso simultáneo a recursos específicos. OS/2 aísla los programas para que perciba un ambiente coherente cada vez que se ejecuten. DESEMPEÑO Y PRODUCTIVIDAD El OS/2 tiene muchos beneficios de la productividad, debido que es un sistema operativo ideal para la automatización de oficinas, proporciona manejadores UNEFA ING. SISTEMAS Página 28 gráficos independientes de los dispositivos, logra que las aplicaciones tengan acceso directo a periféricos con gran ancho de banda, ofrece capacidad multitarea, proporciona un ambiente adaptado para cada programa y ofrece un ambiente protegido para garantizar la estabilidad del sistema. También incluye en cuanto a productividad el Workplace Shell el cual nombramos anteriormente. Este es un icono basado en una interface de usuario orientada a objeto en la computadora. Más acciones pueden ser realizadas con simples movimientos del mouse y son fáciles de aprender y usar. Por ejemplo, para imprimir un archivo simplemente se arrastra al objeto impresora, para crear una carpeta, simplemente se arrastra una plantilla carpeta sobre el escritorio. La orientación a Objeto se refiere a la manera en la cual el Workplace Shell es construido. Todas las cosas en la computadora, programas, archivos de datos, dispositivos tales como impresoras o tarjetas de sonidos son representados como objetos, cada uno de los cuales tiene su propia serie de propiedades y controles. El Workplace Shell es la interface gráfica de usuario más poderosa disponible para computadoras de escritorio. OS/2 ofrece multitarea para poder controlar varias actividades en forma simultánea. El usuario que trabaja con una aplicación puede estar imprimiendo los resultados de una aplicación anterior, puede estar recibiendo también otras cosas a la vez. El DOS utiliza una planificación apropiada, porque se le puede quitar al CPU un proceso y dárselo a otro que se considere más importante. OS/2 utiliza administración de memoria virtual, para que cada usuario controle su propio espacio de direcciones. Los espacios de direcciones virtuales pueden ser muchos mayores que el de almacenamiento real disponible. OS/2 recupera memoria que unos procesos ya no necesiten para asignárselas a otros. También maneja compromisos excesivos de memoria, es decir, que se ejecuten un conjunto de programas aunque el rendimiento total de la memoria sea mayor que la memoria real del computador. UNEFA ING. SISTEMAS Página 29 Las primeras versiones de OS/2 utilizaban segmentación pura, las versiones posteriores basadas en el microprocesador 80386 utilizan paginación. En un ambiente de tarea única, un programa debe incluir todas las capacidades que requieren y que no sean proporcionadas directamente por el sistema operativo. Esto tiende a fomentar el crecimiento de los programas más pequeños. En un OS/2 multitarea es mejor crear programas más pequeños, cada uno de los cuales realiza bien una función o un conjunto de funciones afines y después hacer que se comuniquen entre sí estos programas para alcanzar los objetivos del usuario. Tal enfoque recibe a veces el nombre de herramienta de software. El modelo convencional de Manejador de dispositivos empleado en OS/2 puede ser demasiado lento para dispositivos que requieran interacción a alta velocidad, sobre todo cuando se trasmite cantidades relativamente pequeñas de información en cada ocasión. OS/2 permite a las aplicaciones obtener acceso directo a los puertos de E/S de un dispositivo y a su memoria de dispositivo; no obstante, este acceso solo permite en una forma controlada, a través de mecanismos de privilegios de E/S. VENTAJAS DE OS/2 Como el uso real de memoria, la ejecución en modo protegido el soporte de multiprogramación. En los sistemas IBM tiene parte del núcleo del Sistema operativo cargado en el núcleo de OS/2 lo que permite una mejor ejecución que en su contraparte los clones: estos basan su núcleo en software, el cual se contiene en la RAM; facilitando la función del OS/2. La razón principal de OS/2 es ser MULTITAREAS y el nuevo sistema de archivos: para disco duro conocidos con HPFS, OS/2 puede proteger los programas, de otros programas que los puedan bloquear, OS/2 puede arrancar cada programa de MS-DOS de Windows, de 32 bits de espacio de direccionamiento, UNEFA ING. SISTEMAS Página 30 La arquitectura de memoria OS/2 también anula la llamada barreara de los 64 K OS/2 permite que los programas tengan multi-threaded, memoria virtual. Tiene gran aceptación como servidor en instituciones bancarias, donde demuestran buenos resultados como servidores y plataformas para aplicaciones de DOS y Windows. La implementación del formato de ficheros HPFS (High Performance File System). Que da más robustez en el manejo de archivos La menor fragmentación de ficheros: HPFS busca primero una zona en donde el archivo entre completo, con lo que la fragmentación de ficheros es prácticamente inexistente. Mayor capacidad: HPFS admite discos duros de hasta 512 gigabytes de capacidad, manteniendo el tamaño del cluster. Soporte para nombres largos: permite nombres de hasta 256 caracteres. Mayor seguridad: si al grabar en un sector se detecta un error, se marca automáticamente como defectuoso y se graba en otra parte. Mayor velocidad en el acceso, gracias a la estructura jerárquica de directorios, que optimiza el acceso a disco. DESVENTAJAS DE OS/2 OS/2 seguía siendo un Sistema Operativo de 16 bits. Al usarse con Windows para trabajo en grupos 3.1, (WFW), la capacidad de red esta inhabilitada bajo OS/2. En la versión Win-OS/2 se requiere que el usuario tenga Windows 3.1 para ejecutar programas Windows desde OS/2. Como podemos ver este sistema depende casi siempre de Windows a diferencia de otros como LINUX Y UNIX. Cuando OS/2 trabaja con Windows la computadora realiza sus procesos en un tiempo más lento. UNEFA ING. SISTEMAS Página 31 CONCLUSIONES A través del desarrollo de este proyecto podemos concluir que: De todos los sistemas operativos, OS/2 fue tal vez el de mayor impacto en la década de los 80 o quizás sólo superado por Unix. OS/2 se diseñó de manera compatible con la arquitectura 8086/8088 empleada en los pequeños modelos IBM PC y con la arquitectura y con la arquitectura 80386 popularizada con los modelos IBM PC AT. Un problema especial al que se enfrentaron los diseñadores de OS/2 es que al incluir un modo real de ejecutar OS/2 en un contexto OS/2, es que DOS es un sistema de tarea única diseñado para usuarios que ejercen el control total sobre sus máquinas. En cambio OS/2 ofrece una función de bloqueo de archivos para evitar conflictos entre usuarios que hacen referencia simultanea a un archivo. OS/2 está diseñado para ejecutarse en red en las cuales las máquinas OS/2 se comunican con facilidad y flexibilidad con máquinas DOS, y en los que puede estar presente varias versiones de OS/2 al mismo tiempo. En OS/2 una aplicación no puede tener acceso a la memoria de otra, ni modificarla. La ejecución no afectará el funcionamiento correcto de otra . Cuando se presente errores OS/2 los localiza para evitar que perjudiquen a otros aspectos del sistema. También ayuda al usuario a encontrar el origen del error. Ningún programa puede hacer por sí sólo que se caiga el sistema o provocar que falle cualquier otro grupo de pantalla que no sea el suyo propio. UNEFA ING. SISTEMAS Página 32 BIBLIOGRAFÍA Manual IBM Capacitación Libro 4 Programación Multihilos. Edición Octubre 2007. Págs.: 3-87 Manual IBM Capacitación Libro Sistemas Operativos. Edición Septiembre 2007. Págs.: 4-80 REFERENCIAS ELECTRÓNICAS http://www.monografias.com/trabajos/os2/os2.shtml Consultado el 22/06/2010 a las 22:00 horas http://es.wikipedia.org/wiki/OS/2 Consultado el 22/06/2010 a las 22:00 horas http://es.wikibooks.org/wiki/Manual_de_programaci%C3%B3n_d e_OS/2 Consultado el 22/06/2010 a las 22:00 horas http://bitelia.com/2010/06/vuelve-os2-el-sistema-operativo-deibm Consultado el 22/06/2010 a las 22:00 horas UNEFA ING. SISTEMAS Página 33