скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыУчебное пособие: Аппаратура, программное обеспечение и микропрограммы

2.2.11 Относительная адресация

Когда потребность в увеличении объемов основной памяти стала очевидной, архитектуры компьютеров были модифицированы для работы с очень большим диапазоном адресов. Машина, рассчитанная на работу с памятью емкостью 16 Мбайт (1 Мбайт — это 1 048 576 байт), должна иметь 24-разрядные адреса. Включение столь длинных адресов в формат каждой команды даже для машины с одноадресными командами стоило бы очень дорого, не говоря уже о машинах с многоадресными командами. Поэтому для обеспечения работы с очень большими адресными пространствами в машинах начали применять адресацию типа база + смещение, или относительную адресацию, при которой все адреса программы суммируются с содержимым базового регистра. Подобное решение имеет то дополнительное преимущество, что программы становятся перемещаемыми, или позиционно-независимыми; это свойство программ имеет особенно важное значение для многоабонентских систем, в которых одну и ту же программу может оказаться необходимым размещать в различных местах основной памяти при каждой загрузке.

2.2.12 Режим задачи, режим супервизора, привилегированные команды

В вычислительных машинах, как правило, предусматривается несколько различных режимов работы. Динамический выбор режима позволяет лучше организовать защиту программ и данных. В обычном случае, когда машина находится в конкретном режиме, работающая программа может выполнять только некоторое подмножество команд. В частности, если говорить о программах пользователя, то подмножество команд, которые пользователь может употреблять в режиме задачи, не позволяет, например, непосредственно производить операции ввода-вывода; если программе пользователя разрешить выполнение любых операций ввода-вывода, она могла бы вывести главный список паролей системы, распечатать информацию любого другого пользователя или вообще испортить операционную систему. Операционной системе обычно присваивается статус самого полномочного пользователя и работает она в режиме супервизора; она имеет доступ ко всем командам, предусмотренным в машине. Для большинства современных вычислительных машин подобного разделения на два режима — задачи и супервизора — вполне достаточно. Однако в случае машин с высокими требованиями по защите от несанкционированного доступа желательно иметь более двух режимов. Благодаря этому можно обеспечить более высокую степень детализации защиты. Благодаря этому можно также предоставлять доступ по принципу минимума привилегий: .каждому конкретному пользователю следует предоставлять минимально возможный приоритет и право доступа только к тем ресурсам, , которые ему действительно необходимы для выполнения предусмотренных задач.

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

2.2.13 Виртуальная память

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

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

2.2.14 Мультипроцессорная обработка

В мультипроцессорных машинах несколько процессоров работают с общей основной памятью и одной операционной системой. При мультипроцессорной работе возникает опасность конфликтных ситуаций определенных типов, которых не бывает в однопроцессорных машинах. Здесь необходимо обеспечить координированный упорядоченный доступ к каждой общей ячейке памяти, с тем чтобы два процессора не могли изменять ее содержимое одновременно — и в результате, быть может, портить его. Подобная координация необходима также и в случае, когда один процессор пытается изменить содержимое ячейки, которую хочет прочитать другой процессор. Более подробно эти проблемы обсуждаются в гл. И. В гл.21 при описании операционной системы MVS, выбранной в качестве одного из примеров для иллюстрации, объясняется, каким образом реализуется мультипроцессорный режим в крупных машинах фирмы IBM. Упорядочение доступа необходимо также и для однопроцессорных машин. Подробно эта проблема рассматривается в гл. 3, 4 и 5.

2.2.15 Прямой доступ к памяти

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

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

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

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

2.2.16 Конвейеризация

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

несколько команд. Такое совмещение требует несколько большего объема аппаратуры, однако позволяет существенно сократить общее время выполнения последовательности команд.

2.2.17 Иерархия памяти

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

2.3 Программное обеспечение

Программное обеспечение — это программы, которые содержат команды и данные и определяют для аппаратных средств алгоритмы решения задач. Существует очень много различных языков программирования.

2.3.1 Программирование на машинном языке

Машинный язык это язык программирования, непосредственно воспринимаемый компьютером. Каждая команда машинного языка интерпретируется аппаратурой, выполняющей указанные функции. Команды машинного языка в принципе являются довольно примитивными. Только соответствующее объединение этих команд в программы на машинном языке дает возможность описывать достаточно серьезные алгоритмы. Наборы команд машинного языка современных компьютеров зачастую включают некоторые очень эффективные возможности (см, например, описание миникомпьютеров VAX в гл. 19).

Говорят, что машинный язык является машинно-зависимым: программа, написанная на машинном языке компьютера одного типа, как правило, не может выполняться на компьютере другого типа, если его машинный язык не идентичен машинному языку первого компьютера (или не является расширением по отношению к этому языку). Еще одним признаком машинной, или аппаратной, зависимости является характер самих команд: в командах машинного языка указываются наименования конкретных регистров компьютера и предусматривается обработка данных в той физической форме, в которой они существуют в этом компьютере. Большинство первых компьютеров программировались непосредственно на машинном языке, а в настоящее время на машинном языке пишется лишь очень небольшое число программ.

2.3.2 Ассемблеры и макропроцессоры

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

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

2.3.3 Компиляторы

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

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

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


2.3.4 Система управления вводом-выводом (IOCS)

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

В 50-х годах пользователи обычно включали исходный код IOCS в свои программы на языке ассемблера. Пакет IOCS, уже написанный и отлаженный, фактически ассемблировался каждый раз заново как часть каждой индивидуальной программы, что приводило к значительному увеличению времени трансляции. Поэтому на многих машинах, как правило, использовались готовые, заранее ассемблированные программы IOCS. Программист, работающий на языке ассемблера, писал операторы со ссылками на места расположения ключевых программ в готовом коде IOCS.

Еще одна проблема использования концепции IOCS была связана с тем, что полный пакет программ IOCS зачастую занимал значительную долю основной памяти, оставляя мало места для кода прикладных программ пользователя. Поэтому некоторые пользователи занимали в памяти место не нужных им модулей пакета IOCS своими программами. Другие пользователи разрабатывали свои собственные, более компактные пакеты. Однако в конце концов пользователи поняли, что самое рациональное — это предоставить системе IOCS возможность выполнять все функции по управлению вводом-выводом, и были просто вынуждены увеличивать объемы (дорогостоящей) основной памяти своих вычислительных машин. Такой подход стал по сути стандартным — и операционные системы начали включать все больше и больше машинно-ориентированных программ, так что разработчики прикладных систем смогли сконцентрировать свои усилия на создании программ прикладного характера. Это привело к тому, что операционным системам потребовались большие емкости основной памяти. К счастью, стоимость устройств основной памяти постоянно снижается.

2.3.5 Спулинг

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

2.3.6 Процедурно-ориентированные и проблемно-ориентированные языки

Языки высокого уровня бывают либо процедурно-ориентированными, либо проблемно-ориентированными. Процедурно-ориентированные языки высокого уровня — это универсальные языки программирования, которые можно использовать для решения самых разнообразных задач. Проблемно-ориентированные языки предназначаются специально для решения задач конкретных типов. Такие языки, как Паскаль, Кобол, Фортран, Бейсик и ПЛ/1 обычно считаются процедурно-ориентированными, а такие языки, как GPSS (язык моделирования) и SPSS (язык для выполнения статистических вычислений), проблемно-ориентированными. 1)

Страницы: 1, 2, 3, 4


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.