Está en la página 1de 14

Incrementar el Contador de

NO
Carrera Libre Inicialización
y guardar una copia de su SI
valor

Limpiar el valor de la
prioridad a elegir

¿Se ha ¿El acarreo


rotado el es un “1”
Contador lógico?
Libre 9
veces?
Restaurar el valor original del
Contador de Carrera Libre a
través de su copia

Rotar a la
Despachador
derecha través
Incrementar el
del acarreo al
valor de la
Contador de La variable Prioridad
Prioridad a elegir
Carrera Libre a elegir contiene el
valor de la prioridad
a ser ejecutada

Araguaney Elector de Prioridades


1 Lo primero que se hace al llamar al 3 Cada vez que se hace una rotación esta
planificador es incrementar el contador de variable incrementa en uno su valor, es decir la
carrera libre para su posterior evaluación próxima prioridad a correr es igual a las veces
que se necesito rotar para conseguir el primer
“1” lógico

C Prioridad a Elegir

Binario Decimal Prioridad


Contador 0 0 0 0 0 0 1 0 1 (Contador) (Contador) a Correr

0 0 0 0 0 0 0 1 1 1

2 La evaluación del contador consta en rotarlo 0 0 0 0 0 0 1 0 2 2


a la derecha hasta encontrar el primer “1” 0 0 0 0 0 0 1 1 3 1
lógico, o al rotar 9 veces; al conseguir un “1”
lógico las rotaciones cesan 0 0 0 0 0 1 0 0 4 3
0 0 0 0 0 1 0 1 5 1
0 0 0 0 0 1 1 0 6 2
4 Se puede apreciar en la tabla la evaluación
0 0 0 0 0 1 1 1 7 1
hasta 8 incrementos del contador pudiéndose
notar cual prioridad se le será cedida la CPU. 0 0 0 0 1 0 0 0 8 4

Araguaney Elector de Prioridades (Detalle)


Prioridad 1 Prioridad 1 Prioridad 1 Prioridad 1

Prioridad 2 Prioridad 2

Prioridad 3

Prioridad 4

Binario Decimal Prioridad


(Contador) (Contador) a Correr
Se muestra el diagrama de
estado, y la manera en que el 0 0 0 0 0 0 0 1 1 1
elector de prioridades escoge
la próxima prioridad. 0 0 0 0 0 0 1 0 2 2
0 0 0 0 0 0 1 1 3 1 Se puede observar en 8
En este ejemplo se muestra la
evaluación del 1 al 8, siendo el 0 0 0 0 0 1 0 0 4 3 evaluaciones las veces
valor máximo 255, pudiendo el que cada prioridad es
Kernel ofrecer 8 prioridades. 0 0 0 0 0 1 0 1 5 1 ejecutada, siendo la
uno la mas prioritaria.
0 0 0 0 0 1 1 0 6 2
0 0 0 0 0 1 1 1 7 1
0 0 0 0 1 0 0 0 8 4

Araguaney Elector de Prioridades (Diagrama de tiempo)


Cargar el puntero al
Superbloque de tareas
desde el inicio
Estado desconocido
apuntar al PC de la
próxima tarea

¿Se llegó
al final del A la tarea se le
¿

bloque? fue cedida la Cambiar su estado


CPU en una a “Elegible”
oportunidad ?

Apuntar a la
Apuntar a la ¿La prioridad Apuntar al prioridad de la
¿Es la tarea próxima tarea
prioridad de la contenida es la estado de la
elegible?
tarea que se busca? tarea

¿Se le dio una vuelta


Apuntar al PC
a todo el bloque?
de la tarea

No existe una
tarea de esa Almacenar el
prioridad. Elegir puntero de bloque Cambiar
nueva prioridad apuntando a la contexto
siguiente tarea

Araguaney Despachador
Puntero de Tarea Anterior Prioridad
Estado
Bloque de
Parte alta del contador de Control de
programa una tarea
Parte baja del contador de
programa

Puntero de Súper Bloque Prioridad


Súper
Estado Bloque
Parte alta del contador de
programa
Parte baja del contador de
programa

Puntero de Superbloque

Puntero Tarea Anterior

Araguaney Súper Bloque ( Mapa de Memoria)


CORRIENDO
DEMORADA

ELEGIBLE BLOQUEADA

Una tarea puede estar


bloqueada por que esta
esperando a que un
temporizador termine su
conteo y no se gastará
procesamiento en ella.

Una tarea elegible será


ejecutada tomando en
cuenta su prioridad
Una vez cedida la CPU es
marcada con el estado
“Corriendo”, cuando el
planificador ve a una tarea bajo
este estado, lo marca como
“Elegible” y busca otra tarea con
la misma prioridad
Araguaney Estado de las tareas
Del (1 al 8) siendo el uno el
mas prioritario de todos
Prioridad
Estado El estado actual de la tarea
Bloque de
Control de Parte alta del contador de
una tarea programa
Parte baja del contador de
programa

Araguaney Bloque de Control de Tarea (BCT)


En RSI

Declaración de
variables
Temporizadores

Declaración de
definiciones para el
ensamblador

Servicios del
Macros para el Sistema
usuario y los (Código Nativo)
Servicios del
Sistema

Inicialización de
Planificador Tareas
tareas

Araguaney Diagrama en bloques del Kernel en tiempo de diseño


8 bits temporal
16 bits temporal Variables
24 bits temporal Temporales

32 bits temporal

Puntero de Súper Bloque


Estado
de temporización Súper Bloque de
8 bits Temporización
Bloque de
16 bits Temporizador
24 bits
32 bits

Puntero Superbloque
Temporizadores

Bandera Temporizadores

Propósito general para el


temporizador (2 bytes)

Araguaney Súper Bloque de Temporización ( Mapa de Memoria)


Tipo de Temporizador
1 Estado
8 bits
5
16 bits
bytes
Estado 8 7~1
2
24 bits
32 bits
Puntero al estado de la
tarea, o llave

do
tra
r
do

on
za

nc

da
ori

re

ue
mp

do

sq
Te


riza
de

de
po
o

o
Tip

Tip
Te
7 6 5 4 3 2 1 0

Sin uso

Araguaney Bloque de Temporización ( Mapa de Memoria)


Bandera de Temporizador
Elector de Prioridad Despachador

Cambiador de contextos

Araguaney Elementos del planificador


1 2 3

Súper Bloque BCT BCT BCT

4 5

Súper Bloque BCT BCT BCT

Araguaney Acceso circular ( SúperBloque de Tareas)


Cerradura
8 bits
Llave: Número entero
de 0 al 127 16 bits
24 bits
32 bits

Araguaney Método Llave – Cerradura en los temporizadores no bloqueantes


PortB <0~7>

PortC <5>
PIC16F877A TDA2003

PortD <2>
Osc1 – Osc2
Pulsador Tono 1
PortD <3> Resonador Altavoz
Pulsador Tono 2
PortC <4>
Pulsador Tono 3

Araguaney Aplicación Prueba (Para la versión 1.0.0)

También podría gustarte