Firul Conceptul (fire)

Termenul „proces ușor“ (proces ușor), sau, așa cum o numesc ei în versiunile moderne de UNIX, „fir“ (fir, un fir) a fost mult timp cunoscut în domeniul sistemelor de operare. Intuitiv, memorie virtuală, și conceptul flux de instrucțiuni care se execută în memoria virtuală, în principiu, sunt ortogonale. Nici din care aceasta nu implică faptul că o memorie virtuală trebuie să fie conformă cu una și doar un singur fir de control. De aceea, de exemplu, în sistemul de operare Multics a fost permis să aibă un număr arbitrar de procese desfășurate în comun (partajat) memorie virtuală.

Procesul de legare generează memoria virtuală a cel puțin două probleme. Prima problemă se referă la așa-numitele sisteme în timp real. Astfel de sisteme sunt în general concepute pentru a controla simultan mai multe obiecte externe și cel mai natural prezentat ca un set de „paralel“ (sau „cvasi-paralelă“) realizată prin comenzi de curgere (adică, procesele care interacționează). Cu toate acestea, în cazul în care procesul este asociat cu fiecare memorie virtuală separată, schimbarea contextului procesorului (adică trece de la efectuarea un proces pentru a efectua alt proces) este o operație relativ costisitoare, astfel încât abordarea convențională folosind sistemul de interferență UNIX OS în aplicații în timp real.

Al doilea (și poate mai semnificativ) problema a fost apariția așa-numitelor simetrice multiprocesor arhitecturi (SMP - Symmetric Multiprocessor Arhitecturi). În aceste calculatoare sunt fizic prezente mai multe procesoare care au aceeași viteza de acces la memoria principală partajată. Până în momentul în care SMP a fost constatat faptul că tehnologia de programare încă nu se poate oferi un mod eficient și sigur pentru programarea paralelă reală. Prin urmare, era necesar să se întoarcă la o programare paralelă clară folosind procese paralele în memoria virtuală (și, prin urmare principal) partajat cu sincronizare explicită.

Subiect (filet) - este un flux independent de controlul executat în cadrul unui proces. De fapt, procesul de noțiunea de context, se modifică după cum urmează. Orice lucru care nu face parte din fluxul de control (memorie virtuală, descriptori de fișiere deschise, etc.), este, în contextul general al procesului. Lucrurile, care sunt caracteristice pentru controlul debitului (registrul context, stive de diferite niveluri etc.) sunt transferate dintr-un context de proces la firul context. Imaginea de ansamblu este prezentată în figura 3.4.


Figura 3.4. contextul procesului și raportul de contexte de fire

După cum se poate observa din această figură, toate firele procesului se desfășoară în contextul său, dar fiecare fir are propriul context. Context fire ca contextul unui proces constă utilizatorului și componente nucleare. componentă context, fir personalizat cuprinde un teanc de fire individuale. Deoarece firul de un proces realizat în memoria virtuală comună (toate proces de filamente au acces egal la orice parte a memoriei virtuale de proces), o stivă (segment de stivă) de orice proces de fire, în principiu, nu este protejat de arbitrar (de exemplu, din cauza unei erori) de acces prin alte fire. Contextul fir componentă nucleară include registrul său context (în mod specific, contorul de program conținutul registrului) și stive nucleare create dinamic.

Această scurtă discuție a conceptului firului pare suficient pentru a înțelege că introducerea mecanismului UNIX proceselor ușoare necesită nucleu semnificativ de sisteme de rework.

articole similare