Sperimentazioni I Architettura generica di un computer Architettura

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