Uurin vaatluse abil Protsessi A mälu hõivamise ja vabastamise iseloomu 2/19/2007 9:00:38 AM 1,2,3,4,5,6,7,8,200,200,200,200,200,200,200,200,FF,FF,FF,FF,FF,FF,FF,FF, Esialgu paistab, et A hõivabsuhteliselt väikeseid mälublokke. Protsess pole mälu suhtes ahne, fragmenteerub vähe.Väga sageli vabastatakse mälublokke "vanuse" järjekorras. Mälu kulub suhteliselt vähe. Uurin vaatluse abil Protsessi B mälu hõivamise ja vabastamise iseloomu. 2/19/2007 9:13:11 AM 1,2,3,4,5,6,7,8,200,200,200,200,200,200,200,200,FF,FF,FF,FF,FF,FF,FF,FF, Blokkide suurused on sarnased A-le (variatiivsus siiski suurem) kuid fragmenteerumine paistab olevat suurem. Uurin vaatluse abil Protsessi C mälu hõivamise ja vabastamise iseloomu 2/19/2007 9:21:37 AM 1,2,3,4,5,6,7,8,200,200,200,200,200,200,200,200,FF,FF,FF,FF,FF,FF,FF,FF, Mälu hõivatakse keskmise suurusega blokkidena väga pikaks ajaks ja harva. Vabastatakse samuti harva. Fragmenteerumine prakktiliselt puudub. Uurin vaatluse abil Protsessi D mälu hõivamise ja vabastamise iseloomu 2/19/2007 9:28:43 AM 1,2,3,4,5,6,7,8,200,200,200,200,200,200,200,200,FF,FF,FF,FF,FF,FF,FF,FF, Mälu hõivatakse enam-vähem võrdsete blokkidena ja palju järjest. Vabastatakse blokke peaaegu vanuse järjekorras. Protsess vajab suhteliselt palju mälu. Uurin vaatluse abil Protsessi E mälu hõivamise ja vabastamise iseloomu 2/19/2007 9:40:47 AM 1,2,3,4,5,6,7,8,200,200,200,200,200,200,200,200,FF,FF,FF,FF,FF,FF,FF,FF, Hõivab järjest palju, keskmise suursega tükke, siis vabastab palju. Uurin vaatluse abil Protsessi F mälu hõivamise ja vabastamise iseloomu 2/19/2007 9:47:23 AM 1,2,3,4,5,6,7,8,200,200,200,200,200,200,200,200,FF,FF,FF,FF,FF,FF,FF,FF, Päris sarnade D-ga. Uurin vaatluse abil Protsessi G mälu hõivamise ja vabastamise iseloomu 2/19/2007 9:51:40 AM 1,2,3,4,5,6,7,8,200,200,200,200,200,200,200,200,FF,FF,FF,FF,FF,FF,FF,FF, Hõivab palju ja suurte blokkidena, vabastamist toimub vähe. Aeglane protsess. 2/19/2007 9:55:47 AM Uurin vaatluse abil Protsessi H mälu hõivamise ja vabastamise iseloomu 1,2,3,4,5,6,7,8,200,200,200,200,200,200,200,200,FF,FF,FF,FF,FF,FF,FF,FF, Väga stabiilse suuruseba blokid, hõivab järjest palju - hiljem vabastab ja hõivab peaaegu võrdselt. Tundub, et lihtsa vaatluse abil ei saa siiski korralikku ülevaadet protsesside eripäradest (liiga palju muutujaid). Seetõttu otsustasin koguda andmeid veidi organiseeritumalt. Meetod on järgmine: 1) Lasen protsessidel vaikimisi valikutega ja vaikimisi kiirusel käia 1 minuti, seejärel peatan protsessid viies kiiruse regulaatori asendisse STOP. 2) Kannan iga protsessi kohta andmed (Max, Nalloc, Nfree, Maxalloc) tabelisse, andmetele lisan veel olukorra paremaks visualiseerimiseks ekraanipildistusest väljalõigatud "mälu hetkesesisu" kujutise. 3) kordan punkte 1) ja 2) 15 korda. 4) Koostan kokkuvõtva vahelekülje kuhu märgin protsesside keskmised tulemused. Lisaks olemasolevatele andmetele võtan kasutusele neist tuletatud näitajad "Hõivatud bloki keskmine pikkus" (malloc/nalloc) ja "protsessi augulisus" (malloc/nfree). Koostan saadud tulemustest kõigi keskmiste näitajate kohta eraldi pingeread. 3/7/2007 6:50:01 PM Proovin varianti, kus kogutud andmete põhjal jagasin protsessid kolme pool'i sarnasuse alusel: 1)A ja B - mõlemad hõivavad vähe mälu, hõivatavad blokid lühikesed, palju auke 2)C,D,H - ahned protsessid, hõivavad järjest palju 3)E,F,G - ülejäänud 1,1,2,2,3,3,3,2,200,600,550,0,0,0,0,0,BF,BF,FF,FF,FF,FF,FF,FF, Esimene edukalt lõpule jõudnud katse. Mälu vaja 1350 ühikut. Selline konfiguratsioon on siiski liiga ebastabiilne - vahepeal jõuab protsess lõpuni, vahepeal mitte. Kuna ülesande lahendamiseks on siiski piiratud hulgal aega, mistõttu ei ole võimalik läbi proovida kõiki võimalikke variante, siis üritan esmalt leida sobiva pool'ide arvu ja neisse kokkusobivad protsessid (strateegiaks vaikimisi First Fit). Selleks proovin läbi mulle võistlikuna tunduvad protsesside paigutused 1 kuni 4 pooliga. Iga sellise variandi kohta teen vähemalt 3 katset, et leida minimaalset vajalikku mälu hulka. Tulemused märgin tabelitesse (siin toon lühidalt ära tulemused, täpsemate andmete jaoks vaata tabeleid). 4 pool'i: * Gruppeeritud suurima hõivatud aadressi järgi, eeldusel, et A ja B sobivad kindlasti kokku ja ülejäänud pool'ides peaksid teineteist täiustama skaala vastastikustel otstel olevad protsessid * Gruppeeritud hõivatud blokkide arvu järgi samadel eeldustel * Gruppeeritud aukude hulga järgi samadel eeldustel * Gruppeeritud hõivatud mälu hulga järgi samadel eeldustel * Gruppeeritud hõivatud bloki keskmise pikkuse järgi, samadel eeldustel Parima tulemuse andis siin viimane variant, mis vajab katsetest saadud maksimaalsete näitajate põhjal ennustades 1451 ühikut mälu 3 pool'i: * Gruppeeritud suurima hõivatud aadressi järgi, eeldusel, et A ja B sobivad kindlasti kokku ja ülejäänud pool'ides peaksid teineteist täiustama skaala vastastikustel otstel olevad protsessid * Gruppeeritud hõivatud blokkide arvu järgi samadel eeldustel * Gruppeeritud aukude hulga järgi samadel eeldustel * Gruppeeritud hõivatud mälu hulga järgi samadel eeldustel * Gruppeeritud hõivatud bloki keskmise pikkuse järgi, samadel eeldustel * Gruppeeritud “augulisuse“ järgi samadel eeldustel Parima tulemuse andis siin esimene variant, mis vajab katsetest saadud maksimaalsete näitajate põhjal ennustades 1273 ühikut mälu 2 pool'i: * Gruppeeritud suurima hõivatud aadressi järgi, eeldusel, et pool'ides peaksid teineteist täiustama skaala vastastikustel otstel olevad protsessid * Gruppeeritud hõivatud blokkide arvu järgi, eeldusel, et pool'ides peaksid teineteist täiustama skaala vastastikustel otstel olevad protsessid * Gruppeeritud aukude arvu järgi, eeldusel, et pool'ides peaksid teineteist täiustama skaala vastastikustel otstel olevad protsessid * Gruppeeritud hõivatud blokkide keskmise pikkuse järgi, eeldusel, et pool'ides peaksid teineteist täiustama skaala vastastikustel otstel olevad protsessid * Gruppeeritud „augulisuse“ järgi, eeldusel, et pool'ides peaksid teineteist täiustama skaala vastastikustel otstel olevad protsessid Parima tulemuse andis siin viimane variant, mis vajab katsetest saadud maksimaalsete näitajate põhjal ennustades 1215 ühikut mälu 1 pool: Kõigist eelpool proovitud variantidest parim tulemus 1072 ühikut mälu (first fit strateegiaga). Katsetasin ka teisi strateegiaid, kuid tulemused olid kehvemad. TULEMUS: Käesoleva ülesande lahendamiseks valitud meetodi järgi oli parimaks tulemuseks kõige lihtsam variant - panna kõik protsessid ühte pool'i ja kasutada first dit strateegiat. Sellisel juhul on vaja kokku umbes 1100 ühikut mälu (igaksjuhuks väike varu). MÄRKUSED: Kindlasti pole see kõige parem tulemus - võimalikke variante on väga palju. Kuna autor ei suutnud tuvastada protsesside juures mingeid eriti suuri sarnasusi (v.a. need mis on väljatoodud kokkuvõtval vahelehel), siis võib kasutatud metoodilist lähenemist pidada siiski piisavalt heaks. Kogutud andmed ja katsete tulemused kättesaadavad siit: http://www.tlu.ee/~nullyks/m2lu.pdf