Kontakti      O sajtu

Kontekst i rukohvat procesa. Koncept procesa. Podsistem operativnog sistema za upravljanje procesima. Procesna stanja. Kontekst procesa i deskriptor Podsistem upravljanja procesom

Sistem upravljanja zadacima osigurava njihov prolaz kroz računar. U zavisnosti od stanja procesa, on treba da dodijeli jedan ili drugi resurs. Na primjer, novi proces treba staviti u memoriju dodjeljivanjem adresnog prostora; uključiti na listu zadataka koji se takmiče za procesorsko vrijeme.

Jedan od glavnih podsistema višeprogramskog OS-a koji direktno utiče na funkcionisanje računara je podsistem za upravljanje procesima i nitima. Bavi se njihovim stvaranjem i uništavanjem, a također distribuira procesorsko vrijeme između istovremeno postojećih procesa i niti u sistemu.

Kada se više zadataka izvodi istovremeno na sistemu, iako se niti kreiraju i izvršavaju asinhrono, možda će trebati interakciju, na primjer, prilikom razmjene podataka. Stoga je sinhronizacija niti jedna od važnih funkcija podsistema upravljanja procesima i nitima.

Komunikacija između procesa se vrši pomoću zajedničkih varijabli i posebnih osnovnih operacija tzv primitivcima.

Podsistem za upravljanje procesima i nitima ima mogućnost da izvrši sljedeće operacije na procesima:

– stvaranje (mrijest)/uništenje procesa;

– pauzirati/nastaviti proces;

– blokiranje/buđenje procesa;

– započeti proces;

– promjena prioriteta procesa;

Podsistem upravljanja procesima i nitima je odgovoran za osiguravanje procesa potrebnim resursima. OS održava posebne informacijske strukture u memoriji, u kojima bilježi koji su resursi dodijeljeni svakom procesu. Resurs se može dodijeliti procesu za isključivu upotrebu ili za zajedničku upotrebu s drugim procesima. Neki od resursa se dodjeljuju procesu kada je kreiran, a neki se dodjeljuju dinamički na osnovu zahtjeva u vrijeme izvođenja. Resursi se mogu dodijeliti procesu za cijeli životni vijek ili samo za određeni period. Prilikom izvođenja ovih funkcija, podsistem upravljanja procesima stupa u interakciju s drugim OS podsistemima odgovornim za upravljanje resursima, kao što su podsistem za upravljanje memorijom, ulazno/izlazni podsistem i sistem datoteka.

1. Kreiranje i brisanje procesa i niti

Kreiranje procesa znači prije svega stvaranje procesna ručka, što je jedna ili više informacijskih struktura koje sadrže sve informacije o procesu neophodne da operativni sistem njime upravlja. O ovom pitanju je detaljno raspravljano ranije, sada se samo prisjećamo da takve informacije mogu uključivati, na primjer, identifikator procesa, podatke o lokaciji izvršnog modula u memoriji, stepen privilegija procesa (prioritet i prava pristupa), itd.

Kreiranje procesa uključuje učitavanje kodova i podataka izvršnog programa procesa sa diska u RAM. U ovom slučaju, podsistem upravljanja procesima je u interakciji s podsistemom upravljanja memorijom i sistemom datoteka. U sistemu sa više niti, kada se kreira proces, OS kreira najmanje jednu nit izvršenja za svaki proces. Prilikom kreiranja niti, kao i prilikom kreiranja procesa, OS generiše posebnu informacijsku strukturu - deskriptor niti, koji sadrži identifikator niti, podatke o pravima pristupa i prioritetu, stanju niti itd. Jednom kreirana, nit (ili proces) je u stanju spremnosti za izvršenje (ili u stanju mirovanja u slučaju OS posebne namjene).

Zadaci se kreiraju i brišu na osnovu odgovarajućih zahtjeva korisnika ili drugih zadataka. Zadatak može pokrenuti novi zadatak - u mnogim sistemima nit može kontaktirati OS sa zahtjevom za kreiranje tzv. dječji tokovi. Zadatak generiranja naziva se "predak" ili "roditelj", a zadatak djeteta naziva se "potomak" ili "podređeni zadatak". "Predak" može suspendovati ili izbrisati svoj podređeni zadatak, dok "dijete" ne može upravljati "predkom".

Različiti operativni sistemi različito strukturiraju odnos između podređenih niti i njihovih roditelja. U nekim operativnim sistemima njihovo izvršavanje je sinhronizovano (nakon što se roditeljska nit završi, sva njena deca se uklanjaju iz izvršavanja), u drugim se deca izvršavaju asinhrono u odnosu na roditeljsku nit.

Nakon što je proces završen, OS "čisti tragove" svog prisustva u sistemu - zatvara sve datoteke s kojima je proces radio, oslobađa područja RAM-a dodijeljena za kodove, podatke i informacijske strukture procesa. Redovi OS i liste resursa koji su sadržavali reference na proces koji se prekida su ispravljeni.

2. Planiranje i otpremanje procesa i niti

Strategija planiranja određuje koji procesi se biraju za izvršenje da bi se postigao cilj. Strategije mogu biti različite, na primjer:

– ako je moguće, završiti proračune istim redoslijedom kojim su započeti;

– dati prednost kraćim procesima;

– omogućiti svim korisnicima (korisničkim zadacima) iste usluge, uključujući isto vrijeme čekanja.

Tokom života procesa, izvršavanje njegovih niti može biti prekinuto i nastavljeno mnogo puta.

Prijelaz s izvršavanja jedne niti na drugu vrši se kao rezultat planiranje I otpremanje.

Planiranje niti se implementiraju na osnovu informacija pohranjenih u procesima i deskriptorima niti. Prilikom planiranja, prioritet niti, vrijeme čekanja u redu, akumulirano vrijeme izvršenja, intenzitet I/O pristupa i drugi faktori se mogu uzeti u obzir. OS planira izvršavanje niti bez obzira na to da li pripadaju istim ili različitim procesima. Planiranje se shvata kao zadatak odabira takvog skupa procesa tako da se što manje sukobljavaju tokom izvršavanja i što efikasnije koriste računarski sistem.

U različitim izvorima informacija postoje različita tumačenja pojmova „planiranje“ i „dispečiranje“. Tako neki autori dijele planiranje na dugoročno (globalno) i kratkoročno (dinamičko, tj. trenutna najefikasnija distribucija), a ovo drugo se naziva dispečerskim. Prema drugim izvorima, pod dispečiranjem se podrazumijeva implementacija odluke donesene u fazi planiranja. Ostaćemo pri ovoj opciji.

Planiranje uključuje rješavanje dva problema:

određivanje trenutka za promjenu aktivne niti;

odabir niti za izvršavanje iz reda spremnih niti.

Postoji mnogo algoritama za planiranje koji rješavaju ove probleme na različite načine. Karakteristike planiranja određuju specifičnosti operativnog sistema. Pogledajmo ih malo kasnije.

U većini operativnih sistema se vrši zakazivanje dinamički, tj. odluke se donose u toku rada na osnovu analize postojećeg stanja. Niti i procesi se pojavljuju u nasumično vrijeme i završavaju se nepredvidivo.

Statički tip planiranja se može koristiti u specijalizovanim sistemima u kojima je unapred definisan ceo skup zadataka koji se istovremeno izvršavaju (sistemi u realnom vremenu). Planer kreira raspored na osnovu poznavanja karakteristika skupa zadataka. Operativni sistem zatim koristi ovaj raspored za zakazivanje.

Otpremanje sastoji se u implementaciji rješenja pronađenog kao rezultat planiranja, tj. u prebacivanju jednog procesa u drugi. Otpremanje se svodi na sledeće:

čuvanje konteksta trenutne niti koju treba promijeniti;

pokretanje nove niti za izvršenje.

Kontekst niti odražava, prvo, stanje računarskog hardvera u trenutku prekida (vrijednost programskog brojača, sadržaj registara opće namjene, režim rada procesora, zastavice, maske prekida i drugi parametri ), i drugo, parametri operativnog okruženja (linkovi na otvorene datoteke, podaci o nedovršenim I/O operacijama, kodovi grešaka koje izvršava data nit sistemskih poziva, itd.).

U kontekstu niti možemo razlikovati dio koji je zajednički svim nitima datog procesa (linkovi na otvorene datoteke) i dio koji se odnosi samo na datu nit (sadržaj registara, programski brojač, procesorski režim). Na primjer, u NetWare okruženju postoje tri tipa konteksta - globalni kontekst (kontekst procesa), kontekst grupe niti i kontekst pojedinačnih niti. Odnos između podataka ovih konteksta sličan je odnosu između globalnih i lokalnih varijabli u programu. Hijerarhijska organizacija konteksta ubrzava prebacivanje niti: pri prelasku s niti jedne grupe na nit druge grupe unutar istog procesa, globalni kontekst se ne mijenja, već se mijenja samo kontekst grupe. Globalno prebacivanje konteksta se dešava samo kada se pređe sa niti jednog procesa na nit drugog procesa.

3. Algoritmi planiranja

Sa stanovišta rješavanja prvog problema raspoređivanja (odabir trenutka za promjenu aktivne niti), algoritmi raspoređivanja podijeljeni su u dvije velike klase - preventivne i ne-preemptivne algoritme:

nerepresivni– aktivna nit se može izvršavati sve dok sama ne prenese kontrolu na sistem tako da izabere drugu gotovu nit iz reda;

raseljavanje– operativni sistem odlučuje promijeniti zadatak koji se izvršava i prebacuje procesor na drugu nit.

Glavna razlika između ovih algoritama za raspoređivanje je stepen centralizacije mehanizma raspoređivanja niti. Razmotrimo glavne karakteristike, prednosti i nedostatke svake klase algoritama.

Algoritmi bez prevencije. Aplikacioni program, nakon što je primio kontrolu od OS-a, on sam određuje trenutak završetka sljedećeg ciklusa njegovog izvršenja i tek onda prenosi kontrolu na OS pomoću nekog sistemskog poziva. Posljedično, korisnička kontrola nad aplikacijom se gubi na proizvoljan vremenski period. Programeri to moraju uzeti u obzir i kreirati aplikacije tako da rade „u dijelovima“, povremeno prekidajući i prenoseći kontrolu na sistem, tj. Tokom razvoja, također se izvode funkcije planera.

Prednosti ovaj pristup:

– isključen je prekid toka u nezgodnom trenutku;

– riješen je problem istovremenog korištenja podataka, jer tokom svakog ciklusa izvršavanja, zadatak ih isključivo koristi i siguran je da ih niko drugi ne može promijeniti;

– veća brzina prebacivanja sa streama na stream.

Nedostaci su otežan razvoj programa i povećani zahtjevi za kvalifikacijama programera, kao i mogućnost da jedna nit preuzme procesor ako slučajno ili namjerno dođe do petlje.

Preemptivni algoritmi– ciklični ili kružni tip raspoređivanja, u kojem operativni sistem sam odlučuje da li će prekinuti aktivnu aplikaciju i prebacuje procesor sa jednog zadatka na drugi u skladu sa ovim ili drugim kriterijumom. U sistemu sa takvim algoritmima, programer ne mora da brine o tome da će se njegova aplikacija izvršavati istovremeno sa drugim zadacima. Primjeri uključuju operativne sisteme UNIX, Windows NT/2000, OS/2. Algoritmi ove klase su fokusirani na izvršavanje aplikacija visokih performansi.

Preemptivni algoritmi mogu biti zasnovani na konceptu kvantizacije ili na mehanizmu prioriteta.

Algoritmi zasnovani na kvantizaciji. Svaka nit ima ograničeni kontinuirani odsječak procesorskog vremena (njegova vrijednost ne bi trebala biti manja od 1 ms - obično nekoliko desetina ms). Nit se pomiče iz tekućeg stanja u stanje spremnosti ako je kvant iscrpljen. Kvanti mogu biti isti za sve tokove ili različiti.

Prilikom dodjeljivanja kvanta niti, mogu se koristiti različiti principi: ti kvanti mogu biti fiksne vrijednosti ili se mijenjati tokom različitih perioda života niti. Na primjer, za neki specifični tok, prvi kvant može biti prilično velik, a svaki sljedeći kvant koji mu je dodijeljen može imati kraće trajanje (svođenje na određene granice). Ovo stvara prednost za kraće niti, a dugotrajni zadaci prelaze u pozadinu. Drugi princip se zasniva na činjenici da procesi koji često izvode I/O operacije ne koriste u potpunosti vremenske delove koji su im dodeljeni. Da bi se nadoknadila ova nepravda, može se formirati poseban red od takvih procesa, koji ima privilegije nad drugim nitima. Prilikom odabira sljedeće niti za izvršenje, ovaj red se prvo skenira, a samo ako je prazan, iz općeg reda se bira nit spremna za izvršenje.

Ovi algoritmi ne koriste nikakve prethodne informacije o zadacima. Diferencijacija usluga u u ovom slučaju zasniva se na „istoriji postojanja“ toka u sistemu.

Sa stanovišta drugog problema raspoređivanja (princip odabira izvršavanja sljedeće niti), algoritmi se također mogu uslovno podijeliti na klase: neprioritetne i prioritetne algoritme. Kod neprioritetnog održavanja, sljedeći zadatak se bira određenim unaprijed određenim redoslijedom bez uzimanja u obzir njihove relativne važnosti i vremena održavanja. Prilikom implementacije prioritetnih disciplina, nekim zadacima se daje prioritet da uđu u stanje izvršenja.

Pogledajmo sada neke od najčešćih disciplina planiranja.


Prvi dođe, prvi uslužen. Procesor se dodjeljuje po FIFO (First In First Out) principu, tj. redoslijedom kojim se primaju zahtjevi za uslugu. Ovaj pristup vam omogućava da implementirate strategiju "završavanja proračuna redoslijedom kojim se pojavljuju kad god je to moguće". Oni zadaci koji su bili blokirani tokom izvršenja, nakon ulaska u stanje spremnosti, stavljaju se u red ispred onih zadataka koji još nisu izvršeni. Tako se kreiraju dva reda: jedan od zadataka koji još nisu izvršeni, a drugi od zadataka koji su prešli iz stanja čekanja.

Ova disciplina se implementira kao nepreventivna kada zadaci dobrovoljno oslobode procesor.

Dostojanstvo Ovaj algoritam je jednostavan za implementaciju. Nedostatak– pod velikim opterećenjem, kratki zadaci su primorani da čekaju u sistemu dugo vremena. Sljedeći pristup otklanja ovaj nedostatak.

Prvo se servira najkraći proces. Prema ovom algoritmu, nit sa minimalnim procijenjenim vremenom potrebnim da završi svoj rad dodjeljuje se pored izvršenja. Ovdje se prednost daje nitima kojima je ostalo malo vremena prije nego što se završe. Ovo smanjuje broj zadataka na čekanju u sistemu. Nedostatak je potreba da se unaprijed znaju procijenjena vremena, što nije uvijek moguće. Kao grubu aproksimaciju, u nekim slučajevima možete koristiti vrijeme koje je nit provela posljednje primajući kontrolu.

Algoritam spada u kategoriju ne-preemptivnih, bez prioriteta.

Imenovani algoritmi se mogu koristiti za paketne režime rada, kada korisnik ne očekuje da će sistem odgovoriti. Za interaktivno računarstvo potrebno je prije svega osigurati prihvatljivo vrijeme odziva i jednaku uslugu za multiterminalne sisteme. Za jednokorisničke sisteme, poželjno je da oni programi sa kojima se direktno radi imaju bolje vreme odziva od pozadinskih poslova. Osim toga, neke aplikacije, dok rade bez direktne interakcije korisnika, i dalje moraju biti zajamčene da će dobiti svoj dio procesorskog vremena (na primjer, program za e-poštu). Za rješavanje takvih problema koriste se metode prioritetnih usluga i koncept kvantizacije.


Disciplina vrteška, ili kružniR.R.(Round Robin). Ova disciplina odnosi se na preventivne algoritme i zasniva se na kvantizaciji. Svaki zadatak dobija procesorsko vrijeme u porcijama - kvante. Nakon završetka vremenskog kvanta, zadatak se uklanja iz procesora i stavlja na kraj reda procesa spremnih za izvršenje, a sljedeći zadatak se prihvaća na servisiranje od strane procesora. Za optimalan rad sistema potrebno je pravilno odabrati zakon po kojem se vremenski isečci dodeljuju zadacima.

Kvantna vrijednost je odabrana kao kompromis između prihvatljivog vremena odziva sistema na zahtjeve korisnika (tako da njihovi najjednostavniji zahtjevi ne uzrokuju dugo čekanje) i režijskih troškova često mijenjanih zadataka. Kada je prekinut, OS mora sačuvati dovoljno veliku količinu informacija o trenutnom procesu, staviti ručicu otkazanog zadatka u red čekanja i učitati kontekst novog zadatka. Uz mali vremenski odsječak i česta prebacivanja, relativni udio takvih troškova će postati veliki, a to će degradirati performanse sistema u cjelini. Ako je vremenski odsječak velik i red spremnih zadataka se povećava, odgovor sistema će postati loš.

U nekim operativnim sistemima moguće je eksplicitno specificirati vrijednost vremenskog odsječka ili dozvoljeni raspon njegovih vrijednosti. Na primjer, u OS/2, datoteka CONFIG.SYS koristi TIMESLICE operator da specificira minimalne i maksimalne vrijednosti za vremenski odsječak: TIMESLICE=32.256 označava da se vremenski odsječak može promijeniti sa 32 na 256 milisekundi.

Ova uslužna disciplina je jedna od najčešćih. U nekim slučajevima, kada OS ne podržava izričito disciplinu kružnog rasporeda, takvo održavanje se može organizirati umjetno. Na primjer, neki RTOS koriste zakazivanje sa apsolutnim prioritetima, a kada su prioriteti jednaki, primjenjuje se princip čekanja. To jest, samo zadatak sa višim prioritetom može ukloniti zadatak iz izvršenja. Po potrebi, ravnomjerno i ravnomjerno organizirati uslugu, tj. Kako bi osigurao da svi poslovi primaju iste vremenske odsječke, operater sistema može sam implementirati takvo servisiranje. Da biste to učinili, dovoljno je svim korisničkim zadacima dodijeliti iste prioritete i kreirati jedan zadatak visokog prioriteta, koji ne bi trebao raditi ništa drugo osim da bude zakazan za izvršavanje na tajmeru u određenim vremenskim intervalima. Ovaj zadatak će samo ukloniti trenutnu aplikaciju iz izvršavanja, premjestit će se na kraj reda, a sam zadatak će odmah napustiti procesor i dati ga sljedećem procesu u redu čekanja.

U svojoj najjednostavnijoj implementaciji, disciplina karusel servisa pretpostavlja da svi poslovi imaju isti prioritet. Ako je potrebno uvesti mehanizam prioritetnog servisiranja, obično se organizira nekoliko redova, ovisno o prioritetima, a servisiranje reda nižeg prioriteta se vrši samo kada je red višeg prioriteta prazan. Ovaj algoritam se koristi za planiranje u OS/2 i Windows NT sistemima.

Planiranje prema prioritetima.

Važan koncept koji leži u osnovi mnogih preventivnih algoritama je preventivna usluga. Takvi algoritmi koriste informacije koje se nalaze u deskriptoru toka - njegov prioritet. Različiti sistemi različito definiraju prioritet. U nekim sistemima, vrijednost najvišeg prioriteta može se smatrati numerički najveća vrijednost, u drugima, naprotiv, najveći prioritet se smatra nula.

Tipično, prioritet niti je direktno povezan sa prioritetom procesa unutar kojeg se nit izvodi. Prioritet procesa dodeljuje operativni sistem prilikom kreiranja, uzimajući u obzir da li je proces sistemski ili aplikativni, koji je status korisnika koji je pokrenuo proces i da li je postojala eksplicitna instrukcija korisnika da dodeli određeni prioritet na proces. Vrijednost prioriteta je uključena u ručku procesa i koristi se kada se dodjeljuje prioritet njegovim nitima. Ako nit nije pokrenuta naredbom korisnika, već kao rezultat druge niti koja izvršava sistemski poziv, tada OS mora uzeti u obzir parametre sistemskog poziva kako bi joj dodijelio prioritet.

Prilikom planiranja održavanja programa prema prethodno opisanim algoritmima može doći do situacije da se neki kontrolni ili upravljački zadaci ne mogu implementirati u dužem vremenskom periodu zbog povećanja opterećenja u sistemu (posebno u RTOS-u). Štaviše, posljedice zbog neblagovremenog završetka ovakvih zadataka mogu biti ozbiljnije nego zbog neizvršavanja nekih programa sa višim prioritetom. U tom slučaju bi bilo preporučljivo privremeno promijeniti prioritet "hitnih" zadataka (onih čije je vrijeme obrade isteklo), a nakon izvršenja vratiti prethodnu vrijednost. Uvođenje mehanizama za dinamično mijenjanje prioriteta omogućava implementaciju bržeg odgovora sistema na kratke zahtjeve korisnika (što je važno tokom interaktivnog rada), ali istovremeno garantuje ispunjenje bilo kojeg zahtjeva.

Dakle, prioritet bi mogao biti statički(fiksno) ili dinamičan(promjena sistema u zavisnosti od situacije u njemu). Takozvani prioritet osnovne niti direktno zavisi od osnovnog prioriteta procesa koji ga je stvorio. U nekim slučajevima, sistem može povećati prioritet niti (i u različitim stepenima), na primjer, ako procesorski vremenski odsječak koji joj je dodijeljen nije u potpunosti iskorišten, ili u suprotnom smanjiti prioritet. Na primjer, OS daje više prioritet nitima koje čekaju na unos s tastature, a manje nitima koje izvode operacije diska. U nekim sistemima koji koriste mehanizam dinamičkog prioriteta, za promjenu prioriteta koriste se prilično složene formule koje uključuju vrijednosti osnovnih prioriteta, stepen opterećenja računarskog sistema, početnu vrijednost prioriteta koju je odredio korisnik itd. .

Postoje dvije vrste prioritetnog rasporeda: održavanje sa relativnim prioritetima i usluga sa apsolutnim prioritetima. U oba slučaja, odabir niti za izvršenje se vrši na isti način - odabire se nit sa najvećim prioritetom, a različito se određuje trenutak promjene aktivne niti. U sistemu relativnog prioriteta, aktivna nit radi sve dok ne napusti procesor (ili čeka, dolazi do greške ili se nit završava). U sistemu sa apsolutnim prioritetima, do prekida aktivne niti, pored navedenih razloga, dolazi i ako se u redu spremnih niti pojavi nit sa većim prioritetom od aktivne. Tada se pokrenuta nit prekida i stavlja u stanje spremnosti.

Sistem sa relativnim prioritetnim rasporedom minimizira troškove prebacivanja, ali jedan zadatak može zauzeti procesor dugo vremena. Ovaj servisni način nije prikladan za sisteme s podjelom vremena i sisteme u stvarnom vremenu, ali u sistemima grupne obrade (na primjer, OS/360) se široko koristi. Planiranje apsolutnog prioriteta je pogodno za sisteme upravljanja objektima gdje je važan brz odgovor na događaje.

Mješoviti tip planiranja koristi se u mnogim operativnim sistemima: algoritmi raspoređivanja zasnovani na prioritetima su kombinovani sa konceptom kvantizacije.

RAZVOJ MODULA OPERATIVNOG SISTEMA OBUKE

Smjernice

za dizajn kursa u disciplini

"OS"

za redovne studente

uputstva

UVOD. 4

1. Teorijski dio. 4

1.1. Podsistem upravljanja procesima. 4

1.1.1. Kontekst i rukohvat procesa. 5

1.1.2. Algoritmi planiranja procesa. 6

1.1.3. Algoritmi za planiranje unaprijed i bez prevencije. 9

1.1.4. Model procesa i funkcije podsistema upravljanja procesima obrazovnog operativnog sistema 12

1.2. Podsistem za upravljanje memorijom.. 17

1.2.1. Distribucija stranica. 18

1.2.2. Distribucija po segmentima. 22

1.2.3. Distribucija po segmentima stranice. 23

1.2.4. Algoritmi zamjene stranica. 24

1.3. Upravljanje fajlovima. trideset

1.3.1. Imena datoteka. trideset

1.3.2. Vrste fajlova. 32

1.3.3. Fizička organizacija i adresa fajla. 33

2. Procedura za završetak kursnog projekta. 38

3. Opcije za zadatke. 39

Bibliografija 42

DODATAK A... 43

UVOD

Svrha predmetnog projekta: učiti teorijska osnova izgradnja modula operativnog sistema. Steknite praktične vještine u razvoju programa koji je dio operativnog sistema.

Teorijski dio

Funkcije operativnog sistema samostalnog računara obično su grupisane ili prema tipovima lokalnih resursa kojima OS upravlja ili prema specifičnim zadacima koji se primenjuju na sve resurse. Ponekad se takve grupe funkcija nazivaju podsistemi. Najvažniji podsistemi su podsistemi upravljanja procesima, memorijom, datotekama i vanjskim uređajima, a podsistemi zajednički za sve resurse su korisnički interfejs, zaštita podataka i administrativni podsistemi.

Podsistem upravljanja procesima

Najvažniji dio operativnog sistema, koji direktno utiče na funkcionisanje računara, je podsistem upravljanja procesima. Za svaki novokreirani proces, OS generiše sistemske informacione strukture koje sadrže podatke o potrebama procesa za resursima računarskog sistema, kao i o resursima koji su mu stvarno dodeljeni. Stoga se proces može definirati i kao neka aplikacija za trošenje sistemskih resursa.

Da bi se proces izvršio, operativni sistem mu mora dodijeliti područje RAM-a za smještaj koda i podataka procesa i osigurati mu potrebnu količinu procesorskog vremena. Osim toga, proces može trebati pristup resursima kao što su datoteke i I/O uređaji.

U multitasking sistemu, proces može biti u jednom od tri glavna stanja:

RUNNING - aktivno stanje procesa, tokom kojeg proces ima sve potrebne resurse i direktno ga izvršava procesor;

ČEKANJE je pasivno stanje procesa, proces je blokiran, ne može se izvršiti iz svojih internih razloga, čeka da se dogodi neki događaj, na primjer, završetak I/O operacije, primanje poruke od drugog procesa , ili oslobađanje nekog resursa koji mu je potreban;

READY je takođe pasivno stanje procesa, ali je u ovom slučaju proces blokiran zbog okolnosti koje su van njega: proces ima sve resurse potrebne za njega, spreman je za izvršenje, ali procesor je zauzet izvršavanjem drugog procesa.

Tokom životnog ciklusa, svaki proces prelazi iz jednog stanja u drugo u skladu sa algoritmom planiranja procesa implementiranim u datom operativnom sistemu. Tipičan grafikon stanja procesa prikazan je na slici 1.1.

Slika 1.1 — Grafikon stanja procesa u multitasking okruženju

U jednoprocesorskom sistemu može postojati samo jedan proces u stanju RUNNING, au svakom od stanja WAITING i READY može postojati nekoliko procesa; ovi procesi formiraju redove procesa na čekanju i spremnih procesa.

Životni ciklus proces počinje u stanju READY, kada je proces spreman za izvršenje i čeka na svoj red. Kada je aktiviran, proces prelazi u stanje RUNNING i ostaje u njemu sve dok ili ne pusti sam procesor, prelazeći u stanje WAITING za neki događaj, ili ga prisilno izbaci iz procesora, na primjer, zbog iscrpljivanja dodijeljenog ovaj proces Kvant CPU vremena. U posljednjem slučaju, proces se vraća u stanje READY. Proces prelazi u ovo stanje iz stanja WAITING nakon što se dogodi očekivani događaj.

Članci za čitanje:

Osnove programiranja. Upravljanje procesima

izolacija procesa;
  • planiranje izvršavanja procesa i niti (općenito, treba govoriti i o rasporedu zadataka);
  • slanje niti;
  • organizacija međuprocesne komunikacije;
  • sinhronizacija procesa i niti;
  • prekid i uništavanje procesa i niti.
  • Pet glavnih događaja dovode do stvaranja procesa:

  • ispunjavanje zahtjeva tekućeg procesa za kreiranje procesa;
  • korisnički zahtjev za kreiranjem procesa, kao što je interaktivna prijava;
  • pokrenuti batch posao;
  • kreiranje od strane operativnog sistema procesa neophodnog za rad bilo koje usluge.
  • Obično, kada se OS pokrene, kreira se nekoliko procesa. Neki od njih su procesi visokog prioriteta koji komuniciraju s korisnicima i obavljaju ih zadati posao. Preostali procesi su pozadinski procesi, nisu povezani s određenim korisnicima, već obavljaju posebne funkcije - na primjer, vezane za e-poštu, web stranice, ispis, prijenos datoteka preko mreže, periodično pokretanje programa (npr. defragmentaciju diska) itd. Pozadinski procesi se nazivaju demoni.

    Novi proces se može kreirati na zahtjev trenutnog procesa. Kreiranje novih procesa je korisno u slučajevima kada se zadatak koji se obavlja najlakše može formirati kao skup povezanih, ali ipak nezavisnih procesa u interakciji. U interaktivnim sistemima, korisnik može pokrenuti program upisivanjem komande na tastaturi ili dvostrukim klikom na ikonu programa. U oba slučaja kreira se novi proces i u njemu se pokreće program. IN sistemi serijske obrade na glavnim računarima, korisnici podnose posao (moguće korištenjem udaljenog pristupa), a OS kreira novi proces i pokreće sljedeći posao iz reda kada se oslobode potrebni resursi.

    Sa tehničke tačke gledišta, u svim ovim slučajevima, novi proces se formira na isti način: trenutni proces ispunjava sistemski zahtev za kreiranje novog procesa. Podsistem upravljanja procesima i nitima je odgovoran za osiguravanje procesa potrebnim resursima. OS održava posebne informacijske strukture u memoriji, u kojima bilježi koji su resursi dodijeljeni svakom procesu. Može dodijeliti resurse procesu za isključivu ili zajedničku upotrebu s drugim procesima. Neki od resursa se dodeljuju procesu kada je kreiran, a neki se dodeljuju dinamički na osnovu zahteva tokom vodeće vrijeme. Resursi se mogu dodijeliti procesu za cijeli životni vijek ili samo za određeni period. Prilikom obavljanja ovih funkcija, podsistem upravljanja procesom stupa u interakciju s drugim OS podsistemima odgovornim za upravljanje resursima, kao što je podsistem za upravljanje memorijom, ulazno/izlazni podsistem, sistem podataka.

    Da spriječite ometanje procesa alokacija resursa, a također ne mogu oštetiti međusobne kodove i podatke, najvažniji zadatak OS-a je da izoluje jedan proces od drugog. Za ovo operativni sistem pruža svakom procesu poseban virtuelni adresni prostor tako da nijedan proces ne može direktno pristupiti komandama i podacima drugog procesa.

    U OS-u u kojem postoje procesi i niti, proces se smatra zahtjevom za konzumiranjem svih vrsta resursa osim jednog - procesorskog vremena. Ovaj kritični resurs operativni sistem distribuira među ostalim jedinicama rada - nitima, koje su dobile ime zbog činjenice da predstavljaju sekvence (nitove izvršenja) naredbi. Prijelaz s izvršavanja jedne niti na drugu vrši se kao rezultat planiranje I otpremanje. Rad određivanja kada trenutna nit treba biti prekinuta i nit kojoj treba dozvoliti da se pokrene naziva se zakazivanje. Raspored niti se vrši na osnovu informacija pohranjenih u deskriptorima procesa i niti. Prilikom planiranja to se uzima u obzir prioritet niti, njihovo vrijeme čekanja u redu, akumulirano vodeće vrijeme, intenzitet I/O pristupa i drugi faktori.

    Dispečerstvo se sastoji od implementacije rješenja pronađenog kao rezultat planiranja, tj. u prebacivanju procesora s jedne niti na drugu. Otpremanje se odvija u tri faze:

    • čuvanje konteksta trenutne niti;
    • učitavanje konteksta niti odabrane kao rezultat raspoređivanja;
    • pokretanje nove niti za izvršenje.

    Kada sistem istovremeno izvodi više nezavisnih zadataka, pojavljuju se dodatni problemi. Iako se niti nastaju i izvršavaju sinhrono, možda će trebati u interakciji, kao što je pri razmjeni podataka. Da bi komunicirali jedni s drugima, procesi i niti mogu koristiti širok spektar mogućnosti: cijevi (u UNIX-u), poštanske sandučiće (Windows), udaljene pozive procedura, utičnice (u Windows-u povezuju procese na različitim strojevima). Usklađivanje brzina niti je takođe veoma važno da bi se sprečili uslovi trke (gde više niti pokušava da modifikuje istu datoteku), zastoje i druge kolizije do kojih dolazi prilikom deljenja resursa.

    Sinhronizacija threads je jedna od najvažnijih funkcija procesa i podsistema upravljanja nitima. Moderni operativni sistemi pružaju niz mehanizama sinhronizacije, uključujući semafore, mutekse, kritične regije i događaje. Svi ovi mehanizmi rade sa nitima, a ne procesima. Dakle, kada se nit blokira na semaforu, druge niti u tom procesu mogu nastaviti raditi.

    Svaki put kada proces izađe – zbog jednog od sljedećih događaja: normalan izlaz, izlaz iz greške, fatalni izlaz iz greške, ubijanje od strane drugog procesa – OS poduzima korake da očisti svoje tragove na sistemu. Podsistem za upravljanje procesima zatvara sve datoteke s kojima je proces radio, oslobađajući područja RAM-a dodijeljena kodovima, podacima i sistemskim informacijskim strukturama procesa. Svi mogući redovi OS i lista resursa koji su imali veze sa procesom koji se prekida su ispravljeni.

    Kao što je već napomenuto, za podršku multiprogramiranje, OS mora dizajnirati za sebe one unutrašnje jedinice rada između kojih će procesor i drugi računarski resursi biti podijeljeni. Postavlja se pitanje: koja je suštinska razlika između ovih jedinica rada, kakav se multiprogramski efekat može postići njihovom upotrebom i u kojim slučajevima treba kreirati te radne jedinice operativnog sistema?

    Očigledno, svaka operacija računarskog sistema se sastoji od izvršavanja nekog programa. Stoga je određeni programski kod povezan i sa procesom i sa niti, koja se izdaje u obliku izvršnog modula. U najjednostavnijem slučaju, proces se sastoji od jedne niti, a neki moderni operativni sistemi još uvijek imaju ovu situaciju. Multiprogramiranje u takvom OS se provodi na nivou procesa. Kada je interakcija neophodna, procesi se okreću operativnom sistemu, koji im, kao posrednik, obezbeđuje sredstva međuprocesne komunikacije - kanale, deljene poruke pošte, delove zajedničke memorije itd.

    Međutim, u sistemima koji nemaju koncept niti, problemi se javljaju prilikom organizovanja paralelnih računanja unutar procesa. I takva potreba se može pojaviti. Poenta je da se jedan proces nikada ne može izvršiti brže nego u režimu jednog programa. Međutim, aplikacija koja se pokreće unutar jednog procesa može imati unutrašnji paralelizam, što bi u principu moglo ubrzati njegovo rješavanje. Ako, na primjer, program omogućava pristup vanjskom uređaju, tada je tokom ove operacije moguće ne blokirati izvršenje cijelog procesa, već nastaviti proračune u drugoj grani programa.

    Pokretanje više poslova paralelno unutar jedne interaktivne aplikacije poboljšava efikasnost korisnika. Dakle, kada radite s uređivačem teksta, poželjno je biti u mogućnosti kombinirati kucanje novog teksta s tako dugim operacijama kao što je preformatiranje značajnog dijela teksta, spremanje na lokalni ili udaljeni disk.

    Nije teško zamisliti buduću verziju kompajlera koja može automatski kompajlirati datoteke izvornog koda tokom pauza dok kucate program. Tada bi se u realnom vremenu pojavljivala upozorenja i poruke o greškama, a korisnik bi odmah vidio gdje je pogriješio. Moderna tabele preračunajte podatke u pozadini čim korisnik nešto promijeni. Procesori teksta razbijaju tekst na stranice, provjeravaju pravopis i gramatičke greške, kucanje u pozadini, spremanje teksta svakih nekoliko minuta, itd. U svim ovim slučajevima, niti se koriste kao sredstvo za paraleliziranje izračunavanja.

    Ovi zadaci se mogu dodijeliti programeru, koji bi napisao dispečerski program koji implementira paralelizam unutar jednog procesa. Međutim, to je vrlo teško, a sam program bi bio vrlo zbunjujući i teško ga je otkloniti.

    Drugo rješenje je kreiranje nekoliko procesa za jednu aplikaciju za svaku od paralelnih

    Jedan od glavnih podsistema svakog modernog višeprogramskog OS-a koji direktno utiče na funkcionisanje računara je podsistem za upravljanje procesima i nitima. Glavne funkcije ovog podsistema:

      kreiranje procesa i niti;

      obezbeđivanje procesa i niti potrebnih resursa;

      izolacija procesa;

      planiranje izvršavanja procesa i niti (općenito, treba govoriti i o rasporedu zadataka);

      slanje niti;

      organizacija međuprocesne interakcije;

      sinhronizacija procesa i niti;

      prekid i uništavanje procesa i niti.

    1. Pet glavnih događaja dovode do stvaranja procesa:

      ispunjavanje zahtjeva tekućeg procesa za kreiranje procesa;

      korisnički zahtjev za kreiranjem procesa, kao što je interaktivna prijava;

      pokrenuti batch posao;

      kreiranje od strane operativnog sistema procesa neophodnog za rad bilo koje usluge.

    Obično, kada se OS pokrene, kreira se nekoliko procesa. Neki od njih su procesi visokog prioriteta koji stupaju u interakciju s korisnicima i obavljaju dodijeljeni posao. Preostali procesi su pozadinski procesi, oni nisu povezani sa određenim korisnicima, već obavljaju posebne funkcije - na primjer, vezane za e-poštu, web stranice, izlaz na pečat, prijenos datoteka By mreže, periodično pokretanje programa (npr. defragmentaciju diska) itd. Pozadinski procesi se nazivaju demoni.

    Može se kreirati novi proces By zahtjev tekućeg procesa. Kreiranje novih procesa je korisno u slučajevima kada se zadatak koji se obavlja najlakše može formirati kao skup povezanih, ali ipak nezavisnih procesa u interakciji. U interaktivnim sistemima korisnik može pokrenuti program upisivanjem komande na tastaturi ili dvostrukim klikom na ikonu programa. U oba slučaja kreira se novi proces i lansirati u njemu postoje programi. IN sistemi serijske obrade na glavnim računarima, korisnici podnose posao (moguće korištenjem udaljenog pristupa), a OS kreira novi proces i pokreće sljedeći posao iz reda kada se oslobode potrebni resursi.

    2. Sa tehničke tačke gledišta, u svim ovim slučajevima, novi proces se formira na isti način: trenutni proces izvršava sistem zahtjev da kreirate novi proces. Podsistem upravljanja procesima i nitima je odgovoran za osiguravanje procesa potrebnim resursima. OS održava posebne informacijske strukture u memoriji, u kojima bilježi koji su resursi dodijeljeni svakom procesu. Može dodijeliti resurse procesu za isključivu ili zajedničku upotrebu s drugim procesima. Neki od resursa se dodjeljuju procesu kada je kreiran, a neki se dodjeljuju dinamički By upiti u vodeće vrijeme. Resursi se mogu dodijeliti procesu za cijeli životni vijek ili samo za određeni period. Prilikom obavljanja ovih funkcija, podsistem upravljanja procesom stupa u interakciju s drugim OS podsistemima odgovornim za upravljanje resursima, kao što je podsistem za upravljanje memorijom, ulazno/izlazni podsistem, sistem podataka.

    3. Da spriječite ometanje procesa alokacija resursa, a također nisu mogli međusobno oštetiti kodove i podatke, Najvažniji zadatak OS-a je da izoluje jedan proces od drugog. Za ovo operativni sistem pruža svakom procesu poseban virtuelni adresni prostor tako da nijedan proces ne može direktno pristupiti komandama i podacima drugog procesa.

    4. U OS-u u kojem postoje procesi i niti, proces se smatra zahtjevom za konzumiranjem svih vrsta resursa osim jednog - procesorskog vremena. Ovo je najvažnije resurs distribuiraju operativnim sistemom između ostalih jedinica rada - niti, koje su dobile ime zbog činjenice da predstavljaju sekvence (nitove izvršenja) naredbi. Prijelaz s izvršavanja jedne niti na drugu vrši se kao rezultatplaniranje Iotpremanje . Posao By Određivanje trenutka u kojem se trenutna nit treba prekinuti i nit kojoj treba dozvoliti da se pokrene naziva se zakazivanje. Raspored niti se vrši na osnovu informacija pohranjenih u deskriptorima procesa i niti. Prilikom planiranja to se uzima u obzir prioritet niti, njihovo vrijeme čekanja u redu, akumulirano vodeće vrijeme, intenzitet I/O pristupa i drugi faktori.

    5. Dispečerstvo se sastoji u implementaciji rješenja pronađenog kao rezultat planiranja, tj. u prebacivanju procesora s jedne niti na drugu. Otpremanje se odvija u tri faze:

      čuvanje konteksta trenutne niti;

      pokretanje nove niti za izvršenje.

    6. Kada sistem istovremeno izvodi više nezavisnih zadataka, pojavljuju se dodatni problemi. Iako se niti nastaju i izvršavaju sinhrono, možda će trebati u interakciji, na primjer, prilikom razmjene podataka. Da bi komunicirali jedni s drugima, procesi i niti mogu koristiti širok raspon mogućnosti: kanale (in UNIX), poštanski sandučići ( Windows), daljinski poziv procedure, utičnice (in Windows povezati procese na različitim mašinama). Usklađivanje brzina niti je također vrlo važno kako bi se spriječili uvjeti trkanja (gdje više niti pokušava promijeniti isti fajl), zastoji i druge kolizije do kojih dolazi kada se resursi dijele.

    7. Sinhronizacija threads je jedna od najvažnijih funkcija procesa i podsistema upravljanja nitima. Moderni operativni sistemi pružaju niz mehanizama sinhronizacije, uključujući semafore, mutekse, kritične regije i događaje. Sve ovo mehanizama rad sa nitima, a ne procesima. Zato kada protok blokova na semaforu, druge niti u ovom procesu mogu nastaviti s radom.

    8. Svaki put kada se proces završi, – a to se događa zbog jednog od sljedećih događaja: normalno Izlaz, Izlaz By greška, Izlaz By fatalna greška, uništenje od strane drugog procesa - OS preduzima korake da "očisti tragove" svog prisustva u sistemu. Podsistem za upravljanje procesima zatvara sve datoteke s kojima je proces radio, oslobađajući područja RAM-a dodijeljena kodovima, podacima i sistemskim informacijskim strukturama procesa. Izvedeno korekcija sve vrste OS redova i lista resurse koji su sadržavali veze do procesa koji se prekida.

    Funkcije operativnog sistema samostalnog računara obično su grupisane ili prema tipovima lokalnih resursa kojima OS upravlja ili prema specifičnim zadacima koji se primenjuju na sve resurse. Ponekad se takve grupe funkcija nazivaju podsistemi. Najvažniji podsistemi upravljanja resursima su podsistemi upravljanja procesima, memorijom, datotekama i vanjskim uređajima, a podsistemi zajednički za sve resurse su korisnički interfejs, sigurnost podataka i administrativni podsistemi. Najvažniji dio operativnog sistema, koji direktno utiče na funkcionisanje računara, je podsistem upravljanja procesima. Za svaki novokreirani proces, OS generiše sistemske informacione strukture koje sadrže podatke o potrebama procesa za resursima računarskog sistema, kao i o resursima koji su mu stvarno dodeljeni. Stoga se proces može definirati i kao neka aplikacija za trošenje sistemskih resursa. U višeprogramskom operativnom sistemu, nekoliko procesa može postojati istovremeno. Neki procesi se generiraju na inicijativu korisnika i njihovih aplikacija; takvi procesi se obično nazivaju korisničkim procesima. Druge procese, zvane sistemski procesi, inicijalizira sam operativni sistem da bi izvršili svoje funkcije. Važan zadatak operativnog sistema je da zaštiti resurse dodeljene datom procesu od drugih procesa. Jedan od najpažljivije zaštićenih procesnih resursa su područja RAM-a u kojima se pohranjuju procesni kod i podaci. Skup svih oblasti RAM-a koje je operativni sistem dodijelio procesu naziva se njegov adresni prostor. Za svaki proces se kaže da radi u svom adresnom prostoru, što se odnosi na zaštitu adresnih prostora koju obezbeđuje OS. Zaštićene su i druge vrste resursa, kao što su datoteke, vanjski uređaji itd. Operativni sistem ne može samo zaštititi resurse dodijeljene jednom procesu, već i organizirati njihovo dijeljenje, na primjer, omogućavajući pristup određenom području \u200b pamćenje kroz nekoliko procesa. Tokom trajanja procesa, njegovo izvršenje može se više puta prekidati i nastaviti. Da bi se nastavilo izvršavanje procesa, potrebno je vratiti stanje njegovog operativnog okruženja. Stanje operativnog okruženja identifikuje se stanjem registara i programskog brojača, režimom rada procesora, pokazivačima na otvorene fajlove, informacijama o nedovršenim I/O operacijama, kodovima grešaka sistemskih poziva koje obavlja dati proces itd. . d) Ove informacije se nazivaju kontekstom napretka. Kažu da kada se proces promijeni, dolazi do promjene konteksta. Dakle, podsistem za upravljanje procesima planira izvršavanje procesa, odnosno raspoređuje vreme procesora između nekoliko istovremeno postojećih procesa u sistemu, kreira i uništava procese, obezbeđuje procese potrebnim sistemskim resursima, održava sinhronizaciju procesa, a takođe obezbeđuje interakciju. između procesa.

    Podijelite sa prijateljima ili sačuvajte za sebe:

    Učitavanje...