[FONDAMENTI di Sistemi Operativi] 1 - Introduzione

Qualsiasi argomento riguardante il proprio pc, da problemi hardware a consigli
Avatar utente
darkmod
Utente
Messaggi: 16
Iscritto il: 05/01/2015, 11:30

[FONDAMENTI di Sistemi Operativi] 1 - Introduzione

Messaggio da darkmod »

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.

Immagine

Come si interfacciano i dispositivi con il sistema operativo?
Esistono diverse tecniche di interfacciamento, quelle che analizzeremo sono:
  1. 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.
  2. 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.
  3. 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.
  4. 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.
Avatar utente
Andre@CK
Amministratore
Messaggi: 2409
Iscritto il: 14/06/2012, 16:54

Re: [FONDAMENTI di Sistemi Operativi] 1 - Introduzione

Messaggio da Andre@CK »

Bell'idea Dark! Grazie mille :)
Avatar utente
darkmod
Utente
Messaggi: 16
Iscritto il: 05/01/2015, 11:30

Re: [FONDAMENTI di Sistemi Operativi] 1 - Introduzione

Messaggio da darkmod »

Figurati ;)
Avatar utente
frankino
Moderatore
Messaggi: 210
Iscritto il: 12/04/2013, 13:52
possiedo le seguenti console: xbox360 fat e slim,wii,psp,nds

Re: [FONDAMENTI di Sistemi Operativi] 1 - Introduzione

Messaggio da frankino »

ottimo dark
In elettronica nothing is impossible!!!
Avatar utente
JNX
Uomo notizia
Messaggi: 1262
Iscritto il: 04/09/2012, 17:30
possiedo le seguenti console: Xbox360

Re: [FONDAMENTI di Sistemi Operativi] 1 - Introduzione

Messaggio da JNX »

Ottimo!

Inviato dal mio LT28h
Quando il gioco si fa duro, i duri iniziano a giocare

Immagine

Torna a “Computer e dintorni”