История
История появления первых вычислительных машин уходит в далекое пошлое. Так, еще
в XVII веке немецким ученым В.Шиккардом была изобретена вычислительная машина,
которая выполняла четыре вычислительных действия, а также накапливала
промежуточные результаты вычислений. В 1834 году английский ученый Ч.Беббедж
создал вычислительную машину, названную им аналитической, которая имела
вычислительное устройство, память и элементы автоматического управления
вычислительным процессором.
В конце XIX века американский изобретатель Г.Голле Рит сконструировал первые
перфорационные машины, которые выполняли сортировальные и некоторые
вычислительные операции.
В нашей стране в 1930-1950 гг. были достигнуты значительные успехи в области
разработки средств вычислительной техники. В этот период были созданы полные
комплекты перфорационных вычислительных машин, а также различные аналоговые
вычислительные машины и моделирующие устройства.
Перспективы развития ОП
Память компьютера организована в виде множества ячеек, в которых могут храниться
значения; каждая ячейка обозначается адресом. Размеры этих ячеек и, собственно,
типы значений, которые могут в них храниться, отличаются у разных компьютеров.
Некоторые старые компьютеры имели очень большой размер ячеек, иногда до 64К бит
в каждой ячейке. Эти большие ячейки назывались "словами". Супер-компьютеры Крей
и компьютер Юниварк ориентированы на работу со словами.
Трудность работы со словами большой длины заключается в том, что обычно
программы работают не с целыми словами, а с их частями. Поэтому большинство
современных компьютеров, и в том числе все персональные компьютеры, используют
значительно меньшей размер ячейки памяти, состоящей всего из 8 бит или "байта":
байт - это очень удобная единица информации, отчасти потому, что он позволяет
хранить код одной буквы алфавита или одного символа. Поскольку символ занимает в
точности один байт, термин "байт" и "символ" часто используются в одном и том же
смысле.
Так как IBM/PC использует ячейки памяти длиной 8 бит или 1 байт, в памяти могут
храниться значения, которые можно выразить восемью битами. Это значение до двух
в восьмой степени или 256. Смысл величины, записанной в ячейку памяти, зависит
от способа ее использования> Можно считать, что байт содержит код алфавитного
символа - так называемый код ASCII. В то же время его можно рассматривать и как
число. Все 256 положительные числа от 0 до 255, либо как числа со знаками в
диапазоне от -128 до + 127. Кроме того, байт может как часть большого объема
данных, например, строки символов или двухбайтного числа.
Для удобства манипулирования символьными данными компьютеру необходимо чтобы
коды символов преобразовались в байтовые величины. Большинство компьютеров,
включая IBM/PC, используют код ASCII, американский стандартный код для обмена
информации. Большинство компьютеров фирмы "IBM" используют другую схему
кодирование символов, называющуюся EBCDIC; системы ASCII и EBSDIC организованы
по-разному, но перекодировка из одной системы в другую большого труда не
составляет.
Всем компьютерам требуется память нескольких видов. Память требуется на каждом
шагу выполнения программ. Память нужна как для использования данных, так и для
хранения результатов. Она необходима для взаимодействия с периферией компьютера
и даже для поддержания образа, видимого на экране. В компьютерных системах
работа с памятью основывается на очень простых концепциях. В принципе, все, что
требуется от компьютерной памяти, - это сохранять один бит информации так, чтобы
потом он мог быть извлечен оттуда.
Организация памяти
Одним из основных элементов компьютера, позволяющим ему нормально
функционировать, является память. Внутренняя память компьютера - это место
хранения информации, с которой онработает. Внутренняя память компьютера является
временным рабочим пространством; в отличие от нее внешняя память, такая как файл
на дискете, предназначена для долговременного хранения информации. Информация во
внутренней памяти не сохраняется при выключении питания.
Каждая ячейка памяти имеет адрес, который используется для ее нахождения. Адреса
- это числа, начиная с нуля для первой ячейки, увеличивающиеся по направлению к
последней ячейке памяти. Поскольку адреса - это те же числа, компьютер может
использовать арифметические операции для вычисления адресов памяти.
Архитектура каждого компьютера накладывает собственные ограничения на величину
адресов. Наибольший возможный адрес определяет объем адресного пространства
компьютера или то, какой объем памяти он может использовать. Обычно компьютер
использует память меньшего объема, чем допускается его возможностями адресации.
Если архитектура компьютера предусматривает наибольшее адресное пространство,
это накладывает суровые ограничения на возможности такого компьютера
IBM/PC использует возможности адресации микропроцессора 8088 полностью. Адреса в
8088 имеют длину 20 бит, следовательно, процессор позволяет адресовать два в
двадцатой степени байта или 1024 К.
Такое большое адресное пространство позволяет свободно использовать ресурсы
памяти для специальных целей. Большая часть арифметических операций, которые
может выполнять микропроцессор 8088, ограничивается манипуляцией с 16-разрядными
числами, что дает диапазон значений от 0 до 64 К. Поскольку полный адрес должен
состоять из 20 разрядов, необходимо было разработать способ управления 20
разрядами. Решение было найдено путем использования принципа сегментированной
адресации.
Для работы с сегментированными адресами микропроцессор 8088 имеет специальные
регистры сегментов, предназначенные для хранения сегментной части адресов.
Загрузив в регистр сегмента некоторое значение, можно адресовать следующие за
ним 64К ячеек памяти. Без изменения значения в регистре сегмента компьютер может
работать только с 64К байтами из общего адресного пространства в 1.024К. Путем
изменения значения в регистре сегмента можно адресовать любую ячейку памяти.
Чтобы иметь возможность в каждый момент времени работать более чем с 64К памяти,
в микропроцессоре 8088 предусмотрены четыре различных регистра сегмента, каждый
из которых имеет особое назначение. Память компьютера используется для различных
целей - часть ее занимает программа, другая часть используется для хранения
данных, с которыми в данный момент работает программа. Поэтому два регистра
сегмента выделены для программы и для данных. Для указания базового адреса
программного или кодового сегмента используется регистр DC. Еще одна область
памяти, используемая для специальных целей, называется стеком, и ее адрес
указывается регистром стека SS. Для обеспечения дополнительных возможностей
адресации имеется регистр дополнительного сегмента (или сегмента расширения),
ES.
Когда программа подготавливается к выполнению, операционная система, такая как
DOS, выбирает ячейки каких разделов будут использоваться для размещения кодовой
части программ, данных и стека в регистры сегментов CS, DS и SS заносятся адреса
этих ячеек. При выполнении программы адреса в этих регистрах позволяют находить
нужные ячейки памяти.
DOS и языковые процессоры используют программные соглашения, которые позволяют
увеличить объем программ практически неограниченно, в то время как их адресуемая
область данных ограничена 64К. Вы легко заметите это ограничение, работая с
Паскалем или компилятором Бейсика. Для "встроенного" интерпретатора Бейсика для
IBM/PC собственно выполняемой программой является сам интерпретатор, а то, что
мы считаем своей программой, на Бейсике фактически является частью данных
интерпретатора. Таким образом, для интерпретатора Бейсика суммарный объем
кодовой части и данных Вашей программы не должен превышать 64К, которые
позволяет адресовать регистр данных DS.
Как Бейсик, так и Паскаль, лишь до определенной степени позволяют манипулировать
сегментированными адресами. Вы можете непосредственно изменять содержимое
регистров CS, DS, SS и ES - языковой процессор должен управлять этими
регистрами, иначе все может совершенно запутаться. Однако, определенный способ
использования в программах сегментированной адресации все же имеется.
Паскаль разрешает использование сегментированной адресации, правда, в более
унифицированном и гибком виде, чем Бейсик. На Паскале можно определить
переменную как сегментированный адрес, например:
Var пример_адреса : adasmem,
а затем непосредственно задать его сегментную и относительную части ('.s' и
'.r', соответственно):
пример_адреса.s : = # 2222;
пример_адреса.r : = # 3333;
Когда все эти присваивания выполнены, можно осуществлять доступ к памяти с
помощью указателя сегментированного адреса:
x : = пример_адреса^;
if(chr(x)> = "а") and (chr(x)< = "z") then
пример_адреса^ : = x - 32;
Имея адресное пространство свыше миллиона байт IBM/PC позволяет более удобно и
более гибко использовать память, чем большинство других, меньших персональных
компьютеров. С одной стороны, резервирование определенных ячеек памяти может
наложить ограничение на возможные применения компьютера. В IBM/PC резервируется
несколько областей в верхних адресах памяти. Эти области имеют особое значение,
а все нижние адреса оставлены для свободного использования. Таким образом,
сочетаются достоинства использования зарезервированных блоков памяти и
сохранения как можно большего объема памяти для свободного использования.
Верхняя четверть общего объема памяти, начиная с ячейки C 000 и до конца,