Estratto del documento

Memoria centrale: La memoria centrale è la memoria principale di un elaboratore elettronico. In essa

sono registrati i dati temporanei elaborati dal processore durante l’esecuzione di un programma.

Essa risiede sulla scheda madre del calcolatore ed è molto vicina alla CPU; in questo modo la CPU

può comunicare in maniera più veloce con essa. E’ molto più veloce rispetto alle memorie di massa e

si suddivide in: memoria RAM, memoria ROM e memoria Cache.

Definizione di processo: un processo è un programma in esecuzione completo del suo stato

(completo del suo spazio di indirizzamento, contenuto dei registri, file aperti ecc..). Tutto o

parte dello spazio di indirizzamento è residente in memoria centrale.

Per funzionare correttamente, il Loader deve avere a disposizione un file eseguibile. Il file eseguibile viene creato a partire da un programma.

Quando scriviamo un programma, di solito lo scriviamo con un linguaggio di alto livello. Questo linguaggio non è direttamente interpetrabile da parte della macchina su cui deve essere eseguito,

per questo motivo deve essere “tradotto”, o meglio compilato. La compilazione avviene attraverso un compilatore che si occuperà dunque di trasformare un programma in un file esegubile

Un file eseguibile è un file binario memorizzato sul disco che contiene tutte le

informazioni necessarie all’esecuzione del programma da parte del processore. Il

formato del file dipende dal sistema operativo che deve curarne l’esecuzione.

Spazio di indirizzamento: lo spazio di indirizzamento,

è l’immagine della memoria visibile al programma

durante la sua esecuzione. Esso viene caricato in

memoria centrale.

Byte di

memoria

indirizzabili Traduzione in linguaggio macchina delle istruzioni che compongono il programma

indirizzo dell’istruzione successiva a quella che ha effettuato la chiamata

alla funzione

che cresce in questo modo

Un programma viene eseguito quando viene caricato nel Program Conter

(registro della CPU che contiene l’indirizzo di memoria della prossima

istruzione da far eseguire alla CPU) l’indirizzo di memoria della prima

istruzione, nell’area testo del programma da eseguire, da far eseguire alla

CPU.

A questo punto, il programma ha il controllo del processore.

SPAZIO DI INDIRIZZAMENTO – CASO DEL LINGUAGGIO C

Nell’area dati BSS vanno memorizzati tutte le variabili globali o statiche che sono

state inizializzate a zero oppure che non sono state esplicitamente inizializzate

Magic number: Il magic number è una sequenza di bit posta prima della sequenza di dati che serve a definire il formato in cui i dati sono memorizzati. Sono

nati negli ambienti UNIX per identificare il formato dei file binari e per la gestione dei dati nella memoria. Sebbene quasi tutti i formati di file siano identificati

da un magic number, la Microsoft, sin dalle sue prime versioni del suo sistema operativo ha deciso di adottare un nuovo identificativo: l’estensione.

Ad esempio:

- I file GIF iniziano con la stringa ASCII GIF87a oppure ASCII GIF89a.

- I file ZIP cominciano con la stringa PK (in esadecimale 50 4B), in onore dell’ideatore Phil Katz

- I file ELF di Linux iniziano con la stringa 7F 45 4C 46: gli ultimi 3 byte di questa stringa formano la parola ELF

CONDIVISIONE DELLA RAM

La memoria RAM (Random Access Memory - Memoria ad accesso casuale) è una memoria di tipo volatile

(necessita dell alimentazione elettrica per mantenere memorizzate le informazioni) che permette l accesso a

qualsiasi indirizzo di memoria con lo stesso tempo di accesso.

Nella memoria RAM vengono caricati i programmi che la CPU deve eseguire. Quando un programma viene

chiuso, se le informazioni non vengono salvate sul disco rigido o su una memoria di tipo non volatile,

verranno perse.

La RAM contiene lo spazio di indirizzamento di pi processi e contiene anche un area riservata che serve a

