KWALIFIKACJA ELM2 + ELM5 - CZERWIEC 2014

PYTANIE NR 22.
Pojęciem stos w technice mikroprocesorowej określa się
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Stos w technice mikroprocesorowej to wydzielony obszar pamięci (zwykle RAM) zarządzany wskaźnikiem stosu, działający w zasadzie LIFO. Służy m.in. do chwilowego odkładania danych, adresów powrotu, rejestrów oraz kontekstu podczas obsługi przerwań i wywołań podprogramów.

Pełne wyjaśnienie:

W technice mikroprocesorowej stos (stack) to obszar pamięci przeznaczony do tymczasowego przechowywania danych w sposób uporządkowany regułą LIFO (Last In, First Out – ostatni włożony element jest zdejmowany jako pierwszy). Dostęp do stosu jest zwykle realizowany przez specjalny rejestr – wskaźnik stosu – oraz instrukcje odkładania i zdejmowania danych.

Dlaczego poprawna jest odpowiedź mówiąca o "obszarze pamięci … wykorzystywanym np. w czasie obsługi przerwania"? Ponieważ w praktyce stos służy do zapisu informacji potrzebnych do powrotu do przerwanego miejsca programu lub do kontynuowania wykonania po zakończeniu procedury. Typowo na stos trafiają m.in.:

  • adres powrotu po wywołaniu podprogramu,
  • rejestry odkładane na czas wykonania procedury,
  • fragment kontekstu procesora przy obsłudze przerwania (zależnie od architektury).

Pozostałe odpowiedzi są błędne, bo opisują inne mechanizmy:

  • "lista ostatnio wykonanych rozkazów" kojarzy się z historią/śledzeniem wykonania (debug/trace) albo buforami potokowania, a nie z definicją stosu jako struktury LIFO w pamięci,
  • "licznik wewnętrznych impulsów zegarowych" odnosi się do taktowania i liczników czasu (timery), co jest inną funkcją niż przechowywanie danych na potrzeby wywołań i przerwań,
  • "słowo sterujące … układem czasowo-licznikowym" dotyczy rejestrów sterujących peryferiami (konfiguracja), a nie obszaru pamięci działającego jak LIFO.

Wskazówka egzaminacyjna: jeśli w treści pojawiają się skojarzenia z przerwaniami, CALL/RET lub "zapisem kontekstu", to niemal zawsze chodzi o stos jako obszar pamięci, a nie o liczniki czasu czy rejestry sterujące.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Stos (stack) to obszar pamięci wykorzystywany do tymczasowego przechowywania danych w zasadzie LIFO. W praktyce służy m.in. do odkładania adresów powrotu, rejestrów i innych informacji potrzebnych przy wywołaniach podprogramów oraz podczas obsługi przerwań.
LIFO oznacza "ostatni wszedł, pierwszy wyszedł". Jeśli na stos kolejno odłożysz A, potem B, to zdejmując dane odzyskasz najpierw B, a dopiero potem A. Dzięki temu łatwo przywrócić stan sprzed wejścia do podprogramu lub przerwania.
Przerwanie przerywa aktualny kod, więc procesor musi zapamiętać informacje potrzebne do powrotu (np. adres i część stanu). Stos umożliwia szybkie odłożenie tych danych i późniejsze ich zdjęcie, aby kontynuować program dokładnie od miejsca przerwania.
Najczęściej na stos odkładany jest adres powrotu oraz dane potrzebne procedurze: część rejestrów, parametry lub zmienne lokalne (zależnie od architektury i konwencji wywołań). Ideą jest zachowanie stanu, by po zakończeniu funkcji wrócić bez utraty informacji.
Wskaźnik stosu (SP) to rejestr wskazujący aktualny "wierzchołek" stosu w pamięci. Przy odkładaniu danych SP jest aktualizowany (zwykle zmniejszany lub zwiększany zależnie od architektury), a przy zdejmowaniu – w przeciwnym kierunku.
Nie. RAM to ogólna pamięć operacyjna, a stos to tylko wydzielony obszar tej pamięci, używany według określonych reguł (LIFO) i obsługiwany przez SP oraz instrukcje stosu. Stos jest więc sposobem organizacji wykorzystania RAM.
Często myli się stos z licznikiem zegarowym (timerem), historią wykonanych instrukcji albo rejestrem sterującym peryferium. Pomaga zapamiętać, że stos "przechowuje, żeby wrócić": adresy powrotu, rejestry i kontekst, szczególnie przy przerwaniach.
Przepełnienie stosu pojawia się, gdy na stos odkładanych jest zbyt dużo danych (np. głęboka rekurencja, duże zmienne lokalne, wiele zagnieżdżonych przerwań) i stos "wchodzi" w inny obszar pamięci. Skutkiem mogą być losowe błędy, reset lub zawieszenie układu.
Rejestr sterujący konfiguruje pracę modułu (np. timera) i zwykle ma pola bitowe, które ustawiasz. Stos natomiast jest obszarem pamięci do odkładania i zdejmowania danych, zarządzanym przez SP. Jeśli opis mówi o LIFO, adresach powrotu lub kontekście – to stos.
Opanuj definicję stosu (LIFO) i typowe zastosowania: wywołania podprogramów oraz obsługa przerwań. Przećwicz na przykładach w asemblerze ideę "odłóż–zdejmij" (push/pop) i zrozum rolę SP. To zwykle wystarcza do poprawnej odpowiedzi w testach.
info

Około 57% zdających odpowiada poprawnie na to pytanie. średnie

W praktyce zawodowej kluczowe jest to, że stos w technice mikroprocesorowej to wydzielony obszar pamięci (zwykle RAM) zarządzany wskaźnikiem stosu, działający w zasadzie LIFO.

Źródła:

  • Intel 64 and IA-32 Architectures Software Developer’s Manual, Volume 1: Basic Architecture, sekcje dotyczące stosu i rejestru RSP/ESP (Stack), https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html - dostęp 2026-03-04
  • Microchip, AVR Instruction Set Manual / AVR Architecture (opis stosu, SP oraz zachowania przy przerwaniach), https://ww1.microchip.com/downloads/en/DeviceDoc/AVR-InstructionSet-Manual-DS40002198.pdf - dostęp 2026-03-04
  • Wikipedia (PL), hasło: "Stos (informatyka)" – definicja LIFO i zastosowania, https://pl.wikipedia.org/wiki/Stos_(informatyka) - dostęp 2026-03-04

Materiały:

  • Podręczniki z architektury komputerów i mikroprocesorów (rozdziały o pamięci i stosie)
  • Dokumentacje architektur/rodzin CPU (sekcje o stack pointer i calling convention)
  • Materiały do programowania mikrokontrolerów (obsługa przerwań, wywołania funkcji)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego