Architettura dei calcolatori e sistemi operativi. M2 Organizzazione della memoria virtuale Struttura dello spazio virtuale kernel e utente
|
|
- Livia Rosi
- 7 anni fa
- Visualizzazioni
Transcript
1 Architettura dei calcolatori e sistemi operativi M2 Organizzazione della memoria virtuale Struttura dello spazio virtuale kernel e utente
2 Architettura Intel x64 Lo spazio di indirizzamento virtuale utilizzabile pari a 2 48 Byte 256 TByte suddiviso in due sottospazi di modo U ed S ambedue da 2 47 Byte 128 TByte FFF FFFF FFFF User Space 2 47 Byte 128 TByte FFFF FFFF FFFF FFFF FFFF Non-canonical area Kernel Space 2 47 Byte 128 TByte 2
3 Struttura della memoria virtuale del Sistema Operativo Indirizzi virtuali del Kernel (2 47 Byte) da FFFF a FFFF FFFF FFFF FFFF Lo spazio virtuale è suddiviso in 5 aree principali: codice e i dati del sistema operativo: 0,5 Gb (512 Mb) moduli a caricamento dinamico: 1,5 Gb dati dinamici del Kernel: 32 Tb mappatura della memoria fisica: 2 46 byte = 64 Terabyte, (per permettere al codice del Kernel di accedere direttamente a indirizzi fisici) mappatura della memoria virtuale: è un area utilizzata per ottimizzare particolari configurazioni discontinue della memoria, e non verrà trattata da noi tra queste aree esistono spazi non utilizzati e lasciati per usi futuri 3
4 Struttura della memoria virtuale del kernel Area Mappatura memoria fisica Memoria dinamica del kernel Mappatura della memoria virtuale Costanti simboliche per indirizzi iniziali Indirizzo iniziale PAGE_OFFSET ffff TB VMALLOC_START ffff c TB VMEMMAP_START ffff ea00.. 1TB Dimensioni Codice e dati _START_KERNEL_MAP ffff ffff ,5GB Area per caricare i moduli MODULES_VADDR ffff ffff a0.. 1,5GB 4
5 PAGE_OFFSET Accesso agli indirizzi fisici da parte del SO -1 il SO deve essere in grado di utilizzare direttamente gli indirizzi fisici, anche se, come tutto il Software, esso in esecuzione genera solo indirizzi virtuali Ad esempio: nella Tabella delle Pagine gli indirizzi sono fisici, perché vengono utilizzati direttamente dall Hardware nell accesso alla memoria per operare sulla TP (crearla e aggiornarla) il SO deve essere in grado di utilizzare indirizzi fisici (senza passare dalla conversione NPV-NPF) Questa funzionalità è realizzata nel modo seguente: una parte dello spazio virtuale del SO è dedicato alla mappatura 1:1 della memoria fisica. Questo significa che gli indirizzi virtuali associati a tale area vengono tradotti (quasi) 1:1 in indirizzi fisici e viceversa l indirizzo iniziale di tale area virtuale è definito dalla costante PAGE_OFFSET, il cui valore varia nelle diverse architetture 5
6 PAGE_OFFSET Accesso agli indirizzi fisici da parte del SO -2 la dimensione massima dell area virtuale di mappatura è attualmente di 64TB la dimensione effettiva dell area virtuale di mappatura dipende dalla memoria fisica effettivamente installata. Ad esempio se è installata una memoria fisica di 2MB l indirizzo virtuale iniziale dell area di mappatura è pari a PAGE_OFFSET (0x FFFF ) e corrisponde all indirizzo fisico 0 l indirizzo virtuale finale dell area di mappatura è pari a PAGE_OFFSET (0x FFFF ) + 0x F FFFF e corrisponde all indirizzo fisico 2M - 1 per indirizzi virtuali compresi tra questi due valori l operazione di traduzione è la seguente indirizzo fisico = indirizzo virtuale - PAGE_OFFSET indirizzo virtuale = indirizzo fisico + PAGE_OFFSET 6
7 Mem Virt del SO Mappatura della memoria fisica Ind virtuali ffff NPV = (0 + PAGE_OFFSET) Ind fisico pag. 0 Mem. Fisica NPV = (K + PAGE_OFFSET) pag. K L indirizzo virtuale viene tradotto immediatamente in indirizzo fisico e viceversa 7
8 Mappatura virtuale/fisica degli indirizzi Nel codice del SO esistono funzioni che eseguono la conversione tra indirizzi fisici e virtuali dell area di rimappatura con gli opportuni controlli. Ad esempio, la funzione unsigned long phys_addr(unsigned long x) esegue una serie di controlli e se tutto va bene restituisce x PAGE_OFFSET, dove x è l indirizzo virtuale Ad esempio, gli indirizzi virtuali limite della spila (8 K) di un processo sono 0xFFFF C xFFFF C Confrontandoli con la mappa del SO vediamo che tali indirizzi si trovano nell area di mappatura fisica del nucleo Le aree di spila dei processi sono allocate dinamicamente dal SO e il loro indirizzo fisico viene ottenuto al momento di tale allocazione, tramite l opportuna funzione di allocazione l indirizzo fisico viene trasformato in un indirizzo virtuale dell area di mappatura della memoria fisica e memorizzato nel descrittore del processo: in questo modo può essere utilizzato dal sistema 8
9 Struttura della memoria virtuale dei processi La memoria virtuale di un processo LINUX è suddivisa in un certo numero di aree di memoria virtuale (virtual memory area) per differenziare le diverse parti del programma eseguibile Possibilità di differenziare diritti di accesso Possibilità di crescita di alcune aree (es heap, pila) Possibilità di condividere alcune pagine tra processi Ogni area di memoria virtuale è caratterizzata da una coppia di indirizzi virtuali di pagina che ne definiscono l inizio e la fine: NPV iniziale, NPV finale 9
10 Aree di memoria virtuale Codice: istruzioni del programma da eseguire Dati statici: dati allocati per tutta la durata di un programma Dati dinamici: dati allocati dinamicamente su richiesta del programma (in C, heap allocata tramite malloc); il limite corrente di quest area è indicato dalla variabile BRK contenuta nel descrittore del processo Memoria condivisa: area dati di un processo che può essere acceduta anche da altri processi in base a regole definite dai meccanismi di comunicazione tra processi tramite condivisione della memoria. Librerie dinamiche (shared libraries o dynamic linked libreries): sono librerie non incorporate staticamente nel programma eseguibile dal linker ma vengono caricate in memoria durante l esecuzione del programma in base alle esigenze. Possono essere condivise tra diversi programmi. Pila: area di pila di modo U del processo, che contiene tutte le variabili ad allocazione automatica delle funzioni di un programma C 10
11 Aree della memoria virtuale del processo Indirizzi dell eseguibile: codice inizia 0x dati iniziano 0x Le pile per i thread vengono create in un area che inizia all indirizzo 7F7F FFFF FFFF e cresce verso indirizzi bassi 11
12 Crescita delle aree dinamiche La pila cresce automaticamente La memoria dati dinamica (heap) cresce su richiesta del programma malloc( ) richiede al SO l allocazione di nuovo spazio tramite servizio di sistema brk( ) o sbrk( ) brk( ) e sbrk( ) sono due funzioni di libreria che invocano in forma diversa lo stesso servizio *void sbrk(int incremento) incrementa l area dati dinamici del valore incremento restituisce un puntatore alla posizione iniziale della nuova area sbrk(0) restituisce il valore corrente della cima dell area dinamica. modifica l indirizzo massimo del segmento dati dinamici, arrotondandolo ad un limite di pagina e controllando che la crescita dei dati non si avvicini troppo alla pila 12
13 Un programma per esplorare gli indirizzi virtuali #include <stdio.h> int Global[10]; int main(argc, argv) { void f( ); int Local[10]; void *Brk; extern char **environ; Brk=sbrk(0); printf( "indirizzo esadecimale environ: 0x%16.16lx\n",environ); printf( "indirizzo esadecimale Local: 0x%16.16lx\n",Local); printf( "indirizzo esadecimale Global: 0x%16.16lx\n",Global); printf( "indirizzo esadecimale f: 0x%16.16lx\n",f); printf( "indirizzo esadecimale main: 0x%16.16lx\n",main); printf( "indirizzo esadecimale printf: 0x%16.16lx\n",printf); printf( "indirizzo esadecimale Brk: 0x%16.16lx\n",Brk); Brk=sbrk(4096); Brk=sbrk(0); printf( "Brk dopo l'incremento: 0x%16.16lx\n",Brk); } void f( ){ } 13
14 Risultati dell esecuzione del programma indirizzo esadecimale environ: 0x00007fff5 eabb 6c8 indirizzo esadecimale Local: 0x00007fff5 eabb 5a0 indirizzo esadecimale Global: 0x indirizzo esadecimale f: 0x d6 indirizzo esadecimale main: 0x c4 indirizzo esadecimale printf: 0x b0 indirizzo esadecimale Brk: 0x ef 000 Brk dopo l'incremento: 0x f
15 La struct che descrive un area virtuale 15
16 Aree virtuali: descrittore della memoria 16
17 17
18 Fork e gestione della memoria fork ( ) non viene allocata memoria fisica e tutte le pagine sono condivise tranne quella di pila, che contiene il valore restituito da fork (PID figlio o 0) all atto di una scrittura in memoria da parte di uno dei due processi, la pagina scritta viene effettivamente allocata (copy on write) per sapere di dover allocare tali pagine si usa il metodo seguente le pagine dati vengono inizialmente poste con diritto di accesso in sola lettura, in modo da causare un interrupt al primo accesso in scrittura il SO scopre che la pagina appartiene a un area abilitata in scrittura e capisce quindi di doverla caricare l unica pagina che viene duplicata fisicamente è quella contenente il valore restituito dalla fork la pagina fisica originale contenente il pid è attribuita al processo figlio per il processo padre viene allocata una pagina fisica nuova 18
19 Memoria subito dopo fork Processo PADRE MEMORIA FISICA Processo FIGLIO pag. del PID (vecchia) pag. del PID pag. del PID (nuova) pag. del PID 19
20 Dopo che il processo padre ha modificato una pagina Processo PADRE MEMORIA FISICA Processo FIGLIO pag. del PID (vecchia) pag. del PID pag. del PID (nuova) pag. modificata pag. del PID 20
21 Exec e gestione memoria exec ( ) L esecuzione della exec pone a NON VALIDO tutte le pagine relative a codice e dati del processo Tramite la tecnica di Demand Paging vengono caricate le pagine di codice e dati del programma lanciato in esecuzione 21
22 Azioni del SO in caso di Interrupt nell accesso a una pagina virtuale V se la pagina V appartiene allo spazio di indirizzamento virtuale del processo, LINUX verifica i diritti di accesso: se l accesso è legittimo, viene invocata la routine swap_in di caricamento della pagina da disco in memoria centrale (pagina non residente); se l accesso non è legittimo: se la violazione è dovuta a una pagina posta come sola lettura in seguito a una fork, ma appartenente ad un area virtuale sulla quale la scrittura è ammessa, viene creata una nuova copia della pagina con l indicazione di scrittura abilitata altrimenti il programma viene fatto terminare 22
23 Azioni del SO in caso di Interrupt nell accesso a una pagina V - continua se la pagina V non appartiene allo spazio di indirizzamento virtuale del processo: se si tratta di crescita della pila (la pagina V+1 contiene l indicatore growsdown), una nuova pagina viene allocata per la pila; altrimenti il programma viene fatto terminare. Alcune di queste azioni richiedono di allocare una nuova pagina; Se l allocazione di una nuova pagina riduce il numero di pagine libere sotto una soglia minima, LINUX invoca la funzione try_to_free_pages del PFRA (Page Frame Reclaiming Algorithm) per scaricare alcune pagine su disco (argomento trattato più avanti) 23
Giuseppe Pelagatti. Programmazione e Struttura del sistema operativo Linux
Giuseppe Pelagatti Programmazione e Struttura del sistema operativo Linux Appunti del corso di Architettura dei Calcolatori e Sistemi Operativi (AXO) Parte M: La gestione della Memoria cap. M2 Organizzazione
DettagliMemoria Virtuale. Alessandro A. Nacci ACSO 2014/2014
Memoria Virtuale Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014 1 2 Algoritmo LRU! Buone prestazioni in media! Utilizza bit di controllo che riportano le informazioni sugli accessi alle
DettagliACSO Programmazione di Sistema e Concorrente
ACSO Programmazione di Sistema e Concorrente P2 Modello Thread 2/12/2015 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio di informazione) necessario tra attività
DettagliStruttura interna del Sistema Operativo. 3. La gestione della memoria virtuale
Struttura interna del Sistema Operativo 3. La gestione della memoria virtuale Il concetto di memoria virtuale Separare il concetto di spazio di indirizzamento di un programma eseguibile e dimensione effettiva
DettagliIl concetto di memoria virtuale. Struttura interna del Sistema Operativo. Memoria virtuale: indirizzi virtuali. Codifica Esadecimale
Il concetto di memoria virtuale Struttura interna del Sistema Operativo 3. La gestione della memoria virtuale 25 marzo 2004 Separare il concetto di spazio di indirizzamento di un programma eseguibile e
DettagliSystem call per la gestione di processi
System call per la gestione di processi Chiamate di sistema per creazione di processi: fork() sostituzione di codice e dati: exec...() terminazione: exit() sospensione in attesa della terminazione di figli:
DettagliGestione della Memoria
Gestione della Memoria Informatica B Il modello della memoria 2 E un modello lineare La memoria è una sequenza di celle numerate da 0 fino a un valore massimo M Il numero che identifica ogni cella è detto
Dettagliil tipo di parallelismo dipende dal grado di cooperazione
Thread Settembre 2009 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio d informazione) necessario tra attività svolte in parallelo processo macchina virtuale
Dettagli7. GESTIONE DELLA MEMORIA. 1. Introduzione
7. GESTIONE DELLA MEMORIA 1. Introduzione Indirizzi, dimensioni, spazio di indirizzamento Il modello usuale di una memoria è lineare; in tale modello la memoria è costituita da una sequenza di parole o
DettagliSpazio di indirizzamento virtuale
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 016-01 Spazio di indirizzamento virtuale Pietro Di Lena - pietro.dilena@unibo.it // The function name says it all int stack_overflow (){
DettagliLa gestione della memoria dinamica Heap
Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Prof. Luigi Lamberti 2005 Cenni sui Processi Un Programma è un insieme di Istruzioni memorizzato in un file con le costanti
DettagliAXO. Operativi. Architettura dei Calcolatori e Sistemi. memoria virtuale
AXO Architettura dei Calcolatori e Sistemi Operativi memoria virtuale concetto di memoria virtuale Separare il concetto di: spazio di indirizzamento di un programma eseguibile e dimensione effettiva della
Dettagli2. Nucleo del sistema operativo (la gestione dei processi)
Struttura interna del sistema operativo Linux 2. Nucleo del sistema operativo (la gestione dei processi) Architettura (struttura) del sistema operativo shell Programmi utente Modo utente Interfaccia delle
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
Dettagli5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche
Device driver - gestori delle periferiche Struttura interna del sistema operativo Linux Sono moduli software che realizzano l interfacciamento e la gestione dei dispositivi periferici Interagiscono con
DettagliSistemi Operativi Il Sistema Operativo Windows (parte 2)
Sistemi Operativi Il Sistema Operativo Windows (parte 2) Docente: Claudio E. Palazzi cpalazzi@math.unipd.it Crediti per queste slides al Prof. Tullio Vardanega Gestione della memoria 1 Ogni processo dispone
DettagliOrganizzazione di un SO monolitico
Organizzazione di un SO monolitico Applicazioni Interprete di comandi (shell) Interfaccia grafica (desktop) Gestore del Gestore delle processore / Gestore della periferiche/ Scheduler(s) memoria dispositivi
DettagliProcessi Concetti di base. Esecuzione parallela e sequenziale Il concetto di processo Gestione dei processi
Processi Concetti di base Esecuzione parallela e sequenziale Il concetto di processo Gestione dei processi Esecuzione sequenziale I sistemi di calcolo più semplici consentono unicamente l'esecuzione sequenziale
DettagliI Processi nel Sistema Operativo Unix. Gerarchie di processi Unix. Stati di un processo Unix. Stati di un processo Unix.
I Processi nel Sistema Operativo Unix Processi Unix Unix è un sistema operativo multiprogrammato a divisione di tempo: l unità di computazione è il processo. Caratteristiche del processo Unix: processo
DettagliProcessi - II. Franco Maria Nardini
Processi - II Franco Maria Nardini Processi Programmi in esecuzione in memoria sono chiamati processi. Caricati in memoria da una delle sei funzioni exec(3). Ogni processo ha un identificatore univoco
DettagliStrutture Dati Dinamiche
Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti
DettagliGestione della memoria centrale. Marco Cesati. Schema della lezione. Memoria centrale. Linux su Intel IA-32 SO Gestione della memoria centrale
Di cosa parliamo in questa lezione? Lezione 7 La gestione della Sistemi operativi 1 Schemi di indirizzamento della 2 La segmentazione 3 La paginazione 9 maggio 2017 4 System Programming Research Group
DettagliHEX Bin HEX Bin HEX Bin HEX Bin 0 0000 4 0100 8 1000 C 1100 1 0001 5 0101 9 1001 D 1101 2 0010 6 0110 A 1010 E 1110 3 0011 7 0111 B 1011 F 1111
Struttura interna del Sistema Operativo CAP. 7. La gestione della memoria virtuale Il concetto di memoria virtuale Il concetto di memoria virtuale nasce dalla necessità di separare il concetto di spazio
DettagliGestione della memoria
Gestione della memoria Gestione della memoria In un sistema multiprogrammato il numero di processi è > del numero di processori, ciò implica: unità di elaborazione virtuale memoria virtuale Un gestore
DettagliAllocazione dinamica della memoria
Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori
DettagliOgni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
DettagliDove siamo. Gestione della Memoria (1) Dove siamo. Dove siamo. Operating Systems and Distributed Systems. Operating Systems and Distributed Systems
Dove siamo Gestione della Memoria (1) Dove siamo Dove siamo Gestione della memoria (vista utente) exec() shmalloc() sbrk() getrlimit() File Mgr UNIX Device Mgr Mgr Mgr Application Program Hardware Alloc()
DettagliVariabili dinamiche. Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free
Variabili dinamiche Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free 1 Tipi di variabili in C In C è possibile classificare le variabili in
DettagliPuntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata
Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione
DettagliI Processi nel SO UNIX
I Processi nel SO UNIX 1 Processi UNIX UNIX è un sistema operativo multiprogrammato a divisione di tempo: unità di computazione è il processo Caratteristiche del processo UNIX: processo pesante con codice
DettagliStruttura interna del sistema operativo Linux
Struttura interna del sistema operativo Linux 5. I device driver A cura di: Anna Antola Giuseppe Pozzi DEI, Politecnico di Milano anna.antola/giuseppe.pozzi@polimi.it -versione del 30 marzo 2004-1-04.-04
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Pietro Frasca Lezione 20 Martedì 16-12-2014 1 System call per la gestione dei processi Creazione
Dettagli2. Nucleo del sistema operativo (la gestione dei processi)
Architettura del sistema operativo Struttura interna del sistema operativo Linux shell Programmi utente Modo utente 2. Nucleo del sistema operativo (la gestione dei processi) - 31 marzo 2008 - Interfaccia
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 10 Giovedì 7-11-2013 1 Gestione della memoria La memoria principale è
DettagliIl Sistema Operativo. Informatica Sistema Operativo 1
Il Sistema Operativo Informatica Sistema Operativo 1 O.S.:.: un intermediario SW Applicativo Sistema Operativo HW Informatica Sistema Operativo 2 O.S. vs applicativi Applicativi accesso a un insieme ridotto
Dettaglieseguire comandi dati dall'utente, utilizzando una macchina reale, di livello inferiore,
La programmazione di sistema Introduzione ai sistemi operativi multiprocesso Primitive per la gestione dei processi http://home.dei.polimi.it/silvano/acso.htm Il sistema ste operativo Il Sistema Operativo
DettagliGiuseppe Pelagatti. Programmazione e Struttura del sistema operativo Linux
Giuseppe Pelagatti Programmazione e Struttura del sistema operativo Linux Appunti del corso di Architettura dei Calcolatori e Sistemi Operativi (AXO) Parte M: La gestione della Memoria cap. M1 Memoria
DettagliSistemi operativi e distribuiti
Sistemi operativi e distribuiti La memoria Indirizzi fisici e indirizzi logici Importante separazione di concetti Ci permette di separare la parte software da la parte hardware Indirizzo logico (o virtuale):
DettagliINTERPROCESS COMMUNICATION 27
INTERPROCESS COMMUNICATION 27 - Le comunicazioni tra processi (IPC, Intreprocess Communication) sono realizzate mediante strutture dati rese disponibili dal kernel. Sono disponibili 3 tipologie di comunicazioni
DettagliUnità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.
Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;
DettagliPrimi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
DettagliCAP9. Device drivers
Struttura interna del sistema operativo Linux CAP9. Device drivers Device drivers Gestori di periferiche Sono moduli software che realizzano l interfacciamento e la gestione dei dispositivi periferici
DettagliGestione della memoria. Introduzione Swapping Allocazione contigua Paginazione
Gestione della memoria Introduzione Swapping Allocazione contigua Paginazione Introduzione In un sistema monoprogrammato la memoria centrale è divisa in due parti: una per il sistema operativo, l altra
DettagliLa Gestione della Memoria. Carla Binucci e Walter Didimo
La Gestione della Memoria Carla Binucci e Walter Didimo Esecuzione di programmi Java L esecuzione di un programma Java richiede: la compilazione del codice Java in bytecode Java (un linguaggio macchina
Dettagli1. PARALLELISMO E PROCESSI. 1.1 La necessità del parallelismo
1. PARALLELISMO E PROCESSI 1.1 La necessità del parallelismo Un programma eseguibile, generato ad esempio da un programma C, è rigorosamente sequenziale, nel senso che viene eseguito una istruzione alla
DettagliLezione 8. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata.
Lezione 8 Sistemi operativi 11 maggio 2017 System Programming Research Group Università degli Studi di Roma Tor Vergata SO 17 8.1 Di cosa parliamo in questa lezione? Allocazione e rilascio delle pagine
DettagliGiuseppe Pelagatti. Programmazione e Struttura del sistema operativo Linux
Giuseppe Pelagatti Programmazione e Struttura del sistema operativo Linux Appunti del corso di Architettura dei Calcolatori e Sistemi Operativi (AXO) Parte N: Il Nucleo del Sistema Operativo cap. N2 Meccanismi
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2017-18 Pietro Frasca Lezione 9 Giovedì 2-11-2017 Comunicazione con pipe Oltre che con la memoria condivisa
DettagliFile: definizione. Il file è la più piccola unità logica manipolabie Un file è caratterizzato principalmente da:
File System File: definizione Il file è la più piccola unità logica manipolabie Un file è caratterizzato principalmente da: Dimensione Posizione Accessibilità (solo lettura, lettura e scrittura) Tipo (estensione)
DettagliUniversità degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Allocazione dinamica di memoria
di Cassino e del Lazio Meridionale Corso di Informatica Allocazione dinamica di memoria Anno Accademico 2015/2016 Francesco Tortorella Allocazione dinamica di memoria Finora abbiamo considerato variabili
DettagliSistemi di Calcolo (A.A ) Corso di Laurea in Ingegneria Informatica e Automatica Sapienza Università di Roma
Sistemi di alcolo (.. 2014-2015) orso di Laurea in Ingegneria Informatica e utomatica Sapienza Università di Roma Esercizi riepilogativi sulla seconda parte del Modulo I Memoria virtuale omanda 1 La memoria
DettagliCalcolatori Elettronici Lezione A4 Programmazione a Moduli
Calcolatori Elettronici Lezione A4 Programmazione a Moduli Ing. Gestionale e delle Telecomunicazioni A.A. 2007/08 Gabriele Cecchetti Sommario Programmazione a moduli Programmi con linguaggi misti Tempo
DettagliGestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.
DettagliGestione della memoria
Gestione della memoria centrale Gestione della memoria Concetti generali. Swapping. Allocazione contigua di memoria. Paginazione. Segmentazione. Segmentazione con paginazione. Esempio: Pentium Intel Background
DettagliAXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema
AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel
DettagliFondamenti di Informatica T. Linguaggio C: i puntatori
Linguaggio C: i puntatori Il puntatore E` un tipo di dato, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un insieme
DettagliSistema Operativo - Gestione della Memoria per moderne CPU. Address Binding Dinamico in esecuzione mediante Segmentazione, Paginazione e Memoria
Sistema Operativo - Gestione della Memoria per moderne CPU. Address Binding Dinamico in esecuzione mediante Segmentazione, Paginazione e Memoria Virtuale (Swap su Disco Lista Argomenti Concetto di Address
DettagliAllocazione Dinamica della Memoria
Allocazione Dinamica della Memoria Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Allocazione Dinamica della Memoria 1 / 10 Scelta delle variabili Quando
DettagliArchitettura dei calcolatori e sistemi operativi. Il Nucleo del Sistema Operativo. N4 I servizi di Sistema
Architettura dei calcolatori e sistemi operativi Il Nucleo del Sistema Operativo N4 I servizi di Sistema 04.01.2016 Avviamento, inizializzazione e interprete comandi Al momento dell avviamento (bootstrap)
DettagliI Processi nel Sistema Operativo Unix
I Processi nel Sistema Operativo Unix Processi Unix Unix è un sistema operativo multiprogrammato a divisione di tempo: l unità di computazione è il processo. Caratteristiche del processo Unix: processo
Dettagli! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente
! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente!!la loro esistenza deve essere prevista e dichiarata a priori! Questo può rappresentare un problema soprattutto per variabili
DettagliConsideriamo un vettore allocato dinamicamente
Libreria per per la la gestione/manipolazione dei dei vettori Consideriamo un vettore allocato dinamicamente int * v; v = (int *) malloc (n * sizeof (int) ); Conversione di tipo da void * a int * Numero
DettagliLe procedure. L insieme delle istruzioni (4) Prima della chiamata di una procedura. Le procedure (2) Architetture dei Calcolatori (lettere A-I)
Le procedure L insieme delle istruzioni (4) Architetture dei Calcolatori (lettere A-I) In ogni linguaggio di programmazione si struttura il proprio codice usando procedure (funzioni, metodi, ) L utilizzo
DettagliStringhe e allocazione dinamica della memoria
Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per
DettagliSystem Calls per la Gestione dei Processi
System Calls per la Gestione dei Processi Domenico Cotroneo Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II Roadmap Process Context Identificativi getpid() getppid()
DettagliIntroduzione al C. Unità Gestione Dinamica della Memoria
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità Gestione Dinamica della Memoria D. Bloisi, A. Pennisi, S. Peluso, S. Salza Gestione
DettagliGestione dei sottoprogrammi. temporaneo passaggio del controllo dal programma in esecuzione ad un sottoprogramma
Gestione dei sottoprogrammi temporaneo passaggio del controllo dal programma in esecuzione ad un sottoprogramma programma CALL sottoprogramma RETURN Subroutine linkage CALL: viene salvato l indirizzo di
DettagliIntroduzione al Multithreading
Introduzione al Multithreading Claudia Calidonna Istituto di di Cibernetica C.N.R. Argomenti principali Parleremo di : Processi & Threads Operazioni sui threads ed eventuali confronti tra operazioni sui
DettagliI Processi nel SO UNIX
I Processi nel SO UNIX Processi UNIX UNIX è un sistema operativo multiprogrammato a divisione di tempo: unità di computazione è il processo Caratteristiche del processo UNIX: processo pesante con codice
DettagliScope, Memoria e Tabella dei Simboli
Scope, Memoria e Tabella dei Simboli La tabella dei simboli è uno strumento fondamentale attraverso il quale interpreti e compilatori implementano la traduzione da un programma scritto in un linguaggio
DettagliSistemi Operativi. Il file system Casi di studio. Sistemi Operativi. Corso di laurea in Informatica. AA 2002/03 Bruschi, Rosti
Il file system Casi di studio 1 CP/M Control Program for Microcomputer Predecessore del MS-DOS Dimensione media 16K File system predisposto per Floppy Allocazione dei file come lista-linkata di blocchi
DettagliGESTIONE DELLA MEMORIA CENTRALE
GESTIONE DELLA MEMORIA CENTRALE E MEMORIA VIRTUALE 7.1 Gestione della memoria Segmentazione Segmentazione con paginazione Memoria Virtuale Paginazione su richiesta Sostituzione delle pagine Trashing Esempi:
DettagliJAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) {
JAVA C import javautil*; public static class test { private int variable; public void main (String[] args) { variable = 0; Systemoutprintln( Variable is: + variable); #include int variable; int
DettagliCorso di Informatica
Corso di Informatica Modulo T4 3-Gestione della memoria 1 Prerequisiti Rilocazione dinamica Spazio degli indirizzi Descrittore di processo Descrittore della memoria 2 1 Introduzione Una volta conosciute
DettagliLaboratorio di Sistemi Operativi Marzo-Giugno 2008 matricole congrue 0 mod 3
Marzo-Giugno 2008 matricole congrue 0 mod 3 Controllo dei processi - I Controllo dei processi Creazione di nuovi processi Esecuzione di programmi Processo di terminazione Altro 2 1 Identificatori di processi
DettagliL apertura di un file ci restituisce un puntatore a una struttura chiamata FILE fopen:
I FILE L apertura di un file ci restituisce un puntatore a una struttura chiamata FILE FILE *mfptr = NULL; mfptr = fopen( nome_del_file.txt, w ); fopen: primo argomento: nome del file secondo argomento:
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 5 Martedì 25-10-2016 Definizione di processo Esiste una distinzione concettuale
DettagliUnità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.
Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti
DettagliIl file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.
Il File System Il file system È quella parte del Sistema Operativo che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa. Realizza i concetti
DettagliI processi: concetti di base, context switch e scheduling
Corso di laurea in Ingegneria dell Informazione Indirizzo Informatica Reti e sistemi operativi I processi: concetti di base, context switch e scheduling Processo: definizione Processo (o Job): Entità attiva
DettagliControllo dei Processi 1
Controllo dei Processi 1 I processi Nei sistemi Unix/Linux ogni processo ne può generare altri. Il processo che li genera è detto processo padre (parent process), mentre i processi generati sono detti
DettagliIl puntatore. Il puntatore
Il puntatore È un tipo scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Il dominio di una variabile di tipo puntatore è un insieme di indirizzi: Il valore di una
DettagliIl file È un insieme di informazioni: programmi. Il File System. Il file system
Il File System Il file È un insieme di informazioni: programmi d a t i testi rappresentati come insieme di record logici (bit, byte, linee, record, etc.) Ogni file è individuato da (almeno) un nome simbolico
DettagliC: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
DettagliRIASSUNTO DELLE NOTAZIONI E DELLE REGOLE DELLO SCHEDULER CFS
RIASSUNTO DELLE NOTAZIONI E DELLE REGOLE DELLO SCHEDULER CFS Parametri SYSCTL (gestiti da admin) LT: latenza (default 6 ms) GR: granularità (default 0,75 ms) WGR: granularità di wake_up (default 1 ms)
DettagliLezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario
Lezione 2 Principi Fondamentali di SO Interrupt e Caching Sommario Operazioni di un SO: principi fondamentali Una visione schematica di un calcolatore Interazione tra SO, Computer e Programmi Utente 1
DettagliUniversità degli Studi di Cassino
Corso di Gestione dei sottoprogrammi Anno Accademico 2007/2008 Francesco Tortorella Gestione dei sottoprogrammi temporaneo passaggio del controllo dal programma in esecuzione ad un sottoprogramma programma
DettagliInoltre, in una grandissima parte dei casi si vuole. programmi simultaneamente attivi
Principi di architetture dei calcolatori: la memoria virtuale Mariagiovanna Sami IL PROBLEMA DELLA MEMORIA Introduzione della cache: porta a vedere una memoria più veloce non fa nulla per l esigenza di
DettagliAllocazione dinamica della memoria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Tipi di memoria dati Nella macchina astratta C esistono tre tipi di memoria per allocare
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 20 Giovedì 22-12-2016 Comunicazione: pipe In Unix, processi possono comunicare
DettagliOperazioni su file di caratteri
Operazioni su file di caratteri Apertura fopen Chiusura fclose Scrittura fprintf Lettura fscanf Controllo fine file feof Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Apertura di un file: Si
DettagliPuntatori. Unità 6. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
DettagliUniversità degli Studi di Cassino e del Lazio Meridionale
di Cassino e del Lazio Meridionale Corso di Gestione dei sottoprogrammi Anno Accademico Francesco Tortorella Gestione dei sottoprogrammi temporaneo passaggio del controllo dal programma in esecuzione ad
DettagliGESTIONE DELLA MEMORIA CENTRALE 6.1 D. - UNICAL
GESTIONE DELLA MEMORIA CENTRALE 6.1 Gestione della Memoria Background Spazio di indirizzi Swapping Allocazione Contigua Paginazione 6.2 Background Per essere eseguito un programma deve trovarsi (almeno
DettagliDescrivere i vantaggi di un sistema a memoria virtuale
Descrivere i vantaggi di un sistema a memoria virtuale Concetti fondamentali! Paginazione su richiesta (Demand paging)! Algoritmi di sostituzione delle pagine! Algoritmi di allocazione dei frame! Il problema
DettagliProf.Ing.S.Cavalieri Puntatori e Heap in Linguaggio C. Puntatori e Heap
Puntatori e Heap 1.Cosa Sono i Puntatori? I puntatori sono fondamentalmente delle variabili, come quelle intere, reali e carattere. Tuttavia, l unica differenza consiste nel fatto che essi non contengono
DettagliPuntatori. Unità 6. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliApplicando lo stesso meccanismo al tipo puntatore, possiamo dichiarare un array di puntatori:
Le tabelle In C, dato un tipo di variabile, è possibile costruire un array di variabili di tale tipo usando la dichiarazione (facendo l esempio per il tipo float): float vettore[100]; Applicando lo stesso
DettagliAddendum alle chiamate di sistema per la gestione processi. E Mumolo
Addendum alle chiamate di sistema per la gestione processi E Mumolo Definiamo un processo proc.c che scrive l'argomento passato in linea: void main(int argc, char *argv[]){ printf("sono il processo %s\n",
Dettagli