Pot un nucli tenir múltiples fils?
Sempre he seguit el concepte que es pot implementar en diversos processadors en el sistema on hi ha més d'un processador a assignar a cada fil i cada fil es pot executar simultàneesy. No hi ha planificació en aquest cas com cada fil té recursos separats per a tots els que hi estan dedicats. Però m'ho torno a llegir en algun lloc que també pugui fer multifillar en un únic sistema de processador. És correcte? i si sí, llavors quina és la diferència entre un sol processador de processador i múltiples sistemes de processadors?
6 respostes 6
Em recenetit llegir-lo en algun lloc que pugui fer multifilant-me en un sol El sistema de processadors també. És correcte? i si sí, llavors què és el Una diferència entre un processador i múltiples sistemes de processadors?
Sí, es pot fer multifils en un únic sistema de processador.
En el sistema multiprocessador, s' executen múltiples fils, simultàniament En diferents nuclis. Eg... Si hi ha dos fils i dos nuclis, cada fil s' executarà en el nucli individual.
En un sistema d' autoprocessadors, s' executa múltiples fils, un rere l' altre o espera fins que acabi un fil o sigui preemptat pel SO, depenent de la prioritat dels fils i de la política de l' usuari. Però els fils en execució, dóna una il· lusió que s' executin simultaniment, relatiu al temps de resposta de l' aplicació requerida de l' espai d' usuari.
Comparació del temps(Example):
si dos fils prenen 10us cadascun a executar, després en un sistema de processador de 2 processadors, el temps net pren 10us
si dos fils prenen 10us cadascun a executar, després en un sistema de processadors, el temps net pren 20us
És clar que es pot fer en un sistema de solprocessadors, i de fet és molt més fàcil d'aquesta manera. Funciona de la mateixa manera que executar múltiples processos -- el nucli, mitjançant un mecanisme d' interrupció o d' un altre mecanisme similar, elàstica, desant el seu estat de màquina, i substituint-ho per l'estat desat prèviament d'un altre -- l' única diferència és que dos fils del mateix procés comparteixen la mateixa memòria virtual espai de memòria, fent que la tasca canvia molt més eficient.
En realitat, llegir diversos sistemes multiprocessadors és molt més difícil, ja que tens problemes d'accés simultània a la memòria de múltiples cpus/cres, i tots els problemes de sincronització de memòria desagradable que sorgeixen d'això.
Podeu tenir més de quatre fils actius en un sistema de nucli quadr. Allà és Previsió, a menys que puguis garantir que els processos no intentin crear més fils que hi ha processadors.
Sí, pots tenir múltiples fils en un ordinador únic.
La diferència entre sistemes de processador i multiprocessadors és que un sistema multiprocessador pot fer més d'una cosa alhora. Pot fer N coses en un moment, on N és el nombre de nuclis de processadors. Un nucli de solprocessador només pot fer una cosa alhora. Com quizCraig va dir en el seu comentari, és la diferència entre sí i percepent.
Sí, ho pots fer totalment. L'edat fa (Win 95?) Vam passar de la multitascació Cooperiva a Multitreading, perquè algú sempre va cagar la part cooperativa. Cada programa del teu ordinador té com a mínim un fil. Possiblement més. I la CPU segueix canviant entre tots aquests fils com bojos uns pocs milions de vegades per segon. Si cap d'ells té res a fer, podria estar inactiu durant algun temps.
Només sistemes multicore volen dir que dos o més d'aquests fils poden executar-se en paral·les.
No obstant això, et porta molt menys a fer-ho. Tot el que podeu fer amb el multifilisme d' una màquina base simple és simular multitascant.
La Mulaking és suficient per evitar que el fil de la IGU s'acabi a causa d'una operació llarga. De tota manera, normalment és complicat implementar, a menys que tingueu una mica d' ajuda del Compilador o Langauge (com C# async... awai). Com a resultat, molts programadors de la IGU van usar multifiling i vaig invocar a la integració falsa. Si aquest codi funciona en un sol o en un nucli múltiples no hi ha companyer per a això.
El més important, la multitascació NO és adequada per a operacions limitades a la CPU. Però el 95% de tots els problemes Async no està vinculat a la CPU. Estan relacionats amb la Xarxa o el disc. En un ordinador únic, el multifilisme tampoc ajuda amb coses lligades a la CPU. Si teniu dos fils que necessiteu per cent temps de CPU (same programam o diferent) però només un nucli per a executar- los, la CPU haurà de canviar entre executar tant al 49% com usar el 2% restant per a tots aquells altres fils que només facin una mica.
Finalment només pocs problemes poden ser multifils. Intenta multiplicar la seqüència Fibonacci (un fil per a cada parella) sense fer més lent, més memòria exigent i més complex.
tl;dr; Necessiteu multiplicar i un ordinador multicore per a problemes relacionats amb la CPU. La majoria de problemes asyncs no estan vinculats a la CPU. L'autocarascament és suficient. I es pot totalment multitasca usant fils, fins i tot en una única màquina de nucli.
Aquest és un exemple molt simplificat. És un prototip per a un programa que estic construint. És una implementació de la diversitat cooperativa en un sol fil.
principal Simplement estableix la abandona Bandera a false, i omple una matriu de punters de funció (les tasques), i després crida repeteix .
repeteix ús setjmp per a establir un punt de retorn per a un salt no local (un salt sortida de la funció a una localització anterior de l' execució) i llavors procediu a cridar la primera tasca (funció).
Cada tasca acaba amb Rendiu a() . Això és, en realitat no hi ha cap de les funcions de la tasca TornaNAME OF TRANSLATORS . No només no contenen un Retorn; declaració (que estaria bé des de que són buit funcions, ead. Procediments), però no arribaran al TornaNAME OF TRANSLATORS Fins i tot si fos allà perquè interès Salta de nou a la setjmp Truca, aquesta vegada dóna un 1 a la si declaració en repeteix . La declaració controlada per la si La declaració selecciona una tasca diferent abans de tornar a introduir- la temps@ info: whatsthis Un bucle.
Cada funció de tasques executa múltiples vegades, donant a la Enviador d'enviaments (el si(setjmp... declaració) que selecciona una nova tasca a executar.
La diferència entre aquest exemple i un sistema de gravació d'ordinadors d'un solprocessador és que el processador real permet interrompre una tasca al mig de l'execució i reprendre-la més tard des del mateix punt de vista. No és possible en una simulació C amb tasques com a funcions simples. No obstant això, les tasques es poden crear d' una seqüència de funcions C que cada interès al despatx (una matriu de punters de funcions, potser, o una llista lligada).
En un procés multifil en un únic processador, el processador pot canviar els recursos d' execució entre fils, resultant en execució concurrent. La competència indica que més d' un fil està fent progressos, però els fils no funcionen simultàniament. El canvi entre els fils passa ràpidament que els fils semblarien que s' executin simultàniament.
En el mateix procés multimat en un entorn multiprocessador compartit, cada fil del procés pot executar actualment en un processador separat, resultant en execució paral· lela, que és una execució simultània veritable. Quan el nombre de fils en un procés és menor o igual que el nombre de processadors disponibles, el sistema de fils operatiu assegura que cada fil s' executa en un processador diferent. Per exemple, en una matriu que està programada amb quatre fils, i s' executa en un sistema que té dos processadors duals, cada fil de programari pot executar simultàniament en els quatre nuclis dels processadors per calcular una fila del resultat alhora.
Artículos Relacionados:
- Un portàtil pot tenir 8 nuclis?
- Un portàtil pot tenir 6 nuclis?
- Una mare pot tenir dos processadors?
- Pot un nucli de la CPU tenir 4 fils?
- Processador -