Hola a todos.
Me encuentro en un gran dilema. Llevo días intentando solucionar este problema, espero que me puedan ayudar
Resulta que me encuentro haciendo un sistema operativo multitarea en tiempo real; es un proyecto para la universidad, y pues decidí hacerlo en mi Arduino UNO.
Mi problema radica en no saber cómo direccionar el Contador de programa -PC- ya que al ejecutar una tarea, debo direccionar el PC a la ubicación de la memoria en la que previamente he cargado dicha tarea.
Les adjujnto un pseudo codigo del sistema operativo:
struct PCB {
int identificador;
int direccion_inicio;
int direccion_ejecucion;
int estado_proceso;
int acumuldor;
int palabra_estado;
};
struct particion {
int idp;
int inicio_p;
int fin_p;
int estado_p;
int tamano_p;
};
PCB procesos[100];
int cola_procesos[100];
int cmd; int npc;
particion memoria[100];
int cparticiones = 6;
void setup(){
for (int i = 0;i <= 5 ;i++){
memoria*.idp = 1;*
memoria.inicio_p = 4096 + 4096i;
memoria.fin_p = 8192 + 4093i;
memoria*.estado_p = 0;
memoria.tamano_p = 4096;
_}
}
void loop(){
//cmd = leer comando();
/switch(cmd){
case 1:
* break*
* case 2:
breack*
* …
}/
if(procesos[cola_procesos[0]].estado_proceso == 1){
* //iniciar_Timer();
procesos[cola_procesos[0]].estado_proceso = 2;
//PC = procesos[cola_procesos[0]].direccion_inicio,*
}
else{
* //recuperar_entorno();
//iniciar_Timer();
//PC = procesos[cola_procesos[0]].direccion_ejecucion;*
}
}_
Cualquier ayuda o sugerencia de cómo poder manipular el PC será muy agradecida.