Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Команды DIV и IDIV 2 страница




Выполнение арифметических операций над числами в формате ASCII или BCD удобно лишь для коротких полей. В большинстве случаев для арифметических операций требуется преобразование в двоичный формат. На практике намного проще преобразовать ASCII-число непосредственно в двоичный формат, чем переводить формат ASCII сначала в формат BCD, а затем в двоичный формат.

Метод преобразования базируется на том, что формат ASCII имеет основание 10, а компьютер выполняет арифметические операции только над числами с основанием 2. Алгоритм преобразования состоит в том, что, начиная с самого правого байта ASCII-числа, выполняется такая последовательность шагов:

1. Устанавливается в 0 левый полубайт каждого байта ASCII-числа.

2. ASCII-цифры умножаются на 1, 10, 100, и результаты складываются.

Для примера рассмотрим преобразование числа 2459 из формата ASCII в двоичный формат. Полагаем, что результат преобразования будет храниться в регистре АХ. Вначале обнуляем регистр АХ, после чего считываем цифру в ASCII-кодировке, умножаем АХ на 10 и прибавляем двоичное значение цифры в АХ. После считывания всех цифр ASCII-числа 2459 в регистре АХ будет содержаться двоичное значение числа 2459.

Преобразование двоичных чисел в формат ASCII

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

 


Лекция 13. Использование математического сопроцессора

в языке Ассемблера

До сих пор мы рассматривали выполнение арифметических операций над целочисленными значениями с помощью базовых команд процессора Intel Pentium, таких, как add, sub, mul, div и т.д. В самом процессоре эти операции выполняют модули целочисленных операций. В то же время большая часть вычислений требует использования вещественных чисел или, как принято говорить, чисел с плавающей точкой. Операции над числами с плавающей точкой можно также выполнять при помощи команд целочисленной арифметики, создавая специальные алгоритмы.

Однако намного проще и эффективнее использовать для этих целей математический сопроцессор, или просто сопроцессор. Для создания вычислительных алгоритмов обработки чисел с плавающей точкой необходимо достаточно хорошо знать систему команд и особенности работы сопроцессора или, как его еще называют, модуля операций с плавающей точкой (Floating Point Unit, FPU) процессоров Intel. Сопроцессор обрабатывает команды с плавающей точкой, отслеживая команды процессора и работая параллельно с ним.

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

Полное описание сопроцессора могло бы занять отдельную книгу, поэтому рассмотрим наиболее важные моменты в функционировании этого модуля. Теоретические основы построения сопроцессора, а также принципы представления данных более подробно описаны в фирменных руководствах Intel, к которым можно обратиться для более глубокого изучения темы.

13.1. Типы данных сопроцессора

Математический сопроцессор расширяет номенклатуру форматов данных, с которыми работает основной процессор. К таким форматам относятся:

• целые двоичные числа разрядности 16, 32 и 64 бит;

• упакованные целые десятичные (BCD) числа размером до 9 байт;

• вещественные числа в коротком (32 бита), длинном (64 бита) и расширенном (80 бит) форматах.

Помимо этих форматов поддерживаются и специальные числовые значения, к которым относятся:

• денормализованные вещественные числа;

• нуль;

• положительные и отрицательные значения бесконечности;

• нечисла;

• различного рода неопределенности и неподдерживаемые форматы.

Сопроцессор имеет единое внутреннее представление данных и хранит все числа в едином 80-разрядном расширенном формате. Это один из форматов представления вещественных чисел, который в точности соответствует формату регистров стека сопроцессора. Любые операнды, представленные в виде 16-, 32- и 64-разрядных целых чисел, 32-, 64- или 80-разрядных чисел с плавающей точкой, а также упакованных BCD-чисел, представленных 18 цифрами, при загрузке в регистры сопроцессора автоматически переводятся в расширенный формат. Результаты вычислений переводятся обратно в один из этих форматов данных и сохраняются в регистрах или памяти.

Рассмотрим более детально типы данных сопроцессора и начнем с двоичных чисел. Они могут иметь один из трех форматов:

• целое число размером 16 бит, диапазон значений от -32768 до +32767;

• короткое целое число размером 32 бит, диапазон значений от -2*109 до +2*109;

• длинное целое число размером 64 бит, диапазон значений от -9*1018 до +9*1018.

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

Что же касается вещественных чисел, то они могут иметь размерность 32, 64 или 80 бит. Диапазоны представления чисел в сопроцессоре следующие:

• короткое (32-разрядное) вещественное число — от 10-38 до 10+38;

• длинное вещественное число — от 10-308 до 10+308;

• расширенное вещественное число — от 10-4932 до 10+4932.

Специальные числовые или нечисловые значения могут получаться в результате выполнения математических операций сопроцессором. Например, к нечислам (Non-A-Number, NAN) относятся последовательности битов, которые нельзя сопоставить ни с одним форматом. К специальным числовым значениям относят ноль и бесконечность. Значение «ноль» может, например, быть результатом работы команд с нулевыми операндами. В перечень специальных числовых значений входят и так называемые денормализованные числа. Это числа, выходящие за пределы диапазона данного формата и приближающиеся к нулю.

13.2. Архитектура сопроцессора

Программная модель сопроцессора представляет собой набор дополнительных регистров, типов данных и команд. В группу регистров сопроцессора входят:

• восемь отдельно адресуемых 80-разрядных регистров, организованных в виде регистрового стека;

• три служебных 16-разрядных регистра: регистр состояния swr (Status Word Register) сопроцессора, управляющий регистр cwr (Control Word Register) и регистр тегов twr (Tags Word Register);

• регистры-указатели данных dpr (Data Point Register) и команд ipr (Instruction Point Register) используются при обработке исключительных ситуаций.

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

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

13.3. Система команд математического сопроцессора

Команды с плавающей точкой можно сгруппировать в 5 функциональных классов:

• команды передачи данных;

• команды сравнения;

• трансцендентные команды;

• команды манипуляций константами;

• управляющие команды.

Обычно команда с плавающей точкой имеет один или два операнда, которые выбираются из регистрового стека сопроцессора или из памяти. Многие команды, такие, например, как fsin, по умолчанию работают с операндом в вершине регистрового стека. Другие команды требуют явной кодировки операнда или операндов в соответствии с мнемоникой операции. Существует еще один формат команд, принимающий один явный и один неявный операнд (обычно элемент в вершине стека).

Команды передачи данных передают данные между регистрами стека и памятью. Эти команды можно разделить на три группы:

• команды передачи чисел с плавающей точкой;

• команды передачи целых чисел;

• команды передачи десятичных чисел.

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

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

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

Трансцендентные команды, как правило, работают с верхними элементами регистрового стека st(0) и регистром st(l). Команды для вычисления тригонометрических функций работают с аргументами, выраженными в радианах, поэтому для вычисления функции угла, заданного в градусах, следует вначале преобразовать это значение в радианы. Последняя подгруппа команд позволяет вычислять значения логарифмических и показательных функций.

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

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

13.4. Создание консольных приложений на языке Ассемблера

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

 

Для вывода текстовой информации можно использовать функцию API WriteConsoleA, параметры которой (слева направо) имеют следующий смысл:

1-й параметр - дескриптор буфера вывода консоли, который может быть получен при помощи функции GetStdHandle;

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

3-й параметр - количество выводимых символов;

4-й параметр - указывает на переменную DWORD, куда будет помещено количество действительно выведенных символов;

5-й параметр - резервный параметр, должен быть равен нулю.

Заметим, что буфер, где находится выводимый текст, не обязательно должен заканчиваться нулем, поскольку для данной функции указывается количество выводимых символов. Договоримся только не путать входные-выходные буфера консоли и буфера, которые мы создаем в программе, в том числе и для обмена с буферами консоли. Необходимо отметить, что, поскольку информация выводится в консольном окне, кодировка всех строковых констант должна быть DOS-овской.

 

Рассмотрим несколько простых консольных функций и их применение.

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

STD_INPUT_HANDLE equ -10; для вводаSTD_OUTPUT_HANDLE equ -11; для выводаSTD_ERROR_HANDLE equ -12; для сообщения об ошибке

Следует отметить, что один процесс может иметь только одну консоль, поэтому выполнение в начале программы FreeConsole обязательно. При запуске программы в "чужой" консоли она наследует эту консоль, поэтому, пока мы не выполним функцию FreeConsole, новой консоли не создать - чужой консоли эта функция закрыть не может.

 

Для чтения из буфера консоли используется функция ReadConsole. Значения параметров этой функции (слева-направо) следующие:

1-й, дескриптор входного буфера;

2-й, адрес буфера, куда будет помещена вводимая информация;

3-й, длина этого буфера;

4-й, количество фактически прочитанных символов;

5-й, зарезервировано.

 

Установить позицию курсора в консоли можно при помощи функции SetConsoleCursorPosition со следующими параметрами:

1-й, дескриптор входного буфера консоли.

2-й, структура COORD:

COORD STRUC Х WORD? Y WORD?COORD ENDS

Нужно отметить, что вторым параметром является не указатель на структуру (что обычно бывает), а именно структура. На самом деле для ассемблера это просто двойное слово (DWORD), у которого младшее слово – координата X, а старшее слово – координата Y.

 

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

FOREGROUND_BLUE equ 1h; синий цвет буквFOREGROUND_GREEN equ 2h; зеленый цвет буквFOREGROUND_RED equ 4h; красный цвет буквFOREGROUND_INTENSITY equ 8h; повышенная интенсивностьBACKGROUND_BLUE equ 10h; синий свет фонаBACKGROUND_GREEN equ 20h; зеленый цвет фонаBACKGROUND_RED equ 40h; красный цвет фонаBACKGROUND_INTENSITY equ 80h; повышенная интенсивность

 

Для определения заголовка окна консоли используется функция SetConsoleTitle, единственным параметром которой является адрес строки с нулем на конце. Здесь следует оговорить следующее: если для вывода в само окно консоли требовалась DOS-кодировка, то для установки заголовка требуется Windows-кодировка. Чтобы покончить с этой проблемой раз и навсегда, посмотрим, как это можно решить средствами Windows.

Функция SetConsoleCursorPosition - установить позицию курсора, и здесь все довольно ясно. Функция SetConsoleScreenBufferSize устанавливает размер буфера окна консоли. Этот размер не может уменьшить уже существующий буфер (существующее окно), а может только его увеличить.

 

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

 

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

 

 


Часть 3. Аппаратные средства современных РС

Лекция 14. Подсистемы хранения данных в PC

Память компьютера предназначена для кратковременного и долговременного хранения информации – кодов команд и данных. В памяти информация хранится в массиве ячеек. Минимальной адресуемой единицей является байт – каждый байт памяти имеет свой уникальный адрес.

14.1. Внутренняя и внешняя память

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

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

Внешняя память представляла собой отдельные устройства с подвижными носителями – накопители на магнитных дисках (а сначала – на барабанах) и ленте. Со временем все устройства компьютера удалось «поселить» в один небольшой корпус, и прежнюю классификацию памяти применительно к PC можно переформулировать так:

– внутренняя память – электронная (полупроводниковая) память, устанавливаемая на системной плате или на платах расширения;

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

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

Обращение к ячейкам оперативной памяти может происходить в любом порядке, причем как по чтению, так и по записи, поэтому оперативную память называют памятью с произвольным доступом (Random Access Memory, RAM) –в отличие от постоянной памяти (Read Only Memory, ROM).

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

Название «дисковая память» широко применяется для внешней памяти с прямым доступом; словосочетание «прямой доступ» подразумевает возможность обращения к блокам (но не к его ячейкам!) с чередованием операций чтения и записи в произвольном порядке.

Память с последовательным доступом накладывает ограничения на свободу: в ней невозможны произвольное чередование операций чтения/записи и произвольность адресов. Ряд устройств запись вообще не выполняют (например, CD-ROM). Последовательный метод доступа используется в ленточных устройствах, а также в большинстве оптических дисков (CD, DVD). С такими неудобствами обращения мирятся только из-за того, что устройства последовательного доступа обеспечивают самое дешевое хранение больших объемов информации, к которой не требуется оперативного доступа.

Ниже перечислены наиболее важные параметры подсистемы памяти.

· Объем хранимой информации. Нет необходимости объяснять, что чем он больше, тем лучше. Максимальный (в принципе – неограниченный) объем информации хранят ленточные и дисковые устройства со сменными носителями, за ними идут дисковые накопители, и завершает этот ряд оперативная память.

· Время доступа –усредненная задержка начала обмена полезной информацией относительно появления запроса на данные. Минимальное время доступа имеет оперативная память, за ней идет дисковая, после нее – ленточная.

· Скорость обмена при передаче потока данных (после задержки на время доступа). Максимальную скорость обмена имеет оперативная память, за ней идет дисковая, после нее – ленточная.

· Удельная стоимость хранения единицы данных – цена накопителя (с носителями), отнесенная к единице хранения (байту или мегабайту). Минимальную стоимость хранения имеют ленточные устройства со сменными носителями, их догоняют дисковые накопители, а самая дорогая – оперативная память.

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

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

