<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://camokathomelab.servebeer.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=HPFS</id>
	<title>HPFS - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://camokathomelab.servebeer.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=HPFS"/>
	<link rel="alternate" type="text/html" href="https://camokathomelab.servebeer.com/mediawiki/index.php?title=HPFS&amp;action=history"/>
	<updated>2026-07-16T10:19:30Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://camokathomelab.servebeer.com/mediawiki/index.php?title=HPFS&amp;diff=7005&amp;oldid=prev</id>
		<title>imported&gt;Alex NB OT: Форматирование дат согласно Википедия:Техническое соглашение о датах и времени и Википедия:Обсуждение правил/Википедия:Техническое соглашение о датах и времени</title>
		<link rel="alternate" type="text/html" href="https://camokathomelab.servebeer.com/mediawiki/index.php?title=HPFS&amp;diff=7005&amp;oldid=prev"/>
		<updated>2025-08-21T09:45:02Z</updated>

		<summary type="html">&lt;p&gt;Форматирование дат согласно &lt;a href=&quot;/mediawiki/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%9F%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0/114896312&quot; title=&quot;Служебная:Постоянная ссылка/114896312&quot;&gt;Википедия:Техническое соглашение о датах и времени&lt;/a&gt; и &lt;a href=&quot;/mediawiki/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%9F%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0/114894365&quot; title=&quot;Служебная:Постоянная ссылка/114894365&quot;&gt;Википедия:Обсуждение правил/Википедия:Техническое соглашение о датах и времени&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{переработать|date=2009-05}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HPFS&amp;#039;&amp;#039;&amp;#039; (аббр. от {{lang-en|High Performance File System}}) — [[файловая система]], разработанная специалистами [[IBM]] и [[Microsoft]], базирующаяся на разработках IBM по созданию файловых систем [[MVS]], [[VM (ОС)|VM]] и виртуального метода доступа. Со стороны Microsoft проектом руководил опытный [[системный программист]] {{не переведено|Летвин, Гордон|Гордон Летвин|en|Gordon Letwin}}.&lt;br /&gt;
