- Объем памяти как вычислить
- Оценка количества информации
- Количество информации в текстовом сообщении
- Количество графической информации
- Измерение объемов звуковой информации
- Формула объема памяти в информатике
- Расчёт иформационного объема растрового изображения
- Презентация к уроку
- Ход урока
- I. Организационный момент.
- II. Актуализация знаний.
- III. Применения и закрепления полученных знаний.
- IV. Подведение итогов урока. Выставление оценок на тестовую работу.
- V. Домашнее задание.
- Объем памяти как вычислить
- Определение объёма памяти
- Содержание
- История
- Способы определения объёма памяти
- Определение объёма стандартной памяти
- Определение объёма и карты памяти всего ОЗУ
- Альтернативные способы определения объёма памяти свыше 1 Мбайта
Объем памяти как вычислить
Код ОГЭ по информатике: 2.1.3. Оценка количественных параметров информационных объектов. Объем памяти, необходимый для хранения объектов
Оценка количества информации
Количество информации можно рассматривать как меру уменьшения неопределенности знания при получении информационных сообщений. Такой подход позволяет количественно измерять информацию.
Впервые объективный подход к измерению количества информации был предложен американским инженером Р. Хартли в 1928 г. Позже, в 1948 г., этот подход обобщил создатель общей теории информации К. Шеннон.
Формула Хартли устанавливает связь между количеством возможных равновероятных информационных сообщений N и количеством информации I, которое содержится в этих сообщениях: N = 2 I
При алфавитном подходе к определению количества информации рассматривают информационное сообщение как последовательность знаков определенной знаковой системы. При этом содержание информации значения не имеет.
По приведенной выше формуле можно рассчитать, какое количество информации I несет каждый из знаков этой системы. Если в алфавите знаковой системы N знаков, то каждый знак несет количество информации: I = log2 N
Чем больше знаков содержит алфавит, тем больше информации несет один его знак. Если количество символов алфавита равно N, а количество символов в записи сообщения — М, то информационный объем этого сообщения вычисляется по формуле: I = M • log2 N
Таким образом, мерой объема любого сообщения в компьютере или на каком–либо носителе принято считать общую длину двоичного кода этого сообщения. Такая мера весьма удобна, поскольку она не связана ни с видом сообщения, ни с его смыслом. Текстовое, звуковое или иное сообщение одинаково характеризуется тем количеством двоичных знаков, которым оно представлено в выбранной системе кодировки.
Количество информации в текстовом сообщении
Текстовая информация состоит из букв, цифр, знаков препинания, различных специальных символов. Для кодирования текстовой информации используют различные коды. Таблица, в которой всем символам компьютерного алфавита поставлены в соответствие порядковые номера, называется таблицей кодировки. Существуют различные таблицы кодировок текстовой информации.
Распространенная таблица кодировки ASCII (читается «аски», American Standard Code for Information Interchange — стандартный американский код для обмена информацией) использует 1 байт для кодов информации. Если код каждого символа занимает 1 байт (8 бит), то с помощью такой кодировки можно закодировать 2 8 = 256 символов.
Таблица ASCII состоит из двух частей. Первая, базовая часть, является международным стандартом и содержит значения кодов от 0 до 127 (для цифр, операций, латинского алфавита, знаков препинания). Вторая, национальная часть, содержит коды от 128 до 255 для символов национального алфавита, т. е. в национальных кодировках одному и тому же коду соответствуют различные символы.
В настоящее время существует несколько различных кодировок второй части таблицы для кириллицы — КОИ8–Р, KOI8–U, Windows, MS–DOS, Macintosh, ISO. Наиболее распространенной является таблица кодировки Windows–1251. Из–за разнообразия таблиц кодировки могут возникать проблемы при переносе русского текста между компьютерами или различными программами.
Поскольку объем в 1 байт явно мал для кодирования разнообразных и многочисленных символов мировых алфавитов, была разработана система кодирования Unicode. В ней для кодирования символа отводится 2 байта (16 бит). Это означает, что система позволяет закодировать 2 16 = 65 536 символов. Полная спецификация стандарта Unicode включает в себя все существующие, вымершие и искусственно созданные алфавиты мира, а также множество математических, музыкальных, химических и прочих символов.
Количество графической информации
Растровое графическое изображение состоит из отдельных точек — пикселей, образующих строки и столбцы.
Основные свойства пикселя — его расположение и цвет. Значения этих свойств кодируются и сохраняются в видеопамяти компьютера.
Качество изображения зависит от пространственного разрешения и глубины цвета.
Разрешение — величина, определяющая количество точек (пикселей) на единицу площади.
Глубина цвета — объем памяти (в битах), используемой для хранения и представления цвета при кодировании одного пикселя растровой графики или видеоизображения.
Для графических изображений могут использоваться различные палитры — наборы цветов. Количество цветов N в палитре и количество информации I, необходимое для кодирования цвета каждой точки, связаны соотношением: N = 2 I
Например, для черно–белого изображения палитра состоит из двух цветов. Можно вычислить, какое количество информации необходимо, чтобы закодировать цвет каждой точки (пикселя): 2 = 2 I —> Iпикселя = 1 бит
Чтобы определить информационный объем видеоизображения, необходимо умножить количество информации одного пикселя на количество пикселей в изображении: I = Iпикселя • X • Y, где Х — количество точек изображения по горизонтали, Y — количество точек изображения по вертикали.
Существует несколько цветовых моделей для количественного описания цвета. В основе модели RGB (сокращение от англ. Red, Green, Blue) лежат три основных цвета: красный, зеленый и синий. Все другие цвета создаются с помощью смешения их оттенков. Например, при смешивании красного и зеленого цветов получим желтый, красного и синего — пурпурный, зеленого и синего — бирюзовый. Если смешать все три основные цвета максимальной яркости, получим белый цвет.
Если один цвет имеет 4 оттенка, то общее количество цветов в модели RGB будет составлять 4 • 4 • 4 = 64. При 256 оттенках для каждого цвета общее количество возможных цветов будет равно 256 • 256 • 256 = 16 777 216 ≈ 16,7 млн.
В графических редакторах применяются и другие цветовые модели. Например, модель CMYK — она основана на цветах, получающихся при отражении белого света от предмета: бирюзовом (англ. Cyan), пурпурном (англ. Magenta), желтом (англ. Yellow). Эта модель применяется в полиграфии, где чаще всего употребляется черный цвет (ключевой, англ. Key).
Измерение объемов звуковой информации
Звук является непрерывным сигналом. Для использования звука в компьютере его преобразуют в цифровой сигнал. Это преобразование называется дискретизацией: для кодирования звука производят его измерение с определенной частотой (несколько раз в секунду). частота дискретизации и точность представления измеренных значений определяют качество представления звука в компьютере. Чем выше частота дискретизации и чем больше количество разных значений, которыми можно характеризовать сигнал, тем выше качество отображения звука.
Конспект урока по информатике «Объем памяти для хранения объектов».
Формула объема памяти в информатике
Расчёт информационного объёма текстового сообщения (количества информации, содержащейся в информационном сообщении) основан на подсчёте количества символов в этом сообщении, включая пробелы, и на определении информационного веса одного символа, который зависит от кодировки, используемой при передаче и хранении данного сообщения.
В традиционной кодировке (Windows, ASCII) для кодирования одного символа используется 1 байт (8 бит). Эта величина и является информационным весом одного символа. Такой 8-ми разрядный код позволяет закодировать 256 различных символов, т.к. 2 8 =256.
В настоящее время широкое распространение получил новый международный стандарт Unicode, который отводит на каждый символ два байта (16 бит). С его помощью можно закодировать 2 16 = 65536 различных символов.
Итак, для расчёта информационного объёма текстового сообщения используется формула
где Vtext – это информационный объём текстового сообщения, измеряющийся в байтах, килобайтах, мегабайтах; nсимв – количество символов в сообщении, i – информационный вес одного символа, который измеряется в битах на один символ; kсжатия – коэффициент сжатия данных, без сжатия он равен 1.
Информация в кодировке Unicode передается со скоростью 128 знаков в секунду в течение 32 минут. Какую часть дискеты ёмкостью 1,44Мб займёт переданная информация?
Дано: v = 128 символов/сек; t = 32 минуты=1920сек; i = 16 бит/символ
nсимв = v*t = 245760 символов V=nсимв*i = 245760*16 = 3932160 бит = 491520 байт = 480 Кб = 0,469Мб, что составляет 0,469Мб*100%/1,44Мб = 33% объёма дискеты
Ответ: 33% объёма дискеты будет занято переданным сообщением
Расчёт иформационного объема растрового изображения
Расчёт информационного объёма растрового графического изображения (количества информации, содержащейся в графическом изображении) основан на подсчёте количества пикселей в этом изображении и на определении глубины цвета (информационного веса одного пикселя).
Итак, для расчёта информационного объёма растрового графического изображения используется формула (3):
где Vpic – это информационный объём растрового графического изображения, измеряющийся в байтах, килобайтах, мегабайтах; K – количество пикселей (точек) в изображении, определяющееся разрешающей способностью носителя информации (экрана монитора, сканера, принтера); i – глубина цвета, которая измеряется в битах на один пиксель; kсжатия – коэффициент сжатия данных, без сжатия он равен 1.
1) В результате преобразования растрового графического изображения количество цветов уменьшилось с 256 до 16. Как при этом изменится объем видеопамяти, занимаемой изображением?
Дано: N1 = 256 цветов; N2 = 16 цветов;
N1 = 256 = 2 8 ; i1 = 8 бит/пиксель
N2 = 16 = 2 4 ; i2 = 4 бит/пиксель
Ответ: объём графического изображения уменьшится в два раза.
2) Сканируется цветное изображение стандартного размера А4 (21*29,7 см). Разрешающая способность сканера 1200dpi и глубина цвета 24 бита. Какой информационный объём будет иметь полученный графический файл?
Дано: i = 24 бита на пиксель; S = 21см*29,7 см D = 1200 dpi (точек на один дюйм)
Используем формулы V = K*i;
S = (21/2,54)*(29,7/2,54) = 8,3дюймов*11,7дюймов
K = 1200*8,3*1200*11,7 = 139210118 пикселей
V = 139210118*24 = 3341042842бита = 417630355байт = 407842Кб = 398Мб
Ответ: объём сканированного графического изображения равен 398 Мегабайт
Урок » Вычисление объема графического файла»
Качество кодирования изображения зависит от :
– размера точки – чем меньше её размер, тем больше количество точек в изображении
– количества цветов (палитры) – чем большее количество возможных состояний точки, тем качественнее изображение
Вычисление объема графического файла
Информации о состоянии каждого пикселя хранится в закодированном виде в памяти ПК. Из основной формулы информатики можно подсчитать объем памяти, необходимый для хранения одного пикселя:
где i – глубина кодирования (количество бит, занимаемых 1 пикселем), N – количество цветов (палитра)
Следовательно, для его хранения требуется 1 бит.
Количество отображаемых цветов N
Вычисление объема растрового изображения
Задача 1. Вычислить объем растрового черно-белого изображения размером 128 х 128.
2) V = K * i = ( 1 28 x 1 28 x 1 бит) / (8 * 1024) = 2 Кбайт.
Задача 2. Вычислить объем растрового изображения размером 128 х 128 и палитрой 256 цветов.
2) V = K * i = ( 1 28 x 1 28 x 8 бит) / (8 х 1024) = 16 Кбайт.
Задача 3. Рассчитайте объём видеопамяти, необходимой для хранения графического изображения, занимающего весь экран монитора с разрешением 640 х 480 и палитрой из 65 536 цветов.
2) V = K * i = ( 640 x 4 8 0 x 16 бит) / (8 х 1024) = 6 00 Кбайт.
Вычисление объема векторного изображения
Задача 3. Вычислить объем векторного изображения.
Решение: Векторное изображение формируется из примитивов и хранится в памяти в виде формулы:
RECTANGLE 1, 1, 100, 100, Red, Green
Подсчитаем количество символов в этой формуле: 36 символов (букв, цифр, знаков препинания и пробелов)
36 символов х 2 байта = 72 байт ( Unicode 1 символ – 1 байт)
Презентация к уроку
Загрузить презентацию (586,8 кБ)
Внимание! Предварительный просмотр слайдов используется исключительно в ознакомительных целях и может не давать представления о всех возможностях презентации. Если вас заинтересовала данная работа, пожалуйста, загрузите полную версию.
Обобщение и систематизация знаний, развитие приёмов умственной деятельности, памяти, внимания, умения сопоставлять, анализировать, делать выводы. Повышение информационной культуры учащихся, интереса к предмету “Информатика”, развитие познавательного интереса учащихся, ответственности, самостоятельности, самооценки, умения работать в коллективе.
Тип урока: Обобщение и систематизации знаний.
ТСО и наглядность: проектор, распечатки с заданиями, презентация по ходу урока.
Единицы измерения информации.
В 1 бит можно записать один двоичный символ.
1 байт = 8 бит.
В кодировке ASCII в один байт можно записать один 256 символьный код.
В кодировке UNICODE один 256 символьный код занимает в памяти два байта.
1 килобайт = 1024 байт
1 мегабайт = 1024 килобайт
1 гигабайт = 1024 мегабайт
1 терабайт = 1024 гигабайт
Формула Хартли 2 i = N где i– количество информации в битах, N – неопределенность
Таблица степеней двойки, которая показывает сколько информации можно закодировать с помощью i – бит
Чтобы вычислить информационный объем сообщения надо количество символов умножить на число бит, которое требуется для хранения одного символа
Например: двоичный текст 01010111 занимает в памяти 8 бит
Этот же текст в кодировке ASCII занимает 8 байт или 64 бита
Этот же текст в кодировке UNICODE занимает 16 байт или 128 бит.
Не забывайте, что пробелы надо тоже считать за символы поскольку они также набираются на клавиатуре и хранятся в памяти.
Мощность алфавита – это количество символов в алфавите или неопределенность из формулы Хартли.
Информационный вес одного символа – это значение i из формулы Хартли.
Отсюда можно сделать вывод, что не существует алфавита, состоящего из одного символа, поскольку тогда информационный вес этого символа был бы равен 0.
Ход урока
I. Организационный момент.
Проверка готовности учащихся к уроку. Проверка присутствующих. Сообщение темы и целей урока. Проверка домашнего задания.
II. Актуализация знаний.
Провожу проверку знаний, полученных на предыдущем уроке.
III. Применения и закрепления полученных знаний.
Обсуждаются темы из различных областей знаний, возможные для использования на уроке. Конкретизируется и выдается задание по теме урока с учетом воспитательных и развивающих целей урока.
(Решение задач. На доске проецируется слайд с заданием.)
1) На железнодорожном вокзале 8 путей отправления поездов. Вам сообщили, что ваш поезд прибывает на четвёртый путь. Сколько информации вы получили?
3) Загадано число из промежутка от 1 до 64. Какое количество информации необходимо для угадывания числа из этого промежутка?
4) Какой объём памяти на диске требуется для записи 5 страниц текста набранного на компьютере, если каждая страница содержит 30 строк по 70 символов в строке?
5) Сколько символов содержит сообщение, записанное с помощью 256 – символьного алфавита, если объём его составил 1/32 часть Мбайта?
6) Объём сообщения, содержащего 2048 символов, составил 1/512 часть Мбайта. Каков размер алфавита, с помощью которого записано сообщение?
7) За четверть ученик получил 100 оценок. Сообщение о том, что он получил пятёрку, несёт 2 бита информации. Сколько пятёрок ученик получил за четверть?
8) В корзине лежат 8 чёрных шаров и 24 белых. Сколько информации несёт сообщение о том, что достали чёрный шар?
9) В корзине лежат 8 чёрных шаров и 24 белых. Сколько информации несёт сообщение о том, что достали шар?
Самостоятельная работа. Ученики выполняют тестовые задания
Карточки с тестом на 2 варианта. С последующей взаимопроверкой и обсуждением.
1 вариант
Шахматная доска состоит 8 столбцов и 8 строк. Какое минимальное количество бит потребуется для кодирования координат одного шахматного поля?
Два текста содержат одинаковое количество символов. Первый текст составлен в алфавите мощностью 16 символов, а второй текст – в алфавите из 256 символов. Во сколько раз количество информации во втором тексте больше, чем в первом?
Какое минимальное количество бит потребуется для кодирования положительных чисел, меньших 60?
Двое играют в “крестики-нолики” на поле 4 на 4 клетки. Какое количество информации получил второй игрок, узнав ход первого игрока?
1) 1 бит; 2) 2 бита; 3) 4 бита; 4) 16 бит.
2 вариант
Мощность алфавита равна 256. Сколько Кбайт памяти потребуется для сохранения 160 страниц текста, содержащего в среднем 192 символа на каждой странице?
1) 10; 2) 20; 3) 30; 4) 40.
Мощность алфавита равна 64. Сколько Кбайт памяти потребуется, чтобы сохранить 128 страниц текста, содержащего в среднем 256 символов на каждой странице?
1) 8; 2) 12; 3) 24; 4) 36.
В коробке лежат 64 цветных карандаша. Сообщение о том, что достали белый карандаш, несет 4 бита информации. Сколько белых карандашей было в коробке?
За четверть Василий Пупкин получил 20 оценок. Сообщение о том, что он вчера получил четверку, несет 2 бита информации. Сколько четверок получил Василий за четверть?
IV. Подведение итогов урока. Выставление оценок на тестовую работу.
V. Домашнее задание.
Получают домашнее задание к следующему уроку.
Объем памяти как вычислить
Объем текстового файла
Кодирование информации в ПК заключается в том, что каждому символу ставится в соответствие уникальный двоичный код. Таким образом, человек различает символы по их начертаниям, а компьютер — по их кодам.
ЗАДАЧА 1. Считая, что каждый символ кодируется одним байтом, оцените информационный объем сообщения: Без труда не вытащишь рыбку из пруда!
РЕШЕНИЕ: Считаем количество символов в сообщении с учетом пробелов и знаков препинания. Получаем N =35. Т.к. один символ кодируется 1 байтом, то всё сообщение будет занимать в памяти компьютера 35 байт.
ЗАДАЧА 2. Оценить информационный объем сообщения в Unicode : Без труда не вытащишь рыбку из пруда!
РЕШЕНИЕ: Количество символов в сообщении 35. Т.к. в Unicode один символ кодируется 2 байтами, то всё сообщение будет занимать в памяти компьютера 70 байт.
ЗАДАЧА 3. Определить информационный объем книги (в Мбайтах) подготовленной на компьютере, состоящей из 150 страниц (каждая страница содержит 40 строк, 60 символов в каждой строке).
1) Подсчитаем количество символов в книге 40 * 60 * 150 = 360 000
2) Информационный объем книги составит 360 000 * 1 байт = 360 байт
3) Переведем в заданные единицы 360 000 байт / 1024 = 351,5625 Кбайт / 1024 = 0,34332275 Мбайт
Длина фразы составляет примерно 40 символов. Следователь но, ее объем можно приблизительно оценить в 40 х 2 = 80 байт. Такого варианта ответа нет, попробуем перевести результат в би ты: 80 байт х 8 = 640 бит. Наиболее близкое значение из пред ложенных — 592 бита. Заметим, что разница между 640 и 592 составляет всего 48/16 = 3 символа в заданной кодировке и его можно считать несущественным по сравнению с длиной строки.
З амечание: Подсчетом символов в строке можно убедиться, что их ровно 37 (включая точку и пробелы), поэтому оценка 592 бита = 74 байта, что соответствует ровно 37 символам в двухбайтовой кодировке, является точной.
Алфавит – это набор букв, символов препинания, цифр, пробел и т.п.
Полное число символов в алфавите называют мощностью алфавита
ЗАДАЧА 4. Два текста содержат одинаковое количество символов. Первый текст составлен в алфавите мощностью 16 символов. Второй текст в алфавите мощностью 256 символов. Во сколько раз количество информации во втором тексте больше, чем в первом?
Скорость передачи информации
Скорость передачи данных по каналам связи ограничена пропускной способностью канала. Пропускная способность канала связи изменяется как и скорость передачи данных в бит/сек (или кратностью этой величины Кбит/с, Мбит/с, байт/с, Кбайт/с, Мбайт/с).
Для вычислении объема информации V переданной по каналу связи с пропускной способностью а за время t используют формулу:
РЕШЕНИЕ: Найдем скорость ADSL соединения: 1000 Кбайт / 32 с. = 8000 Кбит / 32 с. = 250 Кбит/с.
Найдем время для передачи файла объемом 625 Кбайт: 625 Кбайт / 250 Кбит/с = 5000 Кбит / 250 Кбит/с. = 20 секунд.
При решении задач на определении скорости и времени передачи данных возникает трудность с большими числами (пример 3 Мб/с = 25 165 824 бит/с), поэтому проще работать со степенями двойки (пример 3 Мб/с = 3 * 2 10 * 2 10 * 2 3 = 3 * 2 23 бита/с).
РЕШЕНИЕ: Время передачи файла: 1 мин = 60 с = 4 * 15 с = 2 2 * 15 с
Скорость передачи файла: 512000 бит/c = 512 * 1000 бит/с = 2 9 * 125 * 8 бит/с (1 байт = 8 бит)
2 9 * 125 байт/с = 2 9 * 125 бит/с / 2 10 = 125 / 2 Кб/с
Чтобы найти время объем файла, нужно умножить время передачи на скорость передачи:
(2 2 * 15 с) * 125 / 2 Кб/с = 2 * 15 * 125 Кб = 3750 Кб
Определение объёма памяти
Одной из основных задач для операционной системы на этапе её загрузки и настройки является определение конфигурации компьютера, и в частности, выяснение объёма и диапазонов адресов имеющейся оперативной памяти.
Набор механизмов определения объёмов памяти развивался вместе с ПК, однако происходило это довольно хаотично, поэтому на сегодняшний день имеется целый ряд способов для решения данной задачи.
Содержание
История
Первые IBM PC обладали небольшим объемом памяти — от 16 или 32 килобайт и выше. Связано это было как с высокой стоимостью и низкой ёмкостью тогдашних микросхем ОЗУ, так и со скромными потребностями первых приложений, по большей части портированных с 8-разрядных персональных компьютеров.
Фирма IBM, разрабатывая свой ПК, предусмотрела для оперативной памяти диапазон адресов от нуля до 9FFFFh, то есть 640 килобайт — на рубеже 1970-80-х годов это казалось огромным объёмом, лишь мэйнфреймы и наиболее мощные мини-ЭВМ обладали большим размером ОЗУ. Впоследствии эту область памяти стали называть «базовой или стандартной памятью» (Conventional Memory или Base Memory).
Область адресов от A0000h до BFFFFh была отведена под видеопамять. Выше, от C0000h до FFFFFh, шла область ПЗУ различных устройств и BIOS. Как правило, почти все адреса в этих диапазонах были свободны.
С появлением микропроцессора 80286 физическое адресное пространство возросло до 16 Мбайт, однако доступна вся эта область была только в защищённом режиме. В то же время переключение процессора в защищённый режим делало его несовместимым с многочисленными программами реального режима, что предопределило его низкую популярность; фактически до самого появления микропроцессора 80386 защищённый режим использовался очень ограниченно.
При проектировании процессора 80286 инженерами Intel была допущена ошибка, из-за которой в реальном режиме не происходило «обрезание» адреса до 20 бит, и в результате появилась возможность адресации «лишней» памяти в области адресов 100000h-10FFEFh, общий объём которой составлял 64 Кбайта минус 16 байт. Этой областью, получившей название «Область верхней памяти» (HMA, High Memory Area), немедленно воспользовалась Microsoft: в неё помещалась изрядная часть MS DOS, оставляя свободной для нужд прикладных программ значительную часть базовой памяти. Ошибка же в процессоре была оставлена в целях совместимости с 80286, хотя её можно заблокировать с помощью специальной внешней схемы — вентиля адресной линии A20 (Gate A20), устанавливаемого на системных платах на тот случай, если потребуется обеспечить полную совместимость адресации с процессором 8086.
Микропроцессор 80386 расширил диапазон физических адресов до FFFFFFFFh (4 Гбайта), причём какую-то часть самых старших адресов занимает ПЗУ BIOS, отображающееся также частично и на старшие адреса младшего мегабайта.
Наконец, в старших моделях 32-разрядных микропроцессоров и во всех 64-разрядных (технологии AMD64 и Intel EM64T) объём физического адресного пространства превысил 4 Гбайта и составляет как минимум 64 Гбайта (гарантирована поддержка ширины физического адреса 36 бит, теоретический предел составляет 64 бита, а конкретная разрядность физического адреса зависит от модели процессора).
Подробнее о распределении адресного пространства памяти современных ПК можно прочитать в разделе Карта распределения памяти.
Способы определения объёма памяти
BIOS предосталяет программам ряд вызовов, предназначенных для определения объёма и местоположения доступной оперативной памяти. На современных компьютерах практическую ценность имеют только два из них — один для определения объёма стандартной памяти и другой для определения объёма и местоположения всей памяти вообще.
Определение объёма стандартной памяти
Хотя физически все 640 Кбайт теоретически возможной стандартной памяти на любом современном компьютере имеются, пользоваться всей этой памятью без ограничений нельзя.
Во-первых, младший килобайт (адреса от нуля до 3FFh включительно) используется под векторы прерываний реального режима процессора, поэтому изменять эту область можно лишь с определёнными предосторожностями, точно понимая, что и для чего делается. В частности, не следует переопределять без особой нужды векторы для прерываний от 0 до 31 включительно (00h-1Fh), поскольку они установлены BIOS’ом и обеспечивают вызов его функций.
Во-вторых, сразу за первым килобайтом начинается 256-байтовая область данных BIOS, к которой примыкает ещё одна 256-байтовая область, используемая отдельными функциями BIOS (адреса от 400h до 5FFh включительно). Изменение информации в этих областях может привести к неработоспособности тех или иных функций BIOS, поэтому без особой нужды эти адреса лучше не трогать вообще, хотя, если имеется понимание, для чего служат те или иные байты в этих областях, их можно изменять для достижения каких-то своих целей.
Наконец, все современные BIOS имеют область расширенных данных реального режима, находящуюся в старших адресах стандартной памяти. Например, BIOS системной платы TYAN Tiger i7505 (чипсет Intel E7505, поддерживающий два 32-разрядных процессора Xeon семейства Pentium 4, Socket 603/604) резервирует для своих нужд 7 Кбайт, и их изменение приведёт к неработоспособности BIOS.
Наличие области расширенных данных BIOS заставляет программы определять старший адрес стандартной памяти, доступный для свободного использования. С этой целью используется функция INT 12h, существовавшая ещё на первых ПК, на которых она сообщала объём физически имеющейся оперативной памяти.
Функция INT 12h не имеет входных параметров. При возврате из неё в AX будет находиться объём стандартной памяти в килобайтах, начиная с адреса 0. Например, на упомянутой выше системной плате TYAN Tiger i7505 после вызова INT 12h в AX будет десятичное значение 633. Это означает, что программа может использовать под свои нужды стандартную память от адреса 0 до адреса 9E3FFh включительно (об ограничениях на использование адресов от 0 до 5FFh говорилось выше; эти ограничения не зависят от модели материнской платы), а адреса от 9E400h до 9FFFFh используются BIOS для своих нужд, и программа обращаться к ним не должна.
Определение объёма и карты памяти всего ОЗУ
Наиболее правильным методом для определения объёма и адресов имеющейся оперативной памяти на сегодняшний день является следование спецификации ACPI, которой удовлетворяют все сколько-нибудь современные ПК (её первая версия появилась в 1996 году). ACPI предусматривает три способа решения данной задачи, первый из которых предназначен для обычных ПК, второй — для компьютеров, соответствующих стандарту UEFI, а третий — для машин, обеспечивающих «горячее» добавление и удаление модулей памяти. Ниже речь будет идти только о первом способе, поскольку именно он является наиболее распространённым и поддерживается всеми существующими ПК.
Для определения объёма и карты распределения памяти спецификация ACPI предусматривает использование функции E820h прерывания INT 15h. Каждый вызов этой функции возвращает описание одного диапазона адресов оперативной памяти. Чтобы получить полную карту распределения памяти, необходимо вызывать эту функцию многократно, пока не будет получено описание последнего диапазона.
На входе в функцию E820h прерывания INT 15h передаются следующие параметры:
На выходе функция возвращает следующие значения:
Формат описателя диапазона адресов, заполняемого функцией E820h прерывания INT 15h:
Смещение | Описание |
0 | Начальный адрес диапазона, младшие 32 бита |
4 | Начальный адрес диапазона, старшие 32 бита |
8 | Длина диапазона, младшие 32 бита |
12 | Длина диапазона, старшие 32 бита |
16 | Тип диапазона (описаны ниже) |
20 | Расширенные атрибуты диапазона (описаны ниже) |
Нынешняя версия спецификации ACPI предусматривает следующие типы диапазонов памяти:
Значение | Мнемоника | Описание |
1 | AddressRangeMemory | Доступная оперативная память |
2 | AddressRangeReserved | Зарезервированная область памяти; использоваться программами не должна |
3 | AddressRangeACPI | Область памяти, занятая таблицами ACPI. Может использоваться операционной системой после того, как информация в этих таблицах станет для неё ненужной |
4 | AddressRangeNVS | Зарезервированная область памяти; использоваться программами не должна. В отличие от диапазона типа 2, эта область памяти должна сохраняться при «отходе ко сну» и восстанавливаться при «пробуждении» |
5 | AddressRangeUnusable | Область памяти, содержащая ошибки. Использоваться не должна |
другое | Undefined | Зарезервировано для будущего использования. ОС должна рассматривать такие области как зарезервированные и не пытаться их использовать |
Двойное слово расширенных атрибутов имеет следующий формат:
>
Бит | Мнемоника | Описание |
0 | AddressRangeEnabled | Если содержит 0, ОС должна игнорировать этот описатель диапазона адресов (он содержит недействительную информацию) |
1 | AddressRangeNonVolatile | Если установлен, данный описатель соответствует устойчивой (non-volatile) памяти. Устойчивая память может потребовать уточнения своих характеристик, чтобы ОС могла понять, годится ли такая память для использования в качестве обычного ОЗУ |
2-31 | Reserved | Эти разряды зарезервированы для будущего использования |
При использовании функции E820h прерывания INT 15h следует учитывать следующие соглашения и ограничения:
Наконец, заметим, что в некоторых BIOS в этой функции встречались ошибки. Так, однажды, когда спецификация ACPI ещё только-только «поступала на вооружение», пришлось столкнуться с ситуацией, когда эта функция вообще не сообщила о наличии диапазона памяти от 0 до BFFFFh, хотя в соответствии со стандартом должна была бы описать его как доступный для использования (тип диапазона 1). Бывали случаи, когда эта функция не упоминала о диапазоне адресов, занимаемом APIC. Поэтому разработчикам ОС не следует полагаться на эту функцию для определения областей, назначение которых и так хорошо известно и не зависит от модели системной платы.
Альтернативные способы определения объёма памяти свыше 1 Мбайта
Хотя все сколько-нибудь современные ПК соответствуют стандарту ACPI, в «древних» моделях он не поддерживался. В такой ситуации определить объём ОЗУ свыше 1 Мбайта можно несколькими другими способами, кратко описанными ниже. Тем не менее, пользоваться ими следует только в том случае, если ACPI не поддерживается.
Заметим, что вызов перечисленных ниже функциях в ACPI-совместимых системах вполне возможен, однако они вернут объём памяти, в который не включены служебные области, отражённые функцией E820h как недоступные для использования операционной системой.
Функция 88h прерывания INT 15h сообщает объём имеющейся оперативной памяти свыше 1 Мбайта, т.е. начиная с адреса 100000h.
Эта функция обычно сообщает объём памяти, лежащей в диапазоне от 1 Мбайта до 16 Мбайт, то есть в области адресов от 10000h до FFFFFFh включительно. Чтобы узнать объём памяти свыше 16 Мбайт, можно воспользоваться функцией C7h прерывания INT 15h.
Функция C7h прерывания INT 15h появилась в компьютерах IBM PS/2 поздних серий и является необязательной. Она возвращает карту распределения памяти.
Формат карты памяти:
Смещение | Размер | Описание |
0 | WORD | Размер области, отведённой под карту памяти, не включая это слово |
2 | DWORD | Объём в килобайтах локальной памяти в пределах от 1 до 16 Мбайт |
6 | DWORD | Объём в килобайтах локальной памяти в пределах от 16 Мбайт до 4 Гбайт |
10 | DWORD | Объём в килобайтах системной памяти в пределах от 1 до 16 Мбайт |
14 | DWORD | Объём в килобайтах системной памяти в пределах от 16 Мбайт до 4 Гбайт |
18 | DWORD | Объём в килобайтах кэшируемой памяти в пределах от 1 до 16 Мбайт |
22 | DWORD | Объём в килобайтах кэшируемой памяти в пределах от 16 Мбайт до 4 Гбайт |
26 | DWORD | Объём в килобайтах перед началом несистемной памяти в пределах от 1 до 16 Мбайт |
30 | DWORD | Объём в килобайтах перед началом несистемной памяти в пределах от 16 Мбайт до 4 Гбайт |
34 | WORD | Начальный сегмент крупнейшего свободного блока в диапазоне адресов от C0000h до DFFFFh |
36 | WORD | Размер крупнейшего свободного блока |
38 | DWORD | Зарезервировано |
Функция E801h прерывания INT 15h является основной альтернативой описанному в предыдущем подразделе механизму определения памяти в ACPI-совместимых системах.
Некоторые BIOS возвращают в регистрах AX и BX нули; в этом случае следует пользоваться объёмом памяти, указанным в регистрах CX и DX.