
Algunas computadoras/controladores heredados no tienen el sistema de archivos, ¿es porque estos dispositivos no tienen un sistema operativo? Si los archivos no se pueden guardar en estos dispositivos, ¿cómo se pueden guardar la lógica/programa de control de fábrica y otros datos en el dispositivo?
Respuesta1
El sistema de archivos es básicamente el método para almacenar archivos en la memoria.
Los dispositivos de memoria, como discos duros, unidades flash, discos ópticos, tarjetas de memoria, etc., pueden almacenar un número fijo de bytes. Una memoria vacía y borrada de 48 bytes contiene esto:
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
Ahora, digamos que tengo dos archivos de texto.
- El primero se llamaSaludos.txty contiene la palabra
Hello
. - el otro se llamaNombre de usuario.txty contiene la palabra
gronostaj
.
Los archivos se codifican usandoASCII, por lo que cada letra corresponde a un byte. Después de codificar usando ASCII, los bytes de los archivos son:
Nombre
47 72 65 65 74 69 6e 67 73 2e 74 78 74
Contenido
48 65 6c 6c 6f
Nombre
55 73 65 72 6e 61 6d 65 2e 74 78 74
Contenido
67 72 6f 6e 6f 73 74 61 6a
(Estoy usando valores hexadecimales de la segunda columna de la tabla de ese sitio web).
Puedo poner el contenido del primer archivo en nuestra memoria de esta manera:
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
Sin embargo, existen algunos problemas.
- ¿Qué pasa si quiero colocar un segundo archivo en la memoria? ¿Cómo puedo saber dónde termina un archivo y comienza el otro?
- Los archivos tienen nombres, ¿cómo los almaceno?
Para resolverlos, podemos inventar un sistema de archivos simple. Digamos que intercalamos nombres de archivos con su contenido, de modo que a cada nombre de archivo le siga el contenido de ese archivo, y los separamos con cero bytes. Dos bytes cero secuenciales significan "no más archivos".
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
O lo mismo, pero sin codificación ASCII: (no podemos almacenarlo en la memoria de esa manera, es solo por razones de legibilidad)
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
Un sistema de archivos real también:
- Almacene fechas de creación y modificación de archivos, atributos, permisos, metadatos y otras cosas.
- Contener algún tipo de tabla de contenido para que se pueda acceder a los archivos casi de inmediato, sin necesidad de escanear todo el disco hasta encontrarlos.
- Directorios de soporte
- Admite archivos y nombres de archivos que contienen
00
bytes - Ser capaz de recuperarse de algunos fallos.
- Admite cambiar la longitud del archivo sin mover los siguientes archivos
Pero se entiende la idea.
Ahora, sistemas operativos.Los sistemas operativos de la mayoría de las computadoras constan de archivos, por lo que necesita un sistema de archivos para almacenar el sistema operativo en ellos. Pero se podría crear un sistema operativo monolítico que no tenga que funcionar con archivos persistentes y no esté almacenado en un archivo.RTOS gratuitoses un ejemplo. Entonces, si bien los sistemas de archivos y los sistemas operativos suelen estar estrechamente acoplados, en realidad pueden existir uno sin el otro.
Por "monolítico" me refiero a "una sola pieza de código binario". Sería un llamadogota: una secuencia de bytes sin nombre, fecha de creación ni ninguna otra propiedad. Después de todo, las CPU simplemente procesan secuencias de instrucciones. No les importan los metadatos de los archivos ni los sistemas de archivos, solo quieren recibir tareas para ejecutar. Y si puedes expresar estas instrucciones como bytes, ¡entonces los blobs son suficientes!
Y los blobs se pueden almacenar fácilmente en la memoria sin ningún tipo de sistema de archivos. De hecho, lo hicimos en nuestro primer ejemplo, cuando simplemente colocamos el contenido del archivo 1 en la memoria.
¡Espero que esto responda tu pregunta!
Respuesta2
La BIOS, el sistema operativo y el sistema de archivos son elementos distintos y separados, y un sistema operativo puede existir en la memoria de solo lectura del dispositivo. Entonces no, los mensajes no son iguales,pero el sistema operativo tiene una función: ser la interfaz entre los programas y el hardware.Si el dispositivo no tiene un sistema operativo, entonces el programa o programas que se ejecutan en el dispositivo son el sistema operativo.
Parece probable que el sistema no tenga un sistema operativo si no informa ningún sistema de archivos o una partición/sistema de archivos roto o incompleto; Pero
... Puede ser que el dispositivo de almacenamiento masivo esté mal configurado; o más específicamente, que la cantidad de cabezales y pistas que la BIOS está configurada para usar no es la misma que la cantidad de cabezales y pistas para los que se ha formateado el dispositivo. Cuando eso sucede, el programa de arranque no puede cargar el sistema de asignación de archivos completo. ¿El sistema tiene una batería que se agotó, lo que provocó la pérdida de información de configuración? Si es así, hacer coincidir correctamente la configuración del BIOS con el formato recuperará el sistema...
Bios es la interfaz básica del hardware. El sistema operativo es la interfaz que deben utilizar los programas y que ha sido estandarizada para que los programas no necesiten preocuparse por el hardware específico que se está utilizando. El sistema de archivos es la tabla de datos estándar para acceder a un dispositivo de almacenamiento masivo.
La BIOS se carga primero desde la memoria de solo lectura en el dispositivo de interfaz del controlador y configura puntos de interrupción para el acceso. Int 13 es el punto de acceso para los dispositivos de almacenamiento masivo.
https://en.wikipedia.org/wiki/INT_13H... luego la bios carga la tabla de particiones, desde la pista 0, el sector 0 del dispositivo y una rutina de arranque.http://www.ntfs.com/fat-partition-sector.htm
La tabla de particiones dice todo qué tan grande es el disco duro y la rutina de arranque en la tabla de particiones de direcciones de la máquina + 3E hexadecimal (si recuerdo correctamente mi ingeniería inversa, esto está en 0000:063E hexadecimal en la máquina), normalmente carga el sistema operativo. y conductores que pueden ser más avanzados.
Si el sistema operativo de la computadora no tiene soporte de almacenamiento masivo, aún puede conectarse al soporte de este BIOS y crear una extensión para el sistema basada en el dispositivo de almacenamiento masivo. Pero tenga en cuenta que el sistema operativo puede estar activando y desactivando interrupciones para mantener secuenciales las solicitudes al BIOS.
La BIOS en sí no puede manejar operaciones multiproceso. Específicamente, se realiza una llamada a la BIOS para indicarle al disco duro que se prepare para leer o escribir en una ubicación específica. Las operaciones de lectura y escritura se llevan a cabo en una segunda llamada al BIOS. Se necesita un sistema operativo más avanzado porque algo tiene que evitar que un programa se prepare para leer datos mientras otro programa quiere escribir datos o los datos se sobrescribirán.
Se necesita un sistema de archivos para que los programas utilicen el dispositivo de almacenamiento masivo sin correr el riesgo de sobrescribir datos o impedir que otros programas utilicen el disco duro o la BIOS.
El sistema operativo utilizado por Altair basic en la época del 8080 era muy minimalista. Puede guardar archivos en el disco duro, especificando en qué encabezado y pista comenzar a decir el archivo. No se utilizó ningún sistema de archivos, el usuario tenía que recordar él mismo el encabezado y el número de pista en el que se guardó el archivo.
No es un gran sistema operativo de disco, pero funcionó. Las rutinas para leer el teclado y enviar información a la pantalla también fueron mínimas.
Respuesta3
Creo que hay dos puntos a abordar aquí:
- Algunos sistemas no tienen un sistema de archivos. ¿Eso significa que no tienen un sistema operativo?
- ¿Dónde se puede almacenar la configuración si no hay un sistema de archivos (o es de solo lectura)?
Metal básico
Algunos sistemas no tienen un sistema operativo: hay una aplicación y el software de esa aplicación interactúa directamente con el hardware. Esto es común en sistemas de microcontroladores pequeños, donde la complejidad es baja. En este escenario, el software normalmente será personalizado, y el equipo de desarrollo escribirá los controladores y la abstracción desde cero, o utilizará el código del proveedor para facilitar su objetivo de diseño.
Dicho esto, tales sistemaspuedeSoporta un sistema de archivos. Sistemas de archivos simples comoGORDOse utilizan comúnmente para almacenar registros y proporcionar actualizaciones de firmware de manera funcional.
La configuración a menudo se formateará y escribirá directamente en un almacenamiento no volátil sin utilizar un sistema de archivos.
Sistemas integrados: programador
Subiendo de nivel nos encontramos con sistemas ligeramente más grandes y un aumento de complejidad. En este punto encontraremosSistemas operativos en tiempo real(RTOS), aunque no todos tienen requisitos de tiempo real, que están diseñados con un conjunto específico de características. Estos sistemas se construirán con un conjunto de "tareas" que están programadas para su ejecución; por lo general, no se pueden ejecutar otras tareas arbitrarias. Es común que estos sistemas admitan fácilmente sistemas de archivos, redes, etc. mediante el uso de código producido por el proveedor o la comunidad.
La configuración puede escribirse en un almacenamiento sin formato o almacenarse como un archivo en un sistema de archivos.
ExaminarRTOS gratuitos,HiloX, etc...
Sistemas embebidos
Ahora nos encontramos con sistemas embebidos que son aún más grandes. La complejidad ha aumentado y en este nivel encontramos una dependencia de un sistema de archivos para organizar la configuración del sistema y las aplicaciones/software. Ahora podemos ejecutar aplicaciones arbitrarias y los núcleos vendrán con una gran cantidad de controladores para diversos hardware.
Aquí estamos mirandolinux,QNX, "Compacto integrado de Windows", etc...
El software normalmente se construiráparael sistema, recurriendo a proyectos comocaja ocupadapara proporcionar gran parte de la funcionalidad y utilizar proyectos comoraíz de construcciónyyoctopara construir las diversas aplicaciones y producir una imagen.
Lo más probable es que la configuración se escriba en un archivo, aunque esto no impide que los desarrolladores utilicen almacenamiento sin formato como antes, ya que estos sistemas normalmente se ejecutarán en hardware personalizado.
El sistema de archivos es obligatorio, pero es posible que no se pueda escribir y puede que sea puramente "en memoria": tamaño limitado y todos los cambios (si es RW) se pierden al reiniciar.
Sistemas completos de usuario/servidor
Aquí estamos viendo PC de escritorio que ejecutan un sistema de ventanas, sistemas de archivos de lectura y escritura (generalmente en discos grandes), ejecución de código arbitrario en abundancia, la configuración definitivamente se almacena como un archivo: este es el tipo de sistema con el que está familiarizado. Los servidores son generalmente bastante similares a las PC de escritorio en los términos que estamos discutiendo aquí.
En el mundo Linux esto sería un "distribución". Generalmente encontrará alguna forma de administración de paquetes, por lo que instalar/desinstalar una aplicación es una cuestión de descargarla y descomprimirla (compilar también si está utilizando aplicaciones comoGentoo).
Aquí estamos viendo Linux,ventanas,Servidor de windows, etc...
Anteriormente mencioné que los sistemas más pequeños generalmente almacenan la configuración en un almacenamiento no volátil sin procesar. Esto se hace decidiendo qué desea almacenar, recopilando los datos y escribiéndolos en el almacenamiento.
Por ejemplo, es posible que queramos almacenar la siguiente configuración simple:
- La brida tiene exactamente
52458
pasos de rotación. - La brida se debe girar hasta colocarla
5547
en05:00
- La brida debe girarse a positrones
49885
en18:00
Todos los números caben en un entero de 16 bits, así que usémoslo para representar pasos. Por estos tiempos, decidimos almacenar en BCD para una mejor compatibilidad con un RTC, y eso es todo.
Tenemos los siguientes datos:
- 52458 -->
0xCCEA
- 5547 -->
0x15AB
- 05:00 -->
0x0500
- 49885 -->
0xC2DD
- 18:00 -->
0x1800
Sus valores se pueden cotejar y escribir en el almacenamiento como 10 bytes:
0x00000000 CC EA 15 AB 05 00 C2 DD 18 00
La aplicación sabe cómo interpretar esto, por lo que no necesita soporte. Por soporte me refiero a ubicar el área de almacenamiento por nombre (por ejemplo: sistema de archivos y nombre de archivo) y compartir la comprensión de la configuración con un humano (por ejemplo:JSON/XML/YAML/TOML).