La huella
Principia       OS/2

Solo una barra

Las metas de OS/2 fueron crear un sistema operativo para oficina, proveyendo independencia de hardware, capacidad multitarea, ambiente personalizable, y entorno estable. Adicionalmente, OS/2 es creado bajo el standard SAA (System Application Architecture) de IBM, haciendo que el desarrollo de aplicaciones sea compatible con las arquitecturas System 370, System 3x y PS/2.

En esencia, OS/2 es un sistema operativo monousuario - multitarea. Este se encuentra formado por un conjunto de rutinas que son llamadas cada vez que se desea obtener algún servicio. Su diseño fue pensado para optimizar las respuestas más que el throughput.



CRONOLOGIA

1985
IBM y Microsoft firman un acuerdo para desarrollar un sistema operativo multitarea de propósito general denominado MS-DOS versión 5.0, el nombre cambió después a CP/DOS y finalmente a OS/2.

1987
Se libera el MS-DOS 3.3. Esta versión corre en equipo PC tradicional, pero está pensada como punto de entrada para el PS/2 y como un medio de transición en la migración hacia los sistemas personales de IBM.

IBM presenta el PS/2: nueva generación de computadoras personales diseñadas para el cambiante medio ambiente que demandaba más memoria, poder de procesamiento y capacidad de intercomunicación.

PS/2 modelo 30:

PS/2 modelo 50:

PS/2 modelo 60:

PS/2 modelo 80:

Excepto el modelo 30, el resto incorpora la arquitectura de bus paralelo Micro Channel (Micro Canal). Se trata de un bus multicanal provisto para soportar un ambiente multitareas, soporte de procesadores concurrentes, acceso en 32 bits a datos y señales analógicas. Permite, también, una relación en la intercalación de sectores de 1:1 durante el grabado. El PS/2 incorpora un BIOS de compatibilidad y uno avanzado.

Se presenta la nueva generación de sistemas operativos para computadores personales:

OS/2 Standard Edition v1.0

1988
OS/2 Standard Edition v1.1

OS/2 Extended Edition v1.0

1989
OS/2 Extended Edition v1.1

1994
OS/2 v2.0 Warp

1996
A finales de este año la base instalada de sistemas OS/2 se estima entre 12 y 13 millones (dos veces el número de todas las versiones UNIX instaladas hasta el momento), el incremento anual de embarques de este producto es de 2 a 4 millones y se proyecta que para el año 2000 exista una base de 20 a 30 millones de sistemas2.



VISION DEL USUARIO

Para el usuario el sistema es una interfaz gráfica de texto desde la que se abren sesiones e invocan procesos mediante comandos introducidos por teclado. Bajo la perspectiva de la interfaz gráfica, las sesiones se abren y los procesos se invocan por la acción de un apuntador sobre iconos

.

Sesiones.

El usuario puede abrir varias sesiones y en cada una tener varias tareas ejecutándose. A nivel comando, el usuario tiene control sobre la sessión y, en forma limitada, sobre los procesos (tareas) que haya lanzado. Una sesión nueva se activa con el comando START. La sesión activa se denomina foreground session y las restantes background sessions.


LA VISION DEL SISTEMA

Capacidad Multitarea.

El sistema provee tres niveles en su capacidad multitarea (multitasking).

Aunque el usuario tiene cierto control sobre sus procesos, el control total se obtiene, tanto para procesos como threads, a nivel programación.

Procesos.

Un usuario puede tener varias sesiones, cada sesión mantiene varios procesos y cada proceso varios threads. Para cada proceso, OS/2 asigna un PID (Process IDentification) único y le otorga cierta prioridad. El proceso que crea a otro es el Parent Process y el creado es el Child Process (rutina del sistema DosExecPgm). El padre conoce el PID del hijo, pero no hay forma de saber si el hijo creó a sus propios descendientes. Aunque la opción comand subtree de DosCWait permite saber si una tarea fue llevada a buen término incluyendo a los descendientes del child process.

Los child process pueden ser ejecutados en forma:

Un parent process posee control limitado sobre un child process, este control se reduce a:

