Tongji University CS "Sistema operativo" Diseño del curso: sistema de archivos
Este proyecto está diseñado para el curso del sistema operativo del Departamento de Informática y Tecnología de la Universidad de Tongji en 2021. Implementación del sistema de archivos similar a UNIX.

La gran tarea más fácil de este semestre (principalmente sin una GUI), tardó 10 días en desarrollar el sistema de archivos
Si este almacén te ayuda, ¿me das una estrella?
Si tiene alguna pregunta, ¿también puede plantearlas en el tema para que otras personas se refieran o discutan juntas?
El repositorio sigue el protocolo de código abierto del MIT
Esta variable se usa principalmente para registrar la longitud del archivo actualmente leída. La existencia de esta variable reduce la dificultad de la indexación de archivos mixtos. Las funciones no necesitan calcular cuántos bloques de índice se usan el archivo, ni necesitan saber cuál es la estructura de índice mixto del archivo. Consideran directamente el archivo de índice como un archivo gigante con todos los bloques de índice que alcanzan el tamaño máximo. Comience a atravesar el archivo desde el índice directo, luego al índice de primer nivel y luego al índice de segundo nivel. Cuando la longitud alcanza el tamaño del archivo, puede salir directamente de la transferencia de archivos de cualquier tamaño. Sin embargo, la desventaja de este método es que cada vez que lee un archivo, comienza desde el encabezado del archivo, lo que reduce la eficiencia de la lectura y la escritura aleatoria.
Esta variable se usa principalmente para indicar qué línea el editor comienza a mostrar texto. Esta variable comienza a entrar en vigencia cuando el número de líneas de archivo excede la altura de la consola. El número de líneas asignadas al texto real del cursor de la consola debe agregarse a la variable START_LINE. Cuando el cursor se mueva a la línea de fondo, presione la tecla de flecha nuevamente, Start_line agregará una página hacia abajo del texto en el editor y viceversa.
Esta variable pertenece a la clase de interfaz de usuario de la línea de comandos y registra principalmente la ruta del usuario en el sistema de archivos. Porque en el sistema de archivos, todas las interfaces de operación se basan en la ruta absoluta, y los comandos ingresados por el usuario en la interfaz de línea de comandos se basan en la ruta relativa cur_dir. Por lo tanto, cuando la interfaz de usuario usa la interfaz del sistema de archivos, Cur_dir debe empalmarse con la entrada de ruta por el usuario, y la ruta absoluta debe pasar como un parámetro a la función de interfaz del sistema silencioso.