Процесс замещения страниц называется свопингом (swapping), а области дисковой памяти, выделяемые для этих целей, – файлами подкачки, или своп-файлами (swap file). Для прикладной программы этот процесс прозрачен (если только она не критична ко времени обращения к памяти). Для пользователя этот процесс заметен по работе диска в те моменты, когда не требуется обращение к файлам. Расплатой за почти безмерное увеличение объема доступной оперативной памяти является снижение средней производительности обращений к памяти и некоторый расход дисковой памяти на файл подкачки. Естественно, размер виртуальной памяти не может превышать суммы размеров ОЗУ и дисковой памяти. Виртуальная память с подкачкой страниц реализуется операционными системами защищенного режима (например, OS/2, MS Windows) на основе аппаратных средств 32-разрядных процессоров (386 и выше), а теперь и 64-разрядных.

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

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

14.2. Организация памяти

В первых процессорах семейства память предоставлялась в виде сегментов размером по 64 Кбайт, а суммарный объем программно адресуемой памяти не превышал 1 Мбайт (рис.15.1). Архитектура PC ограничивала размер оперативной памяти объемом 640 Кбайт, начиная с нулевых адресов. Эта область называется стандартной памятью (conventional memory), и для прикладных программ из нее остается доступной область порядка 400-550 Кбайт (остальное «съедает» операционная система вместе с разными драйверами).

 

00000 <10000 AFFFF B0000 F0000 FFFF0 FFFFF

BIOS-DOS Пользователь Видео ROM-BIOS

0 xxx 640k 936k 1Meg

Рис.14.1. Распределение памяти в реальном режиме.

Первая область памяти, занимающая несколько десятков килобайт, содержит системные параметры BIOS и DOS: таблица векторов прерываний, область данных BIOS (часы реального времени, буфер клавиатуры и др.), обработчик прерываний DOS, данные DOS и резидентная порция COMMAND.COM. Далее следует область прикладных программ: вначале – резидентные, которые остаются в памяти компьютера, а затем – основная программа. Область заканчивается границей 640 кбайт. Выше области программ расположена аппаратная память. Это память видеоадаптера (до 64 кбайт), специальные окна для передачи данных в память выше 1 Мбайт, BIOS видео-памяти и других устройств. В последних 16 байтах памяти расположена информация о типе компьютера, изготовителе и дате создания BIOS.

Потребности решаемых задач довольно быстро переросли эти ограничения, и в процессоры ввели средства организации виртуальной памяти. Впервые (для х86) они появились в процессоре 80286, но удобный для употребления вид приняли только в 32-битных процессорах (80386 и выше). Во-первых, было снято ограничение на 64-килобайтный размер сегмента – теперь любой сегмент может иметь почти произвольный (до 4 Гбайт) размер. Во-вторых, был введен механизм страничной трансляции адресов. С его помощью (без сегментации) реализуется виртуальная память размером до 4 Гбайт, а также появляется возможность формирования физического адреса с разрядностью 36 бит (64 Гбайт адресуемой физической памяти). С появлением 64-битных расширений размер виртуальной памяти увеличился до 264 байт. Правда, в первых реализациях процессоров принято ограничение виртуального адреса до 48 бит, при этом физический адрес имеет длину 52 бит (возможно и меньше).

Память в Windows 95/98 распределяется на следующие области:

1. Стандартная оперативная память (Conventional Memory) – первые 640 кБ;

2. Аппаратная память (UMA – Upper Memory Area) – 384 кБ;

3. Верхняя память (HMA – High Memory Area) – 64 кБ. Появилась вследствие ошибки в процессоре 286;

4. Расширенная память (XMS – Extended Memory Specification) - расположена выше HMA;

4.1. Растянутая память (EMS – Expanded Memory Specification) – первая часть XMS;

5. Виртуальная память – файл подкачки на HD – продолжение памяти XMS.

В ОС Windows NT/XP используется единое адресное пространство через защищенный режим. При этом в 32-разрядных ОС адреса внешних устройств (видеоадаптер, BIOS и др.) расположены в 4-м гигабайте общего адресного пространства. Поэтому максимальный объем ОЗУ составляет 3,25ГБ. В 64-разрядных системах объем ОЗУ практически неограничен.

14.3. Диски и файловые системы

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

Имя файла может задаваться как в классической форме «8.3» (8 символов на имя плюс 3 символа на тип), понимаемой всеми операционными системами, так и в почти произвольной длинной форме, характерной для более сложных ОС (OS/2, Windows 9x/NT/200x/XP, Unix). Файловая система включает в себя систему каталогов и системы размещения файлов на диске, простейшей из которых можно считать FAT в MS-DOS. Эти системы определяют возможности и эффективность манипулирования файлами – создания, записи, чтения, поиска, модификации, удаления, восстановления удаленных файлов, а также средства восстановления файловой системы после сбоев, вызванных неисправностями и некорректными действиями пользователей или программ.

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




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 716; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.077 сек.