Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Ripasso componenti hardware e sistemi operativi, Dispense di Informatica

Un ripasso sui componenti hardware di un calcolatore, con particolare attenzione all'architettura di Von Neumann e alle periferiche di input/output. Inoltre, vengono introdotti i concetti di firmware, BIOS e caricamento del sistema operativo, per poi passare alla descrizione delle funzioni di un sistema operativo e alla sua classificazione in base al numero di utenti e al tipo di lavoro svolto.

Tipologia: Dispense

2021/2022

In vendita dal 10/03/2023

vzennaro
vzennaro 🇮🇹

4.5

(8)

25 documenti

1 / 29

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
1
RIPASSO
COMPONENTI
HARDWARE
Modulo 0
Slide 1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d

Anteprima parziale del testo

Scarica Ripasso componenti hardware e sistemi operativi e più Dispense in PDF di Informatica solo su Docsity!

RIPASSO

COMPONENTI

HARDWARE

Modulo 0

Slide 1

  • op. aritetiche
  • op relazionali (confornto tra dati)
  • op su caratteri e valori di verità
  • altre operazioni numeriche

La ALU legge i valori presenti in alcuni registri esegue le operazioni e memorizza il risultato in un altro registro.

1.1. Il calcolatore

È uno strumento programmabile per rappresentare, memorizzare ed elaborare informazioni. È un sistema costituito da molte componenti. Studiare l’architettura di un sistema significa: Individuare ciascun componente, comprendere i principi generali di funzionamento e le loro interazioni. Due macrocomponenti: -> Hardware -> Software (di base e applicativo)

1.2. Hardware: Architettura

La macchina di Von Neumann progettata nel 1945 è il primo calcolatore con programmi memorizzabili anziché codificati mediante cavi e interruttori. Vi sono 4 tipi di componenti funzionali:

CPU Central Processing Unit

L’unità centrale di elaborazione esegue istruzioni per l’elaborazione dei dati,svolge anche funzioni di controllo. Presiede all’esecuzione di un programma il quale è memorizzato in memoria centrale come sequenza di istruzioni del linguaggio macchina.

1. UNITÀ DI CONTROLLO : OGNI COMPONENTE ESEGUE SOLO LE AZIONI DA LUI

RICHIESTE.

Gestisce il coordinamento tra le varie parti, insieme all’esecuzione temporale delle

operazioni

sia internamente all’unità di elaborazione sia negli altri elementi funzionali.

il controllo avviene in modo sincrono rispetto alla scansione temporale imposta

dall’orologio di sistema (clock)

2. ALU: UNITÀ ARITMETICO-LOGICA

E’ costituita da un insieme di circuiti in grado di

svolgere le operazioni di tipo aritmetico logico.

Le istruzioni del linguaggio macchina

corrispondono ad operazioni elementari:

0. Architettura di un calcolatore

Fornisce due sole operazioni Memorizzazione di un valore in una cella (scrittura) Accesso al valore memorizzato in una cella (lettura)

Memoria centrale

È l’unità responsabile della memoria, che memorizza

I dati, che rappresentano informazioni di interesse.

I programmi per l’elaborazione dati

Una unità di memoria è organizzata in celle

  • Memorizzano un singolo dato o istruzione
  • Hanno un indirizzo che identifica la cella e ne consente l’accesso - Hanno un valore , la sequenza di bit memorizzata in essa

1. LE MEMORIE RAM (RANDOM ACCESS MEMORY)

Possono essere accedute sia in lettura che in scrittura

Sono volatili

o I DATI MEMORIZZATI VENGONO PERSI ALLO SPEGNIMENTO DEL CALCOLATORE

2. LA MEMORIE ROM (READ ONLY MEMORY)

Sono persistenti o MANTENGONO IL CONTENUTO ANCHE SENZA ALIMENTAZIONE

Permettono solo la lettura dei dati (o programmi) o MEMORIZZANO ALCUNI PROGRAMMI DI SISTEMA (FIRMWARE)

Evoluzioni delle memorie ROM:

-> PROM (scritte una sola volta)

-> EPROM (scritte più volte)

3. LA MEMORIA CACHE

Memoria “intermedia” fra registri e RAMLA RAM HA TEMPI DI ACCESSO MOLTO ALTI RISPETTO ALLA VELOCITÀ DEI MICROPROCESSORI E NE RITARDA L’ELABORAZIONE.

Memorizza il contenuto di celle della RAM che potrebbero essere acceduti nuovamente dalla CPUSFRUTTA LA LOCALITÀ DEI PROGRAMMI (90%-10%)

Strategia di utilizzo:LA PRIMA VOLTA CHE LA CPU CARICA DATI DALLA MEMORI CENTRALE, QUESTI SONO CARICATI ANCHE SULLA CACHELE VOLTE SUCCESSIVE, I DATI POSSONO ESSERE LETTI DALLA cache invece che dalla memoria centrale (più lenta)

TIPI DI MEMORIA CACHE: ->CACHE DI I° LIVELLO: CONTENUTA NEL MICROPROCESSORE ->CACHE DI II° LIVELLO: AGGIUNGIBILE SUCCESSIVAMENTE

Periferiche e interfacce di ingresso-uscita (i/o)

Un calcolatore può essere collegato a vari dispositivi di ingresso o uscita chiamate

periferiche.

MACCHINA DI VON NEUMANN LE PERIFERICHE NON FANNO PARTE DEL CALCOLATORE.

NELLA

Ogni periferica è controllata con un’interfaccia che ha il compito di tradurre i segnali

interni del calcolatore in un formato comprensibile alla

periferica e viceversa.

BUS DI SISTEMA

 Interconnette le componenti interne del calcolatore

CPU, MEMORIA ED INTERFACCE A PERIFERICHE

 Collega due unità funzionali alla volta

UNA TRASMETTE E L’ALTRA RICEVE

 Funzionamento master/slave

LA CPU (MASTER) SELEZIONA LA CONNESSIONE DA ATTIVARE E ORDINA IL TRASFERIMENTO DEI DATI

1. BUS DATI (DATA BUS)

! Serve per trasferire dati tra:

MEMORIA CENTRALE E REGISTRO DATI (MDR) DELLA CPU

PERIFERICHE E CPU (O MEMORIA CENTRALE)

  • Bidirezionale

2. BUS INDIRIZZI (ADDRESS BUS)

! Serve per trasmettere il contenuto:

DEL REGISTRO INDIRIZZI (MAR) ALLA MEMORIA (O A UNA PERIFERICA)

  • Si seleziona una cella per successive operazioni di lettura o scrittura
  • Unidirezionale

3. BUS COMANDI (COMMAND BUS)

! Serve per inviare comandi

VERSO LA MEMORIA (ES: LETTURA O SCRITTURA) O VERSO UNA PERIFERICA (ES.: STAMPA)

  • Unidirezionale

1.1. Firmware

È un programma integrato direttamente in un componente elettronico.

  • Il termine deriva dall'unione di " firm " (azienda) e " ware " (componente), indica che il programma non è immediatamente modificabile dall'utente finale, risiede stabilmente nell'hardware integrato in esso.
  • Il firmware forse più conosciuto è quello della scheda madre, chiamato comunemente BIOS e responsabile del corretto avvio del computer.

1.2. Il BIOS

All’avvio del computer, il BIOS (Basic Input-Output System) esegue una serie di test diagnostici per controllare lo stato di funzionamento dell'hardware e segnalare eventuali guasti rilevati tramite un codice sonoro (beep code);

  • Fornisce una interfaccia software per l'accesso alle periferiche e all'hardware del PC.

1.3. Caricamento del S.O.

Il programma di bootstrap scritto dal produttore della ROM è quel software che carica il sistema operativo una volta terminato il test dell’hardware.

  • Il sistema operativo viene caricato dal disco fisso nella memoria RAM all’accensione della macchina (programma di boot) e rimane attivo fino allo spegnimento del proprio computer.
  • In una prima fase viene caricato solo il kernel cioè il cuore del sistema operativo detto nucleo.

1.4. Il sistema operativo è

 un insieme di programmi che gestiscono le risorse hardware e software del sistema di elaborazione,  ne semplificano l’utilizzo  e lo ottimizzano. Senza il sistema operativo l’utente non sarebbe ingrado di comunicare con l’hardware della macchina.

1.5. Le sue funzioni

  1. La gestione dell’unità centrale (processore e memoria)
  2. La gestione dell’ input/output
  3. La gestione dei programmi applicativi
  4. La gestione dei file (file system) 1. Introduzione ai sistemi
  1. La gestione dell’interfaccia con l’utente
  2. L’interprete dei comandi o shell
  3. La gestione della sicurezza
  4. Il controllo dell’accesso alle risorse

1.6. Sistemi operativi diversi

Su una macchina possiamo installare diversi sistemi operativi.

E’ possibile installare sistemi operativi diversi sulla stessa macchina suddividendo il disco in due

partizioni e facendo scegliere all’utente, alla fine del programma di boot, con un menu, quale dei due

sistemi deve essere caricato. Per esempio possiamo installare un sistema operativo con licenza di utilizzo a pagamento come Windows oppure un sistema libero come Linux.

1.7. Il kernel

È il cuore del sistema operativo che avvolge idealmente l’hardware del computer.

I programmi applicativi ogni volta che intendono comunicare con l’hardware devono «passare attraverso il

kernel» utilizzando le primitive di sistema costituenti il kernel.

Quando si sta eseguendo il codice del kernel si dice che il processore è nel modo

supervisore.

1.8. La shell

È l’interfaccia utente, quell’insieme di programmi che permettono all’utente di interagire

con il sistema operativo stesso.

L’interfaccia utente può:

- CUI (Command User Interface) LINEA DI COMANDO - GUI (Graphical User Interface).FRIENDLY USER

Gestione dei lavori:

**1. Monoprogrammati

  1. Multiprogrammati**

3. Bisogna adottare politiche per proteggere i programmi e i dati da eventuali scritture

inquinanti.

4. Bisogna adottare politiche per risolvere eventuali conflitti che possono sorgere per

l’assegnazione di una determinata risorsa a diversi job.

2.4. Sistemi Desktop

Negli anni ‘70 sono nati i sistemi operativi desktop (Windows, Macintosh, Linux...).

Con la nascita del collegamento in rete, questi sistemi si sono evoluti comprendendo funzioni di

protezione dei file e della memoria da attacchi esterni.

2.5. Classificazione sistemi operativi

Numero degli utenti:

1. Monoutente ->

Se possono essere usati da un solo utente alla volta.

2. Multiutente -> Se possono essere usati da più utenti alla volta. Ci sono diversi terminali collegati a una memoria

Tipo di lavoro svolto:

Nessuna di queste è esclusiva (Es: un sistema operativo può essere dedicato e interattivo insieme)

1. Dedicati -> Quando nascono per uno specifico compito. 2. General Pourpose ->

Q uando sono in grado di svolgere compiti differenti.

3. Batch (o a lotti) ->

Q uando l’utente non può interagire con la macchina durante l’esecuzione del programma.

4. Interattivi ->

Quando l’utente può interagire con la macchina durante l’esecuzione del programma.

5. Real Time ->

Quando deve fornire elaborazioni corrette in tempi esatti. Se il risultato arriva in ritardo è considerato inutilizzabile e quindi errato. Si impiegano nelle applicazioni scientifiche o di controllo industriale, nella multimedialità e nella realtà virtuale e presentano limiti di tempo ben definiti.

2 tipologie:

1. Hard Real Time: i compiti critici vengono completati in tempo. 2. Soft Real Time: i compiti critici hanno priorità sugli altri. 6. Transazionali ->

Un sistema è detto Transazionali quando le elaborazioni devono necessariamente arrivare al termine oppure fallire.

Un lavoro non può essere svolto a metà, o viene concluso oppure viene rifiutato.

Questi sistemi sono tipici per le operazioni di aggiornamento di basi di dati e di natura gestionale.

(ES: il prelievo Bancomat o fallisce o deve essere concluso non può essere svolto a metà).

Struttura a microkernel

Questa tecnica prevede di rimuovere dal nucleo tutti i componenti non essenziali, realizzandoli come

servizi esterni nello spazio utente. Nel microkernel vengono lasciate solamente le funzioni di gestione dei processi (programmi in esecuzione), d ella memoria e della comunicazione. I vantaggi sono:

  • Maggior sicurezza
  • Facilità nell’effettuare modifiche

I moderni sistemi operativi hanno una struttura mista tra quella a strati con quella

microkernel.

3.2. Creare un sistema operativo

Per progettare un sistema operativo occorre:

  1. Definire gli scopi e le caratteristiche del sistema
  2. Scegliere il tipo di sistema che si vuole realizzare (monoutente, multiutente, real time....)
  3. Cercare di ottimizzare il codice e adottare i migliori algoritmi e le migliori strutture dati è importante per ottenere buoni risultati in questo campo.

I primi sistemi operativi erano scritti in linguaggio assemblativo. Oggi i moderni sistemi sono scritti in

linguaggi come C e C++.

-> Ciclo di vita di un processo

4.1. Programma e processo

Il programma è una entità passiva formata da istruzioni (cicli, salti...) salvate nelle memorie. Quando un programma va in esecuzione diventa un processo.

Un processo è una entità attiva che evolve nel tempo, è formato da azioni da eseguire in sequenza e dai dati che vengono elaborati dalle azioni stesse.

L’oggetto che causa l’evoluzione del processo è detto processore (CPU).

4.2.Programma e processo

Ad ogni processo è associato un descrittore di processo. Quando la CPU deve essere liberata, il descrittore viene aggiornato con tutti i dati relativi alla sua esecuzione come:

  1. Lo stato del processo
  2. Il contatore di programma
  3. I registri della CPU
  4. Informazioni sullo scheduling della CPU (es: priorità del processo)
  5. Informazioni sulla gestione della memoria
  6. Informazioni sullo stato di I/O (file aperti, dispositivi assegnati...)

4.3. Il gestore dei processi o kernel

Il nucleo o kernel è la parte del sistema operativo più vicina all’hardware della macchina ed è strettamente dipendente dall’hardware. Le funzioni fondamentali del nucleo sono:

  1. Creazione e terminazione dei processi

Creazione di un processo: Un processo può crearne altri. Il processo creante si chiama processo genitore mentre il nuovo processo si chiama processo figlio

Terminazione di un processo: Un processo termina quando:

  • Finisce la sua ultima istruzione
  • Viene terminato (abort) dal padre 4. Il gestore dei processi

5.

5. Round Robin o politica del torneo

La più semplice politica di scheduling è la politica del torneo (Round

Robin) che prevede una coda circolare di processi pronti (Ready) e una

coda di processi in attesa (Waiting).

Tutti i processi sono ugualmente importanti e ciascuno ha un quantum di

tempo per utilizzare la CPU. Il processo nuovo che arriva finisce in fondo alla

coda di Ready mentre il processo che va in

esecuzione viene preso dalla testa della coda

(politica FIFO).

Quando ad un processo viene tolto l’uso della CPU può finire nella coda di Waiting oppure in

fondo alla coda di Ready e la CPU viene

assegnata al primo processo presente nella coda

di Ready.

5. Scheduling a code multiple

Si può decidere di organizzare la coda dei processi pronti (Ready) con delle code di priorità.

I processi vengono posti su code diverse a seconda della priorità stabilita da alcuni parametri

(es: tempo che gli rimane per terminare la sua esecuzione).

Lo scheduler (che è anch’esso un processo però con priorità massima) sceglierà il processo da mandare in

esecuzione partendo dalla coda con la priorità più alta. Se quella coda è vuota passerà alla coda successiva e così via fino a

raggiungere quella con priorità più bassa.

6. Scheduling a code multiple con retroazione

E’ una variante dell’algoritmo di scheduling a code multiple ma

che tiene conto della storia passata dei processi per adeguare la priorità e il time slice.

Se un processo usa troppo tempo della CPU viene spostato in una coda a priorità più bassa e viceversa se

un processo attende troppo a lungo viene spostato in una coda con priorità più alta.

VEDI BOX PAG 18 SU STARVATION

  1. La comunicazione tra processi

In alcuni casi i processi hanno bisogno di comunicare per cooperare.

Il S.O. mette a disposizione due modi complementari di comunicare:

  1. Comunicazione con memoria condivisa che necessita di meccanismi di sincronizzazione tra processi.
  2. Comunicazione con scambio di messaggi: esiste un sistema IPC (Inter Process Communication) che fornisce almeno due operazioni, send e receive.
  3. La sincronizzazione dei processi

Due processi possono entrare in concorrenza tra loro se richiedono la medesima risorsa oppure se uno ha bisogno dei risultati prodotti dall’altro per proseguire la sua esecuzione.

In questi casi si parla di elaborazione concorrente di processi e il sistema operativo deve prevedere dei

meccanismi di sincronizzazione dei processi.

Le parti di processo che possono generare conflitti con altri processi vengono dette regioni critiche.

Svantaggi: Questa politica è sensibile al variare del time slice che non deve essere ne troppo lungo ne troppo corto. Se è corto ci sono troppi context switch , se è troppo lungo diventa un FCFS. Può succedere che un processo breve sia in esecuzione e scada il suo time slice. Anche se gli mancava meno tempo degli altri per

Bisogna garantire:

  1. Mutua Esclusione: le regioni critiche possono essere eseguite da un solo processo per volta.
  2. Progresso: se qualche processo vuole entrare nella regione critica, solo i processi che si trovano nelle sezioni di ingresso possono decidere a chi spetta entrare per primo.
  3. Attesa limitata: se un processo ha chiesto di entrare deve esistere un limite al numero di volte che si concede agli altri di entrare nella sezione critica prima di accettare la sua richiesta.

Le soluzioni possibili che garantiscono la sincronizzazione

  1. Variabili di turno: stabiliscono a chi spetta il diritto ad usare quella risorsa, sono condivise dai processi che ne fanno richiesta
  2. Variabili di lock: variabile condivisa che definisce lo stato della risorsa cioè quando è in uso e quando è libera. Nei sistemi monoprocessore occorre disabilitare le interruzioni in fase di acquisizione della risorsa e riattivarle all’uscita della sezione critica.
  3. Istruzioni atomiche: se due processi eseguono (contemporaneamente una istruzione atomica (es: Test and Set Lock), esse sono eseguite in sequenza.

Le soluzioni possibili con costrutti di livello più alto (garantiscono la sincronizzazione senza errori dovuti all’abilitazione e disabilitazione delle interruzioni)

1. Semafori: sono speciali variabili

E’ una variabile intera che indica al processo richiedente se una risorsa è accessibile o

meno in quell’istante.

1. Il processo che usa i semafori ne verifica il valore.

2. Se la risorsa è libera, la prende in uso e cambia il valore del semaforo da libero a

occupato in modo che gli altri processi non possano accedere a quella risorsa.

3. Quando finisce di utilizzarla, la rilascia cambiando ancora il valore del semaforo.

Per evitare che il processo rimanga in attesa attiva (spinlock) e sprechi cicli di CPU per

ottenere la risorsa può essere messo in una coda d’attesa del semaforo e si effettua un

context switch.

Svantaggi:

La realizzazione di un semaforo con coda d’attesa può portare però a situazioni di deadlock

e starvation. VEDI BOX PAG 18 SU STARVATION

Anche se può sembrare simile alla variabile di lock, il semaforo è un costrutto di più alto

livello ed è accedibile solo attraverso le operazioni atomiche Wait e Signal.

2. Monitor:

Sono scritti dal programmatore ma

trasformati in chiamate di sistema da parte

del compilatore.

3. Transazioni atomiche:

Servono in ambienti dove la sezione

critica va eseguita nella sua

totalità o non eseguita per niente.

Una transazione può essere considerata

come una serie di operazioni Read e Write

terminata da una operazione COMMIT

(se la transazione ha successo) o ABORT

(se la transazione fallisce).

In caso di ABORT si riporta il sistema

allo stato precedente l’inizio della

transazione questa operazione si chiama

ROLLBACK.

La realizzazione di un semaforo con coda d’attesa può condurre a situazioni in cui ciascun processo di un insieme di processi attende indefinitamente un evento.

Un insieme di processi è in stallo (o Deadlock ) se ciascun processo attende un evento che può essere causato solamente da un altro processo dell’insieme.

metodi per la gestione delle situazioni di stallo possono essere i seguenti:

  1. Prevenire le situazioni di stallo attraverso algoritmi che utilizzano grafi di assegnazione delle risorse.
  2. Verificare la presenza di uno stallo attraverso degli algoritmi e ripristinare il sistema terminando i processi che lo hanno causato oppure adottando meccanismi di prelazione sulle risorse.
  3. Fingere che non si verifichi (metodo più economico)

La Starvation (Morte per fame) è la situazione in cui un processo pronto in attesa della CPU non va mai in esecuzione. ES: Un flusso costante di processi con priorità maggiore potrebbe causare questa situazione. ! Le conseguenze sono che il sistema si sovraccarica al punto da perdere tutti i processi non terminati.!

L’Aging è una soluzione al problema della starvation. Si potrebbe pensare di aumentare la priorità dei processi che restano più tempo nella coda di Ready.

STARVATION/ AGING/DEADLOCK

Modulo 1

Slide 1/2/

SISTEMI

OPERATIVI

PARTE I

SISTEMI

OPERATIVI

PARTE II