cenidet · djreccion general de instituta ~fiolo(ilc0s centro naciowl or invtlfloacim( y opuwwo...

152
/’ SEI’ BEIT DGIT fio CENTRO NACIONAL DE INVESTIGACION Y ti ’? DESARROLLO TECNOLOGICO SISTEMA OPERATIVO PARA PROCESOS ORIENTADO A TIEMPO REAL. CONCURRENTES (SOPCO - 51), a SfiP P I C?::#r -1 :: .T E :s ‘I S PARA OBTENER EL GRADO DE MAESTRO EN CIENCIAS EN INGENIERIA FLECTRONICA P R E S E N T A : ISBlAEL DAZA VELAZQUEZ CUERNAVACA, MOR. SEPTIEMBRE DE 1990 U

Upload: others

Post on 21-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

/ ’ SEI’ B E I T D G I T fio

CENTRO NACIONAL DE INVESTIGACION Y ti ’? DESARROLLO TECNOLOGICO I¡

SISTEMA OPERATIVO PARA PROCESOS

ORIENTADO A TIEMPO REAL. CONCURRENTES (SOPCO - 51),

a SfiP P

I C?::#r -1

: :

.T E : s ‘ I S PARA OBTENER EL GRADO DE

MAESTRO EN CIENCIAS EN INGENIERIA FLECTRONICA

P R E S E N T A :

ISBlAEL DAZA VELAZQUEZ

CUERNAVACA, MOR. SEPTIEMBRE DE 1990

U

Page 2: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

DJRECCION GENERAL DE INSTITUTa ~ F I O L o ( i l C 0 S CENTRO NACIOWL OR INVtlf lOACIM( Y OPUWWO TtC)(MOK:O * -

ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA

Cuernavaca, Morelos a 23 de agosto de 1990

DR.JUAN MANUEL RICMO CASTILLO Director C.E.N.I.D.E.T. I

P r e s e n t e.

ATTN: ING-RAUL HERNANDEZ E. Coordinador de Electrónica

Por este conducto, hacedos de su conocimiento que, después de haber sometido a revisión el trabajo de tesis titulado "SISTEMA

TIEMPO REAL", desarrollado por el Ing.Ismae1 Daza Velázquez, y habiendo cumplido con todas las correcciones que se le indica- ron, estamos de acuerdo en que se le conceda la autorización de impresión de la tesis, y la fecha de exámen de grado.

Sin otro particular, quedamos de us&

OPERATIVO PARA PROCESOS CONCURRENTW (SOPCO-Si) ORIENTADO A

.

A T E N T A M E N T E I,

COMISION REVISORA

de León

li :INSTITUTOS TECNOLOQICDa CtHTRO NACIONM DE iNVESIiGACiOt(

Y OtSASROllO TECNMO0Ii:O

I1 I..

PROLONGACION PALMylA t / N ICECAP No J?l A @4-214 I'MMIRA, MORELOS C R 61 431 m s . 1 2 - 7 6 - 1 3 14-08-1T ameg'

Page 3: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

DlRECClON GENERAL DE INSTITUTOS TECNOLOGICOS CENTRO NACONAL DE INVE8lIüAClOM Y DL~RROLU) lECNOLO'4 ICü

Of. NO. 613-9/31233

Cuernavaca, Mor., septiembre 5 de 1990.

Ing. lsmaei Daza Veiázquez ' '

Candldato al Grado de Maestro:en Clenclss en Ingenlería Electr6nlca ' '

P r e s e n t e ,'.

Después de haber sometldo a revisión su trabajo de tesis titulado

"SISEMA OPERATIVO PARA PROCESOS CONCURRENTE5 (SOPCO-51) ORIENTADO A TIEMPO REAL'' Ii

y habiendo cumplldo con todas las indlcaciones que el Jurado Revlsor de Tesis le hizo, se le comunlca que se le concede autorizacl6n para! que proceda a la impresión de la mlsma, como requislto para la obtenci6n del grado.

. . . , - .

!!I';R. T ~ Q ' I (it fniimCinu .PUEllCk Coordlnador de la Maestría utaEc,CloN GENEHAL DE en .inaenleña Electrónlca

Page 4: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

Este trabajo lo dedico con amor y respeto

A mis padres: Efraín Daza Arriaga Violeta Lilia Velázquez de Daza

A mis hermanos: Efrain José Carlos

A mis abuelos: ismael Daza Rosales QEPD Luz Arriaga de Daza QEPD

José Carlos Velázquez Hernández Marina Ibarrarán de Velázquez

Page 5: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

,

Con agradecimiento al

M.C. Oscar J. Gónzález Gómez por los conocimientos transmitidos como maestro y como asesor de éste trabajo.

Ing. Pedro Mejía Alvarez por su valiosa ayuda en la realización de éste trabajo.

1

,I b

Asimismo al Instituto de Investigaciones Eléctricas (IIE) por haberme brindado la oportunidad de realizar mi tesis, y al ,

Consejo Nacional de Ciencia y Tecnologia (CONACyT) por su apoyo economico mediante su programa de becas.

Page 6: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

INDICE

INTRODUCCION . . . . . . . . . . . . . . . . . . . . . . . . 1

/I

I . DESCRIPCION DE LA TARJETA DE COMUNICACIONES MAC-851 . . . 5 1.1 Tarjeta MAC-851 . . . . . . . . . . . . . . . . . . . . 5

1.1.1 Descripción general . . . . . . . . . . . . . . . 5 1.1.1.1 Canales de comunicación . . . . . . . . . . . 6 1.1.1.2 Direccionamiento de memoria . . . . . . . . . 7 1.1.1.3 Temporizadores . . . . . . . . . . . . . . . . 8 . 1.1.1.4 interrupciones 8 I/ . . . . . . . . . . . . . . . . .I.l. 1.5 IBUS I11 . . . . . . . . . . . . . . . . . . . 8

1.1.2 Descripción operativa . . . . . . . . . . . . . . 10 1.1.2.1 Direccionamiento externo . . . . . . . . . . . io 1.1.2.2 Direccionamiento interno . . . . . . . . . . . 11

1.2 Microcontrolador 80C31 . . . . . . . . . . . . . . . . 13 1.2.1 Características principales . . . . . . . . . . . 1 3 1 1.2.2 Organización de la memoria . . . . . . . . . . . . 14 1.2.3 Puertos . . . . . . . . . . . . . . . . . . . . . . 16 1.2.4 Temporizadores/Contadores . . . . . . . . . . . . 17 1.2.5 Interrupciones . . . . . . . . . . . . . . . . . . 17

I1 . DESCRIPCION Y ESPECIFICACION . . . . . . . . . . . . . . 19 11.1 Descripción general . . . . . . . . . . . . . . . . . 19 '! 11.2 Sistemas de tiempo real . . . . . . . . . . . . . . . 20 11.3 Criterios de planificación y administración . . . . . 20 11.4 Herramientas de sincronización y comunicación . . . . 22 11.5 Definición de objetivos . . . . . . . . . . . . . . . 23 11.6 Especificación de funciones . . . . . . . . . . . . . 23

I1 111 . DISE~O DEL SISTEMA OPERATIVO . . . . . . . . . . . . . . 25 . 111.1 Principios de diseño . . . . . . . . . . . . . . . . 25

111.1.1 Arquitectura general . . . . . . . . . . . . . . 25 111.1.2 Estructura general de las primitivas . . . . . . 27 111.1.3 Prioridades . . . . . . . . . . . . . . . . . . 27 111.1.4 Distribución de la memoria . . . . . . . . . . . 27

Page 7: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

111.1.5 Manejo de dispositivos 111.1.6 Estructuras de datos .

111.2 Manejo de colas de procesos 111.3 Manejo del proceeador . . . 111.4 Manejo Be procesoe . . . . 111.5 Manejo de tiempo . . . . . 111.6 Manejo de semáforos . . . . 111.7 Manejo de buzones . . . . . 111.8 Manejo de memoria dinámica

. . . . . . . . . . . . . . 30 30 . . . . . . . . . . . . . 32 . . . . . . . . . . . . . 34 . . . . . . . . . . . . . . 40 . . . . . . . . . . . . . 43 . . . . . . . . . . . . . . . 4711

. . . . . . . . . . . . . 49

. . . . . . . . . . . . . 53

. . . . . . . . . . . . .

. .

111.9 Manejo-de interrupciones . . . . . . . . . . . . . . 57 111.10 Manejo de errores y excepciones . . . . . . . . . . 62 111.11 Inicialización del sistema . . . . . . . . . . . . . 65 '! 111.12 Interfaz . . . . . . . . . . . . . . . . . . . . . . 68

111.13 Detalles de implementación . . . . . . . . . . . . . 70 111.13.1 bonf iwración del sistema . . . . . . . . . . . 70 111.13.2 Compilado y ligado/localizaciÓn

del sistema operativo . . . . . . . . . . . . . 71 111.13.3 Datos técnicos . . . . . . . . . . . . . . . . 71

I

IV . LIBRERIA DE RUTINAS DE ENTñADAlSALIDA . . . . . . . . . . 73 V . DESARROLLO DE APLICACIONES . . . . . . . . . . . . . . V.1 Objetos . . . . . . . . . . . . . . . . . . . . . .

V.1.1 Procesos . . . . . . . . . . . . . . . . . . . v.1.2 .semáforos . . . . . . . . . . . . . . . . . . . . . v.i.3.Buzones. . . . . . . . . . . . . . . . . . . . V.i.4 Memoria . . . . . . . . . . . . . . . . . . . V.1.5 Manejo.de interrupciones . . . . . . . . . . . . .

. . . . . . . v.2 Primitivas . . . . . . . . ~ . . . . . . . . . . . . . . V . 3 Descripción de un sistema de aplicación . . . . .

V.3.1 Codificación de procesos . . . . . . . . . . . . . .

V.3.3 Codificación de un manejador de excepciones V.3.4 Compilación y lig.ado/localiiaciÓn

V.1.6 Manejo de errores y excepciones

V.3.2 Rutina de atención a una interrupción

del código de aplicación . . . . . . . . . .

:I . . . 85 . . . 86 . . . 86 . . . . 87 . . a 9 . & '

. . . . . 90 . . . . 91 . . . 93 . . . 93 . . . 109 i/ . . . 109 . . . 111 . . . 112 . . . 112 11

Page 8: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

U

V.3.5 Tabla de descriptores iniciales . . . . . . . . . 113 V.3.6 Depuración del eistema . . . . . . . . . . . . . . 115 I

V.3.7 Requerimientos . . . . . . . . . . . . . . . . . . 116 VI. PRVEBAS Y EVALUACION DEL SISTEKA OPERATIVO . . . . . . . 117 VI.l Objetivos y alcances de las pruebas . . . . . . . . . 118 V1.2 Planes desrueba . . . . . . . . . . . . . . . . . . . 118 VI.3 Requerimiento8 . . . . . . . . . . . . . . . . . . . . 118 VI.4 Pruebaél . . . . . . . . . . . . . . . . . . . . . . . 119

11

CONCLUSIONES . . . . . . . . . . . . . . . . . . . . . . . . 125

APENDICE A Archivos que forman el sistema operativo . . . 128 pENDICE B Códigos de error y excepción . . . . . . . . . 135 (

BIBLIOGRAFIA . . . . . . . . . . . . . . . . . . . . . . . . 141

Y

Page 9: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

INTRODUCCION I

Un sistema eléctrico de potencia implica necesariamente la // supervisión de sus procesos de operación: generación, transmisión y distribución de la energía eléctrica, a través de la disponibilidad expedita y completa de la información. Dado el tamaño y la complejidad de éstos equipos en el país, los elementos de automatización y control son indispensables para

1; llevar a cabo funciones de análisis y supervisión de la red, 11

debido a la gran cantidad de datos que se debe procesar. Una de las herramientas modernas que sirven de auxilio al

control 6on los sistemas computarizados, a través de los que es posible examinar, en línea, la red eléctrica en todos sus puntos de operación y realizar un análisis rápido y eficiente de la ! información recabada, de tal modo que el operador puede determinar rápidamente cuál Bs el estado del sistema eléctrico.

Hoy día, las computadoras se interconectan formando redes y sistemas distribuidos, teniéndose que coordinar las comunicaciones entre ellas. Las estaciones en una red son,, llamadas nodos, reales Ó virtuales, que pueden ser físicamente Ó

lógicamente interconectados en una variedad de topologías que responden a los requerimientos del usuario. Las redes están conectadas por subsistemas de comunicación consistentes en procesadores, y varios tipos de enlace como líneas telefónicas, canales de satélite, cables coaxiales, y enlaces de microondas. Los procesadores de comunicación son sistemas de computación con tres funciones primordiales: o Realizan el enlace entre las computadoras principales, o Descargan las tareas de comunicación de las computadoras, o Definen la interfaz a través de la cual los computadores

Desarrollos en éstos subsistemas han sido manejados por el requerimiento de nuevos equipos que han llegado a ser parte de muchos medios de programación: sistemas de tiempo .real, correo electrónico y transacciones, son ejemplos que han influído en los I servicios de comunicación.

t

acceden a las capacidades de comunicación de la red.

.

Por otra parte, el manejo de procesos ha proporcionado

1

Page 10: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

1 1, utilidad, cada uno formando un bloque activo de la aplicación,

principalmente debido a que reflejan en una forma natural las muchas actividades paralelas lógicas y físicas en un sistema. Su 1 utilidad es realizada solamente a través del control y uso apropiado. Un sistema operativo lleva a cabo la planificación de los procesos y recursos de un sistema digital, transformándolo en una máquina virtual donde varios objetos pueden ser construídos fácilmente. Puede facilitar un ambiente de multiprogramación , donde la ejecución de los procesos se traslape, así como proporcionar las herramientas necesarias de sincronización y comunicación para que éstos interactúen.

La' comunicación es la base en los sistemas de tiempo real para su extensión. Los subsistemas de enlace deben satisfacer requerimientos de tiempos a nivel de mensaje. Los períodos requeridos no son manejados Únicamente por la comunicación interprocesoc, sino también por los tiempos implícitos en las funciones del sistema operativo involucradas en los procesos de aplicación. La exactitud se incluye con la capacidad de planificación de mensajes síncronos y esporádicos, así como I1 asegurando que el tiempo de respuesta requerido para mensajes asíncronos se cumpla. La comunicación en tiempo real comprende:

I

.

o Ruteo dinámico garantizando cumplimiento de tiempos, o Manejo de contenedores de red que soporten planificación,

o Planificación de red que puede ser combinada con la de procesador para dar soluciones de planificación a nivel de sistema. Con la red formando la base de los sistemas de tiempo real,

éste no puede ser más fuerte que las soluciones de comunicación que soporta, con una arquitectura de comunicación y protocolos para tratar eficientemente los mensajes que requieren reparto oportuno.

En un sistema de múltiples computadoras, cada nodo tiene un sistema operativo para muitiprogramación que permite a varios procesos coexistir en el nodo. En consecuencia, el número de procesos concurrentes involucrados puede exceder el número de nodos. La comunicación interprocesos en una multicomputadora se

o Tolerancia a fallas y comunicaciones de tiempos restringidos, li I

I,

2 I

Page 11: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

lleva a cabo ruteando mensajes a través de la red. En el departamento de Electrónica del 1nstit:ito de

Investigaciones Eléctricas (IIE) se han desarrollado aiversos equipos electrónicos, con los que se integran sistemas de control distribuído y supervisorio para la generación y distribución de la energía eléctrica del país. Se han desarrollado equipos controladores para las comunicaciones que permiten la interconexión de sistemas, así como herramientas para el diseño, pruebas, diagnóstico y operación de &tos subsistemas de comunicación.

Actualmente, los desarrollos del departamento exigen la interconexión de diferentes computadoras (Ó controladores), cada una con sus funciones propias. Se diseñó un equipo controlador inteligente de comunicaciones (CIC) que se encarga básicamente de interconectar diferentes redes a distintas velocidades y con varios medios físicos. Asimismo, el CIC puede tener algún procesamiento de la información que fluye por él, tales como rutinas de tolerancia a fallas, estadísticas de comunicación, etc. La arquitectura básica del equipo CIC consta de una tarjeta de procecamiento y varias tarjetas de comunicación, cada una con los programas de protocolo necesario. Además, en caso necesario, puede contener un modulador - demodulador (modem) para interconectarlo con radio VHF/UHF ó línea telefónica.

Otro desarrollo del departamento es el proyecto HAC (Sistema de Multiprocesadores para Adquisición y Control en tiempo real), el cual es un sistema de cómputo constituído por varios procesadores enlazados por un mismo bus y comunicados por memoria compartida. La arquitectura del sistema se basa en tres tipos de módulos, configurable de acuerdo a la aplicación: - HAC-1186: módulo de procesamiento que es prácticamente una

- MAC-851: módulo de comunicaciones (hasta 16 módulos), - MAC-909: módulo de memoria externa (hasta 3 módulos).

Otra línea son las tarjetas SAC (Sistema de Adquisición y Control) cuya función principal es el control automático industrial. Cuenta con tarjetas de entradas analógicas Ó i

digitales, de salidas analógicas Ó digitales, de procesamiento y

computadora en una tarjeta (1 a 8 módulos),

I

' :

//

i

3

Page 12: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

de comunicaciones. Dentro de las tarjetas de comunicación se cuenta con la

MAC-05iI operada con un microcontrolador de la familia 8051. Esta tarjeta se encarga de la transferencia de información entre los dispositivos externos y la tarjeta de procesamiento (maestra), aminorando las tareas de ésta Última y haciéndola más rápida.

El objetivo'del presente trabajo es el desarrollo de un sistema operativo para procesos concurrentes (soPco-51), para permitir facilidad y modularidad en el desarrollo de aplicaciones en la tarjeta UAC-851. El sistema operativo permite que varios procesos se ejecuten concurrentemente, y proporciona herramienta8 para qUe se sincronizen y comuniquen entre si. SU arquitectura está orientada a soportar aplicaciones en tiempo real para satisfacer las necesidades de comunicación en el control de procesos industriales.

Los temas que se presentan en ésta obra están enfocadoe a la especificación, diseño y aplicación del trabajo realizado, para io cual es necesario tener conocimientos de sistemas operativos.

En el primer capítulo se presentan las características de la tarjeta MAC-051, sus dispositivos y el microcontrolador 80C31 con que cuenta.

En el capitulo dos se realiza una descripción de las Características generales de un sistema operativo y de un sistema de tiempo real, definiendo conceptos generales en los que se basa el sistema operativo. Se definen lo objetivos y se especifican los objetos con que cuenta el sistema operativo.

El diseño del núcleo es el tema del capítulo tres, donde se expone la implementación realizada, 108 procedimientos y rutinas que lo constituyen, así como las estructuras de datos empleadas.

Se desarrolló una librería de rutinas de entradalsalida para la tarjeta, la cual se presenta en el capítulo cuatro.

En el capítulo cinco se describe, en forma general, un sistema de aplicación.

El capítulo seis contiene todo lo correspondiente a las pruebas y evaluación del trabajo.

Por Último las conclusiones al trabajo y la bibliografía básica para el desarrollo del mismo.

4

Page 13: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

I . DESCRIPCION DE LA TARJETA DE COMUNICACIONES MAC-851.

1.1 TARJETA MAC-851. I. 1.1 DESCRIPCION GENERAL.

La tarjeta MAC-851 es un módulo de comunicación serie para IBUS-111 que soporta las normas RS-485 y RS-232C. Cuenta con el microcontrolador~80C31 quien dispone de los dispositivos internos y el manejo de los canales de comunicación.

I B L S

I I I

FIFO DE ENTRADA

IDENTIF. ESTADO

serie > bit-bit

1 8 0 ~ 3 1

~

diagnos. U y prueba S liEizi4

IESTADO 1NT.I

DUART MC268 1

E n t r a d a s q-+ FIG. 1.1 ARQUITECNRA G-L DE U TARJETA MAC-851.

Como se observa en la arquitectura general (figura l.l), los dispositivos internos básicos con los que cuenta son: tres unidades de memoria, un doble Transmisor-Receptor AsincrÓnico Universal (DUART) , un expansor de puertos (NSC810) , dos memorias primero en entrar - primero en salir (FIFO), y tres registros de verificación.

5

Page 14: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

I.1.1.1CANALECm- El microcontrolador maneja directamente dos canales de I(

comunicación: el BIT-BIT y el de diagnóstico y pruebas. ~1 canal serie BIT-BIT utiliza la interfaz RS-232C, se

encuentra asignado al puerto 1 del miCrQCOntrQladOr manejándose por medio de un programa que se encarga de generar la sincronización para la transmisión y recepción de datos, y la 'I

operación del protocolo de las líneas RS-232C. Se tienen cuatro indicadores visuales para observar la transmisiÓn/recepciÓn del canal. Su velocidad es programable hasta 2400 Bauds.

microcontrolador, cuenta con dos líneas: transmisión (TXD) y recepción (RXD), con niveles HCXOS. Sus características son:

El canal de diagnóstico y prueba es el puerto serie del I,

- bidireccional, - Velocidad programable hasta 7200 Bauds, - 8 bits de datos, - 1 bit de paro, - No paridad. El circuito DUART (MC2681) maneja dos canales funcionalmente

independientes que pueden configurarse como RS-485 Ó RS-232C. Incluye un temporizador propio con el que se puede programar velocidad, tamaño de palabra, paridad, bits de paro, modo, etc. Asimismo, puede proveér señal de referencia para los temporizadores del microcontrolador y del circuito expansor de puertos. Para la interfaz RC-232C maneja las señales': TXD, RXD, CTS, RTS, DTR, y DSR ó CD. Para la interfaz RS-485 maneja las señales: TXD, RXD, dirección de canal y señal de colisión. Las características de los canales son:

programable por interruptores,

1

- Dirección externa del módulo en el canal de comunicaciones

- Bidireccionales, - Velocidad de comunicación programable de 50 hasta 38400 Bauds, - Formato de datos programable: 0 5 - 8 bits de datos, 0 1 a 2 bits de paro en incrementos programables de 1/60 de paridad par, impar, no paridad, paridad forzada,

bit. IO

1 T r a n ~ m l s l ~ n de datos ITXD), Llmplar para onvlar ICY'S). Tsrmlnal de datos Ilsta IDTR), Sena1 portadora ICD).

Racepclón da datos IRYD), Requerlilento para envlar IñTS), Tranmlior llito ímR).

6

Page 15: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

I1 - Modos de operación programables: O Normal (bidireccional), 0 Eco automático, 0 Lazo local,

0 Jerárquico (Muitipunto) . e Lazo remoto, I - Reactivación automática, - Detección de error de paridad, marco, sobrefiujo y bit de

El expansor de puertos (NSC-810) controla los canales en paralelo de la tarjeta: el bus externo trapezoidal, los interruptores de programación y las entradas digitales.

trapezoidales que se manejan con el puerto A y C del circuito NSC-810. Para la habilitación y direccionamiento del bu8 se tiene dos líneas del puerto C que indican la función, que puede ser: entrada, salida, Ó deshabilitado.

Los interruptores de programación son definidos por el usuario de acuerdo a las necesidades de la aplicación. Cada línea del puerto de entrada B tiene conectado un interruptor que '1

representa un estado lógico dependiendo de su posición. Las entradas digitales están asignadas al puerto C, son dos

líneas con niveles HCHOS que pueden utilizarse para detectar ,I

presencia de equipo Ó señales provenientes de equipos externos de comunicación (por ejemplo: detección de portadora de radio, conexión de modem, etc)

La tarjeta cuenta con cinco conectores: el conector a IEVS IXi, el conector de campo, dos conectores de comunicación para RS-485, y un conector para el canal de diagnóstico y prueba. Los canales de comunicación RS-485 se presentan también en el I conector de campo.

El flujo de información con la tarjeta aaeetra se efectúa por medio de dos memorias primero en entrar-primero en salir (FIFO) de 512 bytes, una para entrada y otra para salida de datos.

inicio falso. 11 b

El bus de control externo trapezoidal consta de 8 líneas i

I/

i

1.1.1.2 DIR ECCIONAMIENTO Em ORIA, El direccionamiento máximo del microcontrolador es de 64

kbytes de código y 64 kbytes de datos, los cuales considera espacios separados. La tarjeta tiene tres bases: una para código

Page 16: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

(EPROM), otra para datos (RAM) y finalmente una para código y / o datos (ROM/RAM), cada una para memoria de hasta 32 kbytes. En la Última base se traslapan los eepacios de direccionamiento de J

datos y cÓdigo, esto es, se puede ejecutar código escrito en RAM. De la dirección 7COOH a 7FFFH (1 kbytes) de memoria RAM se utiliza para el mapeo de circuitos periféricos y registros internos de la tatjeta.

~ . l . l . ~ - La tarjeta cuenta con cuatro temporizadores:

o 2 del microcontrolador 8 0 C 3 1 , o 1 del circuito DUART, o 1 del circuito N S C- 8 1 0 .

El circuito expansor de puertos tiene integrados dos

Los temporizadores del microcontrolador pueden conectarse al temporizador ó al reloj de TX/RX del canal A del circuito DUART, para tomar señal de referencia. El contador del circuito N S C- 8 1 0 se puede relacionar con el temporizador del DUART, y su salida se presenta en el registro de estado interno.

temporizadores,.pero sólo uno se encuentra conectado. I/

11

J. 1.1.4 -üPCIONES, El microcontrolador de la tarjeta puede ser interrumpido por

sus temporizadores internos, su puerto serie, el circuito DUART por medio de la interrupción externa O, y por la tarjeta maestra por medio de la interrupción externa 1 del microcontrolador.

La tarjeta de comunicaciones puede interrumpir a una tarjeta maestra Ó quitar la interrupción, la cual se observa en el registro de estado interno. En la siguiente sección se explican las fuentes de interrupción del microcontrolador.

11

x.1.1.2 ZBEiLLL Es un bus digital diseñado para interconectar hasta 18

módulos diferentes de 8 y 16 bits, que pueden ser de cómputo, de comunicaciones, memorias, adquisición de señales, etc. De acuerdo a la función de las señales del bus, se pueden dividir en cinco categorías:

I

I1 o Datos 16 líneas

Page 17: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

o Direcciones 26 líneas o Control 11 líneas o interrupciones 3 líneas o Alimentación 18 líneas

u

Las líneas de datos son el medio por el cual la información es intetcambiada entre los diferentes módulos del sistema. Las líneas de dirección especifican el módulo y la localidad dentro del mismo que se desea accesar durante un intercambio de información. Las de control indican las funciones que deben realizarse, las de interrupción son empleadas por tarjetas

4 esclavas para indicar a la maestra que se requiere alguna clase de servicio, las líneas de alimentación proporcionan voltajes regulados así como la corriente necesaria para alimentar a todas las tarjetas. Las señales del bus que intervienen en el funcionamiento de la tarjeta MAC-851 son: - Señal de inicia1izaciÓn.- para reinicializar el sistema, puede ser activada por cualquiera de los módulos Ó por un dispositivo externo. - Líneas de dirección: se direcciona la tarjeta (por posición),

para recibir Ó transmitir información, Ó para efectuar alguna acción de control sobre la misma. - Lineas de selección por posición.- empleadas para asignar un'

número de identificación único a cada una de las 16 posiciones disponibles en IBUC 111. - Líneas bidireccionables de datos.- empleadas para el

- Señal de control auxiliar para el direccionamiento por posición.- utilizada por el bus cuando desea accesar a cualquiera de las tarjetas. - Línea de lectura.- indica que existe una dirección válida para efectuar la lectura de la información contenida en la localidad. - Linea de escritura.- indica que existe una dirección válida

para efectuar la lectura de información en la,localidad referida. - Lineas de interrupción.- para indicar algún tipo de interrupción. - Señal de error.- en una operación de transferencia de información.

intercambio de información. 1

1,

h

II - Linea de alimentación regulada.- 5 volts, destinada a los

9

Page 18: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

circuitos digitales. - Línea común.- retorno para los circuitos digitales.

Las tarjetas son colocadas en conectores que están montados I,

en un trasplano, el Cual tiene físicamente las líneas del bus,

I1

1.1.2 DESCRIPCION OPERATIVA. 1.1.2.1 DIRECCIONAMIENTO EXTERNO,

El direccionamiento a la tarjeta se realiza por medio del bus IBUS-111, donde un módulo maestro, en operaciones de lectura y escritura, puede accesar registros y funciones.

Los registros de la tarjeta que se accesan son: o Registro de identificación, . o Registro de estado, o Memorias FIFO.

Las funciones de la tarjeta que se accesan son: o Retransmisión de la memoria FIPO de salida, o Reconocimiento de interrupción, o Interrupción al esclavo, o Recolocar la tarjeta.

La tabla 1.1 muestra el direccionamiento externo.

B A S E + 200H

T A B L A 1 . 1

La dirección base corresponde a la posición de la tarjeta en el bus.

El registro de identificación puede leerse en la dirección base + lOOn, y tiene la asignación que se observa en la figura 1.2 . I

Para que un módulo maestro interrumpa a la ta,rjeta MAC-851 efectúa una operación de escritura en la dirección base + JOOH, observándose el estado de la interrupción en el bit 7.

81

10

Page 19: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

INTWE

El registro de es tado se accesa en la dirección base + 300H, y tiene las señale6 de la figura 1.3 .

P f . ? I O O O O O

I I I

CODIGD DE I DCNTIFICACION BIT 7 DEL PUERIO 1 DEL 8 0 C 3 1 í P R O P O S I T 0 GENERAL)

L

I N T E N - P i X I C I O N DE INiERRüPCION ESCLAVO A I U E S i R O

R E C O L O U R - 1 RECOL4KAR, O OPERACION

E F - O HENORIA FIFO DE SALIDA VAC I A

FIG. 1 . 3 REGISTRO DE ESTADO.

1 IKIERRUPCION, O NO INTEARUPCION

F F - O'MENORIA FIFO DE EWUDA L L E N A

X X X li

Y IIimcREcoLowR FF

I/

Un módulo maestro puede poner a la tarjeta MAC-851 en estado de reinicialización u operación efectuando una escritura en la dirección base + 1OOH.

Para que la tarjeta maestra reconozca la interrupción del módulo esclavo, realiza una escritura en la dirección base + 200H. Con una lectura a la dirección base + 200H, la tarjeta maestra solicita una retransmisión de datos de la memoria FIFO de salida.

I!

,~

I1

1.1.2.2 ENTO INTERNO,

puede accesar las siguientes partes: Dentro del direccionamiento interno, el microcontrolador I

o Interfaz al bus, o Direccionamiento de memoria, o Direccionamiento del DUART, o Direccionamiento del expansor de puertos.

I

En el direccionamiento de la interfaz al bus se tienen los ,, siguientes dispositivos:

o Memorias FIFO, o Registro de estado interno,

li

Page 20: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

I1

7EWH O E ENtRAOA

y las siguientes funciones: o Reconocimiento de interrupción al maestro, o Retransmisión memoria FIFO de entrada, o interrupción ai maestro, o Recolocar u operar el circuito DIJART, o Reinicilizar los apuntadores de las memorias FIFO.

Las funciones y dispositivos internos se encuentran en el área de direccionamiento del microcontrolador (tabla 1 . 2 ) .

D E S A L I D A

OlRECClOW I LEcnJlu I . ESCRI IVRI I M E M O R I A FIFO 1 M E M O R I A FIFO

F I F O DE E W T R A D A R E G I S T R O DE E S T A M I N T E R N O R ~ C O O K K I M I E N T O

m w A L WAE5TRO R E C O L O C A R - A D O R E S D E F I F O DE S A L I D A R E C O L O C A R * P V W T A O O R E S

X X

I 7EO3H I IWTERRUPCIOW I D E F I F O D E E ? 8 T f U O A . I

x TOUT 1" - - F F E F

X

I M A E S T R O I 7W4H I O P E R A WARI I R E C O L O C A OUART

I I I I

TABLA I . 2

E F - O W E I O R I A F I F O DE WIIRADA VACIA F F - O I I E W O R I A FIFO DE SALIDA L L E N A I M T E M - S E Ñ A L D E INIERRUPCIOW ALMAESTRO T O U T - S A L I D A D E L TMPORIUDOR o ou nsc-810

F I G . 1. 4 R E G I S T R O DE E S T A M INTERNO.

Como se ha presentado, los registros de estado, identificación y estado interno guardan información de la situación de la tarjeta.

encuentran mapeadas a memoria externa de datos. El microcontrolador direcciona el dispositivo DUART en el rango de: 7DOOH a 7DOFH, y al expansor de puertos en el área: 7 C 8 0 H - 7 C 9 9 H . El NSC- 810 cuenta con 1 2 8 bytes de memoria RAM, cuyo

Las direcciones para manejar los dispositivos internos se $

1 2

Page 21: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

direccionamiento está dentro del espacio: ICOOH - I C I F H .

BUS DE PUERTO

DE CONTROL--$ PROGRAMABLE SERIE PROGRAMABLE

EXPANSION E/S I I INTERRUPCIONES 64 KBYTES

1.2 MICROCONTROLADOR 80C31. 1.2.1 CARACTERISTICAS PRINCIPALES. I/

El 80C31 es el miembro CMOS de la familia de microcontroladores 8051. Prove6 características que lo hacen un potente controlador para usarse en computación, comunicaciones y aplicaciones industriales.

1 1

Como se observa en su arquitectura general (fig. 1.5), incluye las siguientes características: - Unidad Central de Procesamiento de 8 bits optimizado para - 128 bytes de memoria de datos integrada, - dos temporizadoresfcontadores de 16 bits, - UART bidireccionai, - Estructura de cinco fuentes de interrupción con dos niveles de

aplicaciones de control,

prioridad, SriQ r P

I CENTRO DE IWO&ACION 1 13 I C E P! I D 5: T I

Page 22: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

- oscilador integrado, - procesador booleano, - RAM direccionable por bit, - direcciona hasta 64 kbytes de memoria código, - direcciona hasta 64 kbytes de memoria externa de datos. 1.2.2 ORGANIZACION DE LA MEMORIA.

Todos los dispositivos de la familia 8051 tienen espacios de direcciones separados para memoria de código y datos. La memoria de código puede solamente ser leída, no se puede escribir y puede ser hasta de 64 kbytes. La memoria externa de datos ocupa un espacio'de direcciones separado de la memoria de código, y puede consistir hasta de 64 kbytes.

Se tienen disponibles dos espacios de memoria de datos, el interno y el externo. El espacio de memoria interna para el 80C31 se observa en la figura 1.6 .

I

,,

1 2 8 b y t e s n u p e r l o r e s m FüNCION OFFH

D I R E C C I O N A N I E N T O 128 b y t e s i n f e r i o r e s

O

F I G . 1.6 E S P A C I O D E llMORIAINTERNA.

Para direccionar la memoria interna solo se necesita un

ESPACIO DIRECC I ONABLE 2 F W

r 4 B A N C O S

D E 0 R E G I S T R O S

R O - R 7

DIRECCIONES 81; O - 7FN

OFH F=l nau 1-1 - VALOR INICIAL DEL CP

F I G I . 7 SECCION INFERIOR DE LA I W O R X A INTERNA.

byte. Los 128 bytes inferiores de la memoria interna (figura I/

1.7), pueden ser accedidos por direccionamiento directo Ó

indirecto. Los primeros 32 bytes son agrupados en 4 bancos de 8

14

Page 23: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

registros cada uno (RO a R7), dos bits en el registro de estado del programa (PSW) selecciona cuál banco de registros está en uso. Los siguientes 16 bytes forman un bloque de espacio de ,, membria direccionable por byte Ó por bit, los 128 bits en ésta área pueden ser accedidos directamente en el rango OOH a 7FH.

Los registros de función especial (WE) son listados en la tabla 1.3 .

Nombre Dirección

ACC * B PSIJ SP DPTR

DPL DPH

PO P1 P2 P3 IP IE TMOD TCON THO TLO TH1 TH1 SCON SBUF PCON

Acumulador Registro B

Palabra de estado de programa Apuntador al stack Apuntador a datos (2 bytes)

byte menos significativo byte más significativo Puerto O hierto 1 Puerto 2 Puerto 3

Control de prioridad de interrupción Control de habilitación de interrupción Control de modo temporizadorlcontador Control temporizadorlcontador byte alto temporizador/contador O byte bajo temporizadorlcontador O byte alto temporizadorlcontador 1 byte bajo temporizadorlcontador 1 Control del puerto serie Registro de datos serie Control de consumo de potencia

OEOH OFOH ODOH 8 1H

82H 83H 8 OH 9 OH OAOH OBOH OB8H OABH 89H 88H 8CH 8AH 8DH 8BH 98H 99H 87H

re9lstroe dlrecclonables por byte y por blt.

IAmA 1.3

Estos registros solamente pueden ser accesados por direccionamiento directo.

El apuntador al stack, un registro de 8 bits, es f incrementado antes de que el dato sea almacenado. Puede residir en cualquier parte de la sección inferior de la RAM interna, es inicializado a la dirección 07H.

El apuntador a datos DPTR puede tomar una dirección de 16 bits y ser manipulado como un registro de 16 bits ó como dos registros independientes de 8 bits.

Cuando se inicializa el microcontrolador, el registro PC

15

Page 24: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

I

P3.3 P3.4 P3.5 P3.6 P3.7

INTl (interrupción externa 1), TO (entrada externa para el temporizador/contador O), T1 (entrada externa para el temporizador/contador 1), h'R .(señal de escritura en memoria externa de datos), RD (señal de lectura en memoria externa de datos). I

16

Page 25: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

4

I I

transmieión y recepción se utiliza el temporizador 1 del microcontrolador. El registro SCON tiene el control del estado del puerto serie.

I 1

1.2.4 'I"ORIZADORI@/COM"ADO~. El microcontrolador tiene dos temporizadores/contadores de

16 bits cada uno? En la función de temporfzador el registro es incrementado cada ciclo máquina, el cual consiste de 12 periodos del oscilador por lo que el rango es 1/12 de la frecuencia del mismo. En la función de contador el registro es incrementado en respuesta a una transición 1 a O en su correspondiente entrada externa' TO Ó TI, como se necesitan dos ciclos máquina (24 periodos del oscilador). para reconocer la transición, el máximo rango es í/24 de la frecuencia del oscilador. Tienen V a P o modos de operación: - nodo O: 13 bits de cuenta (8 bits de TAX y los 5 menos

- ifodd 1: igual que el modo O, sólo que el registro es

- Modo 2: 8 bits de cuenta con recarga automática. - Modo 3: simula tres temporizadores/contadores, el temporizador 1 toma una cuenta y el 2 establece THO y TLO como dos contadores separados. En el registro TMOD se programan los temporizadores/

i I I

I

1

I I

I 1 1

I

I d*

significativos de TLx) con una preescala 1/32.

configurado a 16 bits. t

1 I

1 I I I

contadores, y en el registro TCON se controlqn.

1.2.5 INTERRUPCIONES. El microcontrolador tiene cinco fuentes de interrupción

(figura 1.5), dos externas y tres internas. Las interrupciones externas y pueden ser cada una

activadas ya sea por'nivel Ó por transición. Las banderas que generan \las interrupciónes son los bits IEO e I E I , que son reinicializadas por el microcontrolador al vectorizar la interrupción si fué activada por transición, si fuá activada por nivel la fuente externa controla la bandera correspondiente.

Las interrupciones de los temporizadores O y 1 son generadas por TFO y T F I , las cuales son colocadas por una terminación de

I

I t

17

I

!I

Page 26: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

cuenta (o) y limpiadas por .el microcontrolador al vectorizar la interrupción.

~a interrupción del puerto serie es generada por lógica "OR" de los bits RI (recepción) y TI (transmisión), ninguno es reinicializado por el microcontrolador, la rutina de servicio determina lo que generó la interrupción y reubica la bandera correspondiente cod una instrucción.

Todas las interrupciones pueden ser generadas, ó interrupciones pendientes pueden ser canceladas por medio de una instrucción del programa. Estas se controlan en 105 registros I E e IP, cada fuente de interrupción puede ser individualmente habilitada Ó deshabilitada, así como globalmente. Asimismo, cada una puede ser individualmente programada para uno de dos niveles de prioridad, una interrupción de baja prioridad puede ser suspendida por una de alta prioridad pero no por otra de baja prioridad, una interrupción de alta prioridad no puede ser bloqueada por otra fuente de interrupción. Si dos requerimientos de la misma prioridad se reciben simultáneamente, una secuencia de exámen interno determina cuál requerimiento es servido. Si la instrucción en progreso es RFI'I ó accesa a los registros IE ó IP, una instrucción más será ejecutada antes que cualquier interrupción sea vectorizada.

~

Fuente Dirección del vector Interrupción externa O 0003H Interrupción temporizador O OOOBH Interrupción externa i 0013H Interrupción temporizador 1 OOlBH Puerto serie 0023H -

1

II !I

!!

/I

!I

18

Page 27: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

I ¡ . DESCRIPCION Y ESPECIFICACION.

11.1 DESCRIPCION GENERAL. En términos simples, un sistema operativo es un conjunto de

programas que administran uno Ó varios procesadores y sus diferentes dispositivos y recursos, entre varios procesos.

Se distingue como una máquina virtual que realiza una interfaz entre el sistema digital y los programas de aplicación. Cuando un requerimiento es hecho, el sistema operativo dirige todas las acciones para conformarlo. La administración de los recursos hace posible que éstos sean compartidos entre varios procesos, para lo cual se deben tener políticas para servir y solucionar conflictos. Como recursos físicos se consideran el tiempo de procesador, el espacio de memoria, los dispositivos periféricos y los datos.

El núcleo del sistema operativo comprende funciones tales como la asignación del procesador, el cambio de estado de los procesos, la sincronización de procesos, la comunicación ent-re los mismos, y el manejo de memoria, interrupciones y erroresf excepciones. SÚ propósito es proporcionar un medio en el cual varios procesos puedan existir, funcionando con total independencia unos de otros, Ó ser asincrónicos. Una de las formas de procesamiento es la multiprogramación, la cual incrementa la utilización del procesador de forma considerable.

6

CARACTERISTICAC DESEABLES, Eficiencia.- Varios criterios se presentan:

a) tiempos de respuesta, b) utilización de los recursos, c) trabajos realizados por hora.

