Sistemi di Calcolo Architettura dei Sistemi Informatici Sistemi informatici PC, terminali e reti Architettura insieme delle componenti del sistema, descrizione delle loro funzionalità e della loro interazione Suddivisione principale hardware e software Hardware I Unità di Elaborazione (Processore o CPU): Svolge le elaborazioni Coordina il trasferimento dei dati Cioè esegue i programmi Memoria Centrale Memorizza dati e programmi per l’elaborazione Volatile Accesso rapido Capacità limitata Hardware II Memoria Secondaria (harddisk, floppy) Unità Periferiche Grande capacità Persistente Accesso piu lento della RAM Interfaccia verso l’esterno Terminali (tastiera, video) e Stampanti Bus di Sistema Collega le altre componenti Esempi: Personal Computer (PC) Contenitore con CPU, RAM Memoria Centrale Fisso Unità per Dischetti/CD Monitor Tastiera Alcuni accessori per PC Lettore Floppy, CD, DVD Modem Mouse Stampante Scanner Joystick Altri Sistemi Informatici Workstation Main-frame Calcolatore con elevate prestazioni Servono reti di terminali con centinaia di utenti Notebook (palmari) e palmari Elaboratori portatili Altri Sistemi Informatici Reti di Calcolatori Reti Locali collegano terminali vicini tra loro (ad es. il nostro laboratorio) Reti Geografiche collegano dei calcolatori a medio-grandi distanze (ad es. Internet) Software Software di base: Dedicato alla gestione dell’elaboratore Es. sistemi operativi: Windows XP/Vista, Unix, Linux Software applicativo: Dedicato alla realizzazione di specifiche applicative Esempio: programmi per scrittura, navigazione su internet, ... Funzionamento dell’Elaboratore Come funziona l’elaboratore? Un programma (sequenza di istruzioni) viene caricato in memoria centrale Si crea lo spazio per i dati necessari al programma La CPU estrae le istruzioni e i dati dalla memoria centrale, le decodifica e le esegue utilizzando registri interni (accesso veloce) L’esecuzione può comportare il trasferimento di dati in input e output tra memoria centrale e periferiche attraverso il bus di sistema Elaboratore Ideale di Von Neumann decoder ACC ALU 0: 1: 2: : PC RIC CPU RAM Registri Registro istruzione corrente (RIC) Contatore di Programma (PC) indirizzo della prossima istruzione da eseguire Accumulatore (ACC) contiene l’istruzione correntemente eseguita Contiene valori utilizzati durante operazioni Decoder Decodifica codice istruzione Programma in Linguaggio Macchina Le istruzioni della macchina sono codificate in forma numerica ed inserite insieme agli altri dati nella memoria centrale Istruzione = operazione di base su registri e memoria Programma = Sequenza di istruzioni codificate Un programma viene interpretato sequenzialmente attraverso il registro PC che identifica la prossima istruzione da eseguire Esecuzione tramite ciclo di fetch Inizializzazione: memorizza 0 nel registro PC Ciclo di Fetch: 1. 2. 3. 4. 5. Valore nella cella PC registro RIC (registro istruzione corrente) Somma 1 al valore contenuto in PC Decodifica istruzione contenuta in RIC Esegui l’istruzione Torna al punto 1 oppure termina esecuzione Nota: esecuzione sequenziale del programma Astrazione dai dettagli hardware L’utente non si preoccupa di gestire direttamente l’esecuzione dei programmi (caricamento in memoria, ciclo di fetch, gestione I/O ed errori, ecc) Questi compiti sono demandati al software di base (sistema operativo) che fornisce all’utente solamente funzionalita’ ad alto livello Es. un comando – attraverso interfaccia grafica - per lanciare l’esecuzione di un programma Sistema Operativo Sistema Operativo Il sistema operativo è un insieme di programmi che nasconde l’hardware agli utenti fornisce funzionalita’ ad alto livello (es. esecuzione di un programma) rende semplice l’uso della macchina sfrutta al meglio l’hardware fornisce un’organizzazione logica per i dati in memoria secondaria Sistema operativo = macchina virtuale Servizi del Sistema Operativo Multi-programmazione Memoria virtuale Esecuzione di programmi di grandi dimensioni anche su elaboratori con memoria principale di capacita’ ridotta Time-sharing Esecuzione contemporanea di diversi programmi anche su macchine con un solo processore Esecuzione comtemporanea di processi di diversi utenti Protezione macchina e utenti Login, connessioni di rete, memoria Funzionalità Gestiome dei processi Gestione della memoria Gestione delle periferiche File system Interprete dei comandi Gestore dei processi Gestisce l’esecuzione concorrente dei programmi (multi-programmazione) Le unità di esecuzione vengono chiamate processi Per eseguire un programma occorre mantenere il corrispondente processo attivo nella CPU Il gestore deve decidere a quale processo assegnare la CPU in ogni istante (scheduler) Inoltre deve reagire agli eventi esterni (es. le interruzioni provenienti dalle periferiche) Processi: Definizione di processo Programma = lista di istruzioni = nozione statica Processo = programma in esecuzione = programma + stato corrente variabili = nozione dinamica Stato corrente= valori in memoria centrale valori nei registri della CPU In un PC un solo processo in esecuzione alla volta Gestione Memoria Centrale I processi si alternano durante l’esecuzione nella CPU Per ragioni di efficienza dobbiamo mantenere più programmi in memoria centrale Il sistema operativo si occupa di recuperare ed allocare spazio di memoria per l’esecuzione dei processi Trasformazione indirizzi logici di un programma in indirizzi di memoria: rilocazione dei programmi Memoria Centrale: Compilatore, linker e loader Compilatore e Linker Traducono programmi scritti in linguaggio ad alto livello in programmi in linguaggio macchina che accedono dati (variabili ecc) utilizzando indirizzi logici indipendenti dalla posizione in memoria centrale (Linker: si utilizza per compilare programmi divisi in moduli) Loader carica il programma compilato in memoria centrale. Memoria Centrale: Allocazione ai processi Segmentazione: La memoria centrale viene suddivisa in segmenti di lunghezza variabile contenenti i programmi Paginazione: La memoria centrale e i programmi vengono suddivisi in pagine di lunghezza fissa. I programmi vengono caricati in memoria anche in pagine o segmenti non contigui Memoria Virtuale Con la suddivisone del programma in pagine non è necessario mantenere tutto il programma in memoria centrale Paginazione a richiesta: Se la pagina del programma che contiene la prossima esecuzione da eseguire non è in memoria si carica da disco (page swapping) Indirizzi nei programmi diventano virtuali Gestore delle periferiche Maschera le caratteristiche hardware delle periferiche Gestisce le operazioni di input e output Fornisce procedure ad alto livello ad esempio per la lettura, scrittura di dati su memorie secondarie scrittura su stampanti, ecc File System Gestisce i dati in memoria di massa Struttura i dati in modo gerarchico utilizzando file e directory Fornisce operazioni di alto livello per la gestione di file ad esempio creazione di un nuovo documento, directory ecc Protegge i dati da accessi esterni Garantisce la condivisione sicura dei dati File Nome: Struttura: Sequenza di byte Sequenza di blocchi (record) di byte Tipo: Identifica il file spesso con una estensione che indica il tipo di file es. Tesi.doc oppure somma.exe File di caratteri e binari (eseguibili) Directory Attributi: nome, diritti di accesso,proprietario Operazioni su File Il file system consente di effettuare le seguenti operazioni: creare, cancellare, spostare, recuperare, modificare documenti in memoria di massa (memoria persistente) Modificare gli attributi di un file Ridenominare i file Directory E’ un file di tipo speciale che mantiene informazioni su altri file permette di strutturare insiemi di file (dati) in maniera gerarchica contiene la lista dei nomi e attributi dei file e directory al suo interno Quindi: il file system ha una struttura ad albero Radice = radice del’intero file system Nodi interni = directory Foglie = documenti/programmi Struttura ad albero Struttura ad albero radice Floppy da 3.5 A: Hard Disk C: Applicazioni Elab_imm Photoshop.exe Biblioteca directory Elab_suoni file Path names In un’organizzazione ad albero i nomi devono contenere informazioni sui cammini sui quali si trovano i corrispondenti file Nomi relativi: Nomi assoluti: relativi ad una particolare directory specificano il cammino a partire dalla radice (root) del file system (mai ambigui) Nei path names si possono utilizzare I due simboli speciali Il punto (.) rappresenta la directory corrente I due punti (..) rappresentano la directory immediatamente superiore nel’albero Esempio cammini Floppy da 3.5 A: Applicazioni Elab_suoni Elab_imm ..\Elab_suoni cammino relativo da Elab_imm Photoshop.exe A:\Applicazioni\Elab_imm\Photoshop.exe cammino assoluto Interprete dei comandi Interpreta i comandi che l’utente invia alla macchina/sistema operativo: attraverso l’interazione con l’ambiente grafico tramite una finestra di comando (command shell) Permette quindi l’invio di programmi, la navigazione nel file system, ecc.