Raspoređivanje (računarstvo)

S Vikipedije, slobodne enciklopedije

U informatici, raspoređivanje je metod po kom se nitima, procesima ili tokovima podataka daje pristup sistemskim resursima (npr. procesorskom vremenu, opsegu komunikacija). Ovo se uglavnom radi u svrhu efektivnog balansiranja opterećenjem na sistemu ili postizanja ciljanog kvaliteta usluge. Potreba za algoritmima raspoređivanja je proizašla iz potrebe veđine modernih sistema da izvode više poslova istovremeno (više procesa istovremeno) i multipleksiranje (odašilju višestruke tokove istovremeno).

Raspoređivač uglavnom manipuliše:

  • Protok - Ukupan broj procesa koji završavaju svoje izvršavanje u jedinici vremena.
  • Kašnjenje, specifično:
    • Vreme okreta - ukupno vreme između izdavanja procesa i njegovog završetka.
    • Vreme odziva - vreme koje je potrebno od slanja zahteva do prvog odgovora.
  • Pravičnost / Vreme čekanja - Jednako procesorsko vreme svakom procesu (ili opštije prikladna vremena u odnosu na prioritet procesa). Vreme tokom koga je proces u redu čekanja.

U prakci, ovi ciljevi su često u konfliktu (npr. protok i kašnjenje), stoga će raspoređivač implementirati prikladni kompromis.

Prednost se daje bilo kojoj od gorenavedenih stavki na osnovu potreba i želje korisnika.

Kod okruženja u realnom vremenu, kao što su ugrađeni sistemi za automatsku kontrolu u industriji (npr. robotika), raspoređivač takođe mora da osigura da procesi ispune vremenski rok ; ovo je presudno u cilju održanja sistema stabilnim. Raspoređeni zadaci se šalju mobilnim uređajima i kontrolišu kroz administrativni panel.

Tipovi raspoređivača operativnih sistema[uredi | uredi izvor]

Operativni sistemi mogu imati i do tri različita tipa raspoređivača, dugotrajni raspoređivač (poznat i kao raspoređivač visokog nivoa), srednjoročni raspoređivač i kratkoročni raspoređivač. Ova imena sugerišu relativnu učestalost sa kojom se ove funkcije izvode.

Raspoređivač je modul operativnog sistema koji bira koji će sledeći posao biti predat sistemu i sledeći proces za obradu.

Raspoređivač procesa[uredi | uredi izvor]

Dugoročno raspoređivanje[uredi | uredi izvor]

Dugoročni, ili prijemni raspoređivač, odlučuje koji će se poslovi ili procesi prihvatiti u red spremnih (u glavnoj memoriji); to znači, pri pokušaju izvršenja programa, njegov prijem u skup trenutno izvršnih procesa je ili autorizovan ili odložen od strane dugoročnog raspoređivača. Stoga, ovaj raspoređivač diktira koji procesi će se izvršavati na sistemu, i stepen konkurentnosti koji će biti podržan u bilo kom trenutku - npr: koja količina procesa će se izvršavati istovremeno, i kako će se rukovati odnosom ulazno/izlaznih i procesorski intenzivnih procesa. Dugoročni raspoređivač je odgovoran za kontrolu stepena multiprogramiranja. Kod modernih operativnih sistema, ovo se koristi kao osiguranje da procesi u realnom vremenu dobijaju dovoljno procesorskog vremena da završe svoj zadatak. Bez dobrog raspoređivača u realnom vremenu, moderni grafički korisnički interfejsi bi izgledali tromo.

Dugoročno raspoređivanje je takođe važno kod sistema velikih razmera kao što su sistemi za serijsku obradu, klaster računari, superračunari i farme za rednerovanje. U drugim slučajevima, namenski softver za raspoređivanje poslova se tipično koristi da pripomogne ovim funkcijama, kao dodatak bilo kom prijemnom raspoređivaču unutar operativnog sistema.

Srednjoročno raspoređivanje[uredi | uredi izvor]

Raspoređivač privremeno uklanja procese iz glavne memorije i smešta ih na sekundarnu memoriju (kao što je disk) i obrnuto. Ovo se često naziva svapovanje (takođe i nepgravilno "straničenje"). Kratkoročni raspoređivač može odlučiti da zameni proces koji nije aktivan neko vreme, ili proces niskog prioriteta, ili proces koji često promašuje stranice, ili proces koji zauzima previše memorije da bi oslobodio glavnu memoriju za druge procese, i da ga vrati kasnije kada memorija bude dostupna, ili kada se proces odblokira i više ne čeka na resurs. [1][2]

U puno današnjih sistema (koji podržavaju mapiranje virtuelnog adresnog prostora na sekundarno skladište osim svap fajla), srenjoročni raspoređivač može praktično da preuzme ulogu dugoročnog raspoređivača, tretirajući binarne datoteke kao "svapovane procese" po njihovom izvršenju. Na ovaj način, kada se zahteva segment binarne datoteke on može biti odsvapovan na zahtev, ili "lenjo učitan“. [3]

Kratkoročni raspoređivač[uredi | uredi izvor]

Kratkoročni raspoređivač (poznat i kao procesorski raspoređivač) odlučuje koji će se od spremnih procesa koji se nalaze u memoriji izvršavati (alocirati procesor) nakon taktnog prekida, ulazno/izlaznog prekida, sistemskog poziva ili drugog oblika signala. Stoga kratkoročni raspoređivač pravi raspoređivačke odluke mnogo češće od dugoročnog ili srednjoročnog raspoređivača - odluka će morati biti doneta bar nakon svakog deliđa vremena, a oni su veoma kratki. Ovaj raspoređivač može biti preventivni, što znači da je sposoban da nasilno izbaci proces sa procesora kada odluči da alocira procesor drugom procesu, ili ne-preventivni (takođe poznat kao "volonterski" ili "kooperativni"), kada raspoređivač ne može "izbaciti" procese sa procesora.

Preventivni raspoređivač se oslanja na programabilni časovnik koji poziva opsluživač prekida koji radi u kernel režimu i implementira raspoređivačku funkciju.

Dispečer[uredi | uredi izvor]

Druga komponenta koja je uključena u funkciju procesorskog raspoređivanja je dispečer. To je modul koji daje kontrolu procesora procesu izabranom od strane kratkoročnog raspoređivača. Ova funkcija uključuje:

  • Zamenu konteksta
  • Prebacivanje u korisnički režim
  • Skok na ispravnu lokaciju u korisničkom programu radi restarta programa.

Dispečer analizira vrednosti iz programskog brojača i dohvata instrukcije, učitava podatke u registre.

Dispečer bi trebalo bude što brži, s obzirom da se poziva tokom svake smene procesa. Tokom smene konteksta, procesor je nezauzet u deliću vremena. Stoga, nepotrebne smene konteksta treba izbegavati. Vreme koje je potrebno dispečeru da zaustavi jedan proces i započne drugi je poznato kao dispečersko kašnjenje. [Galvin, 155].

Mrežni raspoređivač[uredi | uredi izvor]

Raspoređivač diska[uredi | uredi izvor]

Raspoređivač poslova[uredi | uredi izvor]

Primeri su cron, at, systemd.

Raspoređivačke discipline[uredi | uredi izvor]

Raspoređivačke discipline su algoritmi korišćeni za distribuciju resursa među strankama koje ih simultano i asinhrono traže. Raspoređivačke discipline se koriste kod rutera (rukuju saobrađajem paketa) kao i kod operativnih sistema (da deli procesorsko vreme i među nitima i među procesima), disk uređaja (ulazno/izlazno raspoređivanje), štampača, većine ugrađenih sistema, itd.

Glavna svrha raspoređivačkih algoritama je da se minimizuje izgladnjivanje resursa i da se osigura pravičnost među strankama koje koriste resurse. Raspoređivanje se bavi problemom odluke koji od pristiglih zahteva će dobiti resurse. Postoji puno različitih algoritama raspoređivanja. U ovoj sekciji predstavljamo nekoliko.

Kod računarskih mreža sa paketnim prenosom i drugim statističkim multipleksiranjem, notacija raspoređivačkog algoritma se korisi kao alternativa za prvi-došao prvi-uslužen ređanje paketa podataka.

Najjednostavniji najbolje-moguđe raspoređivački algoritmi su kružno opsluživanje, pravično ređanje (algoritam max-min pravičnosti), raspoređivanje proporcionalne pravičnosti i maksimalna propusnost. Ukoliko je ponuđen diferencirani ili garantovani kvalitet usluge, suprotno najbolje-moguće komunikaciji, može se koristiti ređanje procenjene pravičnosti.

Kod naprednih paketnih bežičnih radio mreža kao što je HSDPA (High-Speed Downlink Packet Access ) 3.5G sistem, kanal-zavisno raspoređivanje može biti korišćeno da iskoristi prednost informacije o stanju kanala. Ako su uslovi kanala dobri, propusnost i spektralna efikasnost sistema mogu biti povećane. Kod još naprednijih sistema kao što je LTE, raspoređivanje se kombinuje kanal-zavisnom paket-po-paket dinamičkom alokacijom kanala, ili dodeljivanjem OFDMA višestrukih-operatera ili drugih komponenti ravnanja frekventnih domena korisnicima koji ih najbolje mogu iskoristiti.

Prvi došao prvi izašao[uredi | uredi izvor]

Takođe poznato i kao First­ Come, First ­Served (FCFS), je najjednostavniji algoritam raspoređivanja, FIFO jednostavno ređa procese po redu dolaska u red.

  • S obzirom da se smene konteksta dešavaju samo po završetku procesa, i nije potrebna reorganizacija reda procesa, gubitak pri raspoređivanju je minimalan.
  • Propustnost može biti niska, s obzirom da dugački procesi mogu zadržavati procesor
  • Vreme okreta, vreme čekanja i vreme odziva mogu biti visoki iz istih razloga
  • Nema prioretizacije, stoga ovaj sistem ima problema sa vremenskim rokovima.
  • Nedostatak prioretizacije znači da dok god se svaki proces eventualno završava, nema izgladnjivanja. U okruženju gde se neki procesi ne završavaju, ima izgladnjivanja.
  • Bazirano je na redu
  • Ovo je C-kod za FCFS

Najkraće preostalo vreme[uredi | uredi izvor]

Slično sa Shortest­ Job­ First (SJF). Sa ovom strategijom raspoređivač ređa procese po najmanjem procenjenom procesnom vremenu koje će biti sledeće u redu. Ovo zahteva napredno poznavanje ili prognozu o vremenu potrebnom da se proces završi.

  • Ako kraći proces naiđe tokom izvršenja drugog procesa, trenutni proces može biti preventivno prekinut, deljenjem tog procesa u dva razdvojena računarska bloka. Ovo stvara gubitke usled dodatne zamene konteksta. Raspoređivač takođe mora staviti svaki nadolazeći proces u specifično mesto u redu, što stvara dodatne gubitke.
  • Ovaj algoritam je dizajniran za maksimalnu propusnost u većini slučajeva.
  • Vreme čekanja i odziva se povećavaju zajedno sa računarskim zahtevima procesa. S obzriom da je vreme okreta bazirano na zbiru vremena čekanja i izvršenja, dugački procesi su značajno pogođeni ovim. Ukupno vreme čekanja ja manje nego kod FIFO, jer nijedan proces ne mora da čeka završetak najdužeg procesa.
  • Rokovima se ne daje posebna pažnja, programer može samo pokušati da programe sa rokovima učini što kraćim.
  • Izlgadnjivanje je moguće, pogotovo u zauzetom sistemu sa puno malih procesa.
  • Ovaj koncept se više ne koristi.
  • Za ovaj koncept su nam potrebna bar dva procesa različitih prioriteta

Preventivno raspoređivanje fiksnog prioriteta[uredi | uredi izvor]

OS dodeljuje fiksan prioritet svakom procesu, i raspoređivač raspoređuje procese u redu spremnih po nivou prioriteta. Procesi nižeg prioriteta bivaju prekinuti pri nadolasku procesa višeg prioriteta.

  • Gubici nisu minimalni, ali nisu ni značajni.
  • FPPS nema posenu prednost u smislu propustnosti u odnosu na FIFO.
  • Ako je broj nivoa prioriteta ograničen, može se okarakterisati kao kolekcija FIFO redova, jedan za svaki nivo. Procesi u redovima nižeg prioriteta su izabrani samo kada su redovi višeg prioriteta prazni.
  • Vreme čekanja i odziva zavisi od prioriteta procesa. Procesi višeg prioriteta imaju manja vremena.
  • Rokovi se mogu postići davanjem procesima sa rokovima viši prioritet.
  • Izgladnjivanje procesa nižeg prioriteta je mogućnost kod velikog broja visokoprioritetnih procesa.

Kružno raspoređivanje[uredi | uredi izvor]

Raspoređivač dodeljuje fiksnu jedinicu vremena po procesu, i samo prolazi kroz njih.

  • Kružno raspoređivanje uključuje velike gubitke, posebno kod male jedinice vremena.
  • Balansirana propustnost između FCFS i SJF, kraći poslovi se završavaju brže nego kod FCFS a duži procesi brže nego kod SJF.
  • Slabo prosečno vreme odziva, vreme čekanja je zavisno od broja procesa, a ne prosečne dužine procesa.
  • Zbog dugačkih vremena čekanja, rokovi se teško dostižu kod ovog sistema.
  • Izgladnjivanje ne postoji, s obzirom da nema prioriteta. Vremenska jedinica se određuje na osnovu brzine pristizanja procesa, slično kao kod FCFS.

Redno raspoređivanje na više nivoa[uredi | uredi izvor]

Ovo se koristi u situacijama kod kojih se procesi lako dele u različite grupe. Na primer, česta raspodela se pravi između prednjih (interaktivnih) procesa i pozadinskih (serijskih) procesa. Ova dva tipa procesa imaju različite zahteve za vreme odziva i samim time i različite zahteve po pitanju raspoređivanja. Korisno je za probleme deljene memorije.

Problemi optimizacije raspoređivanja[uredi | uredi izvor]

Ručno raspoređivanje[uredi | uredi izvor]

Čest metod kod ugrađenih sistema je ručno raspoređivanje poslova. Ovo se može postići multipleksiranjem vremena. Ponekad je kernel podeljen u tri ili više delova: ručno raspoređivanje, preventivni i prekidni nivo. Precizni metodi za raspoređivanje su uglavnom zatvorenog koda.

  • Nema problema izladnjivanja.
  • Velika predvidljivost; omogućuje implementaciju sistema u realnom vremenu.
  • Skoro potpuno bez gubitaka.
  • Nije optimalno za sve aplikacije.
  • Efektivnost potpuno zavisi od implementacije.

Kako izabrati algoritam raspoređivanja[uredi | uredi izvor]

Pri dizajniranju operativnog sistema, programer mora uzeti u obzir koji algoritam raspoređivanja će se najbolje ponašati za svrhu sistema. Ne postoji univerzalno “najbolji” algoritam raspoređivanja, i puno operativnih sistema koriste proširene ili kombinacije gornjih algoritama raspoređivanja. Na primer, Windows NT/XP/Vista koristi red u više nivoa sa povratnom spregom, kombinaciju preventivnog raspoređivanja sa fiksnim prioritetima, kružne raspodele, i prvi došao prvi uslužen.

Kod ovog sistema, nitima se dinamički može menjati prioritet u zavisnosti od toga da li je već uslužena, ili da li je predugo čekala. Svaki nivo prioriteta ima svoj red, sa kružnim raspoređivanjem među visokoprioritetnim nitima i FIFO među niskoprioritetnim. U ovom smislu, vreme odziva je malo za većinu niti, a kratke i kritične sistemske niti se završavaju jako brzo. S obzirom da niti mogu koristiti samo po jednu jedinicu vremena kružne raspodele u redu najvišeg prioriteta, izgladnjivanje može biti problem za duže visokoprioritetne procese.

Imeplemtacije raspoređivača procesa kod operativnih sistema[uredi | uredi izvor]

Algoritam može biti jednostavan kao kružna raspodela koje koje svaki proces dobija jedinicu vremena (na primer 1 ms, uglavnom između 1 ms i 100 ms) u cikličnoj listi. Tako da, proces A se izvršava 1 ms, zatim proces B, zatim C, i na kraju opet A.

Napredniji algoritmi uzimaju u obzir prioritet procesa, ili važnost procesa. Ovo omogućuje nekim procesima da koriste više vremena od drugih. Kernel uvek koristi sve moguće resurse da obezbedi pravilno funkcionisanje sistema, pa se može reći da ima neograničen prioritet. Kod SMP (simetričkih višeprocesnih) sistema, afinitet procesora povećava ukupne performanse sistema, čak iako izaziva da sam proces radi sporije. Ovo generalno poboljšava performanse smanjenjem konflikta keša.

Windows[uredi | uredi izvor]

Prvi MS-DOS i Microsoft Windows sistemi nisu mogli obavljati više operacija istovremeno, i kao takvi nisu imali raspoređivač. Windows 3.1x je koristio nepreventivni raspoređivač, što znači da nije prekidao programe. Oslanjao se na sam program da se završi ili kaže sistemu da mu ne treba procesor te može preći na sledeći proces. Ovo se uglavnom zove kooperativno obavljanje više zadataka istovremeno. Windows 95 je predstavio osnovni preventivni raspoređivač; međutim, zbog kompatibilnosti je dozvoljeno 16-bitnim aplikacijama da rade bez preventivnih prekida.[4]

Windows NT-bazirani operativni sistemi koriste sistem redova u više nivoa sa povratnom spregom. 32 nivoa prioriteta su definisana, od 0 do 31, gde su prioriteti od 0 do 15 "normalni" a prioriteti od 16 do 31 prioriteti u skoro realnom vremenu, koji zahtevaju dodelu privilegija. 0 je rezervisana za operativni sistem. Korisnici mogu izabrati 5 od ovih prioriteta za dodelu aplikacijama iz Task Manager aplikacije, ili kroz API-je za upravljanje nitima. Kernel može promeniti nivo prioriteta niti u zavisnosti od njene upotrebe ulaza/izlaza i procesora i da li je interaktivna (npr. prihvata i odgovara na upit čoveka), dižući prioritet za interaktivne i ulazno/izlazne procese a spuštajući za procesorski zahtevne procese, radi poveđanja odziva interaktivnih aplikacija.[5] Raspoređivač je modifikovan u Windows Vista da koristi registre brojača ciklusa modernih procesora i prati tačno koliko ciklusa nit izvršava, radije nego da koristi samo prekid na osnovu vremenskih intervala.[6] Vista takođe koristi prioritetni raspoređivač za ulaz/izlaz tako da se disk defragmenteri i drugi slični programi ne mešaju sa glavnim aplikacijama.[7]

Mac OS[uredi | uredi izvor]

Mac OS 9 koristi kooperativni raspoređivač za niti, gde jedan proces kontroliše višestruke kooperativne niti, i takođe obezbeđuje preventivno raspoređivanje za MP zadatke. Kernel raspoređuje MP zadatke korišćenjem preventivnog alogritma. Svi Process Manager procesi rade u okviru posebnog MP zadatka, zvanog "plavi zadatak“. Ti procesi se raspoređuju kooperativno, korišćenjem kružnog raspoređivanja; proces dobrovoljno predaju kontrolu nad procesorom drugom procesu pozivajući funkciju kao što je WaitNextEvent. Svaki proces ima svoju kopiju upravljača nitima koji raspoređuje niti tog procesa kooperativno; nit predaje kontrolu drugoj niti pozivom YieldToAnyThread ili YieldToThread.[8]

Mac OS X koristi red u više nivoa sa povratnom spregom, sa četiri nivoa prioriteta za niti - normalni, sistemski visok prioritet, samo kernelski režim, i realno vreme.[9] Niti se raspoređuju preventivno; Mac OS X takođe podržava kooperativno raspoređivane niti u svojoj implementaciji upravljača nitima u Carbon-u.[8]

AIX[uredi | uredi izvor]

U AIX verziji 4 ima tri moguće vrednosti za polisu raspoređivanja niti:

  • Prvi unutra prvi napolje: Kada se rasporedi nit sa ovom polisom, ona radi do kraja osim ako nije blokirana, samovoljno daje kontrolu nad procesorom, ili nit višeg prioriteta postane spremna. Samo niti fiksnog prioriteta mogu imati FIFO raspoređivačku politiku.
  • Kružno raspoređivanje: Ovo je slično AIX verziji 3 šemi kružnog raspoređivača baziranog na delićima vremena od 10ms. Kada kružna nit ima kontrolu pri kraju vremenskog odsečka, ona se pomera na kraj reda spremnih niti svog prioriteta. Samo niti fiksnog prioriteta mogu imati kružno raspoređivanje.
  • Ostalo: Ova polisa je definisana POSIX1003.4a standardom kao implementaciono definisana. U AIX verziji 4, ova polisa je definisana kao ekvivalentna kružnom raspoređivanju, osim što se odnosi na niti bez fiksnog prioriteta. Proračun prioriteta pokrenute niti pri svakom taktu znači da nit može izgubiti kontrolu jer joj je prioritet postao viši od druge spremne niti. Ovo je ponašanje AIX verzije 3.

Niti su primarni interes aplikacija koje konkurentno izvršavaju više asinhronih procesa. Ove aplikacije mogu biti lakše za sistem ako se prebace u višenitnu strukturu.

AIX 5 implementira sledeće raspoređivačke politike: FIFO, kružno raspoređivanje, i pravično kružno. FIFO politika ima tri različite implementacije: FIFO, FIFO2, i FIFO3. Kružna politika je nazvana SCHED_RR kod AIX, a pravična kružna SCHED_OTHER. Ovaj link obezbeđuje dodatne inforamcije o AIX 5 raspoređivanju: http://www.ibm.com/developerworks/aix/library/au-aix5_cpu/index.html#N100F6 .

Linux[uredi | uredi izvor]

Linux 2.4[uredi | uredi izvor]

Kod Linuksa 2.4, O(n) raspoređivač sa redom u više nivoa i povratnom spregom je korišćen sa prioritetima od 0-140. 0-99 su rezervisani za zadatke u realnom vremenu, a 100-140 se smatraju finim nivoima. Za zadatke u realnom vremenu, vreme smene procesa je bilo oko 200 ms, a za fine zadatke oko 10 ms. Raspoređivač je prolazio kroz red svih spremnih procesa, puštajući procese najvišeg prioriteta prve, nakon čega se stavljaju u red isteklih. Kada se aktivni red isprazni, istekli red postaje aktivni i obrnuto.

Međutim, neke Enterprise Distribucija Linuksa kao što je SUSE Linux Enterprise Server su zamenile ovaj raspoređivač sa O(1) raspoređivačem (koji je održavao Alan Cox u svojoj Linux 2.4-ac Kernel seriji) u Linux 2.4 kernelu koji su koristili.

Linux 2.6.0 do Linux 2.6.22[uredi | uredi izvor]

Od verzije 2.6 do 2.6.22, kernel je koristio O(1) raspoređivač razvijen od strane Ingo Molnar i drugih programera kernela tokom razvoja Linux-a 2.5. Za dosta kernela tog vremena, Con Kolivas je razvio skup ispravki koje su poboljšavale interaktivnost sa ovim raspoređivačem ili ga čak menjale njegovim ličnim.

Od Linux-a 2.6.23[uredi | uredi izvor]

Rad Cona Kolivasa, pogotovo njegova implementacija pravičnog raspoređivanja zvana "Rok rotirajućih stepenica", inspirisala je Ingoa Molnára da razvije potpuno pravični raspoređivač kao zamenu za prethodni O(1) raspoređivač, pominjući Kolivasa u svojoj najavi.[10]

Potpuno pravični raspoređivač (CFS) koristi dobro proučeni klasični raspoređivački algoritam zvan pravično ređanje prvobitno napravljen za mreže paketnog prenosa. Pravično raspoređivanje je prethodno primenjivano na procesorsko raspoređivanje pod nazivom raspoređivanje u koracima.

Potpuno pravični raspoređivač ima složenost od O(log N), gde je N broj zadataka u redu spremnih. Odabir zadatka se može uraditi u konstantnom vremenu, ali vrađanje zadatka nakon njegovog izvršenja zahteva O(log N) operacija, jer je red spremnih imeplemtniran kao crveno-crno stablo.

CFS je prva imlementacija pravičnog ređanja popularno korišćena u opšte namenskim operativnim sistemima.[11]

