Sistemi Operativi: Struttura


Struttura del sistema operativo MS Dos

  • Affinché possa funzionare correttamente ed essere facilmente modificabile un S.O. non viene in genere progettato come un sistema monolitico ma suddiviso in piccoli componenti.
  • Struttura semplice:

–   Molti sistemi sono nati come sistemi piccoli e solo in un secondo tempo si sono accresciuti superando il loro scopo originale.

–   Ad es. MS-DOS, aveva come scopo il fornire la massima funzionalità nel minimo spazio.

  • Non è modulare
  • Nonostante la presenza di una struttura elementare le sue interfacce ed i livelli di funzionalità non sono ben separati

Struttura di sistema di UNIX

 A causa dei limiti delle architetture per cui era stato progettato, anche la strutturazione di UNIX non risultò completa.

  • Il S.O. UNIX consiste di due parti separate:

–   Programmi di sistema

–   Kernel

  • Consiste di tutto ciò che nel diagramma a stati di un sistema è compreso tra l’hardware e l’interfaccia delle chiamate del sistema.
  • Fornisce il file system, lo scheduling della CPU, la gestione della memoria e altre (forse troppe) funzioni.
  • Difficile da migliorare: le modifiche in una parte possono avere effetto negativo in un’altra.

Struttura di sistema Sistema Operativo attuale

Classificazione dei S.O.

In base alle modalità di gestione dei programmi:

• Monoprogrammazione (un solo programma alla volta in memoria)

• Multiprogrammazione (più programmi presenti in memoria, apparentemente eseguiti contemporaneamente, in realtà in

time-sharing, suddividendo il tempo di esecuzione in intervalli molto piccoli e assegnando a turno le risorse ai diversi programmi)

In base al tipo di accesso fornito agli utenti:

• S.O. Monoutente (un solo utente può usare la macchina)

• S.O. Multiutente (più utenti contemporaneamente possono interagire con la stessa macchina)

Monoprogrammazione e  multiprogrammazione sono concetti indipendenti da quelli di S.O. monoutente e multiutente.

I   sistemi   operativi   più   recenti   operano   tutti   in  multiprogrammazione.

Windows nasce come sistema monoutente, anche se le versioni  più  evolute  (NT,  2000,  XP)  hanno  alcune  funzioni   che   possono   essere   utilizzate in modo concorrente da più utenti.

UNIX  (nelle  sue  varie  versioni)  è  invece  un  sistema multiutente che opera in multiprogrammazione.

I S.O.  sono  generalmente  costituiti  da  un  insieme   di   moduli,   ciascuno   dedicato   a   svolgere una determinata funzione; I  vari  moduli  del  S.O.  interagiscono  tra  di  loro   secondo   regole   precise   al   fine   di   realizzare   le   funzionalità   di   base   dalla   macchina.

Il gestore dei Processi

E’   il   modulo   che   si   occupa   di   controllare   la   sincronizzazione,   interruzione   e   riattivazione   dei  programmi  in  esecuzione  cui  viene  assegnato  un processore;

La gestione dei processi viene compiuta in vari modi, in  funzione  del  tipo  di  utilizzo  cui  il  sistema  è rivolto.

Il  programma  che  si  occupa  della  distribuzione  del  tempo di CPU tra i vari processi attivi, decidendone l’avvicendamento,     è comunemente     chiamato     Scheduler.

Nel  caso  di  elaboratori  multi-processore  si  occupa  anche  di  gestire  la  cooperazione  tra  le  varie  CPU presenti nel sistema.

- Politiche di schedulazione

Le  politiche di  schedulazione  utilizzate  dallo  scheduler  sono  raggruppabili  in  due  grandi  categorie:

-        Preemptive: la  CPU  in  uso  da  parte  di  un  processo  può  essere  tolta  e  passata  a  un  altro in un qualsiasi momento;

-        Non    Preemptive: una   volta   che   un   processo  ha  ottenuto  l’uso  della  CPU  non  può  essere  interrotto  fino  a  che  lui  stesso  non la rilascia.

- Sistemi monotasking

