Вы находитесь на странице: 1из 71

OS/2

Integrantes:.
FACULDAD DE INGENIERIA
SEDE CAETE
INDUSTRIAL Y DE SISTEMAS

UNIVERSIDAD NACIONAL DEL CALLAO


Escuela
Profesional
de Ingeniera
Sistemas
ORDOEZ
SOVERO,
Brissett.
Profesor:deIng.
Edgar
Ciclo:
RODRIGUEZ PELAEZ, Katty. Espinosa.
VIIIPAREDES, Jefersson.
SIERRA

SISTEMA OPERATIVO

INDICE

INTRODUCCION
SISTEMA OPERATIVO OS/2
VERSIONES OS/2
COMPATIBILIDAD DEL SISTEMA OPERATIVO OS/2
KERNEL OS/2

ACCESO AL API DE OS/2

FUNCIONES DE ACCESO A FICHEROS Y AL HARDWARE.

ESTRUCTURA DE OS/2 (SISTEMA DE FICHEROS Y SUBSISTEMAS).

EL SISTEMA DE FICHEROS DE OS/2.

LOS SUBSISTEMAS DE OS/2.

EL SUBSISTEMA DE VIDEO (API VIO).

EL SUBSISTEMA DE TECLADO (API KBD).

MODOS DEL TECLADO.

EL SUBSISTEMA DE RATN (API MOU).

ACCESO A LAS FUNCIONES DE 16 BITS. EL THUNKING.

GESTION DE MEMORIA EN EL MODO PROTEGIDO DEL 286

GESTION DE MEMORIA EN EL MODO PROTEGIDO DEL 386

MULTITAREA.
o

CONCEPTO DE THREAD.

CONCEPTO DE PROCESO.

CONCEPTO DE SESIN.

ESTRUCTURA DE OS/2 (SELECTOR DE PROGRAMAS, SESIONES, PROCESOS Y


THREADS).

GESTION DE MEMORIA.

FUNCIONES DE SINCRONIZACIN ENTRE THREADS Y PROCESOS.


o

CONCEPTO DE SEMFORO.

SERVICIOS DE TEMPORIZACIN.

COMUNICACIN ENTRE PROCESOS

SEMFOROS Y MEMORIA COMPARTIDA.

CAUCES.

COLAS.

APENDICE A

LLAMADAS DOSXXX DEL SISTEMA DE FICHEROS

INTRODUCCION
Un sistema operativo explota los recursos de hardware de uno

o ms

procesadores para ofrecer un conjunto de servicios a los usuarios


sistema operativo.

del

Tambin gestiona la memoria secundaria y los

dispositivos E/S en nombre de los usuarios.

OS/2

es un sistema operativo desarrollado con la ambicin de

satisfacer las necesidades de muchos usuarios as como mejorar a los


sistemas operativos que antes de l se haban creado.

Los objetivos principales de los diseadores de OS/2 fueron crear un


sistema operativo ideal para la automatizacin de oficinas, proporcionar
manejadores

grficos

independientes

de

los

dispositivos,

que

las

aplicaciones tuviesen acceso directo a perifricos con gran ancho de banda,


ofrecen capacidad multitarea, proporcionar un ambiente

adaptado para

cada programa y para sus descendientes adems de ofrecer un ambiente


protegido para garantizar la estabilidad del programa.

OS/2 fue diseado en un principio por Microsoft con ayuda de IBM


con el objetivo de reemplazar a MS-DOS, cosa que no sucedi, tras tener
OS/2 sus propias caractersticas favorables como: uso real de

memoria,

ejecucin en modo protegido y soporte de multiprogramacin en forma


elegante; no fue finalmente aceptado por los usuarios.

SISTEMA OPERATIVO OS/2


OS/2 es un sistema operativo multitarea para PCs creado en la
dcada pasada, pero que no ha perdido su vigencia, bastante usado por
empresas en aplicaciones crticas, servidores, comunicaciones (en 1992 se
calculaba que ms del 90% de los cajeros automticos del mundo usaban
como sistema operativo a OS/2) y por usuarios particulares.
Entre otras cosas, provee:
Estable - Su estabilidad slo es comparable con la de Unix, y puede
correr decenas de programas de forma simultnea sin degradar su
performance ni su disponibilidad de memoria.
Multitarea y Multithreading - La posibilidad de ejecutar varios "hilos"
dentro de una misma aplicacin. Esto permite una multitarea mucho mas
eficiente y un mejor desempeo de los programas diseados para el.
Ejecucin de programas DOS y Windows - "Mejor Windows que
Windows" fue una frase que IBM us mucho hace unos aos para describirlo.
Dada la mejor multitarea, mejor manejo de memoria y dispositivos en
general, y de dispmitiendo nombres largos y atributos extendidos, bajo slack
space (los clusters son de 512 bytes) y fragmentacin (casi nula en
ambientes normales), y alta velocidad en acceso a los archivos.

WorkPlace Shell - El mejor desktop para computadoras personales (y


no tanto) que existe hasta la fecha. Muy intuitivo, orientado a objetos,
extensible y muy consistente, muy integrado con el sistema operativo y
especialmente potenciable va exx o programas de usuario. An no he
encontrado algo que se le compare ni para Macintosh, Windows 95/NT, o X
Windows que se le acerque.
Compatibilidad con otras plataformas - Aparte de la ya nombrada
capacidad de correr de forma inmejorable aplicaciones para DOS y Windows
3.x, dispone de una serie de herramientas para ejecutar o portar
aplicaciones desde otros sistemas operativos y plataformas. Con las libreras
EMX es relativamente fcil portar aplicaciones desde Unix, teniendo desde
hace ya aos Apache, XFree86 con muchas de sus aplicaciones, la mayora
de las aplrientado a objetos, extensibles y muy consistentes, muy
integradas con el sistema operativo y especialmente potenciable va exx o
programas de usuario. An no he encontrado algo que se le compare ni para
Macintosh, Windows 95/NT, o XWindows que se le acerque.
Compatibilidad con otras plataformas - Aparte de la ya nombrada
capacidad de correr de forma inmejorable aplicaciones para DOS y Windows
3.x, dispone de una serie de herramientas para ejecutar o portar
aplicaciones desde otros sistemas operativos y plataformas. Con las libreras
EMX es relativamente fcil portar aplicaciones desde Unix, teniendo desde
hace ya aos Apache, XFree86 con muchas de sus aplicaciones, la mayora
de las aplicaciones GNU, y mucho mas. IBM provee las bibliotecas Open32,
que permiulnerables a ataques del exterior como lo son de forma genrica
los sistemas operativos Unix y WindowsNT.

VERSIONES OS/2
OS/2 1.0 (1987):
Diseado originalmente por Microsoft con la ayuda de IBM.
procesador 286 era el ltimo y ms grande chip.
introduce

OS/2

1.0

1987;

este

corre

en

Tras esto,

modo

texto

Cuando el
Microsoft
programas

extremadamente poderosos.

OS/2 1.1 (1988) 1.3(1991):


Incluy administrador de presentacin, alta ejecucin del sistema de
archivos que permite nombre de archivos largos.

OS/2 2.0 (1992):


Interfaz con el usuario de forma ms acogedora, por ejemplo par imprimir
slo se debe arrastrar el icono del objeto sobre la impresora. 32 bits, 386
basado en Kernel, produjo limitaciones como nunca antes.

OS/2 2.1 (1993):


Introdujo un sistema grfico de 32 bits con algunas mejoras en algunos
aspectos en velocidad y muchos ms manejadores;
- Multitarea presentacin Manager (MMPM/2)
-

Lista estndar de aplicaciones

Utilitarios OS/2.

OS/2 WARP 3.0 (1994):


Producto refinado y fulido que luci un Kernel mucho ms rpido y nuevas
rutinas de intercambio con mayor velocidad.
OS/2 tuvo el frenes de Internet de 1995 con su Internet Acceskit.
OS/2 WARP CONNECT (1995):
OS/2 en el mango punto a punto y estaciones de trabajo cliente OS/2 por
diseo tiene incluido en el Sistema Operativo la gestin de redes.

Es

conocido como un sistema confiable para clientes de redes o para pequeos


servidores.

OS/2 WARP SERVER (1996):


El mayor Sistema Operativo de redes muy eficiente y requiere menos
Hardware que sus equivalentes funcionales NT y UNIX.

OS/2 WARP 4.0 O MERLIN (1996):


Segunda versin de OS/2 Warp.

Nunca existir una versin

OS/2 sola

siempre ser un servicio de cliente y redes de punto en todas las futuras


versiones de OS/2.

COMPATIBILIDAD DEL SISTEMA


OPERATIVO OS/2
OS/2 a la multiprogramacin es compatible con todos los programas
DOS. Incluye su propia mquina virtual de DOS, es decir, puede ejecutar
programas DOS desde dentro del OS/2 (sin tener que reiniciar a modo MSDOS).
La elasticidad de DOS en ventana, en pantalla completa o sesiones
DOS de disquete. sta ltima consiste en que sin abandonar OS/2 se puede
ejecutar cualquier versin de MS-DOS real a partir de un disquete de
arranque y se puede alternar entre OS/2 y esta sesin MS-DOS sin reiniciar
el ordenador.
Adems es capaz de ejecutar simultneamente aplicaciones DOS,
WINDOWS Y OS/2. sta hace que OS/2 se convierta en una buena eleccin
para el usuario ya que hay muchas opciones disponibles en software para
seleccionar y usar.

KERNEL OS/2

El ncleo de cualquier sistema operativo proporciona las funciones bsicas


para ese sistema operativo. Es la parte del sistema operativo que realiza
funciones bsicas tales como la asignacin de los recursos de hardware
como la memoria y el tiempo de CPU. El OS / 2 funciones del ncleo residen
en el archivo ejecutable OS2KRNL que se carga durante el inicio. Tenga en
cuenta que el nombre del archivo no tiene extensin.
El ncleo de OS / 2 realiza las siguientes funciones bsicas.
1.

Gestin de la memoria. Los kernel puede asignar memoria y


desasigna y asigna direcciones de memoria fsica en base a las
solicitudes,

ya

sea

implcita

explcita,

de

los

programas

de

aplicacin. En cooperacin con la CPU, el ncleo tambin administra el


acceso a la memoria para asegurar que los programas slo acceso a las

regiones de la memoria que han sido asignados. Parte de la gestin de


memoria incluye la gestin del archivo SWAPPER.DAT y el movimiento de
pginas de memoria entre la RAM y el archivo de intercambiador en el
disco duro.
2.

Gestin de tareas. El kernel OS / 2 maneja la ejecucin de todas las


tareas que se ejecutan en el sistema. La porcin planificador del ncleo
asigna tiempo de CPU para cada proceso que se ejecuta en base a su
prioridad y si es capaz de ejecutar. Una tarea que se bloquea - tal vez
est a la espera de los datos que se entregarn a partir del disco o de la
entrada del teclado - no recibe el tiempo de CPU. El kernel de OS / 2
tambin se adelantar una tarea de menor prioridad cuando una tarea
de mayor prioridad se convierte en desbloqueado y capaz de correr.

3.

La comunicacin entre procesos. Comunicacin entre procesos


(IPC) es vital para cualquier sistema operativo multitarea. Muchas tareas
se deben sincronizar o se comunican entre s para garantizar que su
trabajo se coordine adecuadamente. El ncleo gestiona una serie de
memoria methods.Shared IPC se utiliza cuando dos tareas necesitan
para pasar datos entre ellos. El portapapeles OS / 2 es un buen ejemplo
de la memoria compartida. Los datos que se cortan o copian en el
portapapeles se guardan en la memoria compartida.Cuando los datos
almacenados se pega en otra aplicacin, que la aplicacin busca los
datos en el rea de memoria compartida del portapapeles.
Las canalizaciones con nombre se pueden utilizar para comunicar datos
entre dos programas. Los datos pueden ser empujadas dentro de la
tubera por un programa y el otro programa puede extraer los datos
fuera del otro extremo de la tubera. Un programa puede recopilar datos
con gran rapidez y empuje en el tubo. Otro programa puede tomar los
datos del otro extremo de la tubera y, o bien que aparezca en la
pantalla o guardarlo en el disco, pero se puede manejar los datos a su
propio ritmo.
Los semforos se pueden utilizar para coordinar la actividad de los dos
programas o dos hilos separados dentro de un solo programa. Cuando
una tarea establece el semforo, por ejemplo, la otra tarea no puede
proceder hasta que el primero ha restablecer el semforo.

4.

La gestin de dispositivos. El ncleo gestiona el acceso al


hardware fsico a travs del uso de controladores de dispositivos. Acceso
a dispositivos fsicos debe ser manejada con cuidado, o ms de una
aplicacin puede intentar controlar el mismo dispositivo al mismo
tiempo. El ncleo de OS / 2 logra esto de modo que un solo programa en
realidad tiene el control de acceso o a un dispositivo en cualquier
ejemplo dado moment.One de esto es un puerto COM. Slo un programa
puede comunicarse a travs de un puerto COM en cualquier momento
dado. Si est utilizando el puerto COM para obtener su direccin de email a travs de Internet, por ejemplo, y tratar de iniciar otro programa
que intenta utilizar el mismo puerto COM como HyperAccess Lite, el
ncleo de OS / 2 que detecta el puerto COM es ya en uso. El kernel
utiliza entonces el controlador de errores de hardware (HARDERR.EXE)
para mostrar un mensaje en la pantalla que el puerto COM est en uso.

5.

I / O de Gestin. El ncleo tambin se encarga de gestionar los


dispositivos de E / S. Esto incluye el puerto paralelo y serial I / O, y el
sistema de archivo de E / kernel O.The realidad no manejar el acceso
fsico en el disco, sino que gestiona las solicitudes de disco I / O
presentadas por los diferentes programas que se ejecutan. Pasa a estas
solicitudes en el sistema de archivos, ya sea FAT, HPFS, CDFS (sistema
de archivos de CD-ROM), o NFS (Network File System), y gestiona la
transferencia de datos entre el sistema de archivos y los programas que
solicitan.
Durante el proceso de arranque, el ncleo tambin se encarga de cargar
y procesar el archivo CONFIG.SYS.
La mayor parte del cdigo de la aplicacin real de estas funciones a
nivel del ncleo reside en las bibliotecas de vnculos dinmicos como
DOSCALL1.DLL. El procesador de comandos cmd.exe es tambin parte
del kernel. Algunos comandos bsicos de lnea de comandos tambin se
incluyen en el ncleo como parte del archivo cmd.exe. Los comandos
son llamados comandos internos debido a que son una parte del
ncleo. Los comandos DEL COPIA y son ejemplos de los comandos
internos.

FUNCIONES DE ACCESO A FICHEROS


Y AL HARDWARE
ESTRUCTURA DE OS/2
(SISTEMA DE FICHEROS Y SUBSISTEMAS)
Vamos a empezar por ver como acceder al disco, pantalla y teclado en OS/2.
Si bien es cierto que todos los lenguajes de programacin ofrecen
instrucciones estandar (y sobre todo, portables) para acceder a estos
dispositivos, el uso de las funciones especficas que ofrece OS/2 nos permite
conseguir mejores rendimientos. Un ejemplo es la lectura de datos desde un
fichero. Si usamos las funciones estandar de C, por ejemplo, leeremos datos
de un en un byte; dado que, al compilar, estamos haciendo una llamada al
sistema en s, en principio sera lo mismo usar estas funciones que las de
OS/2; sin embargo, OS/2 permite leer multiples bytes de una sola vez. La
ventaja es que para cada lectura hay que llamar al ncleo de OS/2, lo cual
consume mucho tiempo. Si tenemos que hacer 100 llamadas estandar para
leer 100 bytes, ser un proceso bastante lento. Pero si usamos una llamada
de OS/2 para leer los 100 bytes de una sola vez, al haber una sola
transicin programa-nucleo-programa, la lectura ser notablemente ms
rpida. Es imposible acelerar esa transicin, pues no es problema de OS/2,
sino de la propia arquitectura Intel.
IMPLEMENTACIN DEL SISTEMA DE FICHEROS DE OS/2
En este grfico vemos como est construido el acceso a los dispositivos en
OS/2.

En el esquema, vemos que la aplicacin se comunica con el Sistema de


Ficheros de OS/2, que forma parte del ncleo, 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 enva los caracteres al
Subsistema de Video (VIO), que es la parte encargada de controlar la
totalidad de accesos a la pantalla. Lo mismo si se trata del teclado, el ratn
o un fichero de disco.
La razn 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 ser
tratada como un conjunto de caracteres en serie. Esta independencia de
estructura es cmoda para algunas aplicaciones, pero en otras puede ser
mejor poder acceder directamente a cada dispositivo, normalmente por
razones de velocidad. Esa es la razn de que OS/2 permita a las
aplicaciones acceder directamente a los Subsistemas de Video (VIO),
teclado (KBD) y ratn (MOU). A travs de estos, podemos por ejemplo hacer
funciones de Scroll en la pantalla, conocer la posicin del ratn, etc.
Podemos comparar los Subsistemas de OS/2 con la BIOS del ordenador, si
bien estos son ms completos que aquella en muchas funciones, y sobre
todo mucho ms rpidos.

EL SISTEMA DE ARCHIVOS DE OS/2


La parte bsica de la conexin entre el hardware del ordenador y el
programador se encuentra en el Sistema de Archivos. Es l quien se
encarga de darnos acceso a los ficheros del disco, al teclado y a la pantalla
en modo texto. La ventaja que tiene esto es que nos abstrae totalmente de
las caractersticas del hardware, presentndonos todo como una ristra de
caracteres.
El acceso a un fichero sigue una serie de pasos absolutamente necesarios:
primero es preciso abrir el archivo, de modo que el programa obtenga
control sobre l; una vez hecho esto, podemos realizar cualquier operacin
de lectura y/o escritura sobre l, y finalizar cerrando el archivo, de modo
que lo liberamos y puede ser accedido por otro programa.
APERTURA Y CIERRE DE FICHEROS
La primera operacin necesaria antes de poder acceder a un archivo es
identificarlo mediante una llamada al Sistema Operativo. A esta operacin
se le denomina apertura del archivo. Le enviamos como parmetros el
nombre del archivo a abrir y una serie de opciones, y nos devolver
un identificador de archivo (en adelante se denominar Handle) que
usaremos para referirnos a l cuando queramos leer o escribir. El
identificador es simplemente un nmero entero. Existe una nica excepcin
en este caso: los archivos estandar no es necesario que sean abiertos, pues
ya tienen asignado un identificador (STDIN=0, STDOUT=1, STDERR=2).
Las opciones de apertura especifican la forma en que el programa va a
acceder a dicho fichero. Por ejemplo, puede querer acceder solo en modo
lectura, o bien puede especificar que si dicho fichero no existe, devuelva un
error, o bien que lo cree. O bien, si existe, puede pedir que lo sobreescriba.
Etc.
El cierre del fichero se hace al final del acceso, cuando ya no vamos a leer o
escribir nada ms en l. Esto permite su liberacin, de modo que cualquier
otro programa puede acceder a l con total libertad.

DosOpen

DosClose

LECTURA Y ESCRITURA DE DATOS


Una vez que hemos abierto un fichero, podemos acceder a l. Los ficheros
aparecen como un flujo de caracteres en serie, y el caracter actual est
referenciado por un puntero que se incrementa automticamente despus
de cada operacin. Esto significa que cuando hacemos una lectura de un
fichero, recibiremos el caracter siguiente al ltimo leido. Y cada vez que
escribamos un caracter, lo haremos a continuacin del ltimo escrito. Existe
sin embargo la posibilidad de cambiar la posicin de dicho puntero, de modo
que podemos leer y escribir de forma aleatoria. Esta opcin, sin embargo,
solo funciona con ficheros de disco, y no con dispositivos como el teclado,
pantalla, etc.

DosRead

DosWrite

COMPARTICIN DE FICHEROS
Dado que OS/2 es un Sistema Operativo multitarea, puede ocurrir que dos
(o ms) programas intenten acceder a la vez a un mismo fichero de disco.
Para

evitar

interferencias,

OS/2

ofrece

una

serie

de

opciones

de

comparticin de archivos, que se especifican en el momento de abrirlos.


Estas son:
Modos de acceso al fichero

READ_ONLY: solo se va a leer del fichero.

WRITE_ONLY: solo se va a escribir en el fichero.

READ_WRITE: se va a leer y escribir (es el valor por omisin).


Modos de comparticin

DENY_ALL: OS/2 rechaza cualquier peticin posterior de abrir ese


archivo.

DENY_READ: OS/2 rechaza cualquier peticin de abrir ese archivo


para lectura.

DENY_WRITE: OS/2 rechaza cualquier peticin de abrir ese archivo


para escritura.

DENY_NONE: OS/2 permite cualquier operacin con ese archivo.

Los modos de comparticin permiten elegir la forma en que otros programas


acceden al fichero que tenemos abierto. Por ejemplo, si tenemos un
programa que lee del fichero prueba.txt y lo enva a la impresora, lo lgico
es que lo abra como READ_ONLY, pues no va a escribir nada en l. Por otro
lado, no puede permitir que otro programa modifique el fichero, pero no le
importa que pueda leerlo, por lo que como modo de acceso asigna
READ_ONLY. De esta forma, si otro programa intenta acceder al mismo
fichero, OS/2 solo le dar acceso si intenta acceder en modo READ_ONLY; si
intenta abrirlo como WRITE_ONLY o READ_WRITE, OS/2 le devolver un error.
GESTIN DE DISPOSITIVOS
A travs del sistema de ficheros podemos acceder tambin a los dispositivos
fsicos que forman el ordenador. Existen normalmente una serie de archivos
que identifican a cada perifrico y que nos permiten enviar y recibir datos
hacia y desde ellos.
Los nombres de los archivos de que disponemos son:

COM1-COM4: maneja los puertos serie del ordenador.

CLOCK$: el reloj del sistema.

CON: gestiona la consola (en lectura es el teclado, en escritura, la


pantalla).

SCREEN$: maneja la pantalla.

KBD$: maneja el teclado.

LPT1-LPT3: maneja los puertos pararelo (normalmente la impresora).

NUL: dispositivo nulo. Todo lo que se enve a l simplemente es


ignorado.

POINTER$: gestiona el dispositivo de puntero (el ratn).

Los dispositivos cuyo nombre acaba en $ no son accesibles directamente


por los programas, y es preciso usar funciones especficas para acceder a
ellos. Esto da una mayor riqueza y control sobre ellos.
Funciones del DOS
OS/2 ofrece una gran coleccin de llamadas para gestionar ficheros en el
sistema de archivos. Estas llamadas permiten copiar un fichero a otro,
renombrarlo, borrarlo, cambiar de directorio, etc.

DosCopy

DosMove

DosDelete

DosForceDelete

DosCreateDir

DosDeleteDir

DosQueryCurrentDir

DosQueryCurrentDisk

DosSetCurrentDir

DosSetDefaultDisk

BUSQUEDA DE FICHEROS
En muchas ocasiones un programa necesita conocer todos los ficheros que
coinciden con un patrn determinado. Es el caso, por ejemplo, de querer
mostrar una lista de ficheros que acaben en AL, o que tengan la letra Fen el
tercer lugar, etc. Para ello, OS/2 facilita una serie de funciones que permiten

realizar sto. En ellas se debe especificar un nombre de fichero, sabiendo


que:

El smbolo ? sustituye a cualquier caracter situado en esa posicion.


As, la bsqueda de program?.exe devolver los nombres de los
ficheros que empiecen por program, a continuacin tengan un
caracter cualquiera, y por ltimo, terminen con .exe, como por
ejemplo, programa.exe,

o programz.exe;

pero

no

devolver programad.exe ni programa.

El smbolo * sustituye a cualquier cadena situada desde esa posicin


en adelante. As, la bsqueda de prog* devolver cualquier fichero
que empiece por prog, tenga lo que tenga despus. Por ejemplo,
devolverprograma, progs...

DosFindFirst

DosFindNext

DosFindClose

REDIRECCIN DE ENTRADAS Y SALIDAS


Adems de estos ficheros de dispositivo, existen tambin tres 'archivos'
especiales: la entrada estandar (STDIN), la salida estandar (STDOUT), y la
salida de error estandar (STDERR). Por defecto, STDIN est asociada al
teclado, y STDOUT y STDERR a la pantalla; sin embargo, pueden
ser redireccionadas desde la linea de comandos a un fichero o incluso a otro
programa por medio de cauces o Pipes. Por ejemplo, si tenemos un
programa UPCASE.EXE que lee de la entrada estandar un caracter, lo
convierte en mayusculas y lo escribe en la salida estandar, y hacemos
desde la linea de comandos un
C:\>UPCASE.EXE <entrada.txt >salida.txt
no se quedar esperando a que pulsemos 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.


Hemos redireccionado la entrada al fichero entrada.txt y la salida al

fichero salida.txt. Tambin podemos direccionar la salida de un programa a


la entrada de otro programa distinto, con el caracter |. As, si hiciesemos
C:\>UPCASE.EXE <entrada.txt |MORE.EXE
nos saldra el texto contenido en entrada.txt por pantalla, y cada vez que se
llene sta, esperar a que pulsemos una tecla. La salida de UPCASE.EXE ha
sido tomada como entrada de MORE.EXE.
Para poder hacer sto en nuestros programas, simplemente necesitamos
leer las rdenes a travs de la entrada estandar (indicando 0 como handle
en DosRead) y enviar los resultados y errores por la salida estandar y la
salida de error estandar (indicando respectivamente 1 y 2 como handle
en DosWrite).

VARIABLES DE ENTORNO
Para permitir la colocacin de programas en mltiples directorios y
simplificar algunas opciones de configuracin, OS/2 facilita las variables de
entorno. Se trata de una serie de variables que se definen bien en la lnea
de comandos, bien en el CONFIG.SYS, por medio de la sentencia SET. Por
ejemplo, la lnea
SET mi_variable=C:\OS2UTIL\MIPROGRAMA
asigna

la

variable

de

entorno mi_variable el

valor C:\OS2UTIL\MIPROGRAMA. De este modo, el usuario puede especificar


el directorio en donde estarn 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 estn las librerias,
documentacin, etc. El propio OS/2 hace uso de esta facilidad para
implementar variables como el PATH de datos, etc.

DosScanEnv

OTRAS FUNCIONES DOS


Otras funciones pertenecientes a este grupo son las siguientes:

DosResetBuffer

DosShutdown

DosBeep

LOS SUBSISTEMAS EN OS/2


En principio, el uso del sistema de ficheros para Entrada/Salida con el
teclado y la pantalla debera ser suficiente, pero por desgracia no es as. Su
uso es relativamente lento, por lo que solo parece til utilizarlo cuando

necesitamos 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 Ratn, 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 travs del sistema de archivos (una ristra
de caracteres) 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.
Estrictamente hablando, siempre usamos los subsistemas. El sistema de
ficheros, cuando sabe que una salida es para la pantalla, enva 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 opcin que ralentiza
el sistema. En muchos casos, la prdida de velocidad es totalmente
inapreciable, pero en algunos programas (juegos, aplicaciones a pantalla
completa,...) el uso del sistema de ficheros puede ser totalmente
contraproducente para el rendimiento. Usando el subsistema directamente
nos ahorramos pasos intermedios, a costa de perder la posibilidad de
redireccin y de entrada/salida generalizada para ficheros y dispositivos.
En OS/2 disponemos de los siguientes subsistemas:

Subsistema de Video

Subsistema de Teclado

Subsistema de Puntero (Ratn)

EL SUBSISTEMA DE VIDEO
El subsistema de vdeo (VIO) es el encargado de gestionar la comunicacin
entre los programas y la pantalla. Es, sin duda, el subsistema ms complejo
de los tres, y el que ofrece, por tanto, mayores posibilidades.

Dado que puede haber varios programas ejecutndose a la vez en el


sistema, pero solo uno puede acceder a la vez a la pantalla (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 vdeo virtual). Cuando una aplicacin
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.
FUNCIONES VIO
Salida por TTY virtual
En un extremo se encuentra el primer servicio que ofrece el subsistema VIO,
que es el de salida TTY. Este servicio es casi idntico a la salida de
caracteres por medio del sistema de archivos. De hecho, ste, cuando
comprueba que lo que el programa enva va dirigido a la pantalla, usa este
servicio para realizar la funcin.
Cul es la diferencia entre uno y otro, entonces? Las diferencias son dos: la
primera es que el uso del subsistema VIO es una opcin ms rpida que el
sistema de ficheros; la segunda es que si usamos el subsistema, no
podremos redireccionar la salida a un fichero, o a otro dispositivo de salida.
Siempre ir a la pantalla.
El servicio TTY admite los caracteres de control estndar del ASCII, y
tambin puede soportar ANSI, si ste es activado mediante la llamada
correspondiente.

VioWrtTTY

VioGetAnsi

VioSetAnsi

VioGetMode

VioSetMode

VioGetState

VioSetState

SALIDA DE CADENAS DE CARACTERES


Los siguientes servicios se encargan del tratamiento de la pantalla a ms
bajo nivel. Con ellos podemos imprimir largas cadenas de caracteres con
atributos y leer los caracteres que hay en determinadas posiciones de la
pantalla. Tambin podemos repetir un caracter o una pareja caracteratributo un nmero determinado de veces.
Los atributos son bytes que definen el color de tinta y de fondo para cada
caracter,

as

como

otras

caractersticas

como

el

parpadeo.

Estn

compuestos por un byte, el cual se divide en dos nibbles (grupos de 4 bits).


El nibble de menor peso determina el color de la tinta del caracter, y el de
mayor peso el color de fondo y, segn se encuentre activo o no, el parpadeo
del caracter. La distribucin es como sigue:

Parpadeo activado

Intensidad activada

Bi Significado

Bi Significado

7 Parpadeo del carcter

7 Intensidad del fondo

6 Rojo del fondo

6 Rojo del fondo

5 Verde del fondo

5 Verde del fondo

4 Azul del fondo

4 Azul del fondo

3 Intensidad de la tinta

3 Intensidad de la tinta

2 Rojo de la tinta

2 Rojo de la tinta

1 Verde de la tinta

1 Verde de la tinta

0 Azul de la tinta

0 Azul de la tinta

Los bits de color activan directamente cada una de las componentes del
monitor, de modo que stas se suman directamente, dando lugar a los
siguientes colores:
0

Negro

Azul

Verde

Celeste

Rojo

Magenta

Amarillo

Blanco

El bit de intensidad se limita a hacer estos colores ms o menos brillantes.


Estos servicios orientados a carcter siguen siendo independientes del
hardware utilizado de modo que no es necesario saber como se trabaja a
nivel fsico con ellos. Por otra parte, el propio OS/2 optimiza las
transferencias para cada uno de ellos, de modo que se consigue la mayor
velocidad posible, y se eliminan ciertos problemas inherentes a algunos
sistemas

grficos

(por

ejemplo,

en

las

tarjetas

CGA

sincroniza

automticamente la escritura con el retrasado vertical, de modo que se


evita la aparicin de nieve en la pantalla).
Tanto cuando hacemos una lectura como una escritura, si excedemos el fin
de una lnea se seguir leyendo en la siguiente, y si llegamos al final de la
pantalla no se seguir leyendo ni imprimiendo.

VioWrtCellStr

VioWrtCharStr

VioWrtCharStrAtt

VioWrtNAttr

VioWrtNCell

VioWrtNChar

VioReadCellStr

VioReadCharStr

FUNCIONES DE SCROLL
El subsistema VIO ofrece, adems, la posibilidad de realizar scroll de
ventanas en modo texto. Con este conjunto de funciones, podemos
desplazar parte o toda la pantalla en cualquiera de las cuatro direcciones
posibles. La razn de incluirlas es que resulta mucho ms rpido que hacer
una rutina que lea cada posicin del buffer de video y la reescriba en el
lugar adecuado, aparte de que se trata de una funcin muy comn en casi
cualquier programa.

VioScrollDn

VioScrollLf

VioScrollRt

VioScrollUp

DEFINICIN Y MOVIMIENTO DEL CURSOR


El cursor (el cuadradito parpadeante) es totalmente definible por el usuario
en las sesiones de texto y grficos de OS/2. Podemos definir tanto su
tamao como su posicin dentro del caracter.
Al contrario que en MS-DOS, cuando escribimos en la pantalla de OS/2 la
posicin del cursor no se cambia. Esto se hace as para ganar tiempo.
Normalmente el cursor solo se usa cuando hay que introducir datos por

teclado, y el resto de las veces se suele hacer desaparecer de la pantalla.


Esta es la razn de que halla un conjunto de funciones para situar el cursor.
De esta manera se gana en velocidad.

VioGetCurPos

VioSetCurPos

VioGetCurType

VioSetCurType

ACCESO AL LVB
Cuando se necesite alta velocidad, se puede pedir acceso directo al buffer
virtual de video asociado con la aplicacin. Al hacerlo, OS/2 devuelve un
puntero a la zona de memoria en donde est situado, con lo que podremos
escribir en l como si se tratase de la pantalla fsica. Una vez que hemos
terminado, debemos enviar una orden de retrasado, que har que OS/2
copie el LVB a la pantalla fsica (siempre que la aplicacin se encuentre en
primer plano). Esto significa que los cambios que hagamos en el LVB no son
visibles hasta que nosotros queramos.
Usar esta opcin implica que perdemos el aislamiento entre el hardware y
nosotros: dado que el LVB no es ms que una copia del buffer real de
pantalla, es necesario que nuestro programa conozca la geometra y la
forma de almacenamiento de los datos en sta.

VioGetBuf

VioShowBuf

ACCESO DIRECTO AL BUFFER REAL DE VIDEO


En el extremo opuesto se encuentran las funciones de acceso directo al
video. Con ellas, OS/2 da acceso directo a la memoria de pantalla. Sin
embargo, esto que en el DOS de siempre es la opcin ms normal y comn,
puede resultar catastrfico en un Sistema Operativo multitarea como OS/2;
no se hundira el suelo bajo nuestros pies, pero la pantalla podra ser
alterada en un momento poco oportuno... si OS/2 no tomase las debidas
precauciones.

Para que un programa pueda acceder directamente a la memoria real de


video, es absolutamente necesario que se encuentre en primer plano. Esto
es as porque si escribiese algo en pantalla cuando estuviese en
background, machacara la imagen de la aplicacin que se encontrase en
ese momento en primer plano.
Lo primero que hay que hacer es pedir la direccin fsica de la memoria de
vdeo. OS/2 devuelve un selector (o varios) a dicha zona de memoria. Estos
selectores deben ser convertidos a punteros antes de poder trabajar con
ellos. Pueden ser varios pues cada selector no puede apuntar a un bloque
de memoria mayor de 64Ks, el cual es tambin, casualmente, el tamao de
cada bloque de memoria de las tarjetas de vdeo actuales. Esto ayuda a
simplificar el acceso, pues en modos como 640x480x16colores no
necesitaremos cambiar de bancos; OS/2 nos devuelve un selector que
apunta a cada uno de ellos, con lo que solo tenemos que acceder
normalmente como si fuese memoria lineal, y el Sistema Operativo
conmutar de uno a otro automticamente.
El hecho de obtener un selector no significa que dispongamos de acceso
todava a la pantalla. De hecho, si intentsemos escribir o leer algo en ese
momento y la aplicacin no se encontrase en primer plano, OS/2 la cerrara
inmediatamente, dando un Fallo de Proteccin General (el cual ya
sabemos que no es tan fatal como el de Windows, pues en OS/2 solo afecta
a la aplicacin que lo ha provocado, dejando intacto al Sistema Operativo y
al resto de los programas).
Cada vez que queramos acceder a la memoria fsica de video, debemos
bloquear el acceso al buffer. Si el programa estaba en primer plano, OS/2
devolver un valor afirmativo al retornar de la llamada, y bloquear el
selector de programas. Esto significa que el usuario no podr conmutar la
sesin actual a segundo plano hasta que sta termine el acceso. Sin
embargo, el resto de las aplicaciones siguen funcionando en segundo plano,
sin verse afectadas por este hecho. Por supuesto, esto puede ser peligroso,
y OS/2 toma algunas precauciones: si el sistema est bloqueado y el usuario
hace una conmutacin de tarea, si el programa no desbloquea el
conmutador antes de un cierto tiempo definido por el sistema, queda

congelado

se

realiza

la

conmutacin.

Por

eso

es

recomendable

desbloquear cada x tiempo el selector de programas y volverlo a bloquear.


Si por el contrario el programa se encontraba en segundo plano, hay dos
opciones: OS/2 puede retornar un cdigo de error al programa, con lo que
este sabr que no tiene acceso al buffer y puede seguir trabajando en otra
cosa, o bien OS/2 congelar al programa hasta que el usuario lo pase a
primer plano, momento en que lo despertar indicndole que tiene acceso
al buffer real.
Una vez que OS/2 ha devuelto un resultado afirmativo, el programa tiene
acceso total a la memoria de video. Cuando haya terminado, tiene que
proceder a desbloquear la pantalla, de modo que OS/2 pueda desbloquear el
selector de programas y devolver el sistema a la normalidad.

VioGetPhysBuf

VioScrLock

VioScrUnLock

Existe una dificultad adicional a la hora de trabajar con acceso directo a la


pantalla. Se trata de que OS/2, al conmutar de una tarea a otra, solo guarda
el contenido de la pantalla si sta se encontraba en modo texto (esto se
cumple para OS/2 1.x. En Warp 4, sin embargo, SI conserva el contenido de
la pantalla, pero no se si se cumple tambin para OS/2 2.x o 3.x). Si
estabamos trabajando en modo grfico, el contenido se perder. Para
evitarlo, OS/2 facilita la posibilidad de crear un thread (este concepto ser
explicado ms adelante, cuando veamos la multitarea a fondo) que ser
activado cuando el programa vaya a cambiar de primer a segundo plano, y
viceversa. Esto es as para permitir que un programa pueda almacenar el
contenido de la pantalla en modo grfico cuando no tiene bloqueado el
acceso a la memoria de video. Es el thread SavRedrawWait.
Para implementarlo, es necesario crear un nuevo thread en el que se
ejecute la llamada VioSavRedrawWait. Esta llamada bloquear el thread
hasta que el usuario pulse CTRL+ESC, momento en que OS/2, antes de
conmutar de tarea, despertar a dicho thread indicndole que debe
almacenar el contenido de la pantalla. Cuando el thread termine, debe

volver a ejecutar la llamada, con lo que OS/2 sabr que ha finalizado. El


thread se quedar dormido de nuevo, y solo ser despertado cuando el
usuario vuelva a conmutar a primer plano el programa. Entonces OS/2 le
indicar que debe repintar la pantalla.

VioSavRedrawWait

La inclusin de este sistema de acceso puede parecer innecesaria, a la vista


de la potencia del acceso al LVB; la razn de haberla implementado fue que,
cuando sali OS/2, no llevaba todava el Presentation Manager, el gestor
de ventanas, sino que era un Sistema Operativo en modo texto, por lo que
se incluy este sistema para poder acceder en modo grfico a la pantalla,
dado que VIO no ofrece ninguna facilidad como el trazado de puntos o
lneas. Actualmente, al disponer de un completo (y complejo) gestor de
ventanas, este mtodo puede parecer inutil, sin embargo, para juegos
puede ser muy til, pues permite acceder a pantalla completa en modos
como 320x200 en 256 colores, lo que permite una alta velocidad de
refresco, as como una gran facilidad de manejo. Hay que sealar que el
acceso directo a la memoria de vdeo solo se puede hacer estando en una
sesin de pantalla completa; no funcionar en una sesin de ventana.

EL SUBSISTEMA DE TECLADO
El subsistema de teclado es el encargado de gestionar el acceso de los
programas a este perifrico. Al igual que el subsistema de vdeo, no es
necesario usarlo para escribir programas sencillos de cara al interface de
usuario, pues se puede acceder fcilmente a l a travs del sistema de
archivos. Es ms, el uso del subsistema de teclado no ofrece casi ninguna
ventaja en lo que a velocidad se refiere. Por tanto para qu usarlo?
Simplemente porque el acceso a travs del sistema de archivos solo nos
permite detectar cdigos ASCII, pero no la pulsacin de teclas de funcion, o,
por ejemplo, si tenemos pulsada la tecla ALT, o CTRL, etc. Para este tipo de
funciones necesitamos usar los servicios del subsistema de teclado.

FUNCIONES KBD
Acceso a nivel de cadenas de caracteres
La primera posibilidad que ofrece el subsistema de teclado es leer
caracteres, lo cual se puede hacer de dos formas: por cadenas, o caracter a
caracter.
La lectura por cadenas es exactamente igual que el uso de los servicios del
sistema de archivos. De hecho, es el servicio que emplea la funcin
DosRead cuando tiene que leer del teclado. Sin embargo, no necesita un
indicativo de dispositivo abierto, ni participa en el redireccionamiento de
E/S. Adems, funciona de modo diferente segn el modo de teclado en que
se encuentre: ASCII, BINARIO o ECO.
Con este sistema, se leen caracteres hasta que el buffer definido est lleno
o hasta que se pulse el caracter de retorno, que por defecto es
el retorno de carro (tecla enter).

KbdStringIn

KbdGetStatus

KbdSetStatus

La lectura por caracteres es un acceso ms a bajo nivel. En este caso


podemos saber exactamente qu tecla est pulsada y cual no, y saber si
adems se encuentran apretadas teclas como Ctrl, Alt, AltGr, etc. Adems,
si el informe de cambio est activo, se notificar no solo cuando se pulse
una tecla, sino tambin cuando se suelte.

KbdCharIn

KbdPeek

Por ltimo, tenemos una funcin que nos permite vaciar el buffer de teclado,
de modo que todas las pulsaciones hechas hasta el momento que no han
sido atendidas sern borradas.

KbdFlushBuffer

EL SUBSISTEMA DE RATON
El subsistema de ratn controla todo lo referente a este dispositivo.
Lo primero que hay que hacer para trabajar con el ratn es abrir el
dispositivo. Esta accin crea una cola de eventos para el ratn e inicializa
todos los parmetros de la sesin a un valor conocido.

MouOpen

MouClose

La cola de eventos del ratn almacena todos los sucesos ocurridos con ste
dispositivo, de modo que puedan ser ledos por el programa en el momento
adecuado. Un evento es, por ejemplo, mover el ratn, pulsar un botn,
soltarlo... 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 adems si la funcin retornar
an en el caso de que sta est vaca, o bien si debe esperar a que haya
algn evento en ella. Adems de esto, podemos conocer en cualquier
momento la posicin actual del ratn, as como cambiarla por otra. Estas
opciones deben usarse slo con fines de actualizar alguna variable del
programa; si se pretende que sea el propio programa el que pinte el cursor,
es mejor leer las coordenadas por medio de la cola de eventos.

MouReadEventQue

MouGetEventMask

MouSetEventMask

MouFlushQue

MouGetNumQueEl

MouGetPtrPos

MouSetPtrPos

El controlador de ratn puede encargarse l mismo de pintar el cursor en


pantalla (solo en sesiones de texto), o bien relegar dicha accin al
programa. As mismo, puede devolver las coordenadas bien en coordenadas
de pantalla, bien en Mickeys, que son unidades naturales del ratn.
Por otro lado, es posible definir un rea de la pantalla que ser especifica de
la aplicacin, de modo que el controlador no pintar el cursor cuando ste
se encuentre dentro de aquella. Por defecto, este rea ocupa toda la
pantalla.

MouDrawPtr

MouRemovePtr

MouGetDevStatus

MouSetDevStatus

Por ltimo, es posible obtener informacin sobre las caractersticas de


nuestro ratn.

MouGetNumButtons

MouGetNumMickeys

MULTITAREA
ESTRUCTURA DEL OS/2
(Selector de Programas, Sesiones, Procesos y Threads)
La estructura de OS/2 a nivel de multitarea se centra en los tres conceptos
dados anteriormente: Threads y Procesos, gestionados por el ncleo,
y Sesiones,

gestionadas

por

los

subsistemas

por

el Selector

de

programas.
El selector de programas es la parte de OS/2 que se encarga de conmutar la
pantalla, teclado y ratn fsicos hacia los buffers lgicos de cada sesin.
Para ello, incluye un API propio, que permite a una sesin hacer pasar a
primer plano a cualquier sesin hija.
Surge la cuestin de como se arranca la primera sesin, la que nos permitir
arrancar nuevos programas, etc. Para ello, OS/2 incluye una lnea en
el CONFIG.SYS que le indica un proceso que debe arrancar al principio de
todo. Este proceso ser el Shell del sistema.
El Shell del sistema, en principio, puede ser cualquier programa, de modo
que al arrancar OS/2, se arrancar ste tambin. Sin embargo, para que sea
til, tiene que permitir arrancar nuevas sesiones desde l y pasar el control
a stas.
En OS/2 1.0, el Shell del sistema era un simple men, que contena los
programas bsicos (como una lnea de comandos). Pulsando sobre estos, se
arrancaba una nueva sesin con ste, y se le ceda el control. En las
versiones posteriores, como Shell se pone el Presentation Manager. Este
es el gestor de ventanas. Sin embargo, el PM no incluye ningn Shell, por lo
que surge una nueva lnea 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 orientacin 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 situacin parecida
a UNIX, en la que arrancamos siempre desde una lnea de comandos.

El

selector

de

programas

incorpora

dos Hot

Keys o Teclas

Calientes: Ctrl+Esc y Alt+Esc. La primera pasa la sesin 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
sesin a otra de forma cclica, 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 unin entre ambos, si se
produce un error y el Shell se cierra, OS/2 abre uno nuevo inmediatamente,
sin afectar para nada al resto de las aplicaciones que estaban corriendo. De
esta forma el usuario nunca se queda sin control de la mquina. No
olvidemos que el Shell es un programa ms, que no corre en el ncleo, y
que por tanto puede contener errores.
De todo esto deducimos varias cosas

El Shell del sistema es un programa ms, que se ejecuta en una


sesin independiente, por lo que nada impide que escribamos el
nuestro propio.

Un Shell nunca debe arrancar ningn programa en su misma sesin,


pues eso implicara que el pulsar Ctrl+Esc no nos devolvera al Shell,
sino al programa que estamos ejecutando en su sesin.

Dado que el Shell es el padre de todas las sesiones que se arrancan,


puede conmutar a cualquiera de ellas sin usar ningn 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 tambin puede matar a cualquiera de ellas.

GESTION DE LA MEMORIA
OS/2, como cualquier Sistema Operativo multitarea, mantiene un estricto
control sobre la memoria usada por cada programa. Esto es as porque un
programa que sobreescribiese la memoria de otro lo hara fallar con casi
total

seguridad.

OS/2

hace

uso

del

modo

protegido

de

los

microprocesadores 386 y superiores para asegurar que cada programa


tenga acceso solo a sus bloques de memoria, y no pueda machacar el

contendido de otra zona. A la vez, se encarga de intercambiar zonas de


memoria entre la RAM y el disco duro, implementando as un sistema de
memoria virtual eficiente, con lo que puede ejecutar programas ms largos
que los que la memoria fsica del ordenador permitira.
Las funciones de asignacin y desasignacin dinmica de memoria son
extremadamente tiles en programas en los que no sepamos la cantidad de
esta que vamos a necesitar. Un ejemplo puede ser una zona de memoria
para descomprimir imgenes en un visualizador: dado que cada una puede
medir cualquier longitud, reservar una cantidad excesiva de forma esttica
hace al programa lento, y reservar poca puede impedir visualizar imgenes
grandes. La solucin es comprobar el tamao de la imagen y reservar una
zona de memoria dinmica acorde con este, liberndola al terminar.

DosAllocMem

DosFreeMem

Otra funcin es la de crear zonas de memoria compartida. Se trata de


bloques de memoria a los que pueden acceder dos procesos distintos de
forma simultnea, y se usan para intercambiar grandes cantidades de
informacin de forma rpida, y para compartirla.
Existen dos formas de compartir un bloque de memoria: una es mediante un
nombre que refiera a ese bloque; otra es mediante un puntero que seale a
su inicio.

DosAllocSharedMem

En el primer caso, se debe especificar un nombre para el bloque que cumpla


el convenio de nombres de ficheros de OS/2, y adems debe empezar
por \SHAREMEM\.

Por

ejemplo,

sera\SHAREMEM\BLOQUE.DAT.

DosGetNamedSharedMem

un

nombre

vlido

Si no se especifica un nombre, la memoria solo podr ser compartida


mediante el intercambio de un puntero que seale al inicio del bloque. Si
ambos procesos conocen este valor, podrn acceder a dicho bloque
pidindolo

asignndolo.

Para

comunicarlo,

es

necesario

usar

la

comunicacin entre procesos, que veremos ms adelante.

DosGetSharedMem

DosGiveSharedMem

SUBASIGNACIN DE MEMORIA
La asignacin de memoria es una parte muy importante en cualquier
sistema operativo. Da a los programas la capacidad de adaptarse
dinmicamente a las necesidades de cada momento. Sin embargo, hay un
coste relativamente elevado en la asignacin de memoria dinmica. En cada
peticin 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. De aqu se saca una conclusin clara: utiliza toda
la memoria que necesites, pero evita asignar y desasignar constantemente
bloques. La solucin consiste en asignar un bloque de tamao moderado y
dentro de l sub asignar bloques de tamao ms pequeo, aumentando el
tamao del bloque fsico slo cuando se necesita ms espacio.
Para ayudar en esto, OS/2 ofrece un grupo completo de sub asignacin de
memoria.

La

DosSubAllocMem

DosSubFreeMem

DosSubSetMem

DosSubUnsetMem
primera

accin

consiste

en

reservar

un

bloque

de

memoria

con DosAllocMem. Este bloque de memoria es necesario prepararlo para


sub asignacin con DosSubSetMem. Una vez hecho esto, podemos asignar
y

desasignar

pequeos

bloques

con DosSubAllocMem y DosSubFreeMem como si ussemos las llamadas


de siempre, pero con la diferencia de que ser notablemente ms rpido.
Sin embargo, no debemos olvidar que se trata de un solo bloque de
memoria subdividido, por lo que aunque tengamos sub asignado un bloque,
podemos salirnos de l por accidente sin que el sistema d un error
(siempre, claro est, que no nos salgamos de la memoria asignada).
Debemos ver las funciones de sub asignacin de memoria simplemente
como una ayuda en la gestin de sta. Para cualquier aplicacin es
exactamente lo mismo dividir nosotros mismos un bloque de memoria de
forma lgica que usar estas funciones. La ventaja consiste en que nos
ahorramos programar un grupo de funciones que compruebe cuanto espacio
nos queda libre y en donde y actualice las estructuras. Se trata de una
ganancia en comodidad. Una aplicacin clara de estas funciones se ver
cuando expliquemos las colas de mensajes, pues en ellas se hace uso
intensivo de pequeos bloques de memoria que se crean y liberan
constantemente.

SINCRONIZACION Y COMUNICACION ENTRE PROCESOS


Al ser OS/2 un Sistema Operativo multitarea, sus programas se componen
de mltiples partes denominadas threads, las cuales se ejecutan de forma
paralela. Debido a esto, cuando dos o ms threads intentan acceder a la vez
a un mismo recurso (por ejemplo, una zona de memoria compartida), el
resultado puede ser, en el mejor de los casos, impredecible. Por eso surgen
los sistemas de sincronizacin entre procesos. Estos permiten establecer un
sincronismo entre dos o ms threads y procesos de una forma consistente y,
sobre todo, fiable y predecible. En OS/2, estos sistemas estn formados por
los semforos.
Por otro lado, dos procesos pueden necesitar intercambiar informacin entre
ellos. En un primer momento, la memoria compartida puede parecer la
panacea, pero en muchas aplicaciones no son el mtodo ms eficiente. Por
eso surgen otros: los cauces y las colas de mensajes.

APENDICE

GRUPO DE LLAMADAS
(Sistema de ficheros) DosBeep
DosBeep activa el altavoz interno.
#define INCL_BASE
#include <os2.h>
ULONG ulFrequency;
ULONG ulDuration;
APIRET rc; /* Codigo de error */
rc = DosBeep(ulFrequency, ulDuration);

DosClose
DosClose cierra un handle a un fichero, cauce o dispositivo.
#define INCL_BASE
#include <os2.h>
HFILE fileHandle;
APIRET rc; /* Codigo de error */
rc = DosClose(FileHandle);

DosCopy
DosCopy copia el contenido de un fichero o subdirectorio al fichero o
subdirectorio de destino.
#define INCL_BASE
#include <os2.h>
PSZ pszFicheroOrigen;
PSZ pszFicheroDestino;
ULONG ulModoOp;
APIRET rc; /* Codigo de error */
rc = DosCopy(pszFicheroOrigen, pszFicheroDestino,ulModoOp);

DosCreateDir
DosCreateDir crea un nuevo directorio.

#define INCL_BASE
#include <os2.h>
PSZ pszDirName;
EAOP2 pEABuf;
APIRET rc; /* Codigo de error */
rc = DosCreateDir(pszDirName, pEABuf);

DosDelete
DosDelete borra un fichero. Este puede ser recuperado.
#define INCL_BASE
#include <os2.h>
PSZ pszFileName;
APIRET rc; /* Codigo de error */

rc = DosDelete(pszFileName);

DosDeleteDir
DosDeleteDir borra un directorio. Es necesario que est vaco.
#define INCL_BASE
#include <os2.h>
PSZ pszDirName;
APIRET rc; /* Codigo de error */
rc = DosDeleteDir(pszFileName);

DosFindClose
DosFindClose cierra un cauce de busqueda de ficheros abierto con
DosFindFirst; esto es, termina una bsqueda.
#define INCL_BASE
#include <os2.h>
HDIR hdirDirHandle;
APIRET rc; /* Codigo de error */
rc = DosFindClose(hdirDirHandle);

DosFindFirst
DosFindFirst busca el primer archivo de un directorio que coincide con el
patrn de bsqueda.
#define INCL_BASE
#include <os2.h>
PSZ pszFileName;
PHDIR phdirDirHandle;
ULONG ulAttribute;
PVOID pResultBuf;
ULONG ulResultBufLen;
PULONG pSearchCount;
ULONG ulFileInfoLevel;
APIRET rc; /* Codigo de error */
rc = DosFindFirst(pszFileName, phdirDirHandle, ulAttribute, pResultBuf,
ulResultBufLen, pSearchCount, ulFileInfoLevel);

Bit
31-14

Descripcin
Reservados. Deben ser cero.
1: los ficheros que no tienen activo el bit de ARCHIVO son
ignorados.

13

0: son buscados tambin los ficheros que no tienen activo el bit


de ARCHIVO.
1: los ficheros que no tienen activo el bit de DIRECTORIO son
ignorados.

12

0: son buscados tambin los ficheros que no tienen activo el bit


de DIRECTORIO

11

Reservado. Debe ser cero.


1: los ficheros que no tienen activo el bit de SISTEMA son
ignorados.

10

0: son buscados tambin los ficheros que no tienen activo el bit


de SISTEMA

Dos

1: los ficheros que no tienen activo el bit de OCULTO son

FindN

ignorados.
9

0: son buscados tambin los ficheros que no tienen activo el bit

ext

de OCULTO
1:

los

ficheros

que

no

tienen

activo

el

bit

de SOLO_LECTURA son ignorados.


8

0: son buscados tambin los ficheros que no tienen activo el bit


de SOLO_LECTURA

DosFindNext
encuentra
el siguiente
archivo

de

un
directorio

7-6

Reservados. Deben ser cero.

que

1: incluye los ficheros que tienen activo el bit de ARCHIVO.

coincide con

0: excluye los ficheros que tienen activo el bit de ARCHIVO.


1: incluye los ficheros que tienen activo el bit de DIRECTORIO.

0: excluye los ficheros que tienen activo el bit de DIRECTORIO.


Reservado. Debe ser cero.

0: excluye los ficheros que tienen activo el bit de SISTEMA.


1: incluye los ficheros que tienen activo el bit de OCULTO.

cadena

de
busqueda
dada

1: incluye los ficheros que tienen activo el bit de SISTEMA.


2

la

0: excluye los ficheros que tienen activo el bit de OCULTO.

en

un DosFindF
irst.
usarse

Al
un

handle

para

identificar

la

bsqueda,

se

pueden

hacer

simultneamente.
#define INCL_BASE
#include <os2.h>
HDIR hdirDirHandle;
PVOID pResultBuf;
ULONG ulResultBufLen;
PULONG pSearchCount;
APIRET rc; /* Codigo de error */
rc = DosFindNext (hdirDirHandle, pResultBuf, ulResultBufLen,
pSearchCount);

DosForceDelete
DosForceDelete borra un fichero, de forma que es irrecuperable.

varias

#define INCL_BASE
#include <os2.h>
PSZ pszFileName;
APIRET rc; /* Codigo de error */
rc = DosForceDelete(pszFileName);

DosMove
DosMove mueve un fichero de un directorio a otro distinto.
#define INCL_BASE
#include <os2.h>
PSZ pszOldPathName;
PSZ pszNewPathName;
APIRET rc; /* Codigo de error */
rc = DosMove(pszOldPathName, pszNewPathName);

