- •Архитектура вычислительных систем. Вычислительные машины, системы и сети
- •2 Простейшие типовые элементы вычислительных машин 21
- •10 Вычислительные системы параллельной обработки. 147
- •11 Организация микроконтроллеров и микроконтроллерных систем 165
- •12 Организация компьютерных сетей 174
- •13 Стандартизация компьютерных сетей. Эталонная модель взаимодействия открытых систем 182
- •1 Основные понятия вычислительной техники и принципы организации вычислительных систем
- •1.1 Основные понятия и определения
- •1.2 Принципы организации вычислительных машин и систем
- •1.3 Основные характеристики вычислительных машин и
- •1.4 Многоуровневая организация вычислительных процессов
- •Вопросы для самопроверки
- •2 Простейшие типовые элементы вычислительных машин
- •2.1 Комбинационные схемы
- •1) Конъюнкция (логическое умножение) .
- •2) Дизъюнкция (логическое сложение) .
- •3) Отрицание (инверсия) .
- •4) Конъюнкция и инверсия (Штрих Шеффера) .
- •5) Дизъюнкция и инверсия (Стрелка Пирса) .
- •6) Эквивалентность .
- •7) Отрицание эквивалентности .
- •2.2 Автоматы с памятью
- •2.3 Триггеры
- •2.4 Проблемы и перспективы развития элементной базы
- •Вопросы для самопроверки
- •3 Функциональные узлы комбинационного и
- •3.1 Функциональные узлы последовательного типа
- •3.1.1 Регистры
- •3.1.2 Счётчики
- •3.1 Функциональные узлы комбинационного типа
- •3.2.1 Шифраторы и дешифраторы
- •3.2.2 Компараторы
- •3.2.3 Сумматоры
- •Вопросы для самопроверки
- •4 Функциональная организация процессора
- •4.1 Основные характеристики и классификация процессоров
- •4.2 Физическая и функциональная структура процессора
- •4.2.1 Операционное устройство процессора
- •4.2.2 Шинный интерфейс процессора
- •4.3 Архитектурные принципы организации risc-процессоров
- •4.4 Производительность процессоров и архитектурные
- •Вопросы для самопроверки
- •5 Организация работы процессора
- •5.1 Классификация и структура команд процессора
- •5.2 Способы адресации данных и команд
- •5.2.1 Способы адресации данных
- •5.2.2 Способы адресации команд
- •5.3 Поток управления и механизм прерываний
- •Вопросы для самопроверки
- •6 Современное состояние и тенденции развития процессоров
- •6.1 Архитектурные особенности процессоров Pentium
- •6.2 Программная модель процессоров Pentium
- •6.2.1 Прикладная программная модель процессоров Pentium
- •6.2.2 Системная программная модель процессоров Pentium
- •6.2.3 Система команд и режимы адресации процессоров
- •6.3 Аппаратная организация защиты в процессорах Pentium
- •6.4 Аппаратные средства поддержки многозадачности
- •6.5 Перспективы развития процессоров
- •Вопросы для самопроверки
- •7 Память. Организация памяти.
- •7.1 Иерархическая организация памяти
- •7.2 Классификация запоминающих устройств
- •7.3 Структура основной памяти
- •7.4 Память с последовательным доступом
- •7.5 Ассоциативная память
- •7.6 Организация флэш-памяти
- •7.7 Архитектурные способы повышения скорости обмена между процессором и памятью
- •Вопросы для самопроверки
- •8 Управление памятью. Виртуальная память
- •8.1 Динамическое распределение памяти
- •8.2 Сегментная организация памяти
- •8.3 Страничная организация памяти
- •8.4 Сегментно-страничная организация памяти
- •Вопросы для самопроверки
- •9 Организация ввода-вывода информации. Системная шина
- •9.1 Организация шин. Системная шина
- •9.1.1 Структура системной шины
- •9.1.2 Протокол шины
- •9.1.3 Иерархия шин
- •9.2 Организация взаимодействия между периферийными устройствами и процессором и памятью вычислительных машин
- •9.3 Внешние интерфейсы вычислительных машин
- •9.3.1 Параллельный порт lpt и интерфейс Centronics
- •9.3.1 Последовательный порт com и интерфейс rs-232c
- •9.3.3 Универсальная последовательная шина usb
- •9.3.4 Беспроводные интерфейсы
- •Вопросы для самопроверки
- •10 Вычислительные системы параллельной обработки.
- •10.1 Параллельная обработка информации
- •10.2 Классификация систем параллельной обработки данных
- •10.2.1 Классификация Флинна
- •10.2.2 Классификация Головкина
- •10.2.3 Классификация многопроцессорных систем по
- •10.3 Вычислительные системы на кристалле. Многоядерные системы
- •10.4 Тенденции развития вс
- •Вопросы для самопроверки
- •11 Организация микроконтроллеров и микроконтроллерных систем
- •11.1 Общие сведения о системах управления
- •11.2 Организация микроконтроллеров и
- •11.3 Области применения и тенденции развития мк
- •Вопросы для самопроверки
- •12 Организация компьютерных сетей
- •12.1 Обобщённая структура компьютерных сетей
- •12.2 Классификация компьютерных сетей
- •Вопросы для самопроверки
- •13 Стандартизация компьютерных сетей. Эталонная модель взаимодействия открытых систем
- •13.1 Понятие «открытой системы». Взаимодействие
- •13.2 Эталонная модель взаимодействия открытых систем
- •13.3 Структура блоков информации
- •7 Прикладной
- •Вопросы для самопроверки
- •Архитектура вычислительных систем. Вычисдительные машины, системы и сети
8.2 Сегментная организация памяти
В соответствии с /2, 8/, сегментирование – это разделение памяти на логические блоки произвольной длины. Логическое пространство задачи обычно представляется в виде нескольких сегментов. Каждый сегмент имеет имя, в соответствии с которым ОС при распределении памяти назначает базовый адрес. Количество сегментов определяет пользователь при подготовке программы. Для раздельного хранения команд, данных, стековых данных выделяются специальные сегменты: сегмент кода, сегмент данных, сегмент стека. Максимальное количество сегментов (s) определяется разрядностью поля команды, которое используется для задания номера сегмента. Например, в процессорах Pentium разрядность индекса селектора сегмента равна 13, что соответствует 8192 сегментам. Предельный размер (длина) каждого сегмента определяется разрядностью внутрисегментного смещения. Например, для процессоров Pentium длина сегмента ограничивается величиной Гбайта. Длина сегмента может меняться во время выполнения программы. Сегмент может переполниться, но это случается редко, поскольку длина сегментов достаточно большая.
Сегменты всех активных задач, определённые в виртуальном адресном пространстве, размещаются в ВЗУ. Поскольку объём ОП относительно невелик, то не все сегменты могут в неё поместиться. Соответствие между виртуальной памятью и физической ОП устанавливается ОС с помощью специальной таблицы соответствия (дескрипторной таблицы), которую ОС формирует всякий раз, когда в распределении памяти происходят изменения (например, при загрузке новой задачи). Размер таблицы определяется максимальным числом сегментов виртуального адресного пространства. Каждая строка таблицы (дескриптор) содержит информацию о номере сегмента, базовом адресе сегмента в ОП. Базовые адреса назначаются при загрузке сегмента и при любом изменении в распределении памяти. Пример сегментного распределения памяти представлен на рисунке 8.1 /2/.
Стрелками на рисунке 8.1 показано размещение сегментов в ОП в соответствии с адресами, определяемыми ОС, а пунктирными линиями – обмены между сегментами ОП и ВЗУ при свопингах.
Помимо базового адреса сегмента в ОП каждый дескриптор таблицы соответствия содержит биты управления виртуальной памятью и дополнительные атрибуты, используемые механизмом защиты процессора (см. главу 6).
Рисунок 8.1 – Сегментное распределение памяти
Например, бит присутствия P (Present) показывает, где находится искомый сегмент: в ОП (P=1) или на диске (P=0). Бит доступа A (Access) помогает ОС выбрать сегмент, который возвращается в ВЗУ, когда в ОП нет достаточного места для нового сегмента.
Доступ к элементам дескрипторной таблицы осуществляется с помощью указателей (селекторов), для размещения которых используются сегментные регистры, например, в процессорах Pentium, регистры CS, DS, ES, FS, CS, SS.
Способ формирования физического адреса операнда сегментированной памяти показан на рисунке 8.2 /2/:
Рисунок 8.2 – Вычисление физического адреса в сегментной
памяти
При обращении к сегменту памяти, присутствующему в ОП, в выполнении команд нет никаких отличий по сравнению с обычной физической памятью. По логическому адресу операнда, состоящему из двух частей (селектора – номера виртуального сегмента и смещения внутри сегмента) выбирается строка в дескрипторной таблице сегментов, где считывается информация о начальном адресе сегмента в ОП. К этому адресу добавляется внутрисегментное смещение (вторая часть логического адреса), что и даёт требуемый физический адрес искомого операнда в ОП.
Если требуемый сегмент отсутствует в ОП, то возникает прерывание, по которому процедура обработки этого прерывания переписывает в ОП нужный сегмент. При наличии свободного места для загрузки сегмента никаких проблем не возникает, и после загрузки нового сегмента в ОП осуществляется повторный запуск команды обращения к памяти. Если в ОП недостаточно места для записи отсутствующего сегмента, то соответствующая процедура ОС сначала освобождает требуемое место, переписывая на диск один или несколько неиспользуемых в данный момент сегментов. Для этого наиболее часто используется алгоритм LRU (Last Recently Used), обеспечивающий замену сегмента, к которому не было обращения самое продолжительное время. ОС использует бит доступа A для определения приблизительного времени последнего использования сегмента. Используя механизм свопинга, ОС создаёт иллюзию, что все сегменты программы постоянно находятся в ОП.
Рассмотренный способ реализации виртуальной памяти, при котором целые сегменты загружаются и удаляются из ОП только при необходимости, называют сегментацией с подкачкой сегментов или сегментацией с вызовом сегментов по требованию.
Особенностью использования сегментированной памяти является то, что после многократных свопингов сегментов, в ОП могут образовываться свободные участки памяти слишком малого размера и неудобные для использования. Это явление называется внешней фрагментацией (неиспользуемое пространство попадает не в сегменты, а в пустоты между ними). Чтобы избежать подобной ситуации, ОС выполняет уплотнение сегментов. При первом способе каждый раз при появлении пустого пространства следующие сегменты перемещаются ближе к адресу 0, удаляя, таким образом, это пустое пространство. При втором способе уплотнение выполняется только тогда, когда на долю пустот придётся больше некоторого процента от общего объёма памяти.
Несмотря на отмеченный недостаток использование сегментной модели в значительной степени упрощает изолирование программных блоков отдельных задач друг от друга в мультизадачной системе. Для каждой задачи обычно выделяется собственная локальная память, и одновременно задача может разделять с другими задачами совместную память, которую называют глобальной. Соответствие между логическими и физическими адресами в мультизадачной системе устанавливаются с помощью глобальной GDT (общей для всех задач) и локальных LDT (отдельных для каждой задачи) дескрипторных таблиц. Общий объём адресуемой виртуальной памяти отдельной задачи определяется разрядностью адресных полей её логического адреса. Например, в процессорах Pentium пространство виртуальных адресов задачи не может превышать 64 Тбайт.