Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт мар 19, 2024 13:44

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: по поводу файловой системы
СообщениеДобавлено: Пт июн 08, 2007 22:29 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
По поводу файловой системы.

Практически каждая новая Операционная Система (ОС) имеет собственную
Файловую Систему (ФС). Связано это в первую очередь с тем, как эта самая
новая ОС хранит данные и как к ним относится. Например, есть файловые
системы, у которых понятие файла предельно размыто, так как и имен у такого
файла может быть очень много, и данных много, и место храненния всего
не совсем определено, и при этом и данные и имена и любые другие состовляющие
такого файла считаются атрибутами(которые к тому же необязательны). Понятно,
что такое представление файлов на FAT очень тяжело спроекцировать, и создатели
ОС будут озадачены созданием подходящей ФС. Кроме того, при создании с нуля
новой ОС всегда хочется попасть в новое состояние, то есть реализовать все
уникальным образом. Это вполне справедливо, так как иначе зачем же создавать
новое? Кроме того, при реализации новой ФС нет необходимости заботиться о
поддержке всех "фич" которые имеет любая другая уже созданная ФС.

Таким образом, если мечтать о создании OS/4 - то есть форт операционной
системы, необходимо мечтать о создании собственной ФС, наиболее подходящей
по духу к Языковой Форт Среде (ЯФС).

У форта есть некий прообраз файловой системы - это словарь. Аналогия между
файлом и словом ЯФC очень четкая:

у ФАЙЛА есть ИМЯ и есть имя у СЛОВА
ФАЙЛЫ содержат ДАННЫЕ и КОД и СЛОВА содержат ДАННЫЕ И КОД
у ФАЙЛА есть АТРИБУТЫ и есть ФЛАГИ у слова
ФАЙЛЫ группируются в КАТАЛОГИ и СЛОВА группируются в СЛОВАРИ
КАТАЛОГИ являются ФАЙЛАМИ и СЛОВАРИ являются СЛОВАМИ

Тем не менее до сих пор никто еще не написал форт-системы, в которой бы
словари были спроекцированы на каталоги и позволяли бы работать в шататном
режиме с файлами, как со словами. Все современные ЯФС, наоборот, выделяют
работу с файлами в отдельную группу с помощью слов OPEN-FILE, CREATE-FILE,
READ-FILE и прочими. То есть не пытаются сводить вместе слова и файлы,
каталоги и словари. УВЫ, ANSI стандарт только закрепил такое неприятное
положение вещей.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 08, 2007 22:36 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Но поговорим немного о другом. Любую файловую систему логически можно
разделить на два уровня:
- уровень хранения данных
- уровень представления и обмена данными с ФС.

Обычно, мы при работе имеем дело со вторым уровнем - то есть с интерфейсом
файловой системы, который нам предоставляет ОС.

Файловая система должна обычно соответствовать следующим требованиям:
- надежность хранения данных (неубиваемость ФС),
- регулярность структр данных.
- скорость обмена данными между ОС и ФС,
- экономичность.
- удобство интерфейса ФС в рамках рабочей модели ОС,

Есть и другие аспекты, вроде сжатия данных, поддержки многопользовательности
и прочяя.

Я пока что предлагаю забыть о втором уровне, и рассмотреть наиболее
подходящую методику хранения данных.

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

Наиболее распространенной из простых ФС является ФАТ16.
В ней на уровне хранения данных все пространство диска разбито на где-то
65000 кусков, называемых кластерами. В начале (и в конце) диска есть
таблица, состоящая из 65000 записей - каждая запись имеет длину в 16 бит
и индекс записи соответствует номеру кластера. Сама же запись хранит либо
ссылку на следующий кластер в цепочке, либо одно из предустановленных
значений (конец_файла, битый_кластер, свободный кластер). Таким образом,
прочесть файл целиком можно начав с первой записи файла в ФАТ и по цепочке
кластер за кластером вычитать файл. У такого распределения пространства
есть целый ряд недостатков и ряд преимуществ. Главным преимуществом является
простота организации ФС и простота распределения дискового пространства.
А вот недостатков много, это и орграничение по размеру файла,
и по количеству файлов, и по общему размеру дискового пространства,
и потеря пространства за счет грануляции, и низкая надежность. УФ.
При создании ФАТ32 микрософт почему-то решила простор промасштабировать
ФАТ16 увеличив количество кластеров в 65536 раз 8) со всеми вытекающими.
Как для меня, самой большой неприятностью ФС ФАТ является та, что наиболее
часто меняющаяся область таблицы ФАТ фиксирована, и не может приходиться
на битые кластера, а при потере таблицы ФАТ все данные превращаются в кашу-
равномерно нарубленые куски размером в кластер(и резервная копия увы, не
всегда помогает). А если, к несчастью, вы не знаете начала ФС ФАТ на диске
и затерто несколько первых кластеров этой ФС...
Но хватит о ФАТ, есть и другие ФС более надежные, с более производительные
и более сложные. Да, забыл напомнить, что для любого современного носителя
всегда существует начальная грануляция данных. Проще говоря любой накопитель
бъет данные на куски длиной в сектор (обычно 512 байт), читать и писать
данные можно лишь посекторно.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 08, 2007 22:47 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
'A соль-то, соль-то в чем?' (с)...

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 08, 2007 22:49 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Мне же хочеться помечтать о собственной ФС. И вот что мне видится.

исходное дисковое пространство бьем на куски размером в 65536 секторов
и называем такие куски хранилищами. То есть одно хранилище имеет 65 тыщь
секторов непрерывно следующих друг за другом, следующее столько же и так
далее. Хранилища следюут друг за другом, концевое хранилище может иметь
размер, отличный от 65536 секторов, впрочем и первый тоже может.
65536*512/1025 - 32МБ. То есть размер хранилища при классическом размере
сектора равном 512 байтам будет 32 мегабайта. Так как диски сейчас большие,
то диск длиной в 4G будет состоять из 128 хранилищь. Адресация сектора
получается очень простой: старшие 16 бит номер хранилища, младшие 16 номер
сектора в хранилище. Максимальный размер диска и максимальный размер файла
при таком подходе 2^32*1^9=2ТВ - вполне себе нормальный размерчик как
для ФС так и для файла (но его можно запросто увеличить, если увеличить
размер сектора). Правда из этого размера придется вычесть размер
различных структур данных, но это уже мелочи. Выдерживание размера каждого
хранилища обязательно (это часть защиты системы от порчи).
В начале каждого хранилища находится 1 неиспользуемый сектор, и один
специальный сектор, содержимое которого дублируется в конце хранилища.
Положение этих секторов фиксировано, все остальные структуры данных могут
располагаться в любом месте хранилища. Первый сектор отведен под загрузочную
запись, содержимое которой дублируется по всем хранилищам ФС.

Следующий за ним сектор используется для хранения:
(глобальные данные)
- идентификатора ФС - текстовая запись
- ключ ФС - уникальная строка, идентифицирующая
данную ФС (для каждого диска свой)
- номера хранилища в текстовом представлении
- количества хранилищь на диске в текстовом представлении
- размер одного сектора
- контрольная сумма первого сектора хранилища
- контрольная сумма данной записи

(локальные данные)
- время оследнего доступа к данному хранилищу
- ссылка на начало записываемого файла (либо 0)
- ссылка на начало списка записей (записи хранят данные)
- ссылка на начало списка свободных секторов
- ссылка на начало списка битых, сбойных, ненадежных секторов.

??? - что еще?

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

Теперь о индексации записей.
Из второго и последнего сектора хранилища по ссылке на начало списка записей
попадаем в каталог записей.
Каждая запись состоит из списка непрерывных кусков, относящихся к записи.
если файл сильно фрагментирован, то таких кусков будет много.
Каждая запись заканчивается двумя нулевыми байтами.
Первая запись ссылается на каталог записей хранилища, то есть на себя.
Имеет смысл резервировать под каталог записей 2*65536*3 байт = 768 секторов,
а при нехватке места размер каталога урезать.

Если запись не влазит в хранилище, то она продляется в следующее, для чего
в начале записи хранится FFFF номер_хранилища номер записи, после чего
обязательно идет 00 - оканчивающие данную запись в данном хранилище.

0000│start end│start end│....│FFFF storage record│0000

если файл продляется, то в начале хранится код 0001 и ссылка на предыдущее
хранилище и порядковый номер записи.

0001 storage record │start end| .... |0000
────────┬────────── ┴
ссылка назад

Хотя, как вариант можно хранить ссылки на первые сектора записей,
а в самих первых секторах записей хранить распределение пространства, что
даже еще лучше, потому что можно при потере содержимого главной записи
восстановить содержимое всх записей по их заголовкам.

Все остальное - то есть логическая организация файловой системы уже на более
высоком уровне.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 08, 2007 22:49 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Что касается FAT32, то он удобен для обмена с различными флеш-картами. Например, я сейчас прикидываю перспективы использования SD в качестве твердотельного диска. Очень удобно - записать в картоводе (или USB-переходнике), и потом свободно ставить к форт-процессору, чтобы он особо не заморачивался с коррекцией ошибок и форматированием, а только читал (и писал) файлы.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 08, 2007 23:25 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
mOleg писал(а):
2^32*1^9=2ТВ


эт-та, а 1 в девятой степени - это зачем? :shock:

мне вот кажется, что пора бы ввести нормальные числа с переменной длиной, т.е. что-то типа числа, представляемого строкой со счетчиком.
Счетчик - указывает количество байт представления числа - и тогда проблемы с ограничением на объемы должны временно исчезнуть, до тех пор, пока не упремся в 2^(256*8)

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 08, 2007 23:36 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
WingLion писал(а):
эт-та, а 1 в девятой степени - это зачем?

2^9 = 512 - это размер сектора

WingLion писал(а):
мне вот кажется, что пора бы ввести нормальные числа с переменной длиной, т.е. что-то типа числа, представляемого строкой со счетчиком.

