Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пример предоставленной теории по Арх ЭВМ ПИ.doc
Скачиваний:
5
Добавлен:
24.11.2019
Размер:
1.12 Mб
Скачать

Основные законы алгебры-логики:

Закон

Для   ИЛИ

Для   И

Переместительный

Сочетательный

Распределительный

Правила де Моргана

Идемпотенции

Поглощения

Склеивания

Урок №6 Функции 2-х переменных

Штрих Ше́ффера — бинарная логическая операция, булева функция над двумя переменными.

Таблица значений

X

Y

X|Y

0

0

1

0

1

1

1

0

1

1

1

0

Как и любую булеву операцию, штрих Шеффера можно выразить через отрицание и дизъюнкцию:

либо через отрицание и конъюнкцию

Штрих Шеффера образует базис для пространства булевых функций от двух переменных. То есть используя только штрих Шеффера можно построить остальные операции. Например,

 — отрицание

 — дизъюнкция

 — конъюнкция

Это позволяет в системе транзисторно-транзисторная логики реализовать всю необходимую логику с использованием единственного типового элемента. Примером может являться промышленная 155 серия. С другой стороны, использование других типовых элементов позволит уменьшить их общее количество и тем самым повысить надёжность схемы. Элемент, реализующий штрих Шеффера обозначается следующим образом:

Стре́лка Пи́рса — двуместная логическая операция, введена в рассмотрение Ч. Пирсом. Стрелка Пирса, обычно обозначаемая ↓, задаётся следующей таблицей истинности:

 A 

 B 

  A ↓ B 

1

1

0

1

0

0

0

1

0

0

0

1

Таким образом, высказывание «A ↓ B» означает «ни A, ни B». Стрелка Пирса обладает тем свойством, что через неё одну выражаются все другие логические операции:

¬x ≡ x↓x

x & y ≡ (x↓x) ↓ (y↓y)

x v y ≡ (x↓y) ↓ (x↓y)

x → y ≡ ((x↓x) ↓ y) ↓ ((x↓x) ↓ y)

От перемены мест операндов результат операции не изменяется.

В логических схемах носит название "операция ИЛИ-НЕ"

Функция равнозначности

_ _

X=AœB=ABvAB

Функция обладает следующим свойством: при совпадении исходных данных результатом является истина.

 A 

 B 

 A œ B 

1

1

1

1

0

0

0

1

0

0

0

1

Функция неравнозначности

_ _

X=A B=ABvAB

Функция обладает следующим свойством: при совпадении исходных данных результатом является ложь.

 A 

 B 

  A œ  B 

1

1

0

1

0

1

0

1

1

0

0

0

Урок №7 Основы построения ЭВМ

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

Сложить 2 числа;

Проверить, не является ли число нулем;

Скопировать блок данных из одной части памяти компьютера в другую.

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

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

Большинство современных компьютеров состоит из шести уровней:

Цифровой логический уровень

Уровень микроархитектуры

Уровень архитектуры набора команд

Уровень операционной системы

Уровень ассемблера

Уровень языка прикладных программистов

На самом нижней - нулевом уровне выполняются различные операции над числами, представленными в двоичной форме.

Урок№8 Внутренняя организация процессора

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

  • блок для выполнения логических и арифметических операций (АЛУ);

  • блок для хранения информации (память) или ОЗУ;

  • устройства для ввода и вывода данных.

Д ля обеспечения согласованной работы вышеперечисленных устройств преобразования информации требуется устройство управления (УУ).

На этой схеме линиями разной толщины отмечены потоки:

информации

у правляющих сигналов

Используемые в изложении аббревиатуры означают следующее:

УУ – устройство управления,

Увв – устройства ввода,

Увыв – устройства вывода

АЛУ – арифметико-логическое устройство,

ЗУ – запоминающее устройство, память ЭВМ,

ПК –персональный компьютер.

Кратко функционирование устройств ЭВМ можно описать так.

УУ инициирует работу Увв, давая ему команду на выполнение ввода в ЗУ, аналогично инициируется работа Увыв.

