Le multitâche sur un OS mobile, c’est quoi au juste ?

Par franck_29 - Le 11/06/12 - Affichages : 2386

I.Préambule
L’idée de cet article, comme pour beaucoup de nos articles, nous vient d’échanges relevés sur twitter. Et il nous a paru qu’au delà des slogans : « mon OS est multitâche et pas le tien ! », il pouvait être intéressant de traiter plus complètement le sujet, de façon plus rigoureuse, tout en restant simple.

C’est donc à ce chalenge que nous allons nous atteler.

Les experts sont prévenus, cet article est donc une vulgarisation et nous irons rapidement à l’essentiel, qu’ils nous pardonnent donc les raccourcis et simplifications auxquelles nous recourrons tout au long de l’article.

II.Introduction

Pour traiter correctement le sujet nous devrons aborder la notion de système d’exploitation, ce que c’est réellement, fort de cette base nécessaire, viendra ensuite le cœur du sujet... le multi-tasking. Enfin, nous finirons par les erreurs classiques à déceler et à éviter pour briller en société

III.Les systèmes d’exploitation.

i.C’est quoi et à quoi ça sert ?

Un système d’exploitation est en ensemble de composants logiciels (de programmes) qui assurent la gestion des différents périphériques et ressources de votre ordinateur (mémoire, CPU, clavier, écran, haut-parleurs, etc.). Son objectif est de vous simplifier la vie, et d’offrir aux utilisateurs les moyens d’utiliser ces ressources de façon uniforme et standardisée.

Si on est développeur d’applications, on utilise ce système d’exploitation à l’aide d’une API, des appels au système (ex : Offre moi 10Mo de mémoire, j’en ai besoin ), et si l’on est simple utilisateur, on l’exploite à l’aide d’applications systèmes toutes faites (exemple : copie d’un fichier)

En réalité les services offerts par un système d’exploitation sont nombreux et très divers, aussi depuis les premiers OS, ont-ils été regroupés en grandes familles de services, parmi lesquels :

-La gestion de la mémoire centrale
-La gestion de la mémoire de masse (la où l’on met les fichiers)
-La gestion des périphériques
-La gestion des processeurs.

ii.Quelques mots concernant cette gestion du ou des processeurs.

Il faut aussi savoir, que pour rendre leur service, les fameux composants logiciels du système d’exploitation doivent s’exécuter (dans la vie courant on dit « tourner » ou « fonctionner ») sur votre ordinateur. Et pour ce faire une seule solution, le « code » du composant système doit être chargé en mémoire centrale (celle qui aujourd’hui, sur les smartphones d’aujourd’hui oscille entre 512Mo et 1Go) et être exécuté (traité pas à pas) par le micro-processeur de la machine.

Problème : le micro processeur est unique ou dans tous les cas en nombre très limité. C’est ce qu’on appelle une ressource critique. Il faut donc la gérer... pour que ce ne soit pas tout le temps les mêmes qui l’utilisent. Et oui même en informatique, on a des petits malins qui voudraient toujours le processeur pour eux tout seul

Car figurez-vous, qu’il y a des tonnes de choses à faire à un instant donné, sur un ordinateur, et toutes ont besoin du micro-processeur... Il va donc falloir se le partager.

Et là, on a deux manières de faire !

-Soit on laisse chaque application (vous lirez aussi « programme », « processus », etc.) terminer ce qu’elle a à faire et une fois fini, elle « rend » le processeur pour les autres.
-Soit on met en place un système d’autorité qui « préempte » le micro-processeur de façon « équitable » pour l’offrir aux autres applications.

IV.Le multitâche dans tout ça

Et bien un système d’explotation multitâche fonctionne selon ce deuxième mode. Il préempte le micro-processeur pour l’allouer aux autres applications. On parle de système d’exploitation multitache préemptif. Ouf !

Si l’on entre dans le détail, en pratique, il va « donner » le microprocesseur à un programme pendant une toute petite tranche de temps (le time slice) puis le reprendre pour le donner au suivant et ainsi de suite, en boucle... (et oui, c’est énorme tout ce que cela implique). L’organe du système d’exploitation qui tient de rôle de gendarme et de grand organisateur est le scheduleur

i.Alors ça fonctionne comment le multitache

On a déjà parlé plus haut du scheduler qui va arbitrer les demandes de micro-processeur. C’est bien sûr un peu plus compliqué que cela, mais l’idée est là.

Notez quand même qu’il sait gérer des priorités (entre processus ou applications) et que si l’ordinateur dispose de plusieurs micro-processeurs (ou des cœurs) et bien c’est lui qui fera la répartition pour équilibrer la charge et in fine offrir plus de performance...

A savoir aussi, quand une application s’exécute sur un processeur, tout est fait pour que, quand l’OS lui prend le processeur, elle ne se « doute de rien ». Et quand quelques milliseconde plus tard, le processeur lui sera rendu, elle continuera à s’exécuter comme si de rien n’était. Impressionnant non?

ii.On m’a parlé de multi threading, c’est la même chose ?

Point important donc, dans un système d’exploitation multitâche (préemptif) l’application ne se soucie de rien (et l’on parle bien sûr aussi du développeur qui la conçoit)

Pourtant il y encore moyen d’aller plus loin, car jusqu’à maintenant on a parlé d’application qui s’exécutait (ce sont des processus dans le jargon) elle a le processeur pour s’exécuter ... ou pas

Et bien sachez que certains systèmes d’exploitation offrent la possibilité aux développeurs, de faire en sorte que au sein même de leur application, plusieurs tâches s’exécutent également en parallèle) vous voyez le niveau supplémentaire ? on a du multitâche (multitasking) entre les applications et en plus, au sein même des applications. C’est ce qu’on appelle le multi-threading (yeah !)

Bien sûr, dans ce dernier cas, c’est au développeur de découper son application en tâches « concurrentes » (le système ne peut pas l’inventer ) et pour ce faire, l’OS lui offre tout une série de possibilités d’appels système via les API vues tout au début de l’article (et la boucle est bouclée) pour faire du multi-threading.

Beaucoup d’applications utilisent ce système (les navigateurs internet par exemple : quand ils chargent une page, le chargement et l’affichage de certains éléments de la page fait l’objet d’un thread spécifique qui va vivre sa vie (et on l’espère afficher l’élément) pendant que la page principale continue de se charger...

V.Quelques contre-vérités

Le multitâche de Android est moins bon que celui de Symbian ou de Meego.

Si vous avez bien lu jusqu’ici, vous savez que la question est sans objet. Ces trois systèmes d’exploitation pour mobile implémentent les mêmes concepts que ceux décrits plus haut, y compris le multi-threading.
Vous confondez en fait système d’exploitation multitâche et gestionnaire de tâche qui en résumé se contente de vous offrir une vision des applications qui sont en cours d’exploitation. On est là dans le domaine applicatif.
Ce gestionnaire est juste une application (pas bien complexe du reste) qui vous permet de visualiser (et oui c’est un simple viewer), si celle qui vous est fournie par défaut ne vous convient pas, contentez-vous de la changer !
Et savourez la possibilité de pouvoir le faire librement




Le multi-tâche d’android est un faux multi-tâche, il demande au développeur un effort particulier.

C’est là encore faux, le système gère lui-même on l’a vu le multi-tasking. Ce qui peut demander un effort au développeur c’est l’usage du multi-threading, mais là, c’est le job du dev que de le gérer (et ce dans tous les systèmes ce sera pareil)


VI.Conclusion

J’espère vous avoir fait sentir la mécanique presque « magique » qu’il y a derrière un système d’exploitation multi-tâche. Nous pourrions en parler des heures durant, il y a tant de choses pour lesquelles j’ai dû me refreiner. La programmation système est réellement un métier passionnant où il y a toujours à découvrir, et pardon encore aux experts mais je n'ai fait qu'effleurer ce vaste sujet

Ah oui, j’avais omis de le préciser : Android est bel et bien un système multitasking et multithreading.

Comme tous les OS modernes !?

VII.Postface

J’ai pris plaisir à vous rédiger cet article, si vous avez aimé, appris ou détesté, merci de me faire vos retours, cela m’encouragera

A très bientôt


2 réponse(s) -