Один символ текста занимает 16 бит пространства, отведенного на диске 256 байт

Обновлено: 21.11.2024

Каждый файл на компьютере использует определенное количество ресурсов при отправке через Интернет или сохранении. Помня о своих килобайтах (КБ) и мегабайтах (МБ), вы можете предотвратить проблемы и обеспечить более плавную работу в Интернете. Это руководство GreenNet поможет вам отличить китов от пескарей.

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

Программные пакеты, которые потребляют слишком много памяти и места на диске для выполнения своих функций, иногда называют "раздутыми программами", и аналогичную эстетику можно применить к медиафайлам. Например, размещение расшифровок на веб-сайте может помочь людям быстрее находить нужную им информацию, чем только аудио- или видеоинтервью. Точно так же вы можете подумать, будет ли людям, в том числе с нарушениями зрения, проще прочитать дату и время события из текстового сообщения электронной почты или открыть большой PDF-файл или файл изображения плаката. (Кстати, термин Microsoft «документ» для файлов так и не прижился. В данном контексте эти два слова являются синонимами.)

Итак, насколько большим является слишком большой? Очевидно, это зависит от контекста. Если вы подписываете отчет, который предназначен для печати, то вполне разумно отправить по электронной почте вложение в формате PDF размером 10 МБ нескольким людям с просьбой дать окончательные комментарии. Что было бы неразумно, так это отправить готовый 10-мегабайтный файл по электронной почте вашему списку из 2000 сторонников. Вместо этого вы можете создать версию PDF с более низким разрешением или даже текстовую версию, разместить ее на своем веб-сайте и отправить по электронной почте ссылку на файл, возможно, с небольшим указанием размера файла (например, «[1,2 МБ PDF] ") рядом со ссылкой для скачивания.

Зачем беспокоиться о размере файла, если человеку с высокоскоростным широкополосным доступом в Интернет требуется всего 15 секунд, чтобы загрузить файл размером 10 МБ?

Несмотря на то, что у некоторых людей загрузка может занять 15 секунд (например, широкополосный доступ GreenNet ADSL2+ со скоростью "до" 12 Мбит/с), 10 % домашних интернет-соединений в Великобритании по состоянию на 2009 год по-прежнему осуществляются с коммутируемым доступом, во многих других странах этот показатель выше. . Загрузка 10 МБ по телефонной линии может занять около часа. При более старых широкополосных соединениях или в сельской местности скорость загрузки может составлять 512 кбит/с, а передача по-прежнему занимает несколько минут. Даже при самом быстром широкополосном доступе скорость загрузки часто ограничена 256 кбит/с, поэтому, если вы ожидаете повторной передачи файла размером 10 МБ, это, скорее всего, будет медленнее, чем ожидалось.

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

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

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

Это все еще 15 секунд, даже если это фоновая загрузка. Некоторым из нас не терпится дождаться компьютера более полсекунды.

Что на самом деле означает каждая единица памяти компьютера?

Короче говоря, префиксы "кило-", "мега-", "гига-" и "тера-" аналогичны их использованию в любых других единицах измерения, таких как метры или ватты:

  • 1 Б = 1 байт;
  • 1 КБ = 1000 байт;
  • 1 МБ = 1000 КБ;
  • 1 ГБ = 1000 МБ или 1 000 000 000 байт.

(Чтобы запутать ситуацию, «1 КБ» или «1 КБ» используются многими компьютерщиками для обозначения 1024 байтов, что является удобным числом в двоичном формате, а память или диск часто выделяются операционными системами в единицах 1024.Чтобы избежать этой путаницы со стандартным научным использованием «мега-» и т. д., термины «кибибайт» (КиБ), «мебибайт» (МиБ), «гибибайт» (ГиБ) и «тебибайт» теперь рекомендуются для этих не- десятичные технические единицы. Вы все еще можете чувствовать себя обделенным, если купили флэш-накопитель на 4 ГБ, а его объем составляет всего 3,725 ГБ. Для простоты в этой статье мы будем использовать круглые тысячи и килобайты [кБ].)

Как посмотреть размеры файлов?

Размер файла или вложения обычно легко доступен, если он еще не заметен. В Windows щелчок правой кнопкой мыши на любом файле, папке или диске и выбор «Свойства» покажет размер. В окне Проводника вы можете выбрать «Подробности» в меню «Вид»; или в диалоговом окне открытия или сохранения файла есть кнопка «Просмотр», из которой вы также можете выбрать «Подробности». Если вы затем нажмете слово «Размер» в верхней части столбца, вы можете сгруппировать самые большие файлы в папке. В Mac OS X можно нажать Command+i, чтобы отобразить сведения об отдельном файле, или Command+Option+i, чтобы отобразить сведения обо всех выбранных элементах в окне Инспектора. Эквивалент представления «Подробности» для Mac — это представление «Список», а сочетание клавиш Command+J дает возможность «рассчитать все размеры» как папок, так и файлов.

Большинство почтовых программ, таких как Windows Mail или Thunderbird, всегда отображают размер вложений рядом с именем файла. В Thunderbird (и многих других программах) вы можете нажать кнопку столбцов в правом верхнем углу списка, чтобы добавить столбец, показывающий размер каждого элемента. FTP-программы, используемые для передачи файлов на веб-сайты, почти все показывают размер файлов по умолчанию, хотя обычно в байтах, поэтому вам нужно разбить эти большие числа на глаз на группы из трех цифр, чтобы увидеть, какие из них измеряются в B или kB, а который в МБ.

Таблица приблизительных размеров файлов

Трехминутный звук в формате MP3 с очень высоким битрейтом (256 кбит/с);
1 минута видео в низком разрешении или потокового видео с сайта обмена видео;
все опубликованные файлы кабельного шлюза Wikileaks к середине декабря 2010 г.;
20-страничный PDF-файл, который может включать неудачно выбранную обложку;
полное собрание сочинений Шекспира (без сжатия)

Изображения

Как вы уже поняли, одним из основных факторов, определяющих громоздкость файла, является качество или разрешение изображений. Изображение с разрешением 300 dpi (точек или пикселей на дюйм), добавленное в текстовый процессор или файл PDF, занимает примерно в четыре раза больше места, чем изображение с разрешением 150 dpi (поскольку разрешение применяется как по горизонтали, так и по вертикали). Теперь, если вам нужно поделиться изображением с кем-то в Интернете, либо на веб-сайте, либо по электронной почте, и вы не ожидаете, что он распечатает его, а также не ожидаете идеальной копии или увеличения для изучения мельчайших деталей, тогда это будет только быть показаны на экране. Так что стоит немного узнать о разрешениях экрана. Типичный плоский экран имеет ширину 1280 пикселей. Тем не менее, некоторые из них могут иметь меньшее или более низкое разрешение, и с учетом навигационных панелей и полей по бокам экрана, а также того, что веб-браузер посетителя может не занимать весь экран, вероятно, нет большого смысла в загрузке изображения, которое шире 800 пикселей. Все, что больше, и зритель может видеть только верхний левый угол изображения и должен прокручивать, чтобы увидеть остальное.

Отсканированные или цифровые фотографии могут быть в 20 раз больше, но при этом не казаться более четкими для получателя. Поэтому, если у вас есть такое изображение, вам нужно будет изменить его размер или уменьшить перед загрузкой или публикацией. Распространенной ошибкой при создании веб-страницы является попытка изменить размер изображения на странице путем изменения свойств элемента изображения. Некоторые системы управления контентом, такие как Drupal, могут включать в себя модуль изображения, который автоматически создает масштабированную копию изображения указанного вами размера, но если вы редактируете страницы в веб-программах, таких как Dreamweaver или KompoZer, шансы вы вынуждаете каждого посетителя веб-сайта загружать слишком много информации, а затем заставляете их компьютер работать очень усердно, выполняя уменьшение масштаба. Поэтому лучше стараться, чтобы фотоизображения, даже баннеры, не превышали 800 пикселей в поперечнике и, возможно, не превышали 50 КБ. Любое программное обеспечение для редактирования изображений, такое как GIMP с открытым исходным кодом, позволяет легко создавать файлы меньшего размера. Просто откройте большой файл, выберите функцию "размер изображения" или "масштабирование изображения", выберите нужную ширину, помня, что 800 пикселей часто соответствует полной ширине, и сохраните файл в подходящем формате.

Еще одна вещь, которую следует учитывать при работе с изображениями, – это различные преимущества различных видов сжатия и форматов файлов. Как упоминалось выше, файлы JPEG (также называемые файлами .jpg, потому что Windows когда-то была ограничена 3-символьными расширениями) чаще всего используются для фотографии, а формат JPEG используется почти во всех цифровых камерах. Они сохраняют полный диапазон цветов, но теряют определенное количество мелких деталей; существует баланс между размером файла и допустимым количеством искажений. Высокосжатый JPEG может иметь эффект интерференции Фурье, но большинство людей этого не заметят.В основном вам понадобится качество JPEG среднего уровня около 50 (из 100). Другими основными форматами, используемыми в Интернете, являются PNG или более старый GIF, и это форматы «без потерь», которые не подходят для фотографий или полноцветных сканирований произведений искусства. Однако для таких изображений, как штриховые рисунки или логотипы, которые были созданы на компьютере, выбор PNG позволяет очень эффективно сжимать области плоского цвета и сохранять четкие края дизайна, которые потеряет JPEG. PNG также имеет тенденцию использоваться для небольших изображений, поскольку для больших изображений гораздо важнее уменьшение размера за счет использования JPEG. Следующие изображения иллюстрируют, почему JPG не используется для небольших файлов с небольшим количеством цветов:

Означает ли это, что 1 байт может содержать только один символ? Например:

и если у tiny int есть диапазон от 0 до 255, означает ли это, что его можно хранить с 255 символами?

что хранится

какой будет диапазон 0-10

Байт — это наименьшая единица данных в системе. Как правило, 1 байт = 1 символу ASCII. 2 байта = 1 символ UTF-16. Байт без знака может устареть от значений 0–255.

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

4 ответа 4

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

Размер Tiny Int = 1 байт (от -128 до 127)

Int = 4 байта (от -2147483648 до 2147483647)

Да, 1 байт кодирует символ (включая пробелы и т. д.) из набора ASCII. Однако в единицах данных, предназначенных для кодировки символов, на практике может и часто требуется до 4 байтов. Это потому, что английский не единственный набор символов. И даже в англоязычных документах часто представлены другие языки и символы. Их очень много, и есть очень много других наборов кодировок, о которых вы, возможно, слышали, например. БИГ-5, УТФ-8, УТФ-32. Большинство компьютеров в настоящее время допускают такое использование и обеспечивают наименьшее количество искаженного текста (что обычно означает отсутствующий набор кодировок). 4 байта достаточно, чтобы покрыть эти возможные кодировки. I байт на символ не позволяет этого, и при использовании он часто превышает 4 байта на возможный символ для всех кодировок, а не только для ASCII. Окончательному символу может потребоваться только байт для работы или представления на экране, но для этого требуется, чтобы 4 байта были расположены в довольно обширной глобальной кодировке «работает».

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

2^8 = 256 символов. Символ в двоичном формате — это последовательность из 8 (0 или 1).

Я считаю, что существует путаница, что 1 байт может содержать 256 символов - это не может, а скорее, что 1 символ может иметь 256 опций/вариаций/символов (a,b,c или. ) - если только символ использует 1 байт. Если для этого требуется больше байтов, таких как юникод, тогда это позволит использовать больше параметров символов, что, конечно же, требует юникод. Точно так же, как 1 байт может содержать 256 «параметров», вы можете хранить любое число от 0 до 255 в 1 байте как одно число, но это не означает, что вы получите 255 различных чисел.

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

Числовые типы данных

Тип данныхТребования к хранилищу
TINYINT1 байт
SMALLINT2 байта
MEDIUMINT3 байта
INT4 байта
BIGINT8 байт
FLOAT(p)4 байта, если p M – объявленная длина столбца (в символах или байтах), а len – фактическая длина значения в байтах.

В некоторых наборах символов не все символы занимают одинаковое количество байтов. utf8 кодирует символы от одного до трех байтов на символ, а utf8mb4 требует от одного до четырех байтов на символ.

При использовании поля с атрибутом COMPRESSED 1 байт резервируется для метаданных. Например, VARCHAR(255) будет использовать +2 байта вместо +1.

Примеры

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

ЗначениеCHAR(2)Требуется объем памятиVARCHAR(2)Требуется объем памяти
''' '2 байта'' 1 байт
'1''1 '2 байта'1'2 байта
'12''12'2 байта '12'3 байта

Типы данных даты и времени

Микросекунды

В MariaDB 5.3 и MySQL 5.6 появились микросекунды. Базовые реализации хранилища были разными, но начиная с версии MariaDB 10.1, MariaDB по умолчанию использует формат MySQL (с помощью переменной mysql56_temporal_format). Микросекунды имеют следующие дополнительные требования к хранению:

MySQL 5.6+ и MariaDB 10.1+

Тип данныхТребования к хранилищу
DATE3 байта
TIME3 байта
DATETIME8 байтов
TIMESTAMP4 байта
YEAR1 байт
< /tr>
ТочностьТребования к хранилищу
00 байт
1,21 байт
3,42 байта
5,63 байта

MariaDB 5.3 – MariaDB 10.0

ТочностьТребования к хранилищу
00 байт
1,21 байт
3,4,52 байта
63 байта

Комментарии

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

Проблема 2

  1. Сколько страниц находится в виртуальном адресном пространстве?
  2. Каков максимальный размер адресуемой физической памяти в этой системе?
  3. Если средний размер процесса составляет 8 ГБ, вы бы использовали одноуровневую, двухуровневую или трехуровневую таблицу страниц? Почему?
  4. Вычислите средний размер таблицы страниц в ответе на вопрос 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
Как легко заметить, двухуровневая и трехуровневая подкачка требуют гораздо меньше места, чем подкачка уровня 1. схема. И поскольку наше адресное пространство недостаточно велико, 3-уровневая подкачка работает не лучше, чем 2-уровневая подкачка. Из-за стоимости доступа к памяти гораздо логичнее выбрать двухуровневую схему подкачки для этого процесса.

Проблема 3

  1. Каков размер страницы в такой системе? Объясните свой ответ (число без обоснования не будет засчитано).

    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.

Читайте также: