Mappare file in memoria

Slides:



Advertisements
Presentazioni simili
Memoria Virtuale in Linux
Advertisements

File Linguaggio C.
Puntatori Linguaggio C.
Puntatori e gestione dinamica della RAM
Puntatori in C e C++.
Java Stream e File.
Java Stream e File. La classe File Per operare con lintero file java mette a disposizione la classe File Per utilizzare la classe File è necessario importare.
Programmazione con socket
File System Cos’è un File System File e Directory
SC che operano su processi
1 Directory Il formato delle directory varia nei vari FS utilizzati in ambito Unix Quando una directory viene aperta viene restituito un puntatore a un.
1 System Call per Comunicazione tra Processi Pipe.
SC che operano su file (1)
Realizzazione del file system
Interfaccia del file system
Realizzazione del file system
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 15 Maggio 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 9 Maggio 2012.
1 Il file system di Unix Caratteristiche generali dei FS comunemente usati da Unix/Linux.
Funzioni di Libreria per le stringhe DICHIARAZIONI CONTENUTE NEL FILE: char *strcpy( char *dest, const char *sorg ); Copia sorg in dest, incluso il carattere.
Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.
Esercizio: Copiare un file in un nuovo file mediante le funzioni read e write.
Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE.
1 File System ed Input/Output UNIX Implementazione del File System Caratteristiche del File System Unix/Linux System Call relative al File System Linput/output.
1 LINUX: struttura generale The layers of a UNIX system. User Interface.
I File.
Modulo 13: System call relative al File System
AN FI Array Array in Java. AN FI Array Dichiarazione di array in Java [ ]; //oppure u [] ; int a[]; int[] a; u La dimensione non è specificata.
GESTIONE DEI FILE Per poter mantenere disponibili i dati tra le diverse esecuzioni di un programma (persi-stenza dei dati) è necessario poterli archi-viare.
File ad accesso casuale o random
15 maggio 2002 Avvisi: Ultima lezione: mercoledì 29 maggio II Esonero: mercoledì 5 giugno, ora da stabilire.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
1 Gestione dei File. 2 Perché i file? Sono strutture dati persistenti Sono solitamente memorizzati sui dischi –Si usano dall'interno dei programmi Realizzano.
Unità Didattica 3 Linguaggio C
C. Gaibisso Programmazione di Calcolatori Lezione XVI Allocazione dinamica della memoria Programmazione di Calcolatori: allocazione dinamica della memoria.
1 Esempio di ADT e make Operazioni bit a bit su piu’ file.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
1 Il file system di Unix Caratteristiche generali dei FS comunemente usati da Unix/Linux.
Programmazione Web PHP e MySQL 1. 2Programmazione Web - PHP e MySQL Esempio: un blog.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
File binari Accesso a file con record di lunghezza costante Struct Persona { Int id; Char nome[50];// nome e cognome Double stipendio; }; Persona dipendente;
Politecnico di Milano © Domenico Barretta Processi concorrenti in Unix Docente Domenico Barretta Politecnico di Milano
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 21 Maggio 2014.
1 SC che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
1 Chiamate di sistema Introduzione Errori : perror() Chiamate che lavorano su file.
ALLOCAZIONE STATICA: LIMITI Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente –la loro esistenza deve essere prevista e.
1 Chiamate di sistema Chiamate che lavorano su file.
1 Gestione della Memoria Capitolo Introduzione alla gestione della memoria 4.2 Swapping 4.3 Memoria virtuale 4.4 Implementazione 4.5 Algoritmi di.
Il linguaggio C Puntatori e dintorni.
1 SC per IPC Pipe. 2 Pipe : file speciali utilizzati per connettere due processi con un canale di comunicazione Se B cerca di leggere da una pipe vuota.
1 Cenni di gestione della memoria Unix-Linux. 2 Organizzazione della Memoria Spazio logico dei processi A e B e memoria fisica Condivisione dell’area.
1 Chiamate di sistema Introduzione Errori : perror() Chiamate che lavorano su file.
Sistemi di elaborazione dell’informazione Modulo 4 - Tecniche di programmazione distribuita Unità didattica 1 -Socket library Ernesto Damiani Lezione 4.
1 System Call che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
1 1. Introduzione alla gestione della memoria 2. Swapping 3. Memoria virtuale 4. Implementazione 5. Algoritmi di sostituzione Gestione della Memoria.
1 System Call che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
Stringhe Una stringa è un vettore di char con un carattere costante \0 che indica la fine della stringa il terminatore rende differenti gli array di char.
Puntatori in C Un puntatore è una variabile che contiene un indirizzo di memoria. Quando una variabile contiene l’indirizzo di un’altra variabile, si dice.
Gianluca Costante & Alessio Scannapieco
Lezione 14 Tecniche di I/O Avanzate Obiettivi di apprendimento: A.Come lavorare con stream binari B.Lavorare con I datalog files C.Vantaggi e svantaggi.
Compitino di Sistemi Operativi corsi A -C 19 Maggio 2003.
Transcript della presentazione:

Mappare file in memoria mmap(), mmunmap()

Allocazione dei processi nella RAM Process A Process B Spazio logico dei processi A e B e memoria fisica Condivisione dell’area testo

Mapping e condivisione di File Two processes can share a mapped file. Un file mappato simultaneamente in due processi

Mappaggio file in mamoria: mmap void* mmap(void* start, size_t length, int prot, int flags, int fd, off_t offset) fd: descrittore file da mappare offset: inizio area fd da mappare in memoria length: lunghezza area da mappare in memoria start : indirizzo logico dal quale effettuare il mapping (tipicamente ignorato meglio passare NULL) prot/flags : maschere di bit che specificano condivisione e protezione dell’area mappata

Mappaggio file: mmap (2) void* mmap(void* start, size_t length, int prot,int flags, int fd, off_t offset) il valore restituito è l’indirizzo logico (iniziale) in cui il file è stato effettivamente mappato il valore restituito è MAP_FAILED se non si riesce a mappare il file (settando errno opportunamente)

Mappaggio file: mmap (3) prot : descrive la protezione dell’area mappata, si ottiene mettendo in OR un insieme di maschere predefinite. Es: PROT_WRITE : permesso di scrittura PROT_READ: permesso di lettura flags : se e con quali modalità l’area di memoria può essere condivisa da più processi, si ottiene mettendo in OR un insieme di maschere predefinite. Es: MAP_SHARED : si può condividere con tutti gli altri processi MAP_PRIVATE: crea una copia privata del processo, le scritture non modificano il file

Mappaggio file: mmap (4) ATTENZIONE: length deve essere un multiplo dell’ampiezza di pagina l’ampiezza della pagina (in byte) si ottiene con la fne standard #include <unistd.h> int getpagesize(void);

Mappaggio file: mmap (5) int fd, psize, esito; char* file; /* puntatore area mappata */ psize = getpagesize(); /* ampiezza pagina */ IFERROR(fd=open(“s.c”,O_RDWR), “aprendo s.c”); /* esito è -1 se la mmap() e’ fallita */ esito =(file = mmap(NULL, psize, \ PROT_READ|PROT_WRITE, MAP_SHARED, \ fd, 0) == MAP_FAILED )?-1:0; IFERROR(esito, “mappando s.c”); /* da qua accedo al file come un array */ putchar(file[10]);

S-mappaggio file: munmap() int munmap(void* start, size_t length); length: lunghezza area da s-mappare dalla memoria start : indirizzo logico dal quale effettuare lo smapping ritorna -1 se si è verificato un errore NB: la chiusura di un file NON elimina i mapping relativi al file che devono essere eliminati chiamando esplicitamente la munmap()

Mappaggio file: esempio ... IFERROR(fd=open(“s.c”,O_RDWR), “aprendo s.c”); esito =(file = mmap(NULL, psize, \ PROT_READ|PROT_WRITE, MAP_SHARED, \ fd, 0) == MAP_FAILED )?-1:0; IFERROR(esito, “mappando s.c”); IFERROR(close(fd), “chiudendo s.c”); /* da qua accedo al file come un array */ putchar(file[10]); … IFERROR(munmap(file,psize), “smappando s.c”);