• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Procesy i Wątki(czyli pytania o stos i stertę:P)

Object Storage Arubacloud
+1 głos
2,718 wizyt
pytanie zadane 3 stycznia 2016 w Systemy operacyjne, programy przez Macek Kolo Mądrala (5,480 p.)
1. Jeśli mam jakąś zmienną automatyczną(lokalną) ona ląduje na stosie. Jak mam globalną, albo zaalokowaną pamięć, np. wskaźnik to ląduje to na stercie. A jak to wygląda z funkcjami? Tzn. one też lądują na jakimś innym stosie/stercie, a może tej samej co wszystkie funkcje? Myśle tutaj o parametrach funkcji i tych zmiennych tworzonych wewnątrz? Czy każda funkcja ma swój stos/sterte? Jeśli proces to program uruchomiony i wykonywany w pamięci komputera, to funkcja w takim programie może być rozpatrywana jako wątek? Chodzi mi o to, jak to wygląda w pamięci.

2. W niektórych książkach do nauki C są obrazki gdzie pokazane są dwa kwadraciki podpisane stos i sterta, jeden zawiera się w drugim. Czy tak też jest "w realu"? tzn. czy stos znajduje się na stercie, czy są to osobne byty? Bo jedyne informacje jakie można znaleźć w internetach(a raczej któe ja umiem znaleźć) to to, że stos jest dla zmiennych automatycznych, sterta dla globalnych/alokowanych pamięci.

2 odpowiedzi

+3 głosów
odpowiedź 4 stycznia 2016 przez Macek Kolo Mądrala (5,480 p.)
BTW. Czy gdzieś jest jakaś książka/strona opisująca co się dzieje w pamięci komputera z programem krok po kroku? Jak wygląda to "od środka"?
+2 głosów
odpowiedź 3 stycznia 2016 przez sonquer Gaduła (4,280 p.)

Zacznę może od początku, każdy program zawiera elementy takie jak: Heap, Stack, Global/Static, Code.
Sekcja Heap i Stack jest ściśle ze sobą powiązana, mianowicie obie wraz z przyrostem zbliżają się ku sobie.
Tutaj masz opisane ich działanie: http://grafika.weii.tu.koszalin.pl/c/w11.pdf
"Czy każda funkcja ma swój stos/stertę?" Może odpowiem tak, każda może mieć do niego/niej dostęp.
Co do wątków, funkcja/procedura leży gdzieś w warstwie Code. Jeżeli chcesz ją wykonać poprzez jakiś osobny wątek to musisz pamiętać o tym że tym zajmie się system. A będzie ona operować na tym samym stosie i tej samej stercie.

komentarz 4 stycznia 2016 przez Macek Kolo Mądrala (5,480 p.)
czyli proces/program tworzy swoją stertę, stos i kiedy są wywoływane funkcje to ich zmienne/parametry lądują na tym stosie/stercie? Ale jak się to ma do wątków gdzie każdy wątek ma swój stos i stertę? Bo nowy wątek to taka funkcja, chyba że źle rozumiem całe założenie za tym stojące.
1
komentarz 4 stycznia 2016 przez adrian17 Ekspert (344,860 p.)

obie wraz z przyrostem zbliżają się ku sobie.

Takie było oryginalne założenie - żeby maksymalnie wykorzystać miejsce w pamięci, projektanci układów umieszczali je po przeciwnych stronach pamięci. To jest jeszcze widoczne w mikrokontrolerach, ale na komputerach dzięki pamięci wirtualnej mogą być gdziekolwiek.

Może odpowiem tak, każda może mieć do niego/niej dostęp.

Oj, kombinujesz. Funkcje dosłownie leżą na jednym stosie, a cały proces ma jedną stertę.

Co do wątków, funkcja/procedura leży gdzieś w warstwie Code. Jeżeli chcesz ją wykonać poprzez jakiś osobny wątek to musisz pamiętać o tym że tym zajmie się system. A będzie ona operować na tym samym stosie i tej samej stercie.

Jeszcze bardziej kombinujesz. Każdy wątek ma własny stos. A to, że kod znajduje się w segmencie kodu... jest prawdą, ale nie ma żadnego związku z wątkami.

w warstwie Code

Nazywajmy rzeczy po imieniu, to się nazywa segmentem a nie warstwą.

Podobne pytania

0 głosów
0 odpowiedzi 592 wizyt
pytanie zadane 21 lutego 2022 w Systemy operacyjne, programy przez Dorian Bajorek Dyskutant (7,920 p.)
+1 głos
0 odpowiedzi 436 wizyt
pytanie zadane 3 maja 2021 w Systemy operacyjne, programy przez tomasz12345 Użytkownik (750 p.)
+1 głos
1 odpowiedź 32,745 wizyt
pytanie zadane 31 maja 2015 w Algorytmy przez fraktal Nowicjusz (200 p.)

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...