Текст занимает 128 бит в памяти, определяя его информационный размер в байтах
Обновлено: 20.11.2024
Проблема 2
- Сколько страниц находится в виртуальном адресном пространстве?
- Каков максимальный размер адресуемой физической памяти в этой системе?
- Если средний размер процесса составляет 8 ГБ, вы бы использовали одноуровневую, двухуровневую или трехуровневую таблицу страниц? Почему?
- Вычислите средний размер таблицы страниц в ответе на вопрос 3 выше.
-
36-битный адрес может адресовать 2 ^ 36 байтов в машине с байтовой адресацией. Поскольку размер страницы составляет 8 КБ (2^13), количество адресуемых страниц равно 2^36 / >2^13 = 2^23
Чтобы принять решение, нам необходимо проанализировать требования к памяти и времени для схем подкачки. В приведенных ниже расчетах учитывается средний размер процесса.
Пейджинг 1 уровня
Поскольку у нас есть 2^23 страницы в каждом виртуальном адресном пространстве, и мы используем 4 байта на запись в таблице страниц, размер таблицы страниц будет 2^23 * 2^2 = 2 ^ 25. Это 1/256 собственного пространства памяти процесса, так что это довольно дорого. (32 МБ)
Пейджинг 2 уровня
Адрес будет разделен на 12 | 11 | 13, так как мы хотим, чтобы страницы таблицы страниц умещались на одной странице, и мы также хотим разделить биты примерно поровну.
Поскольку размер процесса составляет 8 ГБ = 2^33 Б, я предполагаю, что это означает, что общий размер всех отдельных страниц, к которым обращается процесс, составляет 2^33 Б. Следовательно, этот процесс обращается к 2^33 / 2^13 = 2^20 страниц. Нижний уровень таблицы страниц содержит 2^20 ссылок. Мы знаем, что размер каждого фрагмента нижнего уровня таблицы страниц составляет 2 ^ 11 записей. Таким образом, нам нужно 2^20 / 2^11 = 2^9 фрагментов нижнего уровня.
Тогда общий размер таблицы страниц равен:
//размер внешней таблицы страниц | //общий размер внутренних страниц< /td> | |
1 * 2^12 * 4 | + 2^9 * 2^11 * 4 | = 2^20 * ( 2^-6 + 4) ~4 МБ |
3 уровня пейджинга
Для 3 уровня пейджинга мы можем разделить адрес следующим образом:
8 | 8 | 7 | 13
Опять же, используя те же рассуждения, что и выше, нам нужно 2 ^ 20/2 ^ 7 = 2 ^ 13 фрагментов таблицы страниц уровня 3. Каждый фрагмент таблицы страниц уровня 2 ссылается на 2^8 фрагментов таблицы страниц уровня 3. Итак, нам нужно 2^13/2^8 = 2^5 таблиц уровня 2. И, конечно же, одна таблица уровня 1.
Общий размер таблицы страниц равен:
//размер внешней таблицы страниц | //общий размер таблиц уровня 2 | //общий размер самых внутренних таблиц | |
1 * 2^8 * 4 | 2^5 * 2^8 *4 | 2^13 * 2^7 * 4 | ~4MB |
Проблема 3
- Каков размер страницы в такой системе? Объясните свой ответ (число без обоснования не будет засчитано).
-
4К. Последние 12 бит виртуального адреса представляют собой смещение на странице, которое варьируется от 0 до 4095. Таким образом, размер страницы равен 4096, то есть 4 КБ.
Поскольку физические адреса имеют длину 44 бита, а размер страницы — 4 КБ, номер кадра страницы занимает 32 бита. Принимая во внимание 4 защитных бита, каждая запись таблицы страниц уровня 3 занимает (32+4) = 36 бит. Округление для выравнивания записей по байтам (словам) приведет к тому, что каждая запись будет потреблять 40 (64) бит или 5 (8) байтов. Для таблицы из 256 записей нам потребуется 1280 (2048) байт.
Таблица страниц верхнего уровня не должна предполагать, что таблицы страниц 2-го уровня выровнены по страницам. Итак, мы храним там полные физические адреса. К счастью, нам не нужны управляющие биты. Таким образом, каждая запись занимает не менее 44 бит (6 байтов для выравнивания по байтам, 8 байтов для выравнивания по словам). Таким образом, каждая таблица страниц верхнего уровня имеет размер 256*6 = 1536 байт (256 * 8 = 2048 байт).
Попытка воспользоваться выравниванием по 256 элементам для уменьшения размера элемента, вероятно, не стоит усилий. Сделать это было бы сложно; вам нужно будет написать новый распределитель памяти, который гарантирует такое выравнивание. Кроме того, мы не можем полностью уместить таблицу в выровненную область размером 1024 байта (44-10 = 34 бита на адрес, что потребовало бы более 4 байтов на запись), и округление размера до следующей степени двойки не спасло бы использовать любой размер, а не просто хранить указатели и использовать обычный распределитель.
Аналогично каждая запись в таблице страниц 2-го уровня представляет собой 44-битный физический указатель, 6 байтов (8 байтов) при выравнивании по байтам (словам). Таким образом, таблица с 16 элементами занимает 96 (128) байт. Таким образом, требуемое пространство составляет 1536 (2048) байт для таблицы страниц верхнего уровня + 96 (128) байт для одной таблицы страниц второго уровня + 1280 (2048) байт для одной таблицы страниц третьего уровня = 2912 (4224) байт. Поскольку процесс может уместиться ровно на 16 страницах, внутренняя фрагментация не тратит память впустую.
Таким образом, требуемое пространство составляет 1536 (2048) байт для таблицы страниц верхнего уровня + 3 * 96 (3 * 128) байт для 3 таблиц страниц второго уровня + 3 * 1280 (3 * 2048) для 3 таблиц третьего уровня. таблица страниц = 5664 (8576) байт.
Проблема 4
В соответствии с философией проектирования процессоров RISC, заключающейся в перемещении аппаратной функциональности в программное обеспечение, вы видите предложение о том, чтобы разработчики процессоров удаляли MMU (блок управления памятью) из аппаратного обеспечения. Чтобы заменить MMU, компиляторы генерируют так называемый позиционно-независимый код (PIC). PIC может быть загружен и запущен по любому адресу без выполнения какого-либо перемещения. Если предположить, что код PIC работает так же быстро, как и код без PIC, в чем будет недостаток этой схемы по сравнению со страничным MMU, используемым в современных микропроцессорах?
Решение:
Нужно решение.
Проблема 5
Опишите преимущества использования MMU, включающего сегментацию и пейджинг, по сравнению с теми, которые используют только пейджинг или только сегментацию. Представьте свой ответ в виде отдельных списков преимуществ перед каждой из чистых схем.
Решение:
Нужно решение.
Проблема 6
Рассмотрите следующий фрагмент кода, который умножает две матрицы: Предположим, что двоичный файл для выполнения этой функции помещается на одной странице, и стек также помещается на одной странице. Предположим далее, что для хранения целого числа требуется 4 байта. Вычислите количество промахов TLB, если размер страницы равен 4096, а TLB имеет 8 записей с замещающей политикой, состоящей из LRU.
Решение:
1024*(2+1024*1024) = 1073743872
Двоичный файл и стек умещаются на одной странице, поэтому каждый занимает одну запись в TLB. Пока функция работает, она постоянно обращается к двоичной странице и странице стека. Таким образом, две записи TLB для этих двух страниц будут все время находиться в TLB, а данные могут занимать только оставшиеся 6 записей TLB.
Мы предполагаем, что две записи уже находятся в TLB, когда функция начинает выполняться. Затем нам нужно рассмотреть только эти страницы данных.
Поскольку для хранения целого числа требуется 4 байта, а размер страницы составляет 4096 байт, для каждого массива требуется 1024 страницы. Предположим, что каждая строка массива хранится на одной странице. Тогда эти страницы можно представить в виде a[0..1023], b[0..1023], c[0..1023]: Страница a[0] содержит элементы a[0][0..1023], страница a[1] содержит элементы a[1][0..1023] и т. д.
Для фиксированного значения i, скажем, 0, функция выполняет цикл по j и k, у нас есть следующая ссылочная строка:
Для ссылочной строки (всего 1024 строки) a[0], c[0] приведут к двум промахам TLB. Поскольку доступ к a[0] и b[0] будет осуществляться через каждые четыре обращения к памяти, эти две страницы не будут заменены алгоритмом LRU. Для каждой страницы в b[0..1023] каждый раз при доступе к ней будет происходить один промах TLB. Таким образом, количество промахов TLB для второго внутреннего цикла равно
2+1024*1024 = 1048578.
Хотя точное количество текстовых данных в килобайте (КБ) или мегабайте (МБ) может варьироваться в зависимости от характера документа, килобайт может содержать около половины страницы текста, а мегабайт — около 500 страниц. текста. Текст в цифровом файле преобразуется в двоичные данные, которые обозначают буквы и цифры с помощью выражений из единиц и нулей. Файлы большего размера содержат больше этих данных, что, в свою очередь, эквивалентно большему количеству типизированной информации.
Один мегабайт может содержать около 500 страниц текста, что сопоставимо с одной толстой книгой.
Двоичные файлы и биты
Большинство современных компьютеров представляют собой двоичные системы и работают с битами данных. Бит — это самая основная единица информации, которая может иметь два состояния: обычно указывается как 0 или 1. Длинные строки этих битов могут представлять большинство типов информации, включая текст, изображения и музыку. Однако чистая двоичная информация бесполезна для людей, которые не научились читать и писать в двоичном формате. Двоичное число 11000101110, например, эквивалентно 1582.
Планшетный компьютер может иметь гигабайты памяти, способные хранить тысячи книг.
Группировка битов в байты
Чтобы сделать данные более доступными и упрощенными, группы битов объединяются в байты. один байт состоит из 8 бит. Набор из 8 битов был выбран потому, что он обеспечивает 256 возможных вариантов, что достаточно для указания букв, цифр, пробелов, знаков препинания и других расширенных символов.Само это предложение, например, состоит из 125 байтов, потому что в нем 125 букв, цифр, пробелов и знаков препинания. Имейте в виду, что это представляет собой только чистый текст; некоторые текстовые редакторы включают в себя другие типы данных форматирования, поэтому размер файла становится больше, чем просто количество символов в файле.
Большинство компакт-дисков содержат около 750 мегабайт данных.
Количество текста
Килобайт — это 1 024 байта, часто для простоты округляемых до 1 000; в то время как мегабайт составляет 1 048 576 байтов, или около 1 миллиона. Подсчитано, что килобайт может вместить около половины машинописной страницы. Поэтому для одной полной страницы требуется около 2 КБ. На следующей диаграмме показано количество байтов в общепринятых терминах, таких как килобайты и мегабайты, а также объем текста, который может храниться в каждом из них.
Имя | Количество байтов | Количество текста td> |
Килобайт (КБ) | 2 10 или 1024 | 1/2 страницы |
2 20 или 1 048 576 | 500 страниц или 1 толстая книга | |
Гигабайт (ГБ) td> | 2 30 или 1 073 741 824 | 500 000 страниц или 1000 толстых книг |
Терабайт (ТБ) | 2 40 или 1 099 511 627 776 | 1 миллион толстых книг |
Петабайт | 2 50 или 1 125 899 906 842 624 | 180 библиотек Конгресса< /td> |
Exabyte | 2 60 или 1 152 921 504 606 846 976 | 180 тысяч библиотек Конгресса |
Zettabyte | 2 70 или 1 180 591 620 717 411 303 424 | 180 миллионов библиотек Конгресса |
Yottabyte | 2 80 или 1 208 925 819 614 629 174 706 176 | 180 миллиардов библиотек Конгресса |
Библиотека Конгресса
Библиотека Конгресса в Вашингтоне, округ Колумбия, считается крупнейшей в мире библиотекой с более чем 28 миллионами томов. Цифры, указанные в приведенной выше таблице, основаны на предположении, что средняя книга состоит из 200 страниц. Это означает, что для хранения цифровой резервной копии всей Библиотеки Конгресса потребуется около 28 ТБ дискового пространства.
Портативное хранилище мультимедиа
Большинство компакт-дисков (CD) содержат около 750 МБ, что примерно эквивалентно 375 000 страниц текста. Цифровые универсальные диски (DVD) могут хранить 4,7 ГБ или 2,3 миллиона страниц. Диски Blu-Ray могут содержать 27 ГБ или 13,5 миллионов страниц, что примерно эквивалентно тексту, содержащемуся в 67 500 книгах. Такие устройства, как электронные книги и планшетные компьютеры, часто имеют многогигабайтную память, что делает их идеальными для хранения тысяч книг.
Гигабайт может содержать информацию, эквивалентную примерно 1000 толстых книг.
Читайте также:
- Какое сетевое устройство можно использовать для предотвращения конфликтов в сети Ethernet
- Как подключить onyx boox к компьютеру
- Как области действия директивы определяются в файле конфигурации веб-сервера
- Как узнать, какой рейд-массив используется на сервере
- Компьютерный шутер от первого или третьего лица 5 букв