Este sistema de archivos se ejecuta con un sistema operativo Windows de 64 bits. El tamaño de volumen de archivo simulado del sistema del archivo es de 128 MB. Asegúrese de que haya suficiente espacio libre en el directorio del programa.
Está prohibido cerrar el programa directamente al salir del programa. Debe usar el comando Salir para salir del sistema de archivos, de lo contrario, puede causar errores o bloqueos del sistema de archivos.
Modifique cuidadosamente los archivos /etc/users.txt y /etc/groups.txt. Estos dos archivos están relacionados con la administración de usuarios. Si el formato no se modifica correctamente, puede hacer que el sistema de archivos no pueda iniciar sesión u otros problemas de permiso.
Si ocurren los dos problemas anteriores, intente formatear el sistema de archivos.
Comandos disponibles cuando no se inician sesión:
| Orden | parámetro | Función |
|---|---|---|
| acceso | Nombre de usuario (cadena) | Inicio de sesión de usuario |
| salida | Salir del sistema | |
| formato | Formato del sistema de archivos | |
| ayuda | Mostrar lista de solicitaciones del sistema |
Comandos disponibles en el estado de inicio de sesión:
| Orden | parámetro | Función |
|---|---|---|
| Cierre de sesión | Cierre de sesión del usuario | |
| salida | Salir del sistema | |
| mkdir | Nombre del directorio (cadena, longitud inferior a 28 bytes, no puede ser un directorio de niveles múltiples) | Crear un subdirectorio |
| cd | Nombre del directorio (cadena, longitud inferior a 28 bytes, el nombre del subdirectorio en el directorio actual no puede ser un directorio de niveles múltiples) | Ir al subdirectorio |
| LS | Mostrar la lista actual de directorio | |
| rmdir | Nombre del directorio (cadena, longitud inferior a 28 bytes, el nombre del subdirectorio en el directorio actual no puede ser un directorio de niveles múltiples) | Eliminar subdirectorios |
| tocar | Nombre del archivo (cadena, longitud inferior a 28 bytes, no puede ser un directorio de niveles múltiples) | Crea un nuevo archivo |
| chmod | Nombre del archivo (cadena, longitud inferior a 28 bytes, el nombre del archivo en el directorio actual no puede ser un permiso de directorio de niveles múltiples) (número octal de tres dígitos) | Modificar permisos de archivo o directorio |
| RM | Nombre del archivo (cadena, longitud inferior a 28 bytes, el nombre del archivo en el directorio actual no puede ser un directorio de niveles múltiples) | Eliminar archivos |
| usuarios | Nombre del grupo de usuarios de nombre de usuario (String) (String, grupo de usuarios ya debe existir) | Agregar un usuario |
| usuarios | Nombre de usuario (cadena, usuario ya debe existir) | Eliminar usuarios |
| grupo | Nombre del grupo de usuarios (cadena) | Agregar un grupo de usuarios |
| groupdel | Nombre del grupo de usuarios (cadena, grupo de usuarios ya debe existir) | Eliminar grupo de usuarios |
| df | Verifique el uso de disco | |
| espectáculo | Nombre del archivo (cadena, longitud inferior a 28 bytes, el nombre del archivo en el directorio actual no puede ser un directorio de niveles múltiples) | Imprima el contenido del archivo. Si el archivo no es un archivo de caracteres, puede causar errores |
| VI | Nombre del archivo (cadena, longitud inferior a 28 bytes, el nombre del archivo en el directorio actual no puede ser un directorio de niveles múltiples) | Abra un archivo con un editor |
| formato | Formato del sistema de archivos | |
| Win2FS | Ruta de archivo en Windows (cadena, cumple con las especificaciones de ruta de archivo de Windows) Nombre del archivo en el directorio actual del sistema de archivos FS (cadena, longitud menos de 28 bytes, el nombre del archivo en el directorio actual no puede ser un directorio de niveles múltiples) | Copiar el contenido del archivo de Windows a los archivos del sistema de archivos FS |
| fs2win | Nombre del archivo En el directorio actual de la ruta del archivo del sistema FS (cadena, longitud inferior a 28 bytes, el nombre del archivo en el directorio actual no puede ser un directorio de niveles múltiples) ruta de archivo en Windows (cadena, cumple con las especificaciones de ruta del archivo de Windows) | Copiar el contenido del sistema de archivos FS al archivo de Windows |
| CLS | Borrar la pantalla | |
| ayuda | Mostrar lista de solicitaciones del sistema |
Instrucciones del editor:
Después de ingresar al editor, puede mover el cursor a través de las teclas de flecha. Cuando el cursor se encuentra en los límites superior e inferior, puede mover el cursor al límite nuevamente para completar el giro de la página del contenido de texto, ingrese la tecla ENTER para eliminar los caracteres antes del cursor, ingrese a otros caracteres para insertar caracteres en el cursor, presione la tecla ESC para salir y guardar el texto. "□" en el editor indica la clave Ingrese, y "#" indica el final del archivo. Tenga en cuenta que el editor solo puede manejar los caracteres ASCII.
El programa puede causar varias excepciones debido a la entrada de comando inapropiada, el espacio completo del sistema de archivos, los permisos ilegales, etc. Cuando se produce una excepción, el programa generará la información de excepción a la consola. Resuelva la excepción en función de la información de salida. Si la excepción nunca se resuelve, intente formatear el sistema de archivos.
La definición macro de los parámetros sintonizables se encuentra en el archivo de sistemas de archivos.h
| parámetro | ilustrar |
|---|---|
| VERSIÓN | Versión del sistema de archivos |
| Disco_name | Simular el nombre del archivo de volumen del archivo |
| Disco_size | El tamaño del disco de volumen del archivo es al menos mayor que 1024*512 bytes. Se recomienda establecerlo en (261120+1024) *512 bytes, es decir, 128 MB |
| Nombre del archivo | ilustrar |
|---|---|
| FileSystem.h | Archivo de encabezado del sistema de archivos |
| FileSystem.cpp | Archivos del sistema de archivos C ++ |
| main.cpp | Archivo del programa principal C ++ (interfaz de usuario de la línea de comandos) |
| test.cpp | El archivo de prueba de la interfaz de archivo del sistema de archivo no se compila en el programa ejecutable final. |
| Fs.data | Simular volúmenes de archivo de disco |
| File System.exe | Programa ejecutable (interfaz de usuario de línea de comandos) |







