• Non ci sono risultati.

Corso di Ingegneria Elettronica Insegnamento di “Strutture Software 1” a.a. 2008-09 Esercitazione n. 6

N/A
N/A
Protected

Academic year: 2021

Condividi "Corso di Ingegneria Elettronica Insegnamento di “Strutture Software 1” a.a. 2008-09 Esercitazione n. 6"

Copied!
1
0
0

Testo completo

(1)

Corso di Ingegneria Elettronica

Insegnamento di “Strutture Software 1” a.a. 2008-09

Esercitazione n. 6

1. Definire la classe SortedLinkedList che estende la classe LinkedList (vista a lezione) e che mantiene ordinata la lista: ridefinire il metodo add() affinché inserisca gli elementi in ordine. Gli oggetti da inserire devono essere confrontabili e quindi devono implementare l’interfaccia IComparable. Si ordini la lista in modo che il valore massimo sia in testa (first) e il valore minimo in coda (last).

Verificare la correttezza dell’implementazione: per esempio usando sequenze di stringhe in ordine, in ordine inverso, casuali, uguali. Verificare con sequenze di 21 elementi interi casuali, con valori compresi nell’intervallo [-30,30].

2. Sviluppare una classe Process che descriva un processo. Definire tre campi: un intero che identifica il processo (pid), una stringa per il nome del processo e un intero per l’occupazione di memoria. Definire il costruttore della classe e il metodo ToString(). Implementare l’interfaccia IComparable: il confronto è fatto sulla memoria utilizzata.

3. Scrivere una classe (che contiene il Main()) in cui creare un oggetto di tipo SortedLinkedList, lista di oggetti Process. La sequenza di processi “in ingresso al sistema” è contenuta nel file processes.txt: ogni riga contiene i dati di un processo, cioè il pid, il nome e la memoria occupata. Per simulare l’occupazione della memoria del sistema in ogni istante, eseguire le seguenti operazioni:

• Leggere una riga del file ed inserire il processo nella lista.

• Se la quantità di memoria utilizzata da tutti i processi presenti nella lista supera un valore di soglia (100000) eliminare dalla lista il processo che in quel momento occupa più memoria (utilizzare gli iteratori, oggetti IEnumerator).

• Salvare su file il numero di processi presenti nel sistema e la quantità di memoria utilizzata da tutti i processi in quell’istante (“lettura di una riga”).

• Ripetere i precedenti passi per ogni riga del file.

Fare i grafici dell’occupazione di memoria e del numero di processi (in funzione degli istanti temporali). Commentare.

Valutare il costo computazionale per mantenere la lista ordinata e per eliminare il processo che occupa più memoria.

Riferimenti

Documenti correlati

g) Ordinare il DSS rispetto alla variabile operatore (la procedura SAS per il campionamento stratificato richiede che il DSS sia ordinato rispetto alla variabile di

I quattro bit di uscita forniscono direttamente l’indice massimo (da 1 a 15) tra quelli delle linee asserite in ingresso, mentre il codice 0 ` e riservato al caso in cui nessuna

Utilizzare questa funzione in un programma che legge una sequenza di numeri e stampa a video i valori massimo e minimo. Esercizio n o

Corso di Laurea in Ingegneria Biomedica Corso di Laurea in Ingegneria Elettronica Insegnamento di “Informatica I” a.a.. Nella pagina web indicata effettuare le

Supponiamo che per fare questo sia possibile ridurre la durata di un solo task; si supponga inoltre che il task, una volta “accorciato”, non possa avere durata nulla. Si richiede

7) Si consideri un sistema di frenaggio ABS di una automobile. Per migliorare la sicurezza del dispositivo, i progettisti hanno deciso di includere tre centraline hardware di

Per gestire gli array statici in modo che possano essere copiati, si può incapsulare un tipo array come membro di una struct. struct int_array { int

Importante: Le struct sono condivise tra i due array, ogni swap effettua 3 copie tra puntatori.