На жестком диске хранится 20 файлов элементы массива содержат размеры этих файлов в байтах
Все программы и данные хранятся в долговременной (внешней) памяти компьютера в виде файлов.
Файл- это определенное количество информации (программа или данные), имеющее имя и хранящееся в долговременной (внешней) памяти.
Имя файла.Имя файла состоит из двух частей, разделенных точкой: собственно имя файла и расширение, определяющее его тип (программа, данные и так далее). Собственно имя файлу дает пользователь, а тип файла обычно задается программой автоматически при его создании.
Таблица 1. Типы файлов и расширений
Тип файла | Расширения |
Программы | exe, com |
Текстовые файлы | txt, doc |
Графические файлы | bmp, д1Т,]рдидр |
Звуковые файлы | wav, mid |
Видеофайлы | avi |
Программы на языках программирования | bas, pas и др |
Файловая система.На каждом носителе информации (гибком, жестком или лазерном диске) может храниться большое количество файлов. Порядок хранения файлов на диске определяется используемой файловой системой.
Каждый диск разбивается на две области: область хранения файлов и каталог. Каталог содержит имя файла и указание на начало его размещения на диске.
Для дисков с небольшим количеством файлов (до нескольких десятков) может использоваться одноуровневая файловая система, когда каталог (оглавление диска) представляет собой линейную последовательность имен файлов. Такой каталог можно сравнить с оглавлением детской книжки, которое содержит только названия отдельных рассказов.
Таблица 2.Одноуровневый каталог
Имя файла | Номер начального сектора |
Файл_1 | |
Файл_2 | |
……. | |
Файл_112 |
Если на диске хранятся сотни и тысячи файлов, то для удобства поиска используется многоуровневая иерархическая файловая система, которая имеет древовидную структуру.
Начальный, корневой каталог содержит вложенные каталоги 1-го уровня, в свою очередь, каждый из последних может содержать вложенные каталоги 2-го уровня и так далее. Необходимо отметить, что в каталогах всех уровней могут храниться и файлы.
Файловая система— это система хранения файлов и организации каталогов.
Путь к файлу.Путь к файлу вместе с именем файла называют иногда полным именем файла.
Операции над файлами.В процессе работы на компьютере наиболее часто над файлами производятся следующие операции:
• копирование (копия файла помещается в другой каталог);
• перемещение (сам файл перемещается в другой каталог);
• удаление (запись о файле удаляется из каталога);
• переименование (изменяется имя файла).
Форматирование дисков.Для того чтобы на диске можно было хранить информацию, диск должен быть отформатирован, то есть должна быть создана физическая и логическая структура диска.
Формирование физической структуры диска состоит в создании на диске концентрических дорожек, которые, в свою очередь, делятся на секторы. Для этого в процессе форматирования магнитная головка дисковода расставляет в определенных местах диска метки дорожек и секторов.
После форматирования гибкого диска 3,5" его параметры будут следующими:
• информационная емкость сектора — 512 байтов;
• количество секторов на дорожке — 18;
• дорожек на одной стороне — 80;
Логическая структура гибких дисков. Логическая структура магнитного диска представляет собой совокупность секторов (емкостью 512 байтов), каждый из которых имеет свой порядковый номер (например, 100). Сектора нумеруются в линейной последовательности от первого сектора нулевой дорожки до последнего сектора последней дорожки.
На гибком диске минимальным адресуемым элементом является сектор.
При записи файла на диск будет занято всегда целое количество секторов, соответственно минимальный размер файла — это размер одного сектора, а максимальный соответствует общему количеству секторов на диске.
Файл записывается в произвольные свободные сектора, которые могут находиться на различных дорожках. Например, Файл_1 объемом 2 Кбайта может занимать сектора 34, 35 и 47, 48, а Файл_2 объемом 1 Кбайт — сектора 36 и 49.
Таблица 3. Логическая структура гибкого диска формата 3,5" (2-я сторона)
№ дорожки | № сектора |
…………………. |
Для того чтобы можно было найти файл по его имени, на диске имеется каталог, представляющий собой базу данных.
Запись о файле содержит имя файла, адрес первого сектора, с которого начинается файл, объем файла, а также дату и время его создания.
Таблица 4. Структура записей в каталоге
Имя файла | Адрес первого сектора | Объем файла, Кбайт | Дата создания | Время создания |
Файл 1 | 14 01 99 | 14 29 | ||
Файл 2 | 14 01 99 | 14 45 |
Полная информация о секторах, которые занимают файлы, содержится в таблице размещения файлов (FAT — File Allocation Table). Количество ячеек FAT соответствует количеству секторов на диске, а значениями ячеек являются цепочки размещения файлов, то есть последовательности адресов секторов, в которых хранятся файлы.
Для размещения каталога — базы данных и таблицы FAT на гибком диске отводятся секторы со 2 по 33. Первый сектор отводится для размещения загрузочной записи операционной системы. Сами файлы могут быть записаны, начиная с 34 сектора.
Виды форматирования. Существуют два различных вида форматирования дисков: полное и быстрое форматирование. Полное форматирование включает в себя как физическое форматирование (проверку качества магнитного покрытия дискеты и ее разметку на дорожки и секторы), так и логическое форматирование (создание каталога и таблицы размещения файлов). После полного форматирования вся хранившаяся на диске информация будет уничтожена.
Быстрое форматирование производит лишь очистку корневого каталога и таблицы размещения файлов. Информация, то есть сами файлы, сохраняется и в принципе возможно восстановление файловой системы.
Информационная емкость гибких дисков. Рассмотрим различие между емкостью неформатированного гибкого магнитного диска, его информационной емкостью после форматирования и информационной емкостью, доступной для записи данных.
Заявленная емкость неформатированного гибкого магнитного диска формата 3,5" составляет 1,44 Мбайт.
Рассчитаем общую информационную емкость отформатированного гибкого диска:
Количество секторов: N = 18 х 80 х 2 = 2880.
512 байт х N = 1 474 560 байт = 1 440 Кбайт -= 1,40625 Мбайт.
Однако для записи данных доступно только 2847 секторов, то есть информационная емкость, доступная для записи данных, составляет:
512 байт х 2847 = 1 457 664 байт = 1423,5 Кбайт = 1,39 Мбайт.
Логическая структура жестких дисков. Логическая структура жестких дисков несколько отличается от логической структуры гибких дисков. Минимальным адресуемым элементом жесткого диска является кластер, который может включать в себя несколько секторов. Размер кластера зависит от типа используемой таблицы FAT и от емкости жесткого диска.
На жестком диске минимальным адресуемым элементом является кластер, который содержит не сколько секторов.
Таблица FAT16 может адресовать 2 16 — 65 536 кластеров. Для дисков большой емкости размер кластера оказывается слишком большим, так как информационная емкость жестких дисков может достигать 150 Гбайт.
Например, для диска объемом 40 Гбайт размер кластера будет равен:
40 Гбайт/65536 = 655 360 байт = 640 Кбайт.
Файлу всегда выделяется целое число кластеров. При размещении на жестком диске большого количества небольших по размеру файлов они будут занимать кластеры лишь частично, что приведет к большим потерям свободного дискового пространства.
Эта проблема частично решается с помощью использования таблицы FAT32, в которой объем кластера принят равным 8 секторам или 4 килобайтам для диска любого объема.
В целях более надежного сохранения информации о размещении файлов на диске хранятся две идентичные копии таблицы FAT.
Преобразование FAT16 в FAT32 можно осуществить с помощью служебной программы Преобразование диска в FAT32, которая входит в состав Windows.
Мы рассмотрели файловую систему, имеющую название FAT, однако в последнее время все большую популярность приобретает файловая система NTFS (New Technology File System - файловая система операционных систем семейства Windows NT), которая, в частности, используется в Windows NT и Windows ХР.
Максимальный размер раздела NTFS в данный момент ограничен лишь размерами «жестких» дисков. Как и любая другая система, NTFS делит все полезное место на кластеры — блоки данных, используемые единовременно. NTFS поддерживает почти любые размеры кластеров — от 512 байт до 64 Кбайт, неким стандартом же считается кластер размером 4 Кбайт. Диск NTFS условно делится на две части. Первые 12 % диска отводятся под так называемую зону MFT (Master File Table). Это БД, представляющая собой общую файловую таблицу, строки которой соответствуют файлам тома NTFS, а столбцы - атрибутам файлов. Запись каких-либо других данных в эту область невозможна. Остальные 88 % диска является обычным пространством для хранения файлов.
Зона MFT поделена на записи фиксированного размера (обычно 1 Кбайт), и каждая запись соответствует какому-либо файлу (в общем смысле этого слова). Первые 16 файлов носят служебный характер и недоступны ОС — они называются метафайлами, причем самый первый метафайл - сам MFT. Эти первые 16 элементов MFT - единственная часть диска, имеющая фиксированное положение. Интересно, что вторая копия первых трех записей для надежности — они очень важны - хранится ровно посередине диска. Остальной MFT-файл может располагаться, как и любой другой файл, в произвольных местах диска — восстановить его положение можно с помощью его самого, «зацепившись» за самую основу первый элемент MFT.
Дефрагментация дисков.Замедление скорости обмена данными может происходить в результате фрагментации файлов. Фрагментация файлов (фрагменты файлов хранятся в различных, удаленных друг от друга кластерах) возрастает с течением времени, в процессе удаления одних файлов и записи других.
Так как на диске могут храниться сотни и тысячи файлов в сотнях тысяч кластеров, то фрагментированность файлов будет существенно замедлять доступ к ним (магнитным головкам придется постоянно перемещаться с дорожки на дорожку) и в конечном итоге приводить к преждевременному износу жесткого диска. Рекомендуется периодически проводить дефрагментацию диска, в процессе которой файлы записываются в кластеры, последовательно идущие друг за другом.
Program n1;
var a: array[1..20] of integer;
i,k: integer;
begin
randomize;
for i:=1 to 20 do a[i]:=random(15);
for i:=1 to 4 do write(a[i],' ');
for i:=6 to 20 do write(a[i],' ');
writeln;
writeln(a[5]);
end.
begin
var a:=ArrRandom(20,-50,50); a.Println;
Writeln('a[5]=',a[4])
end.
Пример
-11 16 -26 -2 23 0 13 34 49 50 -40 20 -50 18 24 -5 -42 38 27 -23
a[5]=23
Если пятый элемент в первой строке надо при выводе пропустить, то так:
begin
var a:=ArrRandom(20,-50,50); (a[:4]+a[5:]).Println;
Writeln('a[5]=',a[4])
end.
Пример
21 39 45 -22 -17 11 45 -26 8 46 23 12 25 36 -46 -39 -40 49 40
a[5]=-32
Новые вопросы в Информатика
Что будет находиться в третьей строке после выполнения следующих действий: a) Выделить первый фрагмент b) Вырезать первый фрагмент c) Переместить курс … ор вниз на третью строку d) Выделить второй фрагмент e) Вставить фрагмент Выберите один ответ: Второй фрагмент Первый фрагмент Буфер обмена будет пуст Первый и второй фрагмент
Подскажите как убрать это , случайно тыкнул в параметрах разработчика , а теперь этой настройки там нету , выключения режима разработчика не помог
збережіть проєкт, у якому в результаті настання події MouseMove для поля буде змінено текст у ньому, встановлено червоний колір тексту, сірий колір фо … ну і поле переміститься на 100 пікселів управо і на 80 пікселів униз (ширина поля збільшиться на 5 символів). (в Python) СРОЧНО ДАЮ 30 БАЛОВ.
збережіть проєкт, у якому в результаті настання події MouseMove для поля буде змінено текст у ньому, встановлено червоний колір тексту, сірий колір фо … ну і поле переміститься на 100 пікселів управо і на 80 пікселів униз (ширина поля збільшиться на 5 символів). (в Python) СРОЧНО ДАЮ 30 БАЛОВ.
СРОЧНО. Створіть новий файл Python та нове вікно і полотно. Побудуйте малюнок засобами мови програмування, використовуючи команду циклу та модуль малу … ювання. Можна створити один малюнок згідно зразка або свій на вибір.
Глядя на свойства файла Windows, я получаю два атрибута: «Размер» и «Размер на диске», а «Размер на диске» всегда больше.
Что означают эти две метрики?
«Размер на диске» не всегда больше. Небольшие файлы хранятся непосредственно на MFT и будут иметь размер на диске = 0 . Сжатые файлы часто также имеют меньший размер на диске. То же самое с редкими файлами
Размер - это фактический размер файла в байтах.
Размер на диске - это фактический объем места, занимаемого на диске. Они отличаются тем, что диск разделен на дорожки и сектора, и может выделять блоки дискретного размера.
редактирование
Для более подробного объяснения см. Этот текст, который я скопировал с другого сайта:
Мы знаем, что диск состоит из треков и секторов. В Windows это означает, что ОС выделяет пространство для файлов в «кластерах» или «единицах выделения».
Размер кластера может варьироваться, но типичные диапазоны составляют от 512 байт до 32 КБ и более. Например, на моем диске C: \ единица выделения составляет 4096 байт. Это означает, что Windows выделит 4096 байт для любого файла или части файла длиной от 1 до 4096 байт.
Если у меня есть файл размером 17 КБ (килобайт), то размер на диске будет 20,48 КБ (или 20480 байт). Расчет будет 4096 (1 единица выделения) x 5 = 20480 байт. Требуется 5 единиц размещения для хранения файла 17 КБ.
Другой пример: если у меня есть файл размером 2000 байт. Размер файла на диске будет 4096 байт. Причина в том, что, хотя весь файл может уместиться в одной единице выделения, он все равно занимает 4096 места (одну единицу выделения) на диске (только один файл может использовать единицу выделения и не может использоваться совместно с другими файлами).
Таким образом, размер на диске - это пространство всех секторов, в которых сохранен файл. Это означает, что обычно размер на диске всегда больше, чем фактический размер.
Таким образом, фактический размер файла (ов) или папки (ов) всегда должен быть взят из значения « Размер» при просмотре окна свойств.
Так стоит ли мне смотреть на «размер» или «размер на диске», когда я хочу сравнить процент того, сколько занимает папка по сравнению с общим объемом текущего раздела?
Ответ на Synetech ниже добавляет важные (и потенциально сбивающие с толку) точки о сжатии и жестких связей, оба из которых могут привести к размеру на диске , который меньше , чем размер.
@baroquedub Вы можете иметь огромную разницу между ними (например, коэффициент x1000 в вашем примере). Эта разница может произойти, особенно если есть много маленьких файлов (в основном потому, что файлы записываются как «блоки» на диске, поэтому будет взят как минимум весь размер одного блока. Фактический размер блока зависит от файла - система, поэтому размер на диске может быть разным на разных дисках
Это связано с размерами единиц размещения, которые использовались на вашем диске при его первом форматировании.
Представьте, что у вас в машине две канистры по 2 х 10 галлонов. Каждый баллон с газом является единицей распределения. Вам нужно получить 12 галлонов газа, поэтому вам нужно использовать обе канистры. В основном, используя 20 галлонов выделенного пространства - но только заполняя 12 галлонов.
Вот размер по умолчанию для Windows XP
Если вы думаете о размере кластера как о каждой из ваших канистр с газом: держите по 4 КБ «газа» каждая. Но ваш файл имеет размер 2 КБ, тогда размер заливки равен 2 КБ, а размер на диске - 4 КБ.
Позвольте мне добавить к вашему ответу. Размер единицы размещения (сегмента) выбирается в зависимости от размера диска. Если вы используете ведро для опорожнения ванны, вам следует выбрать маленькое ведро. Если вы опорожняете бассейн, вы будете использовать ведро большего размера.
Вы не можете получить доступ к каждому отдельному байту на носителе отдельно. Это было бы ужасно неэффективно, потому что системе нужен какой-то способ отслеживать, какие из них используются, а какие свободны (т. Е. Список), поэтому выполнение этого для каждого байта в отдельности создаст слишком много перехвата (для каждого отдельного байта, то есть 1 к 1, список будет таким же большим, как и сам носитель!)
Вместо этого носитель разбивается на куски, блоки, блоки, группы, как вы хотите их называть (технический термин - кластеры ), каждый из которых содержит - согласованное - количество байтов (обычно вы можете указать размер кластеры, поскольку разное использование требует разных размеров для сокращения отходов).
При сохранении файла на диск, размер файла делится он размером кластера и округляется до , если это необходимо. Это означает, что если размер файла не делится точно на размер кластера, некоторые из кластеров в конечном итоге не используются и, следовательно, теряются.
Когда вы просматриваете свойства файла, вы видите истинный размер файла, а также размер, который он занимает на диске, включая любые « слабые места », то есть «кластерные подсказки», которые не используются. Обычно это не так много для каждого файла, и размер на диске , как правило, почти равен фактическому размеру, но когда вы добавляете потраченное впустую пространство из всех тысяч файлов на диске, они могут сложиться. Поэтому при просмотре размера большой папки, особенно той, в которой много мелких файлов, которые меньше кластера, размер на диске (т. Е. Объем дискового пространства, помеченный как использованный) может оказаться значительно больше фактического размер (т. е. объем пространства, который требуется файлам).
В случае, подобном описанному выше, вы можете уменьшить размер кластера, чтобы каждый файл занимал меньше места. Как правило, диск с большей частью потерянных небольших файлов должен использовать наименьший возможный размер кластера (для уменьшения потерь), а диск с большей частью больших файлов должен использовать наибольший возможный размер кластера (таким образом, структуры бухгалтерского учета в конечном итоге становятся меньше).
Даже на более низком уровне, если каждый кластер представляет собой только один сектор , если файл не является точным кратным размеру секторов на диске (обычно 512 байт традиционно, теперь часто 4096 с дисками расширенного формата ), тогда все равно будет Неиспользуемое пространство между концом файла и концом сектора.
Другой сценарий, в котором вы можете увидеть разницу между фактическим размером файла и размером на диске, связан со сжатием. Когда диск сжимается (например, с помощью DriveSpace , NTFS-сжатия и т. Д.), Тогда будет разница между размером фактического файла (который необходимо знать) и фактическим размером, который файл занимает (т. Е. Использует или «занимает») на диске.
Еще один сценарий, который может привести к разнице, связан с жесткими ссылками . В файловых системах, которые поддерживают жесткие ссылки, при создании дубликата файла вместо создания целого нового файла, который занимает место для себя, файловая система создает ярлык для файла, чтобы оба (или все три, и т. Д.) копии указывают на один и тот же физический файл на диске. Поэтому, когда два файла указывают на одни и те же данные, они имеют одинаковый размер, но занимают лишь немного больше места, чтобы хранить одну копию.
На самом деле с единицами распределения 1B список не обязательно будет занимать всю среду. Всего восьмая часть. Это потому, что вам нужен только один бит, чтобы сказать, используется блок или свободен.
Служебные данные также включают данные, указывающие, что несколько единиц выделения принадлежат одному и тому же файлу. Если вы говорите, что у каждого байта есть другой бит, указывающий, переполняются ли данные в следующий байт, это решает это, но слишком наивно для современного размера / производительности диска, потому что, если следующий байт не свободен, КАЖДЫЙ байт жесткого диска, возможно, должен быть переехал. На самом деле вам потребуется больше накладных расходов, чтобы указать смещение следующей единицы выделения или назначить своего рода идентификатор файла для каждой единицы выделения.
Еще одна вещь, которая может значительно уменьшить значение «Размер на диске», - это ситуации, когда файл на самом деле не хранится на диске, но по-прежнему доступен различными способами.
Например, функция «Автономные файлы» OneDrive позволяет пользователю сохранять файл таким образом, чтобы он был доступен через интернет-соединение. Файл все еще существует на диске и имеет определенный размер, но, поскольку он не находится на диске, пока он не загружен, он не занимает места.
Прежде всего скажем, что речь здесь пойдет о файловых системах FAT и NTFS, как наиболее распространенных, и ничего не будет сказано о файловых системах, используемых в не-Windows системах, поскольку такие системы лежат вне сферы интересов автора. А теперь – к делу.
Казалось бы, какая неоднозначность может быть, если говорить о размере файла. Сколько в него данных записали, такой и размер (или длина). Сколько в нем есть байтов от начала до конца (и это число записано в файловой системе в качестве размера файла), такой и размер, не так ли? Как говорил Шельменко-денщик, так то оно так, да только трошечки не так.
Проведите эксперимент. Возьмите любой исполняемый файл и выполните его копирование командой
copy что-то.exe что-то-другое.exe
Если вы раньше с этим сталкивались, то уже знаете, что результирующий файл получится намного короче исходного и не будет копией. Причина простая: программа copy, запущенная без параметра /b, копирует файл до тех пор, пока не встретит байт с кодом 27h, этот символ называется «конец файла».
Итак, у нас уже есть два разных признака конца файла – по числу, записанному в файловой системе, и по специальному байту в теле файла. Правда, стоит отметить, что второй признак остался с тех времен, когда файлы были преимущественно текстовыми и сейчас практически не применяется.
В файловых системах, использующих кластеры, а FAT и NTFS относятся именно к таким ФС, есть еще третий размер – размер файла на диске, то есть суммарный размер кластеров, отведенных этому файлу. В файловых системах FAT этот размер больше размера собственно файла или равен ему. Разница между размерами, если она есть, – так называемый хвост файла – это напрасно пропадающее место на диске, плата за размещение файлов по кластерам, а не встык друг за другом, хотя файловые системы с таким размещением файлов тоже существуют.
Впрочем, иногда это место используется. В частности, во времена дискет существовали программы, которые позволяли записывать данные в хвосты файлов, чтобы скрытно передать на таких дискетах информацию. Ведь стандартными средствами получить доступ к хвостам файлов нельзя.
Если включить в рассмотрение NTFS, то картина дополнится новыми штрихами.
Прежде всего, размер файла на диске может оказаться меньше собственно размера файла.
Если тело файла помещается в свободную область файловой записи MFT, то этот файл не занимает на диске ни одного кластера.
Максимальный размер такого файла зависит от размера записи и составляет примерно 600 байтов для записи мелкого размера (1 Кб) и 3600 – для записи крупного размера (4 Кб). Следует, впрочем, отметить, что до недавнего времени Windows показывала размер такого файла на диске равным одному кластеру, хотя фактически ни одного кластера файлу не выделено.
Если файл сжат, то его размер на диске может быть заметно меньше собственно длины файла (количества данных в нем).
Дополнительно усложняют картину так называемые разреженные файлы. В них полезные данные содержаться только в определенных участках файла, а остальная часть файла не используется вовсе. Возьмем в качестве примера файл журнала изменений \$Extend\$UsnJrnl, имеющийся почти на каждом компьютере (не пытайтесь увидеть его в проводнике или других диспетчерах файлов, не получится).
Он может иметь длину несколько гигабайт, но значимых данных содержит при этом обычно только 32 мегабайта в самом конце. А остальная часть вообще никаких данных не содержит, места на диске не занимает, и при попытке прочитать данные из этой части система выдаст набор нулей, даже не обращаясь к диску.
Если у читателя возникнет желание поэкспериментировать с разреженными файлами, такой файл можно создать с помощью команды fsutil sparse. А на досуге можно обдумать, какова же настоящая длина файла, если система записала в соответствующую графу число 4 Гб, а реальных данных в файле только 32 Мб и на диске он занимает тоже 32 Мб.
И, наконец, расскажем еще об одной длине: длине действительных данных (valid data). Эта длина и устанавливающие ее функции представляют интерес почти исключительно для программистов, тем не менее изредка с ней могут столкнуться и обычные пользователи.
В файловых системах FAT такого понятия не существует, и функции, которые используют эту величину, записывают в тело файла на соответствующих местах нули. В NTFS эта длина является характеристикой файла.
Попробуем пояснить, о чем идет речь, на примере. Возьмите флешку (флешка используется для наглядности, поскольку она медленнее жесткого диска работает с большими объемами данных) размером от гигабайта, отформатированную в FAT32, и создайте на ней большой файл командой
fsutil file createnew k:\пробный.txt 900000000
Теперь отформатируйте флешку в NTFS, для чистоты эксперимента лучше взять ту же самую, и повторите создание файла. На этот раз операция пройдет практически моментально. Записывать нули в тело файла уже не надо, достаточно распределить место под файл и установить для него длину действительных данных равной нулю. В теле файла останется «мусор», который был записан в этих секторах, но при чтении данных обращения к этим данным не произойдет – обнаружив, что длина действительных данных равна нулю, все, что дальше этого нуля, система читать не станет – ведь эти данные недействительны. Их можно сделать действительными, если изменить значение длины действительных данных.
Рассмотрим это на примере. Создайте новый файл на одном из рабочих дисков, отформатированном в NTFS. Сотни мегабайт совершенно не обязательны, десятка-другого килобайт будет вполне достаточно:
fsutil file createnew C:\пробный.txt 10000
Теперь откройте его с помощью любого просмотрщика файлов, например FAR.
Как видим, в файле действительно нули. Но если посмотреть на этот файл с помощью какого-либо редактора дисков, обращающегося к секторам напрямую, например dmde, то картина будет другая.
Если мы откроем том С как логическое устройство и посмотрим на содержимое файла, то увидим те же самые нули.
Но если открыть диск как физическое устройство, то в том же самом секторе (обратите внимание на номера LBA – разница в 63 возникла из-за того, что начало раздела сдвинуто относительно начала диска) увидим данные, которые ранее были записаны в какой-то позже удаленный файл.
И если мы увеличим длину действительных данных, то увидим эти данные в файле. Установим эту длину равной 300 байт:
fsutil file setvaliddata C:\пробный.txt 300
Обратите внимание что параметр в этой команде нельзя задавать произвольно, но должен быть не меньше текущего значения длины действительных данных и не больше размера файла. Уменьшить длину действительных данных этой командой нельзя.
Теперь снова посмотри на содержимое файла. Заметьте, что никаких данных мы в него не записывали!
Чисто случайно получилось, что в этом файле довольно много осмысленного текста, что делает картину более наглядной. 300 десятичных байтов – это 12c шестнадцатиричных, и как раз на этом байте обрывается текст и начинаются нули. Если сдвинуть границу действительных данных еще дальше, то «проявятся» и следующие строки.
Подведем итоги
Имеется две физических длины файла – это размер файла, записанный в файловой системе и место, занимаемое на диске. Также имеется две логических длины файла – это признак конца файла (байт EOF – 27h) и длина действительных данных. Как составную часть логической длины можно рассматривать и пустые области в разреженных файлах – вспомните \$Extend\$UsnJrnl, где большой массив отсутствующих данных завершается тридцатью двумя мегабайтами действительных.
Итак, обычно, когда говорят о длине файла, имеют в виду число, хранящееся в файловой системе. Но, как видите, возможны варианты!
Правильным вариантом ответа на поставленный вопрос является: кластеры (блоки). При блочной организации файловых структур файлу выделяется целое количество блоков - объединение секторов. Блок в ОСсемейства MSWindows называется кластером. Необходимо отметить, что даже при отсутствии внешней фрагментации на уровне кластеров на диске все равно имеется определенное количество областей памяти, которые невозможно использовать, то есть существует внутренняя фрагментация. Эти фрагменты представляют собой неиспользуемые части последних кластеров, назначенных файлам, поскольку объем файла в общем случае не кратен размеру кластера. На каждом файле в среднем теряется половина кластера. Это потери особенно велики, когда на диске имеется большое количество маленьких файлов, а кластер имеет большой размер. Размеры кластеров зависят от размера раздела и типа файловой системы. Примерный диапазон, в котором может меняться размер кластера, составляет от 512 байт – 1 сектор до десятков килобайт.
2.2 Выберите все правильные ответы на поставленный вопрос:
В файловых системах FAT в операционных системах семейства Windows атрибуты файлов хранятся:
□ в таблице разделов
□ вместе с файлом
□ в каталогах
□ в индексных дескрипторах
□ в файле подкачки
□ в таблицах FAT
Правильным вариантом ответа на поставленный вопрос является: в каталогах. Набор атрибутов файла определяется спецификой файловой системы: в файловых системах разного типа для характеристики файлов могут использоваться разные наборы атрибутов.
Пользователь может получать доступ к атрибутам, используя средства, предоставленные для этих целей файловой системой. Обычно разрешается читать значения любых атрибутов, а изменять - только некоторые.
Значения атрибутов файлов могут непосредственно содержаться в каталогах, как это сделано в файловой системе FAT в операционной системе – ОС -семейства Windows. В этом случае запись в каталоге содержит простое символьное имя и атрибуты файла: R — только для чтения, А — архивный, Н — скрытый, S — системный (здесь буквами обозначены признаки файла).
Практические задания
Предложите решение теоретической задачи.
На жестком диске использует размещение файлов в виде связного списка кластеров. Ссылка на кластер занимает на жестких дисках 4 байта. Запись каталога вместе с атрибутами файла занимает 32 байта. Расход емкости диска на загрузочную запись не учитывается и считается, что последний кластер файла заполнен в среднем на 70%.
Необходимо определить:
· максимальное количество файлов, которое можно разместить на диске,
· долю адресной информации в процентах от емкости диска
· долю неиспользованной емкости диска за счет внутренней фрагментации.
Считая, что:
· емкость диска - 20 Гбайт,
· размер кластера 8 Кбайт.
Для данной задачи предлагается следующее решение:
К адресной информации файла относятся запись в каталоге с учетом атрибутов файла Аа - 32 байта и запись для ссылки на очередной кластер в цепочке Ас – 4 байта.
Так как требуется определить максимальное количество файлов на диске, то файлу необходимо выделить хотя бы один кластер, т.к. меньше кластера файлу выделить невозможно.
Таким образом адресная информация на один файл Аф составит :
Аф = Аа + Ас = 23+4 = 36 байт
Количество искомых файлов – Кф.
Общее количество адресной информации А будет следующим:
Остальная часть диска может быть занята файлами, каждый из которых имеет минимальный размер, т. е. размер одного кластера – Ак = 8 Кбайта.
Итак емкость диска Ед равна адресной информации на все файлы плюс все файлы размером один кластер:
Ед = Кф* Аф + Кф * Ак = Кф (Аф + Ак)
а максимальное количество файлов равно:
Итак, максимальное количество файлов, которое можно разместить на диске равно (размер строки каталога измеряется в байтах, а диска в Гбайтах, поэтому все единицы необходимо привести к байтам, а количество м.б. только целым):
К = 20*2 30 / (36 + 2 13 ) = 20 * 1073741824 /(8192+36) = 21474836480/8228 = 2609970
объем адресной информации составляет:
А = Аф * 2609970 = 36 * 2609970 = 93958920 байт
доля адресной информации в процентах от емкости диска равна:
А% = 100% * А / Ед = 93958920/20 * 1073741824 = 0,437%
Для определения доли неиспользованной емкости диска за счет внутренней фрагментации считаем, что последний кластер файла заполнен в среднем на 70%. Т.к. каждому файлу выделяется только один кластер, то последним кластером является каждый выделенный кластер, поэтому доля потерь дискового пространства Еп составит:
Еп% = 100%*Еп/Ед = 100%* 0.3* 8192*2609970/20*1073741824 = 29,86%
Выполните предложенное практическое задание
Используя штатные средства операционной системы MS Windows* получите отчет о состоянии своего жесткого диска и поясните полученные результаты.
С учетом размера кластера на логическом диске С: своего компьютера поясните полученные значения свободного и занятого пространства и оцените возможные потери дискового пространства из-за внутренней фрагментации.
Читайте также: