PDF de programación - Manual de programación de OS/2

<<>>
Imágen de pdf Manual de programación de OS/2

Manual de programación de OS/2gráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 20 de Febrero del 2018)
493 visualizaciones desde el 20 de Febrero del 2018
689,1 KB
38 paginas
Manual de programación de OS/2

De Wikilibros, la colección de libros de texto de contenido libre.

El autor, Sergio Costas, ha permitido que este documento se distribuya bajo la licencia GFDL para poder ser
publicado en Wikilibros.

Contenido

1 Condiciones de distribución
2 Créditos
3 Introducción
4 Historia de los sistemas operativos
5 Historia de OS/2
6 Llamada al API de OS/2

6.1 Estructura de OS/2 (Sistema de ficheros y Subsistemas)

7 Implementación del sistema de ficheros de OS/2
8 El sistema de archivos de OS/2

8.1 Apertura y cierre de ficheros
8.2 Lectura y escritura de datos
8.3 Compartición de ficheros
8.4 Gestión de dispositivos
8.5 Funciones del DOS
8.6 Busqueda de ficheros
8.7 Redirección de entradas y salidas
8.8 Variables de entorno
8.9 Otras funciones DOS

9 Los subsistemas en OS/2

9.1 El subsistema de vídeo
9.1.1 Funciones VIO

9.1.1.1 Salida por TTY virtual
9.1.1.2 Salida de cadenas de caracteres
9.1.1.3 Funciones de Scroll
9.1.1.4 Definición y movimiento del cursor
9.1.1.5 Acceso directo al buffer real de vídeo

9.2 El subsistema de teclado
9.2.1 Funciones KBD
9.2.2 Modos de teclado

9.2.2.1 ASCII
9.2.2.2 BINARIO
9.2.2.3 ECO

9.4.1.1 Gestión de memoria en el modo protegido del 286
9.4.1.2 Gestión de memoria en el modo protegido del 386

9.3 El subsistema de ratón
9.4 Acceso a las funciones de 16 bits

9.4.1 El THUNKING

10 Multitarea

10.1 Concepto de thread
10.2 Concepto de proceso

10.2.1 Prioridades de ejecución

10.3 Concepto de sesión
10.4 Estructura del OS/2

10.4.1 (Selector de Programas, Sesiones, Procesos y Threads)

11 Gestión de la memoria

11.1 Subasignación de memoria

12 Sincronización y comunicación entre procesos

12.1 Concepto de semáforo
12.2 Temporizadores en OS/2
12.3 Comunicación entre los procesos

12.3.1 Memoria compartida y semáforos
12.3.2 Cauces
12.3.3 Colas

13 Apéndice A
14 Apéndice B

Condiciones de distribución

El presente manual se distribuye bajo una licencia dual GFDL 1.2 / Creative Commons Reconocimiento­
CompartirIgual 2.5.

Bajo estas licencias, usted es libre de:

copiar, distribuir y comunicar públicamente la obra
hacer obras derivadas
hacer un uso comercial de esta obra

Bajo las condiciones siguientes:

Reconocimiento.

Debe reconocer los créditos de la obra de la manera especificada por el autor o el licenciador.
Compartir bajo la misma licencia. Si altera o transforma esta obra, o genera una obra derivada, sólo puede
distribuir la obra generada bajo una licencia idéntica a ésta.

Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra, y puede
redistribuirla bajo cualquiera de las dos licencias.

Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor

Los derechos derivados de usos legítimos u otras limitaciones reconocidas por ley no se ven afectados por lo
anterior.

Créditos

Este manual ha sido realizado por Sergio Costas Rodríguez

http://www.rastersoft.com
raster@rastersoft.com

