Elaboratore e Sistemi Operativo. Comè fatto un elaboratore? Elaboratori basati sulla Architettura...

Post on 01-May-2015

216 views 2 download

Transcript of Elaboratore e Sistemi Operativo. Comè fatto un elaboratore? Elaboratori basati sulla Architettura...

Elaboratore e Sistemi Operativo

Com’è fatto un elaboratore? Elaboratori basati sulla

Architettura di Von Neumannche consiste di: Un’unità di Elaborazione (CPU) Memoria Centrale (RAM) per istruzioni e

dati memorizzati come sequenze di dati Periferiche Bus di Sistema

Programmi e dati I programmi (seq. istruzioni) e i dati

sono memorizzati in memoria di massa (lenta)

Per essere eseguito, un programma deve essere caricato in memoria centrale (veloce)

Occorre anche allocare spazio per i dati utilizzati dal programma (es. Variabili N,Ris) in memoria centrale

Come funziona l’elaboratore? Un programma viene caricato in memoria

centrale Si alloca lo spazio per i dati necessari al

programma La CPU estrae le istruzioni e dati dalla memoria

centrale, le decodifica e le esegue utilizzando registri interni (accesso veloce)

L’esecuzione può comportare il trasferimento di dati in input e output tra memoria centrale e periferiche attraverso il bus di sistema

L’esecuzione viene scandita dal clock

Memoria Centrale (RAM) La RAM è una memoria utilizzata

esclusivamente per l’esecuzione di un programma Accesso rapido Volatile

La RAM è organizzata come una tabella di celle Cella = parola di memoria Parola = sequenza di byte Es. memoria da 16 bit (2 byte), 32 bit, 64 bit

Indirizzo di memoria Indirizzo di memoria = posizione

relativa alla prima cella della memoria La CPU utilizza due registri di controllo:

Registro di indirizzamento (RI) serve per recuperare le parole di

memoria Registro dati (RD)

mantiene dati input e output

Funzionamento RAM

RI RD

MEMORIA: parole da 16 bit

REG.INDIRIZZIK bit:

REG. DATI. 16 bit

012

:

K2

m12...0 K

CPU: Central Processing Unit Rappresenta il cuore

dell’elaboratore Unità Aritmetico-Logica (ALU)

Circuiti per calcolo vero e proprio Registri

Accumulatore, Program Counter, ... Decodificatore di istruzioni

Tabella che estrae istruzioni

Registri Registro istruzione corrente (RIC)

contiene l’istruzione correntemente eseguita Contatore di Programma (PC)

indirizzo della prossima istruzione da eseguire Registro interruzioni (RINT)

contiene informazioni riguardo lo status delle periferiche

Accumulatore (ACC) Contiene valori utilizzati durante operazioni

Modello Semplificato

2:1:0:

:

RAM

decoder

RIC

PC

ACC

ALU

Istruzioni della Macchina Le istruzioni della macchina sono

codificate in forma numerica ed inserite insieme agli altri dati nella memoria centrale

Istruzione = operazione di base sui registri e sulla RAM

Codifica delle istruzioni = Elenco ordinato Identificatore di un istruzione ~ Numero

d’ordine

Esempio di Set Istruzioni Istruzione SUM con parametro N

Nuovo valore del reg. ACC = ACC + RAM[N]

Istruzione MOVE con parametro N Nuovo valore di RAM[N] = ACC

Istruzione LOAD con parametro N Nuovo valore di ACC = RAM[N]

Istruzione HALT: termina l’esecuzione

Programma in Linguaggio Macchina

Sequenza di istruzioni Un programma viene interpretato

sequenzialmente attraverso il registro PC che identifica la prossima istruzione da eseguire

Per capire meglio occore introdurre il ciclo di interpretazione dei programmi

Stato iniziale della macchina Supponiamo di aver caricato le

istruzioni nella RAM a partire dalla cella con indirizzo 0

Inoltre supponiamo di avere a disposizione una tabella che ci permette di recuperare l’istruzione e i relativi parameteri

Esecuzione tramite ciclo di fetch

Inizializzazione: memorizza 0 nel registro PC Ciclo di Fetch:

1. Recupera il valore nella cella con indirizzo PC nella RAM e lo memorizza nel registro RIC (registro istruzione corrente)

2. Somma 1 al valore contenuto in PC e lo memorizza in PC

3. Decodifica il valore contenuto in RIC (estrae il codice operazione e il parametro)

4. Esegui l’istruzione 5. Torna al punto 1 a meno che l’istruzione non sia

