> myslim, nemuzeme si zadne znacky delat, to si muze delat sprava virtualni > pameti, ale ne sprava fyzicke Znacky si delat muzeme, jen ne do tech bloku, ktere alokujeme - musime mit nejake struktury v pameti, ve kterych si budeme vsechno implementovat. Mit celou bitmapu volnych bloku v pameti podle mne neni vubec chytre - pametove zbytecne narocne - skoro nikdy nepotrebujes resit granularitu na uroven jednodlivych ramcu. Kdyz uz bych to implementoval, tak rovnou aspon kazdy bit 1 ramec - misto hranatych zavorek budes pouzivat funkci, ktera to bude prepocitavat - pouziva se to uplne stejne. Virtualni pamet si muze delat tak akorat uplne stejny znacky do pameti jako fyzicka - proste si je dela do svych internich struktur. , ta toho mimochodem nema umet > vic nez jsou ty 2 fce, vsechno ostatni je zalezitost virtualni pameti nebo > veci nad tim > > protoze sprava fyzicke pameti umi alokovat jenom cele ramce, takze ani neni > spravne neco do pameti psat. Samozrejme, ze je - musis si nekde v pameti poznamenat, ze je ten ramec plny. Preusporadat si datove struktury nad tim atd... Myslim ze budeme muset dat schuzku a > jeste jednou si to projasnit, ale ja jsem si celkem jistej, ze vim co a > jak...ridim se tim API co ma ktera cast delat... > J. > > Jiri Horky napsal(a): >> Jasne, ono si hlavne myslim ,ze casem prejdem na ty znacky primo v pameti, >> nez na vyhrazene misto nazacatku, ne? 4GB pameti = 32 bitu adresace, 12 bitu = offset => 20 bitu je urceni ramce => 220 ramcu, ke kterym si musis pamatovat volno/plno = 217 bytu = moc zbytecne vyplytvanych ramcu volny pameti, ne (pocitam-li dobre, tak 32). Stejne budes muset postupne resit problemy typu dej mi souvisle 100 ramcu -> musis si postavit nejakou strukturu nad timhle a ta asi tezko bude staticky alokovana -> i pro ni musis resit problem, jak zabrat ramec pro nove interni struktury a poznacit to do stavajicich struktur. Rek bych, ze spravny postup je: - zabrat si na zacatku frame, struktury si ukladat do nej, v pripade, ze dalsi struktura se do nej uz nevejde, tak: - zabrat si dalsi volny frame a ten pouzivat na dalsi alokace. Otazka je, jestli se na tyhle interni struktury ma pouzivat malloc nebo ten ma stat nad tim (to si zatim s Jarou myslime)... Malloc totiz rozhodne nema fungovat tak, ze by kazdy pozadavek na alokaci zarovnal na 4kB stranku a tu sebral a vratil do ni odkaz na zacatek. Spis ma mit naky ukradeny stranky, v pripade nutnosti si vzit dalsi a uvnitr nich provadet to, co provadi primo ve fyzicky pameti doted... To jsou me poznatky, mozna spatne... L. P.S. Nejde mi to poslat z me IP - nejak mne odmita Mail: The original message was received at Mon, 17 Nov 2008 21:14:16 +0100 (CET) from jeza.kolej.mff.cuni.cz [78.128.196.61] ----- The following addresses had permanent fatal errors ----- <osy@xxxxxxxxxxxxx> (reason: 554 5.7.1 Service unavailable; Client host [78.128.192.10] blocked using b.barracudacentral.org; http://www.barracudanetworks.com/reputation/?pr=1&ip=78.128.192.10) ----- Transcript of session follows ----- ... while talking to turing.freelists.org.: >>> >>> DATA <<< 554 5.7.1 Service unavailable; Client host [78.128.192.10] blocked using b.barracudacentral.org; http://www.barracudanetworks.com/reputation/?pr=1&ip=78.128.192.10 554 5.0.0 Service unavailable <<< 554 5.5.1 Error: no valid recipients Reporting-MTA: dns; smtp1.kolej.mff.cuni.cz Received-From-MTA: DNS; jeza.kolej.mff.cuni.cz Arrival-Date: Mon, 17 Nov 2008 21:14:16 +0100 (CET) Original-Recipient: RFC822;osy@xxxxxxxxxxxxx Final-Recipient: RFC822; osy@xxxxxxxxxxxxx Action: failed Status: 5.7.1 Remote-MTA: DNS; turing.freelists.org Diagnostic-Code: SMTP; 554 5.7.1 Service unavailable; Client host [78.128.192.10] blocked using b.barracudacentral.org; http://www.barracudanetworks.com/reputation/?pr=1&ip=78.128.192.10 Last-Attempt-Date: Mon, 17 Nov 2008 21:14:17 +0100 (CET)