&lt;br /&gt;
Впервые поддержка HPFS появилась в [[операционная система|операционной системе]] [[OS/2]] версии 1.2. С тех пор штатная поддержка HPFS присутствует во всех версиях [[OS/2]]. В [[Windows NT]] поддержка HPFS существовала до версии 3.51 включительно (хотя есть успешные прецеденты использования старого драйвера HPFS в Windows NT 4.0 и Windows 2000). Впоследствии Microsoft отказалась от HPFS в пользу собственной файловой системы [[NTFS]], при разработке которой был учтён опыт создания HPFS.&lt;br /&gt;
&lt;br /&gt;
В OS/2 существует серверный вариант драйвера для HPFS, называемый HPFS386, который обладает некоторыми дополнительными возможностями.&lt;br /&gt;
&lt;br /&gt;
== Структура ==&lt;br /&gt;
Диск в HPFS делится на секторы фиксированного размера (512 байт в текущей реализации, при этом номер сектора или их количество кодируются во внутренних структурах как 4-байтовое беззнаковое целое, что позволяет адресовать диски размером до 2&amp;lt;sup&amp;gt;32&amp;lt;/sup&amp;gt; * 512 = 2 [[терабайт]]а).&lt;br /&gt;
&lt;br /&gt;
В начале диска расположены несколько управляющих блоков:&lt;br /&gt;
# [[Загрузочный сектор]] [[DOS]]-овского вида.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;SuperBlock&amp;#039;&amp;#039;&amp;#039; содержит информацию о геометрии диска, указатели на [[битовая карта|битовые карты]] (т. н. &amp;#039;&amp;#039;битмапы&amp;#039;&amp;#039;, от {{lang-en|bitmaps}}) свободного пространства, указатель на корневой каталог, размер дисковой полосы, номер полосы с каталогами, указатель на список сбойных блоков и т. п. SuperBlock также содержит дату последнего запуска [[CHKDSK]]. Обычно изменяют SuperBlock только программы CHKDSK и [[format|FORMAT]].&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;SpareBlock&amp;#039;&amp;#039;&amp;#039; содержит указатели на [[пул]] HOTFIX-areas, пул Fault-Tolerance областей (только HPFS386 использует Fault-Tolerance), пул блоков для операций на почти заполненном диске и другие указатели, флаги и дескрипторы.&lt;br /&gt;
# Область начальной загрузки.&lt;br /&gt;
# Область секторов, используемых (временно) для выполнения операций, требующих дополнительной дисковой памяти. Эта область например, иногда задействуется при переименовании файла на заполненном диске.&lt;br /&gt;
# Другие области.&lt;br /&gt;
&lt;br /&gt;
Для определения того, свободен сектор или занят, HPFS использует [[битовая карта|битовые карты]], в которых каждый бит соответствует одному сектору. Если бит содержит 1, это означает, что сектор занят, иначе он свободен. Если бы на весь диск была только одна битовая карта, то для её подкачки приходилось бы перемещать головки чтения/записи в среднем через половину диска. Чтобы избежать этого, HPFS разбивает диск на «полосы» (или &amp;#039;&amp;#039;группы&amp;#039;&amp;#039;, от {{lang-en|bands}}) длиной по 8 мегабайт и хранит битмапы свободных секторов в начале или конце каждой полосы. При этом битмапы соседних полос располагаются рядом:&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 ±----------- 16 MB -----------+    *** — Use/Free sector bitmap.&lt;br /&gt;
 |                             |&lt;br /&gt;
 ±-|-------------±----------±--|--±-------------±--------------+&lt;br /&gt;
 |***  Полоса 0  | Полоса 1 ***|***   Полоса 2  | Полоса 3  ***|&lt;br /&gt;
 ±---------------±-------------±----------------±--------------+&lt;br /&gt;
 0 MB           8 MB          16 MB            24 MB          32 MB&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
Расстояние между двумя битмапами равно 16 MB. Размер полосы (8 MB) может быть изменён в следующих версиях HPFS, так как на него нет прямых завязок. HPFS определяет размер полосы при чтении управляющих блоков с диска во время выполнения операции FSHelperAttach.&lt;br /&gt;
&lt;br /&gt;
Размер битмапа равен 2 K (8 MB/512/8 = 2 K).&lt;br /&gt;
&lt;br /&gt;
Полоса, находящаяся в центре диска, используется для хранения каталогов. Эта полоса называется Directory Band. Однако, если она будет полностью заполнена, HPFS начнёт располагать каталоги файлов в других полосах.&lt;br /&gt;
&lt;br /&gt;
Файлы и каталоги в HPFS базируются на фундаментальном объекте, называемом &amp;#039;&amp;#039;&amp;#039;FNode&amp;#039;&amp;#039;&amp;#039;. Каждая FNode занимает один сектор и в HPFS всегда располагается поблизости от своего файла или каталога (обычно непосредственно перед файлом или каталогом). FNode содержит длину и первые 15 символов имени файла, статистику по доступу к файлу, внутреннюю информацию, [[расширенные атрибуты]] и [[ACL]] (или только часть, если они очень большие), ассоциативную информацию о расположении и подчинении файла и т. д.&lt;br /&gt;
&lt;br /&gt;
Длины имён файлов и каталогов при полной подстановке (от корня) не должны превышать 260 символов, при этом каждая компонента пути не должна быть длиннее 255 символов. В именах файлов недопустимы следующие символы:&lt;br /&gt;
&lt;br /&gt;
 [[Управляющие символы|0h-1Fh]], [[Управляющие символы|7Fh]], /, |, \, *, ?, &amp;quot;, &amp;lt;, &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Последовательности конечных пробелов игнорируются, если на конце файла стоит точка, то она тоже игнорируется. Внутри имени файла точка — такой же символ, как и остальные. С русскими буквами проблем нет. При создании файла HPFS запоминает написание его имени, хотя и не различает регистров в дальнейших операциях, кроме тех, что возвращают информацию о файле.&lt;br /&gt;
&lt;br /&gt;
Примеры имен:&lt;br /&gt;
# «FILE.ASM»&lt;br /&gt;
# «Злобный Файл. ASM.OBJ.EXE»&lt;br /&gt;
# «Ещё более злобный файл . TXT»&lt;br /&gt;
&lt;br /&gt;
С точки зрения размещения, файлы, каталоги и их расширенные атрибуты (если они не помещаются в FNode) рассматриваются HPFS как наборы &amp;#039;&amp;#039;&amp;#039;[[экстент]]ов&amp;#039;&amp;#039;&amp;#039;. Экстент — это часть файла, лежащая в последовательных секторах. Каждый экстент описывается двумя числами: номером первого сектора и длиной (в секторах). Два последовательных экстента всегда объединяются HPFS в один. Минимальный размер экстента — один сектор. Так как расстояние между соседними битмапами свободных секторов равно 16 МБ, то и размер максимального экстента равен 16 МБ. Если файл состоит из восьми или менее экстентов, то его описание целиком хранится в FNode.&lt;br /&gt;
&lt;br /&gt;
Если файл состоит более чем из восьми экстентов, то его описание может занимать несколько секторов, расположенных поближе к файлу, при этом эти сектора содержат не список, а прошитое сбалансированное [[B+-дерево|B&amp;lt;sup&amp;gt;+&amp;lt;/sup&amp;gt;-дерево]] экстентов. Дерево построено так, что его разбалансировка никогда не превышает 1/3 по объёму, и оно не отличается от оптимального более чем на один уровень. Корень дерева находится в FNode, причём может содержать до 12 элементов. Каждый дополнительный сектор, представляющий собой ветку дерева, содержит до 60 элементов, а лист — 40 элементов. Таким образом, если файл состоит из экстентов по одному сектору (этого никогда не будет!) и имеет размер 2 GB, для его описания потребуется дерево следующей структуры: 12*60*60*60*40=53 MB листьев и 1,7 MB веток. Для случайного доступа к любой части файла при этом потребуется (в худшем случае) 5 операций чтения управляющих структур.&lt;br /&gt;
&lt;br /&gt;
Реальные файлы состоят из 1-3 экстентов.&lt;br /&gt;
&lt;br /&gt;
Максимальный размер файла в HPFS сейчас 2 ГБ, однако он обусловлен только размером поля под размер файла и файловым указателем (4 байта) в самой OS/2 и её [[API]]. Это не предел HPFS. Следует помнить, что в HPFS отсутствует понятие кластера, файл может занимать 1, 2, 3, 4 или любое другое количество секторов.&lt;br /&gt;
&lt;br /&gt;
При создании/расширении файлов HPFS пытается минимизировать количество [[экстент]]ов, используя для этого статистику, битовые карты свободных секторов и другую информацию. Например, HPFS старается условно резервировать хотя бы 4 килобайта места в конце файлов, которые растут. Другой приём: расположение конкурентно растущих файлов или файлов, открытых разными цепочками или процессами, в разных полосах диска.&lt;br /&gt;
&lt;br /&gt;
Каталоги в HPFS, как и в [[FAT]], образуют древовидную структуру. Но при этом внутри каталога HPFS строит сбалансированное [[B*-дерево]] на основе имён файлов для быстрого поиска файла по имени внутри каталога. Например, если каталог содержит 4096 файлов, FAT будет читать в среднем 64 сектора для поиска файла внутри каталога, а HPFS считает 2-4 сектора и найдёт файл.&lt;br /&gt;
&lt;br /&gt;
Размер блока, в терминах которых выделяются каталоги, равен 2 KB в текущей версии HPFS. Размер записи, описывающей файл, зависит от размера имени файла. Если имя занимает 13 байт (8.3), то 2-килобайтовый блок вмещает 41 описатель файлов. Блоки прошиты списком (как и описатели экстентов) для облегчения последовательного обхода.&lt;br /&gt;
&lt;br /&gt;
HPFS не имеет [[FAT]]&amp;#039;овских проблем «утекания» дискового пространства при удалении большого количества файлов в каталоге.&lt;br /&gt;
&lt;br /&gt;
При переименовании файла может возникнуть перебалансировка дерева. Эта операция может потребовать выделения дополнительных блоков на заполненном диске. В этом случае блоки берутся из специального пула, указатель на который лежит в SpareBlock.&lt;br /&gt;
&lt;br /&gt;
Расширенные атрибуты и их разновидность [[ACL]] HPFS хранит в FNode. Если они не влезают в FNode, HPFS хранит их почти как файл, построив для этого B±Tree. Имена расширенных атрибутов до HPFS386 не выстраивались в B-Tree.&lt;br /&gt;
&lt;br /&gt;
== HPFS386 ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HPFS386&amp;#039;&amp;#039;&amp;#039; — [[драйвер]] для [[файловая система|файловой системы]] HPFS, который предназначен для [[сервер (аппаратное обеспечение)|серверных]] систем с большой нагрузкой на дисковые операции. Драйвер HPFS386 поставляется с [[LAN Server]] для [[OS/2]].&lt;br /&gt;
&lt;br /&gt;
Основные отличия HPFS386 от штатного HPFS-драйвера в [[OS/2]]:&lt;br /&gt;
&lt;br /&gt;
* 32-битный [[машинный код|код]]&lt;br /&gt;
* отсутствие ограничений на размер [[кеш-память|кэша]] (кэш ограничен лишь размером [[оперативная память|оперативной памяти]])&lt;br /&gt;
* поддержка списков контроля доступа [[ACL]].&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
* Горявский Ю. А. [http://ru2.halfos.ru/guru/faq/source/os2str.016 Кое-что об HPFS].&lt;br /&gt;
&lt;br /&gt;
{{OS/2 API}}&lt;br /&gt;
{{Файловые системы}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Файловые системы]]&lt;br /&gt;
[[Категория:OS/2]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Alex NB OT</name></author>
	</entry>
</feed>