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

Основные элементы

Каждая часть оборудования подключена к материнской плате через физическое соединение, т.е. системную шину.

На приведенном выше рисунке данные могут передаваться между ЦП и памятью, ЦП и вводом-выводом или даже памятью и модулями ввода-вывода.

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

Для доступа к данным в памяти ЦП использует два внутренних регистра: MAR (регистр адреса памяти) и MBR (регистр буфера памяти).

MAR указывает адрес в памяти для следующего чтения/записи.

MBR содержит данные для записи в память или данные для чтения из памяти.

Точно так же I/OAR указывает конкретный модуль ввода/вывода, а I/OBAR используется для обмена данными между модулем ввода/вывода и процессором.

Модуль ввода-вывода передает данные с внешних устройств на ЦП и память и наоборот.

он содержит буферы для временного хранения данных до тех пор, пока они не будут отправлены.

Регистры

Арифметико-логическое устройство (ALU) в ЦП выполняет вычисления. Для вычислений нам нужно сначала подготовить ввод, однако ALU не может обращаться к памяти напрямую, вместо этого предоставляется набор регистров в виде кеша, который быстрее и меньше, чем основная память.

Регистры сгруппированы в три категории

  • Общие регистры
  • Регистры управления
  • Сегментные регистры

Общие регистры подразделяются на

  • Регистры данных
  • Регистры указателей
  • Индексные регистры

Регистры данных

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

Их можно использовать тремя способами,

  • Полный 32-битный регистр данных: EAX, ECX, EBX, EDX
  • Нижние половины 32-битных регистров можно использовать как четыре 16-битных регистра данных: AX, BX, CX, DX.
  • Младшая и старшая половины вышеупомянутых четырех 16-битных регистров могут использоваться как восемь 8-битных регистров: AH, AL, BH, BL, CH, CL, DH, DL

Некоторые из этих регистров данных имеют специальное применение в арифметических операциях.

AX — основной аккумулятор; он используется в вводе/выводе и большинстве арифметических инструкций. Например, при операции умножения один операнд сохраняется в регистре EAX, AX или AL в зависимости от размера операнда.

BX известен как базовый регистр, поскольку его можно использовать в индексированной адресации.

CX известен как регистр счетчика, поскольку регистры ECX, CX хранят количество циклов в итерационных операциях.

DX известен как регистр данных. Он также используется в операциях ввода/вывода. Он также используется с регистром AX вместе с DX для операций умножения и деления с большими значениями.

Сегментированные регистры адресации

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

Одним из популярных методов адресации является сегментированная адресация.

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

Сегмент и смещение в пределах сегмента, который мы посещаем.

Например, ЦП x8086 сдвигает содержимое сегмента кода (CS) влево на 4 бита, а затем суммирует результат и содержимое указателя инструкций (IP). Наконец, сумма используется в качестве эффективного адреса.

Регистры указателей

Регистры указателя являются 32-разрядными EIP, ESP, EBP.

Указатель инструкции (IP) — 16-битный регистр IP хранит адрес смещения следующей инструкции, которая должна быть выполнена. IP в сочетании с регистром CS (как CS:IP) дает полный адрес текущей инструкции в сегменте кода.

Указатель стека (SP) — 16-битный регистр SP предоставляет значение смещения в стеке программы. SP в сочетании с регистром SS (SS:SP) относится к текущей позиции данных или адресу в программном стеке.

Базовый указатель (BP) — 16-битный регистр BP в основном помогает ссылаться на переменные параметров, передаваемые подпрограмме. Адрес в регистре SS (сегмент стека) объединяется со смещением в BP для получения местоположения параметра. BP также можно комбинировать с DI и SI в качестве базового регистра для специальной адресации.

Прочитайте это для получения дополнительной информации.

Индексные регистры

32-битные индексные регистры, ESI и EDI и их 16-битные крайние правые части. SI и DI используются для индексированной адресации и иногда используются для сложения и вычитания.

Исходный индекс (SI) — используется в качестве исходного индекса для строковых операций.

Индекс назначения (DI) — используется в качестве индекса назначения для строковых операций.

Регистры управления

Память также содержит инструкции для выполнения процессором.

Счетчик программ (ПК): содержит адрес инструкции, которую нужно извлечь из памяти.

Регистр инструкций (IR): содержит последнюю полученную инструкцию.

Прочитайте это для получения дополнительной информации

Регистры состояния

32-битный регистр указателя команд и 32-битный регистр флагов вместе взятые рассматриваются как регистры состояния.

Многие инструкции включают сравнения и математические вычисления и изменяют состояние флагов, а некоторые другие условные инструкции проверяют значение этих флагов состояния, чтобы перевести поток управления в другое место.

Общие биты флага:

Флаг переполнения (OF) — указывает на переполнение старшего бита (крайний левый бит) данных после арифметической операции со знаком.

Флаг направления (DF) — определяет левое или правое направление для перемещения или сравнения строковых данных. Когда значение DF равно 0, строковая операция выполняется слева направо, а когда значение равно 1, строковая операция выполняется справа налево.

Флаг прерывания (IF) — определяет, следует ли игнорировать или обрабатывать внешние прерывания, такие как ввод с клавиатуры и т. д. Он отключает внешнее прерывание, когда значение равно 0, и разрешает прерывания, когда установлено значение 1.

Флаг ловушки (TF) — позволяет настроить работу процессора в одношаговом режиме. Используемая нами программа DEBUG устанавливает флаг trap, чтобы мы могли пошагово выполнять выполнение одной инструкции за раз.

Знаковый флаг (SF) — показывает знак результата арифметической операции. Этот флаг устанавливается в соответствии со знаком элемента данных, следующего за арифметической операцией. Знак указывается старшим левым битом. Положительный результат очищает значение SF до 0, а отрицательный результат устанавливает его до 1.

Нулевой флаг (ZF) — указывает на результат арифметической операции или операции сравнения. Ненулевой результат очищает нулевой флаг до 0, а нулевой результат устанавливает его до 1.

Вспомогательный флаг переноса (AF) — содержит перенос из бита 3 в бит 4 после арифметической операции; используется для специальной арифметики. AF устанавливается, когда 1-байтовая арифметическая операция вызывает перенос из бита 3 в бит 4.

Флаг четности (PF) — указывает общее количество 1-бит в результате, полученном в результате арифметической операции. Четное количество единичных битов сбрасывает флаг четности в 0, а нечетное количество единичных битов устанавливает флаг четности в 1.

Флаг переноса (CF) — содержит перенос 0 или 1 из старшего бита (самого левого) после арифметической операции. Он также хранит содержимое последнего бита операции shift или rotate.

Выполнение инструкции

Программа, которую должен выполнить ЦП, состоит из набора инструкций, хранящихся в памяти. Грубо говоря, выполнение инструкции можно рассматривать как процесс, состоящий из двух шагов.

Сначала инструкция читается (выбирается) из памяти в IR, адрес которого задается регистром ПК.

Во-вторых, ЦП выполняет инструкцию, то есть интерпретирует инструкцию и выполняет указанное действие.

Первый шаг называется циклом выборки, а второй — циклом выполнения. Весь процесс, состоящий из двух шагов, называется циклом инструкций.

Таким образом, выполнение программы фактически повторяет циклы команд до тех пор, пока либо компьютер не выключится, либо пока не встретится инструкция, требующая остановки ЦП.

Reference Paper для всего поста.