
Alguns computadores/controladores legados não possuem o sistema de arquivos, é porque esses dispositivos não possuem um sistema operacional? Se os arquivos não puderem ser salvos nesses dispositivos, como a lógica/programa de controle de fábrica e outros dados poderão ser salvos no dispositivo?
Responder1
Sistema de arquivos é basicamente o método para armazenar arquivos na memória.
Dispositivos de memória, como discos rígidos, unidades flash, discos ópticos, cartões de memória, etc. podem armazenar um número fixo de bytes. Uma memória vazia e apagada de 48 bytes contém isto:
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
Agora, digamos que eu tenha dois arquivos de texto
- O primeiro é chamadoSaudações.txte contém a palavra
Hello
. - O outro é chamadoNome de usuário.txte contém a palavra
gronostaj
.
Os arquivos são codificados usandoASCII, então cada letra corresponde a um byte. Após a codificação em ASCII, os bytes dos arquivos são:
Nome
47 72 65 65 74 69 6e 67 73 2e 74 78 74
Conteúdo
48 65 6c 6c 6f
Nome
55 73 65 72 6e 61 6d 65 2e 74 78 74
Conteúdo
67 72 6f 6e 6f 73 74 61 6a
(Estou usando valores hexadecimais da segunda coluna da tabela desse site.)
Posso colocar o conteúdo do primeiro arquivo em nossa memória assim:
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
Existem alguns problemas, no entanto.
- E se eu quiser colocar um segundo arquivo na memória? Como saberei onde termina um arquivo e começa o outro?
- Os arquivos têm nomes, como armazená-los?
Para resolver isso, podemos inventar um sistema de arquivos simples. Digamos que intercalamos os nomes dos arquivos com seus conteúdos, de modo que cada nome de arquivo seja seguido pelo conteúdo desse arquivo e os separemos com zero bytes. Dois bytes zero sequenciais significam "não há mais arquivos".
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
Ou a mesma coisa, mas sem codificação ASCII: (não podemos armazená-lo na memória assim, é apenas por uma questão de legibilidade)
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
Um sistema de arquivos real também:
- Armazene datas de criação e modificação de arquivos, atributos, permissões, metadados e outras coisas
- Conter algum tipo de índice para que os arquivos possam ser acessados quase imediatamente, sem verificar todo o disco até serem encontrados
- Diretórios de suporte
- Suporta arquivos e nomes de arquivos que contêm
00
bytes - Ser capaz de se recuperar de algumas falhas
- Suporta alteração do comprimento do arquivo sem mover os arquivos seguintes
Mas você entendeu.
Agora, sistemas operacionais.Os sistemas operacionais para a maioria dos computadores consistem em arquivos, portanto, você precisa de um sistema de arquivos para armazenar o sistema operacional nele. Mas você poderia criar um sistema operacional monolítico que não precisasse trabalhar com arquivos persistentes e não fosse armazenado em um arquivo.RTOS grátisé um exemplo. Portanto, embora os sistemas de arquivos e os sistemas operacionais sejam geralmente fortemente acoplados, eles podem, na verdade, existir um sem o outro.
Por "monolítico" quero dizer "um único pedaço de código binário". Seria um chamadobolha: uma sequência de bytes sem nome, data de criação ou quaisquer outras propriedades. Afinal, as CPUs apenas processam sequências de instruções. Eles não se importam com metadados ou sistemas de arquivos, eles apenas querem ser alimentados com tarefas para executar. E se você puder expressar essas instruções como bytes, então os blobs serão suficientes!
E os blobs podem ser facilmente armazenados na memória sem qualquer tipo de sistema de arquivos. Na verdade fizemos isso em nosso primeiro exemplo, quando colocamos o conteúdo do arquivo 1 na memória.
Espero que isso responda à sua pergunta!
Responder2
O BIOS, o sistema operacional e o sistema de arquivos são elementos distintos e separados, e um sistema operacional pode existir na memória somente leitura do dispositivo. Então não, as mensagens não são iguais,mas o sistema operacional tem uma função: ser a interface entre os programas e o hardware.Se o dispositivo não tiver um sistema operacional, o programa ou programas em execução no dispositivo serão o sistema operacional.
Parece provável que o sistema não tenha um sistema operacional se não relatar nenhum sistema de arquivos ou uma partição/sistema de arquivos quebrado ou incompleto; Mas
... Pode ser que o dispositivo de armazenamento em massa esteja configurado incorretamente; ou, mais especificamente, que o número de cabeçotes e trilhas que o BIOS está configurado para usar não é o mesmo que o número de cabeçotes e trilhas que o dispositivo foi formatado para usar. Quando isso acontece, o bootstrap não consegue carregar o sistema completo de alocação de arquivos. O sistema está com bateria descarregada, resultando na perda de informações de configuração. Se for assim, combinar corretamente as configurações do BIOS com a formatação irá recuperar o sistema ...
Bios é a interface básica para hardware. O sistema operacional é a interface de uso dos programas que foi padronizada para que os programas não precisem se preocupar com o hardware específico que está sendo usado. O sistema de arquivos é a tabela de dados padrão para acessar um dispositivo de armazenamento em massa.
O BIOS é carregado primeiro da memória somente leitura no dispositivo de interface do driver e configura pontos de interrupção para acesso. Int 13 é o ponto de acesso para os dispositivos de armazenamento em massa.
https://en.wikipedia.org/wiki/INT_13H... o BIOS então carrega a tabela de partições, da trilha 0, setor 0 do dispositivo e uma rotina de bootstrap.http://www.ntfs.com/fat-partition-sector.htm
A tabela de partição informa tudo sobre o tamanho do disco rígido e a rotina de inicialização na tabela de partição de endereço da máquina + 3E hex, (se bem me lembro da minha engenharia reversa corretamente, isso está em 0000: 063E hex na máquina), normalmente carrega o sistema operacional, e drivers que podem ser mais avançados.
Se o sistema operacional do computador não tiver suporte para armazenamento em massa, você ainda poderá conectar-se ao suporte deste BIOS e criar uma extensão para o sistema com base no dispositivo de armazenamento em massa. Mas esteja ciente de que o sistema operacional pode ativar e desativar interrupções para manter as solicitações sequenciais ao BIOS.
O próprio BIOS não consegue lidar com operações multithread. Especificamente, é feita uma chamada para o BIOS para instruir o disco rígido a se preparar para ler ou gravar em um local específico. As operações de leitura e gravação ocorrem em uma segunda chamada para o BIOS. Um sistema operacional mais avançado é necessário porque algo deve impedir que um programa se prepare para ler dados enquanto outro programa deseja gravar dados ou os dados serão sobrescritos.
Um sistema de arquivos é necessário para que os programas usem o dispositivo de armazenamento em massa sem correr o risco de sobrescrever dados ou impedir que outros programas usem o disco rígido ou o BIOS.
O sistema operacional usado pelo Altair básico na época do 8080 era muito minimalista. Você pode salvar arquivos no disco rígido, especificando em qual cabeçalho e faixa começar a dizer o arquivo. Nenhum sistema de arquivos foi usado, o próprio usuário teve que lembrar o cabeçalho e o número da faixa em que o arquivo foi salvo.
Não era exatamente um sistema operacional de disco, mas funcionou. As rotinas de leitura do teclado e envio de informações ao display também eram mínimas.
Responder3
Acho que há dois pontos a serem abordados aqui:
- Alguns sistemas não possuem um sistema de arquivos - isso significa que eles não possuem um sistema operacional?
- Onde a configuração pode ser armazenada se não houver sistema de arquivos (ou for somente leitura)
Baremetal
Alguns sistemas não possuem um sistema operacional - existe um aplicativo e esse software de aplicativo faz interface diretamente com o hardware. Isso é comum em pequenos sistemas microcontroladores, onde a complexidade é baixa. Neste cenário, o software normalmente será personalizado, com a equipe de desenvolvimento escrevendo os drivers e a abstração do zero ou usando o código do fornecedor para facilitar o objetivo do design.
Dito isto, tais sistemaspoderiasuportar um sistema de arquivos. Sistemas de arquivos simples comoGORDOsão comumente usados para armazenar logs e fornecer atualização funcional de firmware.
A configuração geralmente será formatada e gravada diretamente no armazenamento bruto não volátil, sem usar um sistema de arquivos.
Sistemas Embarcados - Agendador
Subindo um nível, encontramos sistemas um pouco maiores e um aumento de complexidade. Neste ponto encontraremosSistemas operacionais em tempo real(RTOS) - embora nem todos tenham requisitos de tempo real - que são projetados com um conjunto específico de recursos. Esses sistemas serão construídos com um conjunto de "tarefas"que estão agendados para execução - geralmente outras tarefas/arbitrárias não podem ser executadas. É comum que esses sistemas ofereçam suporte imediato a sistemas de arquivos, redes, etc... usando código produzido por fornecedores ou pela comunidade.
A configuração pode ser gravada em armazenamento bruto ou armazenada como um arquivo em um sistema de arquivos.
InvestigarRTOS grátis,ThreadX, etc...
Sistemas Embarcados
Agora encontramos sistemas embarcados ainda maiores. A complexidade aumentou, e neste nível encontramos uma dependência de um sistema de arquivos para organizar a configuração do sistema e aplicações/software. Agora podemos executar aplicativos arbitrários, e os kernels virão com uma grande quantidade de drivers para vários hardwares.
Aqui estamos olhandoLinux,QNX, "Compacto incorporado do Windows", etc...
O software normalmente será construídoparasistema, convocando projetos comocaixa ocupadapara fornecer grande parte da funcionalidade e usando projetos comoraiz de construçãoeYoctopara construir os vários aplicativos e produzir uma imagem.
A configuração provavelmente será gravada em um arquivo - embora isso não impeça os desenvolvedores de usar armazenamento bruto como antes, já que esses sistemas geralmente serão executados em hardware personalizado.
O sistema de arquivos é necessário, mas pode não ser gravável e pode ser puramente "em memória" - limitado em tamanho e todas as alterações (se RW) são perdidas na reinicialização.
Sistemas completos de usuário/servidor
Aqui estamos analisando PCs desktop executando um sistema de janelas, sistemas de arquivos de leitura e gravação (geralmente em discos grandes), uma abundância de execução de código arbitrário, a configuração é definitivamente armazenada como um arquivo - este é o tipo de sistema com o qual você está familiarizado. Os servidores geralmente são bastante semelhantes aos PCs desktop nos termos que estamos discutindo aqui.
No mundo Linux, isso seria um "distribuição". Você normalmente encontrará alguma forma de gerenciamento de pacotes, então instalar/desinstalar um aplicativo é uma questão de baixar e descompactar (compilar também se você estiver usando programas comoGentoo).
Aqui estamos olhando para Linux,janelas,Servidor Windows, etc...
Mencionei acima que sistemas menores normalmente armazenam configurações em armazenamento bruto não volátil. Isso é feito decidindo o que você deseja armazenar, agrupando os dados e gravando-os no armazenamento.
Por exemplo, podemos querer armazenar a seguinte configuração simples:
- O flange tem precisamente
52458
etapas de rotação - O flange deve ser girado para a posição
5547
em05:00
- O flange deve ser girado para o pósitron
49885
em18:00
Todos os números cabem em um número inteiro de 16 bits, então vamos usar isso para representar etapas. Por enquanto, decidimos armazenar em BCD para melhor compatibilidade com um RTC, então é isso.
Temos os seguintes dados:
- 52458 -->
0xCCEA
- 5547 -->
0x15AB
- 05:00 -->
0x0500
- 49885 -->
0xC2DD
- 18:00 -->
0x1800
Esses valores podem ser agrupados e gravados no armazenamento como 10 bytes:
0x00000000 CC EA 15 AB 05 00 C2 DD 18 00
A aplicação sabe interpretar isso, portanto não precisa de suporte. Por suporte estou me referindo à localização da área de armazenamento por nome (por exemplo: sistema de arquivos e nome do arquivo) e ao compartilhamento do entendimento da configuração com um ser humano (por exemplo:JSON/XML/YAML/TOML).