Guida Introduzione all'architettura di un Sistema Operativo

Stato
Discussione chiusa ad ulteriori risposte.

syscall

Utente Emerald
21 Settembre 2013
683
43
581
475
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".

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:
  1. Difficoltà nel definire in maniera accurata e corretta gli strati
  2. 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/
 
Ultima modifica:
Mooooolto interessante il PDF, lo consiglio caldamente.
È un po' vecchiotto ma ancora attualissimo (tranne la parte in cui parla di JAVA, ormai i linguaggi interpretati sono più veloci anche del buon e vecchio C!).
P. S. No necro nelle guide ;)

Inviato dal mio OptimusX4HD con Tapatalk 4
 
  • Mi piace
Reazioni: DrakoFPS
Praticamente e' quello che ti insegnano ad un ITIS con indirizzo informatico, LE BASI,si inizia con questo ragazzi.Anche io lo consiglio caldamente ottimo lavoro!
edit
>mi scuso per il post non ho controllato la data,my bad! :omfg:
 
Stato
Discussione chiusa ad ulteriori risposte.