DosOpen
DosOpen abre un fichero nuevo o uno ya existente para trabajar con l.
#define INCL_BASE
#include <os2.h>
PSZ pszFileName;
PHFILE pshfFileHandle;
PULONG pActionTaken;
ULONG ulFileSize;
ULONG ulFileAttribute;
ULONG ulOpenFlag;
ULONG ulOpenMode;
PEAOP2 pEABuf;
APIRET rc; /* Codigo de error */

Bit

Descripcin

31-6 Reservados. Deben ser cero.


5 DosOpen(pszFileName,
El fichero ha sido archivado
(bit ARCHIVO
activo) ulFileSize,
rc =
pshfFileHandle,
pActionTaken,
ulFileAttribute, ulOpenFlag, ulOpenMode, pEABuf);
4
El fichero es un subdirectorio.
3
Reservado. Debe ser cero.
Parmetros
pszFileName Puntero a una cadena con el nombre del fichero a abrir. Puede
2
El fichero es un archivo de sistema.
ir acompaado de un path. La barra derecha (/) y la invertida
(\) pueden
ser yusadas
indistintamente.
El fichero
es oculto
no aparece
en una lista del

1
directorio.
pshfFileHandl
Puntero a una variable donde OS/2 almacenar el handle
e

asignado al fichero.
El
fichero
puede
ser
ledo,
pero
no
0
pActionTaken
a una variable donde OS/2 almacenar un valor que
escrito. Puntero
SOLO_LECTURA.
0

indica la accin tomada por DosOpen. Si la funcin falla, este


Si est desactivado, el fichero puede ser ledo y
valor no tiene significado.
escrito.
Valor

Definicin

El fichero exista

El fichero fue creado (no exista)

El fichero fue truncado (exista y fue reescrito)

Nuevo tamao lgico (fin de fichero, EOF) en bytes. Este


parmetro solo es vlido cuando se crea un nuevo fichero o se
ulFileSize

reescribe uno. En otro caso es ignorado. Es un error crear o


reemplazar un fichero con una longitud distinta de cero si el
modo de apertura est puesto en SOLO_LECTURA

ulFileAttribute

ulOpenFlag

Doble palabra conteniendo el siguiente mapa de bits. Solo es


vlido si el fichero es creado.

Campo de bits de doble palabra que indica la accin a tomar

en caso de que exista o no el fichero.


Bits Descripcin
31-8 Reservados. Deben ser cero.
0000: Abre un fichero que ya existe; falla si no existe.
7-4

0001: Abre un fichero si existe; lo crea el fichero si no


existe.
0000:

3-0

0001:

Crea

el

Abre

fichero.
el

Falla

fichero

si
si

ya
ya

existe.
existe.

0010: Abre el fichero; si ya existe lo reescribe.

ulOpenMode

Campo de bits de doble palabra que describe el modo de


operacin de la funcin.

Bit

Descripcin

31-16 Reservado. Debe ser cero.


Apertura

directa:

0: FileName representa un fichero para ser abierto


15

normalmente.
1: FileName es 'unidad' (como C: o A:), y representa
una unidad de disco o disquete para ser abierta para
un acceso directo.
0: Las escrituras en el fichero son a travs de la cache
de disco. El sistema de ficheros escribe los sectores
cuando sta se llena o el fichero es cerrado.

14

1: Las escrituras en el fichero son a travs de la cache


de disco, pero los sectores son escritos antes del
retorno de una llamada de escritura sncrona. Este
estado del fichero lo define como un archivo sncrono.
Bit

de

notificacin

de

errores

fsicos.

0: Los errores van a travs del manejador del


13

sistema.
1: Los errores son notificados al thread que hizo la
llamada a travs de un cdigo de retorno.
0: El driver de disco puede poner datos de las

12

operaciones

de

I/O

en

su

cache.

1: Las operaciones de I/O al fichero no deben ser


realizadas a travs del cache del sistema de ficheros.

11

Reservado. Debe ser cero.


Especifica el modo en que se va a acceder al fichero,
de cara a la colocacin de los datos en el disco:

10-8

000:

Sin

un

modo

concreto.

001:

Principalmente

acceso

secuencial.

010:

Principalmente

acceso

aleatorio.

011: Aleatorio concentrado en zonas concretas.

0: El handle del fichero puede ser heredado por


7

procesos

creados

con DosExecPgm.

1: El handle del fichero es privado, y solo accesible


por el proceso actual.
Modos

de

comparticin

del

fichero:

001: DENY_ALL; no se permite que otros procesos


accedan.
010: DENY_WRITE; otros procesos pueden abrirlo para
6-4

lectura,

pero

no

para

escritura.

011: DENY_READ; otros procesos pueden abrirlo para


escritura,

pero

no

para

lectura.

100: DENY_NONE; otros procesos pueden abrirlo para


lectura y para escritura.
3

Reservado. Debe ser cero.


Modo de acceso. Define como va a acceder el proceso
que

ha

abierto

el

fichero:

000: READ_ONLY; solo va a realizar operaciones de


2-0

lectura.
001; WRITE_ONLY; solo va a realizar operaciones de
escritura.
010; READ_WRITE; va a realizar operaciones de
lectura y escritura.

Puntero a una variable de EAs. Antes de hacer la llamada, debe


pEABuf

contener una estructura de atributos extendidos. A la salida,


no hay cambios en ella. Si no se van a definir o modificar
atributos extendidos,pEABuf debe apuntar a cero.

DosQueryCurrentDir
DosQueryCurrentDir devuelve el path completo del directorio actual para el
proceso que realiza la llamada. Es necesario indicar una unidad, pues para
cada una de ellas hay un path distinto.
#define INCL_BASE
#include <os2.h>
ULONG ulDriveNumber;
PBYTE pbDirPath;
PULONG pDirPathLen;
APIRET rc; /* Codigo de error */
rc = DosQueryCurrentDir(ulDriveNumber, pbDirPath, pDirPathLen);

DosQueryCurrentDisk
DosQueryCurrentDisk devuelve la unidad por defecto para el proceso que
hace la llamada.
#define INCL_BASE
#include <os2.h>
PULONG pDriveNumber;
PULONG pLogicalDriveMap;
APIRET rc; /* Codigo de error */
rc = DosQueryCurrentDisk(pDriveNumber, pLogicalDriveMap);

PARMETROS
Puntero a una variable donde OS/2 devolver el nmero
pDriveNumber

de la unidad por defecto. El valor 1 es la unidad A, el 2 la


unidad B, el 3 la unidad C, etc.
Puntero a un mapa de bits donde el sistema devuelve un
mapa de las unidades lgicas disponibles. Las unidades

pLogicalDriveMap

de la A a la Z tienen cada una un bit asignado, desde el 0


al 25, del mapa. Por ejemplo, el bit 0 representa la unidad
A, el 1 la unidad B, etc. El significado de dicho bit es el
siguiente:
Valor

Definicin

La unidad lgica no existe

La unidad lgica s existe

DosRead
DosRead lee el nmero especificado de bytes a un buffer, desde un fichero,
cauce o dispositivo.
#define INCL_BASE
#include <os2.h>
HFILE FileHandle;
PVOID pBufferArea;
ULONG ulBufferLength;
PULONG pBytesRead;
APIRET rc; /* Codigo de error */

rc = DosRead(FileHandle, pBufferArea, ulBufferLength, pBytesRead);

DosResetBuffer
DosResetBuffer escribe los buffers de escritura del fichero indicado. Cuando
se escriben caracteres en un fichero, estos son almacenados en un buffer
de, al menos, un sector, el cual se escribe cuando se llena o cuando se
cierra el fichero. Esta llamada fuerza una escritura de dicho buffer aun
cuando no est lleno.
#define INCL_BASE
#include <os2.h>
HFILE FileHandle;
APIRET rc; /* Codigo de error */
rc = DosResetBuffer(FileHandle);

DosScanEnv
DosScanEnv busca una variable de entorno (asignada con SET en el
CONFIG.SYS o desde la lnea de comandos) y devuelve su contenido.
#define INCL_BASE
#include <os2.h>
PSZ pszEnvVarName;
PSZ pszResultPointer;
APIRET rc; /* Codigo de error */
rc = DosScanEnv(pszEnvVarName, &pszResultPointer);

DosSetCurrentDir
DosSetCurrentDir permite cambiar el directorio por defecto. Solo afecta al
proceso que realiza la llamada.
#define INCL_BASE
#include <os2.h>
PSZ pszDirName;
APIRET rc; /* Codigo de error */
rc = DosSetCurrentDir(pszDirName);

DosSetDefaultDisk
DosSetDefaultDisk cambia la unidad por defecto. Solo afecta al proceso que
hace la llamada.
#define INCL_BASE
#include <os2.h>

ulDriveNumber;
APIRET rc; /* Codigo de error */
rc = DosSetDefaultDisk(ulDriveNumber);

DosShutdown
DosShutdown graba todos los buffers del sistema, cierra los ficheros
abiertos y graba la cache, preparando el sistema para apagarlo. Puede
tardar varios segundos en ejecutarse.
#define INCL_BASE
#include <os2.h>
ULONG ulReserved;
APIRET rc; /* Codigo de error */
rc = DosShutdown(ulReserved);

DosWrite
DosWrite escribe un determinado grupo de bytes desde un buffer al fichero
especificado.
#define INCL_BASE
#include <os2.h>
HFILE FileHandle;
PVOID pBufferArea;
ULONG ulBufferLength;
PULONG pBytesWritten;
APIRET rc; /* Codigo de error */
rc = DosWrite(FileHandle, pBufferArea, ulBufferLength, pBytesWritten);

ERRORES DE OS/2 POR CODIGO


0

Sin error

Funcin no vlida

Fichero no encontrado

Path no encontrado

Demasiados archivos abiertos

Acceso denegado

HANDLE no vlido

No hay suficiente memoria

10

Entorno no vlido

11

Formato no vlido

12

Modo de acceso no vlido

13

Datos no vlidos

15

Unidad no vlida

16

Intenta borrar el directorio actual

17

Los dispositivos fuente y destino son distintos

18

No hay ms ficheros

19

El sistema es de solo lectura o est protegido contra escritura

26

Disco sin sistema de ficheros

29

Ha fallado la escritura

32

Violacin de comparticin

33

Violacin del bloqueo

36

Desbordamiento del buffer de comparticin

82

No se puede crear fichero

84

Fuera de las estructuras (error interno)

87

Parmetro no vlido

89

Sin slots de procedimientos

90

El thread no estaba parado

95

Interrupcin

99

Dispositivo en uso

103

Demasiados SEM_REQUEST

105

El propietario del semforo ha muerto

108

Unidad bloqueada

109

El cauce (pipe) est cerrado

110

Fallo en la apertura

111

Desbordamiento del buffer

112

Disco lleno

113

No hay ms handles de busqueda

114

El handle de destino no es vlido

115

Violacin de proteccin

123

Nombre no vlido

127

Proc no encontrado

164

No se pueden crear ms threads

170

Ocupado

182

Ordinal no vlido

183

Ya existe

187

Semforo no encontrado

190

Tipo de mdulo no vlido

191

Signatura de EXE no vlida

192

Marca de EXE no vlida

195

MINALLOCSIZE no vlido

196

Enlace dinmico pedido desde un anillo no vlido

203

Variable de entorno no encontrada

206

Nombre de fichero demasiado largo

208

Meta-expansion demasiado larga

212

Bloqueado

217

Procesos Zombie

224

No existe tal ventana (la sesin no se puede traer a primer plano)

230

Cauce incorrecto

231

Cauce (pipe) ocupado.

233

Cauce no abierto

234

Demasiados datos

250

Fichero origen y destino son el mismo

251

El directorio destino est dentro del fuente

254

Nombre de EA no vlido

255

Lista

de

EAs

Valor de EA no soportado

267

Directorio incorrecto

274

Ya se est ejecutando un ShutDown

275

EAs no coinciden

282

EAs no soportados en la unidad

283

Hay EAs importantes

285

Nombre duplicado

288

No se ha hecho DosRequestMutexSem

290

No quedan handles disponibles

291

Demasiadas aperturas

294

Thread no terminado

298

Demasiados post ejecutados

299

Ya se encuentra posted

300

El semforo ya est borrado.

301

Semforo ocupado

303

PID no vlido

inconsistente

304

PDELTA no vlido

305

No hay descendientes

307

PCLASS no vlido

308

SCOPE no vlido

309

Identificador de Thread no vlido

310

No se puede reducir un segmento subasignado

311

No hay suficiente memoria libre

312

Superposicin no vlida en el bloque

322

Incapaz de despertar

323

Semforo del sistema

324

No quedan temporizadores disponibles

326

Handle de temporizador no vlido

327

Fecha u hora no vlida

330

El proceso no es el dueo de la cola

332

Cola duplicada

333

El elemento no existe

334

No hay memoria suficiente

335

Nombre no vlido

337

Handle de cola no vlido

340

El elemento anterior es el ltimo

341

Acceso no permitido

342

Cola vaca

343

No existe ese nombre

350

Puntero no vlido

355

Modo no vlido

356

Ancho no vlido

358

Fila no vlida

359

Columna no vlida

366

Valor de WaitFlag no vlido

367

No est bloqueado

369

Identificador de sesin no vlido

375

Valor de espera no vlido

376

Longitud no vlida

377

Mascara de Echo no vlida

378

Mascara de modo de entrada no vlida

385

No hay ratn.

387

Parmetro no vlido.

390

Nombre de dispositivo no vlido.

393

No hay datos en la cola de eventos.

395

Frecuencia no vlida

418

Llamada no vlida

421

Parmetros no vlidos

422

El thread SavRestoreWait ya tiene dueo

423

El thread SavRestoreWait ha sido liberado

429

El proceso est en background

430

Ilegal durante POPUP

433

Valor de Wait no vlido

434

Ya est bloqueado

436

Handle VIO no vlido

438

Longitud no vlida

439

Handle KBD no vlido

445

Se requiere el foco del teclado

447

El teclado est ocupado

458

Opcin de STOP no vlida

459

Reserva no vlida

460

La sesin no es hija de la actual

463

Reintentar el Sub Alloc

464

KBD inactivo (proceso en detached)

465

VIO inactivo (proceso en detached)

466

MOU inactivo (proceso en Detached)

467

No hay una fuente adecuada para ese modo

468

Una fuente de usuario est activa

484

Desbordamiento de CritSec

485

Underflow de

CritSec

(se

ha

intentado

ejecutar

ms Exits que Enters).

487

Direccin no vlida

494

VIO Extended SG

501

Mouse no console

504

KBD Extended SG

505

MOU extended SG

532

DosSub corrupto

640

TimeOut (finaliz el tiempo)

RECOMENDACIONES
Los usuarios de OS/2 deberan considerar igualmente que el tiempo es dinero y que no
siempre han de buscar por una solucin freeware, excepto en el caso que esta sea la mejor
disponible. Cada compra de productos OS/2 cuenta y algunos de los productos de OS/2 son
de los de mayor calidad del mercado, aunque ahora lo ha reemplazado por eComStation.
Para IBM, el destino de OS/2 es ser utilizado nicamente por las grandes empresas. IBM
pretende convertir a OS/2 en un sistema operativo especializado capaz de ejecutar "un

puado" de cosas en el escritorio, pero mantenindolo bsicamente como un cliente de JAVA.


Esto va en contra de las necesidades de la mayora de usuarios activos de OS/2.
En consecuencia, los usuarios y vendedores de OS/2 hemos de trabajar conjuntamente para
controlar nuestro propio futuro con eComStation. La direccin que toma IBM nos asegura
que tendremos el soporte necesario de drivers que es lo nico que las terceras partes no
podemos hacer.
Una pgina web para el WarpCaster que sea controlada por alguien sin intereses, con enlaces
desde las pginas de todos los desarrolladores de aplicaciones OS/2 y con un enlace creado
por la instalacin de todos los programas de OS/2 tambin es de vital importancia. Una
organizacin internacional de usuarios de OS/2 que trabaje conjuntamente con los
desarrolladores de software tambin ayudar a acercar el OS/2 a los nuevos usuarios y a
mantener a aquellos que no estn en la red al da de las novedades relacionadas con OS/2.
Y, por ltimo, una organizacin que sea capaz de presentar nuevas mejoras y prestaciones al
OS/2 para mantenerlo con la ltimas prestaciones. Esta organizacin debera trabajar para
que los ISVs de OS/2 crearan estos componentes despus que un nmero significativo de
usuarios mostrara su inters en que se hicieran. Incluso, al tener un nmero importante de
nuevas prestaciones, nos podramos plantear el lanzamiento de una actualizacin del
sistema operativo (algo as como Power OS versin 5 o similar) en el caso de que IBM lanzara
definitivamente la toalla. Creo, igualmente, que de esta forma los usuarios de OS/2 sern
ms conscientes de como ellos mismos pueden afectar al futuro de OS/2 para permitir que en
el futuro continen apareciendo aplicaciones nativas para OS/2.
OS/2 ha tenido una autentica historia pica y, con un poco de suerte, la aventura no ha
hecho ms que empezar.
Autentica historia pica y, con un poco de suerte, la aventura no ha hecho ms que empezar.

CONCLUSIONES
Luego de analizar e investigar el tema tratado, podemos decir
concretamente que la tecnologa va de acuerdo a las necesidades del diario
vivir; que, cada da van naciendo ideas nuevas, nuevas frmulas, nuevas
tcnicas, y por supuesto, segn nuestro tema en cuestin, nuevas versiones
de los llamados Sistemas Operativos, en nuestro caso, el denominado
OS/2.

Es as como llegamos al presente. Hoy en da, estn disponibles

Windows 7 y Windows 8, las ms recientes creaciones en Sistemas


Operativos.
Adems de todos los beneficios de productividad y eficacia que
presentaba dicho sistema, es importante sealar los siguientes puntos ms
destacables:
OS/2 ofrece u ofreca multitarea para poder controlar varias
actividades en forma simultnea. El usuario poda estar trabajando con una
aplicacin, imprimiendo una anterior y haciendo otras cosas.
OS/2 utilizaba planificacin apropiada,

poda quitarle la CPU a un

proceso y drsela a otro que considere ms importante. Utilizaba de igual


forma, la denominada Memoria Virtual, en donde permita al usuario
controlar su propio espacio de direcciones.

En un OS/2

multitarea

resultaba mejor crear programas pequeos, cada uno de los cuales


realizaba bien una funcin o un conjunto de funciones afines y despus
hacer que se comunicaran entre s para alcanzar los objetivos del usuario.
Lo que hoy en da en materia de Programacin se asemeja con
Programacin Modular.
Sin duda, en un futuro no muy lejano, aparecern nuevas versiones,
nuevos

diseos

de

sistemas

operativos.

Probablemente,

as

como

comparamos OS/2 con Windows 8, se compararn Windows 8 con otro


mucho ms avanzado.

BIBLIOGRAFIA

INTRODUCCION A LOS SISTEMAS OPERATIVOS


Segunda Edicin, 1993
H. M. Dertel.
Pg. 822-871

INTERNET

www.altavista.com

http://www.rastersoft.com/OS2

www.os2spain.org

www.internet.com.uy

www.monografas.com

www.yupi.com

www.os2ss.com

Вам также может понравиться