Нет файловой системы такой же, как нет операционной системы?

895
FunctionBlock

Некоторые устаревшие компьютеры / контроллеры не имеют файловой системы с ними, потому что на этих устройствах нет операционной системы? Если файлы не могут быть сохранены на этих устройствах, как логика / программа управления фабрикой и другие данные могут быть сохранены на устройстве?

1

3 ответа на вопрос

1
gronostaj

Файловая система - это в основном метод хранения файлов в памяти.

Запоминающие устройства, такие как жесткие диски, флэш-накопители, оптические диски, карты памяти и т. Д., Могут хранить фиксированное количество байтов. Пустая, стертая 48-байтовая память содержит это:

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

Теперь, скажем, у меня есть два текстовых файла

  1. Первый называется Greetings.txt и содержит слово Hello.
  2. Другой называется Username.txt и содержит слово gronostaj.

Файлы кодируются с использованием ASCII, поэтому каждая буква соответствует одному байту. После кодирования с использованием ASCII байты файлов:

  1. название 47 72 65 65 74 69 6e 67 73 2e 74 78 74

    содержание 48 65 6c 6c 6f

  2. название 55 73 65 72 6e 61 6d 65 2e 74 78 74

    содержание 67 72 6f 6e 6f 73 74 61 6a

(Я использую шестнадцатеричные значения из второго столбца таблицы на этом веб-сайте.)

Я могу поместить содержимое первого файла в нашу память следующим образом:

48 65 6c 6c 6f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

Однако есть некоторые проблемы.

  • Что если я захочу поместить второй файл в память? Как я узнаю, где заканчивается один файл, а другой начинается?
  • Файлы имеют имена, как их хранить?

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

47 72 65 65 74 69 6e 67 <- first 8 bytes of name 1 73 2e 74 78 74 00 48 65 <- next 5 bytes of name 1, then 00, then 2 bytes of content 1 6c 6c 6f 00 55 73 65 72 <- next 3 bytes of content 1, then 00, then 4 bytes of name 2 6e 61 6d 65 2e 74 78 74 <- next 8 bytes of name 2 00 67 72 6f 6e 6f 73 74 <- 00, then 7 bytes of content 2 61 6a 00 00 00 00 00 00 <- 2 bytes of content 2, then 00 00, so no more files 

Или то же самое, но без кодировки ASCII: (мы не можем хранить это в памяти, просто ради удобочитаемости)

 G r e e t i n g s . t x t 00 H e l l o 00 U s e r n a m e . t x t 00 g r o n o s t a j 00 00 00 00 00 00 

Настоящая файловая система также:

  • Хранить даты создания и изменения файлов, атрибуты, разрешения, метаданные и другие вещи
  • Содержать какое-то оглавление, чтобы к файлам можно было обращаться практически сразу, без сканирования всего диска, пока они не найдены
  • Поддержка каталогов
  • Поддержка файлов и имен файлов, которые содержат 00байты
  • Уметь восстанавливаться после некоторых сбоев
  • Поддержка изменения длины файла без перемещения следующих файлов

Но ты получил идею.

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

Под «монолитным» я подразумеваю «один кусок двоичного кода». Это был бы так называемый BLOB- объект: последовательность байтов без имени, даты создания или каких-либо других свойств. В конце концов, процессоры просто обрабатывают последовательности инструкций. Они не заботятся о метаданных файлов или файловых системах, они просто хотят получать задания для выполнения. И если вы можете выразить эти инструкции как байты, то блобов достаточно!

И капли могут быть легко сохранены в памяти без какой-либо файловой системы. На самом деле мы сделали это в нашем первом примере, когда мы просто поместили содержимое файла 1 в память.

Надеюсь, это ответит на ваш вопрос!

0
Wayne

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

Вполне вероятно, что в системе нет операционной системы, если она не сообщает ни о какой файловой системе, ни о сломанном или неполном разделе / ​​файловой системе; Но

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

Биос является основным интерфейсом к оборудованию. Операционная система - это интерфейс для используемых программ, который был стандартизирован, поэтому программам не нужно заботиться о том, какое конкретное оборудование используется. Файловая система - это стандартная таблица данных для доступа к запоминающему устройству.

Сначала BIOS загружается из постоянной памяти на устройстве интерфейса драйвера, устанавливает точки прерывания для доступа. Int 13 - это точка доступа для устройств хранения данных.

https://en.wikipedia.org/wiki/INT_13H ... Затем BIOS загружает таблицу разделов, начиная с дорожки 0, сектора 0 устройства и процедуры начальной загрузки. http://www.ntfs.com/fat-partition-sector.htm