зачем? и так хорошо.

WingLion писал(а):
Счетчик - указывает количество байт представления числа - и тогда проблемы с ограничением на объемы должны временно исчезнуть, до тех пор, пока не упремся в 2^(256*

ограничение ФС в обьеме?
или вообще 8) я не понял


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 08, 2007 23:46 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Хищник писал(а):
только читал (и писал) файлы

Гарантированный ресурс флешек - 100тыс записей. Для работы обычных современных ОС не подойдет при использовании обычных файловых систем(много записей на диск в одно место - каталог и FAT). Надо использовать специальные файловые системы, оптимизированные для флешек.

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 09, 2007 00:01 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
in4 писал(а):
Гарантированный ресурс флешек - 100тыс записей. Для работы обычных современных ОС не подойдет при использовании обычных файловых систем(много записей на диск в одно место - каталог и FAT). Надо использовать специальные файловые системы, оптимизированные для флешек

ну, во-первых никто не мешает оптимизировать запись, правда с ФАТ - самой таблицей таки будут проблемы.
а во-вторых, какие?
у меня несколько флеш устройств, и ни на одном не стоит ничего отличного от ФАТ, причем ФАТ16


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 09, 2007 00:24 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Imho, имеет смысл сразу же подумать о разделении носителей по интенсивности возможных изменений, чтобы можно было назначить, например, ту же флешку постоянным хранилищем, в которое файлы пишутся изредка, а в рядом стоящий обычный винчестер (или RAM-Disk) используется по интенсивности записей на всю катушку.

mOleg писал(а):
зачем? и так хорошо.


Затем, чтобы потом не долбаться с переходами через искусственно воздвигнутые горы в виде пределов размеров винчестеров, памяти, файлов и т.д. и т.п.

mOleg писал(а):
ограничение ФС в обьеме?
или вообще Cool я не понял


чтобы ограничений типа "мы считаем, что 640кб хватит для любой программы" не было

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 09, 2007 00:35 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
in4 писал(а):
Гарантированный ресурс флешек - 100тыс записей. Для работы обычных современных ОС не подойдет при использовании обычных файловых систем(много записей на диск в одно место - каталог и FAT). Надо использовать специальные файловые системы, оптимизированные для флешек.

У меня в КПК SD торчит. Не уверен насчет 100 тыс. циклов, да и насчет постоянной перезаписи в таком количестве.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 09, 2007 00:36 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
WingLion писал(а):
Imho, имеет смысл сразу же подумать о разделении носителей по интенсивности возможных изменений, чтобы можно было назначить, например, ту же флешку постоянным хранилищем, в которое файлы пишутся изредка, а в рядом стоящий обычный винчестер (или RAM-Disk) используется по интенсивности записей на всю катушку.

пока что я писал лишь о методике хранения записей на носителе типа винчестер или флеш.
причем специально отделил интерфейс и методы именования файлов от методов хранения.

WingLion писал(а):
mOleg писал(а):ограничение ФС в обьеме?

или вообще Cool я не понял

чтобы ограничений типа "мы считаем, что 640кб хватит для любой программы" не было

мне кажется что в корне не верно. Так как ограничения есть всегда и всегда будут. Просто нелогично расчитывать на петабайтные диски сейчас.
Вобщем я не вижу причин делать ФС под размер более 2ТБ 8)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 09, 2007 01:26 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
mOleg писал(а):
Вобщем я не вижу причин делать ФС под размер более 2ТБ Cool


А я вижу :))
Хотя бы потому, что из-за этого идиотизма у меня сейчас 250Гиговый винт валяется без дела, ибо рабочий комп столь глуп, что не видит более 64Gb :(

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

p.s. собственно, оно уже здесь: http://fforum.winglion.ru/viewtopic.php?t=797

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Последний раз редактировалось WingLion Сб июн 09, 2007 05:49, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 09, 2007 01:28 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
mOleg писал(а):
мне кажется что в корне не верно. Так как ограничения есть всегда и всегда будут. Просто нелогично расчитывать на петабайтные диски сейчас.
Вобщем я не вижу причин делать ФС под размер более 2ТБ

в крайнем случае можно ввести понятие кластер. При этом гранулярность записи возрастет, например при 8-и кратном увеличении, то есть 4кб кластерах можно будет адресовать 16ТБ - таких дисков в природе пока нету 8)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 09, 2007 09:37 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
mOleg писал(а):
Вобщем я не вижу причин делать ФС под размер более 2ТБ

2ТБ - мало, щас в продаже уже на 500 и 750 гб харды, через год они будут уже 2ТБ, да и флеш не отстает - на 512Гб уже есть, ~1000$. А ведь из них еще и массивы можно собирать. Надо ее делать легко масштабируемой - например делать мета-хранилища на те же 2ТБ, но при этом по сути они будут теми же самыми хранилищами и вести себя они будут тоже как хранилища, и так далее выше..... Читаю мега-идею WingLion'а - вот он тоже самое предлагает. Я бы назвал это мета-ФС. Пойду читать дальше...

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB