Torna indietro   Hardware Upgrade Forum > Software > Programmazione

 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
OPPO ha appena lanciato sul mercato la nuova serie Find X10, che ha come smartphone premium il Find X10 Pro Max, uno smartphone completo, che fa del comparto fotografico il suo vero punto di forza. Ma sono tante le novità, tra cui l'AI che adesso diventa agentica. Ma andiamo a vedere nel dettaglio questo nuovo smartphone.
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato
Abbiamo provato la beta di World of Warcraft: Forever, il Classic+ di Blizzard in arrivo il 4 novembre: la nuova razza Skyborne restituisce la sensazione di un gioco nuovo, ma le zone storiche conservano la noia divertita di Classic. Classi ribilanciate, sciamani anche nell'Alleanza e un motore grafico che in 4K gira bene anche su una RTX 3070. Cosa cambia in Forever? La risposta nell'articolo
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita
TCL P80 Ultra abbina per la prima volta un pannello AMOLED alla tecnologia NXTPAPER con finitura opaca, affiancandoci una fotocamera periscopica da 50 MP con zoom ottico 3x, il SoC Dimensity 7400 Elite e una batteria da 5.800 mAh. Nella prova sul campo emergono luminosità di picco molto elevata, comparto fotografico solido per la fascia di prezzo e autonomia nella media, a fronte di velocità di scrittura dello storage piuttosto contenute
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-04-2009, 22:48   #1
jdluk87
Member
 
Iscritto dal: Jul 2008
Messaggi: 225
[C] simple memory management

Salve mi sto cimentando in un progetto da realizzare in C. Il progetto tratta la creazione di un software che simuli un semplice sistema per la gestione della memoria.

Sto impazzendo per scegliere le strutture dati necessarie per mantenere le informazioni relative ai blocchi di memoria, liberi/occupati, logici/fisici.

Sono arrivato ad avere due tipologie di blocchi, una per il fisico ed una per il logico, posto un po di codice per capirci meglio:

Codice:
/* 
Definizione della struttura di un singolo blocco logico.
Mantiene memorizzato indirizzo di inizio e fine blocco,
dimensione del blocco, pid del processo che ne ha richiesta
l'allocazione, puntatore al blocco fisico, puntatore a 
successivo e precedente.
*/

struct logic_block{
	type_logic st_block;
	type_logic lt_block;
	
	pid_t pid;
	size_t dim;
	
	phisic_block *log_phi;
	
	struct block *prec;
	struct block *next;
	};
	
typedef struct logic_block logic_block;

/* 
Definizione della struttura di un singolo blocco logico.
Mantiene memorizzato indirizzo di inizio e fine blocco,
dimensione del blocco, puntatore a successivo e precedente. 
*/

struct phisic_block{
	void *st_block;
	void *lt_block;
	
	size_t dim;
	
	struct block *prec;
	struct block *next;
	};
	
typedef struct phisic_block phisic_block;

/* Definizione della struttura dati per la gestione degli indirizzi logici. Abbiamo due liste, lab (list allocated block) relativa ai blocchi allocati e lfb (list free block) 
relativa ai blocchi liberi, inoltre sono presenti il numero dei blocchi, sia per quanto riguarda lfb sia per lab.*/
struct logic_gest_list{
	logic_block *lab;
	logic_block *lfb;
	int nab; //numero blocchi occupati
	int nfb; //numero blocchi liberi
	}logic_gest_list;

/* Definizione della struttura dati per la gestione degli indirizzi fisici. Abbiamo due liste, lab (list allocated block) relativa ai blocchi allocati e lfb (list free block) 
relativa ai blocchi liberi, inoltre sono presenti il numero dei blocchi, sia per quanto riguarda lfb sia per lab.*/
struct phisic_block{
	phisic_block *lab;
	phisic_block *lfb;
	int nab; //numero blocchi occupati
	int nfb; //numero blocchi liberi
	}phisic_gest_list;
Ovviamente andrà prevista una funzione di compattamento per la memoria fisica, mentre per la logica questo non è previsto, in quanto gli indirizzi logici servono appunto per tenere traccia dei fisici, cosi che all'interno di programmi si possa utilizzare il logico, senza pensare poi al fatto che il fisico cambi o meno. Quindi il logico non andrà cambiato.

Il problema è proprio nella struttura rappresentante i blocchi logici, in quanto non sempre avremo a disposizioni blocchi logici abbastanza grandi da contenere la prossima allocazione, dopo ovviamente un certo numero di allocazioni/deallocazioni avenute precedentemente. Dato che la memoria da gestire è di 16 mega e che le allocazioni vengono fatte a multiple di byte, si è pensato che quando abbiamo due blocchi logici liberi consecutivi procedere con una fusione, altrimenti nel caso in cui in un certo momento dovremmo allocare un blocco da 2 mega e abbiamo memoria libera, in quanto ad esempio abbiamo due blocchi logici liberi, ma non contigui ognuno di 1 mega, allora creare un nuovo blocco di 2 mega a partire dall'ultimo indirizzo utilizzato ed eliminare i 2 blocchi da 1 mega. Questo pensando che un processo non possa essere allocato, sempre parlando di indirizzamento logico, in uno spaziono non contiguo, ipotesi vera o non??

Secondo voi può andare??? a lungo andare, rappresentando gli indirizzi logici come interi, è possibile prevedere, dopo miglia di allocazione/deallocazioni (per assurdo), che gli interi finiscano?

Qualcuno ha qualche idea migliore per rappresentare le strutture relative ai blocchi logici??


Grazie a tutti
jdluk87 è offline   Rispondi citando il messaggio o parte di esso
Old 06-04-2009, 09:39   #2
jdluk87
Member
 
Iscritto dal: Jul 2008
Messaggi: 225
nessuno??
jdluk87 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato WoW Forever provato: il MMORPG che la community ...
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita TCL P80 Ultra: con un display AMOLED opaco &egra...
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio HUAWEI MatePad Air recensione: OLED opaco e tast...
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica NVIDIA RTX Spark: il PC Windows on ARM costruito...
Leica Q3 43 Formula 1: carbonio, Microve...
Quattro nuovi smartphone e tablet da HON...
Xiaomi Redmi Note 17 in offerta su Amazo...
Fastweb + Vodafone potenzia il supercomp...
Europa e Taiwan uniscono le forze: nasce...
Pixel 9, Google estende di un anno il se...
L'IA da 35B gira su iPhone a 20,51 token...
Questo drone ha salvato una vita, per la...
Windows 11, Microsoft corregge l'annunci...
Due connettori a 16 pin sulla RTX 5080 H...
IA agentica in banca e assicurazione, pe...
Robot aspirapolvere in offerta su Amazon...
Sigma potrebbe annunciare il 23 ottobre ...
37 miliardi di titoli spazzatura per i d...
Trump ha un'idea per convincere i cittad...
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:49.


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