Содержание области стека процесса

Вы могли попросить, чтобы гном закрыл текущий сеанс перед завершением работы. Что-то как:

gnome-session-quit --logout --no-prompt
shutdown -h now

Синтаксис команды может измениться согласно версии гнома (например. gnome-session-quit новое название gnome-session-save).

--no-prompt вынудите запущенные приложения выйти без пользовательского подтверждения.

3
17.07.2013, 02:57
3 ответа

Вы только получаете четкое изображение стека так же, как ядро руки прочь к ld.so, динамический компоновщик. Можно найти основное изображение здесь. Это показывает argc, argv и envp, традиционные 3 аргумента программе C int main(int argc, char **argv, char **envp).

То представление несколько упрощенно. ELF вспомогательный вектор существует на стеке также и передает большую информацию к ld.so

После ld.so выполнения, libc время выполнения вступает и усложняет вещи. Конструкторы C++ могут быть выполнены, все виды сумасшедшего материала могут закончиться на стеке. Это зависит от того, что скомпилировало программу. Даже простые программы C могут сделать разные вещи на основе того, с какой библиотекой они были скомпилированы.

4
27.01.2020, 21:14

Эта статья Википедии довольно кратка. При поиске с помощью Google "стека по сравнению с "кучей"", Вы найдете тонну материала; обычно они объяснены друг относительно друга.

Если Вы не делаете никакого программирования, это не особенно полезная или важная вещь для Вас понять. Если Вы делаете, то это; одно место большинство людей сначала встречается со значением стека, является рекурсивными вызовами WRT; более подробная статья Википедии, относящаяся к этому, расценивает стек вызовов. Стек вызовов - то, что занимает "область стека процесса"; это содержит данные, локальные для вызовов функции, и данные для вызовов вложенной или рекурсивной функции "сложены" друг на друге в упорядочивании LIFO.

Если Вы не сделали никакого программирования на языке, который позволяет, чтобы непосредственная память обратилась (например, C/C++), поняв, как адреса памяти отображаются, регионы памяти важно, надо надеяться, Ваши учебники уже были через это.

1
27.01.2020, 21:14

Программы обычно продвигают аргументы функции на стек, перед использованием asm Команды вызова вызвать функцию, которая продвигает обратный адрес на стек, так, чтобы инструкция RET могла позже появиться, это отступает и знает, куда возвратиться к. Функция также будет обычно помещать свои локальные переменные в стек. Функция вызова также может продвинуть любые регистры, которые она использует на стек прежде, чем позвонить так, она может вытолкать их назад после того, как вызванная функция использовала те registes для чего-то еще.

Визуальное представление слов на стеке, где functionA назвал functionB, могло бы быть похожим на это:

local1
arg1
functionA+12
local1
local2

Здесь functionA имел локальную переменную, и затем передал аргумент functionB и сохранил обратный адрес (12 байтов после запуска functionA). Затем functionB помещают две из его собственных локальных переменных на стеке. Если functionB называет functionC, то стек продолжает расти, и затем он уменьшается снова, когда функции возвращаются.

1
27.01.2020, 21:14

Теги

Похожие вопросы