eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingWątki a ramki stosówRe: Wątki a ramki stosów
  • Data: 2011-05-27 22:58:34
    Temat: Re: Wątki a ramki stosów
    Od: Marek Borowski <m...@b...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 27-05-2011 01:00, pozytywne wibracje wrote:
    > Gdy mam program wielowątkowy to czy mam stosy w jednej przestrzeni
    > adresowej? Przypuśćmy że mam minimalny rozmiar stosu 16 KiB a maksymalny
    > 1 MiB, wtedy w podglądzie execa za pomocą viewera Total Commandera mam:
    > "Size of Stack Reserve" które odpowiada maksymalnemu, a "Size of Stack
    > Commit" minimalnemu.
    > Oznacza to że bierze w porcjach 16 KiB globalnej pamięci fizycznej ale
    > rezerwuje obszar adresów cały 1 MiB?
    Oznacza to tyle iz rezewuje region 1MB w virtualnej przestrzeni
    adresowej ale tylko 16KB (2 strony) jest zamapowane na fizyczna pamiec.
    Nastepne 4KB strony pamieci do mapowane w miare zapelniaja sie stosu. W
    przypadku dojscia do konca generowny jest EXCEPTION_STACK_OVERFLOW.

    > Gdy mam wiele wątków, to każdy ma stos w adresie oddzielonym od siebie o
    > minimum 1 MiB?
    Tak.

    > Tworzę nowy wątek za pomocą funkcji CreateThread, jako parametr
    > dwStackSize moge podać zero i wtedy stos wątku powinien otrzymać tyle
    > miejsca co stos głównego wątku. Natomiast mogę podać rozmiar - jest to
    > rozmiar początkowy. Maksymalny jest taki sam dla wszystkich?
    Nie. Mozesz podac wiekszy. System postara sie znalesc region o
    odpowiedniej wielkosci.

    > Mam coś takiego:
    > jest stos, 1 MiB rezerwacji adresów, inne wolne adresy na stertę. I
    > teraz tworzę wątek, czy stos wątku nie wejdzie na stertę?
    Nie. (Generalnie).

    > W jaki sposób dla procesu odczytać całą mapę adresów: gdzie jest kod,
    > gdzie dane, gdzie rezerwacja sterty a gdzie stosy wątków?
    Pobawic sie debugerem.

    > Jak wylistować wszystkie adresy stosów, a dla konkretnego stosu jak
    > wylistować stos wywołań procedur, czy można w ogóle odróżnić adres
    > procedury na stosie od zmiennej przechowywanej na stosie?
    Zasadniczo nie.

    > Zastanawia mnie też jak Garbage Collector rozpoczyna swoją pracę. Są
    > opisy rekurencyjnego zaznaczania które zaczyna się od korzeni ale jak ze
    > stosów pobrać te korzenie, poza tym mogą być w rejestrach, a co się
    > stanie z wartością z rejestrów przy przełączeniu na inny wątek? czy
    > odkładane są na bieżący stos, czy gdzieś indziej?
    Zachowywane sa w strukturze CONTEXT w pamieci jadra systemu. Ale
    istnieje API umozliajace jej pobranie.


    Pozdrawiam

    Marek





Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: