Ultima modifica da un moderatore:
Vedremo oggi una brevissima panoramica di com'è composta l'architettura di un sistema operativo, in modo che tutti, indipendentemente dal tipo di s.o. utilizzato, gnu/linux, windows, osx o altri che siano, possano avere una panoramica teorica su cosa ci sta veramente "sotto".
Come al solito tenterò di semplificare il più possibile i concetti che a prima vista potrebbero sembrar più ostici da comprendere analizzando a grandi linee quelle parti che ritengo di maggiore interesse, per chi comunque volesse approfondire argomenti specifici può contattarmi tranquillamente! Ricordo inoltre che un minimo di skills di base ai fini di comprendere quanto leggerete son pur sempre necessari!
A piè di pagina lascerò comunque delle note con dei riferimenti all'argomento in questione in modo che si possa avere una visione più cristallina magari con l'ausilio di alcune immagini riepilogative.
Beh, iniziamo comunque subito col dire che un sistema operativo è un sistema di per sè molto grande e complesso, realizzabile solo se lo si scompone in piccole parti o componenti, vediamole!
La gestione dei processi, che si occupa della creazione, cancellazione, sincronizzazione, comunicazione e deadlock
La gestione della memoria primaria e secondaria, che consiste nell'assegnare e revocare spazio
Gestione del'input/output, ovvero nascondere agli utenti le caratteristiche dei dispositivi
Gestione dei file, creazione, gestione e cancellazione
Gestione della rete, al fine di rendere omogeneo lo scambio delle informazioni
Protezione delle risorse, proteggere i processi dai concorrenti
Le varie componenti sono interconnesse con approcci strutturali differenti, vediamole!
è la struttura piu semplice, dove le funzioni sono racchiuse in un unico blocco e l'accesso è molto rapido.
L'implementazione dei componenti è completa e sicura, ma la loro stretta integrazione ne rende difficoltosa la modifica del sistema operativo!
Un approccio strutturale di questo tipo fu utilizzato per realizzare l'MS-Dos.
L'interazione in un sistema operativo realizzato nel modo seguente, avviene mediante il meccanismo di chiamata a procedura.
Un sistema può essere più versatile se organizzato in moduli. Su questo tipo di struttura, il sistema operativo è composto da diversi strati. Quello più basso è lo strato fisico, quello più alto è l'interfaccia utente.
Ogni strato è composto da un insieme di strutture dati che possono essere chiamati dagli strati superiori.
Il principale vantaggio è dato dalla modularità, infatti ogni modulo è come una scatola nera che contiene al proprio interno le "competenze" per risolvere uno specifico problema.
Un ulteriore vantaggio è dato dalla semplificazione delle operazioni di debug e verifica del sistema, in quanto, qualora si trovasse un errore su uno strato, l'errore si troverà obbligatoriamente in quello strato li', poichè i sottostanti saranno già stati messi a punto.
I principali svantaggi sono:
Questo tipo di struttura prevede di rimuovere dal kernel tutti i componenti non essenziali, realizzandoli come programmi a livello utente.
Il risultato finale è un kernel di dimensioni assai inferiori che contiene solo funzioni di comunicazione con i programmi client, di gestione dei processi e della memoria. Un vantaggio del microkernel sta nella facilità di espansione del sistema, poichè i nuovi servizi verranno realizzati a livello di spazio utente e non comporteranno alcuna modifica del nucleo.
Se un servizio è compromesso, il resto del sistema operativo rimarrà intatto. Forse la miglior tipologia progettuale di un sistema operativo coinvolge l'uso di tecnica di programmazione orientate agli oggetti per la creazione di un kernel modulare. Su questo caso il kernel possiede un insieme di componenti di base e si collega dinamicamente ai servizi addizionali sia al momento del boot, sia al momento dell'esecuzione.
Il risultato finale sarà un mix di vantaggi delle strutture viste precedentemente.
Vi rimando comunque ad una pagina su wikipedia sui sistemi operativi, Cos'è file system di un sistema operativo!?
Riguardo l'architettura, consiglio di approfondire tentando di comprendere anche questo materiale http://www.cs.unibo.it/~montreso/so/lucidi/so-04-struttura-os-1p.pdf
Rimando nuovamente a wikipedia invece qualora vogliate approfondire l'argomento kernel: Kernel - Wikipedia
Come risorsa aggiuntiva e più approfondita, potete consultare OSDev - Kernel.
Consiglio anche una lettura sul principio di astrazione in ambito informatico consultabile qui (ultimo paragrafo), è fondamentale avere "in testa" questo concetto... perchè altrimenti, chiunque voglia seriamente impegnarsi a capirci qualcosa di informatica ad un buon livello, qualsiasi cosa potrà risultare di non semplice comprensione!
Saluti o/
Introduzione all'architettura di un S.O.
Come al solito tenterò di semplificare il più possibile i concetti che a prima vista potrebbero sembrar più ostici da comprendere analizzando a grandi linee quelle parti che ritengo di maggiore interesse, per chi comunque volesse approfondire argomenti specifici può contattarmi tranquillamente! Ricordo inoltre che un minimo di skills di base ai fini di comprendere quanto leggerete son pur sempre necessari!
A piè di pagina lascerò comunque delle note con dei riferimenti all'argomento in questione in modo che si possa avere una visione più cristallina magari con l'ausilio di alcune immagini riepilogative.
Beh, iniziamo comunque subito col dire che un sistema operativo è un sistema di per sè molto grande e complesso, realizzabile solo se lo si scompone in piccole parti o componenti, vediamole!
La gestione dei processi, che si occupa della creazione, cancellazione, sincronizzazione, comunicazione e deadlock
La gestione della memoria primaria e secondaria, che consiste nell'assegnare e revocare spazio
Gestione del'input/output, ovvero nascondere agli utenti le caratteristiche dei dispositivi
Gestione dei file, creazione, gestione e cancellazione
Gestione della rete, al fine di rendere omogeneo lo scambio delle informazioni
Protezione delle risorse, proteggere i processi dai concorrenti
Le varie componenti sono interconnesse con approcci strutturali differenti, vediamole!
Struttura a blocco monolitico
è la struttura piu semplice, dove le funzioni sono racchiuse in un unico blocco e l'accesso è molto rapido.
L'implementazione dei componenti è completa e sicura, ma la loro stretta integrazione ne rende difficoltosa la modifica del sistema operativo!
Un approccio strutturale di questo tipo fu utilizzato per realizzare l'MS-Dos.
L'interazione in un sistema operativo realizzato nel modo seguente, avviene mediante il meccanismo di chiamata a procedura.
Struttura a metodo stratificato
Un sistema può essere più versatile se organizzato in moduli. Su questo tipo di struttura, il sistema operativo è composto da diversi strati. Quello più basso è lo strato fisico, quello più alto è l'interfaccia utente.
Ogni strato è composto da un insieme di strutture dati che possono essere chiamati dagli strati superiori.
Il principale vantaggio è dato dalla modularità, infatti ogni modulo è come una scatola nera che contiene al proprio interno le "competenze" per risolvere uno specifico problema.
Un ulteriore vantaggio è dato dalla semplificazione delle operazioni di debug e verifica del sistema, in quanto, qualora si trovasse un errore su uno strato, l'errore si troverà obbligatoriamente in quello strato li', poichè i sottostanti saranno già stati messi a punto.
I principali svantaggi sono:
- Difficoltà nel definire in maniera accurata e corretta gli strati
- La struttura stratificata tende ad essere meno efficiente delle altre, a causa appunto della comunicazione tra i vari strati del sistema operativo
Struttura a microkernel
Questo tipo di struttura prevede di rimuovere dal kernel tutti i componenti non essenziali, realizzandoli come programmi a livello utente.
Il risultato finale è un kernel di dimensioni assai inferiori che contiene solo funzioni di comunicazione con i programmi client, di gestione dei processi e della memoria. Un vantaggio del microkernel sta nella facilità di espansione del sistema, poichè i nuovi servizi verranno realizzati a livello di spazio utente e non comporteranno alcuna modifica del nucleo.
Se un servizio è compromesso, il resto del sistema operativo rimarrà intatto. Forse la miglior tipologia progettuale di un sistema operativo coinvolge l'uso di tecnica di programmazione orientate agli oggetti per la creazione di un kernel modulare. Su questo caso il kernel possiede un insieme di componenti di base e si collega dinamicamente ai servizi addizionali sia al momento del boot, sia al momento dell'esecuzione.
Il risultato finale sarà un mix di vantaggi delle strutture viste precedentemente.
Vi rimando comunque ad una pagina su wikipedia sui sistemi operativi, Cos'è file system di un sistema operativo!?
Riguardo l'architettura, consiglio di approfondire tentando di comprendere anche questo materiale http://www.cs.unibo.it/~montreso/so/lucidi/so-04-struttura-os-1p.pdf
Rimando nuovamente a wikipedia invece qualora vogliate approfondire l'argomento kernel: Kernel - Wikipedia
Come risorsa aggiuntiva e più approfondita, potete consultare OSDev - Kernel.
Consiglio anche una lettura sul principio di astrazione in ambito informatico consultabile qui (ultimo paragrafo), è fondamentale avere "in testa" questo concetto... perchè altrimenti, chiunque voglia seriamente impegnarsi a capirci qualcosa di informatica ad un buon livello, qualsiasi cosa potrà risultare di non semplice comprensione!
Saluti o/