Eesti

Põhjalik ülevaade protsessihaldusest operatsioonisüsteemides: protsessi olekud, planeerimine, IPC ja lukustumine. Oluline arendajatele ja süsteemiadministraatoritele.

Operatsioonisüsteemid: Protsessihalduse põhjalik juhend

Protsessihaldus on iga kaasaegse operatsioonisüsteemi fundamentaalne aspekt. See hõlmab protsesside täitmise haldamist, ressursside eraldamist ja sujuva multitegumtöötluse tagamist. See juhend annab üksikasjaliku ülevaate protsessihalduse kontseptsioonidest, tehnikatest ja väljakutsetest. See on mõeldud tudengitele, arendajatele, süsteemiadministraatoritele ja kõigile, kes on huvitatud operatsioonisüsteemide toimimisest.

Mis on protsess?

Oma olemuselt on protsess täitmisel oleva programmi eksemplar. See on enamat kui lihtsalt programmi kood; see hõlmab programmiloenduri, registrite ja muutujate hetkeväärtusi. Igal protsessil on oma mäluruum, mis takistab sellel otseselt teiste protsessidega sekkumast.

Mõelge programmist kui retseptist ja protsessist kui roa tegelikust valmistamisest. Teil võib olla mitu protsessi, mis käitavad sama programmi samaaegselt (nt mitu tekstiredaktori eksemplari), igaühel oma andmed ja olek.

Protsessi põhikomponendid:

Protsessi olekud

Protsess läbib oma eluea jooksul erinevaid olekuid. Nende olekute mõistmine on protsessihalduse mõistmiseks ülioluline.

Need olekud esindavad protsessi elutsüklit ja operatsioonisüsteem vastutab nende vaheliste üleminekute haldamise eest. Näiteks kui protsess peab lugema andmeid kettalt, läheb see üle Töötav olekust Ootel olekusse, kuni I/O operatsioon lõpeb. Seejärel läheb see tagasi Valmis olekusse, oodates oma korda uuesti käivitamiseks.

Protsessi juhtplokk (PCB)

PCB on andmestruktuur, mis sisaldab kogu teavet, mida operatsioonisüsteem vajab protsessi haldamiseks. See on justkui protsessi CV, mis hoiab endas kõike, mida OS peab selle jälgimiseks teadma.

PCB tüüpiline sisu:

Protsesside planeerimine

Protsesside planeerimine on tegevus, mille käigus otsustatakse, millisele valmisoleku järjekorras olevale protsessile tuleks protsessor eraldada. Planeerimise eesmärk on optimeerida süsteemi jõudlust vastavalt teatud kriteeriumidele, näiteks maksimeerida protsessori kasutust, minimeerida pöördeaega või tagada protsessidevaheline õiglus.

Planeerimisjärjekorrad

OS kasutab protsesside haldamiseks järjekordi. Levinumad järjekorrad on:

Planeerijad

Planeerijad on süsteemi tarkvaramoodulid, mis valivad järgmise käivitatava protsessi. On olemas kahte peamist tüüpi planeerijaid:

Mõnes süsteemis on ka keskmise pikkusega planeerija, mis saalib protsesse mälust välja (kettale) ja tagasi sisse, et vähendada multiprogrammeerimise astet. Seda nimetatakse ka saalimiseks (swapping).

Planeerimisalgoritmid

On olemas arvukalt planeerimisalgoritme, millest igaühel on oma tugevused ja nõrkused. Algoritmi valik sõltub süsteemi konkreetsetest eesmärkidest. Siin on mõned levinumad algoritmid:

Näide: Oletame kolm protsessi, P1, P2 ja P3, täitmisaegadega vastavalt 24, 3 ja 3 millisekundit. Kui need saabuvad järjekorras P1, P2, P3, siis FCFS-planeerimise korral käivitatakse esmalt P1, seejärel P2 ja siis P3. Keskmine ooteaeg oleks (0 + 24 + 27) / 3 = 17 millisekundit. Kui aga kasutaksime SJF-i, täidetaks protsessid järjekorras P2, P3, P1 ja keskmine ooteaeg oleks (0 + 3 + 6) / 3 = 3 millisekundit – märkimisväärne paranemine!

Protsessidevaheline suhtlus (IPC)

Protsessidevaheline suhtlus (Inter-Process Communication, IPC) võimaldab protsessidel omavahel suhelda ja sünkroniseerida. See on hädavajalik keerukate rakenduste loomiseks, mis koosnevad mitmest koostööd tegevast protsessist.

Levinumad IPC mehhanismid:

Näide: Veebiserver võib kasutada mitut protsessi, et käsitleda saabuvaid päringuid samaaegselt. Iga protsess võiks käsitleda ühte päringut ning protsessid võiksid suhelda jagatud mälu või sõnumiedastuse kaudu, et jagada andmeid serveri oleku kohta.

Sünkroniseerimine

Kui mitu protsessi pääseb ligi jagatud ressurssidele, on andmete rikkumise ja võidujooksu tingimuste vältimiseks ülioluline tagada sünkroniseerimine. Sünkroniseerimismehhanismid pakuvad viise protsesside täitmise koordineerimiseks ja jagatud andmete kaitsmiseks.

Levinumad sünkroniseerimistehnikad:

Näide: Kujutage ette jagatud loendurit, mida suurendavad mitu protsessi. Ilma sünkroniseerimiseta võivad mitu protsessi lugeda loenduri väärtust, seda suurendada ja tagasi kirjutada, mis viib valede tulemusteni. Kasutades muteks-lukku suurendamisoperatsiooni kaitsmiseks, tagatakse, et ainult üks protsess pääseb korraga loendurile ligi, vältides võidujooksu tingimusi.

Lukustumine (Deadlock)

Lukustumine tekib siis, kui kaks või enam protsessi on lõputult blokeeritud, igaüks oodates ressurssi, mida hoiab teine. See on tõsine probleem, mis võib süsteemi seisata.

Lukustumise tingimused:

Lukustumise tekkimiseks peab samaaegselt olema täidetud neli tingimust (Coffmani tingimused):

Lukustumise käsitlemise tehnikad:

Lukustumiste käsitlemiseks on mitu lähenemist:

Näide: Kujutage ette kahte protsessi, P1 ja P2, ning kahte ressurssi, R1 ja R2. P1 hoiab R1 ja ootab R2, samas kui P2 hoiab R2 ja ootab R1. See tekitab ringootamise, mis viib lukustumiseni. Üks viis selle lukustumise ennetamiseks oleks nõuda, et protsessid taotleksid kõik ressursid korraga enne täitmise alustamist.

Reaalse maailma näited

Protsessihalduse kontseptsioone kasutatakse erinevates operatsioonisüsteemides üle maailma:

Kokkuvõte

Protsessihaldus on operatsioonisüsteemide kriitiline aspekt, mis võimaldab multitegumtöötlust, ressursside jagamist ja süsteemi tõhusat kasutamist. Selles juhendis käsitletud kontseptsioonide mõistmine on hädavajalik kõigile, kes töötavad operatsioonisüsteemidega, arendavad rakendusi või haldavad süsteeme. Omandades protsessi olekud, planeerimisalgoritmid, protsessidevahelise suhtluse ja lukustumise käsitlemise, saate luua robustsemaid, tõhusamaid ja usaldusväärsemaid tarkvarasüsteeme. Ärge unustage kaaluda erinevate lähenemisviiside kompromisse ja valida tehnikad, mis sobivad kõige paremini teie konkreetsetele vajadustele.

Edasine õppimine

Oma teadmiste süvendamiseks protsessihaldusest kaaluge järgmiste ressursside uurimist: