Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16 Pietro Frasca Presentazione del corso Lezione 1 Martedì 6-10-2015 1 Obbiettivo del corso • L'obiettivo dell'insegnamento e' fornire allo studente le conoscenze di base sui Sistemi operativi moderni e sulle Reti di calcolatori. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 2 Libri di riferimento • Sistemi operativi, II ed. - P. Ancilotti, M. Boari, A. Ciampolini, G. Lipari - McGraw-Hill • Reti di Calcolatori e Internet, IV (VI) ed. - Un approccio top-down - J.F. Kurose, K.W. Ross - Pearson - Addison Wesley. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 3 Libri consigliati per approfondimenti • Sistemi Operativi, IX ed., A. Silberschatz, P. Galvin, G. Gagne. Pearson. • I moderni Sistemi Operativi, III ed., A. S. Tanenbaum. Pearson - Prentice Hall. • Sistemi operativi, D. M. Dhamdhere, McGraw-Hill. • Reti di Calcolatori e Internet, B. A. Forouzan, F. Mosharraf. McGraw-Hill. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 4 Propedeuticità • Non si può sostenere l’esame di Sistemi operativi e reti senza aver prima sostenuto gli esami di: – Architettura dei sistemi di elaborazione (ASE) o Reti logiche ed architettura dei calcolatori (RLAC). – Programmazione dei calcolatori con laboratorio (PR) Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 5 Modalità di esame • L'esame consiste in una prova scritta e in una prova orale. Il testo della prova scritta è suddiviso in due parti. La prima parte è composta da un gruppo di 4-5 domande che riguardano argomenti di "Sistemi operativi". La seconda parte, è composta da un gruppo di 4-5 domande, relative ad argomenti di "Reti di calcolatori". • Le domande sono del tipo a risposta aperta o sottoforma di problemi. Per la parte Sistemi operativi una delle domande consiste nello sviluppo di un breve programma in linguaggio C basato sulle system call POSIX studiate durante il corso. • La durata dell’esame di 12 crediti è di 3 ore, mentre la durata dell'esame di 6 crediti è di 1 ora e 30 minuti. • Durante lo svolgimento della prova scritta è vietato l'uso di libri e/o appunti di qualsiasi genere. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 6 • Per sostenere la prova orale è necessario aver superato la prova scritta con una votazione di almeno 18/30. • Inoltre, lo studente può svolgere una tesina facoltativa consistente nella realizzazione di un'applicazione in java basata sulla programmazione dei socket o di un'applicazione multi-thread scritta in c . La tesina deve essere consegnata (personalmente o via e-mail) almeno una settimana prima della data della prova orale. La realizzazione della tesina consente di migliorare la votazione di 1,2 o 3 punti. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 7 Esame parziale (esonero) • Gli studenti del nuovo ordinamento possono sostenere, nel solo appello invernale, l'esame parziale (esonero) di "Sistemi operativi e reti" che consiste in una prova scritta e in una prova orale basate sugli argomenti della prima parte del corso (Sistemi operativi). • Lo studente che intende sostenere l'esame parziale deve prenotarsi inviando una e-mail all'indirizzo del docente: [email protected], indicando come oggetto la frase "esame parziale SOR A.A. 2013/2014" e indicando nel messaggio il proprio cognome, nome e numero di matricola. La prenotazione deve essere inviata almeno una settimana prima dell’appello relativo alla sessione invernale. • Lo studente che supera l'esame parziale deve sostenere la restante parte di SOR entro l'anno accademico 2013/2014. • Il testo della prova scritta è composto da un gruppo di 4-5 domande. • La durata della prova scritta dell'esame parziale è di 1 ora e 30 minuti. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 8 • Per sostenere la prova orale è necessario aver superato la prova scritta con una votazione di almeno 18/30. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 9 Informazioni sul corso di SOR • • Saranno pubblicate sul sito di Informatica: www.cs.uniroma2.it nella pagina relativa al corso. Dall’anno accademico 2009-10 i corsi di sistemi operativi (SO) e reti di calcolatori (RC), ciascuno di 6 crediti, sono stati uniti nell’unico corso Sistemi operativi e reti (SOR) di 12 crediti. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 10 Applicazioni • • • Durante la prima parte del corso, relativa a sistemi operativi, saranno mostrate varie chiamate di sistema POSIX. Per realizzare applicazioni basate su POSIX, lo studente che utilizza Windows può installare sul proprio computer Cygwin, un ambiente Linux-like per Windows, liberamente scaricabile dal sito http://www.cygwin.com. In alternativa a Cygwin è possibile installare su Windows l’applicazione VMWare Player (o atre simili) scaricabile all’indirizzo http://www.vmware.com e un’immagine di un sistema operativo Linux. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 11 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16 Pietro Frasca Lezione 1 Martedì 6-10-2015 Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 12 Introduzione • Un computer è costituito da vari componenti elettronici molto complessi: da uno o più processori, dalla memoria RAM, dischi, SSD (Solid State Disk), monitor, scheda grafica, scheda di rete, tastiera, mouse e altri dispositivi. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 13 CPU Cache L2 Scheda Grafica Northbridge Memoria RAM BIOS IDE ATA/Atapi PCI Southbridge USB ALTRI standard Architettura di un moderno computer Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 14 • Si tratta quindi di un sistema molto complesso. • Sarebbe impossibile per un programmatore sviluppare un’applicazione dovendo scrivere codice per il funzionamento di ciascuno dei dispositivi sopradetti. • Per tale motivo i computer dispongono di un software detto sistema operativo, il cui compito è fornire ai programmi applicativi, e quindi all’utente, funzioni e servizi per ottenere un uso agevole della macchina fisica. • I moderni sistemi operativi sono sviluppati a strati. • A grandi linee, si può pensare che il computer e il sistema operativo siano progettati in tre livelli: Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 15 Struttura a livelli di un sistema operativo Utenti Livello applicazioni editor di testi browser Livello di SO Scheduler CPU shell GUI Program. di applicazioni compilat. Chiamate di sistema Gestore memoria driver driver scheda grafica tastiera Program. di sistema Livello fisico CPU Video scheda di rete RAM mouse stampante Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 16 • Livello fisico: costituito dai componenti fisici del calcolatore quali la cpu, la memoria RAM, le periferiche, come la scheda grafica, la tastiera, il mouse, il modem etc. • Livello di sistema operativo: costituito da un insieme di librerie software che hanno il compito di gestire le risorse fisiche fornendo ai programmi applicativi un’interfaccia standard più semplice da usare, in modo da fornire un astrazione delle risorse stesse. • Livello dei programmi applicativi: costituito da un insieme di applicazioni che vengono usate dagli utenti del sistema. I programmi applicativi non comunicano direttamente con le risorse fisiche, ma lo fanno attraverso l’interfaccia del SO. Questo tipo di interazione con le risorse fisiche è necessario per controllare l’accesso alle risorse fisiche della macchina da parte di più programmi. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 17 • In breve, il SO è un insieme di programmi che realizzano una macchina virtuale più semplice da usare per le applicazioni e quindi per gli utenti, in quanto nascondono ad essi la macchina fisica. • Tale astrazione consente agli sviluppatori di software di non preoccuparsi della programmazione dei dispositivi hardware del calcolatore e rende più facile quindi la realizzazione e la portabilità delle applicazioni. • Un SO può essere pensato anche come un gestore di risorse, le quali possono essere sia di tipo software, come ad esempio una variabile o un file, che di tipo hardware, ad esempio un disco o una stampante. • Inoltre, un SO si deve occupare della gestione degli errori e dei malfunzionamenti che si possono verificare durante l’esecuzione dei programmi che potrebbero causare un crash del sistema se non sono adeguatamente gestiti. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 18 • L’interfaccia che il SO fornisce ai programmi è costituita da un insieme di funzioni che prendono il nome di chiamate di sistema (system calls). • Generalmente il programmatore non utilizza direttamente le system calls ma librerie a livello più alto dette API (Application Programming Interface) le quali richiamano le system calls. Un esempio è dato dalle librerie standard del C o dai package java. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 19 Classificazione dei sistemi operativi • I sistemi operativi hanno subito una grande evoluzione nel corso degli anni. • Attualmente esistono varie tipologie di sistemi operativi, che comprendono i sistemi batch, time-sharing, real-time, distribuiti, per uso generale (pc), per smartphone etc. • Alcune tipologie sono nate prima di altre. Primi sistemi di elaborazione • I computer costruiti prima della metà degli anni ’50 erano di enormi dimensioni e di elevatissimo costo e pertanto il loro uso era ristretto prevalentemente in ambiente militare e scientifico. • La tecnologia elettronica per la realizzazione del calcolatore era basata sui tubi a vuoto (valvole). Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 20 • I calcolatori non avevano un SO e il programmatore, tramite una consolle, scriveva le istruzioni direttamente, in codice binario, nei registri del processore e nella memoria. • Non era presente neanche il linguaggio assembly. • EDVAC (Electronic Discrete Variable Automatic Computer) fu uno dei primi computer elettronici. A differenza del predecessore ENIAC utilizzava il codice binario invece del sistema decimale utilizzato dall'ENIAC. Il computer era basato sull’architettura di Von Neumann. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 21 Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 22 Sistemi batch • Tra la fine degli anni ’50 e i primi anni ’60, nacquero i primi sistemi operativi. • Nacquero le figure professionali del sistemista e dell’operatore i cui compiti erano di gestire il calcolatore. • I programmi per lo sviluppo del software furono memorizzati su nastri magnetici. • Il sistema era dotato di un linguaggio di controllo (job control language, JCL ) che consentiva all’utente programmatore di specificare le risorse di programmazione (compilatori, librerie..) di cui aveva bisogno. • Un programma in codice sorgente scritto in un linguaggio di programmazione, ad esempio in FORTRAN o assembly, veniva scritto su schede perforate di cartoncino. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 23 • Ogni scheda conteneva un istruzione. • I dispositivi di input erano i lettori di schede perforate e i dispositivi di output erano le stampanti e i perforatori di schede. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 24 • Il programma sorgente insieme alle istruzioni JCL, venivano perforati su schede che venivano date all’operatore. • Per ottenere un programma compilato, le schede del programma sorgente venivano inserite nel lettore di schede. • Questi sistemi erano dotati di un software di sistema detto monitor, che può essere considerato è il primo prototipo di SO. Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 25 • Il monitor veniva caricato in un’area di memoria riservata. • Il monitor eseguiva un ciclo durante il quale leggeva le schede, e quando incontrava le schede del JCL, caricava in memoria i programmi di sistema richiesti leggendoli da nastro magnetico. • il codice eseguibile ottenuto come risultato veniva inviato al perforatore di schede che lo memorizzava in questo modo ancora su schede perforate. • Successivamente si inserivano le schede relative al programma compilato sul lettore di schede e si caricava in memoria il codice eseguibile. Infine si avviava l’esecuzione del programma. • L’efficienza d’uso della cpu era molto basso < 1%. Il tempo medio per eseguire un lavoro (job) era di qualche decina di minuti, mentre l’uso di cpu era di pochi secondi. tempo uso cpu efficienza uso cpu tempo esecuzione job Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 26 Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 27 • Gli unici programmi di sistema presenti in questi calcolatori erano i compilatori, caricatori, debugger e alcune librerie di I/O, che costituivano l’ambiente di programmazione. • Successivamente la CPU eseguiva il programma, il quale una volta terminato restituiva il controllo della CPU al monitor. • Successivamente vennero introdotti i lettori di schede a lotti, in grado di leggere programmi di più utenti, organizzati a lotti. Ora, il monitor poteva passare dall’esecuzione di un job al successivo job senza l’intervento dell’operatore. • L’efficienza aumentò, ma di poco. • Le caratteristiche fondamentali dei sistemi batch sono: – Efficienza di uso delle risorse di macchina (CPU, memoria, periferiche …); – I programmi venivano eseguiti in modo sequenziale, nell’ordine in cui erano stati posizionati i pacchi nel lettore di schede (non c’erano altre politiche di scheduling). Appunti di Sistemi Operativi, 2015-2016 - Pietro Frasca 28