[OSDev] Dynamiczna pamięć bez stronnicowania

0

Jak zaimplementować alokację pamięci dynamicznej pod systemem bez stronnicowania tak aby zachować możliwość portowania aplikacji z innych systemów?

0

Ale przeciez stronicowanie nie ma nic do rzeczy, malloc dziala po stronie aplikacji, nie kernela. A zeby sportowac aplikacje to musisz napisac swoj libc (albo przeniesc z jakiegos innego systemu modyfikujac wywolania funkcji kernela /ew implementujac je jesli nie ma/).

0

Aplikacje dla mojego OS'a działają tak że mają dwa wpisy LDT(Data,Code) dla swojej przestrzeni adresowej. Daję do Data 2 MB a program chce alokować 4 MB. I co robić? W stronnicowaniu znalazłbym gdzieś 4 MB i wmapował mu to w przestrzeń adresową, a tu?

0

Trudno mi cos doradzac bo wybrales segmentacje, ktora sie do tego nie bardzo nadaje. Masz ograniczona ilosc deskryptorow, aplikacje beda widzialy wszystkie inne (tylko selektor inny zaladowac) no i nie bedziesz mogl fragmentowac pamieci co jest ... no zle. Mozesz np w aplikacji ustawiac maksymalna wielkosc sterty i na stale ta pamiec przydzielac. Powiedz, czemu nie chcesz skorzystac ze stronicowania?

0

Stronnicowanie jest lepsze... To wiem. Mój system jednak ma być maksymalnie mało pamięciożerny, a 10 procesów po 4 MB każdy i po 128 kb Kernela to... całe 82,5 kB na Page Frame, pomijając już Page Directory(8 bajtów) jeśli się nie mylę. Wystarczająco dużo żeby zaalokować pamięć dla powłoki.

I tak najpierw się muszę nauczyć jak to wszystko działa, jakiś podstawowy kod sobię napisać. Ten system ja wywalę do kosza jak skończę i zrobię jakiś ze stronnicowaniem.

Ten mój stary system i tak już się przydał bo mam wypasionego schedulera zarządzającego blokami Task Information o wielkośc 84 bajty(a sam wielki na 800 bajtów), i pewnie go zaimportuje.

A odnośnie problemu - pewnie zrobię im stałą stertę

0
darktemplar napisał(a)

Mój system jednak ma być maksymalnie mało pamięciożerny, a 10 procesów po 4 MB każdy i po 128 kb Kernela to... całe 82,5 kB na Page Frame, pomijając już Page Directory(8 bajtów) jeśli się nie mylę.

A co cie zmusza zeby korzystac z 4MB stron? Standardowo strony maja 4KB, PT i PD zajmuja po strone (4KB), czyli masz mniej wiecej 16KB na proces (dodajac jedna strone na np stosy). Moj OS ktory wiekszosc tego wszystkiego ma juz za soba potrzebuje 16MB na system, reszta do uzytku, oczywiscie nie wykorzystuje tego wszystkiego i jak nadejdzie odpowiedni czas to zaczne ciachac :)

0

nie bedziesz mogl fragmentowac pamieci

Kernel ze sprawną relokacją tego po prostu nie potrzebuje :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1