Confiable.- Idealmente un sistema operativo deberá estar completamente libre de errores, y ser capáz de manejar todas las contingencias.

Mantenimiento. - Debe ser posible dar mantenimiento a un sistema operativo, mejorándolo ó corrigiendo errores. Esto implica que el sistema deberá ser modular en construcción, con interfaces definidas claramente, y que deberá ser documentado.

Tamaño pequeño.- un sistema operativo ,debe estar lo más

19

Page 28: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

Óptimo posible para que sus tiempos de respuesta sean pequeños. El tamaño depende de las funciones con las que se dese6 contar.

11.2 SISTEMAS DE TIEMPO REAL. un sistema de tiempo real debe responder a ciertos eventos

externos, por lo que la exactitud del sistema depende no solamente de los r,esultados lógicos sino también en el tiempo en el cual éstos son producidos. El procesamiento en tiempo real impone requerimientos especiales sobre el sistema operativo, la teoría de planificación se orienta al problema de cumplir las demandas de tiempos especificados proporcionando soporte básico para asignar los recursos en tiempos reducidos. Esto establece la planificación de los recursos de acuerdo a algunos algoritmos bien concebidos tales que el comportamiento del sistema sea entendible, predecible y mantenible.

11.3 CRITERIOS DE PLANIFICACION Y ADMINISTRACION. PROCESOS.

La planificación del procesador comprende la asignación física del mismo a los procesos. Se consideran tres niveles importantes de planificación: ulto nivel que involucra la inicialización y terminación de los trabajos, nivel intermedio que describe los movimientos dentro y fuera del estado de bloqueado as€ como el traslado de variables de los procesos en memoria, y la planificación de bajo nivel que determina a que proceso listo se le concede el procesador cuando queda disponible y de hecho se lo asigna.

Los algoritmos de esquematización se dividen en dos tipos principales: apropiativos y no apropiativos. En el primer caso los procesos se ejecutan por sucesiones en períodos cortos de tiempo, y en el segundo se ejecutan hasta su terminación. La planificación apropiativa es útil en sistemas en los cuales los

procesos de alta prioridad requieren atención rápida, como es el caso de los sistemas de tiempo real, respondiendo el sistema a eventos dependientes del tiempo. La apropiación implica sobrecarga por el cambio de contexto.

Entre los objetivos de la planificación se considera: ser

?

I

2o I

Page 29: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

justa, maximizar la capacidad de ejecución dando tiempos de respuesta aceptables (en sistemas de tiempo real las respuestas

rápidas son esenciales), y favorecer a los procesos con prioridades más altas.

En la planificación de Asignación en rueda (round-robin) los procesos se despachan conforme al primero en llegar-primero en ser servido, pero'se les otorga una cantidad limitada de tiempo de procesador llamada dfvisión Ó cuanto de tiempo (figura 2.1) .

I -FIG. 2.1 ASICNACION EN RVEDA (ROUND-ROBIN).

Si un proceso no termina antes de expirar su tiempo de procesador, entonces éste es apropiado y otorgado al siguiente '2

proceso en espera. El proceso anterior es situado al final de la cola de listos.

MEMORIA. Por organización de la memoria se refiere a la forma en como

se le considera. Por otra parte, la administración de la memoria se enfoca en

las estratégias para obtener un buen rendimiento. Dentro de las estratégias para asignar requerimientos de memoria se encuentran: el mejor ajuste donde se concede la zona de memoria libre que más acomode a la cantidad solicitada dejando así el menor espacio sin usar, en el peor ajuste se proporciona el espacio de memoria libre más grande quedando áreas amplias que se pueden asignar ''

posteriormente, y el primer ajuste donde se otorga el primer espacio libre que reuna la cantidad requerida, la cual es un estrategia que permite tomar con rapid& la decisión.

'f

INTERRUPCIONES.

Las interrupciones son una forma de dar atención inmediata del procesador. El núcleo guarda el contexto del proceso que I/

21

Page 30: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

tiene asignada la UCP (Unidad Central de Procesamiento) e inicia

la ejecución de la rutina de manejo de interrupción apropiada. Al término de la rutina, el núcleo hace otro cambio para restaurar el proceso interrumpido Ó a l ~ n otro. Cuando una interrupción está siendo manejada, no puede ser suspendida excepto por una con mayor nivel de prioridad. En la mayoría de los sistemas eg necesario que las interrupciones sean temporalmente deshabilitadas mientras se ejecutan secciones críticas de código, en un sistema uniprocesador, el núcleo puede deshabilitar las interrupciones para sus propias funciones, de ésta forma sus actividades se hacen indivisibles.

ERRORES EXCEPCIONES. Planificación y10 manejo de errores son requeridos, por lo

que debe integrai-se al desarrollo. La detección de errores puede realizarse ya sea en el momento de compilación Ó de ejecución, en cualquier caso, se agrega una cierta cantidad de redundancia. Cuando se detecta un error se observa la forma de corregirlo Ó

de limitar el impacto que puede producir sin afectar la ejecución del sistema. Por otra parte, el sistema completo no puede ser parado por la ocurrencia de una excepción.

11.4 HERRAMIENTAS DE SINCRONIZACION I! COMUNICACION. Para que los procesos cooperen en tareas comunes, el núcleo

del sistema operativo deberá proporcionar herramientas para que éstos se sincronizen e intercambien datos.

Un semáforo es una variable protegida cuyo valor puede ser accedido y alterado tan solo por las primitivas correspondientes, incluye una cola de procesos esperando. Es utilizado principalmente para sincronizar, producir exclusión mutua y distribuír el uso de algún recurso.

Un buzón es un dispositivo virtual utilizado para la comunicación entre los procesos. LOS mensajes se inserta en un extremo Y se leen en el otro, según la norma primero en entrar-primero en salir. Un proceso que le6 un buzón puede obtener el mensaje más antíguo que contiene Ó una indicación de que el buzón está vacío. L o s procesos pueden pedir que se les

It

2 2

Page 31: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

notifique cuándo se coloca un mensaje en el buzón.

11.5 DEFINICION DE OBJETIVOS. En los objetivos de diseño se contempló la realización del

núcleo de un sistema operativo para sistemas basados en la familia de microprocesadores 8051, apropiado para apoyar el desarrollo de apficaciones en la tarjeta de comunicaciones MAC-851. La arquitectura está orientada al soporte de aplicaciones en tiempo real, proporcionando multiprogramación.

Con el sistema operativo es posible lograr mayor rendimiento, confiabilidad, disponibilidad y compatibilidad en los prohamas de aplicación, debido a que se pueden realizar tareas combinando código ya existente, donde el núcleo realiza convenientemente. aquellas actividades ejecutadas más frecuentemente Ó consideradas importantes. Asimismo, proporciona un medio consistente donde es posible desarrollar en forma modular diversas aplicaciones.

El núcleo está escrito en el lenguaje de programación PL/M-51 para facilitar modularidad, y algunas rutinas en ensamblador-51 buscando la optimización en los tiempos de ejecución. El código fuente tiene documentación en línea para facilitar el mantenimiento del sistema operativo.

11.6 ESPECIFICACION DE FUNCIONES. o Sistema operativo orientado a tiempo real. o MultiprogramaciÓn de procesos básicamente estáticos. o Manejo de procesos con una política de asignación en rueda

o Manejo de tiempo en un rango de 1 a 65535 milisegundos, con una

o Herramientas de sincronización y comunicación:

(round-robin).

resolución aproximada de 1 milisegundo.

- Semáforos binarios, - Semáforos contadores, - Buzones, comunicación por copia ó por referencia.

o Manejo de memoria dinámica, configurable por el usuario. o Manejo de interrupciones con dos niveles de prioridad. o Detección de errores por el núcleo y manejo de excepciones por

23

Page 32: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

el sistema operativo ó por el usuario. o Interfaz para desacoplar el sistema operativo del código de los procesos, para los lenguajes de programación PL/M-51 y ASM-51.

o Librería de rutinas de entrada/salida. I1 o Verificación, por parte del núcleo, sobre la organización de la memoria. La tarjeta MAC-851 no tiene algún dispositivo para protegerla.

o configuración:

I

- 1 procesador, - 8 niveles de prioridad, - 16 procesos, - 16 semáforos binarios, - 16 semáforos 'contadores, - 16 buzones, - 47 kbytes de memoria para los procesos, - 27 kbytes de memoria de datos, mínimo para las variables

de los procesos, y máximo para los buzones y memoria I(

dinámica. - 90 bytes de memoria interna que pueden ocupar cada proceso, de los cuales 11 son direccionables por bit y por byte.

I!

24

Page 33: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

111. DISEÑO DEL SISTEMA OPERATIVO.

SOPCO-51 (Sistema Operativo para Procesos Concurrentes) es

un sistema operativo para multiprogramación, orientado a sistemas de tiempo real basados en la familia de microcontroladores 8051 de INTEL. Originalmente está configurado para funcionar en la tarjeta de comunicaciones MAC-851, la cual cuenta con el microcontrolador 80C31.

El presente capítulo describe la filosofía de diseño, así como la implementación de cada parte que comprende el sistema operativo como son los manejadores, mencionándose para cada objeto ‘las estructuras que utiliza. Se explican las consideraciones de inicialización, el mecanismo de interfaz entre el sistema operativo y la aplicación, y algunos otros puntos generales. Para cada rutina se mencionan Únicamente funciones principales de diseño.

Es de considerar que el sistema operativo se puede ejecutar junto con el ambiente de soporte MSB-51, que fué un desarrollo aparte, pero que existe alguna interacción entre ambos, la cual se explica en el manejador de errores y excepciones.

111.1 P R I N C I P I O S DE D I S m O . El núcleo es el centro de cada sistema de aplicación

realizando funciones tales como: o Inicializar el sistema (dispositivos, estructuras de datos), o Soportar las políticas de planificación, o Controlar el acceso a los recursos, o Proveer la sincronización y comunicación entre procesos, . o Habilitar al sistema a responder a eventos externos, o Detectar situaciones de error ó excepción.

SOPCO-51 realiza manejo de procesos básicamente estáticos, es decir, en la inicialización del sistema los procesos ya se encuentran definidos y no cambian durante la vida de éste.

III.1.1 ARO UITECTURA GENERAL. En la figura 3.1 se presenta la arquitectura general del

sistema operativo.

25

Page 34: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

En el nivel más bajo se encuentran los distintos ,~ dispositivos que controla el núcleo del sistema operativo, en el

(Proceso] Proceso n a

1 Sistema digital 1 I I

Fit. 3.1 uMuI"EcNR* CEüERAL DEL SiSTou OPERITIVO.

ll siguiente nivel están las diferentes funciones del núcleo en base a las cuales se ofrece un grupo de capacidades denominadas primitivas, que se encuentran representadas en el siguiente nivel. En la cima se encuentran los procesos del usuario quienes interaccionan con el núcleo por medio de una interfaz.

El sistema operativo soporta una arquitectura de un procesador, en el cual los procesos se ejecutan concurrentemente. Se implemento en los lenguajes de programación PL/M-51 (Lenguaje de Programación para Microprocesadores) y Ensamblador-51, propios de la familia de microcontroladores 8051. Algunas partes consideradas críticas, como son el cambio de contexto, el manejo de interrupciones y el copiado de mensajes, se codificaron en lenguaje ensamblador para optimizar tiempos de ejecución. 1

2 6

Page 35: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

ESTRUCTURA GENERAL pE LAS PRIMITIVAS. Las primitivas presentan la siguiente estructura general:

PRINITIVA; VNIDACION' DE PAWQXROS; SI NO HAY ERROR M PARA>IRROS ENTONCES

WECVIA W C I O N DE U PRINITIVA;

S E Lwu U. I<uIEJADüR DE ERRORES Y EXCEPCIOWES;

SI S E *LISTO O BLopuEo P R o m o O m l N C E S

SI ERROR MTollCES

SINO

S E L U H A A i I W ( U A W R DEL P R o m A W R : FIN;

En cada primitiva, y en sus respectivos procedimientos, se llevan a cabo verificaciones para detectar posibles errores Ó

excepciones que en su ocasión se describen. Considerando que el lenguaje de programación no es

reentrante, el manejador del procesador es llamado al Último cuando los parámktros de las primitivas ya no se usan.

Para que las primitivas sean indivisibles, las interrupciones se encuentran deshabilitadas mientras se ejecuta alguna de ellas. Lo anterior se lleva a cabo en la interfaz al núcleo (ver interfaz).

111.1.3 PRIORIDADES. SOPCO-51 soporta varios niveles de prioridad, su número se

puede configurar en el archivo de declaracion de constantes (ver configuración del sistema). Se han considerado ocho niveles siendo O la máxima prioridad y 7 la menor. Las prioridades son estáticas y asignadas por el usuario.

111.1.4 DISTRIBUCION u MEMORIA. Las áreas de memoria que considera el microcontrolador en la

tarjeta y la organización que observa el sistema operativo se muestran en las figuras 3.2 y 3.3 .

L o s datos externos de los procesos se pueden localizar en lugares adecuados arriba y10 abajo de la dirección donde se divide la memoria, pero cuando en la parte superior se encuentre una memoria EPROM (solo se pueda colocar código ó constantes), la totalidad de las variables externas de los procesos se ubicarán por abajo de la dirección indicada. El área de manejo de memoria

27

Page 36: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

I dinámica se localiza en la parte inferior y se considera por encima a la de datos externos de los procesos, de tal forma que en cuanto más grande sea el espacio de datos el área de buzones y memoria dinámica se reduce.

,,

1)

1

Memoria de cÓdigo/datos .externos (ROM/RAM) OFFFFH

Código

de los ,t

procesos (3 1.6 kbytes)

I Ctes. ap1ic.-núcleo1 BOOOH

Memoria de código (EPROM) 7FFFH

Sistema Operativo SOPCO-51

Memoria de datos externos (RAM) Ma eo de dis . lkb e

Area de memoria dinámica

y buzones

'1

'IFF'FH

Variables externas de los procesos

Variables del S.O. 1 Variables de MSB-51 I OOOOH

FIG. 3.2 ORCANIUCION DE U WIORIA EXTERNA.

Al inicio de la memoria cÓdigo/datos se considera un área

interactúan con el usuario, como son el descriptor inicial y la constante con la que se configura el tamaño de los bloques para el manejo de memoria (ver manejo de memoria). De ésta forma pueden ser cargadas dinámicamente cuando se encuentre una memoria RAM. También se coloca una instrucción de salto en la dirección BOOBH al manejador de la interrupción 1 (ver manejo de

para localizar las constantes del sistema operativo gue '0

28

Page 37: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

interrupciones). En el espacio de memoria restante se localiza el código de los procesos.

Cada proceso puede tener sus variables y stack en memoria interna mientras se esté ejecutando (fig. 3.3), cuando se asigna la UCP (Unidad Central de Procesamiento) a otro, éstas variables y stack son guardadas en memoria externa y se colocan las del proceso que se ejecutará. De ésta forma, cada uno puede utilizar toda el área de memoria interna disponible. Es de considerarse que el sistema operativo utiliza el stack del proceso poseedor.

Area

Memoria interna 8OC31 (W)

Area de datos internos 9 stack para cada proceso

(uno a la vez).

:, 7FH

Banco cero de registros OOH

:/

FIG. 3.3 ORCANIZACION DE U I(M0RIA INTERNA.

Una parte del área de memoria interna direccionable por bit es utilizada por el sistema operativo para los semáforos binarios, variables booleanas, paso de parámetros binarios y representación del estado de las interrupciones, el resto puede ser empleado por los procesos.

Debido a las limitaciones de espacio de memoria se utiliza un solo banco de registros, considerándose que los procesos utiiizen el número cero ai igual que el sistema operativo, pues es éste el que se salva en el cambio de contexto.

11

l

2 9

Page 38: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

Se definió una zona de paso de parámetros no binarios para

las primitivas y procedimientos del sistema operativo, la cual subdivide en niveles. Esto se considera una limitante para profundidad de los niveles de llamadas de procedimientos y número de parámetros. Se establecen los siguientes niveles:

1) Parámetros de las primitivas, 2) Parámetros de' los procedimientos del núcleo.

Una situación a considerar es el hecho de que el lenguaje programación no es reentrante, por lo que se tuvo cuidado de

se la el

de no

alterar parámetros cuando una primitiva llama a otra (mismo nivel de paso de variables). Los procedimientos que utilizan diferente nivel de paso de parámetros se colocaron en archivos diferentes.

