Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Флоренсов А.Н. УП Системное программное обеспечение.docx
Скачиваний:
46
Добавлен:
28.06.2021
Размер:
148.95 Кб
Скачать

1.2. Понятие архитектуры компьютера

Системное программирование нижнего уровня требует знания всех деталей машинных кодов управления устройствами и «слов состояния устройств». Причем только для кодов управляющих слов процессора используется стандартная мнемоника (условные символические обозначения). Кроме того, для системного программирования необходимо понимание внутренних специальных процедур работы процессора, а именно: четкое представление действий над стеком и о программной стороне процесса прерывания, правилах формирования адреса, а также о правилах доступа через средства внутренней защиты процессора.

Из вышесказанного становится очевидным, что трудоемкость системного программирования и объем базовой информации для него значительно больше, чем в прикладном программировании. Ближе всего к самым тонким потребностям системного программирования подходит язык ассемблера, позволяющий в форме мнемокодов записывать двоичные коды машинных команд и задавать операнды в виде, ориентированном на машинное представление, в частности на регистры процессора.

Архитектура – это логическая структура и функционирование компьютера с точки зрения программиста. Иначе говоря, архитектура – это точное описание границы между аппаратурой и программным обеспечением. Для однопроцессорных компьютеров их архитектура определяется архитектурой процессора.

Архитектура процессора состоит:

1) из внутренних узлов хранения информации в процессоре, явно указываемых или используемых в машинных командах. Эти узлы называют регистрами программиста;

2) способов доступа к ячейкам внешней по отношению к процессору адресуемой памяти (так называемой основной памяти компьютера);

3) описания форматов и функций машинных команд;

4) описания системы прерываний в той степени, в которой она значима для программиста. Это описание состоит из изложения последовательности действий с информацией при выполнении процедуры прерывания, но не содержит описания аппаратных узлов и устройств, без понимания деталей функционирования которых может обойтись даже самый дотошный программист.

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

Одним из фундаментальных понятий современной вычислительной техники и системного программирования является понятие адреса. Адрес информационного объекта – это порядковый номер ячейки памяти, начиная с которой в основной памяти размещается эта информация. Понятие адреса относится как к данным, так и к командам (адрес команды). Для обеспечения большой гибкости процессоры, начиная с 60-х годов, используют в качестве элементарной адресуемой ячейки основной памяти байт (группу из 8 бит). Адресовать информацию размером менее одного байта в современных компьютерах невозможно. Большинство данных и команд состоит более чем из одного байта, в любом случае за адрес этих данных или команд принимается адрес самого младшего байта основной памяти, где хранится эта информация.

Для операндов, размещаемых в основной памяти, информация машинного кода команды определяет адрес, называемый обычно эффективным или исполнительным. В современных архитектурах компьютеров исполнительный адрес информации в памяти отличается от действительного адреса. Это сделано для возможности перемещения программ. Действительно, если бы такого отличия не было, то при необходимости перемес- тить исполняемую программу с другого реального места памяти потребовалось бы ее переделать: либо перетранслировать с учетом новой информации о размещении при выполнении, либо скорректировать те части машинных кодов, которые определяют исполнительный адрес. Решением явилось введение и использование специальных регистров, называемых обычно сегментными или, ранее, базовыми регистрами программы. Эти регистры предназначены для хранения информации, исходя из которой определяется действительный адрес начала программы в памяти – в общем случае части программы, называемой сегментом. Тогда при перемещении программы в памяти достаточно скорректировать лишь содержимое регистра сегмента (сегментов) программы. В настоящее время этот подход используется во всех архитектурах процессоров, исключая лишь простейшие микропроцессоры.