Żaden system plików nie jest taki sam jak brak systemu operacyjnego?

1

Niektóre starsze komputery / kontrolery nie mają ze sobą systemu plików, czy to dlatego, że te urządzenia nie mają systemu operacyjnego? Jeśli nie można zapisać plików na tych urządzeniach, w jaki sposób można zapisać na urządzeniu logikę / program sterujący i inne dane?

FunctionBlock
źródło

Odpowiedzi:

1

System plików to w zasadzie metoda przechowywania plików w pamięci.

Urządzenia pamięci, takie jak dyski twarde, dyski flash, dyski optyczne, karty pamięci itp. Mogą przechowywać stałą liczbę bajtów. Pusta, wymazana 48-bajtowa pamięć zawiera:

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

Powiedzmy, że mam dwa pliki tekstowe

  1. Pierwszy z nich nazywa się Greetings.txt i zawiera słowo Hello.
  2. Drugi nazywa się Username.txt i zawiera słowo gronostaj.

Pliki są kodowane za pomocą ASCII , więc każda litera odpowiada jednemu bajtowi. Po kodowaniu za pomocą ASCII bajty plików to:

  1. Imię 47 72 65 65 74 69 6e 67 73 2e 74 78 74

    Zawartość 48 65 6c 6c 6f

  2. Imię 55 73 65 72 6e 61 6d 65 2e 74 78 74

    Zawartość 67 72 6f 6e 6f 73 74 61 6a

(Używam wartości szesnastkowych z drugiej kolumny w tabeli na tej stronie).

Mogę zapisać zawartość pierwszego pliku w naszej pamięci w następujący sposób:

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

Istnieją jednak pewne problemy.

  • Co jeśli chcę umieścić drugi plik w pamięci? Skąd będę wiedział, gdzie kończy się jeden plik, a drugi zaczyna?
  • Pliki mają nazwy, jak je przechowywać?

Aby je rozwiązać, możemy wynaleźć prosty system plików. Powiedzmy, że przeplatamy nazwy plików z ich zawartością, tak aby po każdej nazwie pliku znajdowała się treść tego pliku, i oddzielamy je zerowymi bajtami. Dwa kolejne bajty zerowe oznaczają „nie więcej plików”.

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

Lub to samo, ale bez kodowania ASCII: (nie możemy przechowywać tego w pamięci w ten sposób, tylko ze względu na czytelność)

 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

Prawdziwy system plików również:

  • Przechowuj daty utworzenia i modyfikacji plików, atrybuty, uprawnienia, metadane i inne rzeczy
  • Zawierają jakiś spis treści, aby można było uzyskać dostęp do plików niemal natychmiast, bez skanowania całego dysku, dopóki nie zostaną znalezione
  • Katalogi wsparcia
  • Obsługa plików i nazw plików zawierających 00bajty
  • Być w stanie wyleczyć się z niektórych awarii
  • Obsługuje zmianę długości pliku bez przenoszenia kolejnych plików

Ale masz pomysł.

Teraz systemy operacyjne. Systemy operacyjne dla większości komputerów składają się z plików, więc potrzebujesz systemu plików do przechowywania w nim systemu operacyjnego. Ale możesz stworzyć monolityczny system operacyjny, który nie musi pracować z trwałymi plikami i nie jest przechowywany w pliku. FreeRTOS jest jednym z przykładów. Chociaż systemy plików i systemy operacyjne są zwykle ściśle ze sobą powiązane, mogą faktycznie istnieć bez siebie.

Przez „monolityczny” rozumiem „pojedynczy fragment kodu binarnego”. Byłby to tak zwany obiekt typu blob : ciąg bajtów bez nazwy, daty utworzenia lub jakichkolwiek innych właściwości. W końcu procesory przetwarzają sekwencje instrukcji. Nie dbają o metadane plików ani systemy plików, chcą po prostu mieć zadania do wykonania. A jeśli możesz wyrazić te instrukcje jako bajty, wówczas obiekty BLOB są wystarczające!

Obiekty BLOB można łatwo przechowywać w pamięci bez żadnego systemu plików. W rzeczywistości zrobiliśmy to w naszym pierwszym przykładzie, kiedy po prostu umieściliśmy zawartość pliku 1 w pamięci.

Mam nadzieję, że to odpowiada na twoje pytanie!

gronostaj
źródło
0

