PPX2 INTRODUZIONE AI SISTEMI OPERATIVI

PPX2 INTRODUZIONE AI SISTEMI OPERATIVI

  • porting = trasferire integralmente un sistema operativo da pc a mobile
EVOLUZIONE DEI SISTEMI DI CALCOLO
I sistemi operativi si sono evoluti di pari passo con i sistemi di calcolo, pk l’hardware evolvendo necessitava di sistemi operativi più adatti alle sue capacità.
  • 40 ANNI FA:
    • sistema di calcolo enorme
    • costava tantissimo
    • operazioni limitate
    • per usare un computer bisognava essere un Guru
    • Nel momento in cui un computer non funzionava, l’utente
      doveva essere in grado di aggiustarlo
  • 20 ANNI FA:
    • più piccoli e modulari (nel senso che c’erano varie stazioni collegate tra di loro e governati da un terminale, come il sistema batch)
    • prezzo abbordabile alle masse
    • operazioni ugualmente limitate
    • capacità grafiche
    • per usare un computer bisognava essere un esperto
  • OGGI
    • hardware a volte microscopico
    • costo molto ridotto
    • chiunque può usarli e usufruire di un servizio clienti (prima dovevi saperlo riparare)
    • MS-DOS = uno dei primi personal computer, di Microsoft, a resident monitor
 

COS’è UN SISTEMA OPERATIVO
💡
Un sistema operativo è una componente software che, permette al software applicativo associato di poter utilizzare l’hardware
STRUTTURA STRATIFICATA
  • Infatti la struttura di un sistema di calcolo prevede una stratificazione
    del software
    , ovvero diversi programmi che interagiscono tra di loro.
  • All’interno di questa stratificazione, sistema operativo è uno strato intermedio che si frappone tra hardware e User mode.
  • Il software in ogni elaboratore si distingue in:
    • User mode: programmi utilizzati dall’utente (software applicativo)
    • Kernel mode: ovvero il sistema operativo che si colloca come strato intermedio, quindi ogni processo, passa sempre dal sistema operativo prima di avere un effetto sul software.
PANORAMICA COMPITI KERNEL (lettura)
  • gestisce le risorse hardware del computer
  • fornisce i servizi di base necessari per l'esecuzione delle applicazioni
  1. Gestione della Memoria
  1. Gestione dei Processi
  1. Gestione delle Interfacce Hardware
  1. Gestione dei File
  1. Gestione della Sicurezza e dei Permessi
DIFFERENZA UNIX E LINUX
  • Unix è un sistema operativo più antico, originariamente proprietario, con diverse versioni commerciali e open source
  • Linux è un sistema operativo open source creato successivamente, ispirato a Unix ma sviluppato indipendentemente. Idea del finlandese Linus Torvalds.
 
COSA FA IL S.O. PER L’UTENTE E PER L’HARDWARE
  1. UTENTE
      • presenta delle interfacce comprensibili per l’utente
  1. HARDWARE:
      • TRADUZIONE: essendo ogni hardware differente, necessita di una specifica traduzione, quindi al sistema operativo si installano dei device driver (pezzo di software fornito dal costruttore dell’hardware che istruisce il kernel su come tradurre le richieste delle applicazioni)
      • gestisce le risorse dell’hardware, pk le sue componenti fisiche devono lavorare tra di loro in maniera coordinata
 

COME FUNZIONA UN SISTEMA BATCH
FOCUS SULL’HARDWARE

1° Fase (scrittura del programma)

  • Un operatore inseriva fisicamente le schede perforate in un lettore di schede
  • Il lettore trasformava il contenuto delle schede perforate in impulsi elettromagnetici, registrando queste informazioni su un nastro magnetico

2° Fase(lettura, esecuzione, e scrittura dell’output)

  • Un altro operatore portava il nastro magnetico a una stazione con la CPU, dove veniva caricato.
    • In questa fase, la CPU leggeva (lettore di nastri magnetici) ed eseguiva il programma, scriveva l'output (seria numerica) sullo stesso nastro magnetico.

3° Fase (stampa dell’output)

  • stampa della serie numerica
PASSAGGIO DA RESIDENT MONITOR A SISTEMA OPERATIVO → gestione efficiente della CPU

SISTEMI BATCTH → RESIDENT MONITOR

I primi sistemi batch eseguivano i job (nastro elettromagnetico) uno alla volta fino alla sua conclusione, quindi iniziava il successivo, in modo sequenziale.
Non esisteva un modo per eseguire più job contemporaneamente, quindi il tempo di utilizzo della CPU non era ottimizzato, soprattutto quando un job era in attesa di operazioni di I/O (input/output).
Ruolo del Resident Monitor:
Nei primi sistemi batch, il resident monitor era un semplice supervisore che aveva funzioni molto basilari:
  • Gestiva l’avvio di ciascun job in sequenza e passava al successivo quando l’esecuzione terminava
  • era tagliato fuori dall’esecuzione del job

