Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
31-40.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
197 Кб
Скачать
☆

32. Степень детализации и ее аналоги в аппаратном обеспечении

Давайте проследим, каким образом пара (селектор, смещение) превращается в физический адрес. Как только аппаратное обеспечение определяет, какой именно регистр сегмента используется, оно может найти полный дескриптор, соответствующий данному селектору во внутренних регистрах. Если такого сегмента не существует (селектор 0) или в данный момент он не находится в памяти (Р=0), вызывается системное прерывание (ловушка). В первом случае — это ошибка программирования; второй случай требует, чтобы операционная система вызвала нужный сегмент.

Затем аппаратное обеспечение проверяет, не выходит ли смещение за пределы сегмента. Если выходит, то снова происходит ловушка. По логике вещей в дескрипторе должно быть 32-битное поле для определения размера сегмента, но там в наличии имеется всего 20 битов, поэтому в данном случае используется совершенно другая схема. Если поле G (Granularity — степень детализации) равно 0, то поле LIMIT дает точный размер сегмента (до 1 Мбайт). Если поле G равно 1, то поле LIMIT указывает размер сегмента в страницах, а не в байтах. Размер страницы в компьютере Pentium II никогда не бывает меньше 4 Кбайт, поэтому 20 битов достаточно для сегментов до 232 байтов.

Если сегмент находится в памяти, а смещение не выходит за границу сегмента, Pentium II прибавляет 32-битное поле BASE в дескрипторе к смещению, в результате чего получается линейный адрес (рис. 6.12). Поле BASE разбивается на три части и разносится по дескриптору, чтобы обеспечить совместимость с процессором 80286, в котором размер BASE составляет всего 24 бита. Поэтому каждый сегмент может начинаться с произвольного места в 32-битном адресном пространстве.

33. Мультипроцессоры

В первой разработке все процессоры разделяют общую физическую память, как показано на рис. 8.1, а. Такая система называется мультипроцессором или системой с совместно используемой памятью. Мультипроцессорная модель распространяется на программное обеспечение. Все процессы, работающие вместе на мультипроцессоре, могут разделять одно виртуальное адресное пространство, отображенное в общую память. Любой процесс может считывать слово из памяти или записывать слово в память с помощью команд LOAD и STORE. Больше ничего не требуется. Два процесса могут обмениваться информацией, если один из них будет просто записывать данные в память, а другой будет считывать эти данные.

Благодаря такой возможности взаимодействия двух и более процессов мультипроцессоры весьма популярны. Рассмотрим программу, которая изучает битовое отображение и составляет список всех его объектов. Одна копия отображения хранится в памяти, как показано на рис. 8.1, б. Каждый из 16 процессоров запускает один процесс, которому приписана для анализа одна из 16 секций. Если процесс обнаруживает, что один из его объектов переходит через границу секции, этот процесс просто переходит вслед за объектом в следующую секцию, считывая слова этой секции. В нашем примере некоторые объекты обрабатываются несколькими процессами, поэтому в конце потребуется некоторая координация, чтобы определить количество домов, деревьев и самолетов. В качестве примеров мультипроцессоров можно назвать Sun Enterprise 10000, Sequent NUMA-Q, SGI Origin 2000 и HP/Convex Exemplar.