Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ekzam.docx
Скачиваний:
8
Добавлен:
18.09.2019
Размер:
3.23 Mб
Скачать
  1. Керування розподілом пам’яті

Когда вычислительная система предназначается для выполнения только од­ной программы, оперативная память разделяется на две части. В одной помеща­ются резидентные компоненты операционной системы, а во второй — приклад­ная программа и ее данные. В мультипрограммной системе "прикладная" об­ласть оперативной памяти, в свою очередь, должна быть распределена между несколькими прикладными программами. Выделение ресурсов памяти программам процессов должно выполняться динамически, и эта задача возлагается на операционную систему. Общепринято называть ее задачей управления распреде­лением памяти (memory management).

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

Секционирование памяти

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

Адресуемая оперативная память может быть разделена и с помощью ме­ханизма сегментации. Если разбивка памяти на страницы происходит поми­мо воли программиста и скрывается от него операционной системой, сегмен­тация выполняется под контролем программиста и является средством, по­зволяющим программисту управлять доступом к отдельным компонентам программы и данных с помощью атрибутов прав и привилегий. Понятие сег­мент имеет несколько интерпретаций. Наиболее последовательным является представление о сегменте как об абстрактном объекте с определенным име­нем, размерами и некоторыми другими атрибутами, например именем вла­дельца и идентификатором принадлежности данному объекту ресурсов.

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

  1. Вектори обчислень

Хотя производительность современных больших вычислительных машин многократно возросла, существует класс задач, для которых их возможности по-прежнему оказываются недостаточными. Эти задачи связаны с моделированием реальных физических процессов в разных средах и решаются в таких отраслях науки, как аэродинамика, сейсмология, метеорология, ядерная физика, физика плазмы и т.п. [WILS84].

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

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

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

Методы выполнения векторных операций

Ниже мы расскажем, в чем особенность операций над векторными переменны­ми и как эти операции выполняются в компьютерах разных классов. В компьютере общего назначения обработка векторов или массивов чисел в формате с плавающей точкой5 организуется в виде циклической процедуры, причем в каждом цикле обра­батывается очередной элемент массива. Рассмотрим, например, два вектора (одномерных числовых массива) — А к В. Необходимо сложить их и поместить ре­зультат в вектор С. Для этого потребуется шесть операций сложения:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]