Êtes-vous convaincu qu'il en existe, du moins lorsque Linux est fourni et installé comme l'une des distributions courantes et qu'aucune reconstruction / reconfiguration n'a été effectuée?
Selon la page Wikipedia et le chapitre sur la planification du livre que je lis, il y en a, mais la plupart du temps Linux est couvert et presque rien sur Windows. De plus, il semble y avoir des différences entre les versions du noyau sous Linux et même entre XP / Vista / 7 sous Windows, je cherche donc des différences générales, le cas échéant.
De grandes différences? ... eh bien, pour un Linux, vous avez le choix entre plusieurs, si vous voulez. Mais je pense que la question est trop vaste pour qu'on puisse y répondre utilement. BTW: vous devrait clairement préciser que vous voulez dire le planificateur de thread, pas cron et ses alternatives sur Linux et Windows.
0xC0000022L
Notez également que Linux a beaucoup ordonnanceurs. Les plus remarquables sont le planificateur complètement équitable et le planificateur F.ck de Brain.
new123456
vous devrez peut-être demander à re windows. demander re linux. étudier les deux. comprendre les différences. pourrait poser plus de questions techniques qui ne sont peut-être pas trop spécifiques, sur un site informatique d'échange de pile. Quel livre es-tu en train de lire? william stalling a un excellent livre sur les systèmes d’exploitation qui couvre la planification, mais je ne pense pas que cela va spécifique au système d’exploitation.
Les threads sont planifiés pour s'exécuter en fonction de leur priorité de planification. Chaque
le thread se voit attribuer une priorité de planification. La gamme de niveaux de priorité
de zéro (priorité la plus basse) à 31 (priorité la plus élevée). Seulement le
Un fil de page zéro peut avoir une priorité de zéro. (Le fil de page zéro est
un thread système responsable de la remise à zéro des pages libres lorsqu'il y a
pas d'autres threads à exécuter.)
Le système traite tous les threads avec la même priorité comme étant égaux. le
le système attribue des tranches de temps tour à tour à tous les threads
avec la plus haute priorité. Si aucun de ces threads n'est prêt à être exécuté,
le système attribue des tranches de temps tour à tour à tous les threads
avec la priorité la plus haute suivante. Si un thread plus prioritaire devient
disponible pour fonctionner, le système cesse d'exécuter la priorité inférieure
fil (sans lui permettre de finir avec sa tranche de temps), et
assigne une tranche de temps complet au thread de priorité supérieure.
La priorité de chaque thread est déterminée par les critères suivants:
La classe de priorité de son processus
Le niveau de priorité du thread dans la classe de priorité de son processus
Comme mentionné par d’autres, Linux traite les processus et les threads du point de vue de la planification. La planification de processus / threads sous Linux est configurable. Il existe différents algorithmes de planification, dont certains peuvent être configurés en recompilant le noyau:
Notez que défaut ci-dessus signifie défaut dans le noyau vanille. Certaines distributions sont livrées avec un noyau par défaut préconfiguré pour utiliser un planificateur par défaut différent.
En plus de l'algorithme de planification, il existe également politiques du planificateur : SCHED_FIFO, SCHED_BATCH, SCHED_IDLE, SCHED_OTHER et SCHED_RR; qui peut être modifié au moment de l’exécution et qui décrit le type de charge de travail d’un processus.
L’idée principale du CSA est de maintenir l’équilibre (équité) dans
fournir du temps processeur aux tâches. Cela signifie que les processus doivent être
étant donné une bonne quantité du processeur. Quand le temps des tâches est fini
d’équilibre (c’est-à-dire qu’une ou plusieurs tâches ne reçoivent pas une quantité équitable
de temps par rapport aux autres), alors ces tâches déséquilibrées devraient être
donné le temps d'exécuter.
Pour déterminer le solde, le CFS maintient le temps
fourni à une tâche donnée dans ce qu'on appelle le runtime virtuel. le
le temps d'exécution virtuel d'une tâche plus petite, c'est-à-dire le moins de temps possible
la tâche a été autorisée à accéder au processeur - plus ses besoins sont élevés
pour le processeur. Le CFS comprend également le concept de dormeur
équité pour garantir que les tâches qui ne sont pas exécutables actuellement (par exemple,
exemple, en attente d’entrée / sortie) reçoivent une part comparable du processeur
quand ils en ont finalement besoin.
Mais plutôt que de maintenir les tâches dans une file d'attente d'exécution, comme cela a été fait dans
précédents ordonnanceurs Linux, le CFS gère un système chronologique rouge-noir
arbre (voir Figure 1). Un arbre rouge-noir est un arbre avec quelques
propriétés intéressantes et utiles. Tout d'abord, c'est auto-équilibrage, qui
signifie qu'aucun chemin dans l'arbre ne sera jamais plus de deux fois plus long que
tout autre. Deuxièmement, les opérations sur l’arbre ont lieu en temps O (log n)
(où n est le nombre de nœuds dans l’arbre). Cela signifie que vous pouvez
insérer ou supprimer une tâche rapidement et efficacement.
Donc principales différences:
les fenêtres
Processus de planification en utilisant la file d'attente de commentaires multiniveaux + Planification de threads en utilisant la file d'attente multiniveaux. Le planificateur de threads choisit simplement le thread le plus prioritaire, le planificateur de processus est plus intelligent et utilise la file d'attente de commentaires.
Linux
Le planificateur de processus et de threads unifié, configurable, utilise par défaut CFS. Le planificateur utilise une métrique d'équité et utilise la priorité pour orienter la distribution de la CPU vers des processus plus prioritaires.
Mais les processus Winoows ne sont pas des unités d'exécution; ce sont des conteneurs de ressources (y compris, si le processus est en cours d'exécution, au moins un thread). Faire une distinction entre la planification de processus et la planification de threads me semble erroné. Je pense que votre première source est soit trop simplifiée, soit obsolète, et vous en lisez peut-être trop dans l'entrée Wikipedia. La seule manière dont un processus interagit avec le planificateur est de fournir une priorité de base à ses threads.
Ian Ni-Lewis
1
Si vous vous référez au planificateur de noyau (et non à un planificateur de tâches périodique comme certains commentaires le suggèrent), Linux est assez simple: en termes de planification, Linux ne fait aucune différence entre les threads et les processus. Du point de vue du noyau, ce ne sont que des unités de planification; la différence repose sur le poids du commutateur de contexte. Ceci est parfois appelé un modèle de filetage un à un .
Comme il y a moins d'informations disponibles sur les internes de Windows, on peut en dire peu. Cependant, Windows a historiquement différencié les processus et les threads, il est donc plus probable qu'ils soient traités différemment en termes de planification.
cron
et ses alternatives sur Linux et Windows.Réponses:
Selon Priorités de planification chez MSDN :
Je crois que ce planificateur de fil décrit un algorithme appelé file d'attente à plusieurs niveaux , qui est un algorithme de planification beaucoup plus simple que la file d’attente de retour multiniveau. Notez que Windows ' processus planificateur utilise file d'attente de commentaires à plusieurs niveaux , selon Wikipédia . Depuis Windows 7 et Windows Server 2008 R2, il existe également Planification en mode utilisateur ce qui permet aux processus de gérer leur propre planification de threads.
Comme mentionné par d’autres, Linux traite les processus et les threads du point de vue de la planification. La planification de processus / threads sous Linux est configurable. Il existe différents algorithmes de planification, dont certains peuvent être configurés en recompilant le noyau:
Notez que défaut ci-dessus signifie défaut dans le noyau vanille. Certaines distributions sont livrées avec un noyau par défaut préconfiguré pour utiliser un planificateur par défaut différent.
En plus de l'algorithme de planification, il existe également politiques du planificateur : SCHED_FIFO, SCHED_BATCH, SCHED_IDLE, SCHED_OTHER et SCHED_RR; qui peut être modifié au moment de l’exécution et qui décrit le type de charge de travail d’un processus.
Le planificateur par défaut actuel, Planificateur parfaitement équitable, utilise un arbre rouge-noir pour maintenir l’équité de la planification. De À l'intérieur du planificateur complètement équitable de Linux 2.6 :
Donc principales différences:
les fenêtres
Linux
la source
Si vous vous référez au planificateur de noyau (et non à un planificateur de tâches périodique comme certains commentaires le suggèrent), Linux est assez simple: en termes de planification, Linux ne fait aucune différence entre les threads et les processus. Du point de vue du noyau, ce ne sont que des unités de planification; la différence repose sur le poids du commutateur de contexte. Ceci est parfois appelé un modèle de filetage un à un .
Comme il y a moins d'informations disponibles sur les internes de Windows, on peut en dire peu. Cependant, Windows a historiquement différencié les processus et les threads, il est donc plus probable qu'ils soient traités différemment en termes de planification.
la source
C2H5OH, Pourquoi diriez-vous qu'il n'y a pas de documentation sur Windows Internals quand tout est disponible? Me bat... Vous pouvez lire la plupart des bases ici, http://msdn.microsoft.com/en-us/library/windows/desktop/ms684259(v=vs.85).aspx
Il existe un article sur Wikipedia (Threads (computing)) qui énonce la plupart des différences, mais sans les sources citées, alors ...
la source