quella di `fine programma’

Esempio di programma Considerate la seguente conf. iniziale della RAM:

RAM[0]= LOAD 4 RAM[1]= SUM 5 RAM[2]= MOVE 4 RAM[3]= HALT RAM[4]= 21 RAM[5]= 9

dove SUM N: ACC ’ = ACC + RAM[N] MOVE N : RAM[N] ’ = ACC LOAD N : ACC ’ = RAM[N] HALT: termina esecuzione

N = parametro Cosa fa il programma?

Soluzione Il programma precedente esegue i seguenti

passi: Copia il valore della cella 4 (=21) nel reg. ACC Somma il val. della cella 5 (=9) al valore in ACC e lo

memorizza di nuovo in ACC (=30) Copia il valore del reg. ACC nella cella 4 (=30)

Alla fine abbiamo che: ACC e RAM[4] contengono 30 RAM[5] contiene ancora 9

Compilatore I programmi in realtà si scrivono in linguaggi più

semplici del linguaggio macchina chiamati linguaggi di programmazione ad alto livello (C, Java, Pascal)

I programmi scritti in linguaggi di alto livello vengono poi tradotti automaticamente in linguaggio macchina per poter essere eseguiti

Il compilatore di un linguaggio di programmazione (ad es. il compilatore C) è un programma che effettua la traduzione in linguaggio macchina

Un programma eseguibile (.exe in Windows) è il risultato della compilazione

Programmi Esistono vari tipi di programmi Programmi di base:

servono per gestire le risorse della macchina

Es. Sistema operativo Windows Programmi applicativi:

aggiungono nuove funzionalità Es. Word, Excel, etc.

Il Sistema Operativo

Sistema Operativo (Software di base)

Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei dati attraverso indici

I sistemi operativi sono organizzati a strati

Strato = macchina virtuale che maschera la macchina fisica (hardware)

Sistema operativo

Hardware

Sistema operativo

Interfaccia utenteutente

Funzionalità Possiamo identificare 5 strati tra

macchina fisica e utente Gestore dei processi Gestore della memoria Gestore delle periferiche File system Interprete dei comandi

Gestore dei processi Gestisce l’esecuzione dei programmi Le unità di esecuzione vengono chiamate

processi Per eseguire un programma occorre

mantenere il corrispondente processo attivo nella CPU

In ambiente multi-utente il gestore deve decidere a quale processo assegnare la CPU

Inoltre deve reagire agli eventi esterni (le interruzioni provenienti dalle periferiche)

Cos’e’ un processo? Programma = lista di istruzioni = nozione

statica Processo = programma in esecuzione

= programma + stato corrente variabili = nozione dinamica

Stato corrente= valori in memoria centrale valori nei registri della CPU

In un PC un solo processo in esecuzione alla volta

Gestore della memoria Il gestore della memoria deve

allocare la memoria partizionarla tra i processi che la richiedono

Grazie al gestore della memoria gli strati superiori hanno l’illusione che ogni processo abbia una memoria dedicata

Gestore delle periferiche Maschera le caratteristiche hardware

delle periferiche Gestisce le operazioni di input e output Fornisce procedure ad alto livello

ad esempio per la lettura, scrittura di dati su memorie secondarie

scrittura su stampanti, ecc

File System Gestisce i dati in memoria di massa Struttura i dati in modo gerarchico

utilizzando file e directory Fornisce operazioni di alto livello per la

gestione di file ad esempio creazione di un nuovo

documento, directory ecc Protegge i dati da accessi esterni Garantisce la condivisione sicura dei

dati

Interprete dei comandi Consente all’utente di attivare i

programmi Sfrutta le funzionalità degli strati

inferiori per cercare in memoria il programma invocato allocare la memoria richiesta dal

programma attivare un processo per eseguire il

programma

Evoluzione dei Sistemi Operativi Sistemi batch con schede (50’s-60’s) System/360 IBM compatibili (65-70’s) Sistemi operativi UNIX e DOS (80’s) WINDOWS (90’s)

Uno sguardo da vicino al sistema operativo

Il File System

Gestione della Memoria Secondaria

La memoria di massa serve per gestire grandi quantità di dati Persistentenza Sicurezza Classificazione

Soluzione I dati vengono organizzati logicamente in file e gestiti dal sistema operativo

File Nome:

Identifica il file spesso con una estensione che indica il tipo di file

es. Tesi.doc oppure somma.exe Struttura:

Sequenza di byte Sequenza di blocchi (record) di byte

Tipo: File di caratteri e binari (eseguibili) Directory

Attributi: nome, diritti di accesso,proprietario

Operazioni su File Il file system consente di effettuare le

seguenti operazioni: creare, cancellare, spostare,

recuperare, modificare documenti in memoria di massa (memoria persistente)

Modificare gli attributi di un file Ridenominare i file

Directory E’ un file di tipo speciale che mantiene

informazioni su altri file permette di strutturare insiemi di file (dati) in

maniera gerarchica contiene la lista dei nomi e attributi dei file e

directory al suo interno Quindi: il file system ha una struttura ad

albero Radice = radice del’intero file system Nodi interni = directory Foglie = documenti/programmi

File System in DOS/Windows Esistono delle directory predefinite

che corrispondono alle unità di memoria secondaria Disco fisso indicato con C: Dischetto indicato con A:

Struttura ad albero

Struttura ad albero

Floppy da 3.5 A:

Applicazioni Biblioteca

Elab_imm Elab_suoni

Photoshop.exe file

directory

radice

Hard Disk C:

Path names In un’organizzazione ad albero i nomi devono

contenere informazioni sui cammini sui quali si trovano i corrispondenti file

Nomi relativi: relativi ad una particolare directory

Nomi assoluti: specificano il cammino a partire dalla radice (root) del

file system (mai ambigui) Nei path names si possono utilizzare I due

simboli speciali Il punto (.) rappresenta la directory corrente I due punti (..) rappresentano la directory

immediatamente superiore nel’albero

Esempio cammini

Floppy da 3.5 A:

Applicazioni

Elab_imm

Elab_suoni

Photoshop.exe A:\Applicazioni\Elab_imm\Photoshop.execammino assoluto

..\Elab_suoni

cammino relativo da Elab_imm

Gestione File System File possono venire memorizzati con

Allocazione continua di blocchi di byte Allocazione collegata (un blocco contiene

l’indirizzo del prossimo) Allocazione con indice (si mantiene una

tabella in memoria per recuperare i blocchi) – DOS -

I-node: tabella con puntatori ad altre tabelle (combina le ultime due) – UNIX –