ubicado son que los journaling filesystem encuentra donde dentro definición filesystems operating-system

filesystems - son - que es journaling file system



¿Cómo implementar un sistema de archivos muy simple? (5)

Echa un vistazo a FUSE: http://fuse.sourceforge.net/

Esto le permitirá escribir un sistema de archivos sin tener que escribir un controlador de dispositivo. A partir de ahí, comenzaría con un solo archivo. Básicamente, cree un archivo que tenga (por ejemplo) 100 MB de longitud, luego escriba sus rutinas para leer y escribir desde ese archivo.

Una vez que esté satisfecho con los resultados, puede comenzar a escribir un controlador de dispositivo y hacer que su controlador se ejecute en un disco físico.

Lo bueno es que puedes usar casi cualquier idioma con FUSE, no solo C / C ++.

Me pregunto cómo el sistema operativo está leyendo / escribiendo en el disco duro.
Me gustaría como ejercicio implementar un sistema de archivos simple sin directorios que puedan leer y escribir archivos.
¿Dónde empiezo?
¿C / C ++ hará el truco o tengo que ir con un enfoque de nivel más bajo?
¿Es demasiado para una persona manejar?


La respuesta a su primera pregunta es que, además de Fuse como alguien más le dijo, también puede usar Dokan que hace lo mismo para Windows, y desde ahí solo tiene que ver con leer y escribir en una partición física ( http://msdn.microsoft.com/en-us/library/aa363858%28v=vs.85%29.aspx (lea particularmente la sección sobre Discos físicos y volúmenes)).

Por supuesto, en Linux o Unix, además de usar algo como Fuse, solo tiene que emitir, una llamada de lectura o escritura al dispositivo deseado en / dev / xxx (si es root), y en estos términos, los Unices son más amigables o más Inseguro en función de su punto de vista.

Desde allí, intente implementar un sistema de archivos simple como Fat, o algo más exotérico como un sistema de archivos tar, o incluso algún sistema de archivos simple basado en conceptos de Unix como UFS o Minux, o simplemente algo que solo registre las llamadas realizadas y sus argumentos a un archivo de registro (y esto lo ayudará a comprender las llamadas que se realizan al controlador del sistema de archivos durante el uso regular de su computadora).

Ahora su segunda pregunta (que es mucho más simple de contestar), sí C / C ++ hará el truco, ya que son la lengua franca del desarrollo del sistema, también gran parte de su código de ejemplo estará en C / C ++, así que en Lea menos C / C ++ en su desarrollo.

Ahora, para su tercera pregunta, sí, esto lo puede hacer una sola persona, por ejemplo, el sistema de archivos ext (ampliamente conocido en el mundo Linux por sus sucesores como ext2 o ext3) fue creado por un solo desarrollador Theodore Ts''o, así que no piense que estas cosas no son factibles por una sola persona.

Ahora las notas finales, recuerde que un sistema de archivos real interactúa con muchos otros subsistemas en un kernel regular, por ejemplo, si tiene una computadora portátil y la hibernación, el sistema de archivos debe eliminar todos los cambios realizados en los archivos abiertos, si tiene una El archivo de paginación en la partición o incluso si el archivo de paginación tiene su propio sistema de archivos, afectará su sistema de archivos, particularmente los tamaños de bloque, ya que tenderán a ser iguales o potencias del tamaño del bloque de página, porque es fácil colocar un bloque desde el Sistema de archivos en la memoria que por coincidencia es igual al tamaño de la página (porque eso es solo una transferencia).

Y también, seguridad, ya que querrá controlar a los usuarios y qué archivos leen / escriben y eso generalmente significa que antes de abrir un archivo, tendrá que saber qué usuario ha iniciado sesión y qué permisos tiene para ese archivo. Y, obviamente, sin el sistema de archivos, los usuarios no pueden ejecutar ningún programa ni interactuar con la máquina. Las capas modernas del sistema de archivos también interactúan con el subsistema de red debido a que existen sistemas de archivos distribuidos y de red.

Entonces, si quieres ir y aprender sobre cómo hacer sistemas de archivos del kernel, esas son algunas de las cosas de las que tendrás que preocuparte (además de conocer una interfaz VFS)

PD: si desea que los permisos de Unix funcionen en Windows, puede usar algo como lo que MS usa para NFS en las versiones de servidor de Windows ( http://support.microsoft.com/kb/262965 )


Me resultó bastante fácil entender un sistema de archivos simple mientras utilizaba el sistema de archivos grueso en el microcontrolador avr.

http://elm-chan.org/fsw/ff/00index_e.html

Echa un vistazo al código para descubrir cómo funciona la grasa.


Para aprender las ideas de un sistema de archivos, no es realmente necesario usar un disco, creo. Simplemente crea una matriz de 512 bytes de matrices de bytes. Solo imagina que este es tu disco duro y comienza a experimentar un poco. También es posible que desee echar un vistazo a algunos de los libros de texto estándar del sistema operativo, como http://codex.cs.yale.edu/avi/os-book/OS8/os8c/index.html


Solo un complemento a lo que dijo Coyote21. Puede leer esta tesis http://www.minix3.org/theses/gerofi-minix-vfs.pdf

En esta tesis, puede aprender un poco más sobre VFS y algunos detalles se describen allí. Hay cosas muy útiles en el apéndice B. Hay una implementación de un sistema de archivos (no un sistema de archivos real, sino uno en la memoria).