Sistemi batch multi-programmati → SISTEMA OPERATIVO

multiprogrammazione: tecnica che consente di caricare più processi in memoria contemporaneamente
  • obiettivo: massimizzare l’utilizzo della CPU e minimizzare i tempi morti.
Ruolo del Sistema Operativo:
  • suddivideva la memoria tra più job in base alla loro dimensione e la memoria rimasta disponibile
  • allocazione dinamica: il sistema operativo passa da un processo all’altro per sfruttare i momenti in cui un processo è in attesa (per esempio, di un’operazione di input/output), mantenendo sempre la CPU occupata con un altro processo.
TIME SHARING (real-time)
Time-sharing: tecnica che permette a più processi di essere eseguiti quasi simultaneamente, passando da un processo all’altro in modo rapido e per breve tempo
  • obiettivo: rendere il sistema operativo più fruibile, più interattivo
  • funzionamento:
    • Ogni utente o processo riceve una "fetta" di tempo della CPU, chiamata time slice, prima che il controllo passi al processo successivo.
    • metronomo (solo nel time sharing): impedisce che un singolo programma monopolizzi la CPU, condividendola per mezzo di interruzioni periodiche a intervalli regolari
      • ovvero invia un segnale alla CPU che interrompe il processo in esecuzione e trasferisce il controllo al sistema operativo interrupt di clock
      • il SO deciderà se riprendere il processo corrente oppure passare ad un altro processo
      • Determinare in che ordine i processi vengono eseguiti ad ogni interruzione dipende dalle politiche del sistema di scheduling.
  • esempio: quando eseguo Word e Chrome contemporaneamente, a me sembra che tutti e due i processi vengano portati avanti nello stesso momento

COMPONENTI DI UN ELABORATORE
BUS
💡
BUS=meccanismo che trasporta l’informazione sotto forma di impulsi elettrici tra le varie le componenti hd (le quali scrivono e leggono informazioni e se le scambiano tra loro)
Quali sono queste componenti?
  • CPU = svolge tutti i calcoli
  • MEMORIA = immagazzina informazioni
  • DEVICE CONTROLLER = adattatori tra 2 bus ovvero tra quello del sistema di calcolo, e quello della periferica
    • Adattatori pk traducono le informazioni che viaggiano sul bus di sistema in informazioni compatibili con il bus della periferica.
      • ESEMPI:
    • controller usb (rende le informazioni compatibili con la chiave USB)
    • controller monitor (dice al monitor cosa visualizzare)
    • controller della tastiera

BUS PRINCIPALI IN UN CALCOLATORE

(concettuale)
Bus di sistema
  • insieme dei canali di comunicazione che collegano le diverse componenti principali di un computer, come la CPU, la memoria, e i dispositivi di input/output (I/O)
DAL PUNTO DI VISTA DEI COLLEGAMENTI SI DISTINGUONO:
  1. MEMORY BUS
      • collegamento CPU - memoria
      • la comunicazione è gestita da un componente chiamato BRIDGE (se il bridge è scadente le prestazioni di sistema lo saranno altrettanto)
  1. I/O BUS
      • collegamento device controllers - CPU
      • collegamento device controllers - RAM
      notion image
 

TRA QUESTE COMPONENTI I COLLEGAMENTI SONO SU MOLTEPLICI LIVELLI

Bus Dati
  • È il bus che trasferisce i dati effettivi tra la
    • CPU
    • memoria
    • dispositivi di input/output
  • La larghezza (espressa in bit) del bus dati determina quanta informazione può essere trasferita simultaneamente, influenzando la velocità di elaborazione
Bus di Controllo
  • È responsabile dell'invio di segnali di controllo che coordinano le operazioni all'interno del sistema.
    • Questi segnali indicano, ad esempio, se un'operazione è una lettura o una scrittura, quando una trasmissione deve avvenire o quando una periferica può accedere alla memoria.
Bus di indirizzi
bus responsabile della gestione e del trasferimento degli indirizzi di memoria, del calcolatore.
Invia informazioni sul "luogo" in memoria dove si trovano i dati da leggere o scrivere. Questo è essenziale per localizzare e accedere alle celle di memoria specifiche
ARCHITETTURE PROCESSORE
💡
componente elettronico che esegue i programmi, principalmente grazie alla CPU
ARCHITETTURE LEGACY (vecchio)
  1. Legacy pk obsolete ma difficili da sostituire pk profondamente integrate nei sistemi aziendali e con scarsa documentazione
  1. basate sul ciclo FETCH-DECODE-EXECUTE:
    1. recupero istruzione (col PC)
    2. decodifica in un altro formato
    3. esecuzione
  1. Stack pointer: tiene traccia dell’ultimo dato inserito nello stack, che sta alla cima e corrisponde al programma in esecuzione, e si aggiorna ad ogni operazione di push e pop (inserimento e rimozione dati nel programma)
