Il 0% ha trovato utile questo documento (0 voti)
18 visualizzazioni22 pagine

1-Introduzione ConcettiBase

Elettrotecnica
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
18 visualizzazioni22 pagine

1-Introduzione ConcettiBase

Elettrotecnica
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 22

Sistemi operativi: introduzione e

concetti di base
Antonio Pecchia
[email protected]

Dipartimento di Ingegneria
Laurea in Ingegneria Informatica
Sistemi Operativi

Informazioni generali
q Metodi didattici:
§ lezioni frontali ed esercitazioni d’aula;

q Testo e materiale:
§ I moderni sistemi operativi, Tanenbaum,
Bos. 5a edizione, Pearson (2023);
§ presentazioni delle lezioni;
§ materiale esercitativo, di approfondimento
e risorse disponibili in rete.
Warm-up task
./hello APPLICAZIONE

libreria C printf() funzione


di libreria
/usr/lib/x86_64-linux-gnu/
libc-2.31.so


USER
OS KERNEL write chiamata di sistema
anche detta system call
oppure syscall

Warm-up task
q Alcuni puntatori agli esempi appena visti:
§ chiamate di sistema disponibili:
§ find /usr/include -name unistd_64.h
§ https://gpages.juszkiewicz.com.pl/syscalls-table/syscalls.html
§ more on syscall: man syscall
§ utility ldd:
§ elenca gli shared object richiesti da un programma;
§ https://man7.org/linux/man-pages/man1/ldd.1.html
§ utility strace:
§ traccia chiamate di sistema e segnali Linux;
§ https://man7.org/linux/man-pages/man1/strace.1.html
INTRODUZIONE

Cap. 1: Introduzione – par. 1.1

A first view

system call interface

Figure 1-1. Where the operating


system fits in.
Kernel e sistema operativo
q Kernel (chiamato anche nucleo):
§ software "mediatore" tra applicazioni e HW;
§ parte del SO che risiede in memoria centrale;
§ esegue in risposta* a:
§ system calls, eccezioni, interruzioni.

q Sistema operativo (in senso più ampio):


§ kernel + sistema di base (consente ad un SO di avviarsi e di
presentare una interfaccia all’utente), programmi di utilità
(task manager, deframmentazione), librerie di sistema.
* https://w3.cs.jmu.edu/kirkpams/OpenCSF/Books/csf/html/KernelMechanics.html (Sez. 2.3.3)

Alcune precisazioni
q Dal cap. 1 (Fig. 1.1) del testo: il programma con cui
interagiamo shell (testo) e GUI (icone) "non è in
realtà parte del sistema operativo":
§ in altri testi-presentazioni si tende a ritenerli parte.

q I programmi applicativi (compilatori, ambienti grafici,


programmi di ufficio, browser, client email, …) non
sono sistema operativo.
One more representation

Figure from Silberschatz et al. 2018

Kernel mode vs user mode


q Nelle CPU Intel sono previsti 4 livelli di privilegio (ring):
§ valore su 2 bit chiamato current privilege level (CPL);
§ in pratica, sono usati 2 livelli: 0 (kernel mode) e 3 (user mode).
Kernel mode vs user mode
q Kernel (o supervisor) mode (è permesso tutto):
§ accesso consentito a tutto l’hardware e possibilità di
eseguire qualsiasi istruzione della macchina;
§ operazioni di I/O, abilitare-disabilitare interrupt, etc;
§ istruzioni privilegiate (possono essere usate solo in kernel
mode): cli, sti, iret, hlt, …
q User mode (privilegi ridotti):
§ disponibile solo un sottoinsieme di istruzioni macchina;

§ per es., non può: eseguire istruzioni assembly per l’I/O,

aprire file, stampare a video à bisogna invocare il kernel!

Kernel mode vs user mode


q In un certo istante, siamo o in user o in kernel mode:
§ la CPU deve essere in kernel mode per poter eseguire
codice del kernel;
§ l’unico modo per un programma user mode di cambiare il
livello di privilegio è tramite una system call.
q System call: unico meccanismo con cui una applicazione
può richiedere un servizio al kernel.
i programmi in user mode syscall syscall
richiedono l’esecuzione di
operazioni privilegiate al
kernel tramite system call
‘Cosa fa’ un sistema operativo
q Fornisce un insieme di astrazioni:
§ interfacce tramite cui è possibile usare la rete, disco, I/O,
etc., in maniera semplificata;
§ per es. file invece di byte memorizzati in un disco;

‘Cosa fa’ un sistema operativo


q Fornisce un insieme di astrazioni:
§ interfacce tramite cui è possibile usare la rete, disco, I/O,
etc., in maniera semplificata;
§ per es. file invece di byte memorizzati in un disco;

q Esempi di astrazione:
§ file / file system à memoria secondaria;
§ spazio di indirizzamento à memoria centrale;
§ processi / thread à esecuzione programmi;
§ socket à rete.
‘Cosa fa’ un sistema operativo
q Gestore delle risorse:
§ gestione delle risorse hardware e dei criteri con cui
assegnare una risorsa;
§ controllo della condivisione (multiplexing): nel tempo
(per es. CPU) e nello spazio (per es., la memoria).

una notizia: anche il sistema operativo stesso usa risorse


e le deve condividere con i programmi applicativi

Principali funzioni di un sistema operativo


q User interface (UI): per es., command line, GUI;
q Program execution: caricamento in memoria,
esecuzione;
q Operazioni I/O;
q File-system e file;
q Comunicazione (stesso computer o tramite rete);
q Rilevamento errori;
q Allocazione delle risorse: per es., cicli CPU, memoria
centrale, I/O;
q Protezione e sicurezza.
CENNI STORICI

Cap. 1: par. 1.2 e 1.4


Images source: Wikipedia (https://en.wikipedia.org/)

Prima generazione (metà ’40 - metà ‘50)

ENIAC – Electronic Numerical Integrator and Computer (1946), 17468 tubi termoionici,
circa 3000 istruzioni / secondo
Seconda generazione (metà ‘50 - metà ‘60)
q Transistor – sistemi batch;
Struttura di un job

Seconda generazione (metà ‘50 - metà ‘60)


Seconda generazione (metà ‘50 - metà ‘60)
q OS: Fortran monitor system
(FMS), IBSYS

Terza generazione (metà ‘60 – ‘80)


q Circuiti integrati.

IBM 2260
(1964)

DEC VT05
(1970)
IBM 5150
(1981)
IBM 360 (1965) DEC PDP-11 (1970)
Source: media.bevopr.io

Sidenote

Source: ResearchGate

HD IBM 305
Disk Storage Unit
ARPANET 5M (1956)
(1969)

Sidenote: LOC* stimate per alcuni OS


q Microsoft Windows: 50 million lines of code (2018);
q Linux kernel version 5.10 (2020): circa 27.8 million
lines of code;
q macOS 10.15 Catalina 86 million lines of code
stimate;
q Android mobile OS (version 10): circa 12 million
lines of code.

*LOC = lines of code (una metrica software)


Aspetti relativi ai SO
q Problemi di sviluppo e idee fondamentali.
q Esempio IBM OS/360:
§ software complesso, milioni di righe di codice (cresciute da 1 a 10
milioni), migliaia di bug;
§ si stima abbia richiesto 5000 anni uomo di sviluppo tra il 1963-
1966 (nota: l’ingegneria del software nasce nel 1968);
§ picchi di 1000 persone (programmatori, progettisti, personale
tecnico, …) a fronte di un team iniziale di 60 programmatori;
§ 4 volte il costo stimato iniziale.

"adding manpower to a software project that is


behind schedule delays it even longer"

Monoprogrammazione vs Multiprogrammazione
q In un sistema monoprogrammato la CPU si pone
in stato "inattivo" finché l’I/O termina.
Monoprogrammazione vs Multiprogrammazione
q Multiprogrammazione: più job caricati in memoria:
§ mentre un job attende il completamento dell’I/O, un altro job
può usufruire della CPU.

Monoprogrammazione vs Multiprogrammazione
Timesharing (multitasking)
q Una variante della multiprogrammazione:
§ ciascun job possiede, a turno, la CPU per un intervallo di
tempo denominato quanto.
§ Motivazioni:
§ gestione di un gruppo di task interattivi;
§ più utenti accedono simultaneamente al sistema da più
terminali;
§ il tempo del processore è condiviso tra più utenti.

Timesharing
Prog. 1 SO Prog. 2
User Program n main{
timer
interrupt
schedule{

User Program 1
} main{
timer
interrupt
Sw di Sistema schedule{

}
Un “timer interrupt” è
Sist. Operativo utilizzato per la
condivisione della CPU
Dagli anni ‘80 ad oggi MULTICS (60’s) Timeline molto
semplificata
influence
descendant

DEC VMS (70’s) UNIX (70’s)

q MULTICS (OS timesharing); XENIX System BSD UNIX (80’s)


MS/DOS
q UNIX (versione ridotta e (81) (1980) III & V
monoutente di MULTICS); (80’s)
MACH (85)
q Linux (OS clone di UNIX); Windows MINIX NEXTSTEP/
(1987) LINUX OPENSTEP Free
q Android è uno strato software Windows NT (93) (90’s-pres) (1989-97) BSD
"sopra" Linux. Windows 95

q MacOS deriva da Berkeley UNIX; Windows 2000 Mac OS X


q iOS è "simile" a macOS; (2000)
Windows XP

Windows Vista iOS (2007)


(2007) Android (2008)

Dagli anni ‘80 ad oggi MULTICS (60’s) Timeline molto


semplificata
influence
descendant
q Quarta generazione DEC VMS (70’s) UNIX (70’s)
(1980 ad oggi):
§ large scale
XENIX System BSD UNIX (80’s)
integration; personal MS/DOS
(81) (1980) III & V
(80’s)
computers. MACH (85)
Windows MINIX NEXTSTEP/
LINUX OPENSTEP Free
q Quinta generazione Windows NT (93)
(1987)
(90’s-pres) (1989-97) BSD
Windows 95
(1990 ad oggi): Mac OS X
Windows 2000
§ computer mobili. (2000)
Windows XP

Windows Vista iOS (2007)


(2007) Android (2008)
Domini applicativi OS
q Mainframe Operating Systems;
q Server Operating Systems;
q Personal Computer Operating Systems;
q Smartphone and Handheld Computer Operating Systems;
q Distributed Operating Systems;
q The Internet of Things (IoT) and Embedded Operating
Systems;
q Real-Time Operating Systems;
q Smart Card Operating Systems.

STRUTTURA DI UN SO

Cap. 1: par. 1.7 (fino a 1.7.3 incluso)


Struttura di un SO
q Un SO è un programma di notevole complessità e
dimensione.
q È fondamentale applicare durante il suo progetto e
realizzazione le tecniche proprie dell’ingegneria del
software, al fine di garantire:
§ correttezza, modularità, facilità di manutenzione,
efficienza di esecuzione, etc.

Sistema monolitico (macrokernel)


q L’intero SO come singolo programma in kernel mode:
§ pro: velocità di esecuzione;
§ contro: dimensioni del file binario, robustezza.
§ i "primi" SO monolitici erano effettivamente costituiti da un
solo programma senza particolari suddivisioni;
q In pratica OS monilitico + progettazione modulare:
§ il SO è organizzato in moduli, ciascuno destinato ad offrire
una delle funzionalità del sistema;
§ Esempi: kernel Unix-like (Linux, BSD, AIX, System V).
Architettura modulare: UNIX

Moduli caricabili
q File oggetto contenente funzionalità del kernel non
indispensabili per l’inizializzazione delle periferiche:
§ attivabile/disattivabile (on-demand) a tempo di esecuzione
(a mano oppure automaticamente);
§ rappresentano un modo per ridurre la dimensione del
kernel ed aumentare le robustezza.
q Esempio Linux:
§ lsmod elenca i moduli caricati;
§ insmod/rmmod consentono di caricare/rimuovere un modulo.
Users
Sistema a livelli
Command Interpreter
q SO modulari, organizzati
in una struttura File System
gerarchica; Interprocess comm.
q Le interazioni hanno luogo
I/O Management
solo tra livelli adiacenti;
Memory Management
q Esempio: THE
(Technische Hogeschool CPU Scheduling
Eindhoven). Process Management

Hardware

Una riflessione
q Si ipotizza che per sistemi 'seri’ ci possano essere
da 2 a 10 difetti ogni 1000 LOC …
q ... per 5 milioni LOC significa 10000-50000 difetti!
Microkernel

Kernel MINIX 3: 15.000 LOC C


1.400 LOC asm.

Figure 1-26. Simplified structure of the MINIX system

Microkernel
q Un microkernel implementa solo i meccanismi
assolutamente necessari:
§ le restanti funzionalità sono implementate all’esterno del
kernel, da processi di sistema (in user mode);
§ pro: facilità di estensione, robustezza ai guasti;
§ contro: performance, scambi di messaggi più lenti di una
chiamata a funzione (come nei kernel monolitici);
§ Esempi: Tru64 UNIX (Digital), Mach, Minix.
Hybrid kernel (soluzione intermedia)
q Soluzione intermedia tra macro e microkernel:
§ i driver dei dispositivi eseguono in kernel mode;
§ Esempi: Windows, OS X.

Confronto
q Schema esemplificativo:

Image source: Wikipedia (https://en.wikipedia.org/)

Potrebbero piacerti anche