Un proceso termina hasta que todos los threads regresan del system call. Sin embargo, es posible terminar el proceso sin o con sus descendientes, según se invoque la rutina de terminación.

La asignación de recursos es controlada por el sistema y es otorgada por proceso. Un child process hereda los recursos y prioridad de su creador.


Threads.

La ruta de ejecución de la CPU a través de un programa se llama Thread of Execution.

OS/2 soporta múltiples threads por proceso y todos comparten los recursos asignados a éste (memoria, file handles). Cada thread sólo tiene sus propios datos y PSW (Process Status Word).

El primer thread es creado automáticamente por OS/2 (thread 1) y se le asigna área de stack. Todos los threads son hermanos sin importar quién creó a quién. Cada uno posee un identificador y heredan la prioridad de su creador. Threads adicionales pueden crearse con la rutina del sistema DosCreateThread y con este llamado debe asignársele memoria.

Si el stack de un thread crece demasiado puede provocar un Stack Fault y terminar con el thread. El thread puede terminar por sí mismo si llama a DosExit o terminar a todos si invoca la misma función con la opción de proceso entero.

La integridad de los datos es controlada a través de semáforos (DosCreateSem) y funciones del sistema que aseguran que sólo un thread puede tener acceso a los datos en un instante determinado (DosSuspendThread, DosResumeThread, DosEnterCritSec, DosExitCritSec).

Scheduling.

La política de administración del procesador bajo OS/2 es del tipo denominado Preemptive Scheduler. Esto significa que la atención del procesador otorgada a un proceso puede ser retirada si otro con prioridad más alta la solicita.

El thread listo para ser ejecutado con más alta prioridad es atendido. Este correrá hasta que termine o hasta que su tiempo expire. El siguiente thread es ejecutado entonces. Realmente, lo que atiende el scheduler son threads no procesos, aunque todos los threads de un proceso tienen la misma prioridad.

Se contemplan dos niveles de prioridades:

OS/2 tiende a incrementar la prioridad de procesos I/O-bound, i.e. los procesos que están condicionados al flujo de la transferencia en las operaciones de entrada-salida. En contraparte, tiende a decrementar la prioridad de los procesos CPU-bound (DosGetPrty, DosSetPrty). Un background thread no puede tener prioridad mayor a un foreground thread. Threads de la misma prioridad son atendidos en round-robin.

Enlace Dinámico.

La técnica de Enlace Dinámico (Dynamic Linking) permite a un programa llamar a una subrutina que no ha sido incluida (ligada, enlazada) en el código ejecutable. OS/2 resuelve automáticamente estas referencias cuando se carga el programa (load time) o cuando se ejecuta (run time). Bajo un esquema tradicional, cuando todas las referencias externas son resueltas en tiempo de compilación (Static Linking), la resolución de enlaces hace a un programa más rápido en su carga o ejecución pero lo hace dependiente de las versiones y cada cambio implica un religado.

Dynamic Linking Libraries (DLLs) contienen rutinas de propósito general, incluyendo la Application Programming Interface (API) de OS/2.


File System.

La primera versión de OS/2 incluyó un sistema de archivos muy similar al de DOS.

OS/2 maneja por defecto 3 file handles (identificadores formados por enteros de 16 bits). Para el usuario estos son identificados como STDIN, STDOUT y STDERR.

Es posible dividir un disco en varios pequeños. Cada uno con su FAT y file system completo (Extended Partitioning).

Para OS/2, un volumen es un floppy, disco o partición. El volume ID se crea con un checksum del nombre del usuario, combinándolo con los segundos desde 1980 y usando esto como semilla para un generador de números aleatorios que regresa un valor de 0 a 4x109.

Los nombres de los archivos son iguales que en MS-DOS.

Una característica de OS/2 es que permite hacer uso de Installable File Systems (IFS). Estos son como Device Drivers que se cargan en la inicialización del sistema (boot).

Memory Management.

El Memory Manager aloja memoria física y virtual a los procesos Cada referencia de memoria resulta en una referencia de selector de segmento que referencía a una entrada de la Global Descriptor Table o la Local Descriptor Table (contienen dirección física y longitud).

Los programas acceden a memoria únicamente a través de la GDT o LDT. En OS/2 no se pueden cambiar los vectores de interrupción, para protección del ambiente multitarea.

El 80286 provee un mecanismo de protección de anillo. Las aplicaciones corren en el anillo 3 (no privilegiado), rutinas requiriendo de ciertos privilegios de I/O corren en el anillo 2, Device Drivers corren en el anillo 0 (privilegiado) junto con el Kernel. El acceso a datos es sólo en orden ascendente. Por esto las aplicaciones no pueden hacer llamadas directas al ROM BIOS.

OS/2 Soporta named shared memory y giveaway shared memory La memoria se aloja por segmentos o en parte de ellos. Versiones iniciales ejecutaban el swaping por segmento, versiones basadas en el 80386 recurren a la paginación. El algoritmo de reemplazo es el Least-Recently-Used. Se permite el Memory Overcommit.

Interprocess Communication.

La comunicación entre procesos es realizada de varias formas:

Shared Memory
La memoria compartida puede ser de dos tipos: giveaway shared memory, con la que el propietario del segmento otorga acceso a otros procesos usando un segment selector, o named shared memory, con la que se gana acceso usando el nombre del segmento.
Semaphores
Dos tipos de semáforos son soportados: RAM semaphores (estructuras de 4 bytes usadas para mantener un registro de los threads de un proceso, creados en el address space de éste) y system sempahores (mantenidos en el área del sistema).
Anonymous Pipes
Creados y usados mediante los procedimientos standard del sistema de redireccionamiento de E/S. Son usados por procesos invocados uno tras otro, en los que la salida del primero debe ser usado como entrada del segundo (FIFO).
Named Pipes
Son creados asignándoles un nombre. Los procesos se comunican a través del pipe utilizando el nombre. Los procesos no necesariamente deben ser invocados uno tras otro.
Queues
Permiten la comunicación entre procesos mediante mensajes en vez del flujos de bytes. Pueden ser usado para funcionar en modo LIFO o FIFO.
Signals
Son el equivalente de las interrupciones de hardware. La señal consiste de un valor que es interpretada por una rutina dedicada.

INTERFAZ

OS/2 proporciona dos interfaces. Una orientada a modo caracter denominada VIO y una interfaz gráfica de ventanas conocida como Presentation Manager. La interfaz orientada a caracter es conocida como Workplace Shell.

OTRAS CARACTERISTICAS

Adicionalmente, OS/2 cuenta con los siguientes elementos:

Device Monitors
Permiten el control de los diversos dispositivos mediante un conjunto de rutinas standard del sistema.
Data Integrity
File Sharing y Record Locking garantizan la integridad de los datos bajo un ambiente multitarea.
Timer services
Conjunto de rutinas del sistema para el control del reloj del sistema.
Device Drivers
De manera similar a MS-DOS, los device drivers de OS/2 cuentan con una Device strategy routine y Device Interrupt routine y están diseñados tanto para dispositivos de caracteres o bloques.
Hardware errors
Una rutina residente del sistema se encarga de supervisar el estado del sistema para detectar fallas de hardware.
Device Helper Services
Interfaces de bajo nivel del kernel para complementar los servicios de los dispositivos.
Mouse & Keyboard support
El sistema cuenta con rutinas propias para el control del ratón y teclado.

Referencias.

  1. Operating Systems, Harvey M. Deitel, Addison-Wesley, 2nd Edition, 1990, USA. ISBN 0-201-50939-3.
  2. Computers. Technology 1997 Analysis & Forecast; IEEE Spectrum, The Institute of Electrical and Electronic Engineers, Inc., USA; January 1997, pp. 49-54.
  3. Operating environments change for the better, Program Notes, John R. Hines; IEEE Spectrum, The Institute of Electrical and Electronic Engineers, Inc., USA; June 1992, pp. 58-59.

Ultima revisión: . Este texto puede ser copiado y reproducido libremente mientras su contenido no sea alterado, se cite la fuente y referencias. M. en C. Eduardo René Rodríguez Avila. © Todos los derechos reservados.
Last update: .