Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
In tre giorni a Las Vegas Oracle ha presentato agenti che eseguono il lavoro, l'alleanza con OpenAI e un cloud aperto agli acceleratori di tutti. Ma i clienti europei chiedono garanzie prima ancora delle funzionalità
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Abbiamo provato Samsung Galaxy Tab S12 Ultra nella versione 12 GB + 256 GB con tastiera, e il risultato è un tablet che in questa configurazione si comporta come un notebook con la fluidità tipica di Android. Spessore di 5,1 mm, display Dynamic AMOLED 2X da 14,6 pollici, MediaTek Dimensity 9500 e un software senza incertezze compongono un prodotto di vertice, con prezzi da 1.539 euro, frenato solo da un'autonomia nella parte bassa del confronto
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


Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
L'agente AI Wabi crea mini-app su misura...
Edge è il primo browser a supportare Acc...
L'IA di Firefox ora compila i moduli da ...
Tracking pixel nelle email: cosa cambia ...
La GeForce RTX 5080 da 24 GB potrebbe ar...
Apple mette alle strette OpenAI, la caus...
Xbox ancora in calo: ecco com'è a...
Car of the Year 2027: sette finaliste e ...
Google Beam cambia tutto: arrivano le vi...
Curry Barker, il regista di Obsession, p...
Intel Nova Lake: fino al 33% di prestazi...
L'IA accelera gli attacchi e complica la...
GTA 6 avrà circa 600.000 animazio...
SpaceX non ha più bisogno della NASA, e ...
Apple TV 4K e iPad mini OLED, Xcode 27.2...
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: 17:36.


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