6a6eebf3b3ece8cc3e32ad3484a55d41baddd352
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 | + |
|
| 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 | + |
|
| 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 | + |
|
| 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 | + |
|
| 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 | + |
|
| 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 | + |
|
| 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 | +  |
|
| 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 | +  |
|
| 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 |