contenere i processi del sistema operativo, perché anch esso occupa risorse. La differenza tra un processo

normale ed un processo del sistema operativo è che il processo normale lavora in user mode, mentre il

processo del sistema operativo lavora in Kernel Mode e può fare tutto a differenza di un processo in user

mode.

Siccome sulla RAM devono condividere più spazi di indirizzamenti di più processi non deve accadere che un

processo abbia la possibilità di accedere agli indirizzi fisici della RAM al di fuori della sua area.

Quando il compilatore/linker va a compilare le istruzioni di un processo assume che lo spazio di

limite. Esso però non

indirizzamento del processo che sta compilando parta da 0 fino ad un valore

conosce il processo che deve compilare a quale indirizzo fisico (sula RAM) è associato, quindi, se non

iene effe a a n opera ione di riloca ione si rischia di far acca allare gli indiri i s lla memoria

RAM.

Nasce quindi la necessità di effettuare un processo di rilocazione degli indirizzi e viene fatta in

hardware, ovvero usando componenti elettronici.

Questa operazione consiste nell andare a ricavare quale è l indirizzo base del processo in esecuzione e

sommare a quest ultimo l indirizzo proveniente dal Program Counter (che contiene l indirizzo della

prossima istruzione da eseguire e questo indirizzo se lo prende dallo spazio di indirizzamento del processo in

esecuzione) a patto che sia minore del valore limite dello spazio di indirizzamento del processo.

Supponendo di star eseguendo il processo 2, il sistema operativo prima di cominciare l esecuzione di quel

processo, mette nel registro base l indirizzo base di quel processo. In questa maniera tutti gli indirizzi, sia

quelli delle istruzioni (Program Counter), sia gli indirizzi dei dati, prima di andare verso la memoria, quindi

prima di essere messi sui fili dei bus, vengono incrementati di questo valore. Questo comporta che ad ogni

passaggio da un processo ad un altro, il sistema operativo deve ricordarsi di aggiornare l indirizzo base.

Usando invece il registro limite, posso stabilire per ogni processo i vincoli di memoria in cui si può muovere

quel determinato processo. Un tentato accesso allo spazio di memoria di un altro processo, genera un errore.

DOMANDE ESAMI:

1) CLASSE SEMAFORO CODICE

2) COME VIENE DICHIARATA LA SYSTEM CALL “OPEN”

3) COME VENGONO RAPPRESENTATI I PERMESSI?

4) CHI PUO’ MODIFICARE QUESTI PERMESSI?

5) COSA SUCCEDE PER IL PROCESSO QUANDO VIENE APERTO UN

FILE?

6) COSA CI STA NELLA TABELLA DEI FILE APERTI?

7) COS’E’ IL TLB?

8) COME AVVIENE LA TRADUZIONE INDIRIZZO LOGICO AD

INDIRIZZO FISICO?

9) MI SCRIVA UN PROGRAMMA IN CUI UN PADRE GENERA 2 FIGLI

E PASSA AL SECONDO FIGLIO IL PID DEL PRIMO FIGLIO TRAMITE

PIPE. IL SECONDO FIGLIO INVIA UN SEGNALE AL PRIMO FIGLIO.

10) QUANDO SI VERIFICA IL PAGE FAULT? E COSA SUCCEDE

QUANDO SI VERIFICA? QUALI SONO I CAMPI CHE VENGONO

MODIFICATI?

11) COME E’ VISTO UN INDIRIZZO LOGICO? (PAGINA LOGICA,

OFFSET)

12) MI SPIEGHI L’ALGORITMO LRU CHE UTILIZZA IL BIT R, COME

FUNZIONA E CHE SIGNIFICA L’ACRONIMO LRU. COS’E’ IL BIT R?

COME VIENE MESSO A 1?

13) COS’E’ UN I-NODE E COME VIENE FATTO?

14) QUALI SONO LE STRUTTURE DATI DEI FILE SYSTEM? (OLTRE A

INODE ABBIAMO DIRECTORY)