La tarjeta de comunicaciones no cuenta con algún dispositivo para protección .de memoria, por lo que es difícil verificar si algún proceso invade áreas que no le corresponden. El sistema operativo realiza algunas verificaciones basándose en los datos proporcionados por el usuario en el descriptor inicial, éstas revisiones se explican en la parte de inicialización del sistema y en el manejo de procesos.

311.1.5 MANEJO DE PISPOSITIVOS. Los dispositivos de la tarjeta se manejan por medio de

rutinas compiladas y colocadas en librerías. De ésta forma el sistema operativo puede configurarse facilmente para alguna Otra arquitectura que cuente con un microcontrolador de la familia 8051. La librería creada para la tarjeta MAC-851 se denomina Rutinas.lib, en la cual se incluye básicamente la programación de los dispositivos de comunicación.

111.1.6 ESTRUCTURAS PE DATOS. El núcleo maneja un conjunto de estructuras de datos y

variables, todas las cuales se declaran en memoria de datos externa, a excepción de algunas variables para inicializar el sistema operativo y el manejador de memoria dinámica. A continuación se describen los descriptores de los procesos y, en cada manejador se describe cada una de las estructuras que utiliza en particular.

30

Page 39: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

DECCRIPTORfNICIALIESTATICO). Contiene información para la creación y ejecución de 10s

procesos. Este descriptor se encuentra en una dirección fija de memoria código/datos para que pueda ser grabado en una EPROM ó cargado dinámicamente. Se declara en dos archivos: Declare.p51 y en DI.p51. En el primero sirve de referencia al sistema operativo, y en ai segundo el usuario deposita la información necesaria para declarar los procesos, compilarlo y iigario/iocaiizario junto con la aplicación.

El descriptor contiene la siguiente información: - num: número asociado al proceso. - prior:. prioridad del proceso (estática). - d-icod: dirección inicial del código del proceso. - d-fcod: dirección final del código del proceso. - d-idatext: dirkción donde inician las variables externas. - d-fdatext: dirección donde terminan las variables externas. - d-datint: dirección de inicio de las variables internas. - d-stack: dirección donde inicia el stack del proceso. - d-mex: dirección del manejador de excepciones del proceso. - archivo: contiene el nombre del proceso (8 caracteres). PESCRIPTOR DI NAMICO *

Esta estructura almacena la información dinámica para cada proceso, la cual se actualiza durante la vida del mismo. Se encuentra en memoria externa de datos y contiene: - num: número asociado al proceso (mismo que DI). - prior: prioridad del proceso (misma que DI). - estado: estado en el que se encuentra el proceso. - RSB: es una variable general que indica según el estado del

proceso: - El tiempo por el cual se retrasó el proceso, - La cantidad por la que está bloqueado en un semáforo, - La longitud del mensaje que espera enviar Ó recibir, por el

- El tamaño de memoria que espera se le asigne, - La interrupción por el que está bloqueado.

que está bloqueado,

- ptrmje: guarda según el caso, la dirección del mensaje que el

31

Page 40: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

proceso espera enviar, la dirección donde se depositará el mensaje si espera recibir, Ó la dirección de la variable donde se colocará la dirección inicial del área de memoria I’

que espera se le asigne. - d-mex: dirección del manejador de excepciones asignado al

proceso. - R31: valores de fos registros del microcontrolador particulares

al proceso.

II

111.2 MANEJO DE COLAS DE PROCESOS. I

Este sistema cuenta con un solo procesador, por lo que únicamente un proceso puede estar ejecutándose a la vez, pero puede haber varios procesos listos y varios más bloqueados. En la planificación de bajo nivel se establecieron las siguientes colas de procesos: 1) listos. 2) bloqueados por espera en un semáforo. 3) bloqueados por enviar un mensaje. 4) bloqueados por recibir un mensaje. 5) bloqueados por memoria. 6) retrasados.

,,

* Las primeras cinco colas tienen una estructura de niveles múltiples que se mantienen en orden prioritario (figura 3 . 4 ) , de

P r i

r i d a d

O

FIG. 3.1 mus DE PROCEMS.

manera que se otorga el recurso al primer proceso de la cola de mayor primacía, el cual es el proceso de mayor precedencia.

I/

32

Page 41: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

Los procesos tienen una prioridad fija en base a la cual se insertan al final de la cola respectiva.

Se implementan en dos partes: a) Descriptores donde se mantienen los apuntadores al primero y Último proceso de cada cola de prioridad. Se cuenta con un descriptor para cada estado de proceso como son:

1) DCA para las'colas de listos. 2) DCSB para las colas de semáforos binarios. 3) DCSC para las colas de semáforos contadores. 4) DCB para las colas de buzones. 5) DCXEJ4 para las colas de memoria dinámica. La 'cola de retrasados es única y se mantiene por el tiempo de retraso faltante (tiempos relativos), teniéndose un solo apuntador ACR (Apuntador a la Cola de Retrasados).

b) Colas de procesos que es un arreglo lineal con dimensión del número máximo de procesos en el cual se forman todas las colas de proceso, señaladas por los apuntadores de los descriptores correspondientes:

El índice representa el niimero del proceso y el contenido muestra el siguiente proceso (liga sencilla):

CP(n<no-jroc) BYTE FTJBLIC AUXILIARY;

Descriptor

P r i

r i Secuencia: d 2. 5, 6, 3 a d Ultimo = 3

O

Primero = 2

t

FIG. 3.5 uE)(pW DE DOS COLAS DE PROCESOS.

Un apuntador a vacío tiene un valor de OFFH. En cada manejador se explica con detalle la operación de las

colas en forma individual. En general se tienen las siguientes rutinas para el manejo de las colas de procesos listos,

. -- ~ ._

I,

,I

II

'I

!I

33

Page 42: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

semáforos, buzones y memoria: - inserta: incluye un proceso al final de una cola ‘de acuerdo a su prioridad. - Saca: retira un proceso de una cola. Por las características del núcleo del sistema operativo, siempre se saca al proceso que está al principio de la cola, pero ésta rutina puede sacar un proceso en waiquier posición que se encuentre, necesario cuando se eliminan objetos (implementaciones futuras). si la cola está vacía ó el proceso no se encuentra, asigna un código de termihación.

- Alista: alista un proceso bloqueado establecido en la variable pÚblioa procbloq. Lo saca de la cola de bloqueados, lo inserta en la cola de listos, y coloca en cero sus variables RSB y ptr-mje del descriptor dinámico.

- Bloquea: bloqiiea el proceso poseedor. Lo saca de la cola de listos y lo inserta en la cola del objeto correspondiente. Indica, mediante la variable global rotar, que la cola de listos no se rote. - Hayorqrioridad: es una función que determina la cola no vacía

de mayor prioridad. En el manejo de tiempo se explica el procedimiento Inserta-ret. La jerarquía de estos procedimientos se muestra en la figura 3.6.

I

..

E2.l inserta Saca

FIG. 3.6 PROCEDIHIENTOS DEL )OiWUAWR DE COLAS DE PROCESOS.

1 111.3 MANEJO DEL PROCESADOR. Este manejador controla el acceso de los procesos al

procesador de acuerdo a una política’ de asignación por prioridades con una planificación apropiativa, es decir, concede el procesador por un tiempo finito determinado.

3 4 . I!

Page 43: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

Se cuenta con una cola de procesos listos por cada prioridad, el procesador se asigna al primer proceso de la cola no vacía de mayor prioridad (proceso de mayor -precedencia). Para el caso de procesos de igual primacía se tiene una planificación

de asignación en rueda, es decir, se lleva a cabo una rotación de procesos, por io que las Colas son circulares. Se declara el siguiente descriptor:

1 üCA SlRVCrVREiprInero(raxpr1or) BYTE,

ultIio(Mxgr1or) BYTE) PUBLIC AVYILIU(Y;

Existe una variable llamada Poseedor la cual indica el proceso que tiene asignado la UCP, y una variable booleana rotar para , señalar cuando no se deben rotar los procesos debido a que se extrajo el primero de ellos (se bloqueó Ó retrasó).

Se determinó utilizar uno de los dos temporizadores del microcontrolador ‘para implementar el cuanto de tiempo por el que se otorga la UCP y el tiempo de retraso: el temporizador O y su interrupción. Este se programa en modo 1 (16 bits) y su interrupción se habilita con prioridad baja. La cuenta se calcula con la ecuación:

Cuanta = O m - tlaipo-a-ailgnsr + 1

Como se observa la ecuación considera.un módulo de cuenta máxima, y se suma una unidad porque el contador coloca su bandera de interrupción cuando llega a la cuenta de cero (no en OFFFFH).

Dado la utilidad de la tarjeta, en la cual se manejan mensajes, y a resultados de pruebas, se consideró un período

para que la mayoría de los procesos se ejecuten hasta que generen una petición de entradalsalida, trabajando así al máximo de velocidad. Como se verá posteriormente (manejo de tiempo), si a un proceso le resta un tiempo de retraso menor al período constante (50 mseg.) el temporizador se carga con el lapso de retraso faltante.

Cuando se asigna la UCP a un proceso diferente, las variables en memoria interna y stack del proceso que se le apropia el procesador son guardas en memoria externa, y las del proceso a ejecutarse se restauran. Igualmente, el apuntador al stack se guarda y restaura al mismo instante dado que el sistema

I!

constante de 50 milisegundos (se puede configurar), suficiente I

35

Page 44: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

operativo utiliza el stack de cada proceso. Por lo tanto, el tiempo de cambio de contexto depende de la cantidad de datos en memoria interna que se guardan en la externa. Las áreas en memoria externa donde se guardan los datos internos y stack de los procesos se declara como:

DSgrocsinmlaxgroc) SiRiCnRE(Area i s i p a c l o ~ M i _ a x t ) B Y n I . PUBLIC AUXILIARY;

Lo anterior se observa en la figura 3.7 .

Memoria interna

datos internos del proceso

poseedor

Area del Sistema operativc

Arreglo: procs-DS Memoria externa RAM

proceso 1

proceso 2

-1

o o o o l I

Contexto proceso n n

FIG. 3 3 ILU(u0 DE U IIWIORIA INTERNA.

-De la misma forma, el área de paso de parámetros byte y bit para cada proceso son guardadas y restauradas.

El manejador del procesador opera en cualquiera de los siguientes eventos:

1) Se activa un proceso de mayor prioridad (primitiva Activa). 2) Termina el cuanto de tiempo asignado al proceso. 3) Se bloquea un proceso al solicitar un recurso que por el

momento no se le puede asignar (primitivas bEspera, cEspera, Envia, Recibe y Obtenmemoria).

4) Se regresa un recurso al sistema y se desbloquea algún proceso de mayor prioridad que lo espera (primitivas Signal, Envia, Recibe y Liberamemoria).

36

Page 45: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

1 5) El proceso pide un retraso (primitiva Retrasa). 6) Se termina el tiempo de retraso pedido por uno Ó varios ,I

procesos. 7) El proceso se bloquea para esperar la ocurrencia de una

interrupción (primitiva Esperaint). 8) Ocurre una interrupción y un proceso de mayor prioridad se

desbloquea (mhnejador de interrupciones). 9) Termina un proceso (primitiva Elimina).

II

ES de notarse que si se alistan procesos, el manejador del procesador se ejecuta sólo si uno de ellos es de mayor prioridad que el proceso poseedor.

Algimos registros del microcontrolador se consideran generales al sistema y otros particulares para cada proceso. En la interfaz se guardan los valores de los registros

ii correspondientes al proceso poseedor, y al terminar el manejador del procesador, se restauran los del proceso al que se asigna la 14

UCP. Los registros generales al sistema se guardan y cargan en el manejador de errores y excepciones.

Los valores de los registros se guardan en el descriptor dinámico de cada proceso. Los registros son: SP, A, DPTR, PC, PCW, B, y el banco de registros O. El valor del SP se guarda en dos instantes: junto con todos los registros (valor de entrada al núcleo) y al guardar el stack del proceso (valor de cambio de contexto). Debido a que en lenguaje ensamblador no se manejan estructuras, y para agilizar el guardar y resturar los registros se declara una variable en memoria interna llamada Dir-reg que contiene la dirección del descriptor dinámico a partir de donde se guardan los registros del proceso poseedor de la UCP.

La asignación del procesador lo componen las siguientes rutinas : - Guardareg: guarda en memoria externa el valor de los registros del microcontrolador para un proceso. Se guardan en el arreglo R31 del descriptor dinámico. - Cargareg: carga los registros del microcontrolador con los valores correspondientes a un proceso, guardados en el arreglo

- Guarda-DS: guarda en memoria externa un área de memoria

I1

R31 del descriptor dinámico (excepto SP y PC). t

L

37

Page 46: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

interna. Se utiliza para guardar los datos y stack de un proceso. Asimismo, guarda el valor corriente del registro SP en el elemento correspondiente al arreglo R31 del descriptor dinámico.

Carga-DS: coloca un área de memoria externa en memoria interna. Es utilizada para cargar los datos y stack de un proceso guardados en la ,estructura Dsqrocs. También carga el registro SP con el valor almacenado en el arreglo R31 del proceso correspondiente. AsignadorCPU: determina a que proceso se le asigna' el

procesador, y se la otorga. Rota los procesos si es el caso y, si se.cambia de proceso, se guarda en memoria externa los datos internos y stack del proceso retirado. Carga-timer-O: carga la cuenta del temporizador O con el tiempo con que se cede el procesador. ManejoCPU: este procedimiento llama a las rutinas que intervienen en la asignación del procesador y reinicializa los valores necesarios. AsignaCPU: es llamado por las primitivas para asignar el procesador, debido a que se bloqueó el proceso Ó se alistó uno (o varios) con mayor prioridad. Manej-interrupcion-1: es una rutina que atiende la interrupción 1 del cuanto de tiempo y10 tiempo de retraso. Coloca la variable atencionintl como indicación de la ocurrencia de la interrupción para el manejador de tiempo. A su término se continúa la ejecución del proceso de mayor prioridad.

En la figura 3.8 se observa un diagrama de la relación entre los procedimientos para asignar el procesador.

Cuando se carga el stack y el valor del registro SP de un proceso, se termina de completar el cambio de contexto. Es de considerarse que como el sistema operativo utiliza el stack del proceso poseedor, se dá control a éste último después de haber pasado por todos los procedimientos del núcleo que se ejecutaron cuando se bloqueó Ó retrasó, es decir, sale del núcleo por el mismo camino por el que se entró, siendo los procedimientos de salida los mismos que de entrada al núcleo: Uanej-interrupcion-1, procedimiento de interfaz correspondiente (ver interfaz), Ó

I

38

Page 47: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

I/

procedimiento de manejo de interrupción (ver manejo de interrupciones), el Último no se observa en la figura. La instrucción final de cada uno de los procedimientos de salida es RETI, debido a la posible ocurrencia de una interrupción por la cual se asigna el procesador.

temporizador O

Vector. de [ Guardareg 1 I Primitiva interruwión

I I Manejador- interruption- í AsignaCPU

T \1

T T 4

Guarda-reg Carga-reg Manejo-CPU Cargkreg 4

Proc-retraso e, Asignador-CPU + tiempo e, Cargctimer-O

I I

TIC. 3.8 ASICNACION DEL PROCaAWR.

El procedimiento Primera-ejecucion se utiliza cuando un proceso se ejecuta por primera vez, de forma que se toma el procesador en forma "natural", es decir se reinicializan variables globales y se llaman los procedimientos necesarios (Carga-timer-O), para que se ejecute un proceso. Las interrupciones se encuentran deshabilitadas cuando se ejecuta el núcleo del sistema operativo.

39

Page 48: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

111.4 MANEJO DE PROCESOS. SOPCO-51 soporta un máximo de 16 procesos considerando el

espacio de código disponible. Se estimaron 16 procesos máximo (ver configuración del sistema), cada uno tiene asociado un descriptor inicial y un descriptor dinámico. La prioridad que se le asigna a los procesos es estática, y está dentro de los ocho niveles que soporta el sistema operativo. El proceso cero es el primero que el núcleo ejecuta, así como también activa el último proceso declarado en el descriptor inicial, el cual lo considera ,,

como el proceso de menor prioridad que siempre se encuentra en estado de listo (no se puede bloquear ni retrasar).

FCTADOS DE LOS PROCESOS, Cada proceso puede encontrarse en cualquiera de los

estados que se observan en la figura 3.9 .

( Eliminado )

FIG. 3.9 ESTAWS DE LOS PROCEYK.

Ejecutar (Ó corriendo): el proceso tiene control del procesador. Listo: el proceso se encuentra listo para ejecutarse esperando se

le asigne la UCP.

4 0 I:

Page 49: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

Bloqueado: espera por algún recurso como puede ser unidades de un semáforo, mensaje de un buzon, memoria, Ó la ocurrencia de una interrupción.

Retrasado: espera por un tiempo determinado (recurso tiempo). Eliminado: el proceso no ha sido activado Ó terminó su tarea, sin

que espere ya por el procesador. Un proceso cambia de estado por alguna de las siguientes

razones (ver figura anterior) : 1) El proceso es creado.

3) Se le apropia la UCP porque se bloqueó, se alista un proceso de mayor prioridad Ó por la rotación de procesos de la misma prioridad.

2) Se le asigna el procesador (se ejecuta). I

4) El proceso se retrasa. 5) Se termina 01 tiempo de retraso del proceso y se alista. 6) el proceso se bloquea por un recurso Ó interrupción. 7) Se satisface el recurso que espera el proceso y se alista. 8) El proceso se elimina a sí mismo.

Se tienen las siguientes primitivas para el manejo de los procesos: - Activa: ésta primitiva activa un proceso para que pueda ejecutarse en el sistema. Básicamente crea un contexto inicial del proceso en el área donde se guarda: DSqrocs.Area(proceso), y coloca valores en su descriptor dinámico en base al inicial: a) copia el número y prioridad del proceso, b) ubica el proceso en el estado de listo, c) determina la dirección del manejador de excepciones que

utilizará y la coloca en la variable adecuada en el descriptor dinámico,

d) inicializa en cero el elemento del arreglo R31

correspondiente al registro PSY, de forma que el proceso utilize el banco de registros cero,

e) en el elemento correspondiente del arreglo R31 coloca el valor con que principia el apuntador al stack, el cual es el valor declarado en el descriptor inicial más tres byte para que tome dos direcciones que se explica en seguida,

f) ubica la dirección de inicio del proceso y la del

o

4 1

Page 50: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

procedimiento Primera-ejecución en el área donde se guarda el stack del proceso cada vez que no se ejecuta, para lo cual calcula el índice al arreglo Area de la estructura DSqrocs como: índice = DI(numgroc).d-stack - DI(numqroc).d-datint

g) inserta el proceso en la cola de listos correspondiente, h) si el proceso que se activa no es el cero Ó el de menor

prioridad, Ó es de mayor prioridad se llama al manejador del procesador.

Asigna un código de terminación en cualquiera de los siguientes

1) El- número de proceso es mayor al niimero de procesos

2) Si el estado del proceso no es eliminado 3) Si el área'de datos externos del proceso que se intenta

activar traslapa el área de datos de otro proceso activo. - Elimina: saca al proceso poseedor de la cola de 'listos' y le coloca el estado de elirninado de forma que ya no se ejecuta, el contexto del proceso queda guardado. Se termina llamando al manejador del procesador. Determina un error si el proceso que se intenta eliminar es el de menor prioridad (Último proceso declarado).

se cuenta con la primitiva Retrasa que se describe en el manejador de tiempo. El esquema 3.10 muestra la relación de los procedimientos.

casos :

declarados.

M a n e j o de procesos

I & &

Act iva Elimina I direccih , I

\I .L [Inserta) I,bigna_CPUj 1 Saca] I A s i g n g C P U l

FIG. 3.10 PROCEDIMIEWmS PARI EL MANEJO DE PROCESOS.

Inicialmente los procesos tienen el estado de eliminados. Cuando alguno se activa, se verifica si su área de datos externos

4 2

Page 51: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

no traslapa con el área de otro proceso no eliminado, ésto es, cuando un proceso se elimina su área de datos externos puede ser ocupada por otro proceso que se activa, de ésta forma dos 6 más procesos pueden ocupar la misma área de datos externos.

111.5 MANEJO DE TIEMPO. El sistema operativo tiene implementado un manejador de

tiempo, que consiste básicamente en que un proceso puede retrasarse por un lapso determinado.

El proceso, al solicitar un retraso, pasa al estado' de retrasado ingresando a la cola de procesos respectiva que se forma en .el arreglo CP (colas de procesos). Esta cola mantiene a los procesos ordenados de acuerdo al tiempo de retraso faltante, de forma que se alistan conforme al orden que guarda. La variable ACR (apuntador a 'la cola de retrasados) señala al primer proceso de la cola mencionada y a la siguiente estructura:

I Tleiiposrsl(nin_iaxgroc) WOW PVBLXC AUYILIAñY; I

La figura 3.11 muestra como se forma la cola de procesos retrasados y el orden de los tiempos de retraso.

0 1 . 2 3 4 5 6 T p r o c l = T 1 T p r o c 5 = T1+T2 I

T p r o c 6 = Tl+T2+T3+T4

Número de

proceso.

Tproc3 =. T l + T 2 + T 3 . .

FIG. 3.11 COLA DE PROCESOS REíR*SAOOS.

donde el índice a los arreglos corresponde al número del proceso, y el contenido representa al próximo. El final de la cola se

4 3

Page 52: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

indica cuando el apuntador toma el valor de OFF". Cuando un proceso se inserta, se calcula su posición y el

tiempo relativo de retraso con respecto a los tiempos restantes de otros procesos, éste se inserta en el arreglo Tiempos-rei. En dado caso que el tiempo relativo de retraso de un proceso coincida con el tiempo faltante de otro proceso ya en retraso, el primero se inserta.en la siguiente posición con un valor de cero, de forma que se alisten los dos procesos a la vez. Lo mismo ocurre si más de dos procesos coinciden en sus tiempos relativos de retraso.

Para los retrasos se utiliza el temporizador O y su interrupción asociada (1), el mismo que para la implementacióni del cuanto de tiempo que se asigna la UCP a un proceso. La supervisión y ajuste de los retardos se lleva a cabo cada vez que se asigna el procesador. El temporizador se programa con el tiempo más corto entre el cuanto de tiempo y el siguiente tiempo relativo de retraso, así cuando ocurre su interrupción se actualiza el tiempo de retraso, se alistan los procesos a los que se les terminó su tiempo de retraso y se asigna la UCP al de mayor prioridad. La cuenta cargada en el contador se guarda en una variable llamada LAPSO.

- Retrasa: si el tiempo pedido es mayor al mínimo, ubica al proceso en el estado de retrasado, el tiempo pedido se guarda en la variable RSB del proceso, coloca la bandera de retraso en verdadero y termina llamando al manejador del procesador para ejecutar otro proceso durante la espera, los procesos no son rotados. Si el tiempo pedido es menor Ó igual al mínimo, los procesos son rotados y Únicamente se llama al manejador del procesador. No puede retrasarse el proceso de menor prioridad.

Para retrasarse un proceso llama a la primitiva:

Asimismo se tienen los siguientes procedimientos: Proc-retraso: actualiza el tiempo de retraso y alista los procesos a los que se les terminó el tiempo de retraso. Inserta-ret: inserta un proceso en la cola de retrasados calculando su posición y su tiempo relativo de retraso. Agrega-tiempo: agrega el tiempo de cambio de contexto, que es variable, al tiempo de retraso.

. 4 4

Page 53: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

La figura siguiente muestra los procedimientos, y su relación, para el manejo de tiempo.

A*ALL seca ::;B, insertaret AS~~IWLCPU ~gregptiempo

FIG. 3.12 MANU0 DE LOS T I M W S DE -50.

AJUSTE DE TIEMPO. En el contiol del manejo de tiempo se lleva a cabo ajustes

de intervalo considerando si se terminó o no el lapso programado en el temporizador O (la ocurrencia de la interrupción 1) y el tiempo que tarda un cambio de contexto. Los procedimientos Proc-retraso y Agrega-tiempo realizan lo anterior, coneiderándose los siguientes casos (fig. 3.13) :

1) Se atiende la interrupción del temporizador: lo cual representa que la cuenta cargada en el contador terminó. Si en el momento que se coloca la bandera de interrupción se está ejecutando una primitiva, la interrupción se atiende cuando se termina (si no se llama al manejador del procesador), de la misma forma si se está atendiendo una interrupción disponible al usuario. El manejador de la interrupción 1 se ejecuta y coloca una variable boolena llamada atencion-int-1 para que al ajustar se identifique éste caso ya que la bandera de interrupción es limpiada por el microcontrolador. Es de considerarse que el tiempo desde que inicia cualquier primitiva hasta que termina Ó

se empieza a ejecutar el siguiente proceso es mucho menor que la cuenta completa del temporizador. A s í , en aste caso al tiempo de retraso se le resta:

/I

I

- el período abarcado por el temporizador (variable Lapso), - la cuenta actual del temporizador, que representa el tiempo que se tardó en detenerlo desde’que ocurrió su interrupción,

4 5

Page 54: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

2) La primitiva llama al manejador del procesador: al momento de detener el contador y ajustar tiempo de retraso se distinguen dos casos:

a) La cuenta había terminado: no se atendió la interrupción, por lo que se limpia la bandera correspondiente con una instrucción y se considera el caso (1).

b) La cuenta no ha terminado: para lo cual al tiempo de retraso se le resta: - el período que transcurrió del temporizador,

11 I La bandera de interrupción no se colocó.

mayor prioridad

interrupcion, 1

Vector de int.

(2) TFO=1 O \1 Asigna-CPUl

Manejo- CPU v TFD - bandera de intermpd6n

del temporiaador O

FIG. 3.13 COWTROL DEL IIEIW) DE RETRIM.

Es de notarse que el tiempo de retraso es ajustado después de que transcurrió, no antes.

Una vez que se ha leido la cuenta del temporizador en el procedimiento Proc-retraso, se le coloca en cuenta de cero y se hace funcionar para medir el tiempo que tarda el cambio de contexto (variable), antes de cargar el temporizador can el tiempo por el que se asigna el procesador, el procedimiento Agrega-tiempo leé su cuenta (duración del cambia de contexto), y ajusta el tiempo de retraso.

Cuando se ejecuta la primitiva Retrasa, antes de insertar un

4 6

Page 55: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

- . -__ - P

proceso en la cola de retrasados se ajusta el tiempo de retraso y no durante la asignación del procesador. El temporizador se detiene cuando se carga su cuenta, de forma que el periodo que se encuentra inactivo sea mínimo.

Períodos como el que se entrega la UCP a un proceso se miden en milisegundos, y otros como el tiempo que tarda la asignación del procesador en. microsegundos. El ajuste de tiempo se realiza

microsegundos, por lo que se tiene una variable sobretiempo donde se acumulan microsegundos (décimas) que se compensan cuando sobrepasan un milisegundo. Esto es importante considerando que el número de veces que se asigna el procesador en un segundo es I

elevado. El ajuste de tiempo se lleva a cabo solo si existen procesos en retraso.

Se tiene un tiempo mínimo de retraso de 1 milisegundo para el cual el proceso no se inserta en la cola de retrasados y se coloca al final de su cola de procesos listos. El tiempo de retraso máximo es de 65535 milisegundos.

,

en milisegundos, pero la cuenta del temporizador está en I

..

I

111.6 MANEJO DE SEMAFOROS. Se han implementado dos tipos de semáforos: Binar ios y

Contadores, cada uno con sus respectivas primitivas.

SEMAFOROS BINARIOS, Los semáforos binarios se han situado en el área

direccionable por bit en memoria interna, en la siguiente disposición:

bSemaroro STROCTORE( (W,Sl.S2,S3, S4, S5,S6, Si.C8,59, S10.S11,C12.512.S13.Sl4.S15) BIT) PVBLIC;

y su directorio en memoria externa en la estructura:

DCSBhm-max-ssp) STRUCTURE(cresd0 BYTE, nombre (Psx-nom-sm) B m , prlmeroiaaxgrlor) BYTE. ultlmoímaxgrloc) BYTE) PVBLIC

AUXILIARY;

Se cuenta con 16 semáforos, cada uno tiene asociado varias colas de procesos bloqueados, una por prioridad. El bloqueo es opcional, siendo los valores que manejan éstos semáforos: O

47

Page 56: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

(falso) y 1 (verdadero). Sus primitivas son: - Ink-bSem: coloca la variable del semáforo con un valor I , inicial, indica que se ha creado, inicializa los apuntadores de su directorio y almacena el nombre designado.

- bsignal: si hay procesos bloqueados alista el de mayor prioridad Ó todos si es la opción, si algún0 tiene mayor prioridad que al proceso poseedor se llama al manejador del procssador. Si no hay procesos bloqueados seiializa el semáforo y el proceso continúa.

- bEspera: si el semáforo está señalado se coloca en cero y el proceso continúa, de otra forma, si el proceso elige bloquearse se ubica en la cola del semáforo correspondiente, su variable RSB se coloca en 1, se indica el estado de bloqueo en semáforo binario y se llama al manejador del procesador. Si el proceso no desea blo&earse, permanece listo y recibe un código de terminación de transacción ilegal.

1’