System BIOS, system operacyjny i system plików są odrębnymi i osobnymi elementami, a system operacyjny może istnieć w pamięci tylko do odczytu na urządzeniu. Więc żadne komunikaty nie są równe, ale system operacyjny ma jedno zadanie, aby być interfejsem między programami a sprzętem. Jeśli urządzenie nie ma systemu operacyjnego, wówczas program lub programy uruchomione na urządzeniu są systemem operacyjnym.

Wydaje się prawdopodobne, że system nie ma systemu operacyjnego, jeśli nie zgłasza systemu plików lub zepsutej lub niekompletnej partycji / systemu plików; Ale

... może się zdarzyć, że urządzenie pamięci masowej jest źle skonfigurowane; lub dokładniej, że liczba głowic i ścieżek, z których skonfigurowane jest bios, nie jest taka sama jak liczba głowic i ścieżek, z których urządzenie zostało sformatowane. Kiedy tak się dzieje, program ładujący nie może załadować pełnego systemu alokacji plików. Czy system ma rozładowaną baterię, co powoduje utratę informacji konfiguracyjnych. Jeśli tak, prawidłowe dopasowanie ustawień bios do formatowania przywróci system ...

Bios jest podstawowym interfejsem do sprzętu. System operacyjny jest interfejsem dla programów, który został znormalizowany, dzięki czemu programy nie muszą dbać o to, jaki konkretny sprzęt jest używany. System plików to standardowa tabela danych umożliwiająca dostęp do urządzenia pamięci masowej.

Bios ładuje się najpierw z pamięci tylko do odczytu w urządzeniu interfejsu kierowcy konfiguruje punkty przerwania dla dostępu. Int 13 to punkt dostępu do urządzeń pamięci masowej.

https://en.wikipedia.org/wiki/INT_13H ... bios następnie ładuje tablicę partycji ze ścieżki 0, sektora 0 urządzenia i procedury ładowania początkowego. http://www.ntfs.com/fat-partition-sector.htm

Tabela partycji mówi wszystko, jak duży jest dysk twardy, a procedura ładowania początkowego w tabeli partycji adresu komputera + szesnastkowy 3E, (jeśli dobrze pamiętam moją inżynierię wsteczną to 0000: 063E szesnastkowy na maszynie), normalnie ładuje system operacyjny, oraz sterowniki, które mogą być bardziej zaawansowane.

Jeśli system operacyjny komputera nie obsługuje pamięci masowej, możesz podłączyć się do tej bios i zbudować rozszerzenie systemu w oparciu o urządzenie pamięci masowej. Należy jednak pamiętać, że system operacyjny może włączać i wyłączać przerwania, aby żądania były przesyłane sekwencyjnie.

Sam system BIOS nie obsługuje operacji wielowątkowych. W szczególności bios dzwoni, aby poinstruować dysk twardy, aby przygotował się do odczytu lub zapisu w określonym miejscu. Operacje odczytu i zapisu odbywają się następnie przy drugim wywołaniu bios. Potrzebny jest bardziej zaawansowany system operacyjny, ponieważ coś musi uniemożliwić jednemu programowi przygotowanie się do odczytu danych, podczas gdy inny program chce zapisać dane lub dane zostaną nadpisane.

System plików jest potrzebny, aby programy mogły korzystać z urządzenia pamięci masowej bez ryzyka zastąpienia danych lub zablokowania innych programów przed użyciem dysku twardego lub systemu BIOS.


System operacyjny używany przez Altair basic w czasach 8080 był bardzo minimalistyczny. Możesz zapisywać pliki na dysku twardym, określając, od której strony i ścieżki zacząć wymawiać plik. Nie użyto żadnego systemu plików, sam musiał zapamiętać numer nagłówka i ścieżki, pod którym plik został zapisany.

Niewiele z systemu operacyjnego na dysku, ale działało. Procedury czytania klawiatury i wysyłania informacji na wyświetlacz były również minimalne.

Wayne
źródło
0

Myślę, że należy tutaj rozwiązać dwie kwestie:

  • Niektóre systemy nie mają systemu plików - czy to znaczy, że nie mają systemu operacyjnego?
  • Gdzie można zapisać konfigurację, jeśli nie ma systemu plików (lub jest on tylko do odczytu)

Czystego metalu

Niektóre systemy nie mają systemu operacyjnego - jest jedna aplikacja, a oprogramowanie aplikacyjne łączy się bezpośrednio ze sprzętem. Jest to powszechne w małych systemach mikrokontrolerów, w których złożoność jest niewielka. W tym scenariuszu oprogramowanie jest zazwyczaj przygotowywane na zamówienie, a zespół programistów pisze od zera sterowniki i abstrakcję lub używa kodu dostawcy, aby ułatwić sobie osiągnięcie celu projektowego.

To powiedziawszy, takie systemy mogą obsługiwać system plików. Proste systemy plików, takie jak FAT, są powszechnie używane do przechowywania dzienników i zapewniania aktualizacji oprogramowania układowego.

Konfiguracja często jest formatowana i zapisywana bezpośrednio w surowym nieulotnym magazynie, bez użycia systemu plików.

Embedded Systems - Scheduler

Idąc na wyższy poziom, znajdujemy nieco większe systemy i wzrost złożoności. W tym momencie znajdziemy systemy operacyjne czasu rzeczywistego (RTOS) - choć nie wszystkie mają wymagania czasu rzeczywistego - zaprojektowane z określonym zestawem funkcji. Systemy te zostaną zbudowane z zestawem „ zadań ” zaplanowanych do wykonania - zwykle nie można uruchomić innych / dowolnych zadań. Systemy te często wspierają systemy plików, sieci itp. Za pomocą kodu dostawcy lub kodu społeczności.

Konfiguracja może być zapisana w surowym magazynie lub zapisana jako plik w systemie plików.

Zajrzyj do FreeRTOS , ThreadX itp.

Systemy wbudowane

Teraz znajdujemy systemy osadzone, które są jeszcze większe. Wzrosła złożoność i na tym poziomie znajdujemy zależność od systemu plików w celu organizacji konfiguracji systemu i aplikacji / oprogramowania. Jesteśmy teraz w stanie wykonywać dowolne aplikacje, a jądra będą miały mnóstwo sterowników dla różnych urządzeń.

Tutaj patrzymy na Linux , QNX , „ Windows Embedded Compact ” itp.

Oprogramowanie będzie zwykle budowane dla systemu, wzywając projekty takie jak busybox, aby zapewnić dużą część funkcjonalności, i wykorzystując projekty takie jak buildroot i Yocto do budowania różnych aplikacji i tworzenia obrazu.

Konfiguracja najprawdopodobniej zostanie zapisana do pliku - choć nie jest to niczym, co powstrzymuje deweloperów przed używaniem surowej pamięci masowej, ponieważ systemy te zwykle działają na niestandardowym sprzęcie.

System plików jest wymagany, ale może nie być zapisywalny i może być wyłącznie „ w pamięci ” - ma ograniczony rozmiar, a wszystkie zmiany (jeśli RW) zostaną utracone przy ponownym uruchomieniu.

Pełne systemy użytkownika / serwera

Tutaj patrzymy na komputery stacjonarne z systemem okienkowym, systemy plików do odczytu i zapisu (zwykle na dużych dyskach), mnóstwo wykonywania dowolnego kodu, konfiguracja jest zdecydowanie przechowywana jako plik - jest to typ systemu, który znasz. Serwery są ogólnie bardzo podobne do komputerów stacjonarnych w warunkach, o których tu mówimy.

W świecie Linuksa byłaby to „ dystrybucja ”. Zazwyczaj znajdziesz jakąś formę zarządzania pakietami, więc instalowanie / odinstalowywanie aplikacji polega na pobieraniu i rozpakowywaniu (kompilacja również, jeśli używasz Gentoo ).

Tutaj patrzymy na Linux, Windows , Windows Server itp.


Powyżej wspominałem, że mniejsze systemy zazwyczaj przechowują konfigurację w surowym nieulotnym magazynie. Odbywa się to poprzez podjęcie decyzji, co chcesz przechowywać, zestawienie danych i zapisanie ich w pamięci.

Na przykład możemy chcieć zapisać następującą prostą konfigurację:

  • Kołnierz ma ściśle określone 52458kroki obrotu
  • Kołnierz należy obrócić do pozycji 5547o05:00
  • Kołnierz musi zostać obrócony do pozytonu 49885o18:00

Wszystkie liczby pasują do 16-bitowej liczby całkowitej, więc użyjmy tego do przedstawienia kroków. Czasami decydujemy się na przechowywanie w BCD dla lepszej kompatybilności z RTC, więc to tyle.

Mamy następujące dane:

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

Wartości mogą być zestawiane i zapisywane w pamięci jako 10 bajtów:

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

Aplikacja wie, jak to interpretować, więc nie potrzebuje wsparcia. Przez wsparcie mam na myśli lokalizowanie obszaru pamięci według nazwy (np .: nazwa systemu plików i nazwa pliku) oraz dzielenie się zrozumieniem konfiguracji z człowiekiem (np .: JSON / XML / YAML / TOML ).

Attie
źródło