DIFETTI
  • seguono il ciclo Fetch-Decode-Execute in modo sequenziale, ovvero eseguono una sola istruzione per volta, completandola completamente prima di passare alla successiva.
  • no parallelismo
  • Se un'istruzione impiega più tempo, l'intero sistema rimane in attesa.
Sistema Multi-pipeline (moderno)
  • Pipe-line = catena di montaggio
  • Pipe = operaio → divido la catena in più fasi: fetch, decode, execute (prelievo, decodifica, esecuzione)
Sistema che si compone di diverse pipelines indipendenti tra loro che le permetto quindi di gestire molte istruzioni contemporaneamente (tante catene di montaggio, ciascuna che lavora su una istruzione)
  • un processo è gestito da più pipelines
  • una pipeline accoglie nello specifico più istruzioni, uno per ogni fase di elaborazione
Sistema Multicore (moderno)
  • Processore con più core, ognuno dei quali può essere dotato di più pipeline, e ogni core è essenzialmente un processore indipendente: può gestire istruzioni e thread in modo autonomo
  • Un processo è una sequenza di istruzioni che un programma deve eseguire. Ogni processo può essere suddiviso in unità di esecuzioni più piccole chiamati thread.
PROBLEMA DI INCONSISTENZA
Se durante l’esecuzione di un programma, si verifica un interruzione inattesa come per la perdita di elettricità, le pipeline rimangono bloccate, ma nel momento in cui riprendono, le istruzioni parzialmente elaborate possono essere perse causando errori
GESTIONE MEMORIA (primo meccanismo per migliorare le prestazioni del calcolatore)
DIFFERENZA TRA RAM E DISCO RIGIDO
Memoria centrale (RAM): È molto più veloce rispetto al disco. Utilizzata per archiviare temporaneamente i dati e le istruzioni dei programmi che sono in esecuzione
DISCO: dispositivo di archiviazione meccanica e permanente (o memoria non volatile) che conserva i dati anche quando il computer è spento. E’ lento
GERARCHIA DI MEMORIA
notion image
Gerarchia piramidale che riassume le caratteristiche ed usi delle memoria di un elaboratore:
CARATTERISTICHE
  • maggiore è lo spazio di memoria
  • minore è la velocità di immagazzinamento
  • minore è il costo: le memorie nella parte alta sono piccole in dimensioni (come i registri nella cpu), quindi richiedono una tecnologia avanzata ed un consumo energetico maggiore
PRESTAZIONI
Quindi per tenere alte le prestazioni dell’elaboratore i dati più frequentemente utilizzati devono stare nella parte più alta della gerarchia, secondo il principio di località (predire i dati più utilizzati) per aumentare le prestazioni:
  • Località temporale: se un dato o un'istruzione è stato utilizzato di recente, è probabile che venga riutilizzato di nuovo a breve
  • Località spaziale: se un dato o un'istruzione è stato utilizzato, è probabile che i dati o le istruzioni memorizzati nelle vicinanze (in termini di indirizzo di memoria) vengano usati prossimamente.

SYNC

  • Quando si modifica un file, questa modifica non va direttamente su disco, viene accumulata su una cache all’interno della memoria centrale, e periodicamente, tramite l’operazione di sync, viene sincronizzata con il disco. Il disco non viene aggiornato subito, perché farebbe cadere le prestazioni del sistema in maniera molto forte
 
DISPOSITIVI DI I/O (secondo meccanismo per migliorare le prestazioni del sistema)
notion image
Quando il processore deve accedere a una periferica, come il disco, non resta fermo in attesa che la periferica (che è lenta) gli passi i dati, al contrario sfrutta questo lasso di tempo per occuparsi di altri processi, finchè non riceve un segnale indicante che la periferica è pronta a passare i dati.
  • a dare il segnale ci pensa l’INTERRUPT CONTROLLER, un dipositivo hardware
  • da non confondere col metronomo
 
 
DIFFERENZA SEGNALI
Trap
Interrupt
Origine: Interna (software)
- il processo lancia una system call
Origine: Esterna (hardware)
- metronomo / periferiche
Causa: Errori di programma (es. divisione per zero) o system call esplicite.
Causa: Eventi hardware (es. I/O, timer, ecc.).
Sincrono: Si verifica in un punto specifico durante l'esecuzione del programma.
Asincrono: Può avvenire in qualsiasi momento.
Effetto: Passaggio a kernel mode per gestire l'eccezione.
Effetto: Interruzione temporanea del programma per gestire l'evento hardware.