SEMAFOROS CONTADORES. Se tienen 16 semáforos, cada uno con un contador que puede

tomar valores positivos y negativos hasta de 7FFFH. Cada semáforo maneja colas de bloqueo por prioridad, siendo el bloqueo opcional. El directorio para éstas es:

DCSCinux_rax-sem) STRUCTVRE(creado BYTE, I

nombrsiiax-noi-sa) BYTE, pr laero imgrl or) BYTE, u1 t lmo i m a x j r l o r ) BYTE. contador Wiüi) PUBLIC AVYILIAñI;

Las primitivas correspondientes son: - IniccSem: inicializa el contador con una cuenta dada, los apuntadores a las colas de procesos, establece que se ha creado el semáforo y almacena su nombre. - csignal: incrementa al contador las unidades indicadas. Si existen procesos bloqueados alista por prioridad a los que se pueda satisfacer su demanda decrementando el contador por las unidades entregadas, Ó a todos si as1 se establece y el contador se coloca en cero. Si algún proceso alistado es de mayor prioridad se termina llamando al manejador del procesador, de otra forma el proceso poseedor continúa.

I

Page 57: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

6 P

. . , . .

sosaaoid , . a p . seToa e operaose oun epea 'souiaqxa soqsp ap .eyiomam~ua sopeao~oa ueiquanaua as sauoznq so? 'e'auaiajai ;rod A ,eydoa ;rod acesuam ap oyqmeixaquy eqiodos anb sauoznq ap omsyueaam

. .

. . , .

. . un opequamaTdur 'pq as sosaooid aaqua upyaea'unmoa e1 eied

'S3NOZna 3Ci Oi'ZiNW L ' I I I . .

. .

. . -oueaTooq ~ O T ~ A

:. , . u~-,esaibal~ -e:a~h eqsa ou e103 eunñ~e ys opueaiasqo 'oio3emas un , us ,' sopeanboTq sosaaoid uaqsyxa rs euruuaqap anb uias'opeA

. .

. . . .

. . . . , . .

. .

. . . .

. .

. .:

'I

i t

I

Page 58: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

bloqueados ordenadas por prioridad. Estos procesos bloqueados esperan recibir mensaje si el buzón está vacío, o esperan enviar un mensaje si el buzón está lleno, no existiendo conflicto dado que las dos condiciones no se pueden presentar al mismo tiempo, la comunicación es en un sentido.

Los descriptores de los buzones tiene la estructura:

DCBinu-mx-buz1 atructuratcraado BYTE, nombra iwx-noi-buz) BYIE. dlr ADDRaS, long WRD. tipo m, p-iJe ADDRESS, u-mJa ADDRESS, priieroinxgrlor) BYTE, ultlioiwgrlor) BYTE1

PUBLIC AUYILS*RI;

donde: d i r indica la dirección de inicio del buzón, long la longitud en bytes, tipo es la marca del buzón referente a la comunicación que maneja, p-mje representa la dirección de inicio del primer mensaje y u-mje la dirección final del último, primero y ultimo son los apuntadores a las colas de procesos bloqueados.

Debido a que el manejador declara variables en memoria de datos externa basadas en la dirección del mensaje, éstos deben hallarse en la memoria mencionada, y sus dos primeros bytes deben indicar su longitud, el intercambio se realiza dentro de la memoria externa de datos. A continuación se explica la diferencia entre un intercambio por copia y uno por referencia: o Por copia: el mensaje y su longitud implícita son duplicados en

el buzón y posteriormente al área del proceso que lo recibe. o Por referencia: se copia sólo la dirección del mensaje (dos

bytes) en el buzón para posteriormente ser copiada en una variable del proceso que recibe. La longitud del mensaje se encuentra en sus dos primeros bytes.

Al crear un buzón se define su longitud máxima y se utiliza al manejador de memoria, por lo tanto se ubican en el área de memoria libre. El buzón es circular y se maneja por medio de los

byte que se deja entre el inicio del primer mensaje y el final del último, es decir, primero se almacena Ó saca un byte del buzón y después se incrementa el apuntador.

I'

apuntadores del descriptor, definiéndose si está lleno por un I!

50

Page 59: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

Para el uso de los buzones se tienen las siguientes

- Crea-buzon: inicializa el directorio del buzón. Como llama al manejador de memoria, y utiliza la misma área de paso de parámetros que ésta primitiva, 10s parámetros que aún se ,

necesiten después del llamado al manejador se guardan (número de buzón) para Pestablecer posteriormente. Se marca el tipo de comunicación que se realizará en el buzón. Las variables dir, p-mje y u-mje se inicializan con la dirección donde principia el buzón, que es la dirección que regresa el manejador de memoria. Para la creación de un buzón no hay opción a bloqueo, por lo que si no hay memoria el proceso recibe el código de terminación de memoria insuficiente. Se verifica que el buzón no haya sido creado.

- Envia: obtiene la longitud del mensaje (dos primero bytes) y llama al procedimiento que lo copia al buzón. Si hay procesos bloqueados, alista el de mayor prioridad, copia el mensaje Ó la dirección a su área Ó variable, y si es de mayor prioridad se termina llamando al manejador del procesador, de otra forma el proceso poseedor continúa. Si no hay espacio en el buzón para el mensaje Ó dirección y la selecciona es bloqueo, el proceso es ubicado en el estado de bloqueo en envía e insertado en la cola correspondiente del buzón, en RSB se guarda la longitud del mensaje que desea enviar, en ptrmje la dirección de inicio

primitivas: 1,

del mensaje y se termina llamando al manejador del procesador. Si el proceso prefiere no bloquearse, permanece en estado listo y recibe el código de terminación de transacción ilegal. Se verifica que la dirección del mensaje esté en área permitida (ver organización de la memoria). - Recibe: copia el primer mensaje Ó dirección almacenado en el buzón al área Ó variable del proceso. En éste caso, si no hay procesos bloqueados por enviar, el proceso poseedor continúa, si los hay, se alista por prioridad a los procesos que alcancen a copiar su mensaje en la parte del buzón libre, y si alguno es

procesador. Si no hay mensajes en el buzón y la opción es bloqueo, el proceso es ubicado en el estado de bloqueo en

de mayor prioridad se termina llamando al manejador del /I

51

Page 60: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

recibe e insertado en la correspondiente cola del buzón, se almacena la longitud del mensaje en RSB, el apuntador al área , de recepción en ptrmje del descriptor dinámico y se termina llamando al manejador del procesador. Si el proceso no desea bloquearse, permanece en estado de listo y recibe el código de terminación de transacción ilegal. En cualquier caso, se verifica que la’dirección donde se recibe recibe el mensaje, Ó

su dirección, esté en área permitida. - Vacio-buzon: determina el estado de un buzón y regresa un valor equivalente, se consideran los siguientes casos: a) el buzón no tiene procesos bloqueados ni mensajes, se

regresa el valor de O. b) el buzón no tiene mensajes y sí tiene procesos bloqueados

(esperan recibir), se regresa el valor de 1.

regresa el valor de 2.

enviar), se regresa el valor de 3.

I

11

c) el buzón no tiene procesos bloqueados pero si mensajes, se 1)

d) el buzón tiene mensajes y procesos bloquedos (esperan

a - .

buzon -

1 Manejador 1

copia- I Alista1 (Bloquea] IAsignaCPUl Mayor-

buzon de- prioridad

(por copia únicamente)

FIG. 3.15 PROCEüIMIWrrOS PARI EL WINEJO DE Los BUME.

Para las tres Últimas primitivas se verifica que el buzón haya sido creado. Al utilizar un buzón se indica el tipo de comunicación que se realiza y se compara con el del buzón para compatibilidad, de ésta forma, se asegura que la comunicación que

5’2

Page 61: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

se realiza es la deseada y evitar problemas como recibir mal una dirección que puede señalar a un área de memoria equivocada e invadir otros espacios.

Para el caso que se tengan varios procesos bloqueados de la misma prioridad, se alistan conforme al primero en bloquearse - primero en alistarse. Se tiene además los siguientes procedimientos: *

,(

Copia: copia datos de un área a otra en memoria externa de datos. Esta rutina est6 realizada en código ensamblador para minimizar el tiempo de transferencia de mensajes. Los parámetros a ésta rutina se pasan por medio de variables en memoria externa y posteriormente se cargan en registros. ES utilizada solamente para comhcación por copia.

suficiente, coloca parámetros en memoria externa para que el procedimiento Copia duplique el mensaje en el buzón. Si la comunicación es por referencia, copia directamente la dirección. Actualiza el apuntador al último mensaje. Copia-debuzon: coloca parámetros en memoria externa para que el procedimiento Copia reproduzca el mensaje en el área del proceso. Si la longitud del área donde el proceso recibe el mensaje no es suficiente, se copia solamente la fracción adecuada y se asigna el código de terminación de Uensajetruncado. Por otra parte, si la comunicación es por referencia, se copia directamente la dirección almacenada en el buzón a la variable del proceso. Actualiza el apuntador al primer mensaje.

Es de notarse que al copiar la dirección de un mensaje en el

I

Copia-abuzon: obtiene el espacio en el buzón y, si e8 I

I1

I

buzón, no se permite que sus dos bytes queden separados (buzón circular). Lo mismo ocurre con los dos primeros bytes de un mensaje en comunicación por copia.

111.8 MANEJO DE MEMORIA DINAMICA. Como se observa en la organización de la memoria (fig. 3.2),

se considera un área de memoria libre que depende del espacio que ocupan los datos externos de los procesos, y que se maneja dinámicamente. El método utilizado es el de particiones

53 I 1

Page 62: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

contiguas, donde el tamaño de cada fracción es configurable por el usuario. Para la asignación de memoria se utiliza el sistema de colocación del primer ajuste, cada bloque de memoria se representa por la siguiente estructura:

Area-meiímax-bl kw ) SIRUCNREíocupado BYTE. bib-cent ywu),

poseedor BYTE) PUBLIC AVXILIAXY;

donde ocupado representa el estado del bloque Ó conjunto de bloques próximos indicados por blks-cont, y poseedor es el proceso a que se asigna la memoria.

El manejador tiene varias colas de bloqueo ordenadas por prioridad para procesos que no se puede satisfacer sus requerimientos momentáneamente. Los procesos son alistados de acuerdo a su prioridad. El directorio de apuntadores es:

ücimi S ~ í p r i r m r o í m a x g r i o r ) BYTE, ultlin>ípargrlori ByIEi PUBLIC AUYILIUPI

Se utilizan además las siguientes variables: bytes-r-blk indica el tamaño de cada bloque en bytes, el cual es configurable por el usuario. num-blks es el número de bloques que se están manejando, calculados en base a la variable anterior y al espacio de memoria libre. El límite de bloques es num-mar-blks. dir-iniciomem-libre contiene la dirección donde inicia el manejo de memoria dinámica. p-blkdisp indica el primer bloque de memoria disponible a partir del cual se busca. blks-libres contiene el número de bloques libres totales, se compara con la cantidad de bloques pedidos para determinar si se podrra alcanzar a cubrir lo requerido. max-mem indica el número de bytes totales que se manejan dinámicamente, y que se pueden asignar. Está en base al número de bloques que se consideran.

Al principio del sistema se inicializa el manejador de memoria mediante el siguiente procedimiento: - Inicmanej-mem: inicializa las estructuras y variables del manejador para lo cual determina la dirección de inicio de la memoria libre observando las direcciónes finales de datos en memoria externas de los procesos declaradas en el descriptor

5 4

Page 63: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

contiguas, donde el tamaño de cada fracción es configurable por el usuario. Para la asignación de memoria se utiliza el sistema de colocación del primer ajuste, cada bloque de memoria se representa por la siguiente estructura:

Area-mmm(max-bl kv) STRUtTVREíocupado BYTE. blkecont üüüü, poseedor BUTE) PUBLIC AVXILIAñY;

donde ocupado representa el estado del bloque Ó conjunto de bloques próximos indicados por blks-cont, y poseedor es el proceso a que se asigna la memoria.

El manejador tiene varias colas de bloqueo ordenadas por prioridad para procesos que no se puede satisfacer sus requerimientos momentáneamente. Los procesos son alistados de acuerdo a su prioridad. El directorio de apuntadores es:

DClW SiRlJCiUñEiprineroíiaxgrIor) BYTE, ult i io íraxgrlor) WiE) PUBLIC AVXILIARY

Se utilizan además las siguientes variables: - bytesqor-blk indica el tamaño de cada bloque en bytes, el cual es configurable por el usuario.

- num-blks es el número de bloques que se están manejando, calculados en base a la variable anterior y al espacio de memoria libre. El limite de bloques es num-max-blks.

- dir-inicio-mem-1 ibre contiene la dirección donde inicia el manejo de memoria dinámica.

- p-blkdisp indica el primer bloque de memoria disponible a partir del cual se busca. - blks-libres contiene el número de bloques libres totales, se compara con la cantidad de bloques pedidos para determinar si se podría alcanzar a cubrir lo requerido.

- max-mem indica el número de bytes totales que se manejan dinámicamente, y que se pueden asignar. Está en base al número de bloques que se consideran.

Al principio del sistema se inicializa el manejador de memoria mediante el siguiente procedimiento: - Ink-manejmem: inicializa las estructuras y variables del manejador para lo cual determina la dirección de inicio de la memoria libre observando las direcciónes finales de datos en memoria externas de los procesos declaradas en el descriptor

/I ---.- t

. . .

i!

I'

54

Page 64: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

inicial, distinguiendo la más alta dentro de los primeros 32 kilobytes. Calcula el número de bytes del espacio libre y posteriormente el número de bloques por medio de la fórmula: -

* max1.s m o r l a l lbre numero da bloques =

t-Eo de bloque

Si el nÚmero de bloques que se calculan sobrepasa el límite, se considera solo hasta el valor máximo. Harca el primero y Último bloques como desocupados con la cantidad de bloques que se manejarán, como primer bloque disponible el cero, e inicializa el directorio de apuntadores a las colas. Las variables locales a éste procedimiento se declaran en memoria interna, dado que se ejecuta al inicializarse el sistema. verifica las siguientes condiciones: - el número de.bloques no sea cero, - el espacio de memoria libre no sea menor a una cantidad de - que el tamaño de bloque especificado por el usuario no exceda bytes mínimos.

el espacio de memoria libre. Se cuenta con las primitivas:

- Obten-memoria: calcula el número de bloques requeridos en base al número de bytes pedidos y compara con la cantidad de bloques totales libres, si no es mayor el pedido, se busca el primer conjunto de bloques contínuos que conformen la cantidad demandada a partir del primer bloque desocupado. Si se encuentra suficiente memoria, marca los bloques inicial y final asignados como ocupados, con la cantidad de bloques y con el -número de proceso. Si no se utilizan todos los bloques del conjunto, el área sobrante se marca como desocupada en su primer y Último bloque con la cantidad restante. Luego calcula la dirección inicial del área que se asigna mediante la ecuación: apun-a-nm-aelg s Indlcs t s r a ~ o b i o q w t dlr-lniclo-rsa_llbrs

y ajusta los valores de las variables del manejador como son el nÚmero de bloques libres totales y el apuntador al primer libre. Si no hubo bloques contíguos suficientes y el proceso solicita bloqueo, se ubica en el estado de bloqueo por memoria insertándolo en la cola correspondiente del manejador, carga

55

I!

Page 65: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

't

RSB y ptr - mje del descriptor dinámico con la cantidad de bytes pedidos y con la dirección de la variable donde se regresa la dirección de inicio del espacio asignado respectivamente, y se termina llamando al manejador del procesador. Si el proceso no desea bloqueo, permanece en el estado de listo y se coloca el código de terminación de memoria insuficiente, regresando un valor de cero. Se verifica que el número de bytes pedidos no sea cero Ó sea mayor que el número de bytes totales del espacio manejado dinámicamente.

I

I

I1

Inic-mane,- mem -

Manejo

Libera-memoria

56

Page 66: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

1

Si se alistó algún proceso de mayor prioridad se llama al manejador del procesador de otra forma el proceso poseedor ,

continúa. Verifica que la dirección de la memoria que se regresa esté dentro del espacio manejado, y que el área correspondiente se encuentre marcada como ocupada.

La figura 3.16 muestra los procedimientos para el manejo de memoria dinámica. '

111.9 MANEJO DE INTERRUPCIONES- L~~ interrupciones y su procesamiento son centrales Para un

sistema de tiempo real donde los eventos ocurren asincrónicamente con respecto al trabajo interno del sistema. Las interrupciones en el microcontrolador son vectorizadae, es decir, Cuando alguna ocurre el control pasa a una dirección especifica, determinada por su tipo, en una sección de memoria conocida como vector de interrupción. De aquí; el control se redireccionar a un procedimiento que la atiende.

El microcontrolador cuenta con cinco fuentes de interrupción numeradas de O a 4,,las cuales son las únicas en toda la tarjeta de comunicaciones. A cada una se le puede asignar uno de dos niveles de prioridad.

La interrupción 1 (temporizador O) es utilizada por el núcleo para el cuanto de tiempo y tiempos de retraso, por lo que no está disponible al usuario. Esta interrupción tiene su propio manejador Manej-interrupcion-1, que se asigna al inicializar el sistema. Debido a que el ambiente de soporte utiliza también la interrupción, ésta se encuentra mapeada a direcciones de memoria códigoldatos (800BH), de forma que por medio del procedimiento Colocamanej-int se coloca una instrucción de salto al manejador

de la interrupción cuando funciona el sistema operativo, y lo mismo realiza el monitor que instala una instrucción de salto a su rutina en particular. Si el ambiente de soporte no se incluye, se puede colocar un salto directamente al manejador del sistema operativo, en la dirección original de la interrupción. su prioridad es baja para evitar que suspenda alguna otra interrupción.

Para que el núcleo tenga control de las interrupciones

<,I.''

i

. .

57

Page 67: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

disponibles al usuario, se declara la variable byte-interr, así

como cada uno de sus bits como: Int-O-inic Int-2-lnlc IntJlnlc Int-4-lnlc bit-int-O blt-lpt-2 bl t-lnt-3 bl t-into

BIT BIT BIT BIT BIT BIT BIT BIT

byte-lntsrr. 7 byte-lntsrr. 6 byte-lnterr.5 byte-lnterr. 4 byte-lntsrr. 3 byte-lnterr. 2 byte-lnterr. 1 byte-lnCerr.0

de que los cuatro bits más significativos indican si la interrupción está inicializada, y los cuatro menos Significativos

las interrupciones que se están atendiendo colocándose 10s bits correspondientes (no más de dos a la vez), y cuando se acaba

de atender la interrupción en curso se limpia el bit correspondiente.

~l sistema operativo cuenta con un procedimiento denominado manejador de interrupciones, el cual si se involucra con alguna interrupción, la atiende cuando ocurra. El procedimiento es llamado Uanej-interrupcion y sus funciones son: a) Ejecuta, si está definida, una rutina opcional del usuario

para la interrupción en curso. b) Posteriormente verifica si existe un proceso bloqueado

esperando la interrupción y lo alista, de lo contrario, incrementa un contador y termina. Al alistar el proceso, coloca en cero su variable RSB, y si es de mayor prioridad indica asignación del procesador. El manejador de interrupciones es ininterrumpible, ya que se '

necesita garantizar que realice sus funciones antes de atender otra interrupción, por lo tanto está codificado en lenguaje ensamblador para optimizar su tiempo de ejecución y disminuír la latencia de interrupción. Asimismo, considerando lo anterior y que se maneja un solo procesador, se tiene un manejador que puede, atender todas las interrupciones disponibles al usuario en cualquier prioridad en la que se encuentren. Mientras se ejecuta la rutina opcional de atención, las interrupciones son habilitadas, momento durante el cual se puede atender otra interrupción de mayor prioridad. ,

Se utilizan los siguientes procedimientos:

58

Page 68: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

- Activagroced-indir: da control indirectamente a una rutina en base al contenido del registro DPTR. Activar indirectamente, en éste sigmifica que al regreso de la rutina no se retorna a éste procedimiento, sino a la siguiente línea de donde se llamó

a éste mismo. - Indice: calcula el indice a los arreglos comentados a continuación, en'base a la interrupción que se está atendiendo.

como en ensamblador no se manejan estructuras y parer agilizar la atención a las interrupciones se declaran los siguientes arreglos: - dirsqroced-int: contiene las direcciones de los procedimientos que atienden cada interrupción, el cual puede ser el del manejador de interrupciones Ó una rutina del usuario.

- dir-rutinaint: contiene las direcciones, para cada interrupción, de las rutinas opcionales que ejecuta el ' manejador de interrupciones. Si tiene un valor de cero no hay rutina opcional.

- proc-bloc-int: contiene al proceso bloqueado por cada

interrupción, un estado de vacío se indica con el valor OFFH. - contador-int: contador por cada interrupción. Es incrementado por el manejador.

- apunt-DCAqrim: apuntadores a las variables primero del directorio DCA para cada proceso que se encuentra bloqueado.

- aPUnt-DCA-ult: apuntadores a las variables ultimo del I

directorio DCA para cada proceso que se encuentra bloqueado. - apunt-Em-Proc: apuntadores a las variables de estado del descriptor dinámico de cada proceso bloqueado.

- aPunt-RSBgroc: apuntadores a las variables RSB del descriptor dinámico de cada proceso bloqueado.

En la figura 3.17 se muestran 10s procedimientos que intervienen en el manejo de interrupciones.

I'

59

Page 69: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

Proceso de mayor prioridad

Vector de rutinas

INTx

Guardareg

indir

interrupcion

FIG. 3.17 )<*NU0 DE lNTERRvPCIONES DISWNIBLES AL USUARIO.

En el vector de direcciones primeramente se deshabilita cada una y Posteriormente se realiza un salto a alguno de los procedimientos denominados conjunto de procedimientos de interrupción INT-x, donde se coloca el bit de la variable byteinterr que indica la interrupción en curso y las siguientes funciones (fig. 3.17):

Coloca variables; Si no se suspendió otra interrupción entonces Guarda-reg; Sino guarda los registros A , B, y DPTR en el stack; Coloca índice a los arreglos (proc. Indice); Llama rutina de atención por medio del proc. Activaqroced-indir; Si no se encuentra suspendida otra interrupción entonces Si se justifica cambio de proceso entonces Manejo-CPU;

Sino carga los registros A , B, y DPTR del stack; Recoloca variables RhTI;

Cargareg; I,

Es de notarse que solo interrupciones de baja prioridad se

I

60

Page 70: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

pueden suspender, reanudando su ejecución después de la última instrucción del procedimiento 1"-x correspondiente. Asimismo el

procesador se asigna al terminar de atender las interrupciones, es decir, cuando no hay alguna suspendida.

En ningún caso se guardan las variables internas y stack del proceso poseedor, es decir, quedan residentes en memoria interna durante la atención de la interrupción.

El núcleo tiene las siguientes primitivas para que el 'I

usuario utilice las interrupciones: - Inicializa-int: involucra el manejador del núcleo con una interrupción e inicializa variables. Indica su inicialización.

- Instara-int: instala una rutina del usuario a una interrupción. Si ésta ya ha sido inicializada (primitiva anterior), coloca la dirección de la rutina en el arreglo dir-rutina-int para que la ejecute el manejador como rutina opcional, de lo contrario ubica la dirección en el arreglo dirsqroced-ints para que atienda directamente la interrupción. Se indica su inicialización.

I

Primitivas

Espera-int

AsignaCPU

Inicializa- int dirección

FIG. 3.18 PRIIIITIVAS PAW. EL MANU0 DE IKIERRWCIOMS.

- Espera-int: si el contador de la interrupción es cero, bloquea el proceso por la espera de la interrupción sacándolo de la I

cola de listos e insertándolo en el arreglo proc-bloq-int, 1

carga los arreglos de apuntadores. y el número de la ,,

interrupción en la variable RSB del proceso, termina llamando

al manejador del procesador. Si el contador no es cero lo '

61

Page 71: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

decrements por una unidad y el proceso continúa. se verifica que la interrupción haya sido inicializada Por la primitiva

Inicializa-int. Para cada primitiva se verifica que la interrupción referida

no sea la número 1, la cual está reservada para el sistema

operativo. us interrupciones, al principio del sistema, se colocan

apuntando a un procedimiento llamado Interr-no-inic que coloca el

código de terminación y el código de identificación correspondientes para indicar la ocurrencia de una interrupción que ha sido habilitada, pero no inicializada por alguna de las primitivas correspondientes.

-

111.10 MANEJO DE ERRORES Y EXCEPCIONES. Cuando un proceso llama a una primitiva, el núcleo del

sistema operativo lleva a cabo una serie de validaciones para detectar parámetros erróneos Ó eventos que el proceso no espera. SOPCO-51 tiene implementado un manejo de errores y excepciones de forma que cada proceso, al activarse, se vincula con un manejador que puede ser el del núcleo Ó uno realizado por el mismo usuario.

Cuando un error ó excepción ocurre, puede ser localizado utilizando el ambiente de soporte NSB-51, otro desarrollo para la tarjeta MAC-851 el cual no es una parte integral del sistema operativo, y que consiste de: un monitor y un depurador.

Como se observó en la estructura de las primitivas (sección III.1.2), en la parte final de cada primitiva se cuestiona e] valor de una variable denominada código de terminación (cod-term)

para determinar si ocurrió un error ó excepción. Si lo hubo, se llama al procedimiento Coloca-cod-term, quien coloca el valor de identificador de primitiva en idSprim y el código de terminación en codiw-term, variables que accesa el depurador, y posteriormente, si fué un error se .llama directamente al manejador de errores y excepciones del núcleo. si fué una excepción se pasa control a la dirección indicada en el

descriptor dinámico del proceso poseedor. En el caso de que una primitiva llama a otra, cualquier error es manejado en la primera.

62

Page 72: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

para que el depurador pueda accesar a las variables Y estructuras del sistema operativo, se establece como interfaz wI

vector de direcciones de las mismas, denominado vectordir-var, ubicado en una localidad fija en memoria código (Una excepción es el bit que indica el estado de ejecución control). A s í mismo, la dirección de inicio del sistema, la dirección de regreso ai mismo, y la direcobón de la rutina de despliegue del depurador se colocan en variables con direcciones fijas.

En general, se considera un error si el proceso que se intenta bloquear, retrasar Ó eliminar es el de menor prioridad.

Los códigos de terminación se apegan a los estándares UOSI (siglas .en inglés de Interfaces de Sistemas Operativos para Microprocesadores), aunque no totalmente dadas las características de verificación que realiza el sistema operativo. Para diferencia< entre un error y una excepción, se tiene la siguiente convención:

, I'

W D I M ERROR O a U EKCEPCION laU

Los códigos de errores y excepciones se encuentran en el

El manejador del núcleo es denominado Uanej-err-excep, y apéndice B.

lleva a cabo las siguientes funciones (figura 3.19): I,

1) Guarda el estado del sistema: que consiste en: - Detener el temporizador O utilizado por el núcleo y, si es

- Guardar los datos .internos y stack en memoria externa, del ,(

necesario, también el contador 1.

proceso poseedor. - Guardar la variable byte-interr, que representa el estado de las interrupciones en la variable byte-ints.

- Guardar el área da memoria interna que utiliza el núcleo, en el arreglo Areamem-int-SO.

- Guardar el estado de los registros generales del sistema en el arreglo regs-gen-R31, éstos son: IE, IP, THOD, TCON, THO, TM, TH1, TL1, SCON y PCON.

- Llamar al procedimiento cuya dirección se encuentre en la variable global Monitor. En su caso, es la rutina del depurador MSB-51 que despliega el error Ó excepción. II

63

Page 73: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

2) si se regresa al sistema, el manejador restablece el estado del sistema, lo cual consiste en: - Cargar los registros generales. - Reinstalar el manejador de la interrupción 1. - Poner a funcionar el temporizador O, y si es necesario

Se utiliza el. procedimiento Regreso, como punto de retorno también el contador 1,

al sistema. Lleva a cabo las funciones:

\1 \1 Guarda-DS Guarda-reg_gen

Deshabilita interrupciones. Reinicializa algunos registros. Carga el área en memoria interna del sistema operativo.. Carga los datos y stack, en memoria interna, del proceso poseedor. procedimiento es abandonado al ejecutarse la Última

A \1 \1 Coloca- Regreso CargareLgen manei

instrucción del procedimiento Carga-DS, regresando a la siguiente instrucción de donde se guardó el stack del proceso.

int- 1

I FIG. 3.19 UWEJADOR DE ERRORES Y D(CWCI0NES DEL WVCLEO.

En caso de que no se cuente con el depurador MSB-51, y se deseé colocar alguna rutina para el caso de un error, su dirección se deberá ubicar en la variable Monitor.

- Excepcion: coloca un código de terminación en la variable codigo-term y llama al manejador del sistema operativo, el

It

se cuenta con la primitiva:

I

64

Page 74: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

identificador de primitiva es Excepción.

. ,

. .

, . Interf az - 1 I

$ ' t Primitiva Primitiva, Excepcion t ~

? Coloca- c o c t e r m

l

\L Manej- err- exeep-SO

[Regreso] 1' I'

J i

65 1

Page 75: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

usuario deposita en el descr'iptor inicial para verificar condiciones de los procesos, llamando para cada caso al manejador de errores del sistema operativo.

En la figura 3.21 se muestran los procedimientos que intervienen en la inicialización del sistema.

I inicializa-SO I I

en-DI contexto

Y - , 'fdirefción Interr-

[ no-inic J declarado

FIG. 3.21 PROCEDInIWrrOS PARA U INICIALIZICION DEL SISTEMA.

EI procedimiento inicializa-sü lleva a cabo las siguientes funciones: o Llama a la función Procs-enpi, el cual determina el número de procesos declarados en el descriptor inicial. Esto es posible porque el primer proceso y el Último se declaran con número cero, por lo que se busca a partir del proceso numero uno, un proceso declarado como número cero, considerándose que solo se puede declarar un número máximo de procesos. Si el valor está dentro del rango, se utiliza en todo el sistema operativo para cualquier iniciaiización posterior ó comparación entre procesos.

o Se inicializa el estado de los procesos como Eliminados. o Se realizan las siguientes verificaciones:

- Dado que el número del proceso se utiliza como índice a los descriptores del mismo, el número del proceso debe coincidir con su posición en el descriptor inicial. Este número se copia al descriptor dinámico cuando se activa cada proceso. I,

66

Page 76: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

- La prioridad de los procesos no debe exceder la máxima. - El código de los procesos y de su manejador de excepciones deben estar dentro de área código adecuada, para 10 cual se utilizan las constantes d-icod y d_m= del descriptor , inicial.

- ms datos externos de los procesos no deben traslapar espacios der datos del ambiente de soporte, sistema

operativo, y área de mapeo de los dispositivos de la tarjeta, para lo cual se usan las constantes d-idatent y d-fdatext del descriptor inicial.

- Se verifica que los datos internos de cada proceso estén dentro de direcciones permitidas, por medio de las constantes d-idatint y d-fdatint del descriptor inicial.

- Con las constantes d-icod y d-fcod del descriptor inicial se revisa que 'los códigos de los procesos no se traslapen.

- Considerando que clialquier proceso puede localizar sus datos externos en la parte de memoria RAM ó ROM/RAM, se verifica que no traslapen código de procesos.

- Las prioridades de los procesos cero y Último deben ser las correctas.

O Se activan los procesos cero y último por medio de la primitiva Activa. Cualquier error regresado por la primitiva, se llama al manejador de errores del sistema.

O Se inicializa el manejador de memoria dinámica con el procedimiento Inic-manejmem (ver manejo de memoria).

0 Se inicializan arreglos y variables del manejador de interrupciones.

0 Coloca la interrupción uno atendida por el manejador correspondiente del sistema operativo (procedimiento , Colocamanej-int).

Y el apuntador a la cola de procesos retrasados.

buzones como no creados.

se deshabilitan cada interrupciones en particular, y se les ,, coloca con baja prioridad.

,

.

o Se inicializan 10s apuntadores de las colas de procesos activos

o Se colocan todos 10s semáforos como no inicializados y 10s

O se inicializan todas las variables globales que sea necesario.'

67

Page 77: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

o Se programa el temporizador cero y habilita su interrupción con .I

prioridad baja. Por medio del procedimiento cargatimer-O se le coloca la cuenta de un cuanto de ti.empo. Se hace funcionar el contador al final.

o Se asigna el procesador al proceso número cero, para 10 cual Se carga el valor de su apuntador al stack Y Se coloca la dirección del proceso en memoria interna .de forma que la tome

el apuntador mencionado. Se considera también la verificación, para cada Caso, de que

las direcciones declaradas en el descriptor inicial sean coherentes, es decir, que alguna dirección inicial no sea mayor que SO correspondiente dirección final. Es de observarse que en la inicializacien solo se involucran los registros del microcontrolador: IE, IP, P.W. SP, TUOD y TcoN.

Las variables locales del procedimiento de inicialización se declaran en memoria interna, dado que sólo se ejecuta una vez.

Se tiene un procedimiento inic-areas-contexto que llena el área, en memoria externa, donde se guarda los datos internos y stack de los procesos (estructura DSqrocs. Area(n)) con el valor OC7H. Esto como una ayuda para depurar ya que hace posibie observar hasta donde ha crecido el stack.

XII. 12 INTERFAZ. El sistema operativo tiene implementada una interfaz, por

medio de la cual los procesos hacen uso del núcleo del sistema operativo.

En la figura 3.22 se esquematiza su estructura. Cada vez que qn proceso solicita una primitiva, realiza una simple llamada a un procedimiento (conocida como llamada al sistema) que involucra un procedimiento de interface, que a su vez llama al del núcleo.,.

Para cada primitiva se tiene un procedimiento de interfaz que tiene el mismo nombre, con la diferencia de que los procedimientos del núcleo se les agrega la terminación I-SOfl.

Para implementar el mecanismo se declara un vector de direcciones de las primitivas en una dirección determinada de memoria código, donde al momento de ligar/localizar el sistema operativo, la misma herramienta coloca las direcciones de cada primitiva. Cada

68

Page 78: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

espacio del vector consiste de una instrucción de salto a un - procedimiento del núcleo (archivo dirprim.aS1).

FIG. 3.22 WEUNISHO DE I W T E R F U U. SISTEMA OPERATIVO.

I N T E R F A Z

Por otra parte en el archivo vecdir.aS1 se declara un vector similar, con la misma localización y disposición de las direcciones de las primitivas, que sirve como referencia para cada procedimiento de interfaz. Este archivo se compila y se agrega a la librería Interf.lfb, de manera que al ligar/localizar los programas de aplicación, se resuelve la referencia de los procedimientos de interfaz a las primitivas. De ésta forma, el cambio de dirección de éstas Últimas es transparente a las aplicaciones del usuario.

Los procedimientos de interfaz están codificados en lenguaje ensamblador, como segmentos relocalizables. Cada uno forma un archivo que se compilan y agrega a la librería Interf.lib. De ésta forma al código de aplicación solo se agregan a los que se hace referencia.

Cada uno declara los parámetros a recibir en segmentos localizados en el área específica de paso de parámetros de las primitivas (ver organización de la memoria 111.1.4) y, de la misma forma, cada procedimiento del núcleo localiza sua

parámetros en la misma área para poder accesarlos, existiendo un '1

área de paso de parámetros para cada tipo: b y t e y b i t . Los ,/

69

Page 79: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

parámetros WORD se consideran dos bytes.

- Deshabilitar interrupciones generales. La función de cada procedimiento de interfaz es:

- Indicar que el sistema operativo se ejecuta. - Guardar 10s registros del proceso (procedimiento Guarda-reg). - Llamar a la dirección de entrada del vector de direcciones de

- De regreso de la primitiva se indica que se abandona el núcleo, - Se habilitan interrupciones generales. - Termina con una instrucción I=, ya que se puede regresar de

Al terminar la primitiva se regresa al procedimiento de interfaz. Dentro del vector de direcciones de las primitivas también se ha agregado la dirección de) procedimiento Guarda-reg.

Se puede implementar una interfaz por cada lenguaje que se quiera soportar (por ejemplo C-31) .

las primitivas.'

tomando control el proceso de mayor prioridad.

la ocurrencia de alguna interrupción.

/I

111.13 DETALLES DE IKPLEMENTACION. En ésta parte se presentan consideraciones generales sobre

la implementación del sistema operativo.

111.13.1 CONFIGURACION OEq SISTEMA, El sistema operativo tiene tres archivos de declaración:

Litera. dcl , Litsoapl. dcl y Declasm. dcl, con los cuales se puede configurar el sistema. El primero contiene declaraciones exclusivas para procedimientos del núcleo. El segundo y último tienen declaraciones que involucran al núcleo y al usuario: la interfaz y declararación de los procesos (archivo DI.p51). A s í , con archivos separados, en DI.1st sólo se observan las declaraciones propias del descriptor inicial.

- cantidad por cada objetos, - dirección de variables, arreglos y estructuras, - dimensión de algunos arreglos, - estados posibles de los procesos, - identificadores de valores lógicos,

En los archivos de configuración se declaran:

I/

18

I

1, . .

7 0 1,

Page 80: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

- direcciones de áreas consideradas por el núcleo, - códigos de identificación de primitivas, - constante de tiempo (cuanto de tiempo), - constantes para el manejo de memoria dinámica, - otras constantes generales. configurado de la'kiguiente forma:

En forma general, el sistema operativo se encuentra

16 procesos máximo. 8 niveles de prioridad. 16 semáforos binarios máximo. 16 semáforos contadores máximo. 16 buzones máximo. longitud minima de mensaje 2 bytes. cuanto de tiempo de 50 milisegundos. tiempos de retraso de 2 a 65535 milisegundos. 230 bloques máximos para el manejo de memoria dinámica. 10 bytes mínimos para manejo de memoria dinámica. descriptor inicial en la dirección 800En. etc.

JII.13.2 COMPILADO X &IGAW/MCALIZACION 9Eb SISTEMA O PJSRATI vo <

Se cuenta con un archivo CompSO.bat para compilar todos los que conforman el núcleo, y otro archivo SO.seg donde se declaran los tipo objeto y se localizan todos los segmentos de código, memoria interna, bits, y memoria externa.

El sistema operativo se liga/localiza de la siguiente forma:

En el caso de que se quiera prescindir de algún módulo del sistema operativo, sólo se tienen que eliminar los archivos correspondientes en los antes mencionados, así como los segmentos que involucran.

RLSl<RL.Sffi <EwIzR>

I*

111.13.3 DATOS TECNICOS. Código: (aproximado) Manejo de procesos: Manejo de colas de procesos: Manejo de tiempo: Semáforos binarios: Semáforos contadores:

3.50 Kbytes 1.00 Kbytes 0.85 Kbytes 1.30 Kbytes 1.70 Kbytes

71

Page 81: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

Buzones : . 4.30 Kbytes Manejo de memoria dinámica: 2.25 Kbytes Manejo de interrupciones: 1.50 Kbytes Manejo de errores y excepciones: 1.00 Kbytes

Tiempos : Inicialización aei sistema: Cambio de contexto: Activa: Elimina : Retrasa: Inic bsem: Iniccsem: bS igña 1 :’

sin alistar proceso alistando proceso

bEspera : sin bloqueo‘ con bloqueo

cSignal : sin alistar proceso alistando proceso

cEspera : sin bloqueo con bloqueo

Vacio sem: Crea buzon: Envia (mensaje) :

por copia por referencia

Recibe (mensaje): por copia por referencia

Vacio buzon: Obten-memoria: Libera memoria: Inicializa int: Instala inZ: Espera-ht:

sin bloqueo con bloqueo

Tiempo de ejecución del manejador de interrupciones (sin rutina opcional)

sin alistar proceso alistando proceso

Tiempo entre que ocurre una interrupción y se ejecuta la primera instrucción de la rutina de atención opcional

incluye tiempo mínima de cambio de contexto

17.2 mseg mln 0.50 mseg min - 2.60 mseg - 2.13 mseg 1.50 mseg 1.75 mseg 2.10 mseg 2.11 mseg

0.68 mseg 1.00 mseg

0.23 mseq 2.33 mseg

0.93 mseg 1.87 mseg

0.39 m’seg 2.20 mseg 0.67 mseg 4.00 mseg prom.

1.66 mseg (+ 35 pseg/dato) 1.54 mseg

1.45 mseg (+ 35 pseg/dato) 1.33 mseg 0.75 mseg 0.90 mseg mln - 2.55 mseg IMX*

1.35 mseg min - 2.55 mseg w* 0.25 mseg 0.25 mseg

0.32 mseg 2.00 mseg

0.34 mseg 0.53 mseg

0.19 mseg

72

Page 82: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

IV. LIBRERIA DE RUTINAS DE ENTRAWSALIDA. I

En éste capítulo se describe la librería Rutinas.lib, implementada para los dispositivos de la tarjeta MAc-851- Esta librería cuenta con rutinas codificadas en lenguaje PL/M-51, la8

cuales incluyen manejo y conversiones de datos, inicialización de interrupciones, puerto serie y temporizadores del micro- controlador 80C31, y manejador de puertos NSC810.

para utilizar las rutinas de la librería, es necesario declarar al inicio, como externa, cada rutina usada. Esto se puede realizar incluyendo el archivo Rutinas.dc1, que contiene la declaraoion de cada una, con el comando:

$iNCLüüEíRutlMs.dcl) I

Para ligar las rutinas con la aplicación, en el comando respectivo se agkega la librería:

RL51 modulol.obJ, m o d u l 0 2 . o ~ J , .. . , Rutinas.lib. PU15l.llb

Las variables de cada rutina están declaradas en memoria, interna para que, ai utilizarse con el sistema operativo, varios procesos puedan utilizarlas (código compartido).

Para las rutinas de despliegue es necesario contar con una, interfaz serie a una terminal de video y/o un teclado, por medio,

del puerto serie del microcontrolador 80~31. A continuación se describe cada rutina presentando SU

formato, parámetros y características.

MANEJO DE CARACTERES. Procedimiento: DECCRIPCION

?DES LINEA

Este procedimiento despliega una cadena de caracteres almacenada en memoria. ? denota el espacio de memoria. MRIIATOS

CALL Cdes linea(dir cadena); (Memoria código) CALL Ddes-linea(dircadena); (Memoria interna de datos) CALL Xdes-linea(dircadena); - - (Memoria externa de datos)

It PAMirrniO

dir-cadena es un apuntador a la dirección de inicio de la

línea.

73

Page 83: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

, COKENTARIO

La terminación de la línea se denota por el caracter 04H de fin de línea. Se usa el puerto serie del 80C31.

procedimiento: ?DES LINEALN

DESCRIPCION

Este procedimiento despliega una cadena de caracteres almacenada en memoria, terminando con un retorno de carrolfin de línea. ? denota el espacio de memoria. FORNATOS

CALL Cdec linealn(dir-cadena); (Memoria código) CALL.Ddes-linealn(dir-cadena); (Memoria interna de datos) CALL XdesIlinealn(dircadena); (Memoria externa de datos)

PARAKETRO

dir-cadena-es un apuntador a la dirección de inicio de la,. línea.

CONENTARIO

La terminación de la línea se denota por el caracter 04H de

fin de línea. Se usa el puerto serie del 80C31.

Procedimiento: ?OBT LINEA DESCRIPCION

I,

Este procedimiento permite captar una línea de hasta 256

caracteres de un teclado. 1 denota el espacio de memoria donde se almacena la línea. FOWTOS

CALL Dobt linea(dir cadena); (Memoria interna de datos) CALL Xobt-linea(dir-cadena); - - (Memoria externa de datos)

PARAKETRO

dir-cadena es un apuntador a la dirección inicial donde se

va almacenar la línea. CONENTARIO

Permite corregir la línea mediante la tecla <backspace>, terminándola con la tecla <Enter>. La rutina le coloca el caracter 04H de terminación. Se utiliza el puerto serie del" microcontrolador 80C31.

7 4

Page 84: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

CI Función1 - DESCRIPCiOW

Esta funciÓn.obtiene un caracter del teclado. FORUATO

dato = ci; PARAWEIR0

Regresa un dato tipo byte correspondiente al valor ASCII del 1,

caracter. COiIEwíARIO

El bit RI del registro SCON es muestreado, hasta que indique, que se ha recibido un dato (RI = 1) en el registro SBUF del puerto serie del microcontrolador 80C31.

co - Procedimiento: OESCRIPCION

Este procedimiento transmite un dato por medio del puerto serie. m m m

CALL co (dato) ;

car es el dato tipo byte a transmitirse.

El bit Ti del registro SCON es muestreado hasta que indique

PARAWFIR0

M)(PI IARIO

que se puede transmitir (Ti = 1) el dato por el registro SBUF. n

Función: DESCRIPCION

OBT CAR - Esta rutina obtiene un caracter del teclado. Si éste está

dentro del rango 20H - 7FH, lo despliega en la terminal. FORUAIO

I

dato - Obt-car; Regresa un dato tipo byte correspondiente al valor ASCII del,

PAñAüETRO

caracter . IL

COIIEKIARIO

Utiliza las rutinas ci y co.

7 5

Page 85: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

FIN LINEA . . procedimiento L

DESCRIPCION

Este procedimiento manda una secuencia de retorno de carrolfin de línea a la terminal. mmwo

CALL Fin-linea; COWDIT*RIO

utiliza la rutina co.

Procedimiento: SACA BYTE DESCRXPCION

Esta rutina despliega un byte en su forma hexadecimal.

CALL Caca-byte (hex) ;

hex es un dato tipo byte.

Manda primero los cuatro bits superiores y luego los inferiores. Utiliza el puerto serie del microcontrolador.

FORHATO

PARAI(ETR0

COMENTARIO

Procedimiento: SACA WORD DE5CRIPCXON

Despliega un dato tipo WORD en su forma hexadecimal.

CALL Saca word(hex) ;

hex e6 un dato tipo WORD.

Manda primero el byte superior y luego el inferior.

FORluIO

- PAR*I(ETRO

COILENTARiO

procedimiento: SACA DECIMAL DESCRIPCION

Esta rutina despliega un arreglo que representa un número' decimal de hasta cinco dígitos. El formato de despliegue es I

configurable. FORMATO

I CALL Caca - decimal(apunt,formato)

7 6

Page 86: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

PARAMETiKl

apunt es un apuntador (ADDRESS) a la dirección inicial del

formato es un número (byte) que indica la cantidad de dígitos a desplegar con un máximo de cinco. Si se

especifica un número cero, el formato es dinámico, , visuallzándose desde el primer dígito no cero.

arreglo.

COIWTARIO

El arreglo debe estar ordenado del dígito más significativo al menos significativo, y declarado en memoria de datos externa. Si se especifica un formato mayor que el máximo, solo se despliegan cinco digitos.

Función : DESCRIPCION

OBTEN H”

Obtiene un número hexadecimal de hasta cuatro dígitos.

numero = Obten Hnum;

Regresa un dato tipo WORD equivalente ai número (hexadecimal).

Permite corregir mediante la tecla <backspace>. Si la cifra es menor de cuatro dígitos, se termina con la tecla <Enter>, de

otra forma con el cuarto el número se dá por terminado. El valor máximo es OFFFFH.

FORMATO

- PAIUIIETRO

C0)LMARIO

Función: OBTEN DNüM DESCRIPCION

Obtiene un número decimal de hasta 5 dígitos, con un valor máximo de 65535. rnRnAT0

numero = Obten Dnum(apunt); - P*Ñ\)IpTrw

apunt es la direccion de inicio de un arreglo de’ cinco

Regresa un número, hexadecimal (WORD) equivalente a la cifra ’

, .

. . . . . localidades.

77

Page 87: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

. decimal dada, y los dígitos decimales en el arreglo I'

utilizado.

Permite corregir mediante la tecla <backspace>. Si la cifra es menor de cinco dígitos se termina con la tecla <Enter>, de otra forma con el quinto el nÚmer3 se dá por terminado. Los dígitos decimales quedan acomodados en compatibilidad con la rutina Sacadecimal.

COUEKTARIO

I/

CONVERSIONES. Función:, CONVAH

DESCRIPCION

Un dato en su forma ascii (30H-39H ó 41H-46H) lo convierte a su equivalente hexadecimal (O..OFH). FORMATO

numero = ConvAH (dato) PARAWFIR0

iJ

dato es uno tipo byte con formato ASCII. Regresa un dato tipo byte que representa un dígito hexadecimal.

COWIIARIO

Si el dato ascii no corresponde a un número hexadecimal, el valor devuelto es indeterminado.

Función : DESCRIPCION

Convierte un número hexadecimal a su equivalente código ASCII. FOWTO

caracter = ConvAH(num); PARAiiEiRO

I'

num es un dato tipo BYTE que representa un dígito

Regresa un byte que representa el ASCII de los cuatro bits, inferiores del parámetro.

hexadecimal.

7 8

Page 88: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

c o r n Función: - DEfCRlPClON

Convierte un número hexadecimal de hasta Cuatro dígitos a un número decimal. h

FORHATO

apunt-num = ConvHD(hex,ap-arreglo);

hex es de tipo WORD. ap-arreglo es un apuntador a un arreglo de cinco bytes 'I

PARAI(ETR0

declarado en memoria XDATA, donde regresa el nhero dec ima 1.

COMENTARIO ' 1

Los dígitos decimales quedan ordenados para tener compatibilidad con la rutina Saca-decimal. Si la dimensión del arreglo es meno; a cinco se traslapan bytes contíguos.

.Función: DESCRIPCION

CONVCN

Convierte una cadena de hasta cuatro caracteres a su equivalente número hexadecimal. FORMATO

numero = ConvCN(apunt)

apunt es un apuntador a la cadena de caracteres. Regresa un dato tipo WORD.

PARAWETRO

COMENTARIO

il

La cadena de caracteres debe estar declarada en memoria XDATA. Los caracteres deben corresponder a digitos hexadecimales.

INTERRUPCIONES I

Procedimiento: DESCRIPCION

MAS INT - Permite habilitar cualquiera de las cinco interrupciones del

microcontrolador 80C31.

CALL Mas int(int) ; F

FORHATO

-

79

Page 89: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

PARAMETRO

int es un byte que indica el número de interrupción a enmascarar:

0 - interrupción externa O 1 - interrupción del temporizador O 2 - interrupción externa i 3 - interrupción del temporizador 1 4 -.interrupción del puerto serie

DES INT Procedimiento: - DESCRIPCION

18

Permite deshabilitar cualquiera de las cinco interrupciones del microcontrolador 80C31. FORMTD

CALL Des - int(int) ;

int es un byte que indica el número de interrupción a

p m m m '!

desenmascarar: I1

O - interrupción externa O 1 - interrupción del temporizador O 2 - interrupción externa 1 3 - interrupción del temporizador 1 4 - interrupción del puerto serie

COENTARIO

Cuando se use el sistema operativo SOPCO-51, no debe deshabilitarse la interrupción 1.

Procedimiento: PRIOR INT DESCRIPCION

Permite asignar un nivel de prioridad a cada interrupción del microcontrolador 80C31. FORIIATO

CALL Prior - int(num - int,nivei);

num-int es un byte que indica el número de interrupción:

0 - interrupción externa 0 1 - interrupción del temporizador O 2 - interrupción externa 1 3 - interrupción del temporizador 1 4 - interrupción del puerto serie

PARAUEETRO

nivel es un bit que especifica el nivel de prioridad a

8 0

Page 90: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

asignar: a - baja prioridad 1 - alta prioridad

COICEMARIO

Una interrupción de baja prioridad puede ser suspendida por 5 otra de alto nivel. Una de alta prioridad no puede ser

‘interrumpida. Cuando se utilize SOPCO-51, no debe cambiarse la prioridad de la interrupción del temporizador O, consultar su manejador de interrupciones.

Procedimiento: MODO INTEXT DESCRIPCIOi!

permite asignar la forma de activación de las interrupciones- externas del microcontrolador 80C31. FORNATO

CALL Modo-intext(ipt,modo);

int es un byte que indica la interrupción externa: PARAIIETROS

O - interrupción externa 0 1 - interrupción externa 1

O - disparo por nivel 1 - disparo por transición (flanco)

modo es un bit que especifica el modo de activación:

COWENTARIO

Con disparo por transición la bandera que la genera es

limpiada por el microcontrolador al atenderla. Cuando se habilita por nivel, la fuente externa controla la bandera de interrupción.

PUERTO SERIE DEL 80C31,

Procedimiento: IN1 PSERIE DESCRIPCION

Inicializa el puerto.serie del microcontrolador. #

FORUATO 18

CALL Ini - pserie(modo,bitSM2,bitREN,bitTB8,bitRB8,bitTI,bitRI); PARAUETROS

modo es un byte que indica el modo de operación. bitSU2 habilita la comunicación multiprocesador. bitREN habilita la recepción.

81

Page 91: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

bitTB8 es el noveno bit que será transmitido en modo 2 Y 3. bitRB8 es el noveno bit que se recibe. bitTI bandera de interrupción de transmisión. bitRI bandera de interrupción de recepción.

TEMPORIZADORES DEL 80C31. 11

Procedimiento: IN1 TIMER

OECCRIPCION

Inicializa los temporizadores O y 1 del microcontrolador.

CALL Ini - timer(timer,gate,funcion,modo);

timer es un byte que indica el temporizador. gate es un bit que indica control por TFix y fuente externa

cuando tiene el valor de 1, con un valor de O el temporizador se controla iinicamente por TRx.

F O W T O

PAFlAWETROS

funcion es un bit que especifica: O - temporizador 1 - contador

modo es un byte que representa el modo de programación ( O . .3).

Procedimiento: CARGA TIMER DESCRIPCION

Carga con una cuenta dada uno de los temporizadores del microcontrolador. FORHATO

CALL Carga - timer(timer,cuenta);

timer es un byte que indica el temporizador. cuenta un dato tipo WORD que representa la cuenta a cargar.

PARAHEiROS

COKENTARIO

El temporizador no deberá estar funcionando.

Función: LEE TIMER - DESCRIPCION

Leé la cuenta del temporizador especificado.

82

Page 92: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

FORMATO . cuenta = Lee timer(timer); -

PAR*)(ETRO

timer es un byte que indica el temporizador. Regresa un valor tipo WORD.

COHENIARIO Se observa el modo en que está programado el temporizador,

para que en base a ésto se regrese la cuenta con los bits válidos. El temporizador no debe estar funcionando.

EXPANSOR DE PUERTOS NSC810. Procedimiento: IN1 PA810

OESCRIPCION

Inicializa el puerto A del dispositivo NSC810. FORMATO

i,

CALL Ini - pA8lO(modoIDDRS);

modo es un byte que indica el modo de operación ( 0 . . 3 ) .

DDRA es el registro de dirección de dato del puerto A.

Para mayor información consultar las referencias del NCC810.

PAR*)(EiRO it

COüENTARIO

procedimiento: IN1 TIM810 OESCRIPCIOW

Inicializa el temporizador O del NSC810. FOiüíATO

CALL Ini - tim810(Pol - sa1,Pol - ent,precisiÓn,preesc,modo,cuenta);

Poi-sal es un bit que indica la forma de salida válida. Polent es un bit que indica la forma de entrada válida. precisión es un bit que indica el número de bytes (1 Ó 2) de

Preesc es un byte que indica la preescala a usar:

PARA "i R O S

la cuenta.

O 0 (preescala = o): entre 1 O1 (preescala = 1): entre 2 11 (preescala = 3): entre 64

modo es un byte que indica: O00 Paro y reinicialización del temporizador

',

83

Page 93: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

O01 O10 o11 100 101 110 111

contador de eventos Temporizador de eventos Temporizador de eventos Un. disparo onda cuadrada Generador de pulsos Paro y reiniciaiización

(mantiene cuenta) (reinicializando)

del temporizador

cuenta es un dato tipo WORD que representa la cuenta a cargak .

COMMARIO, ,

P+a mayor información consultar las referencias del NSC810.

Funci¿jx LEE TIM810 DESCRIPCION

Le6 la cuenta actual del temporizador O del NSC810. P O W T O

cuenta = Lee - tim810;

Regresa un dato tipo WORD. PARAWFIR0

COMENTARIO

Si se especificó precisión sencilla, sólo se le6 el byte menos significativo de la cuenta.

Procedimiento: CORRE TIM810 DESCRIPCION

Hace funcionar el temporizador O del NsC810. mwTo

CALL Corre tim810;

Disparo de comando por escritura.

- WW(TARI0

procedimiento: DESCRIPCION

PARA TIM810

Para el temporizador cero del NSC810.

CALL Para tim810;

Disparo de comando por escritura.

FORHATO

- COMMARIO

I!

84

Page 94: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

V. DESARROLLO DE APLICACIONES. 'I

Esta sección lista los objetos y explica la funcionalidad de cada uno de los manejadores de que consta el sistema operativo. 11

Se presentan formalmente las primitivas y se describe la forma de desarrollar el código de aplicación que se ejecuta bajo SOPCO-51.

Procesos Librerías de soporte en tiempo de. ejecución Interfaz

Núcleo ,del Sist. Operativo,: Sistema digital

. .

FIG. 5.1 ESrrtIJCTW& KODULAñ DEL SISTEMA OPERATIVO.

Virtualmente, cada computadora utiliza un sistema operativo para manejar sus recursos y proporcionar soporte para los

programas de aplicación. El modelo de círculos concentricos para SOPCO-51 de la figura 5.1, presenta lo anterior como un número de capas de programas entre los dispositivos físicos y los procesos.

Como se observa el núcleo del sistema operativo está formado por varios manejadores que soportan las diferentes primitivas, y que se encuentra aislado de los procesos por medio de una interfaz. Entre ésta Última capa y los procesos, se pueden ubicar

85

Page 95: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

una serie de librerías de soporte, en las cuales se encuentren rutinas realizadas para cada arquitectura en particular donde se ejecute el sistema operativo.

V . l OBJETOS. El núcleo está constituido por objetos, los cuales están

representados por. estructura6 que maneja mediante operaciones indivisibles llamadas primitivas. Estas se ejecutan por medio de

llamadas al sistema operativo permitiendo que 106 procesos hagan uso de los recursos del sistema.

L o s tipos de objetos que se han implementado en SOPCO-51 son:

Procesos. Tiempo. Semáforos, Buzones. Memoria dinámica. Manejo de interrupciones. Manejo de errores y excepciones.

A continuación se describe cada uno.

u PROCESOS. Un sistema bajo COPCO-51 consiste de un número de

subprogramas independientes llamados procesos. A s í , un proceso es un conjunto de código secuencia1 identificado con cierto número y prioridad, y que se ejecuta concurrentemente con otros. Cada uno puede ser escrito como si tuviera el procesador para su uso exclusivo.

SOPCO-51 soporta un máximo de 16 procesos, cada uno asociado a un descriptor inicial en el cual se deposita la información necesaria para su ejecución. EI número del proceso es único.

Como los procesos están compitiendo por recursos, cada uno se declara con una prioridad estática, la cual no necesariamente es única, es decir, los procesos pueden tener cualquier prioridad, dependiendo de su función.

El núcleo ejecuta el proceso listo con la prioridad más alta ' hasta que éste se bloquea, retrasa, elimina, Ó se alista otro I

86

Page 96: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

proceso con mayor prioridad. Para procesos de igual Prioridad se tiene una planificación en rueda (Round-Robin).

~1 primer proceso, el número cero, Y el último declarados en la tabla de &scriptores iniciales tienen consideración especial

por el núcleo, ambos son activados al inicializarse el sistema, siendo el número cero el primero que ejecuta. Por 10 anterior, éste proceso debe declarse con prioridad O (máxima) Y el último con prioridad I (mínima), otros procesos pueden tener éstas prioridades considerando que se ejecutarán conforma a la planificación antes mencionada.

Otros atributos para los procesos, como su contexto y manejador de excepciones se explican más adelante.

Los procesos pueden estar en cualquiera de 10s siguientes estados:

o Listo. p Corriendo . o Bloqueado. o Retrasado. o Eliminado.

Para' el manejo de los procesos se dispone de las siguientes primitivas: - Activa: la función de ésta primitiva, incluye hacer algunas

inicializaciones para el nuevo proceso y alistarlo. Así también, observar que su área de datos externos no traslape con la de otro proceso ya activado. El nuevo proceso es independiente del proceso que lo activa. - Elimina: elimina un proceso del sistema. - Retrasa: retrasa el proceso por el tiempo especificado, al

término del cual pasa al estado de listo.

V. 1 - 2 CEMAFOROS. Los semáforos permiten sincronizar, establecer exclusión

mutua 'y compartir recursos entre procesos. COPCO-51 cuenta con dos tipos de semáforos: binerios y contadores. Los primeros tienen una estructura y función más simple por io que su tiempo

de ejecución es menor, manejando dos valores w e son 0 Y 1. L~~ segundos tienen un contador que maneja varias unidades, considerando de O a 7FFFH números positivos y de 8000H a O

87

Page 97: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

números negativos, de forma que se pueden contabilizar 6 bloquean y alistar un nhero determinado de

procesos, resultado de los eventos que ocurran. Se cuenta con un máximo de 16 Semáforos por tiPo.

Cada semáforo tiene asociado varias Colas de Procesos

bloqueados, de forma que cuando no se tienen las unidades requeridas, el proeeso es colocado en una de ellas. Los procesos , se alistan de acuerdo a su prioridad, en una cola los procesos se

alistan conforme al primero en llegar-primero en alistarse (prioridad por precedencia). El bloqueo es opcional, considerando que si un proceso se bloquea, la variable del semáforo no es alterada; en el otro caso, la variable de un semáforo contador puede tomar valores negativos.

semáforo contador se alistan los proceso de acuerdo al valor de '

su variable. Se tiene la opción de alistar a la vez a todos los procesos bloqueados en un semáforo, en cuyo caso el valor de su variable queda en cero.

Al inicializar un semáforo, se le puede asignar un primer valor. La señalización de un semáforo binario cuyo valor es verdadero no lo altera. En un semáforo contador, la cantidad de unidades que un proceso le entrega no debe hacer exceder la cuenta el límite positivo que es 7FFFH. Por el contrario cuando se piden unidades sin opción a bloqueo, el nhero de unidades pedidas no debe atrasar la cuenta por debajo del límite inferior que es 8 0 0 0 ~ .

Para 10s semáforos binarios se tienen las siguientes primitivas:

- Inic-bSern: inicializa un semáforo. - bsfgnal: señaliza el semáforo correspondiente. - bEsPera: Si el valor del semáforo no es 1, espera por una señal.

'

'

En un semáforo binario se alista un proceso a la vez, en un

Para 10s Semáforos contadores son las primitivas: - Inic-csern: inicializa un semáforo. - '=Signal: agrega unidades a un semáforo. - CEsPera: solicita unidades de un semáforo.

Para ambos tipos de semáforos se tiene la primitiva:

If

88

Page 98: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

- Vacio-sem: devuelve el estado del semáforo, dependiendo si

No existe alguna primitiva con la cual se elimine un existen o no procesos bloqueados en él.

semáforo.

BUZONES. Son áreas de memoria que permiten el intercambio de

información entre procesos. El sistema operativo tiene ''

implementado dos formas de comunicación: por copia Ó por '

referencia. En la comunicación por copia los mensajes son colocados

el buzóh y posteriormente al área del proceso receptor. En comunicación por referencia, el proceso envía Ó recibe sólo dirección donde inicia el mensaje.

En ambos casos, cada buzón tiene asociadas varias colas procesos bloqueados, una por prioridad. Debido a que comunicación es unidireccional (en un sentido), los procesos bloquean esperando enviar porque el buzón está lleno, Ó

bloquean esperando recibir porque el buzón está vacío, por

en la , la

de la se se lo

tanto sólo se espera una u otra operación. LOS procesos son alistados de acuerdo a su prioridad, en una cola los procesos son alistados conforme al primero en llegar-primero en alistarse (prioridad por precedencia). El bloqueo es opcional, si se solicita sin bloqueo cuando se requiere, se regresa un código de

El sistema operativo maneja un máximo de 16 buzones, al crearse un buzón se define su tamaño y el tipo de comunicación para el que se utilizará, de forma que al enviar Ó recibir I

también se especifica el tipo para observar consistencia. Se encuentran implementados en memoria externa de datos, por lo tanto los mensajes deben residir en ésta memoria con el siguiente, formato:

1,

I

excepción. li

LONGITUDíZ BYTES) MENSAJE 1 I

Los dos bytes de la longitud deben incluirse en ésta. Como en la parte superior de la memoria externa de la

tarjeta MAC-851 (figura 3.2) se traslapa memoria código y memoria

89

Page 99: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

de datos externos, es posible transferir mensajes que se encuentren declarados como constantes.

En una recepción se especifica la longitud máxima en bytes del área donde se recibirá, de forma que si el mensaje es mayor, se copia la parte equivalente y se coloca el código de terminación mensaje-truncado. Si la comunicación es por referencia, la var'iable donde se recibe la dirección del mensaje debe ser del tipo RDDRESS (Ó WORD) cuya longitud es de dos bytes, si se especifica un área mayor, la dirección es copiada en los dos primeros bytes.

Para el acceso a los buzones se tienen las siguientes primitivas : Creabuzon: crea un buzón e inicializa sus estructuras. Envia: envía up mensaje Ó su dirección a un buzón (Ó proceso). Recibe: recibe un mensaje, Ó su dirección. Vaciobuzon: devuelve el estado del buzón. Se distinguen cuatro, dependiendo de si hay procesos bloqueados y si está vacío o no.

No existe alguna primitiva con la cual se eliminen los buzones.

comunicación de mensajes: o Envia:

A continuación se describe en forma general el mecanismo de

Si hay procesos bloqueados esperando recibir entonces

Sino

Copia el mensaje (dirección) al de mayor prioridad y lo alista;

Si hay suficiente espacio en el buzón entonces

Sino Copia el mensaje al buzón;

Bloquea al proceso en espara de espacio en el buzón;

o Recibe: Si el buzón no está vacío entonces Copia el primer mensaje (dirección) al proceso destinatario; Si hay procesos bloqueados esperando enviar entonces Copia todos los mensajes posibles al buzón y alista los procesos correspondientes;

Sino Bloquea al proceso en espera de un mensaje;

V.1.4 MEMORIA. Ocasionalmente un proceso necesita memoria adicional, esto

90

Page 100: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

es, memoria que no le ha sido asignada. Para 10 anterior,

dinámica, donde misma memoria puede ser usada por varios procesos en diferentes tiempos.

El espacio manejado dinámicamente se encuentra ubicado en la primera mitad de direcciones de memoria externa de datos (figura

3.2), inmediatamente arriba del área de datos de los procesos, lo que lo hace variable. Este espacio se divide en bloques cuyo tamaiio se puede configurar al declarar los procesos. Existe un limite inferior de bytes de memoria libre para que el sistema operativo maneje dinámicamente.

Para’ obtener y liberar memoria se cuenta con las siguientes primitivas: - Obten-memoria: obtiene una cantidad de memoria para el proceso - Libera-memorias regresa un área de memoria previamente asignada

SOPCO-51 proporciona primitivas para el manejo de memoria I

que la solicita.

por la primitiva anterior.

v.1.5 MANEJO DE INTERRUPCIONES, como un sistema de tiempo real, SOPCO-51 reacciona

inmediatamente a eventos externos. Se tienen cinco fuentes de interrupción, una de las cuales (interrupción 1) está reservada para uso del núcleo, y las cuatro restantes están disponibles para las aplicaciones. El sistema operativo permite que las interrupciones disponibles sean atendidas por una rutina propia, por el manejador del núcleo, Ó por ambos.

Cuando una interrupción es inicializada para que sea atendida por el manejador del sistema operativo, un proceso puede esperarla, es decir, se puede bloquear esperando que ocurra la interrupción, la cual al producirse, el manejador alista al proceso, que se ejecutará conforme a su prioridad. Sólo un proceso, por interrupción, puede bloquearse por la espera de ésta.

El manejador del núcleo es una rutina codificada en ensamblador que al atender a una interrupción realiza las siguientes operaciones: 1) Ejecuta, si se instaló, una rutina opcional.

91

Page 101: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

2 ) si hay un proceso esperando la interrupción, io alista. Si no, incrementa un contador interno para la interrupción. Para el manejo de interrupciones se tienen I las siguientes