УУ указывает, из какой ячейки памяти ЗУ необходимо передавать информацию в АЛУ, какую операцию над этой информацией должно выполнять АЛУ, в какую ячейку памяти должен быть занесен результат операции. Современные ЭВМ имеют отличия, обусловленные развитием ВТ.

Основные отличия:

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

АЛУ и УУ объединены в одно устройство, называемое центральным процессором (ЦП).

Ц ентральный процессор

УИ: Устройство исполнения ШИ: Шинный интерфейс

Шина

Очередь исполнения

Рисунок 4.1. Взаимодействие логических устройств процессора

Урок №10 Регистры процессора

Сегментный регистр хранит стартовый (начальный) адрес памяти, определенный операционной системой для хранения команд программы (CS), переменных и констант (DS) и стека (SS) – для временного хранения результатов обработки, параметров вызываемых из программы процедур и адресов возврата из вызываемых процедур. На приведенном ниже рисунке графически показана связь сегментных регистров и соответствующих им сегментов. Рисунок отражает принципиальную связь между сегментными регистрами и сегментами программы, откуда следует, что программные сегменты не обязательно располагаются в оперативной памяти в порядке, отображенном на рисунке. Не стоит забывать, что в программе могут задаваться и дополнительные сегменты данных (такие, как ES, а в процессорах 80386 и выше еще и FS и GS), но приведенные 3 сегмента программы присутствуют в любой программе.

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

Имена сегментных регистров строго зарезервированы, и поэтому при появлении этих имен в программе процессор обращается к своей внутренней памяти.

0000

Сегмент стека

Сегмент данных

Сегмент кода

Max адрес

Оперативное

запоминающее

устройство

Адрес

Адрес

Адрес

SS

DS

CS

Связь сегментов и сегментных регистров.

Регистр CS содержит адрес первой команды программы. Сумма содержимого этого регистра со значением смещения в указателе инструкций – регистре IP – дает адрес команды программы, которая должна быть передана следующей для исполнения.

Регистр DS содержит адрес первой переменной или константы, объявленной в программе. Команды используют этот регистр для поиска значений операндов, участвующих в операциях обработки. Этот адрес, сложенный со смещением переменной, дает ссылку на определенную ячейку со значениями исходных данных, промежуточных результатов или выходных данных.

Регистр SS позволяет реализовать в памяти стек, который программа использует для временного хранения адресов и данных. Адрес из этого регистра складывается со смещением, хранимым в указателе стека SP, и суммарное значение указывает на текущее слово в стеке.

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

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

Универсальные регистры

Наиболее часто программист оперирует регистрами общего назначения (РОН). К ним относятся регистры AX, BX, CX, DX, а в процессорах, начиная с Intel 80386 и выше – EAX, EBX, ECX, EDX. Регистры ЕхХ – 32-разрядные, хХ – 16-разрядные. Каждый из последних в свою очередь состоит из двух 8-битовых регистров xL и xH. Нижеприведенный рисунок иллюстрирует общую структуру РОН на примере регистра АХ.

A H

A L

AX

EAX

Общая структура РОН

Каждый из этих регистров может использоваться для временного хранения любых данных, при этом можно работать с каждым регистром целиком, а можно отдельно с каждой его половиной:

- регистры АН, ВН, СН, DH - старшие байты (Hight);

- регистры AL, BL, CL, DL - младшие байты (Low) соответствующих 2-ух байтовых регистров.

Регистры AL, АН образуют соответственно младший и старший байты условного регистра АХ.

Всеми этими регистрами можно пользоваться при программировании, но ряд команд использует их неявным способом. Например:

регистр АХ, аккумулятор, используется при умножении и делении слов, в операциях ввода-вывода и в некоторых операциях над строками;

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

регистр АН используется при умножении и делении байтов;

регистр ВХ, базовый регистр, часто используется при адресации данных в памяти; регистр СХ, счетчик, используется как счетчик числа повторений цикла и в качестве номера позиции элемента данных при операциях над строками. Регистр CL используется как счетчик при операциях сдвига и циклического сдвига на несколько битов;

регистр DX, регистр данных, используется при умножении и делении слов. Кроме этого используется в операциях ввода-вывода как номер порта.

Регистры смещений или иначе, указателей и индексов

Регистры указателей также, как и сегментные регистры, предназначены для хранения составных частей адресов.

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

Регистр SP хранит значение смещения, которое вместе с регистром SS указывает на текущее слово в стеке.

Регистр BP обрабатывает ссылочные параметры (данные и адреса), которые передаются между программой и подпрограммой (процедурой) через стек. Также, как и другие регистры указателей, ВР содержит смещение. Процессор сочетает это смещение с адресом в SS.

Регистры индексов SI и DI используются для индексированной адресации, а также в строковых операциях.

Также как для вычисления адреса исполняемой команды процессору требуются значения, находящиеся в двух регистрах CS и IP, аналогично осуществляется доступ к данным в других сегментах.

Для доступа к сегменту данных процессор извлекает номер блока из регистра DS, а смещение из регистра ВХ или индексного регистра - SI или DI.

Следует отметить, что регистр ВХ – единственный из РОН – можно использовать в качестве указателя (индекса) для расширения адресации. С это целью он может использоваться в сочетании с регистрами SI и DI.

Регистр флагов

Регистр флагов представляет собой 16-битовый регистр, где фиксируется информация о текущем состоянии процессора.

15 0

OF

DF

IF

TF

SF

ZF

AF

PF

CF

Рисунок 4.5. Регистр флагов

Флаг OF называется флагом переполнения и его значение, равное 1, свидетельствует о наличии ошибки в операциях над числами со знаком.

Флаг DF называется флагом направления, используется в командах работы со строками. При DF=1 регистр индекса , используемый в командах работы со строками увеличивается на 1 при каждом следующем выполнении команды, при DF=0 - регистр индекса на 1 уменьшается.

Флаг IF называется флагом прерывания. Обычно он устанавливается в 1 и такое его значение позволяет исполняемой программе пользователя реагировать на прерывания. Однако, когда вызывается программа обработки прерывания, флаг IF устанавливается в 0, чтобы никакие другие прерывания не могли помешать текущей обработке прерывания.

Флаг TF называется флагом трассировки, при его значении, равном 1, разрешается выполнение программы по шагам.

Флаг SF называется флагом знака и в соответствии со своим названием устанавливается в 1, если в результате выполнения операции над числами со знаком, получается отрицательное число.

Флаг ZF называется флагом нуля. Этот флаг устанавливается, если результатом операции является нулевое значение (если результат выполненной перед проверкой флага операции равен 0, флаг устанавливается в 1).

Флаг AF называется флагом вспомогательного переноса. Используется в двоично-десятичной арифметике. Этот флаг устанавливается в 1, если арифметическая операция приводит к заему или переносу четвертого справа бита однобайтового операнда (иначе говоря, этот флаг содержит бит, переносимый из третьего бита в четвертый бит в специализированных арифметических операциях).

Флаг PF называется флагом четности, он устанавливается в 1, если результат операции имеет четное количество 1 в двоичном представлении результата.

Флаг CF называется флагом переноса и в него заносится перенос (или заем) из знакового (старшего) разряда числа (это заем или перенос за пределы разрядной сетки представления числа).

Нужно уяснить, что не все команды программы на Ассемблере устанавливают в 0 или в 1 флаги. Причем, выполнение тех или иных команд связано с установкой конкретных флагов. Обратите внимание на это обстоятельство при изучении команд Ассемблера.

Еще раз обращаю внимание на формирование физического адреса в памяти компьютера.

Изучаемый микропроцессор имеет 1 Мбайт памяти ОЗУ. Следовательно, для указания адреса информации в команде микропроцессора должен был иметь 20 разрядов. Однако такое количество разрядов микропроцессора не может обработать за 1 операцию 16-битового процессора. Чтобы разрешить это противоречие, было решено формировать физический адрес из 2-х 16-битовых слагаемых: базы (содержимое регистра сегмента) и смещения по правилу:

Физический Адрес = смещение (IP) +1б*(регистр сегмента -CS).

В действительности длинная операция умножения при вычислении физического адреса не выполняется по той причине, что микропроцессор использует содержимое 16-битового регистра так, как если бы оно имело 4 дополнительных нулевых бита 0010->0100(*2)->1000(*4)->10000(*8)->100000(*16).

Например, пусть смещение будет 10Н (в шестнадцатеричной системе счисления), а адрес начала размещения сегмента (содержимое регистра сегмента) равно 2000Н. Тогда,

0000 0000 0001 0000 (смещение)

+0010 0000 0000 0000 0000 (номер блока)

___________________________________________

0010 0000 0000 0001 0000 (физический адрес)

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

Урок №11 Организация работы памяти

Уровни хранения информации

НМД обеспечивают долговременное хранение данных, что позволяет сохранять информацию между сеансами работы на ПК или в течение многих лет. Информация записывается путём намагничивания поверхности дисков, поэтому дисковые накопители являются энергонезависимыми (nonvolative) устройствами хранения информации. Это означает, что для сохранения содержимого необязательно постоянно подавать питание дисковому накопителю. ОЗУ (RAM – random access memory) – память произвольного доступа энергозависимая (volative). Это означает, что при отключении питания её содержимое утрачивается. Пользователи часто разделяют технологии устройств хранения информации с учётом быстродействия и ёмкости. Поэтому, так как дисковые накопители являются, механическими устройствами, они работают намного медленнее по сравнению с электронной памятью.

С целью достижения максимальной производительности в ПК используются устройства всех видов.

Урок№12 Классификацию памяти

Организация ОЗУ ПК

В ОЗУ хранятся команды, выполняемые ЦП, а также данные программ. Обычно RAM описывается в виде рядов ячеек, хранения данных. Программисты часто представляют RAM как разряды(биты), группируемые в слова, соответствующие разрядности шины данных. ЦП, взаимодействующие с 32-разрядной шиной данных используются 32-разрядные слова, а для 64-разрядной шины данных используются 64-разрядные слова. Но в фоновом режиме программисты могут осуществлять доступ к отдельным байтам RAM с индивидуальной адресацией.

Следовательно, область хранения каждого байта можно считать ячейкой с уникальным адресом. Чтобы извлечь информацию из определённой ячейки или сохранить данные в память ЦП, должен указываться адрес ячейки. Количество разрядов в шине адреса определяет количество адресов памяти. Например, 32-разрядная шина адреса определяет память размером 232 байтов или ~4ГБ. Поэтому 64-разрядная шина адреса позволяет адресовать 264 или ~18,5∙1018 ячеек памяти.

Динамическое ОЗУ DRAM

Во многих компьютерах используется микросхема DRAM (Dynamic random access memory), благодаря их быстродействию, большой ёмкости и низкой стоимости. Для хранения одного бита информации в DRAM используется транзистор и конденсатор. Текущее значение бита определяется зарядом конденсатора. Проблема в том, что они сохраняют заряд в течение определённого времени. После чего, заряд требуется обновить. Чтобы обновить заряд конденсатора, контроллер памяти читает его значение, что приводит к разряду конденсатора (потеря значения). Затем контроллер должен восстановить значение заряда конденсатора. Обычно контроллер обновляет значение битов с частотой 66 MHz. Когда процессор запрашивает значение ячейки памяти DRAM, контроллер должен разрядить конденсатор, чтобы определить хранимое значение. Если оно составляет 1 (конденсатор был заряжен), контроллер должен восстановить его. Поскольку в результате считывания конденсатор разряжается, этот процесс называется разрушающим чтением.

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

Статическое ОЗУ SRAM

В большинстве систем основной объём памяти реализован на микросхемах DRAM. Однако для повышения быстродействия в ПК используется высокоскоростная кэш-память. Обычно она построена на технологии SRAM (Static random access memory). В отличие от DRAM технология SRAM не требует постоянного обновления содержимого. Кроме того, контроллер памяти может считывать содержимое памяти без его разрушения. Поэтому время доступа к МС SRAM составляет 10нс и меньше. В МС SRAM для хранения 1-го бита информации не используются конденсатор, заряд которого необходимо обновлять, но используется несколько транзисторов (5-6), поэтому МС SRAM обладает меньшей ёмкостью, чем МС DRAM такого же размера. Высокое быстродействие понижает ёмкость и повышает цену. Высокая цена делает МС SRAM более пригодной для реализации кэш-памяти, а не ОЗУ.

Компоновка модулей RAM

Обычно модуль RAM содержит несколько МС памяти. Существует 2 категории МС памяти: SIMM и DIMM. SIMM (Single in Line Memory Module) – память с односторонним расположением выводов, DIMM (Dual in Line Memory Module) – модуль с двухрядным расположением выводов. SIMM – 72 контактный разъем может одновременно передавать 32 разряда данных, DIMM – 168 контактов – 64 разряда.

Банки памяти

Модули памяти вставляются в гнезда системной платы, которая иногда называется банками памяти. Точнее говоря, банк соответствует группе гнезд, которые обеспечивают передачу данных в количестве, соответствующем разрядности системной шины. Предположим, системная шина 64 разряда. Если используется 32 разряда модулей для обеспечения необходимого количества разрядов нужно объединить 2 модуля. При установке памяти обычно следует формирование банка. В рассмотренном примере нельзя использовать один модуль памяти для 64 разрядной шины, т.к. он предоставляет только 32 разряда данных. Необходимо установить 2 модуля. Конструкция системной платы может накладывать и другие ограничения на установленные модули памяти. Часто требуется, чтобы модули одного банка имели один размер, т.е. нельзя вставить в первое гнездо модуль, использующий 32 МБ, а во второй 128 МБ.

Для некоторых системных плат необходимо, чтобы модули одного банка имели одинаковое быстродействие. Часто допускается установка модулей различной емкости в различные банки. Например, вставить 2 модуля емкостью по 32 МБ в первое гнездо, а затем поместить в 2 следующие гнезда модули по 16 МБ.

Урок №13 Общие принципы управления памятью в ООС

Простое непрерывное распределение — это самая простая схема, согласно которой вся память условно может быть разделена на три области:

область, занимаемая операционной системой;

область, в которой размещается исполняемая задача;

незанятая ничем (свободная) область памяти.

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

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

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

Если есть необходимость создать программу, логическое адресное пространство которой должно быть больше, чем свободная область памяти, или даже больше, чем весь возможный объем оперативной памяти, то используется распределение с перекрытием — так называемые оверлейные структуры (от overlay — перекрытие, расположение поверх чего-то). Этот метод распределения предполагает, что вся программа может быть разбита на части — сегменты. Каждая оверлейная программа имеет одну главную (main) часть и несколько сегментов (segments), причем в памяти машины одновременно могут находиться только ее главная часть и один или несколько не перекрывающихся сегментов.

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

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

Распределение оперативной памяти в MS DOS

Как известно, MS DOS1 — это однопрограммная операционная система для персонального компьютера типа IBM PC. В ней, конечно, можно организовать запуск резидентных, или TSR-задач2, в результате которого в памяти будет находиться не одна программа, но в целом система MS DOS предназначена для выполнения только одного вычислительного процесса. Поэтому распределение памяти в ней построено по схеме простого непрерывного распределения. Система поддерживает механизм распределения памяти с перекрытием (оверлейные структуры).

Как известно, в IBM PC использовался 16-разрядный микропроцессор 18088, который за счет введения сегментного способа адресации позволял указывать адрес ячейки памяти в пространстве объемом до 1 Мбайт. В последующих персональных компьютерах (IBM PC AT, AT386 и др.) было принято решение поддерживать совместимость с первыми, поэтому при работе в DOS прежде всего рассматривают первый мегабайт. Вся эта память разделялась на несколько областей, что иллюстрирует рис. 3.2. На этом рисунке показано, что памяти может быть и больше, чем 1 Мбайт, но более подробное рассмотрение этого вопроса мы здесь опустим, отослав желающих изучить данную тему глубже к монографии [2].

0000-003FF 1 Кбайт

Таблица векторов прерываний

00400-005FF 51 2 байт

Глобальные переменные BIOS; глобальные переменные DOS

В ранних версиях здесь располагались глобальные переменные интерпретатора Бейсик

00600-ОАООО 35-60 Кбайт

Модуль Ю. SYS; Модуль MSDOS. SYS: - обслуживающие функции; - буферы, рабочие и управляющие области; - устанавливаемые драйверы; Резидентная часть COMMAND. COM: - обработка программных прерываний; - системная программа загрузки; - программа загрузки транзитной части COMMAND. COM

Размер этой области зависит от версии MSDOS и, главное, от конфигурационного файла CONFIG. SYS

580 Кбайт

Область памяти для выполнения программ пользователя и утилит MS DOS. В эту область попадают программы типа *.СОМ и *.ЕХЕ

Объем этой области очень зависит от объема, занимаемого ядром ОС. Программа может перекрывать транзитную область COMMAND. COM

Область расположения стека исполняющейся программы

Стек «растет» снизу вверх

18 Кбайт

Транзитная часть командного процессора COMMAND. COM

Собственно командный интерпретатор

AOOOO-C7FFF 160 Кбайт

Видеопамять. Область и размер используемого видеобуфера зависят от текущего режима

При работе в текстовом режиме область памяти АОООО-ВОООО свободна и может быть использована в программе

С8000-ЕОООО 96 Кбайт

Зарезервировано для расширения BIOS

FOOOO-FFFF 64 Кбайт

Область ROM BIOS (System BIOS)

Обычно объем этой области равен 32 Кбайт, но может достигать и 128 Кбайт, занимая младшие адреса

Более 100000

High Memory Area.

При наличии драйвера HIMEM. SYS здесь можно расположить основные системные файлы MS DOS, освобождая тем самым область основной памяти в первом мегабайте

Может использоваться при наличии специальных драйверов. Используются спецификации XMS и EMS

Если не вдаваться в детали, можно сказать, что в состав MS DOS входят следующие основные компоненты.

Подсистема BIOS (Base Input-Output System — базовая подсистема ввода-вывода), включающая в себя помимо программы POST (Power On Self Test — самотестирование при включении компьютера)3 программные модули обработки прерываний, с помощью которых можно управлять основными контроллерами на материнской плате компьютера и устройствами ввода-вывода. Эти модули часто называют обработчиками прерываний. По своей функциональной сути они представляют собой драйверы. BIOS располагается в постоянном запоминающем устройстве компьютера. В конечном итоге почти все остальные модули MS DOS обращаются к BIOS. Если и не напрямую, то через модули более высокого уровня иерархии.

Модуль расширения BIOS — файл IO.SYS (в других DOS-системах он может называться иначе, например _ВЮ.СОМ).

Основной, или базовый, модуль обработки прерываний DOS — файл MSDOS.SYS. Именно этот модуль в основном реализует работу с файловой системой.

Командный процессор (интерпретатор команд) — файл COMMAND.COM.

Утилиты и драйверы, расширяющие возможности системы.

Программа загрузки MS DOS — загрузочная запись (Boot Record, BR), расположенная на дискете или на жестком диске (подробнее о загрузочной записи и о других загрузчиках см. главу 6).

Вся память в соответствии с архитектурой IBM PC условно может быть разбита на следующие три части.

В самых младших адресах памяти (первые 1024 ячейки) размещается таблица векторов прерывания (см. раздел «Система прерываний 32-разрядных микропроцессоров i80x86» в главе 4). Это связано с аппаратной реализацией процессора i8088. В последующих процессорах (начиная с i80286) адрес таблицы прерываний определяется через содержимое соответствующего регистра, но для обеспечения полной совместимости с первым процессором при включении или аппаратном сбросе в этот регистр заносятся нули. При желании, однако, в случае использования современных микропроцессоров i80x86 вектора прерываний можно размещать и в других областях.

Вторая часть памяти отводится для программных модулей самой системы MS DOS и для программ пользователя. Эту область памяти мы рассмотрим чуть позже, здесь только заметим, что она называется основной, или стандартной, памятью (conventional memory).

Наконец, третья часть адресного пространства отведена для постоянных запоминающих устройств и функционирования некоторых устройств ввода-вывода. Эта область памяти получила название UMA (Upper Memory Area — область памяти, адрес которой выше основной).

В младших адресах основной памяти размещается то, что можно условно назвать ядром этой операционной системы — системные переменные, основные программные модули, блоки данных для буферизации операций ввода-вывода. Для управления устройствами, драйверы которых не входят в базовую подсистему ввода-вывода, загружаются так называемые загружаемые, или устанавливаемые, драйверы. Перечень устанавливаемых драйверов определяется специальным конфигурационным файлом CONFIG.SYS. После загрузки расширения BIOS — файла IO.SYS -последний (загрузив модуль MSDOS.SYS) считывает файл CONFIG.SYS и уже в соответствии с ним подгружает в память необходимые драйверы. Кстати, в конфигурационном файле CONFIG.SYS могут иметься операторы, указывающие на количество буферов, отводимых для ускорения операций ввода-вывода, и на количество файлов, которые могут обрабатываться (для работы с файлами необходимо зарезервировать место в памяти для хранения управляющих структур, с помощью которых выполняются операции с записями файла). В случае использования микропроцессоров i80x86 и наличия в памяти драйвера HIMEM.SYS модули IO.SYS и MSDOS.SYS могут быть размещены за пределами первого мегабайта в области, которая получила название НМA (High Memory Area — область памяти с большими адресами).

Память с адресами, большими чем lOFFFFh, может быть использована в DOS-программах при выполнении их на микропроцессорах, имеющих такую возможность (например, микропроцессор i80286 имел 24-разрядную шину адреса, а i80386 -уже 32-разрядную). Но для этого с помощью специальных драйверов необходимо переключать процессор в другой режим работы, при котором он сможет использовать адреса выше lOFFFFh. Широкое распространение получили две основные спецификации: XMS (Extended Memory Specification) и EMS (Expanded Memory Specification). Последние годы система MS DOS практически перестала применяться. Теперь ее используют в основном для запуска некоторых утилит, с помощью которых подготавливают дисковые устройства, или для установки других операционных систем. И поскольку основным утилитам, необходимым для обслуживания персонального компьютера, спецификации EMS и XMS, как правило, не нужны, мы не будем здесь их рассматривать.

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

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

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

Урок №14 Интерфейсы

Структурно современные. ЭВМ и ПК состоит из 2-х частей: центральной и периферийной. К центральной части относят процессор и ОЗУ.

ЦП называют устройство, непосредственно осуществляющее процесс обработки данных и программное управление этим процессом. В его состав входят АЛУ, УУ, и собственная память процессора. В современных ПК, ЦП реализован в виде большой интегральной схемы и называется микропроцессором.

ЦП взаимодействует с ОЗУ или просто оперативной памятью (ОП). ОП предназначена для приема, хранения и выдачи информации (чисел, символов, команд, констант) – всей информации для выполнения вычислений по программе.

Кроме ОП во всех ПК имеется внутренняя постоянная память для хранения постоянных данных и программ. ОП - дорогая часть аппаратуры. Объем ее ограничен, поэтому большие массивы или таблицы информации хранятся в ВЗУ. К ним относят: накопители на магнитных дисках (НМД), накопители на магнитных лентах (НМЛ), накопители на оптических и магнитооптических дисках.

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

ВЗУ, Увв и Увыв образуют периферийную часть ПК. Состав устройств может сильно отличаться в разных экземплярах, поэтому говорят о конфигурации ПК.

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

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

В настоящее время в ПК используется структура с одним общим интерфейсом, называемым системной шиной. При такой структуре все устройства ПК обмениваются информацией и управляющими сигналами через системную шину. Физически она представляет собой систему функционально объединенных проводов, по которым передается 3 потока данных:

непосредственно информация (данные);

управляющие сигналы;

адреса.

На рисунке 2.2 приведена схема обмена информацией между устройствами в ЭВМ с общей шиной.

Количество проводов в системной шине, предназначенных для передачи информации называется разрядностью шины.

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

ЦП

ОП

ПП