Архитектура x86: процессы и среды выполнения

Архитектура x86: процессы и среды выполнения
Архитектура x86: процессы и среды выполнения
Anonim

Архитектура x86: процессы и среды выполнения

Узнайте, как работают программы, режимы работы и основные среды выполнения на процессоре x86.

Эта статья является продолжением серии по архитектуре x86.

Процессы загрузки и выполнения

Ниже приведен список шагов, описанных в порядке работы, когда пользователь запускает программу через командную строку:

  1. Операционная система или ОС исследует компьютер для имени файла данной программы в каталоге диска. Если ОС не может найти имя в этом каталоге, он затем изучит список каталогов, которые предопределены (называются путями) для имени файла программы
  2. Если ОС обнаружит программный файл, он будет извлекать любую основную информацию о файле из каталога; эта базовая информация включает в себя размер файла программы, а также физическое точное местоположение на диске.
  3. ОС определит следующее доступное местоположение в памяти и загрузит файл программы в память. Отсюда он выделяет блок памяти для файла и регистрирует информацию этого файла в таблице. Кроме того, ОС может настраивать значения указателей внутри программы, только если необходимо знать адреса данных программы.
  4. Затем ОС начнет выполнять самую первую команду программы. Как только программа начинает работать, она теперь называется процессом. ОС выделяет этот процесс сгенерированным числом или идентификатором процесса, чтобы отслеживать его прогресс во время выполнения процесса.
  5. Этот процесс будет выполняться сам по себе. Тем не менее, ответственность ОС заключается в том, чтобы контролировать, как выполняется процесс, а также реагировать на запросы системных ресурсов. Некоторые общие системные ресурсы - это память, файлы на диске, а также устройства ввода-вывода.
  6. Когда процесс программы завершен, он удаляется из выделенного места в памяти.

Многозадачные процессы в x86

Известно, что система является многозадачной ОС, если она может одновременно запускать несколько задач. Эти задачи могут быть определены как программа или поток выполнения. Процесс получает свою собственную область памяти и может содержать различное количество потоков выполнения. Эти отдельные потоки могут делиться своей памятью с другими потоками, но только если они содержатся в этом же процессе. Рассматривая игровую программу, отдельные потоки часто используются для одновременного управления несколькими графическими объектами. Другим примером является веб-браузер, в котором отдельные потоки используются для загрузки графических изображений и одновременного ответа на ввод пользователя.

В настоящее время большинство современных операционных систем, которые общаются с оборудованием, выполняют фоновые процессы, а пользовательские интерфейсы отображения будут выполнять эти задачи одновременно. Центральный процессор (CPU) действительно может выполнять только одну машинную команду за раз. Это означает, что компонент ОС, заданный именем планировщика, будет выделять для каждой отдельной задачи щель времени процессора или временного фрагмента. В течение этого времени срез CPU выполнит набор машинных команд, останавливаясь после завершения каждого временного сегмента.

Когда задачи переключаются быстро, процессор создает иллюзию, что они работают одновременно. Тип планирования, используемый OS, который мы обсудим, называется планированием с циклическим циклом. Рисунок 1.1 иллюстрирует планировщик, выполняющий девять активных задач. Скажем, планировщик разрешил 150 миллисекунд для каждой задачи и разрешил на 8 миллисекунд для переключения между задачами; одна полная схема полного списка задач потребует полного заполнения 1422 миллисекунд (9 * 150) + (9 * 8).

Image
Image

Рисунок 1.1. Планировщик Round-Robin

Процессоры (такие как процессор x86), которые поддерживают переключение задач, позволяют запускать многозадачную ОС. Этот процессор, в свою очередь, сохранит состояние каждой задачи до перехода на новую задачу. Это состояние может состоять из различного содержимого регистров процессора, флагов состояния, а также ссылок на сегменты памяти каждой задачи. Эта ОС, скорее всего, назначит различные задачи для задачи; это позволяет использовать меньший или более большой срез времени для задачи. ОС, которая разрешает задачу с более высоким приоритетом прерывать более низкий приоритет, известна как упреждающая многозадачная ОС и обеспечивает лучшую стабильность системы. Пара операционных систем, которые используют это, - Windows XP и Linux.

Различные режимы работы

Некоторые основные архитектурные особенности, которые процессор x86 включает в себя различные режимы работы. Эти процессоры имеют три режима работы, которые в основном используются: защищенный режим, режим реального адреса, а также режим управления системой. Дополнение к этим трем, существует подрежим, virtual-8086, который является вариантом защищенного режима. Ниже приведен список каждого режима:

  • Защищенный режим: этот режим является неотъемлемым состоянием, в котором находится процессор, где доступны все машинные инструкции. В этом режиме каждой программе предоставляется выделенная область памяти, которая называется сегментами, а процессор не позволяет программам ссылаться на память, находящуюся за пределами их сегмента.
  • Режим Real-Address: этот режим позволяет программной среде процессора переключиться в другие режимы. Этот режим может использоваться для запуска MS-DOS-программ (Microsoft Disk Operating System), которые требуют прямого доступа к памяти и аппаратным средствам системы. Если программа запускается в этом режиме, есть вероятность, что операционная система выйдет из строя или перестанет отвечать на инструкции.
  • Режим управления системой: сокращенный до SSM, этот режим предоставляет ОС метод для реализации различных функций, таких как управление питанием или безопасность системы. Обычно они реализуются производителями, которые настраивают процессор для определенной настройки системы.
  • Режим Virtual-8086: в этом режиме, в защищенном режиме, CPU может выполнять программы реального адреса, такие как программы MS-DOS, в безопасной среде. Т.е. если программа сбой или пытается записать данные в область системной памяти, это не повлияет на другие запущенные программы.

Прибытие

На данный момент вы должны хорошо понимать, как работает программа на процессоре x86, а также как многозадачность процессора. В режимах работы должно быть понятно, почему каждый режим выбран для запуска программы. Темы, которые будут рассмотрены ниже, будут адресным пространством в базовой среде выполнения, регистрах выполнения и управлении памятью x86. Спасибо за чтение, и если у вас есть какие-либо вопросы или комментарии, оставьте их ниже!