primitivas: - Inicializa-int3 inicializa una interrupción para ser atendida por el manejador del núcleo. - Instala-int: instala una rutina de atención para que atienda a la interrupción, Ó la ejecute el manejador del núcleo si la interrupción ya ha sido inicializada. - Espera-int: si el contador correspondiente es cero, bloquea al proceso por la espera de una interrupción. De lo contrario, se decrementa una unidad y el proceso prosigue. Si la interrupción no es atendida por el manejador del núcleo, se produce un error.

Una interr6pciÓn es atendida por el manejador si se inicializa con la primitiva Inicializa-int. Si no se ha inicializado y se utiliza la primitiva Instala-int para la interrupción en cuestión, ésta será atendida directamente por la rutina que se instala. Si la interrupción ya ha sido inicializada por la primera primitiva, se puede utilizar la primitiva Instala-int para. instalar una rutina que se ejecutará, por medio del manejador, cuando ocurra la interrupción.

0 - interrupción externa O 1 - > reservada < 2 - interrupción externa 1 3 - interrupción del temporizador 1 4 - interrupción del puerto serie

Las interrupciones se numeran de la siguiente forma:

Cada una de las interrupciones puede tener uno de dos niveles de prioridad, considerando que una de alta prioridad puede suspender la ejecución de otra de baja prioridad, y que interrupciones del mismo nivel no se pueden suspender. Cuando se ejecuta el sistema operativo las interrupciones se encuentra deshabilitadas, y se habilitan cuando se ejecuta código del usuario como es: procesos, manejador de excepciones y rutinas para interrupciones, durante los cuales se puede atender la ocurrencia de interrupciones. Cualquier interrupción suspendida, se reanuda al término de la interrupción de alta prioridad.

92

Page 102: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

U M A N E J o Q E E R R ORES X FXCEPCIONEG, Cuando se llama a una primitiva, algunas veces los

resultados no son como se esperan. Para lo anterior, todas las primitivas tienen como Último parhetro una variable denominada código de terminación, donde se pasa el apuntador a una variable WORD, por medio de la cual se regresa el resultado de la operación.

Se puede codificar y declarar un manejador de excepciones propio de un proceso Ó utilizar el manejador de errores y excepciones del núcleo. El propósito es manejar los errores Ó

excepciones que ocurran, antes de regresar de una llamada al sistema.

El manejador de errores y excepciones del núcleo guarda el estado del sistema y pasa el control al depurador MSB-51 (ver depuración del sistema V.3.6). Se tiene la opción de regresar del depurador al sistema para lo cual el manejador restablece el estado del mismo.

Se distinguen dos situaciones: Errores y Excepciones. Cuando ocurre un error el núcleo llama directamente a su manejador, cuando se trata de una excepción el control se pasa al manejador señalado en el descriptor inicial para el proceso.

Para que un proceso Ó su manejador propio llame directamente al manejador de errores del núcleo se utiliza la primitiva: - Excepcion: coloca un código de terminakión y llama al manejador

,

del sistema operativo.

V.2 PRIMITIVAS.

En esta sección se presentan formalmente las primitivas de SOPCO-51, agrupándose conforme al manejador al que pertenecen. El formato de llamada que se presenta es para la interfaz de PI4M-51.

Primitiva: ACTIVA , DESCRIPCIOW

Activa un proceso para que se ejecute en el sistema. El proceso debe estar declarado en su descriptor inicial, así como

93

Page 103: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

su código y constantes estar presente en el lugar de memoria correspondiente. El proceso es ubicado en el estado de listo. FOORWTO:

C W Activa(numgroc,ap-cod - term); numgroc Un BYTE que indica el número del proceso a

activarse. ap-cod-term Una dirección ADDRESS apuntando a una variable

WORD donde se recibe el código de terminación.

Código de terminación Valor WORD que indica el éxito, error Ó excepción en el llamado a la primitiva.

ENIFLADAS

SUIDAS

OBSUIVACIOWES

- El proceso no debe encontrarse ya activo. - El número del Proceso debe estar dentro del rango permitido. - si se activa un proceso de mayor prioridad, el nuevo proceso se ejecuta inmediátamente al término de la primitiva. Por lo tanto, los objetos que utilice el proceso activado deben haber sido creados Ó inicializados.

- El área de datos externos del nuevo proceso no deben traslapar datos de otro proceso activo.

primitiva ; ELIMINA DESCRIPCIOW

Elimina del sistema al proceso que invoca ésta primitiva, el proceso poseedor, de forma que ya no se ejecuta. El contexto del proceso se guarda y éste es ubicado en estado de eliminado. Su descriptor inicial y código no son afectados de forma que se puede volver a activar. FOORWTO

CALL Elimina(ap-cod-term);

ap-cod-term U I T W A S

Una dirección ADDRESS apuntando a una variable WORD donde se recibe el código de terminación.

Código de terminación Valor WORD que indica el éxito, error Ó excepción en el llamado a la primitiva.

SALIDAS

Page 104: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

, OBSXFIVACIOIIES

- Como se observa, un proceso se elimina a sí mismo. - No se liberan los recursos del proceso, lo cual se debe realizar por medio de las primitivas correspondientes.

- El proceso que se elimina no debe ser el considerado proceso de menor prioridad por el núcleo, el cual es el último declarado en la gabla de descriptores iniciales.

Primitiva: RETRASA DECCRIPCION

Retrasa el proceso que la llama por un tiempo determinado al término del cual es alistado. El rango de retraso es de O a 65535 milisegundos. Si el tiempo especificado es cero el proceso permanece en estado de listo ejecutándose, si los hay, los siguientes procesbs listos de la misma prioridad, si no los hay la primitiva no tiene efecto. mmm

CALL Retrasa(tiempo,ap - cod - term); tiempo Valor WORD que especifica el tiempo de retraso. ap-cod-term Una dirección ADDRESS apuntando a una variable

WORD donde se recibe el código de terminación.

Código de terminación Valor WORD que indica el éxito, error Ó excepción en el llamado a la primitiva.

EWIWDAS

SALID&

OBSERVACIONES

- El proceso solo puede retrasarse a sí mismo. - La precidión depende del número de datos internos y tamaño de stack de los procesos, que resulta en el tiempo de cambio de contexto.

- El proceso que se retrasa no debe ser el considerado proceso de menor prioridad por el núcleo, el cual es el Último declarado en la tabla de descriptores iniciales.

primitiva : INIC bSEM OESCRIPCION

Inicializa un semáforo binario, dándole un nombre y valor

Page 105: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

inicial. mRlum

CALL Inic - bSem(num - sem,valor-inicial,ap-nom-sem,ap-cod-term);

num-sem BYTE que indica el nhero del semáforo. El

valor-inicial ' BIT que especifica el valor inidialmente

ap-nom-sem ADDRESS que apunta a una

ap-cod-term

EKIRIDAS

rango es de O a 15.

asignado al semáforo.

caracteres que representan el nombre dado

variable WORD donde se recibe el Una dirección mDRESS

'

error Ó excepción en el

SALIDAS

Código de terminación Valor WORD que

- Aunque se asocia un nombre, al referencia mediante su número.

- El semáforo no debió haber sido

DESERVACIDNES

Primitiva: DESCRIPCIDN

bSIGNAL

Manda una señal al semáforo referido. Si existen rocesos

especifica. Si no existe algún proceso bloqueado el semdforo es colocado con valor 1.

bloqueados se alista al de mayor prioridad, Ó a todos si, 4 así se

I FDRluTD

CALL bSignal(num - sem,forma - alistado,ap - cod-term); num-sem BYTE que indica el número del semáf ro. El

forma-alistado BIT que especifica el número de roceso

1 - alista todos los procesos blo 1 eados O - alista un proceso

Una dirección ADDRESS apuntando !,a una variable WORD donde se recibe el código de termi ación.

ENTRADAS

rango es de O a 15.

alistados:

ap-cod-term

96

Page 106: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

SALIDAS

Código de terminación Valor WORD que indica el éxito, error Ó excepción en el llamado a la primitiva.

OffiERVACIOtJES

- El semáforo ya debió haber sido inicializado. primitiva: bESPERA DESCRIPCION

Verifica el semáforo, si tiene valor de 1 el proceso continúa, de lo contrario si tiene valor de O el proceso se bloquea si así lo estipula, si no, recibe un código de terminación. MRIUTO

CALL bEspera(num - sem,bloqueo,ap-cod-term); ENTMDAS

num-sem BYTE que indica el número del semáforo. El rango

bloqueo BIT que establece si el proceso requiere bloqueo. es de O a 15.

O - no bloqueo, 1 - con bloqueo.

ap-cod-t erm Una dirección ADDRESS apuntando a una variable WORD donde se recibe el código de terminación.

Código de terminación Valor WORD que indica el éxito, error Ó excepción en el llamado a la primitiva.

SALIDAS

OSSERVACIONES

- El semáforo ya debió haber sido inicializado. - Si el proceso se bloquea, no debe ser el considerado proceso de menor prioridad por el núcleo, el cual es el Último declarado en la tabla de descriptores iniciales.

primitiva: INIC cSEM DESCRIPCION

Inicializa un semáforo contador, dándole un nombre y valor inicial. FORIUTO

CALL Inic - cCem(num - sem,valor - inicia1,ap - nom-sem,ap-cod-term);

97

Page 107: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

ENTñADAS

num-sem BYTE que indica el número del semáforo. El rango es de O a 15.

valor-inicial WORD conteniendo la cuenta inicial de unidades. De O a 7FFFH se consideran positivos, de 8000H a O se consideran negativos.

ap-nom-sem ADDRESS que apunta a una cadena de 6 caracteres que representan el nombre dado al semáforo.

ap-cod-term Una dirección ADDRESS apuntando a una variable WORD donde se recibe el código de terminación.

SALIDAS

Código de t&minaciÓn Valor WORD que indica el éxito, error 6 excepción en el llamado a la primitiva.

- Aunque se asocia un nombre, al semáforo se debe hacer

- El semáforo no debió haber sido inicializado anteriormente.

OBCWIVACIONES

referencia mediante su número.

Primitiva: cS IGNAL DESCRIPCXON

Manda un número especificado de unidades al semáforo indicado. Si el contador toma un valor positivo y hay procesos bloqueados en el semáforo, el núcleo alista a los que se pueda compensar, conforme a su prioridad. Si el número de unidades mandadas es cero, se alistan todos los procesos bloqueados en el semáforo y el contador se coloca en cero. Si se alista un proceso de mayor prioridad se asigna el procesador.

FORHATO

CALL cSignal(num - sem,cuenta,ap - cod-term);

num-sem BYTE que indica el número del semáforo. El

cuente WORD que indica el número de unidades a

EMkADAS

rango es de O a 15.

J

98

Page 108: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

enviarse. La cantidad máxima es de 7FFFH. ap-cod-term Una dirección ADDRESS apuntando a una

variable WORD donde se recibe el código de terminación.

Código de terminación Valor WORD que indica el éxito, error Ó excepción en el llamado a la primitiva.

SALIDAS

, OBSERVACIONES

- El semáforo ya debió haber sido inicializado. - El contador no puede excede el límite positivo (7FFFH).

primitiva: DESCñIPCION

El proceso toma las unidades que requiere ó espera por ellas en el semáforo. Si la cuenta del semáforo es positiva y cubre el requerimiento, se restan las unidades y el proceso se sigue ejecutando. De lo contrario el proceso se bloquea si así lo especifica. Si no se cubre el requerimiento y el proceso no desea bloqueo, éste permanece listo, se restan las unidades del contador y se coloca un código de terminación. En éste último caso la cuenta toma valores negativos. -TO

CAU cEspera(num-sem,unidades,bloqueo,ap - cod-term); num-sem BYTE que indica el número del semáforo. El rango

es de .Q a 15. unidades WORD que indica el número de unidades requeridas. bloqueo BIT que establece si el proceso requiere bloqueo.

ENTUDAS

O - no bloqueo, 1 - con bloqueo.

ap-cod-term Una dirección ADDRESS apuntando a una variable WORD donde se recibe el código de terminación.

Código de terminación Valor WORD que indica el éxito, error Ó excepción en el llamado a la primitiva.

SALIDAS

OBSERVACIONES

- El semáforo ya debió haber sido inicializado. - Si no se desea bloqueo, el contador no debe retroceder por

99

Page 109: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

debajo del límite inferior negativo 8000H. - Si el proceso se bloquea, no debe ser el considerado proceso de menor prioridad por el núcleo, el cual es el Último declarado en la tabla de descriptores iniciales.

Erimi t i v . VACIO S M DESCRI PCION i

Regresa el estado de un semáforo binario ó contador con respecto a procesos bloqueados. Si existe al menos un proceso bloqueado regresa el valor de 1 (verdadero), de lo contrario devuelve el valor de O (falso). mwm

variable-tipo - bit = Vacio-sem(num - sem,tipo,ap-cod - term); num-sem BYTE que indica el número del semáforo. El

t i p o

- PITRUIAS

rango es de O a 15. BIT que distingue el tipo de semáforo:

O - semáforo binario 1 - semáforo contador

ap-cod-term Una dirección ADDRESS apuntando a una variable WORD donde se recibe el código de terminación.

Estado del semáforo Valor booleano que representa el

Código de terminación Valor WORD que indica el éxito, error Ó excepción en el llamado a la primitiva.

SALIDAS

estado del semáforo.

OBSERVACIONES

- El semáforo ya debió haber sido inicializado. Primiti va : CREA BUZOW DESCRIPCION

Crea un buzón en el área de memoria manejada dinámicamente.

CAU Creabuzon(num-buzon,tam,tipo,ap - nom - buz,ap-cod-term); num-buzon BY2'E que indica el nibero del buzón. El rango es

FoRluTo

-BAS

de O a 15.

100

Page 110: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

tam WORD que especifica el tamaño del buzón en bytes. tipo BIT que distingue la forma de comunicación para

I la que se utilizará el buzón, que puede ser: O - pir copia 1 - por referencia

ap-nom-buz ADDRESS que apunta a una cadena de 6 carapzeres que representan el nombre dado al buzón.

ap-cod-term Una dirección dDDRESS apuntando a una variable WORD donde se recibe el código de terminación.

SALIDAS

Código de terminación Valor WORD que indica el éxito, error Ó excepción en el llamado a la primitiva.

O B S E R V A C I ~ - El buzón no debió haber sido creado anteriormente. - Aunque se asocia un nombre, al buzón se debe hacer referencia mediante su nibero. .

- La creación del buzón depende de la cantidad de memoria libre, no existe bloqueo.

primitiva; ENVIA - DEXRIPCIOll

Manda'un mensaje Ó su dirección al buzón. Si hay procesos bloqueados en el buzón, se alista el de mayor prioridad y se copia el mensaje Ó su dirección a eu área Ó variable correspondiente. Si no hay algÚn proceso bloqueado el mensaje se guarda en el buzón. Si en el buzón no hay suficiente espacio para el mensaje Ó su dirección, el proceso se bloquea si así lo requiere, si no, el proceso permanece listo y se coloca el código de terminación de transacción ilegal.

I mmmo CALL Envia(num-buzon,ap - mje,tipo-buzon,bloqueo,ap-cod-term);

num-buzon BYTE que indica el nibero del buzón. El

ap-mje ADDRESS que representa la dirección donde

tip-buzon BIT que distingue el tipo de comunicación

EnnunAS

rango es de O a 15.

inicia el mensaje.

101

Page 111: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

que se desea realizar, que puede ser: O - por copia 1 - por referencia O - no bloqueo,

bloqueo BIT que establece si el proceso requiere bloqueo.

, 1 - con bloqueo. ap-cod-term Una dirección mDRESS apuntando a una

variable dORD donde se recibe el código de terminación.

Código de terminación Valor WORD que indica el éxito, error Ó excepción en el llamado a la primitiva.

SLIDAS

OBSERY*CIOI(ES

- El buzón debió haber sido creado. - El tipo que se indica debe ser compatible con el especificado - El formato del mensaje debe ser el establecido. - La dirección del mensaje no debe estar en área no permitida. Si se especifica una constante, hay que tener cuidado de asegurarse que el valor sea correcto.

en el buzón al pomento de crearse.

primitiva i RECIBE DESCRIPCIOW

El proceso solicita un mensaje Ó la dirección del mismo a un buzón.

Si hay varios mensajes Ó direcciones el proceso recibe el primero de ellos, y se sigue ejecutando. A lo anterior, si existen procesos bloqueados, se alistan por prioridad a los que alcanzen a copiar al buzón e1 mensaje que desean enviar. En particular, si se tomó una dirección se alista sólo el proceso bloqueado con la mayor prioridad y se copia al buzón la dirección del mensaje correspondiente.

Si no hay mensajes en el buzón, el proceso se bloquea, si así lo indica, hasta que se presente alguno. Si no desea bloquearse permanece listo y recibe el código de terminación de transacción ilegal. Fomm

CALL Recibe(num - buzon,long-rec,ap-recibe,tipo-buzon,bloqueo, ap-cod-term) ;

102 -

Page 112: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

nmuoAs num-buzon BYTE que indica el número del buzón. El

long-rec VORD que indica la longitud en bytes del espacio donde se recibe el nensaje. Si es por copia debe incluir los dos bytes que enumeran la longitud del mensaje,rsi es por referencia la longitud debe ser dos (una variable A D D W S S ) .

ap-recibe ADDRESS que indica la dirscción de inicio del espacio de memoria donde se recibe el mensaje, Ó la dirección de la variable ADDñESS donde se recibe la dirección del mensaje.

t ipo-buzon BIT que distingue el tipo de conunicación

rango es de O a 15.

que se desea realizar, que puede ser: O - por copia 1 - por referencia O - no bloqueo, 1 - con bloqueo.

ap-cod-term Una dirección ADDRESS apuntando a una variable WORD donde se recibe el código de terminación.

Uensaje ó su dirección El mensaje copiado en el espacio adecuado Ó la dirección en la variable proporcionada.

Código de terminación Valor WORD que indica el éxito, error Ó excepción en el llamado a la primitiva.

bloqueo BIT que establece si el proceso requiere bloqueo.

SALIDAS

OEERVACIONU - El buzón debió haber sido creado. - El tipo que se indica debe ser compatible con el especificado en el buzón al momento de crearse.

- Para comunicación por copia, si el espacio de recepción es menor al mensaje, se copia la parte del mensaje que ajuste y se coloca el código de terminación de Mensaje-truncado.

- Para comunicación por referencia, se indica error si se declara un byte para recibir la dirección del mensaje. si se define un espacio mayor a dos bytes, se copia la dirección del mensaje en los dos primeros. - La dirección de recepción no debe estar en área no permitida.

.

103

Page 113: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

Si se especifica una constante, hay que tener cuidado de asegurarse que el valor sea correcto.

Pr imltiva i VACIO BUZON . .

DESCRIPCIOW

Regresa el estado de un buzón. Para lo anterior se consideran dos coias: si hay Ó no procesos bloqueados, y si está Ó no vacío el buzón. F O W M

variablefipobit = Vacio-buzon(num-buzon,ap-cod-term);

num-buzon BYTE que indica el número del buzón. El

ap-cod-term Una dirección AüDRESS apuntando a una variable WORD donde se recibe el código de terminación.

ENTRADAS

rango es de O a 15.

SALIDAS

Estado del buzón Un valor BYTE que representa el estado del buzón distinguiéndose los siguientes:

O - no procesos bloqueados y buzón vacío, 1 - procesos bloqueados y buzón vacío, 2 - no procesos bloqueados y buzón no vacío, 3 - proceso6 bloqueados y buzón no vacío.

Código de terminación Valor WORD que indica el éxito, error Ó excepción en el llamado a la primitiva.

OBSERVACiOWES

- El buzón debió haber sido creado. primitivai OBTEN MEMORIA DESCRIPCION

Se solicita memoria. Si hay suficiente memoria disponible, se asigna al proceso y continúa ejecutándose. Si no hay suficiente memoria el proceso, si así lo dispone, se bloquea hasta que se pueda conformar su requerimiento, de lo contrario continúa listo y recibe un código de terminación. El área se ubica en memoria externa de datos. F O W T O

CALL Obten - memoria(num - bytes,dir-variable,bloqueo,ap-cod-term);

104

Page 114: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

EWIRMAS

num-bytes WORD que especifica el espacio, en bytes, de

dir-variable ADDRESS que indica la dirección de una variable tipo ADDRESS, donde se recibe la dirección de inicio del área asignada. Esta variable debe estar declarada en memoria externa de datos.

BIT que establece si el proceso requiere bloqueo.

memoria requeridas.

bloqueo O - no bloqueo, 1 - con bloqueo.

ap-cod-t erm Una dirección ADDRESS apuntando a una variable WORD donde se recibe el código de terminación.

Dirección de inicio La dirección (ADDRESS) de inicio del área asignada en la variable proporcionada.

código de terminación' Valor WORD que' indica el éxito, error Ó excepción en el llamado a la primitiva.

WIDAS

OBSERVACIONES

- Debe contarse con manejo de memoria dinámica, - El espacio requerido no debe ser mayor al espacio de memoria total que se maneja dinámicamente.

Primitiva: LIBERA MEMORIA DESCRIPCION

Se retorna al sistema un área de memoria anteriormente asignada por el manejador del núcleo. Si existen procesos bloqueados esperando memoria, se alistan por prioridad a todos a los que se pueda conceder su demanda, asignándoles el espacio de memoria conveniente. FORXATO

CALL Libera - memoria(dir-memoria,ap-cod-term);

dirmemoria ADDRESS que señala la dirección de inicio del ENTRADAS

área de memoria que se regresa al sistema. ap-cod-term Una dirección ADDRESS apuntando a una

variable WORD donde se recibe el código de terminación.

105

Page 115: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

SALIDAS

código de terminación Valor WORD que indica el éxito, error Ó excepción en el llamado a la primitiva.

DBSERVACIONES

- Debe contarse con manejo de memoria dinámica. - La dirección de regreso debe estar dentro del espacio de memoria que se baneja dinámicamente, y corresponder con la dirección de inicio que el núcleo determinó, de lo contrario se asigna un código de terminación. En el último caso, si la dirección no corresponde, el núcleo puede ó no indicar error, pero en cualquiera de los casos la acción es incorrecta.

I N I C I A L I W INT . . itiva: DESCRIPCION

Inicializa el manejo de interrupciones de forma que la interrupción referida sea atendida por el manejador del sistema operativo. mmum

CALL Inicializa-int(num-int,ap - cod-term); num-int

WTTÑU)AS

