sistemi/s02/20260225.md
... ...
@@ -0,0 +1,411 @@
1
+# Architettura dei sistemi Operativi
2
+
3
+descrive quali sono le varie componenti del so e come queste sono collegate tra loro
4
+
5
+L'architettura dei so da diversi punti di vista
6
+
7
+- servizi forniti (visione utente non tanto la persona quanto i programmi)
8
+- interfaccia di sistema (visione programmatore)
9
+- componenti di sistema (visione progettista so)
10
+
11
+## Componenti di un sistema operativo
12
+
13
+ Gestione dei processi
14
+ Gestione della memoria principale: ram o mem interna processore
15
+ Gestione della memoria secondaria: dischi
16
+ Gestione file system: stato che si colloca al disopra della mem secondaria e ci permette di vedere le cose nella mem secondaria
17
+ Gestione dei dispositivi di I/O
18
+ Supporto multiuser: moduli all'interno del so che creano l'astrazione multiutente (sono info di corredo che vengono aggiunte per creare multiutenti)
19
+ Networking
20
+ Inter Process Communication (IPC)
21
+
22
+### Gestione processi
23
+
24
+- un processo e' un programma in esecuzione (l'attivita di un programma in esecuzione).
25
+- il sistema operativo e' responsabile delle seguenti attivita'
26
+ - creazione e terminazione dei processi
27
+ - sospensione e riattivazione dei processi
28
+ - gestione deadlock
29
+ - comunicazione tra processi
30
+ - sincronizzazione tra processi
31
+
32
+### Memoria Principale
33
+
34
+- e' un array di byte indirizzabili singolarmente
35
+- ci sono istruzioni per accedere a un singolo byte o di piu fino al (non ho capito) es. un processore da x64 puo accedere a 1-16-64 byte in blocchi
36
+- è un deposito di dati facilmente accessibile alla CPU (econdiviso con i controller dei dispositivi di I/O se DMA)
37
+
38
+il sistema operativo e' responsabile delle seguenti attivita:
39
+
40
+- tenere traccia di quali parti della mem sono usate da chi
41
+- decidere quali processi caricare quando diventa disponibile spazio in mem
42
+- allocare e deallocare lo spazio di memoria quando necessario
43
+- usare mem secondaria per ampliare la mem principale (vitual memory, swap) se una pagina non viene usata da un po viene messa in mem secondaria
44
+
45
+### Memoria Secondaria
46
+
47
+Poiché la memoria principale è volatile e troppo piccola per
48
+contenere tutti i dati e tutti i programmi in modo
49
+permanente, un computer è dotato di memoria secondaria
50
+ In generale, la memoria secondaria è data da hard disk,
51
+dischi ottici, dischi allo stato solido, etc.
52
+Si accede a blocchi (nella mem primaria si accede a byte)
53
+
54
+Il sistema operativo e' responsabile delle seguenti attivita riguardanti la gestione della memoria secondaria:
55
+
56
+- gestione partizionamento
57
+- gestione dell'accesso efficiente e affidabile (RAID) Nota: raid viene usato per velocita'. Si usa per sparpagliare i dati su vari dischi cosi da ridurre il tempo di ritardo medio delle richieste. Facendo raid semplice si va piu veloci come performance ma si ottiene un sistema piu fragile i dischi si rompono prima
58
+- ordinamento efficiente delle richieste (disk scheduling)
59
+
60
+### Gestione dell'I/O
61
+
62
+Un interfaccia per la gestione dei device driver
63
+Un insieme di driver per dispositivi hw specifici
64
+Un sistema di gestione buffer per il caching delle informazioni
65
+
66
+Per ogni op di io un dirver va in funzione due volte (alla fine dell'op di io quando deve essere inviato l'interrrupt e per la richiesta )
67
+
68
+### Gestione del file system
69
+
70
+Un file e' l'astrazione informatica di un archivio di dati
71
+(il concetto di file e' indipendente dal media sul quale viene memorizzato)
72
+Un file system e' composto da un insieme di file
73
+un fs e' anche quello contenuto in una chiavetta (quando si fa mount viene visto il file system della chiavetta)
74
+Il sistema operativo e' responsabile delle seguenti attivita':
75
+
76
+- creazione e cancellazione file
77
+- creazione e cancellazione di directory
78
+- manipolazione di file e directory
79
+- codifica dei file system su una sequenza di blocchi
80
+
81
+### Supporto multiuser - protezione
82
+
83
+Il termine protezione si riferisce al meccanismo per controllare gli accessi dei processi alle risorse del sistema e degli utenti
84
+Il meccanismo di protezione sw deve:
85
+
86
+- gestire l'identita' del proprietario del processo (uid gid)
87
+- gestire chi può fare cosa (per ogni utente per ogni risorsa memorizzare cosa puo’ essere fatto e cosa no)
88
+- Fornire un meccanismo di attuazione della protezione
89
+
90
+### Networking
91
+
92
+- consente
93
+ - di fare comunicare processi in esecuzione su piu elaboratori
94
+ - di condividere risorse
95
+- quali servizi
96
+ - protocolli di comunicazione a basso livello
97
+ - ip
98
+ - tcp,udp
99
+- servizi di comunicazione ad alto livello
100
+ - file system distribuiti (nfs,smb)
101
+
102
+## Architettura dei sistemi operativi - struttura del programma sistema operativo
103
+
104
+### Sommario
105
+
106
+ Sistemi con struttura semplice
107
+ Sistemi con struttura a strati
108
+ Microkernel
109
+ Macchine virtuali
110
+ Progettazione di un sistema operativo
111
+
112
+Ora vediamo come le componenti del so sono collegate tra loro
113
+
114
+progettazione di un so:
115
+sistemi molto efficienti sono poco modulari
116
+ sistemi molto modulari sono meno efficienti
117
+
118
+### Struttura dei so
119
+
120
+Divisi in due grandi famiglie
121
+
122
+- struttra semplice
123
+- struttura a strati
124
+
125
+Sistemi a struttura semplice (o senza struttura)
126
+
127
+- in alcuni casi sono so che non hanno struttura progettata a priori
128
+- possono essere descritti come una collezione di procedure, ognuna delle quali puo chiamaer altre procedure
129
+- tipicamente sono so semplici e limitati
130
+
131
+MS-DOS Free-DOS
132
+![20260225_2026-02-25_11-59-43](assets/imgs/20260225_2026-02-25_11-59-43.png)
133
+
134
+MS-DOS
135
+
136
+- Commenti
137
+  le interfacce e i livelli di funzionalità non sono ben separati
138
+  le applicazioni possono accedere direttamente alle routine
139
+ di base per fare I/O
140
+  come conseguenza, un programma sbagliato (o "maligno")
141
+ può mandare in crash l'intero sistema
142
+- Motivazioni:
143
+  i progettisti di MS-DOS erano legati all'hardware dell'epoca
144
+  8086, 8088, 80286 non avevano la modalità protetta (kernel)
145
+
146
+nessun controllo di accessi in memoria (l'uso piu comune sel tsr era quello di inserire dei virus, lol)
147
+I giochi cercavano di bypassare il so e accedere direttamente alle risorse (es gpu)
148
+Un errore del programma (visto che non cerano controllo di accessi in memoria) poteva causare il crash del sistema
149
+
150
+UNIX
151
+Le prime versioni facevano un po cagare
152
+diviso in due parti (kernel e programmi di sistema)
153
+Il kernel e' delimitato:
154
+
155
+- in basso dall'hw
156
+- in alto dal livello delle system call
157
+
158
+Motivazioni
159
+
160
+- anche Unix inizialmente fu limitato dalle limitazioni
161
+ hardware...
162
+- ... ma ha un approccio comunque più strutturato
163
+
164
+![20260225_2026-02-25_12-06-05](assets/imgs/20260225_2026-02-25_12-06-05.png)
165
+
166
+### Sistemi con struttura dati a strati
167
+
168
+Il so e' strutturato tramite un insieme di strati (layer)
169
+
170
+Ogni strato:
171
+e' basato sugli strati inferiori
172
+offre servizi agli strati superiori
173
+
174
+Motivazioni:
175
+il vantaggio principale e'la modularita:
176
+
177
+- encapsulation e data hiding
178
+- abstract data types
179
+ Vengono semplificate le frasi di implementazione, debugging e ristrutturazione del sistema
180
+
181
+![20260225_2026-02-25_12-10-35](assets/imgs/20260225_2026-02-25_12-10-35.png)
182
+Esempi:
183
+
184
+The O.S. (Dijkstra) 5) Programmi utente 4) Gestione I/O 3) Console device/driver 2) Memory management
185
+
186
+1. CPU Scheduling
187
+2. Hardware
188
+
189
+Venus os 6) Programmi utente 5) Device driver e scheduler 4) Memoria virtuale 3) Canali di I/O 2) CPU Scheduling
190
+
191
+1. Interprete di istruzioni
192
+2. Hardware
193
+
194
+Problema dei sistemi con struttura a strati
195
+
196
+- tendono a essere meno efficienti (ogni stato tende ad aggiungere overhead)
197
+- occorre studiare accuratamente la struttura dei layer
198
+ - le funzionalita previste al layer N devono essere implementate utilizzando esclusivamente i servizi dei livelli inferiori
199
+- in alcuni casi questa limitazione puo essere difficile da superare
200
+- esempio: meccanismi di swapping di memoria
201
+ - Win: swap area è un file in memoria
202
+ - Linux: swap area ha una partizione dedicata
203
+
204
+risultato: si tende a trovare un compromesso tra i due mondi
205
+
206
+OS/2
207
+![20260225_2026-02-25_12-16-13](assets/imgs/20260225_2026-02-25_12-16-13.png)
208
+Nota: scrivi due righe su window subsystem for linux
209
+Computer HW/SW architecture (Myers)
210
+Grafico di myers
211
+ISA e'il codice macchina per fare le op macchina (instruction set architucture)
212
+Alla fine l'hw e' linguaggio
213
+![20260225_2026-02-25_12-16-42](assets/imgs/20260225_2026-02-25_12-16-42.png)
214
+
215
+### politiche e meccanismi
216
+
217
+Separazione della politica dai meccanismi
218
+
219
+- la politica decide cosa deve essere fatto
220
+- i meccanismi attuano la decisione
221
+
222
+E un concetto fondamentale di software engineering
223
+
224
+- la componente che prende le decisioni politiche puo essere completamente diversa da quella che implementa i meccanismi
225
+- rende possibile
226
+ - cambiare la politica senza cambiare i meccanismi
227
+ - cambiare i meccanismi senza cambiare la politica
228
+
229
+Nei sistemi a microkernel (si chiamano cosi perche cercano di fare fare meno cose al kernel) si implememntano nei kernel
230
+
231
+Esempio: MINIX
232
+
233
+- il gestore della memoria è un processo esterno al kernel decide la memoria da allocare ai processi ma non accede direttamente alla memoria del sistema può accedere però alla propria memoria (è un processo come tutti gli altri)
234
+- quando deve attuare delle operazioni per implementare la politica decisa lo fa tramite chiamate specifiche al kernel (system task)
235
+
236
+Controesempio: MacOS <=9 (non Mac OS X)
237
+
238
+- in questo sistema operativo, politica e meccanismi di gestione dell'interfaccia grafica sono stati inseriti nel kernel
239
+- svantaggi: - un bug nell'interfaccia grafica puo mandare in crash lintero sistema
240
+ Windows 9x non e'differente
241
+
242
+### Organizzazione del kernel
243
+
244
+Esistno 3 categorie principali di kernel
245
+
246
+Kernel Monolitici
247
+
248
+- Un aggregato unico (e ricco) di procedure di gestione
249
+ mutuamente coordinate e astrazioni dell’HW
250
+
251
+Micro Kernel
252
+
253
+- Semplici astrazioni dell’HW gestite e coordinate da un kernel
254
+ minimale, basate un paradigma client/server, e primitive di
255
+ message passing
256
+
257
+Kernel Ibridi
258
+
259
+- Simili a Micro Kernel, ma hanno componenti eseguite in kernel
260
+ space per questioni di maggiore efficienza
261
+
262
+(+ ExoKernel, AnyKernel)
263
+
264
+### Organizzazione del kernel
265
+
266
+Kernel Monolitici
267
+
268
+- Un insieme completo e unico di procedure mutuamente correlate e coordinate
269
+ System calls
270
+ Implementano servizi forniti dal kernel, tipicamente realizzati in moduli eseguiti in kernel mode
271
+
272
+Esiste modularità, anche se l’integrazione del codice, e il fatto che tutti i moduli sono eseguiti nello stesso spazio, è tale da rendere tutto l’insieme un corpo unico in esecuzione
273
+
274
+### Organizzazione del kernel
275
+
276
+Kernel Monolitici:
277
+
278
+Efficienza
279
+
280
+- L’alto grado di coordinamento e integrazione delle routine
281
+ permette di raggiungere ottimi livelli di efficienza
282
+
283
+Modularità
284
+
285
+- I più recenti kernel monolitici (Es. LINUX) permettono di effettuare il caricamento (load) di moduli eseguibili a runtime
286
+- Possibile estendere le potenzialità del kernel, solo su richiesta
287
+- Esempi di Kernel monolitici: LINUX, FreeBSD UNIX
288
+
289
+### Microkernel o sistemi client/server
290
+
291
+problema: i kernel continuano a crescere in complessita
292
+idea: rimuover dal kernel tutte le parti non essenziali e implementarle come processo a livello utente
293
+Esempio: per accedere a un file un processo interagisce con il processo gestore del file system
294
+Un kernel perfetto avrebbe solo 2 system calls (send e recieve)
295
+Es: AIX, BeOS, L4, Mach, Minix, MorphOS, QNX, RadiOS, VSTa
296
+cosa si perde? efficienza (tante richieste)
297
+
298
+**Quali funzionalità deve offrire un microkernel?**
299
+
300
+- funzionalità minime di gestione dei processi e della memoria
301
+- meccanismi di comunicazione per permettere ai processi clienti di chiedere servizi ai processi serventi
302
+
303
+**La comunicazione è basata su message passing**
304
+il microkernel si occupa di smistare i messaggi fra i vari processi
305
+
306
+Quelli di gnu volevano fare un microkernel, avevano fatto tutto il sistema ma mancava il kernel. Linus riusci per opportunita e tempo a batterli
307
+
308
+**System call di un s.o. basato su microkernel**
309
+Tramite queste due system call, è possibile implementare l'API standard di gran parte dei sistemi operativi
310
+
311
+```c
312
+int open(char* file, ...)
313
+{
314
+msg = < OPEN, file, ... >;
315
+send(msg, file-server);
316
+fd = receive(file-server);
317
+return fd;
318
+}
319
+```
320
+
321
+Vantaggi
322
+
323
+- il kernel risultante è molto semplice e facile da realizzare
324
+- il kernel è più espandibile e modificabile
325
+ - per aggiungere un servizio: si aggiunge un processo a livello utente, senza dover ricompilare il kernel
326
+ - per modificare un servizio: si riscrive solo il codice del servizio stesso
327
+- il s.o. è più robusto
328
+ - se per esempio il processo che si occupa di un servizio cade, il resto del sistema può continuare ad eseguire
329
+- sicurezza
330
+ - è possibile assegnare al microkernel e ai processi di sistema livelli di sicurezza diversi
331
+- adattabilità del modello ai sistemi distribuiti
332
+ - la comunicazione può avvenire tra processi nello stesso sistema o tra macchine differenti
333
+
334
+Minix: Il kernel
335
+è dato dal gestore dei processi e dai task
336
+i task sono thread del kernel
337
+![20260225_2026-02-25_12-51-04](assets/imgs/20260225_2026-02-25_12-51-04.png)
338
+
339
+### Confronto tra kernel monolitici e microkernel
340
+
341
+- Monolitico
342
+ - Considerato obsoleto nel 1990...
343
+ - È meno complesso gestire il codice di controllo in un’unica area di indirizzamento (kernel space)
344
+ - È più semplice realizzare la sua progettazione (corretta)
345
+- Micro Kernel
346
+ - Più usato in contesti dove non si ammettono failure
347
+ - Es. QNX usato per braccio robot Space shuttle
348
+ - N.B. Flamewar tra L. Torwalds e A. Tanembaum riguardo alla soluzione migliore tra Monolitico e Micro Kernel https://en.wikipedia.org/wiki/Tanenbaum%E2%80%93Torvalds_debate
349
+
350
+### Kernel Ibridi
351
+
352
+Kernel Ibridi (Micro kernel modificati)
353
+
354
+- Si tratta di micro kernel che mantengono una parte di codice in “kernel space” per ragioni di maggiore efficienza di esecuzione
355
+- ...e adottano message passing tra i moduli in user space
356
+ N.B.
357
+- i kernel Ibridi non sono da confondere con Kernel monolitici in grado di effettuare il caricamento (load) di moduli dopo la fase di boot.
358
+
359
+### Windows NT e derivati
360
+
361
+Windows NT è dotato di diverse API
362
+
363
+- Win32, OS/2, Posix
364
+ Le funzionalità delle diverse API sono implementate tramite processi server
365
+ ![20260225_2026-02-25_12-55-35](assets/imgs/20260225_2026-02-25_12-55-35.png)
366
+
367
+### ExoKernel (kernel di sistemi operativi a struttura verticale)
368
+
369
+Approccio radicalmente modificato per implementare O.S.
370
+Motivazioni
371
+
372
+- Il progettista dell’applicazione ha tutti gli elementi di controllo per decisioni riguardo alle prestazioni dell’HW
373
+- Dispone di Libreria di interfacce connesse all’ExoKernel
374
+- Es. User vuole allocare area di memoria X o settore disco Y
375
+
376
+Limiti
377
+
378
+- Tipicamente non vanno oltre l’implementazione dei servizi di protezione e multiplazione delle risorse
379
+- Non forniscono astrazione concreta del sistema HW
380
+
381
+### AnyKernel
382
+
383
+Driver in user space
384
+
385
+- I driver possono essere caricati in user space
386
+- Rapido/sicuro sviluppo di driver
387
+- Il concetto può essere esteso a file system e stack di rete
388
+
389
+### Macchine virtuali
390
+
391
+E' un approccio diverso al multitasking
392
+
393
+- invece di creare l'illusione di molteplici processi che posseggono la propria CPU e la propria mememoria...
394
+- si crea l'astrazione di un macchina virtuale
395
+ Le macchine virtuali
396
+- emulano il funzionamento dell'hardware
397
+- è possibile eseguire qualsiasi sistema operativo sopra di esse
398
+ ![20260225_2026-02-25_12-58-43](assets/imgs/20260225_2026-02-25_12-58-43.png)
399
+
400
+Vantaggi:
401
+
402
+- consentono di far coesistere so differenti
403
+- possono fare funzionare so monotask in un sistema multitask e sicuro (es. linux in macos o windows e viceversa)
404
+
405
+Svantaggi:
406
+
407
+- soluzioni inefficienti
408
+- istruzioni hw di virtualizzazione (istruzioni VMX)
409
+- difficile condividere risorse
410
+
411
+es. storici IBM VM, la macchina virtuale java o python
sistemi/s02/assets/imgs/20260225_2026-02-25_11-59-43.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/20260225_2026-02-25_11-59-43.png differ
sistemi/s02/assets/imgs/20260225_2026-02-25_12-06-05.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/20260225_2026-02-25_12-06-05.png differ
sistemi/s02/assets/imgs/20260225_2026-02-25_12-10-35.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/20260225_2026-02-25_12-10-35.png differ
sistemi/s02/assets/imgs/20260225_2026-02-25_12-16-13.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/20260225_2026-02-25_12-16-13.png differ
sistemi/s02/assets/imgs/20260225_2026-02-25_12-16-42.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/20260225_2026-02-25_12-16-42.png differ
sistemi/s02/assets/imgs/20260225_2026-02-25_12-51-04.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/20260225_2026-02-25_12-51-04.png differ
sistemi/s02/assets/imgs/20260225_2026-02-25_12-55-35.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/20260225_2026-02-25_12-55-35.png differ
sistemi/s02/assets/imgs/20260225_2026-02-25_12-58-43.png
... ...
Binary files /dev/null and b/sistemi/s02/assets/imgs/20260225_2026-02-25_12-58-43.png differ