Таблица разделов сообщает все о том, насколько велик жесткий диск, и процедура начальной загрузки в таблице разделов адреса компьютера + 3E hex (если я правильно помню реверс-инжиниринг, это в hex: 0000: 063E hex на машине), обычно загружает операционную систему, и водители, которые могут быть более продвинутыми.

Если операционная система компьютера не имеет поддержки запоминающего устройства, вы все равно можете подключиться к поддержке этого BIOS и создать расширение системы на основе запоминающего устройства. Но имейте в виду, что ОС может включать и выключать прерывания, чтобы запросы к BIOS были последовательными.

Сам биос не может обрабатывать многопоточные операции. В частности, к биосу обращаются с призывом подготовить жесткий диск к чтению или записи в определенном месте. Операции чтения-записи выполняются при повторном обращении к BIOS. Необходима более совершенная операционная система, потому что что-то должно помешать одной программе подготовиться к чтению данных, в то время как другая программа хочет записать данные, или данные будут перезаписаны.

Файловая система необходима программам для использования запоминающего устройства без риска перезаписи данных или блокировки других программ из-за использования жесткого диска или BIOS.


Операционная система, используемая Altair basic во времена 8080 года, была очень минималистской. Вы можете сохранить файлы на жестком диске, указав, с какой главы и дорожки начать произносить файл. Файловая система не использовалась, пользователь сам должен был помнить заголовок и номер дорожки, под которой был сохранен файл.

Не так много дисковой операционной системы, но она работала. Процедуры чтения с клавиатуры и отправки информации на дисплей также были минимальными.

0
Attie

Я думаю, что здесь есть два момента, на которые следует обратить внимание:

  • Некоторые системы не имеют файловой системы - значит ли это, что у них нет ОС?
  • Где можно сохранить конфигурацию, если нет файловой системы (или она доступна только для чтения)

Оголенный метал

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

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

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

Встроенные системы - Планировщик

Поднимаясь по уровню, мы обнаруживаем немного большие системы и усложнение. На этом этапе мы обнаружим операционные системы реального времени (ОСРВ) - хотя не у всех есть требования в реальном времени - которые разработаны с определенным набором функций. Эти системы будут построены с набором « задач », которые запланированы для выполнения - обычно другие / произвольные задачи не могут быть выполнены. Эти системы обычно поддерживают файловые системы, сети и т. Д. С помощью кода, созданного вендором или сообществом.

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

Посмотрите на FreeRTOS, ThreadX и т.д ...

Встроенные системы

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

Здесь мы рассмотрим Linux, QNX, « Windows Embedded Compact » и т. Д.

Программное обеспечение, как правило, будет создаваться для системы, вызывая проекты, такие как busybox, для обеспечения большей части функциональности, и используя проекты, такие как buildroot и Yocto, для создания различных приложений и создания образа.

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

Файловая система обязательна, но может быть недоступна для записи и может быть просто « в памяти » - ограничена по размеру, и все изменения (если RW) будут потеряны при перезагрузке.

Полные пользовательские / серверные системы

Здесь мы рассмотрим настольные ПК с системой управления окнами, файловые системы для чтения и записи (обычно на больших дисках), изобилие выполнения произвольного кода, конфигурация определенно хранится в виде файла - это тип системы, с которой вы знакомы. Серверы обычно очень похожи на настольные ПК в терминах, которые мы обсуждаем здесь.

В мире Linux это будет « дистрибутив ». Обычно вы найдете некоторую форму управления пакетами, поэтому установка / удаление приложения - это загрузка и распаковка (компиляция тоже, если вы используете Gentoo ).

Здесь мы смотрим на Linux, Windows, Windows Server и т.д ...


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

Например, мы можем захотеть сохранить следующую простую конфигурацию:

  • Фланец имеет точные 52458шаги вращения
  • Фланец должен быть повернут в положение 5547на05:00
  • Фланец должен быть повернут к позитрону 49885в18:00

Все числа вписываются в 16-битное целое число, поэтому давайте использовать это для представления шагов. Для времен мы решили хранить в BCD для лучшей совместимости с RTC, вот и все.

У нас есть следующие данные:

  • 52458 -> 0xCCEA
  • 5547 -> 0x15AB
  • 05:00 -> 0x0500
  • 49885 -> 0xC2DD
  • 18:00 -> 0x1800

Там значения могут быть сопоставлены и записаны в хранилище как 10 байтов:

0x00000000 CC EA 15 AB 05 00 C2 DD 18 00 

Приложение знает, как это интерпретировать, поэтому не нуждается в поддержке. Под поддержкой я имею в виду расположение области хранения по имени (например, файловая система и имя файла) и обмен информацией о конфигурации с человеком (например, JSON / XML / YAML / TOML ).