Fabijan Lukin, Fran Pregernik,
Tomislav Sukser Korisnička dokumentacija za obojivo računarstvo |
|
8 ProgramiProgrami (izvorno process fragments) su zamišljeni kao minijaturne aplikacije predviđene za rad u neugodnom ali distribuiranom okolišu. Svaki program može se naseliti na računalo, može zatražiti kopiranje sebe na susjedna računala, može pisati po podatkovnoj stranici računala na kojem se nalazi, te može čitati zrcaljene podatkovne stranice susjednih računala. Programi na različitim računalima (ili unutar jednog računala) kao takvi ne mogu direktno komunicirati, nego komunikaciju moraju ostvariti preko podatkovnih stranica. Dakle, programi mogu jedino komunicirati s operacijskim sustavom, a operacijski sustav se zajedno sa sklopovljem obojivog računala brine o tome da se podatkovne stranice zrcale susjednim računalima te da se programi koji su zatražili prijenos (kopiranje) na neko drugo računalo prenesu na njega. Programi barataju vrlo ograničenim podacima. Osnovno što im je na raspolaganju su broj obojivog računala na kojem se nalaze, te podaci o susjedima – njihove zrcaljene podatkovne stranice. Programi koji međusobno komuniciraju preko zrcaljenih podatkovnih stranica, koji je usput rečeno najefikasniji način, moraju voditi računa o kašnjenju zrcaljenja podatkovnih stranica. Programi, kao ni obojiva računala, nisu svjesni svog položaja u prostoru, tj. jedino što mogu saznati jest udaljenost nekog drugog računala u broju skokova koji su potrebni da jedan podatak prijeđe s jednog računala na drugo. Broj skokova (engl. hops) je ustvari broj potrebnih kopiranja podatka s jednog susjeda na drugog korištenjem zrcalne podatkovne stranice. Ukoliko je razmještaj obojivih računala približno homogen, broj skokova se može koristiti kao neka određena mjera udaljenosti dvaju računala, što je iskorišteno i za stvaranje koordinatnog sustava. 8.1 Sigurnost u programimaProgrami koji se mogu učitati u simulator moraju biti benigni za simulator i platformu na kojoj je simulator pokrenut, što znači da ne smiju zahtijevati nikakve ulazno-izlazne operacije, niti bilo kakve druge operacije koje bi mogle rezultirati neželjenim učincima na sustavu na kojem je simulator pokrenut. Za provjeru toga se brine jedan dio simulatora koji će blokirati učitavanje i pokretanje programa koji bi mogli naštetiti simulatoru ili operacijskom sustavu. Razlog ovome sigurnosnom dijelu je mogućnost zloporabe izvođenja simulacije na poslužitelju, gdje bi zločesti korisnik mogao u svojem programu kojeg želi testirati jednostavno napisati kod za brisanje neke od sistemskih mapa. Time su ustvari programi ograničeni na svoj svijet obojivog računarstva. Kao primjer može se pokušati pokrenuti program pod imenom RealVirus (pokretanje se ipak izvodi na vlastitu odgovornost jer autori simulatora ne odgovaraju za propuste). 8.2 Parametri simulacije za navedene primjereZa navedene primjere izuzev koordinatnog sustava biti će parametri simulacije, kao što je prikazano na slici. Parametri simulacije za primjere 8.3 Program BreadcrumbProgram Virus: Ebola Prototype prikazan je već u prikazu rada simulatora te neće biti ponovno prikazan. Njegov je smisao samo da se naseli na sva moguća obojiva računala koja su u dosegu onog računala u koje je on ubačen. Program koji se širi na sličan, djelomice pravilan način u svom procesu širenja liči na mrvicu kruha po čemu je i dobio ime (Breadcrumb). Parametar programa imena CrumbNumber određuje jačinu bojanja i opadanje intenziteta proširene mrvice kruha. Program i njegovo širenje se mogu vrlo lijepo vizualizirati ukoliko zid načinimo kvadratičnim, te sam program učitamo u jedno obojivo računala što bliže sredini tog zida. Parametri programa Breadcrumb Nakon što se program učita u jedno obojivo računala te poslije nekoliko koraka simulacije, dobije se rezultat koji je prikazan na slici. Rezultat nekoliko koraka simulacije programa Breadcrumb 8.4 Program GradientŽeljeli bi obojati obojiva računala tako da rezultat liči na jedno svjetlo čiji se intenzitet smanjuje s udaljenošću. Upravo program Gradient služi da ostvarimo tu želju. Njegovo je svojstvo, za razliku od stvarne svjetlosti to da intenzitet opada linearno udaljenosti od izvora, pri čemu nam izvor predstavlja obojivo računalo – portal, u kojeg je program na početku učitan. Udaljenost po kojoj ovaj program računa intenzitet mjeri se u već spomenutim skokovima. Parametar GradientId koji se podešava jest identifikacijski broj pojedinog programa i on se slučajno generira, no korisnik može po želji ga promijeniti. Parametri programa Gradient Na slici je prikazan ekran nekoliko trenutaka nakon pokretanja simulacije i učitavanja programa Gradient. Izvođenje programa Gradient Nakon toga, možemo ubaciti još jedan program iste vrste na naš zid na neko drugo mjesto, pri čemu valja paziti da identifikacijski brojevi budu različiti. Svako računalo će se obojiti u onu boju čiji portal je bliži. Učitavanje drugog programa Gradient Taj program sam za sebe nije pretjerano zanimljiv, no on je ključna komponenta za ostvarenje koordinatnog sustava o kojem će biti riječi kasnije. 8.5 Program PulsatorKrenuvši sa zanimljivim i poprilično beskorisnim primjerima, ne možemo izostaviti program Pulsator koji oponaša na neki način rasprostiranje valova u prostoru, kao što to izgleda kad bacimo kamenčić u vodu. Najbolji prikaz toga je bio obojati valne fronte u različite boje. Postavke programa koje se mogu podešavati prikazane su na slici. Postavke programa Pulsator Postavka PropagationDelay označava vrijeme zadržavanja stare boje prije nego se nova prikaže (veći broj povećava kružni vijenac). Vrijeme se mjeri u broju pokretanja programa. Sljedeća postavka MaxHopCount se ne koristi. Posljednja postakva PulsAfter označava vrijeme mjereno u pokretanju programa koje će čekati pri generiranju sljedeće valne fronte. Rezultat izvođenja programa prikazan je na sljedećoj slici. Program Pulsator na djelu 8.6 Program ShadowfaxA sada nešto potpuno drugačije. Jedan mnogo ozbiljniji primjer. Program je inspiriran brzim Gandalfovim konjem iz kultnog djela J.R.R.Tolkiena – Gospodar prstenova. Možda njegov najbolji opis bi bio citatom "He would not tolerate a bridle or saddle, and only carried Gandalf by choice..." Nešto slično bi se moglo reći i za ovaj program čije je ime preuzeto iz Tolkienovog remek-djela. Naime, to je program koji služi za komunikaciju između dva obojiva računala, pri čemu se brine da se poruke prenose što brže, dakle, najkraćom stazom. Uz sve to, Shadowfax nudi 64 kanala za komunikaciju čiji su redni brojevi od 0 do 63, te se staze različitih kanala mogu najnormalnije preplitati. Shadowfax Osnovna podjela Shadowfaxa jest na 3 načina rada. Prvi je Listener (prijemnik), drugi je Initiator (predajnik) i treći je Carrier (nosilac). Da bi natjerali stvar da proradi, moramo podesiti jednog Shadowfaxa na sljedeći način: postaviti njegovu osobnost (Personality) na vrijednost Listener, i podesiti njegovo ime. U našem primjeru njegovo ime (Name) će biti Marica, dok opcije Channel (broj kanala) i Destination (odredište) nemaju nikakvo značenje za prijemnik. Nakon odabranih opcija stavljamo taj program u jedno obojivo računalo na zidu. U našem primjeru, to će biti dolje lijevo na zidu. Podešavanje prijemnika Na neko drugo mjesto na zidu moramo postaviti predajnika. Dakle postavljamo mu osobnost na Initiator, zatim mu moramo podesiti njegovo vlastito ime (Name) gdje ćemo napisati Ivica, ime predajnika (Destination) će odgovarajuće tome biti Marica, odabrat ćemo kanal broj 6. Sad možemo postaviti taj program u neko računalo na zidu, što ćemo i napraviti. Gađat ćemo jedno računalo u donjem desnom kutu zida. Podešavanje predajnika Nakon nekoliko trenutaka Shadowfax se raširio po cijelom zidu tražeći najbolju stazu. Prijemnik neko vrijeme čeka i skuplja informacije o najboljoj stazi, te pri isteku tog vremena, odabire najbolju koju je primio, te počinje slati odgovor odabranom najboljom stazom. Predajnik po primitku te poruke isto zna najbolju stazu te je koristi za slanje svoje poruke prijemniku i tako dalje. Jedna zanimljiva stvar koju valja spomenuti je ta da nigdje nismo ubacivali program nosilac (Carrier). Za njegovo se ubacivanje pobrinuo sam predajnik (Initiator). Na slici je primjer uspostavljene komunikacije između Ivice i Marice, gdje crvena obojiva računala označavaju put gdje je prošla poruka od Ivice prema Marici, a zelena obojiva računala predstavljaju putovanje Maričinog odgovora Ivici. Uspostavljena komunikacija Nakon ove komunikacije, možemo još pokušati isprobati dodavanje jednog para prijemnika i predajnika, čije će postavke biti kao ove prikazane na slici. Postavke drugog para prijemnika i predajnika Prijemnik ćemo smjestiti u donji desni dio ekrana, ne jako daleko od prethodnog prijemnika, a predajnik ćemo smjestiti u gornji lijevi dio ekrana. Nakon nekog vremena, izgled ekrana će biti kao na slici, gdje su i označena imena prijemnika i predajnika (ne, to simulator ne ispisuje, to je ipak samo korištenje alata za obradu slike). Komunikacija dva para prijemnika i predajnika na dva kanala Na kraju ćemo odabrati jedan ponešto egzotičan primjer gdje ćemo obrisati određena računala sa zida, te ćemo stvoriti jedan par prijemnik-predajnik kao u prethodnom primjeru. Jedino što je nejasno sa slike je li odabrani put uistinu najkraći put? Autoru ovog programa to definitivno ne izgleda kao najkraće, ali svakako djeluje dovoljno dobro. Egzotičan primjer programa Shadowfax 8.7 Koordinatni sustavNegdje prije u tekstu je spomenuto kako programi u obojivim računalima znaju samo svoje međusobne udaljenosti (tj. mogu saznati ukoliko se napišu takvima, no vidjeli smo da nam gradijent služi za to), znaju identifikacijski broj računala na kojem se nalaze i sposobni su preko zrcaljenih podatkovnih stranica komunicirati sa susjedima. Da stvar još više izdramatiziramo, reći ćemo da nam identifikacijski broj nije nešto što ćemo koristiti, dapače, on nam je samo višak za izgradnju koordinatnog sustava. 8.7.1 Trikovi i Gradient na steroidimaU cijelom postupku postavljanja koordinatnog sustava postoje samo 2 vrlo jednostavna trika. Korisnik mora za prve dvije točke koordinatnog sustava reći njihove prave koordinate kao npr. (0, 0) i (4,3), ubaciti ih na neka dva obojiva računala na zidu, te na kraju, samo postaviti treću točku koordinatnog sustava tako da nije kolinearna s prve dvije navedene. Gore opisani program Gradient jest taj koji je sposoban računati udaljenosti, no u ovom slučaju on nam je samo baza cijelog problema, pa se za ovaj problem koristi Coordinate Tunnel koji je ništa više nego poboljšani Gradient. Njegove postavke su točka koju on predstavlja u koordinatnom sustavu (StartPoint), zatim njegov tip (Tip) koji može biti prvi, drugi ili treći (First, Second, Third respektivno). Na kraju ostaju 2 identifikacijska broja gradijenta koje u pravilu nije potrebno mijenjati. Za prve dvije točke (First i Second), potrebno je upisati koordinate koje će nam odrediti izgled konačnog koordinatnog sustava. Za treću točku, koordinate se automatski računaju pri čemu od dvije moguće točke (u općemu slučaju se kružnice sijeku u dvije točke), program izabire „bolju“. Nakon što postavimo ta 3 programa u obojiva računala na zid, iskoristit ćemo program imenom Coordinate Calculator koji će za svako računalo više ili manje uspješno izračunati njegove koordinate u našem koordinatnom sustavu. Točke s koordinatama manjima od nule se ne bojaju, a ostale se bojaju u diskretnim koracima koji su određeni s cjelobrojnim dijelom svake od koordinata pojedinog obojivog računala. 8.7.2 Postavljanje 3 programa Coordinate TunnelZa ovaj primjer, povećat ćemo broj računala koja ćemo koristiti u simulaciji kako bi naš koordinatni sustav izgledao što pravilnije, stoga, valja postavke simulacije namjestit kao što je to prikazano na slici. Postavke simulacije Napravit ćemo jedan vrlo jednostavan koordinatni sustav. U donji lijevi dio zida ubacit ćemo jedan program Coordinate Tunnel čija će točka biti (0,0) i bit će prvi (First). U gornji desni rub ubacit ćemo program Coordinate Tunnel čija će točka biti (5,5) a bit će drugi (Second). Na kraju, ubacit ćemo treći Coordinate Tunnel (Third) negdje u gornji lijevi dio ekrana. Na slici su prikazane postavke sva 3 programa za ubacivanje. Postavke sva 3 programa Coordinate Tunnel Nakon ubacivanja sva 3 programa, naš zid će poprimiti izgled poput ovog na slici. Izgled zida nakon ubacivanja sva 3 programa Coordinate Tunnel U prozoru za Debug, možemo pogledati koordinate treće točke koju je izračunao program Coordinate Tunnel. Koordinate (1,5) čine se dobrima za treću točku. Prozor Debug i koordinate treće točke. 8.7.3 Bojanje koordinatnog sustavaSada je u našu simulaciju potrebno ubaciti jedino program koji će za svako obojivo računalo odrediti njegove koordinate u razapetom koordinatnom sustavu te obojati svaku od tih različitih koordinata u neku boju. Program koji trebamo učitati zove se Coordinate Calculator i nema parametara za podešavanje. Mi ćemo ga ubaciti negdje blizu sredine zida. Rezultat bojanja vidljiv je na sljedećoj slici. Obojani koordinatni sustav 8.7.4 Egzotični primjeri koordinatnog sustavaIzrezani zid Na početku ćemo iz zida alatima za rezanje napraviti nešto što liči na automobilsku gumu. Nakon toga ćemo ubaciti 2 točke sa koordinatama (0,0); (5,0) i treću da se sama pronađe. Na slici su prikazana mjesta ubacivanja pojedine točke (prva točka je portal u zelenom području, druga točka je portal u crvenom području i treća je portal u ljubičastom području). Treća točka je poprimila koordinate (3,5). Izgled zida nakon učitavanja točaka s koordinatama Nakon obavljenog postupka valja ubaciti program Coordinate Calculator na ovaj zid da pokuša iscrtati koordinatni sustav. Na sljedećoj slici je prikazan koordinatni sustav sa ponekom izdvojenom točkom. Sve u svemu, pogreška u određenim koordinatama i nije toliko ogromna. Egzotičan primjer s označenim nekim koordinatama Na kraju, ponavljamo prvi primjer s koordinatnim sustavom, samo ovaj puta ćemo ga nakositi. Na slici su označene osi koje smo željeli postići. Kosi koordinatni sustav
|