AngoLinux

Il Programma Teorico di Quarta

- A cura del Prof. Stefano Salvi -


Completamento del Controllore 8051
Il Processore 8086
Il Sistema Operativo
Le Architetture Avanzate - Risc, memorie cache
Le Architetture Reali - I Bus

Completamento del Controllore 8051

Il processore 8051 viene trattato alla fine della classe terza. Spesso non viene terminato ed è comunque utile ripassarlo, vista l'importanza dell'argomento.
Nella quarta dell'Anno Scolastico 2001/02 si è trattata l'interfaccia seriale.
Laboratorio: Si possono fare programmi di tutti i tipi, usando sia le periferiche già concsciute, sia quella appena introdotta. Con questa classe sono stati fatti semplici programmi con le vecchie periferiche (il PPI e l'interfaccia TI/O 16).

Il Processore 8086

Del processore 8086 vengono descritti i registri ed il meccanismo di segmentazione. Descrivendo il BP, si introduce il concetto di frame.
Si descrivono le caratteristiche peculiari del set di istruzioni.
L'ultimo argomento sull'architettura X86 è la descrizione del meccanismo delle interruzioni, accennando in questa sede alle tecniche di Daisy-Chain e, per finire, agli interrupt software.
Laboratorio: Anche qui si comincia con lo sperimentare il set di istruzioni con il debugger e l'assembler in linea.
La difficoltà è che l'assembler Linux (gas) non usa la sintassi standard Intel, ma la sintassi AT&T. Non sono riuscito a trovare un elenco di istruzioni che le esponga con questa sintassi.
Fatti i primi esperimenti con debugger ed eventualmente assembler, ma senza istruzioni di ingresso/uscita, si passa all'utilizzo della schedina di I/O sulla parallela descritta nella Presentazione del Laboratorio.
Si scrivono piccoli programmi che accendano i LED secondo pattern prestabiliti, prima in maniera indipendente, poi interagendo anche con i tasti.
Per finire, si introducono le chiamate di sistema e si scrivono programmi che, oltre ad interagire con l'interfaccia esterna, scrivano dei messaggi sullo standard output.

Il Sistema Operativo

Il sistema operativo si sviluppa su quattro piani:

Macchine virtuali
Si introduce il concetto di BIOS, agganciandosi anche agli interrupt software. Si estende il concetto al livello delle driver, quindi si introduce il livello superiore del sistema operativo. Si evidenziano le risorse non-dispositivo che il sistema operativo gestisce.
Multitasking e comunicazione tra processi
Si introduce il concetto di task. Si descrive lo scheduler di basso e di alto livello.
Si parla della competizione tra i processi e del deadlock.
Si introducono infine i metodi di comunicazione tra processi, vale a dire pipe (unnamed e named), memoria comune (con semafori, sezione critica ed istruzioni test&set), message passing e message posting.
Gestione della memoria
Si introduce il problema dell'allocazione e della frammentazione.
Si descrivono i metodi di allocazione first fit, best fit e wost fit.
Si descrive il metodo software di gestione della deframmentazione (gli handle del Macintosh).
Si introduce il concetto di MMU.
Si descrivono i descrittori di memoria dell'80286 (più semplici di quelli del '386, ma già completi).
Gestione del file system
Si evidenziano le tre parti del file system:
  • Gestione degli accessi in base alla concorrenza od ai diritti
  • Gestione dello spazio
  • Gestione dei nomi
In particolare, per la gestione dello spazio e dei nomi vengono presentati sia il modello FAT che il modello Unix. Vengono fatti accenni al partizionamento, presentando sia lo schema del PC IBM che del Macintosh.
Laboratorio: Sulle macchine virtuali, salvo chiamate alla BIOS (che però non possono essere fatte in Linux) oppure chiamate di servizi di sistema, non si possono fare molti esercizi.
Per la gestione della memoria non ho trovato esperienze significative
Il multitasking e la comunicazione tra processi possono essere invece sperimentati in mainera estensiva, usando le relative chiamate di Linux. Si possono anche vedere i vecchi esempi di L'esperienza in Quarta e Un'altra esperienza in Quarta
Per quanto riguarda il file system, si può analizzare un file system FAT (magari su dischetto) o anche EXT2, leggendo i dispositivi /dev/fd0 o /dev/hda1...

Le Architetture Avanzate - Risc, memorie cache

Si introduce il concetto di pipeline, il problema delle bolle e deli stalli, le tecniche per evitarli (feed forward e delayed branch). Si fà notare come l'accesso alla memoria per i dati comporti delle bolle nel blocco di fetch, quindi si spiega perchè le istruzioni di accesso alla memoria sono limitate (load e store) e si introduce un gran numero di registri.
Si introduce il discorso dell'aumento di velocità delle CPU, oltre la velocità del bus. Si introducono quindi le memorie cache, con le loro trè architetture (direct mapping, fully associative e set associative).
Si introduce il problema della scrittura e si descrivono le strategie write trough e write back.
Si introduce l'accesso multiplo alla memoria (si descrive allo scopo il DMA - lo so, sarebbe meglio farlo subito dopo gli interrupt, ma il momento non mi sembra adatto) e quindi si introducono le tecniche di coerenza come il bus snooping).
Laboratorio: Non ci sono molti esperimenti da fare per mettere alla prova un'architettura RISC, inoltre i PC del laboratorio non usano cpu RISC. Per quanto riguarda invece la cache, si può scrivere un programma che valuti la quantità di cache installata, facendo operazioni su un'area di memoria via via crescente e valutando l'incremento del tempo impiegato.

Le Architetture Reali - I Bus

Quest'ultima parte del programma prevede l'analisi delle architetture dei calcolatori reali. In realtà ci si limita ai personal computer, cercando almeno di diversificare il discorso includendo l'architettura del Macintosh, oltre a quella del PC IBM.
Vengono analizzati i processori e la loro evoluzione nel tempo, dall' originale 8088 a 4.77 MHz fino a qulli attuali. Si analizza nache l'evoluzione dei bus di sistema, legata alla dimensione del bus della CPU e dalla velocità del sistema.
Si analizza il meccanismo del Plug & Play per le schede di espansione.
Si passa poi ad analizzare i bus di I/O, partendo dalle interfacce Centronics e RS232 (anche se di bus, in questo caso, non si può parlare), passando poi ad IEE488, SCSI, per finire con USB e FireWire.
Il discorso termina con la valutazione delle prestazioni dei calcolatori, partendo dai MIPS e MFLOPS, introducendo SpecInt e SpecFp e per finie i benchmark applicativi.
Laboratorio: In laboratorio occorrerebbe far fare esperienza agli studenti sull'assemblaggio dei calcolatori, in modo da rendere concrete le informazioni date in teoria. In realtà questo non è possibile, ma si fà un giro turistico del PC, nel quale è il solo insegnante che smonta un PC, o di fronte ad un piccolo gruppo di studenti oppure, tramite una telecamera ed un videoproiettore, davanti all'intera classe.
Il resto del discorso sui bus è difficilmente traspostabile in laboratorio. Si potrebbe programmare un'interfaccia SCSI, ma non tutte le macchine ne sono dotate e poi difficilmente la programmazione darebbe grandi risultati, in quanto non risulterebbe chiara.
Una parte che invece si svolge bene in laboratorio è la valutazione delle prestazioni dei calcolatori, facendo scrivere vari benchmark, che valutino le prestazioni in diverse maniere.


[Home Page dell'ITIS "Fermi"] [Indice Quarta] [Successivo]

© Ing. Stefano Salvi - Released under GPL licence