15) CHE INFORMAZIONI CI SONO NELLA DIRECTORY?

16) QUESTO NUMERO DI INODE CHE STA NELLA DIRECTORY

COME LO UTILIZZO PER RECUPERARE L’INODE DAL DISCO?

17) ESERCIZIO: LETTORE SCRITTORE CON LETTORI CHE POSSONO

LAVORARE INSIEME E SCRITTORI CHE DEVONO LAVORARE IN

MUTUA ESCLUSIONE

18) ESERCIZIO: PRODUTTORE-CONSUMATORE CON UNA CODA

LIMITATA DI POSTI DI CUI 4 SONO GIA’ OCCUPATI. SE

INVERTIAMO I DUE UP ACCADE QUALCOSA?

19) COME FUNZIONA L’ISTRUZIONE TEST AND SET (TSL)?

SCRIVERE L’ISTRUZIONE A CODICE CON GLI OPERANDI

20) COS’E’ IL PROCESS CONTROL BLOCK (PCB)? QUALI SONO LE

SUE COMPONENTI? (Min 17.00)

21) QUALI SONO GLI STATI DEL PROCESSO E COME SI PASSA

DALL’UNO ALL’ALTRO? (WAIT, READY, RUNNING)

22) CHE COS’E’ UNA SYSTEM CALL?

23) COME E’ FATTA UNA DIRECTORY DOS? (MINUTO 24:50

REGISTRAZIONE) CON RIFERIMENTO ALLA PARTE DI GESTIONE

DELLA PATH

24) COS’E’ UN MONITOR? QUALI SONO LE CARATTERISTICHE CHE

FANNO DI UNA CLASSE UN MONITOR? CHE CARATTERISTICHE

DEVONO AVERE I METODI? COSA SONO LE VARIABILI DI

CONDIZIONE, A CHE SERVONO E COME VENGONO UTILIZZATE?

DOMANDE ESAMI:

1) PRODUTTORI-CONSUMATORI CON CODA LIMITATA

INIZIALMENTE PIENA

2) ATTIVAZIONE DI UN PROCESSO PADRE E UN FIGLIO. IL

FIGLIO FA L’EXEC MENTRE IL PROCESSO PADRE DEVE

RIDIGERE LO STDOUT DEL FIGLIO

3) COM’E’ FATTA LA TABELLA DELLE PAGINE? COM’E’ FATTA LA

SINGOLA RIGA DELLA TABELLA DELLE PAGINE? QUALI SONO

GLI ELEMENTI PRINCIPALI DEL RECORD? QUANTE RIGHE

DEVE AVERE LA TABELLA DELLE PAGINE?

4) LETTORI E SCRITTORI CON MEMORIA CONDIVISA. LA

SEQUENZA E’ UNA SCRITTURA SEGUITA DA TRE LETTURE

CON SCRITTORI E LETTORI CHE LAVORANO IN MUTUA

ESCLUSIONE.

5) SCRIVA L’INTERFACCIA DELLA FUNZIONE FOPEN

6) PERMESSI + TABELLA DEI FILE APERTI

7) PROGRAMMA C IN CUI UN PADRE CREA IL FIGLIO IL QUALE

INVIA UN SEGNALE SIGUSR1 AL PADRE CHE ASPETTA

QUESTO SEGNALE E TERMINA.

8) TRADUZIONE INDIRIZZO LOGICO- FISICO IN UNA MEMORIA

PAGINATA

9) LRU

10) APPLICAZIONE MULTITHREAD CON UNA CATENA DI

MONTAGGIO DI N THREAD CHE DEVONO ESEGUIRE LE

OPERAZIONI 1 ALLA VOLTA. IL THREAD CHE PARTE DEVE

ESSERE SCELTO DAL THREAD ZERO IN MODO CASUALE.

11) COSA SONO I MONITOR? DIFFERENZA CON I SEMAFORI

12) THREAD CHE INSERISCONO UNO ALLA VOLTA UN

OGGETTO NEL DEPOSITO (DI DIMENSIONE INFINITA) E

DOBBIAMO EVITARE CHE LO STESSO THREAD INSERISCA 2

OGGETTI CONSECUTIVI

13) READ

14) UNA VOLTA IDENTIFICATA LA RIGA DELLA TABELLA DEI

FILE APERTI CHE FACCIAMO?

15) COS’E’ IL TLB?

16) COSA FA IL SO QUANDO FACCIAMO UNA OPEN?

risolviamo il problema della rilocazione dinamica e permettiamo che i processi non accedano agli indirizzi fisici della RAM relativi ad altri processi

RILOCAZIONE

Indirizzo iniziale del programma nella memoria RAM Indirizzo corretto diretto alla memoria RAM

Ampiezza dello spazio di indirizzamento

PROTEZIONE

Un processo, inoltre nasce anche quando viene inizializzato il sistema, quando l’utente decide di eseguire un programma (facendo doppio click

sull’icona o lancia un file eseguibile) oppure, nel caso dei sistemi batch, quando a una certa ora del giorno inizia un job batch

Le system call, dette anche chiamate di sistema, permettono ai programmi a

livello utente di richiamare i servizi del sistema operativo. Esse sono

solitamente disponibili come speciali istruzioni assembler oppure come

funzioni speciali nei linguaggi che supportano direttamente la

programmazione di sistema (come ad esempio il linguaggio C).

Per ottenere un servizio del sistema operativo quindi si usano queste system

call e la richiesta del servizio avviene grazie al passaggio dalla modalità

utente alla modalità kernel per mezzo di un’istruzione speciale chiamata

trap.

Il codice relativo ai servizi del sistema operativo è eseguibile solo in kernel

mode per ragioni di sicurezza.

Una volta terminato il compito relativo alla particolare chiamata invocata, il

controllo ritorna al processo chiamante passando dal kernel mode alla user

mode.

Sono disponibili per il programmatore una serie di funzioni di libreria che

variano da circa 70 a oltre 200 a seconda della versione di UNIX.

POSIX che è una famiglia di standard definiti dall’IEEE (associazione

internazionale di scienziati con l’obiettivo della promozione delle scienze

tecnologiche)standardizza un nucleo base di queste system call (circa 120) a

livello di interfaccia per il linguaggio C. una

assegnano

invece di usare l’interno pathname. E’ un intero maggiore di zero.

A Lo standard input è un canale standard da cui giunge un flusso di dati in ingresso al programma. Il programma li trasferisce

effettuando operazioni di lettura. Il file descriptor ad esso associato è 0.

Lo standard output è un canale standard su cui un programma scrive i suoi dati in output. Il programma trasferisce i dati

effettuando operazioni di scrittura. Il file descriptor ad esso associato è 1.

Lo standard error è un canale standard di output tipicamente usato dai programmatori per i messaggi d’errore o di diagnostica.

È indipendente dal canale standard 1, ovvero quello di output e il file descriptor ad esso associato è 2.

I file standard vengono aperti dalla shell (terminale) del sistema operativo PUNTATORE A

CARATTERE

Serve per spostare il cursore alla fine del file. E’

utile quando si vuole effettuare una write per

scrivere senza cancellare ciò che c’è già scritto

nel file

Cancella tutto ciò che c’è scritto nel file e sposta quindi il cursore

O_TRUNC all’inizio del file

Un file può essere aperto più volte. In questo caso ad esso saranno associati più file descriptor contemporaneamente.

Set User ID: il Set UID è un tipo di permesso che se viene applicato ad un file eseguibile, indica che il file deve essere

eseguito con i permessi dell’utente proprietario del file, anzichè con quelli dell’utente che lo avvia.

Viene usato quindi per consentire ad utenti ordinari di eseguire programmi che richiedono particolari privilegi di sistema

di cui normalmente dispone solo l’amministratore.

Ritorna 0 in caso di successo e -1 in caso di errore

NOTA: quando un processo termina, tutti i file aperti da esso vengono automaticamente chiusi

