Simular FAT16

12 respostas
mota

Olá gnt!!
Eu preciso de ajuda para simular um FAT16 em JAVA.
Eu estou apenas sem idéias de como vai ficar esse programa. A professora passou os pré-requisitos, mas não estou conseguindo visualizá-lo.
O programa é teoricamente simples, vc define o tamanho da partição, o programa a partir daí define o tamanho dos clusters.
Aí eu posso adicionar e excluir “arquivos”. E não preciso simular um desfragmentador de disco.

Alguém pode me ajudar? Estou realmente sem idéias.

Desde já, agradeço!!

12 Respostas

E

Você não precisa de ideias. Só precisa pôr a mão na massa. A professora passou os pré-requisitos e também um link para a definição da FAT?

Se não tiver essa definição, leia-a em:

http://technet.microsoft.com/en-us/library/bb457112.aspx#EFAA

mota

Você não precisa de ideias. Só precisa pôr a mão na massa. A professora passou os pré-requisitos e também um link para a definição da FAT?

Ela passou sim. Mas mesmo assim eu tou em dúvida. C já fez algo parecido? Como ficou ?!
Ou cmo vc acha que pode ficar, caso n tenha feito?

M

Coloca o enunciado do exercício e o link fornecido.
Com mais detalhes é possível saber se é um programa complicado ou não.

Boa sorte!

E

Uma dica é você fazer o seguinte: pegue um disquete (que é formatado como FAT-12 em vez de FAT-16, mas isso é mais um detalhe que outra coisa) e faça uma formatação completa (não uma “rápida”).
Use um programa que permita obter uma imagem física desse disquete e examine o arquivo binário resultante.
A seguir, comece a criar arquivos vazios e diretórios nesse disquete, crie novamente uma imagem física, e então compare as alterações que ocorreram na FAT e nos diretórios,
Crie arquivos com conteúdo conhecido e veja o que ocorre.
Por fim, delete os arquivos e veja o que ocorre na FAT.

mota

MINI-PROJETO Nº 1: FUNCIONAMENTO DO SISTEMA DE ARQUIVOS FAT16

Desenvolver um programa que simule o funcionamento do sistema de arquivos FAT16, de acordo com a especificação a seguir:

Entradas para o programa

  1. Tamanho da partição
  2. Nome do arquivo
  3. Tamanho do arquivo em bytes

Operações que o programa deve realizar

  1. Incluir arquivos (Obs.: exibir quantos clusters utilizou na inclusão)
  2. Excluir arquivos (Obs.: exibir quantos clusters utilizou na exclusão)
  3. Exibir clusters utilizados por todos os arquivos, clusters livres, e área disponível em disco
  4. Exibir a tabela com alocação dos arquivos (FAT)

O programa deve

  1. Simular o particionamento (receber o tamanho da partição) do disco rígido apenas uma vez por execução.
  2. Considerar um disco rígido de 2GB de capacidade.
  3. Simular tamanhos de partição 2GB, menor que 1GB, menor que 512MB, menor que 256MB, de acordo com o definido abaixo:
  • Tamanho da partição Tamanho dos clusters

    Entre 1 e 2GB 32KB
    Menor que 1GB 16KB
    Menor que 512MB 8KB
    Menor que 256MB 4KB

Obs1: A linguagem de programação fica a critério do aluno.
Obs2: Os entregáveis são o código fonte e o executável.

Eis o projeto!!

KWill

mota:
MINI-PROJETO Nº 1: FUNCIONAMENTO DO SISTEMA DE ARQUIVOS FAT16

Desenvolver um programa que simule o funcionamento do sistema de arquivos FAT16, de acordo com a especificação a seguir:

Entradas para o programa

  1. Tamanho da partição
  2. Nome do arquivo
  3. Tamanho do arquivo em bytes

Operações que o programa deve realizar

  1. Incluir arquivos (Obs.: exibir quantos clusters utilizou na inclusão)
  2. Excluir arquivos (Obs.: exibir quantos clusters utilizou na exclusão)
  3. Exibir clusters utilizados por todos os arquivos, clusters livres, e área disponível em disco
  4. Exibir a tabela com alocação dos arquivos (FAT)

O programa deve

  1. Simular o particionamento (receber o tamanho da partição) do disco rígido apenas uma vez por execução.
  2. Considerar um disco rígido de 2GB de capacidade.
  3. Simular tamanhos de partição 2GB, menor que 1GB, menor que 512MB, menor que 256MB, de acordo com o definido abaixo:
  • Tamanho da partição Tamanho dos clusters

    Entre 1 e 2GB 32KB
    Menor que 1GB 16KB
    Menor que 512MB 8KB
    Menor que 256MB 4KB

Obs1: A linguagem de programação fica a critério do aluno.
Obs2: Os entregáveis são o código fonte e o executável.

Eis o projeto!!

Oxi, esse para mim é outro da série de exercícios ingratos para compreensão de sistemas operacionais. Se bem me lembro tive que simular memória virtual paginada em arquivo para minha matéria de Sistemas Operacionais, onde fiz um gerenciador de memória básicão.
Se não me engano o FAT16 indexa todos os arquivos de uma partição numa grande tabela conhecida como “Tabela FAT”, colocando nessa tabela informações como tamanho, nome do arquivo e o primeiro cluster do arquivo. Cada cluster de um arquivo aponta para um outro cluster se esse não for o último cluster do arquivo.
O endereçamento desses clusters é feito usando 16 bits, então só pode haver 65536 clusters numa partição.
Acho que essas informações devem ajudar em algo.

Inté.

mota

É exatamente isso!! kkkkkkkkkkkkkkkkkkkkkkkkk !!!

Eu queria idéias de como fazer, e é exatamente o q estou tendo com esse papo com vcs. Estão ajudando mto. Continuem mandando idéias.

M

Vou fornecer minha primeira idéia. Pode ser uma aplicação do tipo console.
1-) pelo console, solicitar o tamanho da partição, validando-o
2-) exibir o menu de operações
3-) é preciso uma classe para persistir as informações (tamanho da partição, arquivos (nome e tamanho) e os métodos para as operações
4-) pode usar um enum para o tamanho dos clusters

Mas não tem que ser assim, é só uma idéia.

Você já tem algum conhecimento em Java? Se não tiver seria melhor estudar a linguagem primeiro antes de começar a codificar.

Boa sorte!

mota

Vou fornecer minha primeira idéia. Pode ser uma aplicação do tipo console.
1-) pelo console, solicitar o tamanho da partição, validando-o
2-) exibir o menu de operações
3-) é preciso uma classe para persistir as informações (tamanho da partição, arquivos (nome e tamanho) e os métodos para as operações
4-) pode usar um enum para o tamanho dos clusters

Mas não tem que ser assim, é só uma idéia.

Você já tem algum conhecimento em Java? Se não tiver seria melhor estudar a linguagem primeiro antes de começar a codificar.

Boa sorte!

Eu já tenho alguma experiência com a linguagem.
Pensei em fazer um menuzinho utilizando o swing, ao invés do console pq a Prof disse q queria o executável.

  • O grande problema é na simulação dos clusters, e na hora de “apagar”, para ele apontar o cluster vago.

  • Outro problema é na gravação do cluster. Na hora de gravar o arquivo, mesmo que ele ocupe a décima parte de um Clusters o mesmo ficará ocupado. Uma função de arredondamento não funcionaria.

mota
package sistemasDeArquivos;

import java.util.Scanner;

public class Fat16 {
	
	int partiMax = 2048;
	int partiMin = 256;
	int partTam;
	int cluster;
	int VetorCluster[];
	int m;
	

	public Fat16() {
		
	}
	
	public void TamanhoPart (){
		
		 Scanner s = new Scanner(System.in);
		
		System.out.println("Digite o tamanho da partição");		
		int partTam = s.nextInt();
	
			
	}
	
	public void DefineCluster(){
		
		if (partTam<=0){
			
			System.out.println("Tamanho de partição não autorizado");
			
		}


		if ((partTam >0)||(256<=partTam)){
			
			cluster = 4;
			System.out.println("Tamanho do cluster é de 4Kb");
			
		}
		if ((partTam>256)||(partTam<=512)){
			
		cluster = 8;
		System.out.println("Tamanho do cluster é de 8Kb");
		
			
		}
		if ((partTam>512)||(partTam<1024)){
			
			cluster = 16;
			System.out.println("Tamanho do cluster é de 16Kb");
			
		}
		if ((partTam>=1024)||(partTam<=2048)){
			
			cluster = 32;
			System.out.println("Tamanho do cluster é de 32Kb");
		}
		
		if (partTam>2048){
			
			System.out.println("Tamanho de partição não autorizado");
			
		}
		
    }
}

Pessoal. Esse é o código que eu fiz para testar um requisito do Fat16. Sendo que quando digito no console qualquer valor, ele exibe as últimas mensagens dos últimos "if's".

Não sei como resolver o problema. Alguma sugestão ?!

mota

Pessoal

Já resolvi o problema. Foi burrice minha.
hauhauahuahauhuahauhauhauhauhauhah

mota

Gnt, essa é urgente. Preciso de um esquema de registro pra armazenar o seguinte.

Nome do arquivo, posição onde ele começa a ocupar outro array, posição em que ele termina de ocupar o outro array.

Por exemplo: Eu tenho a seguinte estrutura no meu programa.

Um array chamado VetorCluster, que tem um determinado número de posições.

Aí tenho a função GravaArquivo, que pede o número e tamanho do “arquivo”.

Então ele armazena o arquivo num array de String e o tamanho ele ocupa a qtde de Clusters correspondente ao tamanho do arquivo no array VetorClusters.

Estão entendendo?!

Aí eu preciso de um esquema que registre o nome do arquivo, posição do primeiro cluster onde ele é gravado e a posição do último cluster em que ele é gravado.

Como eu faço isso !?

Criado 5 de abril de 2010
Ultima resposta 13 de abr. de 2010
Respostas 12
Participantes 4