Nadzornik pomnilnika (samostojna naloga)
Pripravite program nadzornikPomnilnika, ki bo spremljal porabo pomnilnika v sistemu. Program naj deluje kot sistemski servis. Program naj spremlja in beleži trenutno stanje pomnilnika, drugim programom pa preko poljubne medprocesne komunikacije omogoča dostop do meritev in konfiguracijo zajemanja.
Trenutno stanje pomnilnika lahko preberete iz zbirke /proc/meminfo (poiščite meminfo v dokumentaciji man 5 proc za podroben opis vsebine). V njen je zapisanih precej podrobnosti, vaš servis naj spremlja in beleži vsaj:
količino celotnega pomnilnika
količino prostega pomnilnika
količino pomnilnika na voljo procesom
količino celotnega swap prostora
količino prostega swap prostora
Servis ima dva parametra zajemanja: čas med branji in število hranjenih meritev. Čas med branji določa koliko časa sevis počaka med branji /proc/meminfo. Število hranjenih meritev pa določa koliko zadnjih prebranih vrednosti si servis zapomne.
Servis naj preko poljubne tehnike medprocesne komunikacije omogoča komunikacijo z različnimi odjemalci. Odjemalci lahko spreminjajo oba parametra, pridobijo trenutno hranjeno zgodovino in ustavijo servis. Servis mora omogočati komunikacijo z več odjemalci hkrati in ostati odziven. Priporočamo, da uporabite vsaj dve niti. Eno za branje /proc/meminfo in eno ali več za komunikacijo z odjemalci.
Za komunikacijo boste potrebovali en kanal (cev, vrsto za sporočila, itd. ), na katerem se odjemalci povežejo na servis. Za vsakega odjemalca mora nato servis ustvariti nov kanal preko katerega komunicira s tistim odjemalcem.
Pripravite tudi primer odjemalca. Le ta naj omogoča pošiljanje zahtev servisu in izpis vrnjenih vrednosti (na primer zgodovine porabe pomnilnika).
Servis lahko poženete v enem terminalu, odjemalce pa v drugih. Ne rabite pripravljati resničnega sistemskega servisa