Brain Fuck raspoređivač (BFS) je alternativa CFS-u.

FreeBSD[uredi | uredi izvor]

FreeBSD koristi red u više nivoa sa povratnom spregom sa prioritetima od 0-255. 0-63 su rezervisani za prekide, 64-127 su za gornju polovinu kernela, 128-159 su za korisničke niti u realnom vremenu, 160-223 su za vremenski deljene korisničke niti, a 224-255 su za besposlene korisničke niti. Takođe, kao i Linuks, koristi aktivni red, ali ima i red besposlenih.[12]

NetBSD[uredi | uredi izvor]

NetBSD koristi red u više nivoa sa povratnom spregom sa prioritetima od 0-223. 0-63 su rezervisani za vremenski deljene niti (default, SCHED_OTHER politika), 64-95 su za korisničke niti u kernelskom prostoru, 96-128 za kernelske niti, 128-191 su za korisničke niti u realnom vremenu (SCHED_FIFO i SCHED_RR politika), i 192-223 za softverske prekide.

Solaris[uredi | uredi izvor]

Solaris koristi red u više nivoa sa povratnom spregom sa prioritetima od 0-169. 0-59 su rezervisani za vremenski deljene niti, 60-99 za sistemske niti, 100-159 za niti u realnom vremenu, i 160-169 za prekide niskog prioriteta. Za razliku od Linuksa, kada procesor završi sa svojim delom vremena, daje mu se novi prioritet i vrađa u red.

Pregled[uredi | uredi izvor]

Operativni sistem Preventivno Algoritam
Amiga OS Da Prioretski kružan
FreeBSD Da Red u više nivoa sa povratnom spregom
Linuks pre-2.6 Da Red u više nivoa sa povratnom spregom
Linuks 2.6-2.6.23 Da O(1) raspoređivač
Linuks post-2.6.23 Da Potpuno pravični raspoređivač
Mac OS pre-9 Ne Kooperativni raspoređivač
Mac OS 9 Delimično Preventivni za MP zadatke, kooperativni za procese i niti
OS X Da Red u više nivoa sa povratnom spregom
NetBSD Da Red u više nivoa sa povratnom spregom
Solaris Da Red u više nivoa sa povratnom spregom
Windows 3.1x Ne Kooperativni raspoređivač
Windows 95, 98, Me Delimično Preventivno za 32-bitne procese, kooperativno za 16-bitne procese
Windows NT (uključujući 2000, XP, Vista, 7, i Server) Da Red u više nivoa sa povratnom spregom

Vidi još[uredi | uredi izvor]

Reference[uredi | uredi izvor]

  1. ^ Stallings 2004, str. 396. sfn greška: više ciljeva (2×): CITEREFStallings2004 (help)
  2. ^ Stallings 2004, str. 370. sfn greška: više ciljeva (2×): CITEREFStallings2004 (help)
  3. ^ Stallings 2004, str. 394. sfn greška: više ciljeva (2×): CITEREFStallings2004 (help)
  4. ^ Early Windows
  5. ^ Sriram Krishnan. „A Tale of Two Schedulers Windows NT and Windows CE”. Arhivirano iz originala 22. 07. 2012. g. Pristupljeno 21. 06. 2017. 
  6. ^ Inside the Windows Vista Kernel: Part 1, Microsoft Technet
  7. ^ „Vista Kernel Improvements”. Arhivirano iz originala 19. 02. 2008. g. Pristupljeno 29. 12. 2013. 
  8. ^ a b „Technical Note TN2028 - Threading Architectures”. 
  9. ^ „Mach Scheduling and Thread Interfaces”. 
  10. ^ Molnár, Ingo (13. 4. 2007). „[patch] Modular Scheduler Core and Completely Fair Scheduler [CFS]”. linux-kernel (Lista adresa). 
  11. ^ Efficient and Scalable Multiprocessor Fair Scheduling Using Distributed Weighted Round-Robin
  12. ^ „Comparison of Solaris, Linux, and FreeBSD Kernels” (PDF). Arhivirano iz originala 07. 08. 2008. g. Pristupljeno 21. 06. 2017. 

Literatura[uredi | uredi izvor]