1 carattere = 1 byte

Il primo parametro è il file descriptor

del file aperto da cui si vuole effettuare

la lettura.

Il secondo parametro è un array di

caratteri di dimensione prefissata.

Il terzo parametro indica il numero di Testo

byte da leggere dal file in base alla

posizione attuale del cursore nel file

(offset) (array di caratteri). (file)

Restituisce il numero di byte letti dal file partendo dalla posizione attuale del cursore nel file.

In caso di errore restituisce -1 Chiamare una read subito dopo una write, restituisce 0 perchè il

cursore nel file è all’ultima posizione quindi non legge niente dopo.

Bisogna usare la funzione lseek che sposterà il cursore in base ai

parametri che inseriamo.

Questa system call inizia

a scrivere da dove sta

posizionato attualmente il

cursore nel file. Il primo parametro è il file descriptor del file aperto e nel quale si vuole effettuare

la scrittura.

Il secondo parametro è un array di caratteri di dimensione prefissata che

all’interno in ogni casella tiene memorizzato un carattere.

Il terzo parametro indica il numero di byte da leggere dal buffer di caratteri (array

di caratteri) e da scrivere nel file.

Restituisce il numero di byte scritti nel file oppure restituisce -1 in caso di

errore.

Se non richiamo questa sistem call,

quando viene aperto un file, il cursore è

impostato di default all’inizio del file.Se

per caso dopo una open si vuole

scrivere con una write, le stringhe che

verranno scritte nel file verranno scritte

all’inizio del file, sovrascrivendo le prime

stringhe e lasciando inalterate le

restanti se sono presenti.

Restituisce la posizione del file attuale dopo l’effetto della system call. Restituisce -1 in caso di errore.

(cartelle)

DOVE VOGLIO CREARE LA CARTELLA

PERCORSO DOVE E' MEMORIZZATA QUESTA CARTELLA

Restituisce il nuovo file descriptor oppure restituisce -1 in caso di errore apetta prima

e poi procede con le prossimi istruzioni.

Restituisce il pid del processo terminato oppure -1 in caso di errore.

Quando il padre, si accorge che il figlio è terminato attraverso la wait(), il processo figlio zombie viene eliminato. Un processo

zombie occupa un insieme minimale di risorse. non il nome del file .c! Ma il nome del file eseguibile

.exe

In sostanza rimane inalterata l

Anteprima
Vedrai una selezione di 10 pagine su 329
Sistemi operativi (teoria completa + domande) Pag. 1 Sistemi operativi (teoria completa + domande) Pag. 2
Anteprima di 10 pagg. su 329.
Scarica il documento per vederlo tutto.
Sistemi operativi (teoria completa + domande) Pag. 6
Anteprima di 10 pagg. su 329.
Scarica il documento per vederlo tutto.
Sistemi operativi (teoria completa + domande) Pag. 11
Anteprima di 10 pagg. su 329.
Scarica il documento per vederlo tutto.
Sistemi operativi (teoria completa + domande) Pag. 16
Anteprima di 10 pagg. su 329.
Scarica il documento per vederlo tutto.
Sistemi operativi (teoria completa + domande) Pag. 21
Anteprima di 10 pagg. su 329.
Scarica il documento per vederlo tutto.
Sistemi operativi (teoria completa + domande) Pag. 26
Anteprima di 10 pagg. su 329.
Scarica il documento per vederlo tutto.
Sistemi operativi (teoria completa + domande) Pag. 31
Anteprima di 10 pagg. su 329.
Scarica il documento per vederlo tutto.
Sistemi operativi (teoria completa + domande) Pag. 36
Anteprima di 10 pagg. su 329.
Scarica il documento per vederlo tutto.
Sistemi operativi (teoria completa + domande) Pag. 41
1 su 329
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Piconsss di informazioni apprese con la frequenza delle lezioni di Sistemi operativi e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi della Campania "Luigi Vanvitelli" o del prof Aversa Rocco.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community