Método de control de programación multitarea
Descripción general
 En el control de programación multitarea de un microordenador de chip, su objetivo es ejecutar de forma segura el control de multiprogramación. ] Para la variable interna para cada tarea en vez de poner un TCB (Tarea ControlBlock) la secuencia para almacenar un contexto para cada tarea, ejerce un programador para el control de todo el asunto con TCB puntero para cada tarea, una lista lineal . Al seguir esta lista lineal, el planificador puede controlar reiniciar el inicio de cada tarea, etc.
Campo técnico
Campo técnico La presente invención se refiere a un método de control de ejecución de programación multitarea para gestionar el orden de procesamiento de tareas en un microordenador de un solo chip o similar.
Antecedentes de la técnica
El microordenador o, una dirección de programa convencional como para cada tarea para el control en tiempo real, el puntero de pila, registros, bloque de control de tarea que mantiene el contexto de la tarea del estado de la tarea (en adelante TCB: Tarea bloque de control abreviada) usando, Administro tareas
En el microordenador de un solo chip, cada programa de tarea se coloca en el área ROM (memoria de solo lectura), por lo que no se realiza la creación y desaparición de tareas. Por este motivo, los TCB correspondientes a cada tarea se definen estando dispuestos en un área fija de RAM (memoria de acceso aleatorio). Convencionalmente, en un control de programación multitarea tan pequeño, el número de identificación de la tarea y el índice de la matriz TCB se configuran para tener el mismo valor numérico y se administran utilizando este número de tarea (también llamado ID de tarea).
La Figura 2 muestra la relación entre el número de tarea convencional y el índice TCB. Cuando un número de identificación que indica la tarea de partida suspenda curriculum vitae terminó tarea es un ID, respectivamente, se inicia startTask (ID), interrumpido suspendTask (ID), se reanudó WAKEUP (ID), el extremo de TerminateTask (ID), la Para instruirlo y ejecutarlo usando la tarea ID 1 '. En base a estas instrucciones, el planificador 4 'busca un TCB en el que el estado de la tarea esté listo (estado de espera) y cambia el contexto de la tarea al estado de ejecución. Como se describió anteriormente, convencionalmente, cada tarea se identifica mediante una ID de tarea 1 'y se da una instrucción, y la tarea se ejecuta y controla. Para identificar y controlar cada tarea con la ID de tarea 1 'como referencia, la TCB se trata como una matriz, y el índice de matriz 1 'y la ID de identificación de tarea ID1' se consideran iguales.
Tarea de solución
TCB tiene naturaleza global (amplia) porque el control de ejecución de instrucciones de la tarea se gestiona como índice 1 'de la matriz TCB como número de identificación de tarea ID 1 'Si el índice 1' 'es ID 1' ID 1 'no es una variable local. Por ejemplo, al instruir el inicio de la tarea 5
startTask (5);
Sin embargo, si el número de tarea ID 1 'está escrito erróneamente
startTask (6);
Puede ser descrito. Luego comienzas una tarea externa completamente diferente. Por lo tanto, al instruir, ejecutar y controlar erróneamente el número de tarea, la operación y la restauración subsiguientes fueron impredecibles y extremadamente peligrosas. Si TCB se define como una matriz, la TCB no local se define fuera de cada tarea.
Sin embargo, dado que el TCB tiene una relación estrecha con cada tarea, debe definirse como una variable interna (que tiene el mismo significado que una variable local) de cada tarea. Como no era posible ser variables internas de tarea desde la configuración del circuito interno dentro del IC, cambió y referencia el TCB fuera de la tarea. Como resultado, la independencia de las tareas se ha reducido, por lo que es más susceptible a cambios debido a modificaciones. Además, existía un alto riesgo de comportamiento inesperado debido a errores mezclados al realizar modificaciones.
El número de identificación de tarea es originalmente un número no relacionado con la tarea. Es un valor numérico introducido artificialmente para controlar, ejecutar y controlar tareas. Al aumentar el número de variables, el control del control de tareas se volvió complicado y se incrementó el riesgo de contaminación por errores.
No es necesario el valor numérico de dicho número de identificación de tarea, y es un valor numérico que tiene la posibilidad de que cambie para cada programa de software. Por lo tanto, a la manera usada invariablemente por un programa que describe la tarea que contiene los números de identificación tarea a la biblioteca fuera de la tarea máximo numérico número 2 'tarea dirección de inicio 1 'o similar asociado con un número de identidad de la tarea Variable, que innecesariamente hizo innecesariamente complicado el software del programa, causando un error.
Solución
Por lo tanto la presente invención es un esquema de control de programación multi-tarea tal como un microordenador de un chip, la variable interna que define el bloque de control para almacenar información de control de la tarea para cada tarea, un valor puntero de lista de estructura lineal de las variables internas TCB Método de control de programación de tareas que controla cada tarea como datos de la tarea.
En lugar de manejar múltiples TCB en una matriz, defínalos como variables internas para cada tarea. Cuando se programa como un sistema total, cada TCB se localiza al especificar en cada orden modificada. Por lo tanto, el planificador necesita ver todo el TCB. Por lo tanto, en lugar de una matriz de TCB, los punteros a cada TCB se reúnen y tratan como datos de estructura de lista lineal, el planificador sigue esta lista lineal, identifica el estado de cada tarea y comienza la tarea. El control de reanudar se realiza. Al tratar TCB como matriz 1 ', el último TCB fue juzgado por el número máximo de identificación de tarea N 2'. Sin embargo, cuando se maneja el TCB de la presente invención como una lista lineal, se considera que el puntero que designa el extremo del TCB es el último al dar instrucciones a 0.
La variable TCB se puede hacer como una variable interna, y se verá menos afectada por otros programas. El TCB se lee / escribe (lee / escribe) a través del puntero, pero solo el programador depurado lee / escribe. Cada TCB se puede referenciar y modificar solo para cada tarea que lo define. número de identificación de la tarea elimina, por lo tanto, el número máximo de tareas no es necesario que el significado especificado último, se puede determinar que el último 0, terminación no es una variable, es posible poner fin a un número fijo 0.
Una realización de la presente invención se describirá con referencia a la FIG. 1 es una variable TCB definida como una variable local. Reserve en el área RAM del microordenador como una variable interna para cada tarea. 2 es una variable que constituye una estructura de lista global que especifica (señala) el TCB definido para cada tarea. Esta es una variable que se colocará en el área ROM del microordenador (en lo sucesivo, lista de punteros TCB). 3 indica el final de la lista lineal que apunta al TCB. Al señalar 0, indica el final de la lista. Convencionalmente, como se muestra en la figura 2, se requiere un número de tarea máximo global 2 ', y el número máximo de tareas 2' es el número de tareas requeridas para cada aplicación y fluctúa. En la presente invención, el 0 puntero 3 que indica el final de la lista es 0 para todas las aplicaciones y no fluctúa. El planificador 4 funciona para ejecutar la tarea 1 en el estado listo.
La variable TCB tiene el valor de un contador de programa, un puntero de pila y un registro que indica un contexto de tarea, y se convierte en una variable almacenada en un área de RAM que cambia según el funcionamiento de la tarea. Las variables en la lista lineal que apuntan al TCB son constantes que se determinan cuando se realiza el enlace de compilación (edición de unión) y cambian cuando la aplicación cambia, pero no cambian según la operación de la tarea. Por esta razón, en un microordenador de un solo chip que tiene una pequeña capacidad de RAM, se supone que es una variable almacenada en el área ROM. El planificador 4 sigue las variables de la lista de punteros TCB 2 para controlar y gestionar el TCB de cada tarea, de modo que cada elemento de la lista de punteros TCB es una variable global. Aunque es una variable global, es una variable utilizada solo por el programa de control de programación multitarea (sistema operativo), y la aplicación nunca hace referencia directamente a esta variable.
El programa de aplicación generalmente consta de múltiples tareas. Luego asigne funciones a la tarea para que la independencia de cada tarea sea alta. Como resultado, los archivos de programa que describen las tareas son archivos independientes. Defina el TCB como una variable interna del archivo de descripción de tarea independiente.
La función del planificador es investigar las tareas que están listas desde la tarea completa, ajustar las tareas y reiniciar la operación de la tarea. Para que el planificador realice esta operación, es necesario verificar el estado de todos los TCB. Para este propósito, declaramos un conjunto de TCB en el pasado y usamos el índice para verificar el TCB hasta el número de tarea máximo por el planificador.
En la presente invención, se usa una lista de punteros TCB en lugar de esta matriz. Dado que la lista de punteros TCB usa TCB como una variable interna, la información se intercambia con el SO de control de programación multitarea solo a través de la lista de punteros TCB 2 o el puntero 1 al TCB. El programa de control de programación multitarea del sistema operativo que utiliza la lista de punteros TCB 2 es el planificador 4. El puntero al TCB se usa para iniciar y detener la función de reinicio de interrupción del sistema operativo. Estos son
startTask (puntero a TCB);
suspendTask (puntero a TCB);
wakeUp (puntero a TCB);
terminateTask (puntero a TCB);
Como se muestra en la Fig. Más específicamente, al describirlo usando el lenguaje C,
startTask (y TCB);
suspendTask (/u0026 TCB);
wakeUp (y TCB);
terminateTask (/u0026 TCB);
. No usamos el número de identificación de la tarea aquí. El número de identificación de la tarea es un valor numérico que varía según la aplicación o el número de tareas cambia.
Por otro lado, dado que /u0026 TCB que es un puntero a TCB no tiene número, siempre es /u0026 TCB independientemente de la aplicación. El significado de esta diferencia se vuelve notable cuando se bibliotecas aplicaciones que usan tareas. Al describir tareas que utilizan matrices convencionales, los números de identificación se deben definir como variables globales y cada tarea debe estar en una biblioteca. De lo contrario, el programa en la biblioteca no puede seguir el cambio del número de identificación de la tarea debido a la diferencia de la aplicación. Usando la lista de punteros de TCB como en la presente invención, /u0026 TCB es una variable local determinada en el tiempo del enlace, y puede convertirse en una biblioteca sin utilizar un número de identificación de tarea global.
La presente invención es también una mejora de un método denominado programa orientado a objetos (en lo sucesivo denominado OOP). La instrucción para finalizar la interrupción del sistema operativo se indica utilizando el concepto de OOP,
StartTask () en un objeto con función TCB
SuspendTask () en un objeto con función TCB
WakeUp () en un objeto con función TCB
Para terminarTask () en un objeto con función TCB
. Usando el lenguaje OOP C ++
(Instancias de objeto que heredan TCB o TCB). startTask (void);
(Instancias de objeto que heredan TCB o TCB). suspendTask (void);
(Instancias de objeto que heredan TCB o TCB). wakeUp (void);
(Instancias de objeto que heredan TCB o TCB). terminateTask (void);
En C ++, /u0026 TCB se convierte en un puntero que no recibe instrucciones de otros y no puede referirse directamente desde la aplicación.
De acuerdo con la presente invención como se describe anteriormente, en lugar de administrar con la secuencia de 1 a TCB, la TCB y las variables internas de cada tarea, trabajar el planificador 4 utilizando las secuencias de la lista de punteros TCB 2. Al hacer esto, (1) el número máximo de la tarea desaparece. (2) El número de identificación de la tarea desaparece. Como resultado, la tarea de la aplicación se puede convertir en una biblioteca sin incluirlos, y se puede mejorar la modularidad independiente de la tarea de la aplicación. Además, al realizar correcciones de cambios, se puede reducir el riesgo de mezclar errores. En el lenguaje OOP, solo el programa OS de control de programación multitarea puede operar el TCB, y la independencia del sistema de control para este efecto se vuelve más prominente.
Efecto de la invención
De acuerdo con la presente invención, es posible describir cada tarea usando una variable TCB local sin usar un número de identificación de tarea global y un número máximo de tarea, lo que facilita la creación de un programa, Y es posible proporcionar un microordenador de un sistema de programación multitarea en el que el cambio del programa sea seguro.
La figura 1 es una vista que muestra una realización de la presente invención.
La figura 2 es un diagrama que muestra una relación entre un número de identificación de tarea y un índice de matriz TCB en un ejemplo convencional.
1 Bloque de control de tareas (TCB)
2 lista de punteros TCB
Número máximo de tareas 2 '
3 Terminación de la lista de punteros TCB
4 Programador
5 instrucciones de control TCB del sistema operativo de control de multiprogramación
Reclamo
En el sistema de control de la programación multi-tarea, como según la reivindicación 1 microordenador de un chip, la variable interna que define el bloque de control que almacena información de control de la tarea para cada tarea, el valor del puntero a un TCB de las variables internas de un datos de lista de estructura lineal Y controlando cada tarea como un método de control de programación multitarea.
Dibujo :
Application number :1997-006632
Inventors :日本コロムビア株式会社
Original Assignee :小林憲次