Отсутствие файловой системы равнозначно отсутствию операционной системы?

Отсутствие файловой системы равнозначно отсутствию операционной системы?

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

решение1

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

Устройства памяти, такие как жесткие диски, флэш-накопители, оптические диски, карты памяти и т. д., могут хранить фиксированное количество байтов. Пустая, стертая, 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. Первый называетсяПриветствия.txtи содержит слово Hello.
  2. Другой называетсяИмя пользователя.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один из примеров. Так что, хотя файловые системы и операционные системы обычно тесно связаны, они фактически могут существовать друг без друга.

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

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

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

решение2

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

Похоже, что в системе нет операционной системы, если она сообщает об отсутствии файловой системы или о поврежденном или неполном разделе/файловой системе; Но

... Возможно, устройство хранения данных неправильно настроено; или, точнее, количество головок и дорожек, на использование которых настроен BIOS, не совпадает с количеством головок и дорожек, на использование которых отформатировано устройство. Когда это происходит, загрузчик не может загрузить полную систему распределения файлов. Имеет ли система разрядившуюся батарею, что привело к потере информации о настройке? Если это так, то правильное соответствие настроек 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 (если я правильно помню результаты обратного проектирования, это шестнадцатеричный адрес 0000:063E на машине) обычно загружает операционную систему и драйверы, которые могут быть более продвинутыми.

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

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

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


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

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

решение3

Я думаю, здесь следует остановиться на двух моментах:

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

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

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

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

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

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

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

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

Посмотрите вFreeRTOS,ТемаX, и т. д...

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

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

Здесь мы смотрим наЛинукс,QNX, "Windows Embedded Компактный", и т. д...

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

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

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

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

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

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

Здесь мы рассматриваем Linux,Окна,Windows-сервер, и т. д...


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

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

  • Фланец имеет точные 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/ЯМЛ/ТОМЛ).

Связанный контент