Architettura di un computer Banking system Web browser Airline reservation Compilers Editors Command interpreter Application programs Sperimentazioni I Cenni sui sistemi operativi 3 novembre 2010 System programs Operating system Machine language Hardware Microarchitecture A. Garfagnini Università degli Studi di Padova. Physical devices Compilers Web Airline browser reservation Editors Command interpreter Operating system 3. Machine language 2. Microarchitecture 1. Physical devices Hardware Banking system System programs Architettura di un computer: hardware Architettura generica di un computer Application programs 1. Identifica l'hardware: i chip, i fili, l'alimentatore, il tubo a raggi catodici, ecc. 2. i vari dispositivi sono raggruppati insieme per formare un'unità funzionale (es. CPU); 3. il linguaggio macchina (da 50 a 300 istruzioni), permette di − − − muovere i dati nella macchina; effettuare le operazioni aritmetiche; confrontare registri diversi. Memoria Interfaccia di rete Display (CRT o LCD) Dischi CPU Tastiera Stampante Altri dispositivi di I/O Scrivere un unico programma che usi le risorse correttamente è arduo compito del sistema operativo Che cos'e' un sistema operativo ? È difficile fornire una definizione precisa. Banking system Sostanzialmente il sistema operativo svolge due funzioni praticamente scorrelate: estende la macchina, fornendo all'utilizzatore una interfaccia comoda per lavorare (approccio top-down). Esempio: semplificazione gestione I/O. Compilers Editors Command interpreter 1. Operating system Machine language Microarchitecture amministra le risorse, cioè tutti i pezzi di un sistema completo (approccio bottom-up). Esempio: gestione della memoria tra processi diversi, stampa di files su una stampante. Hardware review Physical devices Banking system Compilers Web Airline browser reservation Editors Command interpreter Operating system Machine language CPU Video Keyboard Memory controller controller Floppy disk controller Application programs 1. Sistema operativo (s.o.): strato di software che 'nasconde parzialmente l'hardware e fornisce un insieme di funzioni più comode da utilizzare. − read block from file invece di − gestisci l'hardware direttamente (accendi il motore del disco, posiziona le testine, ecc.). 2. il resto del software di sistema (non sono parte del s.o., ma sono tipicamente distribuiti con il s.o.). Architettura di un computer: applicazioni Hard disk controller Bus Microarchitecture Physical devices System programs Hardware 2. Web Airline browser reservation Hardware System programs Architettura di un computer: programmi di sistema Application programs Applicativi vari: sono scritti dall'utente per risolvere problemi particolari: − analizzare le misure di un'esperienza di laboratorio; − eseguire calcoli numerici per risolvere equazioni matematiche. Appartiene a questa categoria il software scritto per problemi generici come: − eleborazione di testi; − fogli elettronici; − calcoli numerici; − web browsers. Dispositivi di INPUT/OUTPUT (I/O) E' una risorsa importante che il S.O. gestisce. Tipicamente un dispositivo di I/O consiste in: un controller (un insieme di chip che controllano fisicamente il dispositivo); Central Processing Unit (CPU) E' il cervello del computer. Carica istruzioni e dati dalla memoria e esegue operazioni. ogni CPU ha un instruction set specifico, per es. un Pentium non può eseguire programmi SPARC; contiene registri per immagazzinare le variabili e i risultati temporanei + registri speciali (es. program counter, stack pointer, ecc). un dispositivo. Alcuni concetti di base: processo Un processo è un programma in esecuzione. UNIX è un sistema operativo multiprogramming: più processi indipendenti possono runnare allo stesso tempo. Ogni processo ha associato un address space, una lista di locazioni di memoria dove il processo può leggere e scrivere. Memoria La memoria è il secondo componente fondamentale di un computer. Ne esistono di vari tipi: tempi tipici di accesso: dimensioni tipiche: 1 ns Registri Quando un processo viene sospeso temporaneamente, deve poi ripartire esattamente nello stesso stato in cui era stato bloccato. 2 ns Cache 2 MB Memoria principale 1 GB L'informazione del processo è salvata nella process table in modo da poterla recuperare. 100 ms 10 ns Disco magnetico < 1 KB 100-750 GB La gestione della memoria Alcuni concetti di base: processo (2) Modello di sistema operativo molto semplice: la memoria contiene un unico programma, quello in esecuzione. per eseguire un nuovo programma, bisogna caricarlo in memoria e sostituirlo a quello precedente. I sistemi operativi moderni permettono di far risiedere allo stesso tempo più programmi in memoria. Esistono delle protezioni per fa sì che non sovrascrivano la zona di memoria occupata da altri. Ad ogni utente viene assegnato un UID (User Identification). Ogni processo in corso ha lo stesso UID dell'utente che lo ha lanciato. Esistono processi, di sistema, che runnano anche quando un utente non è collegato: si chiamano daemons e vengono fatti partire automaticamente quando il sistema viene avviato (procedura di boot). Si sveglia ogni minuto e controlla se c'e' del lavoro da fare. In caso positivo lo esegue. Poi ritorna a dormire in attesa del controllo successivo. Occupazione della memoria per un processo Tre segmenti: Text: contiene le istruzioni macchina dell'eseguibile (prodotte dal compilatore). È read-only. Data: è la parte di memorizzazione delle variabili, delle stringhe, arrays e altri dati del programma. Stack: dove viene salvato lo stato prima di eseguire un salto ad un sottoprogramma. Quando il programma viene lanciato contiene le variabili di environment + gli argomenti con cui si è invocato il programma. esempio: cron daemon. Alcuni concetti di base: processo (3) Stack Un processo può creare altri processi (child processes) e quest'ultimi possono, a loro volta, creare altri processi. 1 parent process A Data Text 1 parent process B 3 child processes D E C 2 child processes E I processi possono comunicare tra di loro e sincronizzare le loro attività (interprocess communication). Il file system La pipe È uno pseudofile che può essere usato per connettere due processi: Proc. A pipe Proc. B È un concetto chiave supportato da tutti i sistemi operativi: sistema operativo nasconde le diversità e difficoltà di accesso ai dispositivi di I/O e presenta al programmatore un modello astratto di file, indipendente dal dispositivo utilizzato. Quando il processo A vuole inviare dati a B, scrive sulla pipe, come se fosse un file in uscita. Il processo B può leggere i dati dalla pipe come se provenissero da un file in ingresso. La directory è un posto dove tenere raggruppati insieme i files. La comunicazione assomiglia a operazioni ordinarie di lettura/ scrittura su files. I files e le directory sono organizzate con una struttura ad albero. L'unico modo che un processo ha per capire se sta scrivendo su una pipe invece che su un file è tramite una speciale chiamata di sistema. Ogni processo ha una working directory, dove vengono cercati i files che non iniziano con uno slash (/). root directory La shell di UNIX È l'interprete di comandi di UNIX. È l'interfaccia primaria tra l'utente al terminale e il sistema operativo. students Mitch Melvin faculty Maggie Prof.A Prof.B Tutte le volte che un utente si collega su una macchina UNIX, una shell viene avviata: utilizza il terminale come standard input e standard output. parte scrivendo un prompt che indica all'utente che la shell è pronta ad accettare dei comandi. Courses Papers sperI_modA_2010.dat path assoluto: /faculty/Prof.A/Courses/sperI_modA_2010.dat Da: http://www.levenez.com/unix/ UNIX Time sharing system First edition (V1) nov. 1971 UNICS sept. 1969 La shell di UNIX (2) 1BSD march 1978 4.3 BSD june 1986 Cosa succede quando l'utente scrive $ date UNIX Time sharing system Sixth edition (V6) may 1977 UNIX Time sharing system Fourth edition (V4) february 1973 UNIX System III november 1981 UNIX Time sharing system Seventh edition (V7) january 1979 MINIX 1984 UNIX System V january 1983 MINIX 1.0 1987 LINUX 1.3.100 LINUX 2.0 LINUX 2.0.40 june 1996 june 1996 february 2004 LINUX 2.2.0 LINUX 2.2.26 january 1999 25 february 2004 finche' il processo child è in esecuzione, la shell aspetta che termini. quando il child termina l'esecuzione, la shell stampa un nuovo prompt e cerca di leggere la prossima linea di comandi. È possibile ridirigere lo standard output ad un file, esempio $ date > file march 1995 4.4 BSD Shell INPUT/OUTPUT march 1994 la shell crea un processo child ed esegue il programma date come child. Mon Oct 18 00:10:20 CEST 2010 $ LINUX 0.0.1 august 1991 LINUX 1.1.95 Similmente è possibile ridirigere anche lo standard input: $ sort < file1 > file2 LINUX 2.4.0 LINUX 2.4.37.10 january 2001 13 september 2010 LINUX 2.6.0 LINUX 2.6.36 december 2003 20 ottobre 2010 LINUX 1.1.52 october 1994 LINUX 0.0.1 LINUX 1.0 august 1991 march 1994 Da: http://www.levenez.com/unix/ la shell invoca il programma sort prendendo l'input da file1 e mandando l'output in file2. L'aggiunta del carattere '&' alla fine del comando fa sì che la shell non aspetti che l'esecuzione sia completata, ma ritorni subito il prompt: $ sort lista_studenti06.txt > a & [2] 1479 $ [2]+ Done sort lista_studenti06.txt >a $ Le distribuzioni di LINUX Single UNIX specifications Il kernel di LINUX è mantenuto da un gruppo di sviluppatori. I sorgenti sono disponibili in: http://www.kernel.org Esistono moltissime distribuzioni di LINUX, alcune commerciali Su http://www.linux.org ce ne sono 220 Slackware www.opensuse.org www.slackware.com Gentoo Yellow Dog µLinux www.gentoo.org www.terrasoftsolutions.com mulinux.sunsite.dk Specifiche e informazioni varie disponibili all'indirizzo: http://www.unix.org Altro sito http://distrowatch.com LINUX e la sua licenza d'uso La distribuzione Ubuntu è una derivazione della Debian (file formato .deb), ma ha pacchetti più recenti. La versione corrente (10.10) è disponibile per le architetture: PC (Intel x86), 64-bit PC (AMD64); UltraSPARC T1 (Sun Fire T1000 and T2000) PowerPC (Apple iBook and Powerbook, G4 and G5). LINUX è un sistema operativo libero scritto inizialmente da Linus Torvald (LINUX = LINUs' uniX). Il 25 agosto 1991 apparse il primo annuncio di LINUX annuncio nei newsgroup: "Hello everybody [...]I’m doing a (free) operating system (just a hobby, won’t be big and professional[...])." È possibile scaricare il CD (DVD) della distribuzione dal sito: http://www.ubuntu.com/ Oppure si può richiedere, gratuitamente, il CD dell'installazione. La licenza di utilizzo del software libero (copyleft in contrasto a copyright) prende il nome di GPL (Gnu Public Licence). Copyleft is a general method for making a program free software and requiring all modified and extended versions of the program to be free software as well. http://www.gnu.org/copyleft/fdl.html La documentazione: GNUtemberg UNIX BSD Il progetto GNUtemberg raccoglie la documentazione libera le guide LDP (Linux Documentation Project); i manuali delle distribuzioni GNU/Linux; i manuali di programmi; Nasce dalla release BSD4.3 linguaggi di programmazione, applicativi e molto altro. esistono 4 diversi flavour, con diversi scopi: netBSD openBSD www.netbsd.org www.openbsd.org portabilità sicurezza freeBSD www.freebsd.org prestazioni http://www.gnutemberg.org, http://cdrom.gnutemberg.org www.dragonflybsd.org Branched from FreeBSD in 2003 in order to develop a radically different approach to concurrency, SMP, and most other kernel subsystems. La documentazione Molti siti liberi contengono informazione sulle distribuzioni e sulla documentazione disponibile: http://www.linux.org Le guide sono divise in: LINUX documentation project (LDP). HOWTOs; FAQs; LINUX man pages. Esistono degli ottimi appunti di informatica libera (di Daniele Giacomini), in italiano, all'indirizzo: http://a2.pluto.it