Tongji University CS "Sistema Operacional" Design: Sistema de Arquivos
Este projeto foi projetado para o curso do sistema operacional do Departamento de Ciência da Computação e Tecnologia da Universidade Tongji em 2021. Implementando o sistema de arquivos do tipo Unix.

A grande tarefa mais fácil neste semestre (principalmente sem uma GUI), levou 10 dias para desenvolver o sistema de arquivos
Se este armazém o ajudar, me dê uma estrela?
Se você tiver alguma dúvida, também pode criá -las no assunto para que outras pessoas se referam ou discutam juntas?
O repositório segue o protocolo de código aberto do MIT
Essa variável é usada principalmente para gravar o comprimento do arquivo atualmente lido. A existência dessa variável reduz a dificuldade da indexação de arquivo misto. As funções não precisam calcular quantos bloqueios de índice o arquivo é usado, nem precisa saber qual é a estrutura de índice misto do arquivo. Eles consideram diretamente o arquivo de índice um arquivo gigante com todos os blocos de índice que atingem o tamanho máximo. Comece a atravessar o arquivo do índice direto, depois para o índice de primeiro nível e depois para o índice de segundo nível. Quando o comprimento atingir o tamanho do arquivo, você pode sair diretamente da travessia de arquivos de qualquer tamanho. No entanto, a desvantagem desse método é que toda vez que você lê um arquivo, ele começa no cabeçalho do arquivo, o que reduz a eficiência da leitura e da escrita aleatórias.
Essa variável é usada principalmente para indicar qual linha o editor começa a exibir o texto. Essa variável começa a entrar em vigor quando o número de linhas de arquivo excede a altura do console. O número de linhas mapeado para o texto real do cursor do console deve ser adicionado à variável start_line. Quando o cursor se mover para o resultado final, pressione a tecla de seta novamente, o start_line adicionará uma página do texto no editor e vice-versa.
Essa variável pertence à classe de interface do usuário da linha de comando e registra principalmente o caminho do usuário no sistema de arquivos. Porque no sistema de arquivos, todas as interfaces de operação são baseadas no caminho absoluto, e os comandos inseridos pelo usuário na interface da linha de comando são baseados no caminho relativo cur_dir. Portanto, quando a interface do usuário usa a interface do sistema de arquivos, o CUR_DIR deve ser unido com a entrada do caminho pelo usuário e o caminho absoluto deve ser passado como um parâmetro para a função de interface do sistema silencioso.


