Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
DEEBOT T90 PRO OMNI abbina un sistema di aspirazione basato su tecnologia BLAST ad un rullo di lavaggio dei pavimenti dalla larghezza elevata, capace di trattare al meglio le superfici di casa minimizzando i tempi di lavoro. Un robot completo che riesce anche ad essere sottile e garantire automazione ed efficienza nelle operazioni di pulizia di casa
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Per diversi giorni il Galaxy S26 Ultra di Samsung è stato il nostro compagno di vita. Oltre alle conferme del colosso coreano come la qualità del display e una suite AI senza rivali, arriva il Privacy Display, un unicum nel mondo smartphone. Ci sono ancora alcuni gap che non sono riusciti a colmare lato batteria e fotocamera, seppur con alcuni miglioramenti.
Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Abbiamo provato per voi il nuovo DLC lanciato a sorpresa da Blizzard per Diablo II: Resurrected e quella che segue è una disamina dei nuovi contenuti che abbiamo avuto modo di sperimentare nel corso delle nostre sessioni di gioco, con particolare riguardo per la nuova classe dello Stregone
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-04-2016, 18:07   #1
domenico88
Senior Member
 
L'Avatar di domenico88
 
Iscritto dal: Dec 2009
Messaggi: 1056
[JAVA] File System

Ciao a tutti
Dovrei sostenere a breve l esame di sistemi operativi all uni, frequento ingegneria informatica

Per la parte pratica mi e` stato assegnato un progetto per simulare diciamo un file system con operazioni di base, tipo creazione , lettura cancellazione e altre operazioni semplici di questo tipo

Ora sto studiando il file system per capire diciamo la parte logica e come viene implementata , cioe` le strutture dati utilizzate, linkedList oppure hashmaps con tabella file allocation table per l indirizzamento dei blocchi su disco.

Premetto che ho comunque delle basi di programmazione sia in c che in java, il fatto e` che la stesura di un programma di questo tipo richiede diverse linee di codice, e sinceramente non saprei da dove cominciare a lavorare..
Volevo chiedere se qualcuno magari piu` esperto potesse avere qualche risorsa utile su questo argomento e magari prendere spunto da documentazione ecc

Grazie in anticipo a tutti per l attenzione
__________________
Alimentatore corsair RM650W-AMD ryzen 5 5600x - 16GB RAM DDR4 3600mhz- Dissipatore be quite dark rock 4- AMD RX6800XT - SSD Samsung 980PRO 1TB - CASE corsair ICUE 220T
Asus rog strix 35"
domenico88 è offline   Rispondi citando il messaggio o parte di esso
Old 29-04-2016, 09:25   #2
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Ciao
scrivere o simulare un file system e' un lavoro piuttosto grosso, che va certamente oltre ad un semplice progetto per un esame.
Immagino quindi che ci siano limitazioni o ipotesi aggiuntive per limitare il lavoro da fare, giusto?

Io mi terrei sul semplice. Visto che si tratta di costruire una simulazione, farei la simulazione di un file system all'interno di un file. Fra l'altro, potrebbe anche essere utile
1 - scriverei un programmino (chiamato per esempio, DiskSpace) che crea un file delle dimensioni passate in ingresso. E' molto semplice e potrebbe anche non necessitare di un'interfaccia utente: gli si passa solo il nome del file da creare e la dimensione desiderata. Si tratta di poche linee di codice.
All'interno di questo file eseguirei poi le mie simulazioni;
2- scriverei un programmino (chiamato per esempio Format) che "formatta" il file creato al punto #1. Per formattare intendo creare le strutture dati che decido di utilizzare e che metterei in una posizione fissata (all'inizio del file, per esempio).
3 - scriverei un programma di utility per visualizzare lo stato del mio file: cosa c'e' nelle mie strutture dati, etc. Mi prenderei del tempo per fare in modo che questo programmino sia il piu' completo possibile, perche' sara' l'unico in grado di aiutarmi a trovare gli errori che inevitabilmente compirei nell'implementare i miei algoritmi;
4 - scriverei un programmino (chiamato per esempio Copy) che copia un file dal mio computer al mio nuovo file system. Userei l'utility fatta al passo #3 per verificare come stanno andando le cose;
5 - estenderei il programmino al passo #4 per fare la copia in direzione opposta, sempre verificando tutto con il programma al passo #3
6 - procederei allo stesso modo per spostamento, cancellazione, creazione directory, ecc.

Per quanto riguarda gli algoritmi e le strutture, mi terrei sul semplice anche in questo caso. Partirei addirittura a fare il primo file system senza directory (quindi potendo inserire solo file)...
__________________
In God we trust; all others bring data

Ultima modifica di sottovento : 29-04-2016 alle 09:33.
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 29-04-2016, 20:32   #3
domenico88
Senior Member
 
L'Avatar di domenico88
 
Iscritto dal: Dec 2009
Messaggi: 1056
Quote:
Originariamente inviato da sottovento Guarda i messaggi
Ciao
scrivere o simulare un file system e' un lavoro piuttosto grosso, che va certamente oltre ad un semplice progetto per un esame.
Immagino quindi che ci siano limitazioni o ipotesi aggiuntive per limitare il lavoro da fare, giusto?

Io mi terrei sul semplice. Visto che si tratta di costruire una simulazione, farei la simulazione di un file system all'interno di un file. Fra l'altro, potrebbe anche essere utile
1 - scriverei un programmino (chiamato per esempio, DiskSpace) che crea un file delle dimensioni passate in ingresso. E' molto semplice e potrebbe anche non necessitare di un'interfaccia utente: gli si passa solo il nome del file da creare e la dimensione desiderata. Si tratta di poche linee di codice.
All'interno di questo file eseguirei poi le mie simulazioni;
2- scriverei un programmino (chiamato per esempio Format) che "formatta" il file creato al punto #1. Per formattare intendo creare le strutture dati che decido di utilizzare e che metterei in una posizione fissata (all'inizio del file, per esempio).
3 - scriverei un programma di utility per visualizzare lo stato del mio file: cosa c'e' nelle mie strutture dati, etc. Mi prenderei del tempo per fare in modo che questo programmino sia il piu' completo possibile, perche' sara' l'unico in grado di aiutarmi a trovare gli errori che inevitabilmente compirei nell'implementare i miei algoritmi;
4 - scriverei un programmino (chiamato per esempio Copy) che copia un file dal mio computer al mio nuovo file system. Userei l'utility fatta al passo #3 per verificare come stanno andando le cose;
5 - estenderei il programmino al passo #4 per fare la copia in direzione opposta, sempre verificando tutto con il programma al passo #3
6 - procederei allo stesso modo per spostamento, cancellazione, creazione directory, ecc.

Per quanto riguarda gli algoritmi e le strutture, mi terrei sul semplice anche in questo caso. Partirei addirittura a fare il primo file system senza directory (quindi potendo inserire solo file)...
Ciao
innanzitutto grazie mille per aver risposto

Riguardo ai vincoli del progetto c era appunto una scrittura semplificata del file system con operazioni di read/write sui file , apertura e chiusura e poco altro..mi sembra pero` che le directory vengono richieste per un organizzazione gerarchica

La soluzione da te proposta riguardo all implementazione in un filesystem all interno di un file(suppongo si intende dello spazio su disco non allocato).. mi cogli impreparato...cioe` da quello che ho studiato un file system viene implementato in una partizione del disco dove vi e` un sottoinsieme di blocchi riservato al boot , al block0 superblock, ai descrittori dei file e ai bit di controllo e ai file e alle directory appunto

Le classi che avevo pensato di implementare sarebbero

Una classe Disco dove simulare il nostro spazio per lo storage con operazioni di ricerca, lettura o scrittura

Una classe per modellare un descrittore del file, come ad esempio un inode, contenente le info del file, il puntatore ai blocchi sul disco, il tipo del file ecc

Comunque ho trovato un risorsa utile di un progetto dove ce` qualche spiegazione sull implementazione proprio in java

Cerco di fare una piccola sintesi con il codice allegato e postarla entro stasera

Grazie ancora dell attenzione
__________________
Alimentatore corsair RM650W-AMD ryzen 5 5600x - 16GB RAM DDR4 3600mhz- Dissipatore be quite dark rock 4- AMD RX6800XT - SSD Samsung 980PRO 1TB - CASE corsair ICUE 220T
Asus rog strix 35"
domenico88 è offline   Rispondi citando il messaggio o parte di esso
Old 04-05-2016, 17:44   #4
domenico88
Senior Member
 
L'Avatar di domenico88
 
Iscritto dal: Dec 2009
Messaggi: 1056
Ciao

Scrivo un po` la sintesi di quello che sono riuscito a recuperare..

Allora le direttive del progetto sono

"Si realizzi, a grandi linee, un file system proprietario in grado di eseguire le operazioni minimali: creazione/distruzione/modifica files, permessi di accesso, link"

Questo e` tutto quello che ho a disposizione per scrivere il programma

Ho recuperato del materiale su internet di un libro americano `Operating system concepts`

Faccio un po` una sintesi del capito sul file system dove ce' qualche riga di codice
Dice di progettare un file system su un disco simulato basato su un format Unix, con struttura dati per memorizzare il file, i-Node, che elenca un insieme di attributi e I puntatori ai blocchi su disco per un dato file

La classe Disco Disk.java , usando un file chiamato Disk

Codice:
 NUM_BLOCCHI e DIM_BLOCCO
in byte per I blocchi allocati

contiene i metodi

Codice:
void read(int ind_blocco, byte[] buffer)
   //Legge da un numero indice di blocco specificato i dati e li memorizza  nel buffer 

    void write (int ind_blocco, byte[] buffer)
   // scrive il contenuto del buffer nei blocchi specificati da ind_blocco
Codice:
la classe Disco 
public class Disk {
public void read(int blocknum, byte[] buffer) {}
public void read(int blocknum, SuperBlock block) {}
public void read(int blocknum, InodeBlock block) {}
public void read(int blocknum, IndirectBlock block) {}
public void write(int blocknum, byte[] buffer) {}
public void write(int blocknum, SuperBlock block) {}
public void write(int blocknum, InodeBlock block) {}
public void write(int blocknum, IndirectBlock block) {}
public void stop() {}
}

 //stop(), ferma il disco e riporta il conteggio delle operazioni di lettura e scrittura effettuate
Il disco ha quindi una partizione definita da

[ SuperBlocco - Blocchi Inode - Blocchi dei dati ]

Dovrei creare una classe per ogni parte
Cioe

Classe Superblocco
Contenente
Numero di blocchi del file system --- int size (esempio)
Numero di blocchi iNodes int iSize
Primo blocco della Lista int freeList

I puntatori ai blocchi su disco sono interi con range tra [1 - Disk.NUM_BLOCCHI -1]

Questa invece la classe iNode

Codice:
class Inode {
// size of an inode in bytes
public final static int SIZE = 64;
int flags;
int owner;
int fileSize;
public int pointer[] = new int[13];
}
Mi sa che non ne vengo fuori facilmente , anche perche dopo mi perdo un po` con le spiegazioni

Esempio come dovrei implementare le funzioni della classe Disk?

Grazie in anticipo dell attenzione
__________________
Alimentatore corsair RM650W-AMD ryzen 5 5600x - 16GB RAM DDR4 3600mhz- Dissipatore be quite dark rock 4- AMD RX6800XT - SSD Samsung 980PRO 1TB - CASE corsair ICUE 220T
Asus rog strix 35"
domenico88 è offline   Rispondi citando il messaggio o parte di esso
Old 06-05-2016, 10:28   #5
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Java non mette a disposizione classi o metodi per l'indirizzamento di blocchi sul disco. Queste operazioni possono essere implementate con altri linguaggi in librerie esterne e poi chiamate da Java, ma a questo punto non e' piu' programmazione java, no?

Alcuni sistemi operativi (Linux, Windows) mettono a disposizione dei "file speciali" che rappresentano il disco. Quindi, a patto di avere i permessi necessari, e' possibile aprire quel file come se fosse un file qualsiasi, tenendo pero' in mente che si andra' ad indirizzare dei blocchi sull'intera partizione.
Per questo motivo, l'idea originaria di aprire un file regolare, preallocarlo e considerarlo come se fosse il file system che si vuole creare non e' proprio campata per aria, ma e' una simulazione realistica che potrebbe poi essere effettivamente utilizzata sul file speciale.

Per quanto riguarda il file system da creare, ho visto che ti sei informato; tuttavia non devi realizzare tutto quanto! Il mio consiglio e' di semplificare. Come ti dicevo, dovresti crearti una tabella iniziale con i parametri che hai fissato (dimensione del blocco, ecc.). Subito dopo potresti mettere la tabella che rappresenta la directory ROOT, nella quale ogni entry e' un file (ed eventualmente una directory) contenente nome, dimensione, data... ed il numero del primo blocco allocato. In realta', simulando gli i-node, il numero del primo blocco non sara' effettivamente quello allocato per i tuoi dati, ma il blocco contenente i puntatori ai dati da te allocati.

Non dovrebbe essere difficile, no? Certo, non e' una passeggiata ma definendo le tue strutture e gestendole bene dovresti riuscire a cavartela
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lav...
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo Recensione Samsung Galaxy S26 Ultra: finalmente ...
Diablo II Resurrected: il nuovo DLC Reign of the Warlock Diablo II Resurrected: il nuovo DLC Reign of the...
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo HP OMEN MAX 16 con RTX 5080: potenza da desktop ...
JBL Tune Flex 2 in forte sconto su Amazo...
Galaxy S26 Ultra Enterprise Edition crol...
OMO X: la prima moto elettrica auto-bila...
NVIDIA sta fornendo circa il 20% in meno...
L'interfaccia Liquid Glass di Apple &egr...
Maserati diventa di Xiaomi? Le indiscrez...
Pragmata supera i 2 milioni di wishlist ...
Ultime ore per le Offerte di Primavera: ...
Bitcoin, 20 milioni di BTC minati: l'ind...
Microsoft ridimensiona Copilot su Window...
Ultime ore per le Offerte di Primavera: ...
FRITZ!Box 6825 4G: il router LTE che fun...
Abbiamo scoperto la gamma Ego Power+ 202...
Il telescopio spaziale James Webb ha per...
Sony WH-1000XM5 in forte sconto: le cuff...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 14:33.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v