Как "Стек" играет в исполнении потока?

Я работаю над Pintos.

Что-то вроде учебного пособия для обучения по созданию операционных систем, и я нахожусь на втором проекте, который ориентирован на создание поддержки пользовательских программ.

Итак, первым делом стоит установить стек! Отлично.

Проблема в том, что с самого начала урока я дрожу от этих слов "стек", потому что я никогда не могу понять, что такое стек и как он влияет на выполнение программы или потока. Итак, я понимаю, что это область памяти, настроенная в оперативной памяти, но это все.

Мои вопросы следующие:

  • Какова функция стека?
  • Как "стек" влияет на выполнение потока в ЦП по отношению к счетчику программ, регистрам и указателю стека?
  • Как вещи добавляются в стек и как они удаляются из него?
  • Более того, даже если вы не знаете о Pintos, что значит "настроить стек" при создании поддержки пользовательских программ в операционной системе?

1 ответ

Решение

Стек - это просто память. Единственное, что делает память стеком, - это то, что процесс обращается к ней "первым пришел - первым вышел".

Какова функция стека?

Функция стека в компьютере заключается в поддержке вызовов функций. Вызовы функций отражают работу стека. Вызов функции толкает ее. Выход из функции всплывает.

Как "стек" влияет на выполнение потока в ЦП по отношению к счетчику программ, регистрам и указателю стека?

С точки зрения процессора поток - это процесс. Операционные системы обманывают ЦП, поскольку несколько процессов совместно используют одно адресное пространство. Таким образом, процесс становится потоком.

Счетчик программы и указатель стека являются регистрами. На большинстве процессоров есть инструкции, которые манипулируют регистром указателя стека. Например, инструкция вызова функции поместит счетчик программ в стек, уменьшив указатель стека и сохранив счетчик программ в новом месте, на которое ссылается указатель стека.

Как вещи добавляются в стек и как они удаляются из него?

Stack memory is allocated by decrementing the stack pointer. Something like:

   SUB   #32, SP

выделит 32 байта в стеке и

  ADD  #32, SP

освободит эту память. Преимущество стека в том, что он очень быстр для выделения памяти.

Кроме того, как упоминалось выше, некоторые инструкции могут манипулировать стеком.

Более того, даже если вы не знаете о Pintos, что значит "настроить стек" при создании поддержки пользовательских программ в операционной системе?

Чтобы настроить стек, вы должны:

  1. Выделите память для стека.
  2. Вы также можете выделить защитную память, которая защищена с обеих сторон стека для обнаружения переполнений и переполнений.
  3. Вы назначаете переместить адрес вершины стека в регистр указателя состояния.

Как я уже говорил, стек - это просто память. Программа может легко выделить свою собственную память и переместить свой адрес в указатель стека, чтобы создать новый стек.

Другие вопросы по тегам