Operația atomică este

Operațiunile atomice sunt operații care sunt efectuate ca o singură unitate sau care nu sunt realizate deloc. Atomicitatea operațiunilor are o importanță deosebită în computerele multiprocesoare (și sistemele de operare multitasking), deoarece accesul la resursele nedistruite trebuie să fie în mod necesar atomic.

Operația atomică este deschisă influenței unui singur flux.

Atomicitatea este hardware (atunci când continuitatea este furnizată de hardware) și software-ul, atunci când se folosesc mijloace speciale de comunicare interprogramă: mutex. semaphore). În centrul său, instrumentele software pentru asigurarea atomicității sunt două faze: blocarea resursei și efectuarea operației în sine. Blocarea este o operație atomică care este fie reușită, fie returnează un mesaj ocupat.

Această secțiune nu este completă.

Veți ajuta proiectul prin corectarea și adăugarea lui cu următoarele informații: Eliminați specificitatea asamblării, diviziunea C și teoria generală a mutexelor.

Stilul acestui articol nu este enciclopedic sau încalcă normele din limba rusă.

Articolul trebuie corectat în conformitate cu regulile stilistice din Wikipedia.

Adesea, o operație atomică este o instrucțiune de asamblare, dar nu neapărat. De asemenea, mai important, nu fiecare instrucțiune de asamblare este atomică.

Instrucțiuni de asamblare și atomicitate

Operații care pot fi întotdeauna considerate atomice:

Operații care nu sunt atomice:

Instrucțiuni atomice x86

  • CMPXCHG / CMPXCHG8B / CMPXCHG16B - comanda atomică de bază x86 comparație și schimb. Când se utilizează cu prefixul LOCK [1] [2], se efectuează o comparație atomică a variabilei cu valoarea specificată și cu transferul, în funcție de această comparație. Este baza pentru implementarea tuturor algoritmilor care nu blochează. Acesta este adesea folosit în implementarea de spinlocks și RWLocks, precum și aproape toate elementele de sincronizare la nivel înalt, cum ar fi Semaphores, Mutexes, Events, etc., ca o implementare internă
  • XCHG - operațiunea de schimb între memorie și registru se face atomic pe procesoarele x86. [3] Adesea folosit în punerea în aplicare a spinlocks.

În plus, multe comenzi Read-Modify-Write pot fi făcute artificial cu prefixul LOCK [4] (opcode 0xF0):

  • Adăugați și scădeți comenzile ADD / ADC / SUB / SBB în cazul în care memoria operand-receptor
  • Instrumente de incrementare / degradare INC / DEC
  • Comenzi logice AND / OR / XOR
  • Comenzi NEG / NOT ONU-operand
  • Operațiuni bit BTS / BTR / BTC
  • Adaugarea si schimbarea operatiilor XADD

Prefixul LOCK face ca accesul la memorie să fie blocat pe durata executării instrucțiunilor. Blocul se poate extinde până la zona de memorie mai mare decât lungimea operandului, de exemplu lungimea liniei de cache.

Sprijin pentru operațiile atomice în procesoarele RISC

O caracteristică a arhitecturilor RISC este refuzul de a folosi instrucțiunile din tipul Read-Modify-Write. În procesoarele RISC cu arhitectura DEC Alpha. PowerPC. MIPS și ARM (ARMv6 și ulterior) suportă mecanismul de acces exclusiv pentru memorie fără blocare. Metoda se bazează pe o pereche de instrucțiuni de citire și scriere exclusive LL / SC:

  • Încărcați cu o marcă (LL - încărcare legată),
  • încercați să scrieți (SC - stocare condiționată)

Instrucțiunile atomice și compilatorul

Compilatoare de limbaje de nivel înalt nu au niciodată cu generare de cod nu folosesc instrucțiuni atomice, deoarece, în primul rând, operațiunile atomice sunt de multe ori mai scumpe decât de obicei, și în al doilea rând, au compilatorul nu dispun de informații atunci când accesul ar trebui să fie instrucțiuni atomice (ca chiar și variabila volatilă modificator nu este înseamnă necesitatea reală a operațiilor atomice). Din acest motiv, atunci când acest lucru este vital, programatorul folosește una din următoarele abordări:

  1. Asamblare inserare a instrucțiunii atomice corespunzătoare
  2. Folosind extensia compilatorului (funcții ale familiei __builtin_ sau __sync_)
  3. Folosind un înveliș "la nivel înalt" sub forma unei biblioteci speciale, de exemplu, Glib
  4. Utilizarea limbilor noi C11 sau C ++ 11. tipuri de sprijin _Atomic și atomic și funcții ale familiei atomice [5]

notițe

Urmăriți ce este "operația atomică" în alte dicționare:

Operațiuni atomice - Operațiile atomice sunt operații care sunt efectuate ca o singură unitate sau care nu sunt realizate deloc. Atomicitatea operațiilor este de o importanță deosebită în computerele multiprocesor (și sistemele de operare multitasking), deoarece accesul la ... ... Wikipedia

SNMP - Nume: Nivel simplu protocol de management al rețelei (pe modelul OSI): Familia de aplicații: Port UDP / ID: 161 / UDP, 162 / UDP Protocol Scop:

Atomicitate - (în programare) proprietatea continuității unei operații. Operația atomică este efectuată complet (sau nu), fără întrerupere. Atomicitatea are o semnificație deosebită în computerele multiprocesor (și multitasking ... ... Wikipedia

Expresii regulate - (... expresii regulate în engleză, abbr regexp, RegEx, regexps zhargy sau regexps) este o căutare limbaj formal și manipularea substring în text, bazat pe utilizarea meta-caractere (caractere joker, ... ... Wikipedia

Regeksp - expresii regulate (... expresii regulate în engleză, abbr regexp, RegEx, regexps zhargy sau regexps) fragmente de text sistem parsarea model formalizate, bazate pe eșantioane ale sistemului de înregistrare pentru căutare. Exemplu (engleză ... ... Wikipedia

Regex - Expresia regulată (... expresii regulate în engleză, abbr regexp, RegEx, regexps zhargy sau regexps) fragmente de text sistem de parsare model formalizate, bazate pe eșantioane ale sistemului de înregistrare pentru căutare. Exemplu (engleză ... ... Wikipedia

Regespy - expresii regulate (... expresii regulate în engleză, abbr regexp, RegEx, regexps zhargy sau regexps) fragmente de text sistem parsarea model formalizate, bazate pe eșantioane ale sistemului de înregistrare pentru căutare. Exemplu (engleză ... ... Wikipedia

Sezonul regulat - expresii regulate (... expresii regulate în engleză, abbr regexp, RegEx, regexps zhargy sau regexps) fragmente de text sistem de parsare model formalizate, bazat pe mostre ale sistemului de înregistrare pentru căutare. Exemplu (engleză ... ... Wikipedia

Articole similare