I  SO  che  gestiscono  l’esecuzione  di  un  solo programma  per  volta  sono  catalogati  come  mono-tasking;

Non è possibile sospendere l’esecuzione di un programma per assegnare la CPU a un altro.

Sono storicamente i primi SO (es MSDos).

- Sistemi multitasking

I    SO    che    permettono    l’esecuzione contemporanea di più programmi sono definiti multi-tasking (Windows-NT, 9x, Windows 2000/XP/2003, Linux);

Un  programma  può  essere  interrotto  e  la CPU passata a un altro programma.

- Sistemi Time-sharing

Un’evoluzione  dei  sistemi  multi-tasking sono i sistemi time sharing.

Ogni  programma  in  esecuzione  viene  eseguito    ciclicamente    per    piccoli   quanti di tempo.

Se    la    velocità    del    processore    è sufficientemente     elevata     si     ha  l’impressione di un’evoluzione parallela dei processi.

Il Gestore della Memoria

L’organizzazione  e  la  gestione  della  memoria  centrale  è  uno  degli  aspetti  più  critici  nel disegno di un SO;

Il gestore  della  memoria è  quel  modulo  del  SO  incaricato  di  assegnare  la  memoria  ai   vari   task   (per   eseguire   un   task   è necessario  che  il  suo  codice  sia  caricato  in  memoria);

La  complessità  del  gestore  della  memoria  dipende dal tipo di SO;

Nei   sistemi   multi-tasking   più   programmi   contemporaneamente  possono essere   caricati in memoria.

- La Memoria virtuale

Spesso  la  memoria  non  è  sufficiente  per  contenere completamente tutto il codice dei vari task;

Si  può  simulare una  memoria  più  grande  tenendo nella  memoria  di  sistema  (RAM)  solo  le  parti  di  codice e dei dati che servono in quel momento;

Si  usa  il  concetto  di  memoria  virtuale. 

I  dati  dei  programmi non in esecuzione possono essere tolti dalla  memoria  centrale  e  parcheggiati  su  disco  nella cosiddetta area di swap;

Il  rapporto  tra  le  dimensioni  dell’area  di  swap  e della RAM è di 3 : 1 (max);

I    moderni    processori    posseggono    meccanismi hardware  per  facilitare  la  gestione  della  memoria  virtuale.

Il Gestore del File system

Il gestore   del   file   system è quel modulo      del      sistema      operativo incaricato   di   gestire   le   informazioni memorizzate sui dispositivi di memoria di massa.

Il gestore del file system deve garantire la   correttezza   e   la   coerenza   delle informazioni.

Nei sistemi multi-utente, il Gestore dei File System, mettere a disposizione dei  meccanismi  di  protezione  in  modo  tale  da  consentire  agli  utenti  di  proteggere  i  propri  dati dall’accesso da parte di altri utenti non autorizzati.

Le funzioni tipiche che deve svolgere sono:

-        Fornire   un   meccanismo   per   l’identificazione   dei   Files;

-        Fornire opportuni metodi per accedere ai dati;

-        Rendere trasparente la struttura fisica del supporto di memorizzazione;

-        Implementare meccanismi di protezione dei dati

Quasi   tutti   i   sistemi   operativi   utilizzano  un’organizzazione gerarchica del    File System;

L’elemento  utilizzato  per  raggruppare  più file  insieme è la directory;

L’insieme  gerarchico  delle  directory  e  dei  file  può   essere   rappresentato   attraverso   un grafo delle directory.

Gestore dei Dispositivi I/O

Il  gestore  dei  dispositivi  di  I/O  è  quel  modulo     del     S.O. incaricato     di   assegnare  i  dispositivi  ai  task  che  ne  fanno   richiesta   e   di   controllare   i   dispositivi stessi;

Da  esso  dipende  la  qualità  e  il  tipo  di  periferiche riconosciute dal sistema.

I Device driver

Il  controllo  dei  dispositivi  di  I/O  avviene  attraverso  speciali programmi detti Device Driver;

I  device  driver  sono  spesso  realizzati  dai  produttori  dei    dispositivi    stessi    che    ne    conoscono    le caratteristiche fisiche in maniera approfondita.

Questi   programmi   implementano   normalmente   le  seguenti funzioni:

-        Rendono trasparenti le caratteristiche fisiche tipiche di ogni dispositivo;

-        Gestiscono  la  comunicazione  dei  segnali  verso  i  dispositivi;

-        Gestiscono  i  conflitti,  nel  caso  in  cui  due  o  più task vogliono  accedere  contemporaneamente  allo  stesso  dispositivo.

L’Interfaccia utente

Tutti  i  Sistemi  Operativi  implementano  dei  meccanismi  per  rendere  agevole  l’utilizzo  del  sistema  da  parte  degli  utenti.

L’insieme   di   questi   meccanismi   di   accesso al computer prende il nome di Interfaccia Utente.

Interfaccia testuale: Interprete   dei   comandi   (   shell   ).  

Esempio: MS-Dos, Unix.

Interfaccia grafica (a finestre): L’output   dei   vari   programmi   viene  visualizzato in maniera grafica all’interno di finestre; L’utilizzo  di  disegni  rende  più intuitivo  l’uso del calcolatore. 

Esempio Windows, MacOS

Organizzazione del kernel

Esistono 4 categorie di Kernel

- Kernel Monolitici: Un aggregato unico (e ricco) di procedure di gestione mutuamente coordinate e astrazioni dell’HW

- Micro Kernel: Semplici astrazioni dell’HW gestite e coordinate da un kernel minimale, basate un paradigma client/server, e primitive di message passing

- Kernel Ibridi: Simili a Micro Kernel, ma hanno componenti eseguite in kernel space per questioni di maggiore efficienza

- ExoKernel: Non forniscono livelli di astrazione dell’HW, ma forniscono librerie che mettono a contatto diretto le applicazioni con l’HW.

Kernel Monolitici

Un insieme completo e unico di procedure mutuamente correlate e coordinate

System calls: Implementano servizi forniti dal kernel, tipicamente realizzati in moduli eseguiti in kernel mode

NB Esiste modularità, anche se l’integrazione del codice, e il fatto che tutti i moduli sono eseguiti nello stesso spazio, è tale da rendere tutto l’insieme un corpo unico in esecuzione.

Vantaggi:

-        Efficienza

-        L’alto grado di coordinamento e integrazione delle routine permette di raggiungere ottimi livelli di efficienza

-        Modularità: I più recenti kernel monolitici (Es. LINUX) permettono di effettuare il caricamento (load) di moduli eseguibili a runtime

-        Possibile estendere le potenzialità del kernel, solo su richiesta

Esempi di Kernel monolitici: LINUX, FreeBSD UNIX

Microkernel o sistemi client/server

Quali funzionalità deve offrire un microkernel?

-         funzionalità minime di gestione dei processi e della memoria

-        meccanismi di comunicazione per permettere ai processi clienti di chiedere servizi ai processi serventi

La comunicazione è basata su message passing; il microkernel si occupa di smistare i messaggi fra i vari processi

Vantaggi

-        il kernel risultante è molto semplice e facile da realizzare

-        il kernel è più espandibile e modificabile:

  • per aggiungere un servizio: si aggiunge un processo a livello utente, senza dover ricompilare il kernel
  • per modificare un servizio: si riscrive solo il codice del servizio stesso

-        il s.o. è più facilmente portabile ad altre architetture

-        una volta portato il kernel, molti dei servizi (ad es. il file system) possono essere semplicemente ricompilati

-        il s.o. è più robusto: se per esempio il processo che si occupa di un servizio cade, il resto del sistema può continuare a funzionare

-        sicurezza: è possibile assegnare al microkernel e ai processi di sistema livelli di sicurezza diversi

-         adattabilità del modello ai sistemi distribuiti: la comunicazione può avvenire tra processi nello stesso sistema o tra macchine differenti

Svantaggi

-        maggiore inefficienza dovuta all'overhead determinato dalla comunicazione mediata tramite kernel del sistema operativo (parzialmente superata con i sistemi operativi più recenti).


Ultime modifiche: lunedì, 30 ottobre 2023, 18:28