Apa representasi fisik tumpukan dan tumpukan?

9

Saya dapat dengan mudah memahami bagaimana .bss dan kode memiliki representasi fisik dalam prosesor yang memiliki bank memori untuk instruksi yang dapat dihitung oleh penghitung program dan bss (simbol awal blok) hanyalah data global. Tapi kemudian ada tumpukan untuk variabel lokal dan tumpukan untuk memori dinamis. Bagaimana benda-benda ini diletakkan di sirkuit secara fisik?

Niklas
sumber

Jawaban:

6

Catatan: Saya merujuk sebagian besar ke x86 karena saya paling akrab dengannya dan secara luas didokumentasikan:

Pada x86 (dan sebagian besar arsitektur lainnya) stack hanya tersimpan dalam memori seperti yang lainnya. Prosesor memanipulasi stack melalui pointer, yang biasanya disimpan dalam register (stack pointer). Instruksi push dan pop akan mengubah nilai pointer stack, mengubah di mana bagian atas stack.

Tumpukan adalah abstraksi perangkat lunak . Seperti namanya, itu hanya gumpalan RAM yang dialokasikan oleh pengalokasi dan membagikan petunjuk. Secara fisik, heap tidak terlihat berbeda dengan bagian RAM lainnya.

Paging dan segmentasi secara tangensial terkait dengan heap. Sebagian besar berkaitan dengan multi-tasking, di mana proses tidak dapat mengubah RAM yang tidak mereka miliki secara eksplisit.

Mathew Hall
sumber
3
Paging lebih banyak tentang manajemen memori secara umum - unit di mana memori fisik dipetakan ke alamat logis - daripada pembatasan akses, meskipun kemudian cenderung diterapkan sebagai fitur tambahan dari unit manajemen memori.
Chris Stratton
4

Secara logis tumpukan, dan tumpukan biasanya hanya memori; pada tingkat implementasi, mereka diharapkan akan dilayani terutama dari cache. Di sebagian besar sistem mereka tiba di sana secara dinamis melalui algoritma caching, tetapi ada sistem yang mendukung lokasi eksplisit dalam cache atau memori lain yang lebih cepat dari biasanya, dan kemungkinan juga yang mendukung petunjuk bahwa data tertentu harus memiliki prioritas preferensial untuk penempatan di sana sebagai ruang memungkinkan.

Desain perangkat lunak tingkat rendah dan generator kode kompiler mudah-mudahan mempertimbangkan pengaturan akses data yang cenderung menghasilkan pemanfaatan cache yang baik, vs. kesalahan cache yang konstan.

Beberapa prosesor memiliki register alamat pengirim, yang berfungsi sebagai semacam tumpukan cache eksplisit sedalam-dalam (mungkin ada juga yang memiliki beberapa tumpukan perangkat keras yang dalam, meskipun contoh tidak muncul dalam pikiran).

Chris Stratton
sumber