Ce este procesor multi-threading

Există mai multe principii diferite de multi-threading (ca radical diferite, și diferite numai în detalii).

Dacă este foarte scurtă plimbare în istorie, veți obține acest lucru:







1) sistem de operare cu un singur tasking, cum ar fi prima versiune de DOS - este doar o singură problemă - este sarcina tuturor instrucțiunile sunt transmise procesorului.

2) Start multitasking - există un suport dispozitiv de imprimantă pentru DOS, care se imprimă în paralel pentru a efectua alte sarcini. Acesta este modul în care ideea de a întrerupe. În cazul în care executarea sarcinii curente este întreruptă și începe să realizeze alte, atunci este întreruptă și se întoarce tot primul.

3) Conceptul de curgere. Orice aplicație și tot în interiorul înfășurat într-un flux care comută sistemul de operare în sine. Pe de o parte, switch-uri destul de încet, dar pe de altă parte - pentru utilizatorul nu este aproape vizibil. Pornește în windwosului 95 de două duzini de aplicații, fiecare dintre care 2-3 ar putea curge cu ușurință.

4) Ideea multiprocesare. Pentru a mări viteza unei propuneri a fost făcută să ia în considerare fire diferite pe procesoare diferite - astfel încât acestea trebuie să treacă mai rar, iar apoi întregul sistem va funcționa mult mai rapid.







5) Ideea anterioară la acel moment era prea scump și a fost făcută pentru a reduce conceptul de cost de nuclee - foarte partea din calcul făcut în dublu exemplar, și de a exploata procesorul de a părăsi unul pe ambele nuclee. Ca rezultat, fiecare nucleu poate procesa mai multe fluxuri.

Total. Mnogotochnost realizabilă și fără sprijinul din partea procesorului. Dar mai multe nuclee într-un procesor, cu atât mai notabile este efectul multithreading.

Și cum OS determină cele mai bune fluxuri în aplicații din lumea reală? Care este criteriul pe care doriți să comutați de la acest flux la altul, în cazul în care cererea în sine a oricăror fluxuri și nu știe? Sunt de acord că încheierea unui I / O - este motivul pentru trecerea la o altă aplicație, iar în cazul în care toate nu au I / O, atunci? Și de ce multi-core, în cazul în care trecerea la o altă sarcină, procesorul nu este încă inactiv? 3 ani în urmă -

Prea multe probleme diverse, dar voi încerca să răspund:
1) Axa în sine este destul de înțelege ce aplicații și cât de multe fire sunt create. Tot la fel, ea vede toate apelurile din aplicația.
2) Pentru a trece de la un flux la altul, nu este necesar (de obicei) ceva de învățat din aplicație. Tocmai l oprim și schimbați contextul prescurtare pentru altceva. În Windows, există 11 niveluri de aplicare prioritare (numai 6 disponibil pentru utilizator), pe axa care sortează fluxurile și ia decizia de a schimba.
3) Doar în timp arbitrare Comuta. Acesta este motivul pentru care această operațiune este suficient de lung - aveți nevoie pentru a salva contextul stream-ul curent, descărcați noi, și doar apoi trece la numere.
4), este necesară multi-core pentru accelerare. performanță de creștere, deși nu liniar, dar este destul de considerabilă. 3 ani în urmă -