Este sistema de arquivos é executado com um sistema operacional Windows de 64 bits. O tamanho do volume de arquivo simulado do sistema de arquivos é de 128 MB. Verifique se há espaço livre suficiente no diretório do programa.
É proibido fechar o programa diretamente ao sair do programa. Você deve usar o comando de saída para sair do sistema de arquivos, caso contrário, ele poderá causar erros ou travamentos do sistema de arquivos.
Modifique cuidadosamente os arquivos /etc/users.txt e /etc/groups.txt. Esses dois arquivos estão relacionados ao gerenciamento de usuários. Se o formato não for modificado corretamente, poderá fazer com que o sistema de arquivos não pudesse fazer login ou outros problemas de permissão.
Se ocorrer os dois problemas acima, tente formatar o sistema de arquivos.
Comandos disponíveis quando não estão conectados:
| Ordem | parâmetro | Função |
|---|---|---|
| Conecte-se | Nome de usuário (string) | Login de usuário |
| saída | Saia do sistema | |
| formatar | Sistema de arquivos de formato | |
| ajuda | Mostrar lista de prompts de comando |
Comandos disponíveis no estado de login:
| Ordem | parâmetro | Função |
|---|---|---|
| Logout | Logout do usuário | |
| saída | Saia do sistema | |
| mkdir | Nome do diretório (string, comprimento menor que 28 bytes, não pode ser um diretório de vários níveis) | Crie um subdiretório |
| cd | Nome do diretório (string, comprimento inferior a 28 bytes, nome do subdiretório no diretório atual não pode ser um diretório de vários níveis) | Vá para o subdiretório |
| ls | Mostre a lista atual do diretório | |
| rmdir | Nome do diretório (string, comprimento inferior a 28 bytes, nome do subdiretório no diretório atual não pode ser um diretório de vários níveis) | Excluir subdiretos |
| tocar | Nome do arquivo (string, comprimento menor que 28 bytes, não pode ser um diretório de vários níveis) | Crie um novo arquivo |
| chmod | Nome do arquivo (string, comprimento menor que 28 bytes, o nome do arquivo no diretório atual não pode ser um diretório de vários níveis) (número octal de três dígitos) | Modificar permissões de arquivo ou diretório |
| rm | Nome do arquivo (string, comprimento menor que 28 bytes, o nome do arquivo no diretório atual não pode ser um diretório de vários níveis) | Excluir arquivos |
| UserAdd | Nome de usuário (String) Nome do grupo de usuários (String, Grupo de Usuário já deve existir) | Adicione um usuário |
| UserDel | Nome de usuário (string, o usuário já deve existir) | Excluir usuários |
| grupo | Nome do grupo de usuários (string) | Adicione um grupo de usuários |
| grupo | Nome do grupo de usuários (string, grupo de usuários já deve existir) | Excluir grupo de usuários |
| df | Verifique o uso do disco | |
| mostrar | Nome do arquivo (string, comprimento menor que 28 bytes, o nome do arquivo no diretório atual não pode ser um diretório de vários níveis) | Imprima o conteúdo do arquivo. Se o arquivo não for um arquivo de caracteres, pode causar erros |
| vi | Nome do arquivo (string, comprimento menor que 28 bytes, o nome do arquivo no diretório atual não pode ser um diretório de vários níveis) | Abra um arquivo com um editor |
| formatar | Sistema de arquivos de formato | |
| Win2fs | Caminho do arquivo no Windows (string, cumpra as especificações do caminho do arquivo do Windows) Nome do arquivo no diretório atual do sistema de arquivos FS (string, comprimento menor que 28 bytes, o nome do arquivo no diretório atual não pode ser um diretório de vários níveis) | Copie o conteúdo do arquivo do Windows para os arquivos do sistema de arquivos FS |
| fs2win | Nome do arquivo no diretório atual do sistema de arquivos FS (string, comprimento menor que 28 bytes, o nome do arquivo no diretório atual não pode ser um caminho de arquivo de diretório de vários níveis) no Windows (String, cumpre as especificações do caminho do arquivo do Windows) | Copie o conteúdo do sistema de arquivos FS para o arquivo Windows |
| cls | Limpe a tela | |
| ajuda | Mostrar lista de prompts de comando |
Instruções do editor:
Depois de entrar no editor, você pode mover o cursor pelas teclas de seta. Quando o cursor estiver localizado nos limites superior e inferior, você pode mover o cursor para o limite novamente para completar a página de giro do conteúdo do texto, insira a tecla Enter para excluir os caracteres antes do cursor, insira outros caracteres para inserir caracteres no cursor, pressionar a tecla ESC para sair e salvar o texto. "□" No editor indica a tecla Enter e "#" indica o final do arquivo. Observe que o editor pode lidar apenas com caracteres ASCII.
O programa pode causar várias exceções devido a entrada de comando inadequada, espaço completo do sistema de arquivos, permissões ilegais etc. Quando ocorre uma exceção, o programa produzirá as informações de exceção ao console. Resolva a exceção com base nas informações de saída. Se a exceção nunca for resolvida, tente formatar o sistema de arquivos.
A definição macro dos parâmetros ajustáveis está localizada no arquivo de sistema de arquivos.h
| parâmetro | ilustrar |
|---|---|
| VERSÃO | Versão do sistema de arquivos |
| Disk_name | Simular o nome do arquivo de volume de arquivo |
| Disk_size | O tamanho do disco de volume de arquivo é pelo menos superior a 1024*512 bytes. Recomenda -se configurá -lo para (261120+1024) *512 bytes, ou seja, 128 MB |
| Nome do arquivo | ilustrar |
|---|---|
| filesystem.h | Arquivo de cabeçalho do sistema de arquivos |
| filesystem.cpp | Arquivos C ++ do sistema de arquivos |
| main.cpp | Arquivo C ++ do programa principal (interface do usuário da linha de comando) |
| test.cpp | O arquivo de teste da interface do arquivo do sistema de arquivos não é compilado no programa final executável. |
| Fs.data | Simular volumes de arquivo de disco |
| Arquivo system.exe | Programa executável (interface do usuário da linha de comando) |







