multitache, kesako?

multitache, kesako? - Linux et OS Alternatifs

Marsh Posté le 15-02-2002 à 19:04:11    

Est ce que kelk1 pourrai expliquer (simplement) a un debutant et pas informaticien kom moi le principe du multitache et repondre a C 2 kestions:
 
Est ce que Linux marche en multitache avec tous les processeurs (un pote ma affirme le contraire)?
kelle est la difference avec windoz (SVP evite les Windoz C de la merde et Linux C top, je veux un truc constrictif avec pour et contre de chaque)?
 
Merci

Reply

Marsh Posté le 15-02-2002 à 19:04:11   

Reply

Marsh Posté le 15-02-2002 à 19:40:06    

un systeme multitache est un systeme qui permet de faire tourner plusieurs applications en même temps. Seule les Unix, Linux, OS/2, Solaris &co sont capables de faire cela. Windows n'est pas un systeme multitaches mais un systeme multithreads qui consiste en fait a separer un programme en plusieurs processus afin de tenter de se rapprocher d'un system multitaches a proprement parlé.
 
Voila mr :)


---------------
Open your mind, close your windows
Reply

Marsh Posté le 15-02-2002 à 19:43:30    

merci VinKill,
 
kest ce que t veux dire par " multithreads qui consiste en fait a separer un programme en plusieurs processus "
 
et a propos de ma premiere kesion?

Reply

Marsh Posté le 15-02-2002 à 19:48:02    

ba enfaite je pense qu'il voulait dire que windows (separe les taches en plusieur parties donc cela donne des threads)==>ca j'en suis pas sur.Et ensuite ,il traite une threads de chaque programme l'une apres l'autre.
Donc voila  
mais je sais pas si mon explication est exact..

Reply

Marsh Posté le 15-02-2002 à 19:48:52    

multi = plusieurs
tache = acte
 
multitache = faire plusieurs acte en même temps. Par example j'imprime et en même temps je peux continuer à bosser. sous DOS tu lances une command et tant quelle n'est pas finie tu ne peux rien faire ( = monotache ou encore DOS est une grosse tache ).
 
Linux = multitache préemptif ( i.e c'est le kernel qui décide quand il arrête une application pour donner la main à une autre ).
 
explication : soit 2 applis lancées a1 et a2. On ne peut matériellement les exécuter en même temps sur un systême UP ( Uniprocesseur ) car un processeur ( à moins d'être parallélisé ) ne fait qu'une chose à la fois. si les 2 applis prennent un temp t1 et t2 respectivement ( t1 = t2 = t ) pour s'éxécuter à la suite, tu auras ceci :
+ sous DOS ( monotache ) le temps sera 2*t  ( grosso ) avec une appli exécuté à la suite. d'abord a1 et quand a1 est fini on lance a2
+ multitache : a1 lancé puis suspendu à t1/2 a2 lancé puis suspendu lui aussi à t2/2, on remet a1 qui se fini et ensuite on fini a2. Conséquence tu as l'impression que les 2 applis fonctionnent en même temps. Bien sûr les applis souvent ne sont suspendue que quelques millisecondes. C'est à peine perceptible ( enfin cela dépend de d'autres facteurs ).
 
Linux et win9x/NT sont multitache.
 
linux = multitache préemptif : c'est le noyau qui décide quand suspendre une appli pour poursuivre l'exécution d'une autre. C'est grosso modo le rôle de ce qui est appelé le schedule ( vient de l'anglais to schedule = plannfier ). les emplacements de mémoires sont protégées ( cf explication plus loin ).
 
win9x = multitaches coopératif : les applis décident entre elles quand elles rendent la main. Si une ne veut pas elle peux bloquer le système. Exemple quand tu imprimes ( lors de l'envoie de donnée au port parralèle ) ou accèdes à une disuquette, le système se fige pdt un moment, tu ne peux pas vraiment faire qualquelchose en même temps. tu remarques très bien que les autres applis sont "suspendues". Autre pb, un applie plante, entre dans uen boucle sans fin, ne rend pas la main, et bien tu es dans la merde. le noyau n'a aucun pouvoir ( Windows ne peut arréter se programme car le sys est occupé blablabla ).
De plus les emplacements de mémoires ne sont pas protégés, i.e a1 écrie dans zone1 et a2 écrit dans zone2. a1 n'est pas censé toucher à zone2 et a2 pas censé toucher à zone1. a1 plante et fait n'importe koi. Comme les emplacements mémoires ne sont pas protégées, a1 peut corrompre zone2 entrainant alors le plantage de a2. C'est tout le système qui s'écroule ( BSOD = Blue Screen Of Death ou Ecran Bleu ). Ainsi par example un bête lecteur de Cd si il était buggé pouvait faire planter tous le sys.*
 
winNT ( Nt4, 2k, XP ) = multitache préemptif et emplacements mémoire protéges.
 
Pour avoir du full multitache il faut plusieurs processeurs exploités de façon symmétrique (en mêm temps/en parralèle ). C'est le SMP ( symetric Multi Processing ).
win9x ne gère pas le SMP
winNT le gère
linux le gère
 
http://www.freenix.fr/unix/linux/H [...] WTO-6.html
http://www.linux-france.org/prj/ja [...] rcche.html
http://www.linux-france.org/prj/ja [...] hread.html
http://www.linux-france.org/prj/jargonf/S/SMP.html
http://www.linux-france.org/prj/ja [...] moire.html
http://www.linux-france.org/prj/ja [...] acute.html
http://www.linux-france.org/prj/ja [...] acute.html
http://www.linux-france.org/prj/ja [...] ation.html
http://www.linux-france.org/prj/ja [...] duler.html
http://www.jackperr.com/perso/linus/linux_dompub.php3
http://glinux.tuxfamily.org/?page=glossaire#man
 
 
google c'est vraiment de la balle traçante :
http://www.google.com/linux?hl=fr&q=multitache&lr=
 
PS : désolé pour les fautes et autres imprécisions. Je me suis emmélé à un moment et ai fait un truc BCP plus compliqué que je ne le voulais

 

[jfdsdjhfuetppo]--Message édité par Dark_Schneider--[/jfdsdjhfuetppo]


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 15-02-2002 à 19:54:05    

ton programme en lui meme est un processus. Le fait de faire du multithreading c'est de decomposé ton processus en plusieurs autres processus qui peuvent etre geres par un ou plusieurs processeurs.  
 
En ce qui concerne linux, c bien un multitaches.


---------------
Open your mind, close your windows
Reply

Marsh Posté le 15-02-2002 à 20:05:41    

merci, je pense que je pense que je commence a comprendre le principe.

Reply

Marsh Posté le 15-02-2002 à 20:17:59    

dark, tu dis que linux fonctionne en mode coopératif donc comme windows 98.
Ca crain pas un peux cette fçon de fonctionner?????
PS: tu as trop bien expliquer on dirais le cour que j'ai eu sur Windows. Bravo.

Reply

Marsh Posté le 15-02-2002 à 20:18:50    

ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
me suis trompé. Linux c'est du préemptif
 
sorry
 
je corrige
 
frapper moi !
 
 
Mea Culpa, Mea Maxima Culpa

 

[jfdsdjhfuetppo]--Message édité par Dark_Schneider--[/jfdsdjhfuetppo]


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 15-02-2002 à 20:20:18    

et pourtant au début je ne m'étais pas trompé. hum je dois changer l'OS de mon cerveau. ;)


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 15-02-2002 à 20:20:18   

Reply

Marsh Posté le 15-02-2002 à 20:26:07    

Dark_Schneider a écrit a écrit :

multi = plusieurs
tache = acte
 
multitache = faire plusieurs acte en même temps. Par example j'imprime et en même temps je peux continuer à bosser. sous DOS tu lances une command et tant quelle n'est pas finie tu ne peux rien faire ( = monotache ou encore DOS est une grosse tache ).
 
Linux = multitache préemptif ( i.e c'est le kernel qui décide quand il arrête une application pour donner la main à une autre ).
 
explication : soit 2 applis lancées a1 et a2. On ne peut matériellement les exécuter en même temps sur un systême UP ( Uniprocesseur ) car un processeur ( à moins d'être parallélisé ) ne fait qu'une chose à la fois. si les 2 applis prennent un temp t1 et t2 respectivement ( t1 = t2 = t ) pour s'éxécuter à la suite, tu auras ceci :
+ sous DOS ( monotache ) le temps sera 2*t  ( grosso ) avec une appli exécuté à la suite. d'abord a1 et quand a1 est fini on lance a2
+ multitache : a1 lancé puis suspendu à t1/2 a2 lancé puis suspendu lui aussi à t2/2, on remet a1 qui se fini et ensuite on fini a2. Conséquence tu as l'impression que les 2 applis fonctionnent en même temps. Bien sûr les applis souvent ne sont suspendue que quelques millisecondes. C'est à peine perceptible ( enfin cela dépend de d'autres facteurs ).
 
Linux et win9x/NT sont multitache.
 
linux = multitache préemptif : c'est le noyau qui décide quand suspendre une appli pour poursuivre l'exécution d'une autre. C'est grosso modo le rôle de ce qui est appelé le schedule ( vient de l'anglais to schedule = plannfier ). les emplacements de mémoires sont protégées ( cf explication plus loin ).
 
win9x = multitaches coopératif : les applis décident entre elles quand elles rendent la main. Si une ne veut pas elle peux bloquer le système. Exemple quand tu imprimes ( lors de l'envoie de donnée au port parralèle ) ou accèdes à une disuquette, le système se fige pdt un moment, tu ne peux pas vraiment faire qualquelchose en même temps. tu remarques très bien que les autres applis sont "suspendues". Autre pb, un applie plante, entre dans uen boucle sans fin, ne rend pas la main, et bien tu es dans la merde. le noyau n'a aucun pouvoir ( Windows ne peut arréter se programme car le sys est occupé blablabla ).
De plus les emplacements de mémoires ne sont pas protégés, i.e a1 écrie dans zone1 et a2 écrit dans zone2. a1 n'est pas censé toucher à zone2 et a2 pas censé toucher à zone1. a1 plante et fait n'importe koi. Comme les emplacements mémoires ne sont pas protégées, a1 peut corrompre zone2 entrainant alors le plantage de a2. C'est tout le système qui s'écroule ( BSOD = Blue Screen Of Death ou Ecran Bleu ). Ainsi par example un bête lecteur de Cd si il était buggé pouvait faire planter tous le sys.*
 
winNT ( Nt4, 2k, XP ) = multitache préemptif et emplacements mémoire protéges.
 
Pour avoir du full multitache il faut plusieurs processeurs exploités de façon symmétrique (en mêm temps/en parralèle ). C'est le SMP ( symetric Multi Processing ).
win9x ne gère pas le SMP
winNT le gère
linux le gère
 
http://www.freenix.fr/unix/linux/H [...] WTO-6.html
http://www.linux-france.org/prj/ja [...] rcche.html
http://www.linux-france.org/prj/ja [...] hread.html
http://www.linux-france.org/prj/jargonf/S/SMP.html
http://www.linux-france.org/prj/ja [...] moire.html
http://www.linux-france.org/prj/ja [...] acute.html
http://www.linux-france.org/prj/ja [...] acute.html
http://www.linux-france.org/prj/ja [...] ation.html
http://www.linux-france.org/prj/ja [...] duler.html
http://www.jackperr.com/perso/linus/linux_dompub.php3
http://glinux.tuxfamily.org/?page=glossaire#man
 
 
google c'est vraiment de la balle traçante :
http://www.google.com/linux?hl=fr&q=multitache&lr=
 
PS : désolé pour les fautes et autres imprécisions. Je me suis emmélé à un moment et ai fait un truc BCP plus compliqué que je ne le voulais  
 
 




 
 
a chaque réponse que tu donne, tu m'impressionne un peu plus  :jap:

Reply

Marsh Posté le 15-02-2002 à 20:28:30    

d'accord avec dark sauf sur les taches qui s'arretent a t1/2, c'est un peu plus compliqué, il y a divers ordonnancements (EDF,round robin... ) certains favorisent les taches à echeances courtes (qui doivent se terminer au + tot) d'autres allouent un quotas de temps processeur à chaque taches en fonctionnant en fifo, ceci pour eviter les famines (taches qui n'a jamais acces au processeur).  
ouala :D  
 
pour plus d'informations faire des recherches sur OS temps réels dans ton amis (google)

 

[jfdsdjhfuetppo]--Message édité par zerod--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 15-02-2002 à 20:35:17    

En fait si j'ai bien compris, linux c'est préemptif en espace utilisateurs, et coopératif en espace noyau : si du code en espace noyau boucle sans passer la main, ça bloque le sytème ; le même code en espace utilisateur ne pose aucun problèmes. En tout cas pour les noyaux 2.4 et précédents, puisque le « patch preempt », qui sera intégré aux 2.5, offre du mutlitache préemptif en espace noyau.
 
Sinon la bonne explication est celle de Dark_Schneider. Un système multitache donne l'impression d'une exécution simultanées des différents processus ou threads (il y a des threads sous linux aussi) en découpant le temps en « quantum » : il accorde un quantum de temps à un processus, puis l'endort et accord un nouveau quantum de temps à un autre processus. L'ordre dans lequels les processus obtiennent les quantums de temps est déterminé par un « scheduler », selon une politique qui dépend de  l'OS. Mais en aucun cas on ne peut dire que l'OS découpe les taches en threads... Un thread, c'est quelque chose qui est défini explicitement à la programmations.

 

[jfdsdjhfuetppo]--Message édité par matafan--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 15-02-2002 à 20:40:31    

Dark_Schneider a écrit a écrit :

win9x = multitaches coopératif : les applis décident entre elles quand elles rendent la main.



Ah non. Le multitâche coopératif, c'est MacOS (avant MacOS X) et Windows 3.1.
Win9x/ME, c'est du multitâche préemptif, en mode 32 bits protégé (les applications ont leur propre espace mémoire et ne peuvent se voir les unes les autres), comme winNT ou unix. Les deux différences sont :
- le noyau de win9x est encore en partie en 16 bits, et quand il repasse en mode 16 bits, ça le ralentit et c'est une source de bugs ;
- la gestion de la mémoire est buggée à mort, donc souvent, quand une appli écrit (ou lit, mais c'est moins grave) hors de l'espace qui lui est alloué, au lieu de se faire instantanément tuer pour erreur de segmentation, elle va écrire dans la mémoire allouée pour une autre application.
 
En revanche, linux (et probablement Windows NT) s'exécute exclusivement en mode 32 bits protégé ; il est impossible d'y exécuter du code 16 bits (flasher un BIOS, par exemple, y est impossible), ou alors dans un émulateur.
 
Et oui, linux comme *BSD sont multitâches et multi-utilisateurs, quel que soit le processeur, c'est la définition d'un unix. Que ce soit sur un Athlium 4 GHz, sur une Dreamcast, une Playstation, un Palm ou un Atari.

Reply

Marsh Posté le 15-02-2002 à 20:56:46    

et macOS X c'est du multitache comment ?
Il parait que les programmeur qui ont fait macOSX ont bien fait leur boulot en ce qui concerne le multitache.

Reply

Marsh Posté le 15-02-2002 à 21:00:34    

MacOS X basé sur *NSD -> *BSD = Unix -> Unix = préemptif


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 15-02-2002 à 21:56:52    

windows est multi tache coop!!
 
Dark a donné les bons exemples, rien a redire!

Reply

Marsh Posté le 15-02-2002 à 22:11:17    

trictrac a écrit a écrit :

windows est multi tache coop!!
 




 
3.1 oui. 9X est préemptif (sauf le sous système 16bits), mais une tache peut quand même arriver a tout prendre si elle le reclame à l'ordonnanceur.
 
Il est aussi sensé être en mode protégé, d'ailleur un programme qui ecrit n'importe ou se fait jeter normalement. Mais toute personne ayant tenté de développer sous 9X te dira qu'il se rate régulièrement. J'ignore pourquoi.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 16-02-2002 à 09:42:56    

lecture intéressante :
http://casteyde.christian.free.fr/system/win/
 
moi je stick sur le coopératif.


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 16-02-2002 à 22:57:20    

Sous Linux et NT, la gestion des processeurs est  symétrique (ce qui veut dire processeurs non spécialisés)
 
Novell 4 et 5 : processeurs asymétriques = 1 proco pour gérer les droits d'accès, 1 proco pour gérer les disques durs.
 
IBM AIX : Gestion plus complexe, jusqu'à 8000 processeurs montés en parallèle (ex.: Deep Blue avec 256). Il ne s'agit plus de multitâche mais de multitraitement : Plusieurs procos pour un seul programme.
 
Il se peut que je me trompe je manque d'info sur AIX.

 

[jfdsdjhfuetppo]--Message édité par AlphaT--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 17-02-2002 à 21:29:07    

Non et non, Windows 9x est un multitâche préemptif. Buggé, mais préemptif.
 
La preuve, quand on fait Control-Alt-Suppr, on peut envoyer un signal de fermeture à une tâche, et si elle ne répond pas au bout de 5 secondes, il propose de la tuer purement et simplement ; impossible avec un multitâche coopératif, car l'application ne rendrait jamais la main !
 
Pour ce qui est du bug qui permet à une appli d'obtenir une priorité supérieure au système, il est toujours présent dans Windows 2000 et XP (Microsoft appelle ça une fonctionnalité).

Reply

Marsh Posté le 17-02-2002 à 21:43:31    

c'est pkoi je me tape un BSOD des fois quand il me dit que le sys est occupé et CTRL+ALT+SUPPR pour continuer ? et quand je fais CTRL+ALT+SUPPR j'ai ... le même BSOD ? justement l'appli ne rend pas la main et win9x n'arrive pas à la tuer !
solution ? reset hard
 
 
ki n'ayant pas utilisé win9x n'a pas été confronté à ce pb. C'est justement une des choses qui m'ont fait préférer Unix ! ( kill -9 -1 me fait trop tripper )


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 17-02-2002 à 22:09:43    

Bah bien sûr, ce que j'ai expliqué, c'est ce qui se passe quand ça marche bien (mais ça m'est arrivé plusieurs fois, si si !). Mais un BSOD, c'est complètement différent, c'est un plantage du noyau. Il suffit que l'appli ait réussi à écrire dans la mémoire du noyau, ou que le système ne soit pas capable de la tuer dans certaines conditions, et c'est le BSOD. Bref, le problème de Win9x, c'est bien que le noyau n'est pas assez protégé.

Reply

Marsh Posté le 18-02-2002 à 10:11:46    

AlphaT a écrit a écrit :

 
IBM AIX : Gestion plus complexe, jusqu'à 8000 processeurs montés en parallèle (ex.: Deep Blue avec 256). Il ne s'agit plus de multitâche mais de multitraitement : Plusieurs procos pour un seul programme.
Il se peut que je me trompe je manque d'info sur AIX.  




Aix c'est un unix multitache premptif et multiutilisateurs que ce soit avec 1 ou plusieurs proc.
Je le trouve très solide, par rapport à un linux par exemple.


---------------
Folding : sigFAH  ----  stanford
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed