TacOS-team / tacos

Système d'exploitation / Operating System
GNU General Public License v3.0
9 stars 4 forks source link

Scheduling immédiat #182

Closed NicolasFloquet closed 9 years ago

NicolasFloquet commented 10 years ago

Pour relancer ASAP le scheduler, on utilise pour le moment la méthode start_scheduling, un peu par effet de bord.

Il faut ajouter un mécanisme permettant de réordonnancer en fin de syscall, via un flag ou un appel de fonction par exemple. De cette façon, il ne sera plus nécessaire d'ajouter des boucles pour éviter la sortie précoce d'un syscall

NicolasFloquet commented 9 years ago

Pour éviter de tout casser d'un coup, je propose de faire en deux temps. -Première étape: mettre en place le système de flag uniquement pour l'ordonnancement periodique. Si c'est bien fait, on devrait avoir exactement le même comportement qu'actuellement, mais sans appel direct à schedule -Deuxième étape: appliquer cette méthode aux syscall.

Le point "chaud" dans la réalisation de ça, c'est qu'à priori on veut pas généraliser ce comportement à toutes les interruptions. Par exemple, je suis pas persuadé que ce soit une bonne idée de checker le flag de rescheduling à chaque fois qu'on touche au clavier. Du coup ça va peut être nécessiter de revoir la façon dont on a codé les handlers d'interruption.

Pour finir, ça va très certainement casser la façon donc on mesure la charge CPU. Il faudra voir si on peut utiliser l'horloge dans le scheduler sans que ça prenne trop de temps.

MaximeCheramy commented 9 years ago

Je te propose qu'on en discute mais sinon je suis d'accord. Nettoyer le code de l'ordo nous permettra ensuite de s'occuper correctement des signaux ;). Ordo + signaux c'est le gros restant pour la v0.2.

MaximeCheramy commented 9 years ago

Bon, j'ai mis en place le flag mais pour l'instant cela n'apporte pas grand chose par rapport à l'existant. Il faudrait appeler l'ordonnanceur que lors d'un retour en espace utilisateur je pense (là on check le flag à chaque tick d'horloge par exemple...).

NicolasFloquet commented 9 years ago

c'est pas un faux problème ça? on a pas dit dans un autre ticket que quand on aurait le scheduling immédiat on bloquerais les interruptions pendant les appels systèmes?

MaximeCheramy commented 9 years ago

En réalité, là j'ai essayé (mais reverté car c'était pas si simple) de retourner direct lorsqu'on est dans le kernel. T'es dispo demain dans la journée pour en discuter ? (ou ce soir très tard sans garantie)

NicolasFloquet commented 9 years ago

On en est où de ça concrètement?

MaximeCheramy commented 9 years ago

J'y travaille, ce que j'ai tenté plante sans que j'arrive à comprendre pourquoi. En plus, j'ai remarqué que notre système de cli/sti pour bloquer les interruptions est vraiment naze : lorsqu'ils sont imbriqués cela ne fait pas ce à quoi on s'attendait...