BYTE que indica la interrupción a inicializar, las cuales se numeran de la siguiente forma:

O - interrupción externa 0 1 - > reservada < 2 - interrupción externa 1 3 - interrupción del temporizador 1 4 - interrupción del puerto serie

ap-cod-term Una dirección ADDRESS apuntando a una variable WORD donde se recibe el código de terminación.

Código de terminación Valor WORD que indica el éxito, error Ó excepción en el llamado a la primitiva.

SALIDAS

OKSERVACIONES

- El contador de la interrupción es inicializado a cero. - Se inicializa la rutina opcional como no instalada. - El sistema de aplicación es el responsable de habilitar la - Si se intenta inicializar la interrupción reservada, el núcleo interrupción correspondiente.

106

Page 116: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

asigna un código de error.

primitivaL INSTALA IN" DUCRIPClON

Instala una rutina. Si la interrupción ya ita sido inicializada con el manejador del sistema operativo, éste activa la rutina, de lo contrario es instalada para atender directamente a la interrupción. F O W T O

CALL Instala - int(num - int,dir-tutina,ap-cod - term); numli nt BYTE que indica la interrupción referida, las

uITRM)*s

cuales se numeran de la siguiente forma: O - interrupción externa O 1 - > reservada < 2 -'interrupción externa 1 3 - interrupción del temporizador 1 4 - interrupción del puerto serie

dir-rutina ADDRESS que indica la dirección de la rutina a instalar.

ap-cod-term Una dirección ADDRESS apuntando a una variable WORD donde se recibe el código de terminación.

Código de terminación Valor WORD que indica el éxito, error Ó excepción en el llamado a la primitiva.

- Sólo deben instalarse rutinas de atención a interrupciones

- Si se encuentra instalada otra rutina, ésta se substituye. - El sistema de aplicación es el responsable de habilitar la

- Si la interrupción referida es la que se encuentra reservada,

SALIDAS

OBSCñVACIONES

mediante ésta primitiva.

interrupción correspondiente.

el núcleo asigna un código de error.

Primitiva: ESPERA INT DESCRIPCION

El proceso espera por la ocurrencia de la interrupción especificada. Se utiliza Únicamente cuando la interrupción es

107

Page 117: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

atendida por el manejador de interrupciones del sistema operativo, ya que es éste quien alista el proceso cuando ocurre la interrupción. .Si al momento de llamar ésta primitiva el contador de la interrupción es mayor a cero, se decrementa una unidad y el proceso continúa ejecutándose, de lo contrario el proceso se bloquea. m w m

-

CALL Espera - int(num - int,ap-cod-term); num-i nt

UiTñAüAS

BYTE que indica la interrupción a inicializar, las cuales se numeran de la siguiente forma:

0 - interrupción externa 0 1 - > reservada < 2 - interrupción externa 1 3 - interrupción del temporizador 1 4 7 interrupción del puerto serie

ap-cod-term Una dirección ADDRESS apuntando a una variable WORD donde se recibe el código de terminación.

Código de terminación Valor WORD que indica el éxito, error Ó excepción en el llamado a la primitiva.

SALIDAS

OBSERVACIOWES

- La interrupción debió haber sido inicializada anteriormente. - Si la interrupción no es atendida por el manejador del núcleo, - Si ya existe otro proceso bloqueado esperando por la

- Si se indica la interrupción reservada, el núcleo asigna un

se produce un error.

interrupción referida, se produce un error.

código de error.

Primitiva: EXCEPCION DESCRIPCION

Realiza una salida del sistema con un código de terminación, por medio del manejador de errores y excepciones del núcleo. Al llamar a ésta primitiva se suspende la ejecución del sistema operativo. El estado del sistema es guardado de forma que se puede regresar al mismo.

108

Page 118: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

FORNATO

CALL Excepcion(c0d - errorlap-cod - term); cod-term

ENTRADAS

WORD donde se especifica e- código --! error por el que se desea salir. El código puede ser alguno manejado por el núcleo, Ó uno que el proceso convenga.

ap-cod-term Una dirección ADDRESS apuntando a una variable WORD donde se recibe el código de terminación.

Código de terminación Valor WORD que indica el éxito, error Ó excepción en el llanado a la primitiva.

,

SALIDAS

OBSERVACIOnEs

- Esta primitiva llama al manejador de excepciones del núcleo. - El depurador .Ó rutina de despliegue debe estar instalado en la tarjeta.

- Consultar el manual del depurador MSB-51.

V . 3 DESCRIPCION DE UN SISTEMA DE APLICACION. Esta sección contiene información sobre las características

que debe presentar cada una de las partes de los programas de aplicación, así como las etapas de desarrollo.

v.3.1 CODIFICACION PROCESOS, Un proceso se codifica como un procedimiento público

independiente sin parámetros, el cual debe utilizar el banco de registros cero. En PL/M-51 tiene la siguiente forma:

IIODVL0: Do; NOWBRE: PROCwlRE PUBLIC; MD NOMBRE; END )(oOüLO;

El nombre no debe ser el utilizado por alguna primitiva, procedimiento de librería del sistema operativo Ó palabra reservada.

En el caso de codificación en lenguaje ensamblador cada proceso es representado por un segmento código que puede ser localizable Ó absoluto, con una etiqueta.pÚblica para indicar la dirección' de inicio. En ias llamadas al sistema' se deben observar

. .

. . , .

. . .. . t

109

Page 119: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

las convenciones de interfaz entre PL/M-51 y ensamblador-51. El primer proceso (número cero) y el último (el de menor

prioridad) son activados por el núcleo. El proceso cero es el primer que se ejecuta y que puede empezar a activar a los demás e inicializar y crear objetos que se utilizen.

Se tiene un archivo llamado Primit.dc1 que contiene las declaraciones de 'todas las primitivas y que se puede incluir en los módulo de los procesos. Las llamadas a las primitivas del sistema es como a cualquier procedimiento con sus respectivos parámetros.

Es posible que varios procesos compartan un procedimiento ó una rutina, debe considerarse que los lenguajes de programación PL/M-51 y ASM-51 no son reentrantes, y que ai proceso que esté utilizando el procedimiento compartido le sea apropiada la UCP

ejecutándose otro que puede utilizar el mismo procedimiento Ó

rutina cambiando sus parámetros y variables. Para evitar lo anterior, los parámetros y variables del procedimiento compartido deben ubicarse dentro del área de datos internos de cada proceso que la use de forma que en el cambio de contexto los parámetros sean guardados y posteriormente restaurados al volverse a ejecutar. Esto es común cuando se utilizan rutinas de inicialización de un periférico Ó procedimientos de despliegue que se encuentran en la librería Rutinas.dc1. El código debe declararse como parte de un proceso, pero no como parte de todos los procesos que lo utilicen porque se indicaría traslape de memoria.

Es recomendable que los datos en memoria interna estén cokpactados , y el stack del proceso inicie inmediatamente después de éstos, para dejar el mayor espacio posible al stack y el tiempo de cambio de contexto sea lo mínimo posible. El primer dato del stack del proceso inicia en la dirección que se declara. Si se declaran variables internas globales a varios procesos, el área que ocupan no debe incluírse en la declación de los procesos de forma que no se alteren al cambio de contexto, así como cuidar que ningún proceso utilice ésta área pública. Los parámetros de los procedimientos de los procesos se pueden, en lo posible, traslapar en el tiempo para reducir el área de memoria interna

110

Page 120: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

I-

L

del proceso. Como el sistema operativo utiliza el stack del proceso

poseedor, al entrar a ejecutarse el núcleo (llamada a una primitiva, cuanto de tiempo Ó atención a una interrupción) debe haber el suficiente espacio para las necesidades del mismo. Los procesos deben utilizar el banco de registros cero, el cual se guarda en el cambib de contexto.

Una técnica de programación recomendada es que todos los buzones que se necesiten sean creados antes de que los procesos utilizan el manejador de memoria dinámica, da forma que los buzones se ubiquen compactamente al inicio de la memoria libre (no se pueden eliminar los buzones).

V.3.2 RUTINA DE ATENCION A ~ U P C I O N . Cuando se codifique una rutina de atención a alguna

interrupción se recomienda sea en ensamblador. Una rutina de atención codificada en PL/M-51 no debe tener el atributo INTERRUPT. En cualquier caso deben instalarse con la primitiva Instala-in&.

La rutina de atención de una interrupción de alta prioridad debe, en su inicio, guardar los valores de los registros que utilice y a su término restaurarlos, ya que podría interrumpir la atención a una interrupción de baja prioridad. Lo anterior es válido para una rutina que atiende directamente la interrupción Ó

como rutina opcional, en el Último caso el manejador del núcleo guarda y restaura el valor de los registros A, B y DPTR cuando se interrumpe una interrupción de baja prioridad, por lo que no es necesario que la rutina opcional asegure los valores de éstos tres registros. Las rutinas de atención a las interrupciones deben utilizar el banco de registros número cero.

La prioridad de la interrupción del temporizador O debe ser baja, para evitar que suspenda alguna interrupción y cambie el valor de los registros. Por lo anterior, en general las rutinas de atención deben realizar el menor número de operaciones considerando la posibilidad de utilizar un proceso con alta prioridad que realice el trabajo de mayor tiempo. Es responsabilidad del código de aplicación habilitar la

111

Page 121: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

interrupción correspondiente, en la librería Rutinas.lib se cuenta con rutinas para enmascarar y desenmascarar interrupciones así como para asignarle uno de los dos niveles de prioridad que considera el microcontrolador. No se debe realizar ninguna operación sobre el bit de habilitación y deshabilitación general de interrupciones.

Cuando se atlende una interrupción los datos y stack del proceso que se ejecutaba no se guardan, así que debe cuidarse que los datos de la rutina de atención no traslape el de los procesos. Si se desea asignar un stack propio, debe restaurarse el original cuando se termine de atender la interrupción.

v.3.3 C-& QJj MAN WAD08 EXCEPCI ONES Un manejador se codifica como un procedimiento público

independiente sin parámetros, como un proceso, pero con el fin de manejar las excepciones que puedan ocurrir. Para lo anterior se cuenta con un archivo llamado Codterm.dc1 donde se encuentran declarados los códigos de error y excepción que argumenta el núcleo, se pueden considerar otros códigos.

El fin de hacer un manejador de excepciones es para: o Etiquetar una excepción con un código propio, o Retrasar el proceso, o Ignorar el error.

En el último caso se regresa ai proceso con un código de terminación, en cuyo caso, si se aplica, los demás datos que regresa el núcleo son indeterminados, en especial debe tenerse cuidado con la dirección que regresa la primitiva Obtenmemoria porque se pueden traslapar datos.

Por medio de la primitiva Excepción se puede llamar al manejador de errores y excepciones del sistema operativo, para salir del sistema, para lo cual debe estar instalado el depurador Ó en su defecto alguna rutina que despliegue el error.

Debe recordarse que si ocurre un error, el núcleo pasa el control directamente a su propio manejador, ignorando algún otro.

V.3.4 COMPILACION LIGADO/LOCALIZACI~ !E& CQESSQ DE APLICA CION. Cuando se han codificado todos los procesos y procedimientos

112

.

Page 122: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

se procede a compilarlos y ligadojlocalización conforme al ciclo que se muestra en la figura 5.2 .

Si es el caso, se compilan por separado los programas con diferente lenguaje con el comando respectivo:

A S K 1 nombrs.AS1 icontroleml PU51 nmbre.PS1 icontrole~l

Cuando se tienen los archivos objeto se ligan y localizan con el comando: ¡U51 .ódulol..bJ,iádulo2.obJ, . .. módulo , illbrsríael Icwndo.1

n En la parte de librerías se colocan todas las necesarias

como pueden ser: - PLMS1.lib si se tiene código en PLMfí1, - Interf.1ib si se utilizan llamadas al sistema operativo, - Rutinas.lib si se utiliza alguna rutina de ésta librería, - Otras que se hayan creado.

hexadecimal

FIG 5.2 CICLO DE DESARROLLO DEL CODIM DE A~LICACION.

En la parte de comandos se colocan los necesarios para localizar el código, constantes y datos en áreas adecuadas.

..-- V 3 5 TABLA DE DESCRIPTORES INICIALES. L o s procesos son declarados en la tabla de descriptores

113

Page 123: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

iniciales que se encuentra en el archivo DI.pS1. Alguna información, como se muestra en la figura 5.2, es proporcionada en el archivo producido con la extensión .M51 al ligar/localizar la aplicación: num.- número de cada proceso, que debe ser Único, en numeración

contínua correspondiendo a la posición dentro de la tabla. El primero y’Último proceso se declaran con número cero, al activar el núcleo el último proceso le asigna su número correcto en el descriptor dinámico.

prior.- prioridad del proceso, la cual no necesariamente es

-cod.- dirección inicial del proceso. d-fcod.7 dirección final del código. Si se tiene, debe

considerarse su manejador de excepciones propio. Así mismo, si se tienen rutinas de atención a interrupciones considerarlas junto con al* proceso que puede ser el proceso de atención correspondiente. El código

única.

compartido debe ser asignado a un solo proceso. d-idatext.- dirección inicial de datos en memoria externa

d-fdatext. - dirección final de datos en memoria externa

d-datint.- dirección inicial de los datos en memoria interna

proceso.

proceso.

d-stack. - proceso. Se incluyen las variables tipo bit y pai-ámetros a los procedimientos.

del

del

del los

dirección de inicio del stack. El stack puede ubicarse en cualquier parte, pero se recomienda sea inmediatamente después de la Última variable para minimizar el tiempo de cambio de contexto. Para lo anterior se considera:

9-stack = d i ~ ~ r i n a i ~ d s t ~ ~ ~ i n t e r n o s + I

d-mex.- direcclhri donde inicia el manejador de excepciones. Si se desea pttTizar el del sistema operativo se coloca un cero.

archivo.- cadeqa de ocho caracteres que definen un nombre al

Se puede traslapar áreas de datos externos de procesos proqe~o.

siempre y cuqndq no se encuentren activos a la vez.

114

I

Page 124: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

-

Aún cuando el proceso tiene un nombre, la forma de identificarlo es por su nibero.

El sistema operativo realiza algunas verificaciones en base a ésta información, es responsabilidad del usuario colocar la información correcta y actualizarla cuando ha habido cambios. Fallas en el sistema no pueden ser detectadas si la información no es la adecuada.

El sistema se inicia, según el caso, desde un comando del ambiente de soporte MSB-51 Ó directamente al encender la tarjeta. En el último caso el código de aplicación y tabla de descriptores iniciales ya deben estar cargados.

i

v.3.6 PEPURACION DEL SISTEMA. Existe el depurador HSB-51, desarrollado independientemente,

pero disefiado especialmente para utilizarse con COPCO-51. Al ejecutarse el sistema se pueden detectar errores Ó excepciones para los cuales SOPCO-51 pasa el control al depurador deteniéndose el sistema.

Es una herramienta que facilita el cargar, correr y depurar programas mediante una interfaz serie a una terminal. Algunas de las cosas que despliega el depurador al tomar el control son: el código de terminación, la primitiva en la que se detectó el error, y el proceso que se ejecutaba. Tiene comandos para: desplegar la tabla de descriptores iniciales y dinámicos, mostrar las diferentes colas de procesos, observar el estado de los semáforos y buzones, se' puede colocar puntos de paro en el sistema ó ejecutarlo paso a paso, examinar y modificar el contenido de una parte de memoria, regresar al sistema en el punto en que se quedó.

El núcleo tiene algunas características que facilitan la depuración del sistema, como son: - Guarda el estado de los registros del proceso al momento de entrar al núcleo.

- Tiene una variable booleana llamada control para indicar el modo de ejecución cuando ocurrió el error Ó excepción. Esto es importante considerando que el núcleo proceso poseedor, que al sobrepasarse

utiliza el' stack del *

se; pierde. el control,

. .

Page 125: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

para lo cual se reinicializan todos los dispositivos de la tarjeta y el depurador presenta quien se ejecutaba cuando se desbordó el stack y así llevar a cabo ajustes. Los modos de ejecución corresponden a: modo privilegiado (se ejecuta alguna parte del sistema operativo) Ó modo usuario (se ejecuta código del usuario). Al inicializarse el sistema, el espacio donde se guarda el stack de cada proceso es llenado con el valor OC7H, haciendo posible observar cuánto de éste espacio es usado. El núcleo no verifica por el sobreflujo del stack debido al trabajo que esto impone ai sistema. Indica’ la ocurrencia de interrupciones no inicializadas.

Aunque el sistema operativo realiza una serie de verificaciones, algunas se basan en la información que se proporciona por medio de la tabla de descriptores iniciales. Por otra parte, la tarjeta MkC-851 no cuenta con algún dispositivo de protección de memoria, por lo que es dificil observar cuándo un proceso invade áreas ajenas.

Si el sistema ha sido depurado, y el ambiente de soporte MSB-51 no se instala, puede en su lugar colocarse una rutina de despliegue para cualquier eventualidad, así como configurar el sistema operativo para que se coloque código de aplicación en el área de memoria libre.

V.3.7 REO UERIMIENTOS. SOPCO-51 se puede configurar para ser utilizado en cualquier

sistema basado en algún microcontrolador de la familia 8051 de INTEL, que cumplan con los siguientes requerimientos de memoria: - 16 kbytes de memoria código para todas las funciones del

- 5 kbytes de memoria RAM para las variables y estructuras del - La memoria código y de datos necesaria para la aplicación. El sistema operativo está realizado modularmente para que se incluyan solo las funciones necesarias.

Se pueden realizar librerías que manejen dispositivos para cada arquitectura en particular.

núcleo,

núcleo,

116

Page 126: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

Vi. PRUEBAS Y EVALUACiON DEL SISTEMA OPERATIVO.

Un sistema operativo es una pieza compleja de programas que realizan una variedad de funciones, e8 importante que éstas actividades sean realizadas correctamente, lo cual es uno de los objetivos principales del disefiador. La evaluación toma lugar antes de constru4r el sistema para predecir realización y capacidades para las cuales es diseñado.

Por rendimiento se expresa la manera ó la eficiencia con que un sistema cumple sus metas. A s í , el rendimiento es una cantidad relativa más que absoluta, algunas medidas de rendimiento como la facilidad de uso son difíciles de cuantificar.

Medidas relativas al tiempo conciernen al intervalo que toma hacer un trabajo, los tiempos proporcionan los medios para, realizar comparaciones rápidas, pero para evaluar lo más significativo de un sistema complejo deben utilizarse otras técnicas.

La tácnica de puntos de referencia (Ó Benchmarks) tienen el atractivo de tratar con elementos reales, aon Útiles tanto en la evaluación del sistema digital como del código. Un punto de referencia es un programa real completo que se ejecuta con datos reales, no se toman tiempos manuales. La probabilidad de error es mínima en comparación con otras técnicas ya que el computador en realidad ejecuta el punto de referencia, y el tiempo puede ser medido por el propio computador. Está claro que los programas de referencia deben implicar una cuidadosa selección de una serie de puntos de detalle típicos de las características del sistema. En ambientes complejos como multiprogramación, multiprocesamiento, comunicaciones de datos y sistemas de tiempo real, los puntos de referencia pueden ser particularmente valiosos por ejecutarse en la máquina real bajo circunstancias reales, los efectos del código pueden experimentarse directamente en vez de ser estimados. Esta técnica también es Útil en la comparación de un sistema antes y después de haber realizado ciertos cambios, no es útil, sin embargo, en la predicción de los efectos en cambios propuestos.

Page 127: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

VI.l OBJETIVO Y ALCANCES DE LAS PRUEBAS. El objetivo de las pruebas realizadas es la verificación de

la funcionalidad del núcleo del sistema operativo, se encuentran enfocadas principalmente a las primitivas y cambio de contexto.

VI.2 PLANES DE PRUEBA. El sistema oberativo se ha probado conforme se ha ido

desarrollando, verificando cada módulo 6 procedimiento en forma independiente. Una vez que se han integrado las diferentes partes, las pruebas consideran las diversas funciones del núcleo conforme a lo planteado en el diseño. Dado la cantidad de pruebas que se iealizaron al núcleo, las que se mencionan sólo son algunas de las más significativas.

En cada comprobación se trata de resaltar la mayor cantidad de puntos importantes de las primitivas Ó módulos, bajo diversas circunstancias. Cada caso de prueba incluye un conjunto de salidas y entradas. Las salidas consisten en despliegues a pantalla que realizan los procedimientos de prueba, las entradas se consideran por medio de los descriptores iniciales donde se deposita la información de los procesos que intervienen, pero no existen entradas del exterior como sería un periférico. Para cada prueba se incluye un proceso considerado de menor prioridad llamado Pmenor.

VI.3 REQUERIMIENTOS. se utilizó el siguiente equipo:

Tarjeta MAC-051, Computadora personal, Terminal televideo modelo 950.

Compilador para PL/M-51, Compilador para ASM-51, Ligador/relocalizador MCS-51, Convertidor objeto-hexadecimal OH-51. Ambiente de soporte MSB-51.

Las herramientas utilizadas son:

118

Page 128: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

. - .

VI. 4 PRUEBAS.

PRUEBA1 Cambio de contexto y primitivas: Acti~a y Elimina.

Resumen El procesos cero activa dos Ó más proceso y se elimina. LOS

procesos creados tienen la misma prioridad, y escriben su número. L o s elementos que intervienen son: - Manejador del procesador, - Manejo de procesos, - Manejador de la interrupción del temporizador cero, - Descriptor dinámico, - Colas de procesos listos. - Descriptor inicial, -

Procesos

PO, PI, ~ 2 , ... P, Y menor Se probó desde dos procesos hasta cuatro ejecutándose

Casos de Drueba .

concurrentemente. Salidas 01111111111111111111111111111111112222222222222222222222222222222 22233333333333333333333333333333333334444444444444444444444444444 444444111111111111111111111111111111111122222 . . . .

PRUEsA2 Primitiva Retrasa y planificación de prioridades.

Resumen El proceso cero activa tres procesos y se elimina. Los tres

procesos forman un reloj digital, el proceso 1 actualiza las variables de los minutos por lo que se retrasa por periodos' de 60 segundos, y el proceso 2 actualiza los segundos retrasándose por un segundo, el proceso 3 se encarga de desplegar los dígitos cada segundo con un defasamiento de medio segundo con respecto al proceso 2 para evitar interferencia. Los elementos que intervienen son: - Manejo de tiempo, - Manejador del procesador, - Manejador de la interrupción del temporizador cero, - Descriptor inicial, - Descriptor dinámico, - Colas de procesos listos, - Cola de procesos retrasados.

119

Page 129: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

procesos PO, pl, ~ 2 , p3, Y menor.

Salidas 0o:oo 00:01 .. 01:oo 01:01 .. 59:59 0o:oo 0O:Ol ....

eRUEBAd Semáforos bindrios.

Resumen ~i proceso O activa tres procesos e inicializa un semáforo

binario con el valor de O y se elimina. Los procesos 1 y 2 se bloquean en el semáforo y el proceso 3, con menor priorkdad, manda una señal alistando los procesos. Cada proceso escribe su número, cuestionando para cada caso el estado del semáforo. Los elementos que intervienen son: - Manejador de semáforos binarios, - Manejador del procesador, - Descriptor inicial, - Descriptor dinámico, - Colas de procesos listos, - Colas de semáforos binarios.

Procesos

PO, pl, ~ 2 , ~ 3 , Y pmenor. Casos de pruebq

a) Se alista un proceso a la vez. b) Se alistan los dos procesos

procesos). Salidas a) 0123132313231323 . . . . b) 0123123123123123 . . . .

a la vez (alistar todos 16s

PRUEBA 4 Semáforos contadores.

El proce'so O activa tres procesos e inicializa un semáforo contador con el valor de O y se elimina. El proceso 1 se bloquea por una unidad y el 2 por dos unidades, y el proceso 3, con menor prioridad, manda una unidad alistando los proceso. Cada proceso escribe su número, cuestionando para cada caso el estado del semáforo. Los elementos que intervienen son:

Resumen

120

Page 130: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

- Hanejador de semáforos contadores. - Manejador del procesador, - Descriptor inicial, - Descriptor dinámico, - Colas de procesos listos, - Colas de semáforos contadores. procesos

Casos de prue bq a) Se alista un proceso a la vez. b) Se alistan los dos proceeos a la vez (alistar todos los

Salidas

PO, PI, ~ 2 , ~ 3 , pmenor.

procesos).

a) 012313323133231332 . . . . b) 0123123123123123123 . . . . - PRUEBAS

Buzones del sistema operativo. Resumen

El proceso O activa dos proceso, crea un buzón, y se elimina. En varios arreglos se tiene una carta, donde cada arreglo representa un renglón y un mensaje, el proceso 1 le transmite cada renglón al proceso 2 por medio del buzón para que lo despliegue. En cada caso se cuestiona el estado del buzón. L o s elementos que intervienen son: - Hanejador de buzones, - Inicialización del manejador de memoria dinámica, - Asignador de memoria dinámica, - Manejador del procesador, - Descriptor inicial, - Descriptor dinámico, - Colas de procesos listos, - Colas de buzones.

procesos PO, pl, p2, pmenor. Casos & prueba a) Comunicación por copia,

- Procesos productor y consumidor de igual prioridad, - Proceso productor con mayor prioridad, - Proceso comcumidor con mayor prioridad.

121

Page 131: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

b) Comunicación por referencia. - Procesos productor y consumidor de igual prioridad, - Proceso productor con mayor prioridad, - Proceso comsumidor con mayor prioridad.

SaLidas Prueba a los buzones de SOPCO-51. Se realiza una comunicación por copia (referencia). Cada renglón es un mensaje que se transmite.

PRUEaAB Manejo de memoria dinámica y primitiva Excepción.

~1 proceso O activa tres procesos, iniciaiiza dos semáforos binarios, y se elimina. El proceso 1 obtiene memoria y el proceso 2 la libera, cada uno se bloquea en un semáforo. El proceso 3

obtiene la siguiente información del teclado:

Resumen

- Salir? (S/N): - ObtenILibera (O/l): - Niimero de bytes: - Indice: El primer punto, si se desea, se puede salir al depurador por medio de la primitiva Excepción y observar el estado del sistema, posteriormente se puede continuar en el estado en que se quedó dando como inicio la dirección de regreso. La segunda opción se usa para dar la función que se desea realizar y así mandar una señal al semáforo correspondiente. La tercera cuestión se pide cuando la opción es obtener memoria, y la Última corresponde al índice para dos arreglos que se despliegan en cada ciclo, uno guarda los apuntadores a la memorsa obtenida y el otro la cantidad de bytes para cada caso, con lo cual se puede llevar una marca de cada etapa. Los elementos que intervienen son: - Manejador de Memoria dinámica, - Inicialización del manejador de memoria dinámica, - Asignador de memoria dinámica, - Manejo de errores y excepciones,

122

Page 132: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

- Manejador del procesador, - Semáforos binar ios , - Descriptor inicial, - Descriptor dinámico, - Colas de procesos listos, - Colas de procesos bloqueados por memoria, - Colas de semáforos binarios. Procesos

PO, pl, ~ 2 , ~ 3 , Y pmenor. casos de prueba

de memoria dinámica. Salidas

Se realizaron todas las prueba8 para cada caso en el manejo

O 6B00 30 1 6BlE 250

9 O000 o

- Salir? (S/N): N - Obten/Libera ( O / l ) i O - Número de bytes: 500 - Indice: 2

PRUEsAZ Manejo de interrupciones.

Resumeq El proceso O activa otros dos procesos, enmascara las

interrupciones externas y les asigna un nivel de prioridad. inicializa la interrupción 0 con la primitiva iniciaiizajnt, y le instala la rutina O . Instala la rutina 2 para la interrupción externa 1, y se elimina. El proceso 1 se bloquea en la interrupción O y el proceso 2, con menor prioridad, coloca las banderas de interrupción correspondientes. Los elementos que intervienen son: - Manejador de interrupciones. - Manejador del procesador, - Semáforos binarios, - Descriptor inicial, - Descriptor dinámico, - Colas de procesos listos, - Colas de semáforos binarios.

PO. PI, p2, y pmenor. Procesos

123 .

Page 133: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

putinas

Casos de Drueba a) Interrupciones secuenciales, b) Interrupción externa 1 cuando se atiende la interrupción

Rutina - int - O y Rutina - int - 1

externa O. - Interrupciohes con la misma prioridad, - Interrupción externa 1 con mayor prioridad, - Interrupción externa O con mayor prioridad.

En algunos casos se ejecutó paso a paso para seguir la secuencia de atención de las interrrupciones. Salidas a) Proceso 2

Proceso 1

Proceso 2

Rutina int. O

Rutina int. 2

Rutina int. O . . . . b) Proceso 2

O .. L

Proceso 1 Proceso 2

o . . . . En el Último caso, cuando la interrupción externa 1 tiene

mayor prioridad se suspende la ejecución de la interrupción O y se reanuda al término de la interrupción 1. Con la interrupción O con la misma prioridad Ó mayor prioridad, la interrupción externa 1 no se atiende hasta que se termina de atender la interrupción O, pero antes de que se ejecute alguna instrucción del proceso 1.

VARIAS PRUEBAS Se realizaron procesos para probar valores límites y cada

caso de error Ó excepción. SALIDAS

Para cada caso se observó que la ejecución sea normal, es decir, que cuando sea la ocasión de un error se despliegue, y cuando no lo sea la ejecución sea normal.

124

Page 134: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

Se ha desarrollado el núcleo de un sistema operativo que cuenta con todas las herramientas necesarias para controlar, sincronizar y comunicar procesos, con una arquitectura orientada a aplicaciones en tiempo real.

La naturaleza del microprocesador y la tarjeta MAC-851

contiene características especiales de las cuales depende lo robusto del sistema. Se puede concluír numerando las ventajas y limitaciones:

Principales ventajas del sistema (se han comentado durante las diferentes secciones): o

o o

. o

o

o

O

o

o

o

o

o

o

Procesamiento de eventos de mayor prioridad, Transferencia.de mensajes por copia ó por referencia, Manejo de interrupciones con dos niveles de prioridad, Dos tipos de semáforos, Manejo de memoria dinámica configurable para la aplicación, OptimizaciÓn de tiempos de ejecución en diferentes puntos claves del sistema operativo, Interfaz que aisla la aplicación del núcleo, Paso de parámetros para las primitivas y procedimientos del núcleo transparente a las aplicaciones. Características que ayudan a la depuración del sistema, Sistema estructurado para fácil mantenimiento, exhibiendo una estructura lógicamente coherente.

No cuenta con protección de memoria: aunque el núcleo realiza algunas verificaciones concernientes a la memoria, éstas se basan en la información que el usuario proporciona en el descriptor inicial. E l núcleo utiliza el stack del proceso que se ejecuta: el usuario debe considerar un espacio para que el stack no se desborde. Solo se utiliza un banco de registros: los niveles de paso de parámetros de las primitivas y procedimientos del núcleo se tuvieron que colocar abajo del área direccionable por bit y byte, lo que ocupó los bancos de registros restantes. De otra

Limitaciones del sistema:

125

Page 135: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

forma no hubiera quedado área direccionable por bit para los procesos, Ó se hubiera tenido que particionar el espacio para datos de cada proceso. Los lenguajes de programación PL/U-51 y ASM-51 no son reentrantes: lo que ha impuesto en algunas partes una estructura particular, como son-las de las primitivas y la organización debla memoria interna. Localización de los diferentes segmentos de l a aplicación: el usuario debe localizar sus segmentos conforme a las áreas adecuadas.

El manejo de los dispositivos de la tarjeta MAC-851 se realiza'por medio de rutinas en una librería aparte del núcleo, de ésta forma el sistema operativo se puede configurar para otras arquitecturas que se basen en algún microcontrolador de la familia 8051, a& como facilitar la portabilidad de aplicaciones ya elaboradas.

En base a las herramientas con que cuenta se pueden implementar exclusión mutua, controlar accesos a dispositivos, etc. ES posible agregar nuevas características y funciones ai sistema como son: o Otras interfaces para soportar aplicaciones en otros lenguajes

o Multiprocesamiento, estableciendo exclusión mutua en el acceso

No se contempló la eliminación de sem6ioros Ó buzones debido a que se manejan procesos que no cambian durante su tiempo de vida.

Un sistema operativo de red es una colección de programas y protocolos asociados que permiten a varios computadores autónomos, que se encuentran interconectados por una red, ser usados juntos de una manera conveniente, dar acceso a varios recursos, hacer que el uso de recursos remotos parezca idéntico al uso de recursos locales, etc. Con el presente trabajo se realizan las bases para futuras aplicaciones en el área de comunicaciones y control con microcontroladores, quedando por realizar aplicaciones más elaboradas que quedan fuera. de los objetivos~ de éste trabajo.

como es C-51.

a estructuras de datos compartidas mediante candados.

126

Page 136: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

Dentro de las tendencias se encuentra el enlace de la tarjeta MAC-851 al PC-BUS, con lo que se integrarán las computadoras personales a las redes como cualquier otro nodo de control, con la capacidad de almacenamiento, procesamiento e interfaz con el humano con que cuentan dichas computadoras.

! I '

127

Page 137: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

A W S I C E A. ARCHIVOS QllE FORMAN EL SISTEMA OPERATIVO.

El núcleo está diseñado en forma modular, tal que se pueden incluír sólo las funciones necesarias. A continuación se iistan los archivos que integran el sistema operativo, así como los procedimientos qua incluye cada uno: -

Este es un archivo que contiene todas las estructuras y variables globales (públicas) del sistema operativo.

LI'I1ERA.DCL

operativo. Algunas de ellas configuran al sistema. LITSOAPL.DCG

Contiene todas las constantes globales del sistema

Contiene las constantes globaies que invoiucran al sistema operativo y aplicación. Algunas constantes configuran el sistema. QECLASM. DCX(

Contiene la declaración de constantes para los procedimientos escritos en ensamblador. - DI.P51

por el usuario para declarar sus procesos. I m E u k U U

primitivas, y además:

Contiene la declaración de los códigos de terminación.

Contiene el descriptor inicial de los procesos. E8 accesado

Contiene lo que forma el vector de direcciones de las

- MODULO: Inicia-SO NWCIOII: Código con el que se inicia el sistema operativo

(similar a ?PIVORS). También se inicializa la

- OECL*R\CIOW: Del bit de control que indica el estado en variable que contiene la dirección del módulo.

ejecución (para el sistema operativo).

Contiene la contraparte del vector de direcciones de las - primitivas. Se encuentra compilado en la librería Interf.1ib.

128

Page 138: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

- DECLUUCIOII: Del bit de control que indica el estado en ejecución (mismo que el anterior pero para utilidad de la interface). -

Inicialización del sistema. Contiene los procedimientos: - P R O Q I ) I W I ~ : Inicializa-SO

- P R O C P ) I W I ~ : Procs-en-DI NWCIOW: Inicialih el sistema.

mcíon: Determina cuántos procesos están declarados en el descriptor inicial. -

procesos. Contiene los procedimientos para el manejo de las colas de

PROcEDInxum Inserta NWCIOII: Inserta un proceso en alguna cola de procesos. PROcEDInim: Saca NWCIOW: Saca un proceso de alguna cola de procesos.

NWCION: Alista un proceso bloqueado. P F I O C R I I W I ~ : Bloquea, NWCIOH Bloquea el proceso poseedor. P R O ~ E D I W I ~ : Inserta-ret NWCIOW: Inserta un proceso en la cola de retrasados. pR0Cp)IniMo: llayorqrioridad FUNCIOW: Determina la cola no vacía de mayor prioridad. P R ~ C ~ ) I W I ~ : Coloca-cod-term NWCIOY: Coloca las variables para identificar el error y

P R O C P I I W ~ ~ : Alista

llama al manejador correspondiente. MANREGDA . A5

Contiene los procedimientos referentes al manejo de los registros y datos en memoria interna de los procesos para el cambio de contexto. - P R O C ~ I W I ~ : Asigna-CPU

NWCIOW: Este procedimiento es llamado por alguna primitiva debido a que se alisto o bloqueó un proceso, para que se asigne el procesador. - P R O C O D I W I ~ : Primeraejecucion

,' .,, ...

129

Page 139: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

MCIOII: Contiene las instrucciones necesarias para que un proceso tome el procesador por primera vez.

- PROCEDIIIIPI~O: Guarda-reg MCIOW Guarda en memoria externa los registros de un

proceso, correspondientes al microcontrolador. - P R O C E O I N I ~ carga-reg MICIOII: Carga los registros del microcontrolador, para el

proceso ai que se le asigna el procesador. - P R O C E D I N I ~ Guarda-DS

NNCIOW: Guarda en memoria externa las variables en memoria interna y stack del proceso que se le retira la UCP.

- mxmmxEKi0: Carga-DS NNCIOW; Carga los datos y stack en memoria interna del

proceso al que se le asigna el procesador. - PROCEDINIDITO: m&-da-regsgen NNCIOW; Guarda en memoria externa los registros que son

generales al sistema, correspondientes al microcontrolador. - P R O C E D I N I ~ Carga-regsgen

NNCIOR: Carga los registros del microcontrolador que son generales al sistema. - PROCEDIWIPIIO: Ink-areas-contexto

FVWCIOW: Inicializa las áreas donde se guardan datos internos y stack de los procesos. -

Contiene los procedimientos para el manejo del procesador.

NNCIOII: Llama a los procedimientos que intervienen en la - P R O C E D I I I I ~ : Nanefo-CPU

asignación del procesador, y ajusta variables. - PROCEDIIIIENTU: Asignador-CPU - PROCP)IIIIPITO: Carga-timer-O

FVWCIOR: Asigna el procesador ai proceso de mayor prioridad.

FWCIOII: Carga la cuenta del temporizador O. MANPROCS.P51

Contiene las primitivas para el manejo de procesos. - P R o c m ~ w ~ m Activa

NNCIOW: Primitiva 'Actival.

130

Page 140: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

- RIOINXMIO: Elimina NWCIOW: Primitiva 'Elimina'. -

Contiene los procedimientos para el manejo de tiempo. - P W C F D X N I ~ : Retrasa NWCION: Primitiva 'Retrasa'.

- PROCEDINIEXKI: Proo-retraso M(CIOI(: Actualiza el tiempo de retraso y alista a los

procesos que se les terminó su tiempo de retraso.

MICION: Agrega el tiempo utilizado en el cambio de contexto.

Contiene los procedimientos para el manejo de semáforos

- P R O C ~ I I I X ~ ~ I ~ : Agrega-tiempo

\

binarios: - P W C F D ~ N I ~ ~ I ~ : Inic-bsem

- mocmInIm: bSignal

- PROCEDINXEXKI: bEspera

NWCION: Primitiva 'Ink - bsem' . NWCION: Primitiva 'bsignal' . NWCION: Primitiva 'bEspera' .

W C S E K . Psi Contiene los procedimientos

contadores: - P W ~ I N I E I W J : Ini c-cSem

FUNCXOW: Primitiva 'Inic - &em*.

para el I manejo de semáforos

- PWCEDXNIMO: cSignal

- PROCEDXNIEXKI: cEspeta NWCIOW: Primitiva 'csignai' . NWCION: Primitiva 'cEspera' . NWCION: Primitiva 'Vacio-sem' .

- PROCE~IN~MIO: Yacio-sem - Contiene los procedimientos para el manejo de buzones.

- PROCEDINIMIO: Crea-buzon

- . P R O C ~ I H X ~ ~ I U : Envia NWCIOW: Primitiva 'Crea - buzon'.

TUWCIOW: Primitiva 'Envia'.

131

Page 141: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

- ~ ~ I I H I P I ~ O ; Recibe

- PROCP)IMIOI~O: Vacio-buzon FUIJCIOII: Primitiva 'Recibe'.

"CION Ptimitiva 'Vacio - buzon'. EW€WLEU

los buzones. Contiene los procedimientos para el manejo de mensajes en

s

- P R O C ~ I H I ~ : Copia-a-buzon

- PRMZDIHIPC~O: Copia-de-buzon FUIJCIO~: copia un mensaje a un buzón.

~ C I O N : copia un mensaje de un buzón al área de un proceso.

Contiene un procedimiento para la copia de datos, usado por COPI-

los procedimientos del archivo anterior. - P R O C E D I H X ~ : Copia

mcxon: Copia un área de memoria a otra, dentro de memoria externa de datos.

faImmau t

excepción del asignador de memoria. Contiene los procedimientos para el manejo de memoria a

- PROCEDIHIER~O: Inic-mane j m e m ~ C I O H : Inicializa las variables y estructuras para el manejo

de memoria dinámica.

FUHCIOII: Primitiva 'Libera - mem'. - ~ m x n x u m : Libera-memoria

€lsmmwm

dinámica: Contiene el procedimiento para la asignación de memoria

- P - I ~ : Obten-memoria mcIon: Primitiva Obten - memoria'.

lmumxku Incluye los procedimientos para el manejo de interrupciones. - PROC~IHIER~>: Uane j-interrupcion

~ C I O W : Manejador de interrupciones del sistema operativo. - P R O C ~ I H I ~ : Act i vaqroced-indi r

~ C I O N : Activa indirectamente una rutina. - P R O C ~ I H I ~ : Indice

I

132

Page 142: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

m c ~ o n : Calcula el índice de un arreglo.

~ C I O W : Atiende la interrupción 1.

~ C I O N : Coloca una instrucción de salto de forma que la interrupción 1 sea atendida por el manejador

- P ~ C ~ I N I E K M : Uane j-i nterrupci on-1

- PROCEDINIEKM: coiocamane j-in&-1 '

corresgondiente. - mmnn: Vector de interrupciones del 80C31. - mouü>: Vector de procedimientos INT-x para el manejo

individual de cada interrupción disponible al usuario. - Contiene las primitivas para el manejo de interrupciones.

- PROCCOINIEKM: Inicializaint

- mmmInrEwM: Inaala-int

- P R O C E D I N I ~ Espera-in&

- P R O C E D I N I ~ : Interrpoinic

NNCIOW: Primitiva 'Inicializa - int' . FUNCION: Primitiva 'Instala - int' . FUNCIOW: Primitiva 'Espera - int'.

FUNCION: Coloca el código de terminación correspondiente. WEXCEP.P51

Contiene los procedimientos para el manejo de errores y excepciones. - ~ R o c m I n I m Uane j-errexcep

FUWCION: Manejador de errores y excepciones del sistema operativo. - P-INIEKM: Regreso

FWCION: Utilizado como punto de regreso de un error ó excepción.

NWCXON: Primitiva #Excepc$6nt. - P R O C ~ I N I E W ~ : Excepción,

COMPCO . BAT Para compilar todos los archivos fuente del sistema operativo.

Para compilar todos los archivos fuente de la interfaz. COMINTER. BA T

13 3

Page 143: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

80.SEG Este archivo contiene la localización de los segmentos que

forman el sistema operativo. Se incluye en el comando de ligado/localieado de la siguiente forma:

RL51 <SO.SEO aim>

I

Los siguientes archivos contiene cada uno la interfaz de la primitiva respectiva: iActiva.aí1, iElimina.a51, iRetraea.a51, iInibeem.a51, ibCignal, ibEspera.ai1, iInicsem.a51, icSignal.a51, icEspera.a51, iVacsem.a51, iCreabuz.a51, iEnvia.a51, iRecibe.a51, iVacbuz.a51, iObtmem.a51, iLibmem.a51, iExcep.a51, iInicint.a51, iInstint.a51, iEspint: a51.

se tienen +las siguientes librerías que se ligan/localizan con la aplicación de acuerdo a los requerimientos:

xlmRLLm

primitivas. RUTINAS. LI B

Contiene los archivos compilados de las interfaces a' las

Contiene los archivos compilados de entrada/salida,

Se cuenta con los siguienfes archivos de declaraciones que se incluyen en la aplicación de acuerdo a los requerimientos:

2Bxmxaa Declaración de las primitivas del sistema operativo.

Declaración de las rutinas de entrada/salida. BJPPINAS. DCL

134

Page 144: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

APMDICE B. CODIGOS DE ERROR Y EXCEPCION.

Cuando el sistema operativo encuentra un error Ó excepción genera un código de terminación. En éste apéndice se preeenta la lista de códigos de terminación que maneja el sistema operativo, éstos son desplegidos por el depurador MSB-51 con el siguiente formato:

SOPCO-51

SALIDA POR ERROR O EXCEPCION

Proceso corriendo: <número> Primitiva: <Identificador> <primer parámetro> Código de terminación: X X X X Dirección de regreso: YYW

(Xonde: -\primer parámetro es el correspondiente para - s&¡alada (con las excepciones mencionadas más adelante) , - X x X X es el código de terminación listado en ésta sección, y - dirección de regreso indica el punto al cual se puede regresar

-r

\ i

la primitiva

al sistema kn el estado en que se quedó. . Los códigos tienen el siguiente formato:

O m M - IIIROR 1XKxH - MCEPCZOH

Una excepción es una condición que puede Ó no parar el sistema, un error termina la ejecución del sistema realizando una salida al depurador por medio del manejador de errores y excepciones del núcleo. L o s códigos de terminación se encuentran divididos eh clases. En cada código se presentan las diferentes primitivas donde se pudo haber detectado, así como una breve explicación de la posible causa. Para el caso del módulo Inicializa-SO y primitiva Elimina se presenta también el significado del primer parámetro, que se relaciona con el código.

135

Page 145: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

MANEJO DE MEMORIA.

QAQaxi Requerimiento de memoria inválido PñIMlTlVASr

Crea-buzon y Obtenmemoria: La cantidad de memoria dinámica solicitada excede',el espacio total que se maneja, Ó es cero.

PRII(II1VASi

Inic-SO: La cantidad de memoria XDATA libre es menor a la mínima para que se implemente el manejo de memoria dinámica. Como primer parámetro se indica el total de memoria libre calculada.

Crea-buzon y Obtenmemoria: No existe algún espacio de memoria libre que satisfaga la cantidad requerida.

PLPZH Bloque de memoria inválido PRiMiTXVAS:

Ini c-SO: - Bytes por bloque igual a cero, no es válido. - La cantidad de bytes por bloque especificada es

Como primer parámetro se indican los bytes por bloque.

- La dirección que se indica no está dentro del

- El área no está marcada como ocupada, dirección

mayor que el espacio de memoria libre.

Liberamemoria:

espacio que se maneja.

errónea.

Qamt -n o asianadg PROCEDIMIEWTO:

Inic-SO: Las variables en memoria interna del proceso no están dentro del área asignada. Como primer parámetro se indica el número del proceso.

Qua -A e no asianadg PRIMITIVAS:

Ini C-SO: - Las variables externas del proceso no están en el área adecuada.

í36

Page 146: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

- La dirección de inicio es mayor a la dirección final. Como primer parámetro se indica el número del proceso.

Envia y Recibe: La dirección que se especifica no corresponde a una área adecuada.

de memor- no PRINIIIVAS:

Inic-SO: CÓdPgo del proceso Ó de su manejador de excepciones fuera de área asignada. Como primer parámetro se indica el número del proceso.

Instala-int: Dirección de la rutina fuera de área adecuada.

- . PRIIIITIVA:

Memoria código traslapada

Inic-SO: Código traslapado entre procesos. Como primer parámetro se indica el número del proceso.

Qmu - PRIYITIVA:

Activa: Las variables externas del proceso que se intenta activar traslapan las de otro ya activo.

!uQ!a Hemori a -cppExeBTA - trasiaDi\aa PRMJDINIMO:

Inic-SO: Existe traslape de código de un proceso con algunas variables externas. Se indica el número del proceso.

s!Uu Direcciones en DATA inválidas PRocmINImo:

Inic-SO: La dirección de inicio del stack es menor que la dirección de inicio de los datos internos. Como primer parámetro se indica el número del proceso.

MANEJO DE PROCESOS.

Q5Q.U PRINITIVAS:

Identificador de proceso inválido

Inic-SO: Número de proceso no coincide con gu posición en el descriptor inicial. Como primer parámetro se indica el número del proceso.

Activa: Número de proceso mayor que la cantidad de

137

Page 147: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

procesos declarados.

Qzckw Operación no permitida PRIIIIIIVAS:

Elimina, Retrasa, bEspera, cEspera, Envia, Recibe, Obten-memoria, Espera-int: Se intenta eliminar, retrasar ó

bloquear el proceso de menor prioridad, el cual es el Último $roceso declarado. Para el caso de la primitiva Elimina se indica el número del proceso.

xi!25H - PRIIIIIIVA:

Activa: Se intenta activar un proceso que ya io está.

Qs!u P r n I I I I m O :

Ini c-SO : - L a - L a - La

prioridad del prioridad del

Prioridad inválida

proceso excede la máxima. proceso O no es la máxima.<

prioridad del Último proceso declarado no es la minima posible.

Como primer parámetro se indica el número del proceso.

esppII Cantidad de procesos inválida PRIIIIIVAS:

Inic-SO: La cantidad de procesos declarados excede la máxima. Como primer parámetro se indica la cantidad máxima permitida.

Espera-int: Más de un proceso se bloquea por la ocurrencia de la misma interrupción.

M J O DE SINCRONIZACION Y COMUNICACION.

w Identificador de semáforo inválido PRIIIIIVAS:

Inic-bSem, bSignal, bEspera, Inic-cSem, cSigna1, cEspera, Vacio-sem: Número de semáforo mayor a la cantidad máxima.

!xQai Identificador de buzón inválido PRIIIIIVAS

Crea-buzon, Envia, Recibe, Vacio-buzon: Número de buzón

Page 148: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

mayor a la cantidad máxima.

Semáforo inicializado PRIMITIVAS:

Inic-bSem, Inic-&em: El semáforo ya se encuentra inicializado.

pép%II Buzón creado PRIMITIVA:

Crea-buzon: Buzón ya creado.

iéeur Semáforo no inicializado PRIHITIVAS:

bSignal, bEspera, csignal, cEspera, Vacio-sem: El semáforo no se encuentra inicializado.

l&Q!a Buzón no creado PRIMITIVAS:

Envia, Recibe, Vaciobuzon: El buzón no ha sido creado.

efiezH Tivo no COmDatibk PRIMITIVAS:

Envia y Recibe: El tipo de comunicación especificado no es similar al del buzón.

l" PRIMITIV*S:

Transacción ilegal

bEspera, cEspera, Envia, Recibe: Se especifica "no bloqueo" cuando las circunstancias lo sugiere.

umx PRIMITIVAS:

Nensaie t m

Envia: Un proceso bloqueado se alistó recibiendo un mensaje mayor a su área correspondiente (por copia).

Recibe: Se recibió un mensaje de mayor longitud que el espacio proporcionado (por copia).

ux!!x Tamaño de mensaje inválido PRIMITIVAS:

Envia: - La longitud del mensaje es mayor que la del buzón. - La longitud del mensaje es menor que la mínima (2 bytes).

139

Page 149: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

Recibe: La longitud especificada para recibir es menor a la mínima (2 bytes).

LéQpII Cuenta semáforo inválida PRIIIITIVASI

csigna1:

cEspera :

El número de unidades sobrepasa la cuenta máxima positiva. El número de unidades sobrepasa la cuenta máxima negativa .

MANEJO DE COLAS.

PSPBII . Cola vacía se intenta sacar un proceso de una cola vacía.

!sui - El procesono se encuentra en la cola de procesos accesada.

)(ANEJO DE INTERRUPCIONES.

Qxm PRIIIITIVAS:

Nihiero de interrupción erróneo

Inicializa-int, Instala-int, Espera-int: El nhero de interrupción no existo Ó no está disponible al usuario.

Interrupción no inicializada PRIIIITIVAS;

Espera-int: La interrupción no ha sido inicializada. <indeterminada>: Ocurre una interrupción que se encuentra

habilitada pero no inicializada.

PSLQH Interrupción no atendida por el manejador del SO PRIüIIIVAi

Espere-fnt: La interrupción no es atendida por el manejador de interrupciones del sistema operativo (Inicializa-int).

CODIGO DE SALIDA DEL SISTEMA OPERATIVO.

QuUi Salid a del s istema overativQ PRIIIITIVA:

Excepción: Salida normal del sistema operativo.

140

Page 150: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

BIBLIOGRAFIA.

1) Operating System principles. Brinch Hansen, Per. Prentice Hall, 1973.

2) introducción a los Sistemas Operativos. Harvey M. Deitel. Addison-Wesley Iberoamericana, 1987.

3) Operating System: Concepts and Applications. Donald R. Horner. Scott, Foresman and Company, 1989.

If0 Design Data Management in Operating Systems. Donald E. Freeman and Olney R. Perry. Hayden Book Company, Inc. 1979.

4 )

5) M I 8 6 Operating System. Intel Corporation, 1981.

Manual de usuario de SOPCO-86. sistema operativo para Procesos Concurrentes, para sistemas basados en 8086f88. Instituto de Investigaciones Eléctricas (IIE), Departamento de Electrónica, 1989.

6)

7) Tarjeta de comunicaciones MAC-851. Manual de usuario. Instituto de Investigaciones Eléctricas (IIE), Departamento de Electrónica, Agosto de 1989.

8 ) Microcontrollers, Advanced Micro Devices. Intel Corporation. Data BookfHandbook, 1988.

\

14 1

Page 151: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

9) Multicomputers: Message-Passing Concurrent Computers. William C. Athas and Charles L. Seitz. California Lnstitute of Technology, August 1988.

10) operating systems. Alan Shaw, Guest Editor, 1988.

11) Misconceptions About Real-Time Computing. John A. Stankovic. University of Massachusetts, October 1988.

12) Meiodología para desarrollo de programas de computadora. Norma de pruebas. Instituto de Investigaciones Eléctricas (IIE), Departamento de Electrónica. Versión 1, Abril 1986.

13) A Real-Time Scheduler. Brinch Hansen, Per. California Institute of Technology, November 1975.

14) PL/M-51 User's Guide for DOS Systems. Intel Corporation, 1986.

15) MCS-51 Macro Assembler User's Guide €or DOS Systems. Intel Corporation, 1986.

16) MCS-51 Utilities User's Guide for DOS Systems. Intel Corporation, 1986.

17) Monitor para sistemas basados en 8051. MSB/51, Manual de usuario. Instituto de Investigaciohes Eléctricas (IIE), Departamento de Electrónica. Versión 1.0, 1987.

142

Page 152: CENIDET · DJRECCION GENERAL DE INSTITUTa ~FIOLo(ilC0S CENTRO NACIOWL OR INVtlflOACIM( Y OPUWWO TtC)(MOK:O * - ACADEMIA DE LA MAESTRIA EN INGENIERIA ELECTFONICA Cuernavaca, Morelos

18) IEEE Trial-Use Standard Specifications for Microprocessor Operating systems Interfaces (MOSI). Draft American National Standard, 1985.

19) OS51-Real time Operating System for microprocessors in the 8031/32/51/52 and 805151535 families. Technical deqcription. ENEA DATA, Ttiby, Sweden, 1987.

20) Interface Databook. NSC8lOA (RAM-110-Timer). National Semiconductor Corporation, 1986.

21) Manual Dual Channel UART (DUART), MC68681, MC2681. Motorola, 1983.

22) Norma IBUS-111. Instituto de Investigaciones Eléctricas (IIE), Departamento de Electrónica, 1986.

1 CENTRO DE INFORMACION I C E N I D E : I . *

14 3