Appunti integrativi TPSI3

Torna all’indice

Appunti integrativi di Tecnologie di progettazione di sistemi informatici e di telecomunicazioni

Classa 3a

Maria Grazia Maffucci

dal 2019 ad oggi


                                   

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/.

Contact mariagrazia@maffucci.cc


Indice

Indice        2

La struttura della memoria di un processo        3

CLIL - Listening - The Call Stack        4

La gestione dei processi        5

Esempio su Round Robin        5

Il Web        8

Pagine HTML        8

CSS - Cascading Style Sheets        8

Esercizi        9

Bibliografia e Sitografia        17


La struttura della memoria di un processo

La  memoria  virtuale di  un  processo[1] viene divisa in segmenti, cioè un insieme contiguo di indirizzi virtuali ai quali il processo può accedere. Solitamente un programma C viene suddiviso nei seguenti segmenti.

  1. Il segmento text contiene il codice del programma, delle funzioni di librerie da esso utilizzate, e le costanti. Normalmente viene condiviso tra tutti i processi che eseguono lo stesso programma (e anche da processi che eseguono altri programmi nel caso delle librerie). Viene marcato in sola lettura per evitare sovrascritture accidentali o maliziose che ne modifichino le istruzioni. Viene  allocato  dalla funzione exec all’avvio  del  programma  e  resta  invariato  per  tutto  il  tempo dell’esecuzione.
  2. Il segmento dei dati o data segment contiene le variabili globali (cioè quelle definite al di fuori di tutte le funzioni che compongono il programma) e le variabili statiche (cioè quelle dichiarate con l’attributo static). Di norma è diviso in due parti. La prima parte è il segmento dei dati inizializzati, che contiene le variabili il cui valore è stato assegnato esplicitamente. Ad esempio se si definisce:

double  pi = 3.14;

questo  valore  sarà  immagazzinato  in  questo  segmento.  La  memoria  di  questo  segmento viene preallocata all’avvio del programma e inizializzata ai valori specificati.

La  seconda  parte è  il  segmento  dei  dati  non  inizializzati,  che  contiene  le  variabili  il  cui valore non è stato assegnato esplicitamente. Ad esempio se si definisce:

int  vect [100];

questo vettore sarà immagazzinato in questo segmento. Anch’esso viene allocato all’avvio, e tutte le variabili vengono inizializzate a zero mentre i puntatori a NULL (questo vale solo per le variabili che vanno nel segmento dati, e non è affatto vero in generale).

Storicamente questa seconda parte del segmento dati viene chiamata BSS (Block Started by Symbol) e la sua dimensione è fissa.

  1. Lo heap lo si può considerare tecnicamente l’estensione del segmento dati, di fatti segue quest’ultimo segmento. È qui che avviene l’allocazione dinamica della memoria e può essere ridimensionato allocando e deallocando la memoria dinamica con le apposite funzioni, ma il suo limite inferiore (quello adiacente al segmento dati) ha una posizione fissa.
  2. Il segmento stack contiene quello che viene chiamato lo stack del programma. Tutte le volte che si effettua una chiamata ad una funzione vengono salvati in questa sezione l’indirizzo di ritorno, le variabili locali della funzione e le informazioni dello stato del chiamante (tipo il contenuto di alcuni registri della CPU). Tutti questi dati vengono impilati in sequenza uno sull’altro, in modo tale che le funzioni possano essere chiamate ricorsivamente. Al ritorno della funzione lo spazio viene automaticamente rilasciato e “ripulito”.

CLIL - Listening - The Call Stack

Watch the following video in order to understand properly how stack works.

The Call Stack by Computer Science


La gestione dei processi

Si leggano le dispense del Prof. Claudio E. Palazzi per vedere degli esempi di risoluzione di ordinamento dei processi.

Esempio su Round Robin

Soluzione dell’es. a p.47 per Round Robin delle dispense del Prof. Claudio E. Palazzi

Processo

Tempo di arrivo

Burst CPU (millisec.)

A

0

2

B

0

12

C

0

4

Tempo di attesa medio con quanto di tempo 1

Il tempo di attesa è ottenuto dalla somma degli intervalli temporali passati in attesa della risorsa.

Nell’esempio riportato di seguito un carattere MAIUSCOLO indica un tempo di esecuzione del processo, mentre un carattere minuscolo indica un tempo di attesa della CPU. L’indicazione ,P indica il momento di terminazione di un processo, mentre l’uso del simbolo . indica un pre-rilascio della CPU a favore di un altro processo.

ABCA,ABCBCBC,CBBBBBBBB,B

AaaA,A

bBbb,ABbBbBb,CBBBBBBBB

ccCc,AcCcCcC,C

Tatt(A) = 0A + 1B + 1C = 2

Tatt(B) = 1A + 1C + 1A + 1C + 1C + 1C = 6

Tatt(C) = 1A + 1B + 1A + 1B + 1B + 1B = 6

Tatt(medio) = (2 + 6 + 6) / 3 = 4,6 u.t.

Tempo di turnaround con quanto di tempo 1

Il tempo di turnaround corrisponde al tempo in cui i risultati di un processo sono resi disponibili, quindi al tempo di completamento. Questo tempo è dato dalla somma di tutti i tempi di attesa e di esecuzione del processo, fino al suo completamento.

Nell’esempio riportato di seguito un carattere MAIUSCOLO indica un tempo di esecuzione del processo, mentre un carattere minuscolo indica un tempo di attesa della CPU. L’indicazione ,P indica il momento di terminazione di un processo.

ABCA,ABCBCBC,CBBBBBBBB,B

AaaA,A

bBbb,ABbBbBb,CBBBBBBBB

ccCc,AcCcCcC,C

Tta(A) = 1A + 1B + 1C + 1A = 4

Tta(B) = 1A + 1B + 1C + 1A + 1B + 1C + 1B + 1C + 1B + 1C + 8B = 18

Tta(C) = 1A + 1B + 1C + 1A + 1B + 1C + 1B + 1C + 1B + 1C = 10

Tta(medio) = (4 + 18 + 10) / 3 = 10,6 u.t.

Tempo di attesa medio con quanto di tempo 5

Il tempo di attesa è ottenuto dalla somma degli intervalli temporali passati in attesa della risorsa, in questo caso la CPU.

Nell’esempio riportato di seguito un carattere MAIUSCOLO indica un tempo di esecuzione del processo, mentre un carattere minuscolo indica un tempo di attesa della CPU. L’indicazione ,P indica il momento di terminazione di un processo, mentre l’uso del simbolo . indica un pre-rilascio della CPU a favore di un altro processo.

AA,ABBBBB.CCCC,CBBBBBBB,B

AA,A

bb,ABBBBB.bbbb,CBBBBBBB,B

cc,Accccc.CCCC,C

Tatt(A) = 0A = 0

Tatt(B) = 2A + 4C = 6

Tatt(C) = 2A + 5B = 7

Tatt(medio) = (0 + 6 + 7) / 3 = 4,3 u.t.

Tempo di turnaround con quanto di tempo 5

Il tempo di turnaround corrisponde al tempo in cui i risultati di un processo sono resi disponibili, quindi al tempo di completamento. Questo tempo è dato dalla somma di tutti i tempi di attesa e di esecuzione del processo, fino al suo completamento.

Nell’esempio riportato di seguito un carattere MAIUSCOLO indica un tempo di esecuzione del processo, mentre un carattere minuscolo indica un tempo di attesa della CPU. L’indicazione ,P indica il momento di terminazione di un processo, mentre l’uso del simbolo . indica un pre-rilascio della CPU a favore di un altro processo.

AA,ABBBBB.CCCC,CBBBBBBB,B

AA,A

bb,ABBBBB.bbbb,CBBBBBBB,B

cc,Accccc.CCCC,C

Tta(A) = 2A = 2

Tta(B) = 2A + 5B + 4C + 7B = 18

Tta(C) = 2A + 5B + 4C = 11

Tta(medio) = (2 + 18 + 11) / 3 = 10,3 u.t.


Il Web

Pagine HTML

STUDIARE: A. Lorenzi, V. Moriggia, PRO.TECH - Informatica per Istituti Tecnici Tecnologici - Algoritmi e programmazione Linguaggi C e C++ | Pagine Web, vol. A, es. Atlas, 2019

  • 3 - Le pagine Web pp.366-398
  • CAPITOLO 10 - Il linguaggio HTML e i fogli di stile
  • 1 - La progettazione delle pagine Web pp.370-373
  • 2 - Gli strumenti per realizzare pagine Web pp.373-374
  • 3 - Il linguaggio HTML pp.374-381
  • 4 - La formattazione pp.381-391
  • 5 - Gli elementi multimediali pp.391-395
  • 6 - I form e l’interazione con l’utente pp.395-397
  • 7 - La validazione dei dati di un form pp.397-398

Si vedano anche le seguenti slide:

  1. HTML-1 – Introduzione: struttura pagina, formattazione testo, link, immagini
  2. HTML-2 – Elenchi
  3. HTML-3 – Tabelle
  4. HTML-4 – Link ad indirizzo mail, ancore, creazione dominio, caricamento sito

CSS - Cascading Style Sheets

STUDIARE: A. Lorenzi, V. Moriggia, PRO.TECH - Informatica per Istituti Tecnici Tecnologici - Algoritmi e programmazione Linguaggi C e C++ | Pagine Web, vol. A, es. Atlas, 2019

  • 3 - Le pagine Web pp.398-425
  • CAPITOLO 10 - Il linguaggio HTML e i fogli di stile
  • 8 - I fogli di stile CSS pp.398-402
  • 9 - I contenitori HTML e i selettori CSS pp.402-409
  • 10 - L’interattività con gli utenti pp.409-413
  • 11 - L’accessibilità e l’usabilità pp.413-415


Esercizi

  1. Convertire il numero decimale frazionario 7.28125 in codifica standard IEEE-754 a 32 bit, rappresentando la codifica finale sia in binario, sia in esadecimale.
  2. Convertire nel corrispondente numero decimale frazionario il numero esadecimale 0xC0550000, che rappresenta un numero in codifica standard IEEE-754 a 32 bit.
  3. Convertire il numero decimale frazionario -0.3515625 in codifica standard IEEE-754 a 32 bit, rappresentando la codifica finale sia in binario, sia in esadecimale.
  4. Convertire nel corrispondente numero decimale frazionario il numero esadecimale 0x3F950000, che rappresenta un numero in codifica standard IEEE-754 a 32 bit.
  5. Codificare il numero (74)10 in binario e rappresentarlo su 8 bit  in modulo e segno, in complemento a 1 e in complemento a 2.
  6. Codificare il numero (-87)10 in binario e rappresentarlo su 8 bit  in modulo e segno, in complemento a 1 e in complemento a 2.
  7. Effettuare la somma algebrica di (+14)10+(-28)10 dopo aver effettuato la conversione in complemento a 2 (CA2) su 8 bit, indicando anche se si verifica o meno overflow.
  8. Effettuare la somma algebrica di (-85)10+(-120)10 dopo aver effettuato la conversione in complemento a 2 (CA2) su 8 bit, indicando anche se si verifica o meno overflow.
  9. Eseguire la seguente divisione 10110101 : 1001 tra numeri binari e si verifichi l’esattezza del risultato effettuando la controprova. Il risultato della divisione deve  essere rappresentato con quoziente intero e resto. Si mostrino tutti i calcoli.
  10. Eseguire la seguente moltiplicazione 101101 * 1101 tra numeri binari. Si mostrino tutti i calcoli.
  11. Convertire in esadecimale i seguenti numeri ottali:
  1. 6328
  2. 7558
  3. 1728
  1. Convertire in ottale i seguenti numeri esadecimali:
  1. ABC16
  2. FE116
  3. C316
  1. Si consideri il seguente insieme di processi:

Processo

Burst CPU (millisec.)

Priorità

P1

10

3

P2

1

1

P3

2

3

P4

1

4

P5

5

2

Tutti i processi arrivano al tempo 0 nell’ordine P1, P2, P3, P4, P5. Si illustri quale sarà l’ordine di esecuzione e si calcoli il tempo di attesa medio e il tempo di turnaround nel casi di scheduling:

  1. SJF non preemptive;
  2. a priorità (1 → massima priorità, 4 → minima priorità).
  1. Si consideri il seguente insieme di processi:

Processo

Tempo di arrivo

Burst CPU (millisec.)

A

0

3

B

2

6

C

4

4

D

6

5

E

8

2

Si calcoli il tempo medio di attesa ed il tempo di turnaround nel caso di scheduling:

  1. FCFS;
  2. SJF non preemptive;
  3. SJF preemptive;
  4. SRTF;
  5. Round Robin con quanto di tempo pari ad 1
  6. Round Robin con quanto di tempo pari ad 4
  1. Supponiamo che tre clienti arrivino presso un ufficio postale per richiedere un servizio ad uno sportello che richiede un tempo di soddisfacimento della richiesta noto a priori ed espresso in minuti, come indicato nella tabelle seguente.

Cliente

Ora di arrivo

Tempo servizio (minuti.)

Paolo

10:00

8’

Gianni

10:05

4’

Roby

10:07

1’

Nell’ipotesi che alle ore 10:00 lo sportello sia libero, rispondere alle seguenti domande:

  1. Qual è il tempo medio di turnaround (tempo medio trascorso dal cliente nell’ufficio postale, comprensivo del tempo trascorso in coda e del tempo di servizio) se adottiamo una politica di schedulazione FCFS?
  2. Qual è il tempo medio di turnaround se adottiamo una politica di schedulazione SJF non preemptive?
  3. Qual è il tempo medio di turnaround se adottiamo una politica di schedulazione SJF preemptive?
  1. Si consideri il seguente insieme di processi:

Processo

Tempo di arrivo

Burst CPU (millisec.)

Priorità

A

0

17

2

B

5

5

3

C

10

10

0

D

7

9

1

E

11

7

4

Si calcoli il tempo medio di attesa ed il tempo di turnaround nel casi di scheduling:

  1. FCFS;
  2. SJF non preemptive;
  3. SJF preemptive;
  4. SRTF;
  5. a priorità (0 → max, 4 → min), e in questo caso spiegare anche se ha senso cercare di rendere più efficiente il funzionamento del sistema;
  6. Round Robin con quanto di tempo pari ad 4
  1. [HTML - liste] Sviluppare una pagina Web contenente l’elenco dei tuoi compagni di classe.
  2. [HTML - tabelle][2] Costruisci col linguaggio HTML una pagina Web composta dai seguenti elementi:
  1. Titolo: Cognome Nome – classe e sez.
  2. Colore di sfondo a piacere ma comunque da impostare
  3. Nel corpo della pagina inserire
  1. il titolo TABELLE con carattere Arial impostando un colore a scelta e centrandolo nella pagina;
  2. il sottotitolo: ORARIO SCOLASTICO con carattere Comic Sans MS impostando un colore a scelta.
  1. Inserisci una piccola immagine, come ad esempio il logo dell’Avogadro.
  2. Sotto ai sottotitolo inserisci una tabella contenente il tuo orario scolastico settimanale, che occupi lo schermo per l’80% in larghezza ed il 70% in altezza, con un bordo di 3 pixel.
  3. Applica all’immagine precedente un link al sito del tuo Istituto, con il seguente commento testuale: collegati al sito della mia scuola.
  4. Colora lo sfondo delle celle della prima riga e della prima colonna con un colore uniforme.
  5. Separa i vari elementi della pagina in modo adeguato in modo tale che tutto il documento sia visibile in un’unica schermata.
  6. Colora lo sfondo delle celle che contengono i nomi delle discipline, facendo in modo che il colore sia uguale per le celle della stessa materia.

Di seguito viene fornito un esempio della pagina proposta.

  1. Svolgere l’es. 15 a p.419 del libro di Informatica PRO.TECH vol. A.
  2. [HTML - CSS][3] Leggere il seguente documento e riproporre la pagina così come indicato nell’esercitazione.
  3. [HTML - CSS][4] Realizza le pagine del sito Web di un negozio di prodotti informatici Il tuo computer.

Tutte le pagine hanno la stessa struttura e lo stesso layout, con un menu orizzontale contenente le voci:

  • Home (index.html)
  • Dove siamo
  • Scriveteci
  • Dicono di noi

La parte centrale della pagina è divisa in due riquadri di differenti larghezze, con un elenco di scelte a sinistra e una fotografia.

Le scelte sono:

  • Listino prezzi
  • Catalogo prodotti
  • Archivio
  • News
  • Ordini

Di seguito sono riportate le pagine Home e Dove siamo, che possono servire come traccia per creare le pagine. Si creino liberamente le pagine Scriveteci e Dicono di noi in modo coerente con quanto si ritiene debbano contenere.

Home

Dove siamo

  1. [HTML - CSS][5] Realizzare l’esercizio indicato nel seguente compito, relativo ad un sito su Castello di Racconigi.
  2. [HTML - CSS][6] Crea una pagina Web sul poeta Ungaretti con informazioni sulla vita e le opere.

La pagina Web utilizza i fogli di stile CSS per creare un semplice sito con un menù fisso posto a sinistra della pagina. La pagina è di dimensioni costanti (800x400 pixel) e divisa in due parti:

  • a sinistra si trova il menu con larghezza 200 pixel;
  • a destra si trovano i contenuti del sito in un riquadro di dimensioni 600x400.

Nel caso in cui il contenuto non rientri interamente nella pagina vengono mostrate le barre di scorrimento.

Facendo clic su una voce del menu non viene aperta una nuova pagina, ma vengono visualizzati i contenuti nella zona a destra.

Il menù è un elenco puntato ed è composto da tre voci:

  • Vita;
  • Opere;
  • Poetica.

Lo schema della pagina Web è riportato sotto.

Aprendo il documento index.html nel browser, viene visualizzato il menù a sinistra su sfondo blu e il contenuto nella parte centrale (con le barre di scorrimento). Facendo clic su una voce del menù, la zona centrale scorre fino a visualizzare il contenuto desiderato.

Di seguito viene mostrato un esempio.


  1. [HTML - CSS][7] Crea il sito dell’hotel con le pagine HTML e i fogli di stile, usando la seguente figura come traccia.

  1. [HTML - CSS][8] Crea il sito dell’Istituto scolastico con le pagine HTML e i fogli di stile, usando la fi gura come traccia.

  1. bla bla

Bibliografia e Sitografia

Simone Piccardi, GaPiL - Guida alla Programmazione in Linux: 2.2.2 La struttura della memoria di un processo

A. Lorenzi, V. Moriggia, PRO.TECH - Informatica per Istituti Tecnici Tecnologici, vol. A, ed. Atlas, 2019.

A. Lorenzi, PRO.TECH - Informatica per Istituti Tecnici Tecnologici, Risorse per l’insegnante, ed. Atlas, 2019.

C. E. Palazzi, Sistemi Operativi, Università degli Studi di Padova, ultimo accesso maggio 2021


[1] Simone Piccardi, GaPiL - Guida alla Programmazione in Linux: 2.2.2 La struttura della memoria di un processo

[2] Esercizio ideato dalla Prof.ssa Filomena Daraio

[3] Esercizio ideato dalla Prof.ssa Filomena Daraio

[4] A.Lorenzi, PRO.TECH - Informatica per Istituti Tecnici Tecnologici, Risorse per l’insegnante.

[5] Esercizio ideato dalla Prof.ssa Filomena Daraio

[6] A.Lorenzi, PRO.TECH - Informatica per Istituti Tecnici Tecnologici, Risorse per l’insegnante.

[7] A.Lorenzi, PRO.TECH - Informatica per Istituti Tecnici Tecnologici, Risorse per l’insegnante.

[8] A.Lorenzi, PRO.TECH - Informatica per Istituti Tecnici Tecnologici, Risorse per l’insegnante.