Sarcină (calcul) - Task (computing)
În calcul , o sarcină este o unitate de execuție sau o unitate de lucru. Termenul este ambiguu; termenii alternativi preciși includ proces , proces ușor , fir (pentru execuție), pas , cerere sau interogare (pentru lucru). În diagrama alăturată, există cozi de lucru de intrat și de efectuat, și un grup de fire de fire pentru a efectua această lucrare. Fie unitățile de lucru în sine, fie firele care execută lucrarea pot fi denumite „sarcini”, iar acestea pot fi denumite respectiv cereri / răspunsuri / fire, sarcini primite / sarcini / fire finalizate (așa cum este ilustrat) sau solicitări / răspunsuri / sarcini.
Terminologie
În sensul „unității de execuție”, în unele sisteme de operare , o sarcină este sinonimă cu un proces , iar în altele cu un fir . În execuția non-interactivă ( procesare batch ), o sarcină este o unitate de execuție în cadrul unei lucrări , sarcina în sine fiind de obicei un proces. Termenul „ multitasking ” se referă în primul rând la sensul procesării - sarcini multiple care se execută în același timp - dar are nuanțe ale sensului de lucru al sarcinilor multiple care sunt efectuate în același timp.
În sensul „unității de lucru”, într-un loc de muncă (adică „lucrare unică”) o sarcină poate corespunde unui singur pas (pasul în sine, nu executarea acestuia), în timp ce în procesarea în serie sarcinile individuale pot corespund unui singur pas de procesare a unui singur articol dintr-un lot sau unui singur pas de procesare a tuturor articolelor din lot. În sistemele online, sarcinile corespund cel mai frecvent unei singure solicitări (în arhitecturi cerere-răspuns ) sau unei interogări (în regăsirea informațiilor ), fie o singură etapă de manipulare, fie întreaga gestionare a întregului sistem.
Exemple
În limbajul de programare Java , aceste două concepte (unitate de lucru și unitate de execuție) sunt combinate atunci când se lucrează direct cu fire, dar se disting clar în cadrul Executorilor :
Când lucrați direct cu fire, a
Threadservește atât ca unitate de lucru, cât și ca mecanism pentru executarea acesteia. În cadrul executorului, unitatea de lucru și mecanismul de execuție sunt separate. Abstracția cheie este unitatea de lucru, care se numește sarcină .
Terminologia IBM
Utilizarea termenului de către IBM a fost influentă, deși subliniază ambiguitatea termenului, în terminologia IBM, „sarcină” are zeci de semnificații specifice, inclusiv:
- O unitate de lucru care reprezintă unul dintre pașii unui proces.
- O unitate de lucru care trebuie realizată de un dispozitiv sau proces.
- Un proces și procedurile care rulează procesul.
- Un set de acțiuni concepute pentru a obține un anumit rezultat. O sarcină este efectuată pe un set de ținte pe un anumit program.
- O unitate de calcul. Într-o lucrare paralelă, două sau mai multe sarcini simultane funcționează împreună prin transmiterea mesajelor și memoria partajată. Deși este obișnuit să se aloce o sarcină pentru fiecare procesor fizic sau logic, termenii „sarcină” și „procesor” nu sunt interschimbabili.
- O activitate care are valoare de afaceri, este inițiată de un utilizator și este realizată de software.
În z / OS în mod specific, este definit exact ca:
- "Într-un mediu multiprogramare sau multiprocesare, una sau mai multe secvențe de instrucțiuni tratate de un program de control ca un element de lucru care trebuie realizat de un computer."
Termenul sarcină din OS / 360 până la z / OS este aproximativ echivalent cu procesul ușor; sarcinile dintr-un pas de job împart un spațiu de adrese. Cu toate acestea, în MVS / ESA prin z / OS, o activitate sau un bloc de solicitare de servicii (SRB) poate avea acces la alte spații de adrese prin intermediul listei sale de acces.
Kernel Linux
Termenul sarcină este folosit în kernel-ul Linux (cel puțin începând cu v2.6.13, până la v4.8 inclusiv) pentru a se referi la o unitate de execuție, care poate partaja diverse resurse de sistem cu alte sarcini din sistem. În funcție de nivelul de partajare, sarcina poate fi privită ca un fir sau un proces convențional . Sarcinile sunt create cu ajutorul clone()apelului de sistem, unde un utilizator poate specifica nivelul dorit de partajare a resurselor.
Istorie
Termenul sarcină pentru o parte a unui loc de muncă datează de multiprogramare la începutul anilor 1960, ca în acest exemplu din 1961:
Modelul serial are capacitatea de a procesa sarcinile unui job într-un mod independent, similar cu funcționarea IBM 709 .
Termenul a fost popularizat odată cu introducerea OS / 360 (anunțat în 1964), care conținea multiprogramare cu număr fix de sarcini (MFT) și multiprogramare cu număr variabil de sarcini (MVT). În acest caz, sarcinile au fost identificate cu procese ușoare, un job constând dintr-o serie de sarcini și, ulterior, sarcinile ar putea avea sub-sarcini (în terminologia modernă, procesele copil ).
Astăzi termenul „sarcină” este folosit foarte ambiguu. De exemplu, Windows Task Manager gestionează (rulează) procesele , în timp ce Windows Task Scheduler planifică programele să se execute în viitor, ceea ce este cunoscut în mod tradițional ca programator de joburi și folosește .jobextensia. În schimb, termenul „ coadă de sarcini ” este utilizat în mod obișnuit în sensul de „unități de lucru”.