Download SISTEMA OPERATIVO OS/2 GENERALIDADES, FUNCIONES Y

Document related concepts

Arquitectura de Windows NT wikipedia , lookup

Windows NT wikipedia , lookup

Archivo proyectado en memoria wikipedia , lookup

Núcleo (informática) wikipedia , lookup

Sistema operativo wikipedia , lookup

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