Cerca nel Forum
Mostra risultati per tag 'corso'.
Trovato 2 risultati
-
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.
-
[fullimg=100]http://images.nonsologaming.com/diodi_corso.jpg[/fullIMG] Come per tutti gli altri componenti, i diodi sono differenziati secondo le loro caratteristiche, ma nei circuiti che andremo a realizzare inizialmente faremo utilizzo solo di alcuni diodi 1N4004, di facile reperibilità e di comune impiego. Le caratteristiche dei diodi Il diodo è un dispositivo elettronico che in un utilizzo ideale permette il flusso di corrente elettrica in un verso mentre la blocca completamente se il flusso di corrente cerca di attraversare il diodo in senso inverso. In poche parole, la corrente nel diodo passa in una sola direzione, mentre si comporta come un circuito aperto (nessun passaggio di corrente) se la corrente cerca di attraversarlo in direzione inversa. L'animazione fa schifo (non mi è venuta troppo bene asd), ma può aiutarvi a capire meglio il concetto: [imgx] http://images.nonsologaming.com/diodo_anim.gif[/imgx] Nota: nell'immagine non è scritto, ma la lampadina è da 3V... chiaramente con una tensione di 3V (due batterie da 1.5V in serie) non è possibile illuminare una classica lampadina da 220V. In questo frame è possibile notare le denominazioni dei due poli di un diodo: [imgx] http://images.nonsologaming.com/diodi_ak.png[/imgx] Nell'animazione potete notare che se l'anodo viene rivolto verso un punto a potenziale maggiore (i 3V) ed il catodo ad un punto a potenziale minore rispetto a quello dell'anodo (il polo negativo della batteria) il flusso di corrente elettrica attraversa la lampadina illuminandola, ma questo succede perchè il diodo viene polarizzato direttamente, permettendo al flusso di corrente di attraversarlo. C'è una caratteristica del diodo da non sottovalutare, ovvero il fatto che necessiti per funzionare di una seppur bassa tensione di attivazione (tecnicamente "tensione di soglia"). In un diodo ideale la tensione di soglia è 0, ma in un diodo reale questa arriva fino a 0.7V, sotto della quale il diodo si comporta come se fosse un interruttore aperto (non conduce). Quando il diodo ha superato la tensione di soglia, questa sua caratteristica genera inevitabilmente una caduta di potenziale ai suoi capi, caduta teoricamente fissa a 0.7V. Questo significa che in realtà alla lampadina arriveranno 3-0.7=2.3V. La caduta di potenziale si somma se mettiamo diversi diodi in serie. Infatti ipotizzando di metterne due in serie nel circuito anzichè uno noteremo che la lampadina avrà una luminosità minore rispetto a quando avevamo solo un diodo nel circuito... questo perchè 3-0.7-0.7=1.6V Sempre nell'animazione viene mostrato come collegando il diodo al contrario il risultato sia completamente differente: il flusso della corrente è bloccato dal diodo, e la lampadina di conseguenza rimane spenta. Il circuito di fatto si comporta come se fosse aperto. Questa caratteristica del diodo lo rende adatto a diversi impieghi, tra i quali ricordiamo l'utilizzo nel ponte di Graetz, chiamato più semplicemente ponte raddrizzatore. Fin'ora abbiamo osservato il comportamento di un diodo in corrente continua, ma nominando il ponte raddrizzatore è d'obbligo spiegarne brevemente il funzionamento. [ads]pub-0188255096127557[/ads] I diodi usati come ponte raddrizzatore Il ponte raddrizzatore ha lo scopo di trasformare la corrente alternata in un onda limitata ad una sola direzione. Alcuni vi diranno che il ponte raddrizzatore permette di trasformare la corrente alternata in corrente continua, ma non è propriamente esatto. Immagino saprete che la corrente alternata è rappresentata graficamente da un onda sinusoidale che continua a passare da una parte all'altra dell'asse X (che rappresenta il tempo che passa), mentre l'asse Y rappresenta la tensione, positiva se l'onda si trova al di sopra dell'asse X mentre negativa se si trova al di sotto dell'asse X. Se non vi è chiaro questo passaggio non preoccupatevi e date un occhiata al grafico che vedete qui sotto: [imgx] http://images.nonsologaming.com/onda_sinusoidale.png[/imgx] Come ho appena detto, X rappresenta il tempo mentre Y la tensione (che può essere positiva o negativa a seconda della posizione dell'onda). Come si comporta il diodo sostituendo le batterie dell'animazione con questo segnale? La corrente passerà nel circuito prima in un senso e poi nel senso contrario. La lampadina non avrà problemi a gestire una corrente alternata, perchè la lampadina non è composta da altro che un filamento che diventa incandescente... la corrente può passargli attraverso sia in un senso che nell'altro senza problemi. Il diodo filtrerà la corrente "negativa" (la parte dell'onda sotto l'asse X) bloccandone il passaggio e comportandosi come un circuito aperto, mentre lascerà passare la corrente positiva (la parte dell'onda sopra l'asse X) facendo "lampeggiare" la lampadina. E questo sempre per la caratteristica del diodo che lascia passare la corrente solo in una direzione. L'onda filtrata dal diodo sarà quindi così: [imgx] http://images.nonsologaming.com/onda_sinusoidale1.png[/imgx] A rigor di logica, quindi, girando il diodo otterremo questo risultato... [imgx] http://images.nonsologaming.com/onda_sinusoidale2.png[/imgx] ...in quanto il diodo lascerà passare il flusso di corrente contrario a quello di prima. Il risultato sulla lampadina è che noi la vedremo comunque accendersi quando l'onda si allontana dall'asse X, mentre la sua luce si affievolirà fino a spegnersi man mano che l'onda si avvicina all'asse X. Tutto questo per spiegare il funzionamento del ponte raddrizzatore: una volta capito che usando i diodi è possibile dividere la componente positiva da quella negativa di un segnale alternato diventa chiaro come sia possibile, usando quattro diodi, indirizzare tutte le componenti positive di un onda ottenendo un segnale esclusivamente positivo o esclusivamente negativo... ottenendo da un segnale alternato una polarità positiva ed una negativa. Questo è lo schema interno di un ponte raddrizzatore, nonchè il dispositivo vero e proprio in alcune delle sue forme, che cambiano a seconda delle correnti in gioco: [imgx] http://images.nonsologaming.com/ponte_diodi1.png[/imgx] La corrente alternata di casa viene filtrata in questo modo dai diodi all'interno della maggior parte degli alimentatori e dei caricabatteria da parete, dove viene ulteriormente filtrata per renderla ancora più stabile. Facendo qualche ricerca su google ho trovato questa bella immagine che rende molto bene l'effetto del ponte raddrizzatore su un onda alternata: [imgx] http://images.nonsologaming.com/ponte_diodi2.png[/imgx] Lasciando perdere il carico e la sorgente d'onda sinusoidale (quest'ultima può benissimo essere la presa di corrente casalinga) vedete come il ponte raddrizzatore ha spostato la componente negativa dell'onda portandola nello stesso polo in cui viene filtrata la componente positiva... entrambi diventano positive, dato che il flusso di corrente ora avviene in una sola direzione. I diodi usati come protezione contro l'inversione di polarità [imgx] http://images.nonsologaming.com/70300big.jpg[/imgx] Per esperienza, capita molte volte che la gente confonda soprattutto sugli alimentatori universali (quelli con lo spinotto intercambiabile, vedi foto) il polo positivo con il polo negativo, combinando disastri indicibili sul povero apparecchio nel quale lo spinotto verrà inserito. Per evitare che questo succeda, è sempre bene controllare la polarità del connettore con un tester, ormai se ne trovano in ogni negozio di fai-da-te per pochi euro, che siano realmente buoni poi è un discorso a parte... ma almeno dovrebbero dirvi la polarità del vostro spinotto. Nel caso ci sia un'altissima probabilità che lo spinotto prima o poi usandolo si stacchi, e per evitare che in tale situazione qualcuno che non siate voi inserisca lo spinotto al contrario, incurante del danno che questo potrebbe causare... potete sempre inserire un diodo all'interno dell'apparecchio da alimentare (a patto che ci sia spazio all'interno) costringendo la corrente a passarci attraverso... e solo nel giusto senso! Questo a protezione di un inversione accidentale della polarità dello spinotto. E se l'apparecchio che fa uso dell'alimentatore universale è un PC portatile... beh, inserire il diodo potrebbe significare non dover tirare fuori i soldi per una nuova scheda madre I LED fanno parte della famiglia dei diodi, ma ne parlerò nel prossimo articolo.
- 13 risposte
-
- corso
- corso elettronica
-
(e 8 altri tag)
Taggato come: