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

Jak komputer/procesor rozumie i zapamiętuje struktury danych

VPS Starter Arubacloud
0 głosów
239 wizyt
pytanie zadane 25 sierpnia 2019 w Systemy operacyjne, programy przez Vitall Początkujący (400 p.)

Cześć,

swoją przygodę z informatyką rozpocząłem ok. rok temu, ale gdzieś od ok. 10 miesięcy z powodów życiowych działam w informatyce z nieregularnymi przerwami.

Jako, że jedną z zasadniczych podstaw są struktury danych - sposób uporządkowania informacji w komputerze, a wśród nich m. in. stosy, kolejki, listy, tablice, drzewa, rekordy, itd. moje pytanie odnośnie nich jest następujące:

w jaki sposób komputer rozumie (i zapisuje/zapamiętuje) co to jest stos, kolejka, itd. ???

Struktura danych, np. stos jest to pojęcie abstrakcyjne - ok. Wyobrażamy sobie dosłownie stos, żeby złapać jak to działa. Możemy myśleć o tym jak np. o stosie książek - zgoda.
Możemy sobie zaimplementować stos za pomocą dowolnego języka programowania, np. C++ - zgoda.
Ale tu już się rodzą pytania... mianowicie wiadomo, że do komputera dosłownie nie włożymy stosu - oczywista oczywistość, jednak na czym polega implementacja struktury danych - jak komputer ją zapisuje/rozumie ???

Nie wiem, czy na pewno przekazuję tu swoją niepewność/wątpliwość w odpowiednio jasny sposób.
Czy chodzi o to, że procesor, a dokładnie jego pamięć korzysta z tych struktur danych i jeśli tak, to dokładnie w jaki sposób to się odbywa? Nie mam jakiejś specjalnej wiedzy o procesorach, coś tam wiem, ale nie za wiele.

I jeszcze jedna kwestia odnośnie struktur danych - czy one służą tylko i wyłącznie językom programowania jako narzędziu służącym do implementacji algorytmów, czy może też do przechowywania danych w komputerze niezależnie od programistyki?

Bardzo Was proszę o odpowiedzi w miarę możliwości łopatologiczne. 
Z góry dziękuję każdemu, kto poświęci swój czas, żeby mi pomóc (i innym, których podobnie trawi ten problem).

Pozrawiam,
Vitall

1 odpowiedź

+1 głos
odpowiedź 26 sierpnia 2019 przez Patrycjerz Mędrzec (192,340 p.)
wybrane 5 września 2019 przez Vitall
 
Najlepsza
  1. Stos to jedna z najważniejszych struktur danych w informatyce. Na jego zasadzie działa m.in. stos wywołań. Umożliwia on poprawne działanie programów jako zbioru funkcji. Bez niego niemożliwe byłoby ich wywoływanie oraz tworzenie w nich argumentów czy zmiennych lokalnych. W architekturze x86 (czyli większość dzisiejszych PC-tów) stos wywołań jest przechowywany normalnie w pamięci operacyjnej i wskazuje na niego rejestr esp​. W nowoczesnych systemach operacyjnych każdy proces ma swoją wirtualną przestrzeń adresową, mapowaną na rzeczywistą, co ułatwia programowanie oraz zwiększa bezpieczeństwo (dany proces nie może modyfikować pamięci innego procesu). W tej pamięci wirtualnej przechowywany jest stos, gdzie system sam przypisuje rejestrowi esp odpowiedni adres (nie wiem, czy procesor rozumie, co to pamięć wirtualna i czy ona jest przypisywana do tego rejestru, proszę o wytłumaczenie).
  2. Tablice mogą mieć różną reprezentację w pamięci. Mogą być przechowywane na stosie lub na tzw. stercie, czyli pozostałej części pamięci procesu (bez stosu i paru dodatkowych części) przydzielanej dynamicznie, o znacznie większym rozmiarze od stosu. Dostęp do takiej pamięci jest wolniejszy (procesor nie doda lub odejmie od wartości rejestru esp odpowiedniego przesunięcia, tylko musi mapować adres wirtualny na rzeczywisty). Na stosie zazwyczaj (to zależy od języka programowania) tablice są przechowywane jako jeden ciąg danych, ale z powodu ograniczenia jego rozmiaru, nie może być ona za duża, jedynie do lokalnych obliczeń. Na stercie natomiast mogą być przechowywane różnorako, czyli jako jeden ciąg, jako lista jedno- lub dwukierunkowa, a także w postaci innych struktur. To już inwencja programisty lub użytej technologii.
  3. Struktury, takie jak stos (abstrahując od wywołań funkcji), drzewa, kolejki, rekordy itp. mogą być przechowywane gdziekolwiek i jakkolwiek. To zależy głównie od rozmiaru takiej struktury i użytej technologii. Jeśli jest mała i służy do lokalnych obliczeń w funkcji, to użyjemy stosu. Jeśli jest to coś większego, to zaalokujemy to dynamicznie na stercie.
  4. Struktur danych używamy wszędzie tam, gdzie potrzebujemy pewnego uporządkowanego sposobu  przechowywania danych. Może to być np. ramka protokołu HTTP lub metadane w formacie JPEG. Może to być uzależnione od wykorzystywanego algorytmu (chyba w bazach danych silnik może przechowywać rekordy w postaci drzewa, w celu szybszego wyszukiwania) lub specyfiki urządzenia (dana struktura musi mieć rozmiar będący wielokrotnością słowa maszynowego) itp. Nie można więc ograniczać ich wykorzystania jedynie w algorytmice, gdyż są uniwersalne w całej informatyce.
komentarz 27 sierpnia 2019 przez j23 Mędrzec (194,920 p.)

Może to być np. ramka protokołu HTTP

Miałeś chyba na myśli ramkę TCP/IP.

komentarz 27 sierpnia 2019 przez Patrycjerz Mędrzec (192,340 p.)

Mogłem to rzeczywiście nazwać inaczej, np. żądaniem.

1
komentarz 5 września 2019 przez Vitall Początkujący (400 p.)

@Patrycjerz, dzięki wielkie za odpowiedź. Wahałem się chyba z  tydzień z odpisaniem komentarza, bo czuję, że będę drążył temat, ale jeszcze nie teraz. W razie czego, odnowię temat. Jeszcze raz - dzięki :D

Ogólnie polecasz jakieś pozycje do zgłębienia wiedzy?

komentarz 5 września 2019 przez Patrycjerz Mędrzec (192,340 p.)
Ja osobiście nie czytałem żadnych książek na ten temat. Po prostu miałem tego typu tematy na studiach oraz przewinęły się podczas nauki C++.

Jeśli masz jeszcze jakieś pytanie, to wal śmiało. Postaram się odpowiedzieć w miarę możliwości.

Podobne pytania

+1 głos
2 odpowiedzi 493 wizyt
pytanie zadane 8 października 2021 w Offtop przez livingr4t Nowicjusz (200 p.)
0 głosów
2 odpowiedzi 553 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...