La versión original de documento se encuentra en rastersoft.com
(http://www.rastersoft.com/OS2/CURSO/INDICE.HTM).

Introducción

En este documento voy a intentar explicar el funcionamiento y el API de OS/2. Con esto intento hacer un pequeño
manual de programación de este Sistema Operativo, algo que se echa en falta al hojear las listas de libros de casi
cualquier librería, por muy especializada que esté en Informática. Pretende ser también el complemento del
compilador EMX/GCC, un excelente compilador de C totalmente freeware, disponible para OS/2.

Debo advertir que el API no se encuentra descrito en su totalidad. Por ejemplo, faltan algunas llamadas puntuales
muy poco usadas, como por ejemplo el acceso al hardware mediante IOCTL. Tampoco viene descrito cómo
trabajar con el Presentation Manager, sino que se 'limita' a la multitarea, gestión de memoria, comunicación
interproceso y acceso a pantalla y teclado en sesiones de modo texto.

¿Por qué el formato HTML?

Las razones de haber usado el formato HTML en la confección de este documento en vez de usar el formato INF
de OS/2 han sido tres:

facilidad de edición de las fuentes
portabilidad del texto y posibilidad de lectura en el browser preferido por el usuario (el propio OS/2 incluye
uno de serie, en el Bonus Pack)
no tengo ningún editor de INFs

Historia de los sistemas operativos

Cuando aparecieron los primeros ordenadores, la programación de estos era hecha íntegramente en código
máquina, lo cual resultaba una tarea extremadamente pesada: cada vez que se escribía un nuevo programa, además
de escribir el algoritmo adecuado era preciso añadir todo el código necesario para que el ordenador pudiese leer
datos desde una cinta perforada, imprimir en un teletipo, etc. Dado que, en general, todas estas rutinas eran
exactamente iguales para todos los programas que se hacían, pronto los programadores de aquellas máquinas

aprendieron a organizarlas en bibliotecas de rutinas. Cada vez que había que escribir un nuevo programa, solo
tenían que ir a su libreta y copiar las rutinas de Entrada/Salida que necesitaban, lo cual les simplificaba un poco el
trabajo. Otro sistema era el que la propia empresa que fabricaba el ordenador incluyese un paquete de fichas
perforadas con dichas rutinas, de modo que el programador solo tenía que coger las que le interesasen y añadirlas
estratégicamente en su paquete.

El siguiente paso fue generalizar este conjunto de rutinas. La idea era incluir juntas todas las rutinas necesarias para
acceder al hardware, y hacerlas accesibles a cualquier programador en forma de llamadas a subrutina. De este
modo, cada vez que se hacía un programa no era preciso incluir en él todas esas rutinas. Había nacido el Sistema
Operativo.

Los primeros 'Sistemas Operativos' (si es que podían recibir ese nombre) no eran más que un conjunto de
subrutinas que ayudaban al programador, ofreciéndole servicios básicos como lectura de caracteres desde un
teletipo, escritura en tambor, disco, etc.

Sin embargo, pronto se vio la necesidad de un nuevo enfoque. Los ordenadores eran caros, y su mantenimiento
también, por lo que solo algunas grandes empresas y universidades podían disponer de ellos. Para amortizarlos, se
alquilaba tiempo de proceso, de modo que se podía ir allí con un programa, ejecutarlo, y pagar por el tiempo que
le llevase hacerlo al ordenador.

El primer problema que había era que se tardaba mucho en cargar cada programa. Cuando el ordenador terminaba
de ejecutar uno, el operador tenía que insertar el siguiente, lo cual era una tarea bastante pesada y larga. Durante el
tiempo que se hacía esto, el ordenador estaba totalmente inactivo, se estaba desperdiciando tiempo. Fue entonces
cuando surgieron los sistemas de proceso por lotes (batch).

En los sistemas de proceso por lotes, los programas se almacenan en una cinta, todos seguidos. Cada vez que el
ordenador terminaba de ejecutar un programa, leía el siguiente de dicha cinta. Si llegaba alguien con un programa,
este se añadía a continuación del último que hubiese, mientras el ordenador iba ejecutando el que ya tenía en
memoria. El coste de mantenimiento del nuevo sistema era ligeramente superior, pues había que añadir al sistema el
lector de cintas en donde se escribían los programas; pero como podía ejecutar muchos más programas en el
mismo tiempo (porque no se perdía parte de este en cargar los programas), el precio de alquiler bajó
drásticamente, permitiendo que más gente tuviese acceso a los ordenadores.

Es en los sistemas de proceso por lotes donde empieza a aparecer realmente lo que hoy conocemos como Sistema
Operativo: un programa principal que es el que va cargando los distintos programas desde la cinta, les cede el
control de la CPU pero ofreciéndoles una serie de servicios de Entrada/Salida, y cuando terminan, recupera el
control del ordenador.

Pronto los programadores se dieron cuenta de que había aún más tiempos muertos de los que parecía: si un
ordenador tenía que leer algo de una cinta o una tarjeta con datos, como el sistema era mecánico tardaba mucho
tiempo en encontrarlo (mucho tiempo de cara al ordenador, claro. Una décima de segundo es algo muy relativo).
Así mismo, se empezaban a usar terminales para dar entrada de datos en tiempo real al ordenador, y el tiempo que
éste esperaba a que el usuario pulsase cada tecla también era una eternidad. Entonces se empezó a pensar en los
Sistemas Operativos multitarea.

La idea consistía en tener varios programas simultáneamente en memoria, si bien, como el ordenador es único, solo
uno estaría activo en cada momento. Cuando dicho programa hace una operación de Entrada/Salida en la que se
pierde tiempo de CPU (como leer una tarjeta, por ejemplo), mientras la mecánica realiza la operación de búsqueda

y lectura, el ordenador conmuta al siguiente programa que tiene en memoria, el cual continuará ejecutándose hasta
que haga una operación de Entrada/Salida. Cuando se llega al último, se vuelve a empezar. Para ese momento, la
operación de Entrada/Salida pedida por el primer programa ya estará lista, con lo que podrá seguir su ejecución.
De esta forma, hemos aprovechado un tiempo que antes perdíamos.

Finalmente, llegamos a los sistemas distribuidos. Generalmente, lo que tenemos es una red de ordenadores (por
ejemplo, en una universidad es normal tener una gran cantidad de PC's) conectados entre sí. Si nos fijamos,
normalmente solo unos cuantos están en uso en cada momento, y el resto simplemente se dedican a ejecutar un
bonito salvapantallas, o peor aún, a realizar la estética función de caro pisapapeles. En otras palabras, estamos
desperdiciando una vez más tiempo de proceso. Para solucionarlo, se han ideado los Sistemas Operativos
distribuidos. Estos sistemas operativos son el siguiente paso en la evolución de los Sistemas Operativos multitarea.

La idea consiste en que en los Sistemas Operativos multitarea los programas suelen estar divididos en varios
Threads o hilos de ejecución. Cada uno de e
  • Links de descarga
http://lwp-l.com/pdf8926

Comentarios de: Manual de programación de OS/2 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad