Cerca nel Forum
Mostra risultati per tag 'sistemi operativi'.
Trovato 1 risultato
-
Salve a tutti! Ho da poco maturato l'idea di scrivere una serie di thread cercando di entrare più nel dettaglio nell'ambito dei sistemi operativi (da ora in poi OS). Non lo definirei un corso ma più che altro una serie di incontri dove mi piacerebbe confrontarci tutti, su questi programmi di complessità particolarmente rilevante. Non farò riferimento ad un particolare tipo di OS ma cercherò di fare una panoramica generale di quelli che sono (tutti o quasi) i meccanismi alla base di tali software. Tale idea spero di portarla a compimento volta per volta (cercherò di trovare il tempo) e verrà realizzata per puro spirito di condivisione, se poi sarà utile a qualcuno ben venga. Ovviamente questo scritto non può essere minimamente paragonato ad un libro di testo, dunque già vi anticipo che molte cose non le approfondirò e quasi sicuramente commetterò degli errori. In tali casi vi invito a consultare se volete il libro di riferimento o qualsiasi altro testo che riterrete opportuno. Riferimenti: Testo: Sistemi Operativi - Abraham Silberschatz, P. Baer Galvin, Greg Gagne Corso di Sistemi Operativi a.a. 2011 - Università di Roma "La Sapienza" Che cos'è un OS? Un sistema operativo altro non è che un programma come qualunque altro! La cosa particolare è che esso agisce da intermediario tra l'utente e gli elementi che compongono un sistema di elaborazione. Come già detto in precedenza sono dei software di dimensioni consistenti e per tale motivo la loro realizzazione deve essere di tipo modulare (un pezzettino alla volta). L'utilizzo degli OS e quindi il loro approccio semplifica: lo sviluppo di programmi, l'esecuzione dei processi (avremo modo di approfondirli) e la gestione delle risorse del sistema di elaborazione. Dal punto di vista del calcolatore, l'OS è visto come un assegnatore di risorse in quanto quasi tutti i moderni sistemi sono di tipo concorrente. Un OS di tipo concorrente si basa sulla possibilità di assegnare le diverse risorse ai più processi che ne fanno richiesta, ovviamente ci sono diversi meccanismi che consentono il corretto funzionamento dell'intero sistema senza andare incontro a problematiche conflittuali. Ma quali sono le risorse di cui parliamo? Tempo di impiego della CPU (chiamato anche CPU burst che per essere precisi altro non è che l'intervallo di tempo che la CPU dedica al processo che deve essere elaborato) Utilizzo della memoria Gestione dei dispositivi di I/O Gestione delle risorse grafiche ecc. Dal punto di vista dell'utente l'OS è strettamente legato all'interfaccia e ve ne sono di moltissime. Ovviamente noi comuni mortali riterremo migliore un sistema operativo con una buona interfaccia ma c'è comunque da considerare la questione relativa alle prestazioni e all'utilizzo delle risorse. In altre parole diciamo che ci deve essere un giusto equilibrio tra quelle che sono le caratteristiche sopra elencate. Un calcolatore è costituito da uno o più processori e da una serie di controllori dei dispositivi, che sono connessi all'intero sistema di elaborazione attraverso un "canale" chiamato bus. A tutti i dispositivi presenti viene concesso l'utilizzo e quindi l'accesso ad una memoria. Nel seguito di questi thread spero riusciremo a vedere le sostanziali differenze tra memoria condivisa e memoria a scambio di messaggi. Come si interfacciano i dispositivi con il sistema operativo? Esistono diverse tecniche di interfacciamento, quelle che analizzeremo sono: Buffering: il buffer è un deposito temporaneo che semplifica la sincronizzazione del dispositivo con l'esterno. Il concetto può essere reso più chiaro attraverso un esempio. La CPU lavora con velocità più o meno pari a 1ns (nano-secondo), mentre la RAM con velocità pari a 50ns quindi per farli lavorare insieme è possibile utilizzare la tecnica del buffering, ovvero un dispositivo più lento della CPU (vedi RAM) inizia la lettura e la memorizzazione dei file nel suo buffer interno, ancora prima che la CPU ne faccia esplicitamente richiesta. Quando la CPU effettivamente ha bisogno di tali file questi saranno già presenti nel buffer e quindi pronti per essere trasmessi. In tal modo si ottimizzano i tempi quando si hanno a che fare con dispositivi relativamente più lenti rispetto alla CPU. Spooling: è una tecnica che consiste nell'effettuare operazioni simultanee anche se la CPU è impegnata in altre operazioni. In altre parole si "salta" il passaggio relativo all'interrogazione della CPU. Per essere più precisi se ad esempio voglio stampare un file, i dispositivi protagonisti sono la stampante e il disco, dunque la CPU da solo l'abilitazione all'accesso al bus di sistema, poi sarà la stampante a dialogare con il disco senza più impegnare la CPU. Caching: la cache è un "magazzino" locale a portata di mano all'interno della CPU. Sono memorie estremamente veloci! Dunque il caching è una tecnica che consente di ottenere costi bassi e massime prestazioni. Mi avvalgo di un esempio: quando il sistema ha bisogno di prelevare una determinata istruzione, non viene presa solo quella ma l'intero blocco. Tale blocco o meglio insieme di istruzioni viene memorizzato all'interno della cache in modo tale che quando l'OS ne fa richiesta queste saranno immediatamente disponibili. A primo acchito sembra un tecnica "sprecona" o almeno al sottoscritto diede tale impressione ai tempi, ma in realtà non è così perché il principio si basa sul fatto che con probabilità molto elevata se l'OS ha bisogno di una istruzione, a breve avrà bisogno anche delle altre che la contornano. Non è sicuro che l'intero blocco servirà ma viene preso comunque per le motivazioni dette poco prima, ad ogni modo se le istruzioni memorizzate nella cache non risulteranno essere utili verranno eliminate. Interrupt: immaginiamo che ci sia un programma in esecuzione e che ad un certo punto l'utente sposti il mouse in una qualsiasi posizione. Cosa succede? Viene lanciata una interruzione alla CPU che stava tranquillamente eseguendo il programma insieme alle altre milioni di operazioni. La CPU a questo punto è come se facesse una fotografia della sua situazione attuale memorizzandola all'interno della RAM, fatto ciò viene eseguito un programma diagnostico con l'intento di valutare se effettivamente il mouse è stato spostato oppure no. In caso positivo viene eseguito quel frammento di codice corrispondente all'esigenza e successivamente aggiornate le informazioni dell'intero sistema. Infine viene recuperato dalla RAM lo stato precedente (prima dell'interrupt) della CPU e quindi portati a termine tutti i processi a partire dal punto in cui sono stati interrotti.Un sistema che funziona con il meccanismo delle interruzioni prende il nome di sistema a multiprogrammazione.