Vikigimnazijalac:Operativni sistemi/Rešenja zasnovana na aktivnom čekanju

Rešenja zasnovana na aktivnom čekanju podrazumevaju da procesi čekaju u petlji dok se ne stvore uslovi za njegov ulazak u kritičnu sekciju.

Striktna alternacija

uredi

Striktna alternacija je jedno od rešenja za zaštitu kritične sekcije.Zasniva se na korišćenju promenljive (na_redu) kojom se određuje koji od dva procesa ima prednost. Na početku, prednost se daje prvom procesu, odnosno na_redu = 1.

Dekerov algoritam

uredi

Dekerov algoritam predstavlja prvo kompletno rešenje za uzajamno isključivanje u slučaju kada dva procesa konkurišu za deljene podatke.

Pitersonov algoritam

uredi

Pitersonov algoritam je predstavljen 1981. godine.Osnovna ideja ovog altoritma je da kada proces najavi da želi da uđe u kritičnu sekciju, ustupi drugom procesu prednost.Ova prednost važi samo ako drugi proces želi da uđe u kritičnu sekciju.Jedina mana ovog algoritma je da je primenljiv samo za dva procesa.

Lamportov (pekarski) algoritam

uredi

Uopštenje Pitersonovog algoritma za n procesa predstavlja Lamportov algoritam. Pošto se ne može garantovati da dva procesa neće dobiti isti broj, jer je i dodela brojeva kritična sekcija, u slučaju da se to dogodi proces sa manjim indeksom se opslužuje prvi.

Hardverska rešenja

uredi

Hardverska rešenja za zaštitu kritične sekcije podrazumevaju upotrebu posebnih instrukcija procesora. Ideja je da se naprave mašinske instrukcije koje su u stanju da urade bar dve operacije bez mogućnosti prekida, tj. atomično. Najčešće se za potrebe zaštite kritične sekcije koriste sledeće tri instrukcije:

  • TAS (Test And Set),
  • FAA (Fetch And Add) i
  • SVAP (zamena).