Elementi di Architettura e Sistemi Operativi



Похожие документы
Elementi di Architettura e Sistemi Operativi. problema punti massimi i tuoi punti problema 1 6 problema 2 7 problema 3 7 problema 4 10 totale 30

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Gestione dei File in C

4 3 4 = 4 x x x 10 0 aaa

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

Fasi di creazione di un programma

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Laboratorio di programmazione

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Algebra Di Boole. Definiamo ora che esiste un segnale avente valore opposto di quello assunto dalla variabile X.

Codifica: dal diagramma a blocchi al linguaggio C++

Introduzione al Linguaggio C

Sistema operativo: Gestione della memoria

Aritmetica dei Calcolatori 2

Gestione dei processi

2. I THREAD. 2.1 Introduzione

Funzioni in C. Violetta Lonati

SISTEMI DI NUMERAZIONE E CODICI

Introduzione alla programmazione in C

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

ARCHIVI E DATABASE (prof. Ivaldi Giuliano)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Operatori logici e porte logiche

La selezione binaria

Laboratorio di Architettura degli Elaboratori A.A. 2015/16 Circuiti Logici

ESEMPIO 1: eseguire il complemento a 10 di 765

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Programmazione multiprocesso

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

Algoritmi e strutture dati. Codici di Huffman

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

Appunti sulla Macchina di Turing. Macchina di Turing

Le system call: fork(), wait(), exit()

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

ALGEBRA DELLE PROPOSIZIONI

Matematica in laboratorio

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Testi di Esercizi e Quesiti 1

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

Aritmetica dei Calcolatori 1

Le stringhe. Le stringhe

Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix-

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

Esercitazione finale per il corso di Sistemi Operativi (A.A. 2004/2005)

Il descrittore di processo (PCB)

Introduzione al linguaggio C Gli array

Appunti di Sistemi Elettronici

Laboratorio di Architettura degli Elaboratori - A.A. 2012/13

Laurea Specialistica in Informatica

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 9 Settembre 2015

Architettura del calcolatore

Università degli Studi di Cassino Corso di Fondamenti di Informatica Codifica di dati e istruzioni. Anno Accademico 2010/2011 Francesco Tortorella

GESTIONE INFORMATICA DEI DATI AZIENDALI

Informazione analogica e digitale

BIT? Cosa c è dietro a questo nome? Che cos è il bit? Perché si usa? Come si converte un numero binario?

I sistemi di numerazione

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Alessandro Pellegrini

Lab. di Sistemi Operativi - Esercitazione n 9- -Thread-

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Descrizione di un algoritmo

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Identificare le diverse parti di una finestra: barra del titolo, barra dei menu, barra degli strumenti, barra di stato, barra di scorrimento.

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Informatica. Rappresentazione dei numeri Numerazione binaria

Parte 1. Vettori di bit - AA. 2012/13 1.1

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi:

Il linguaggio SQL: query innestate

Terza Esercitazione. Unix - Esercizio 1. Unix System Call Exec Java Introduzione Thread

Corso di Informatica

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)

puntatori Lab. Calc. AA 2007/08 1

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Capitolo 3 -- Silberschatz

I puntatori e l allocazione dinamica di memoria

SPECIFICHE E LIMITI DI EXCEL

Gestione della memoria centrale

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

Basi di dati 9 febbraio 2010 Compito A

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

Concetto di processo. Processi. Immagine in memoria di un processo. Stati di un processo. Un SO esegue una varietà di attività:

CREAZIONE PROCESSI IN UNIX 20

Транскрипт:

Elementi di Architettura e Sistemi Operativi Bioinformatica - Tiziano Villa 15 Giugno 2015 Nome e Cognome: Matricola: Posta elettronica: problema punti massimi i tuoi punti problema 1 4 problema 2 6 problema 3 5 problema 4 5 problema 5 10 totale 30 1

1. In molti sistemi di calcolo si possono produrre corse critiche (in inglese: race conditions). (a) Si descriva che cosa e una corsa critica. E una situazione in cui piu processi accedono e modificano i dati in modo concorrente e i risultati dipendono dall ordine degli accessi. Si veda la discussione nella Sez. 6.2 di SGG. 2

(b) Si consideri un sistema bancario con le due funzioni seguenti: deposita(importo) e preleva(importo). A queste due funzioni si passa l importo da depositare o prelevare da un conto bancario. Si supponga che ci sia un conto bancario con 2500 euro condiviso da una moglie e un marito e che concorrentemente il marito chiami la funzione preleva(500 euro) e la moglie chiami la funzione deposita(1000 euro). Si descriva come puo verificarsi una condizione di corsa critica nell esempio precedente e che cosa si dovrebbe fare per prevenirla. Alla fine delle operazioni l importo corretto sul conto dovrebbe essere di 2500 euro. Sia l operazione di deposito che quella di prelieveo si traducono in terne di operazioni elementari: lettura dell importo sul conto dalla memoria condivisa a un registro, aggiornamento dell importo in un registro. scrittura dell importo da un registro alla memoria condivisa. Dato che le tali operazioni elementari saranno eseguite sequenzialmente intercalate in un ordine qualsiasi potrebbe succedere che sia il marito che la moglie leggano l importo di 2500 euro, poi che il marito con il suo prelievo lo diminuisca localmente a 2000 euro, e la moglie lo aumenti localmente a 3500 euro; infine che prima la moglie aggiorni a 3500 euro l importo nella memoria condivisa, e poi il marito aggiorni a 2000 euro l importo nella memoria condivisa. L importo finale risultante di 2000 euro sarebbe sbagliato (e lo sarebbe anche nel caso simmetrico che fosse la moglie l ultima a scrivere 3500 euro). Per prevenire tale situazione bisogna istituire una sezione critica del blocco lettura-aggiornamento-scrittura e farvi accedere un solo utente per volta, in modo che se un utente inizia un operazione a partire da un certo importo sul conto, nessun altro utente che condivide il conto possa iniziare un altra operazione prima del termine della precedente. 3

2. Si consideri il seguente programma che crea processi invocando la chiamata di sistema fork. #include <sys/types.h> #include <stdio.h> #include <unistd.h> int main() { pid_t pid; /* crea mediante fork un processo figlio */ pid = fork(); if (pid < 0) { /* si e verificato un errore */ fprintf(stderr, "Fork fallita"); return 1; } else if (pid == 0) /* processo figlio */ execlp("/bin/ls", "ls", NULL); printf("line J"); } else { /* processo padre */ /* il padre attende che il figlio termini */ wait(null); printf("figlio completato")); } } return 0; 4

(a) Si spieghi la semantica della chiamata di sistema fork. Si analizzi il codice precedente spiegandone il funzionamento. La chiamata di sistema fork() crea un nuovo processo figlio che avra una copia dello spazio degl indirizzi del processo genitore. Entrambi i processi genitore e figlio continuano l esecuzione dall istruzione successiva alla chiamata di sistema fork(), con una differenza: la chiamata di sistema fork() restituisce il valore 0 nel processo figlio, ma restituisce l identificatore del processo figlio (il PID diverso da 0) nel processo genitore. Il processo genitore invocando la chiamata di sistema wait() si autorimuove dalla coda dei processi pronti fino alla terminazione del figlio. Quando il processo figlio termina, il processo genitore chiude la chiamata di sistema wait() e continua con il resto del codice. 5

(b) In quali circostanze si eseguira la linea di codice printf("line J")? Si argomenti la risposta. Nota per lo studente. La famiglia di funzioni exec rimpiazza l immagine del processo corrente con un nuovo processo specificato in argomento. Il processo figlio eseguira printf("line J") solo se la chiamata precedente di execlp fallisce. Se la execlp va a buon fine, essa sovrascrive l immagine in memoria del processo figlio con quella del programma ls, e quindi la printf("line J") non sara eseguita, in quanto non si tornera piu ad eseguire il codice del processo figlio. 6

3. Si consideri la seguente tabella delle pagine per un sistema con indirizzi virtuali e fisici a 12 cifre binarie con pagine di 256 byte. La lista delle pagine fisiche libere in memoria e D, E e F (D e in testa alla lista, E al secondo posto ed F e in coda). Pagina logica Pagina fisica 0-1 2 2 C 3 A 4-5 4 6 3 7-8 B 9 0 Si convertano i seguente indirizzi logici nei corrispondenti indirizzi fisici, in esadecimale. Il trattino nella colonna della pagina fisica indica che la pagina non e in memoria. (a) 9EF (b) 111 (c) 700 (d) 0FF Gl indirizzi logici e fisici sono costituiti da 12 cifre binarie, di cui le prime 4 indicano le pagine, e le ultime 8 indicano le parole in ogni pagina. In pratica, per convertire un indirizzo logico in uno fisico si sostituisce la cifra esadecimale piu significativa con quella indicata dalla tabella; se la tabella non specifica la traduzione (segno ), allora si alloca la prima pagina fisica libera. (a) 9EF 0EF (b) 111 211 (c) 700 D00 (d) 0F F EF F 7

4. Si consideri il seguente programma scritto nel linguaggio macchina LC-3. LD R0, Z LD R1, C L TRAP x21 ADD R1, R1, #-1 BRp L TRAP x25 Z.FILL x5a C.FILL #100 Si spieghi il funzionamento di tale programma. Traccia di soluzione Il programma scrive sul terminale il carattere Z per 100 volte. Il cuore del programma e un ciclo che ripete l uscita su schermo (T RAP x21) del carattere Z memorizzato nel registro R0. Tale ciclo e ripetuto 100 volte (decrementando il contenuto 100 del registro R1 fino a che cessa di essere positivo). T RAP x25 termina l esecuzione. 8

5. Si progetti un circuito combinatorio che realizza la seguente variabile binaria d uscita F in funzione delle variabili binarie d ingresso A, B, C, D, E: F = (AB) (C (D E)), dove e l operatore logico d implicazione. (a) Si scriva la tavola di verita dell operatore d implicazione logica. F X Y X Y F 0 0 1 0 1 1 1 0 0 1 1 1 Da cui X Y equivale a X + Y. 9

(b) Si scriva la tavola di verita della funzione F. Per semplicita si sostituisce nella F l implicazione con la sua disgiunzione equivalente (X Y equivale a X + Y ) ottenendosi F = A + B + C + D + E, che e sempre vero tranne quando A = B = C = D = 1, E = 0. 10

(c) Si minimizzi la rappresentazione a due livelli (somma di prodotti) della funzione F usando il metodo delle mappe di Karnaugh. F = A + B + C + D + E. 11

(d) Si realizzi il circuito combinatorio corrispondente con porte NAND. Si etichettino con chiarezza i segnali. Conviene rappresentare la negazione della negazione della funzione F. La negazione della funzione F si esprime naturalmente con una porta AND con gl ingressi A, B, C, D, E, e negata diventa una porta NAND. 12