the process address space joão victor pap almeida sistemas operacionais – prof: vitor coppe...

21
The Process The Process Address Space Address Space João Victor Pap Almeida João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor Sistemas Operacionais – Prof: Vitor COPPE Sistemas COPPE Sistemas [email protected] [email protected]

Upload: joao-victor-azambuja-amarante

Post on 07-Apr-2016

216 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br

The Process Address The Process Address SpaceSpace

João Victor Pap AlmeidaJoão Victor Pap AlmeidaSistemas Operacionais – Prof: VitorSistemas Operacionais – Prof: Vitor

COPPE SistemasCOPPE [email protected]@cos.ufrj.br

Page 2: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br

The Process Address SpaceThe Process Address Space

Consiste de um “limite linear de Consiste de um “limite linear de endereços” presentes para cada endereços” presentes para cada processo.processo.Sistemas Operacionais modernos Sistemas Operacionais modernos geralmente usam um modelo de flat geralmente usam um modelo de flat memory e não um modelo segmentado.memory e não um modelo segmentado.Áreas de memória possuem permissões Áreas de memória possuem permissões associadas.associadas.Erro: “Falha de segmentação”Erro: “Falha de segmentação”

Page 3: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br

Memory AreasMemory Areas

Podem conter:Podem conter: Um mapa de memória de código de arquivos Um mapa de memória de código de arquivos

executáveis, chamados de “text section”.executáveis, chamados de “text section”. Um mapa de memória de variáveis globais Um mapa de memória de variáveis globais

inicializadas de arquivos executáveis, inicializadas de arquivos executáveis, chamados de “data section”chamados de “data section”

Um mapa de memória de página zero (zero Um mapa de memória de página zero (zero page), chamados de “bss section”.page), chamados de “bss section”.

Page 4: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br

The Memory DescriptorThe Memory DescriptorStruct mm_struct{Struct mm_struct{ struct vm_area_struct *mmap;struct vm_area_struct *mmap; struct rb_root mmrb;struct rb_root mmrb; struct vm_area_stuct *mmpap_cache;struct vm_area_stuct *mmpap_cache; unsigned long free_area_cache;unsigned long free_area_cache; pgd_t *pgd;pgd_t *pgd; atomic_t mm_users;atomic_t mm_users; atomic_t mm_count;atomic_t mm_count; int map_count;int map_count; struct rw_semaphore mmap_sem;struct rw_semaphore mmap_sem; spinlock_t page_table_lock;spinlock_t page_table_lock; struct list_head mmlist;struct list_head mmlist; unsigned long started_code;unsigned long started_code; unsigned long end_code;unsigned long end_code;

Page 5: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br

unsigned long start_data;unsigned long start_data; unsigned long end_data;unsigned long end_data; unsigned long start_brk;unsigned long start_brk; unsigned long brk;unsigned long brk; unsigned long start_stack;unsigned long start_stack; unsigned long arg_start;unsigned long arg_start; unsigned long arg_end;unsigned long arg_end; unsigned long env_start;unsigned long env_start; unsigned long env_end;unsigned long env_end; unsigned long rss;unsigned long rss; unsigned long total_vm;unsigned long total_vm; unsigned long locked_vm;unsigned long locked_vm; unsigned long def_flags;unsigned long def_flags; unsigned long cpu_vm_mask;unsigned long cpu_vm_mask; unsigned long swap_address;unsigned long swap_address;

unsigned dumpable:1;unsigned dumpable:1; int used_hugetlb;int used_hugetlb; mm_context_t context;mm_context_t context; struct completion *core_startup_done;struct completion *core_startup_done; struct completion core_done;struct completion core_done; rwlock_t ioctx_list_lock;rwlock_t ioctx_list_lock; struct kioctx *lock_list;struct kioctx *lock_list; struct kioctx default_kioctx;struct kioctx default_kioctx;};};

Page 6: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br

The mm_struct and Kernel ThreadsThe mm_struct and Kernel Threads

Kernel threads não possuem um process Kernel threads não possuem um process address space.address space.A variável mm dos processos kernel A variável mm dos processos kernel threads são setadas para NULL.threads são setadas para NULL.

Page 7: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br

Memory AreasMemory Areas

São representadas por um “memory area São representadas por um “memory area object”. (linux/mm.h)object”. (linux/mm.h)O kernel trata cada memory area como O kernel trata cada memory area como um único memory object.um único memory object.Cada área de memória compartilha Cada área de memória compartilha propriedades, como permissões e um propriedades, como permissões e um conjunto de operações associadas.conjunto de operações associadas.

Page 8: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br
Page 9: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br

VMA FlagsVMA Flags

Definidas em <linux/mm.h>Definidas em <linux/mm.h>Especificam o comportamento de Especificam o comportamento de informação adicional sobre páginas informação adicional sobre páginas contidas na memory area.contidas na memory area.Especifica o comportamento pelo qual o Especifica o comportamento pelo qual o kernel é responsável.kernel é responsável.O contexto é geral, não especificando O contexto é geral, não especificando páginas individuaispáginas individuais

Page 10: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br
Page 11: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br

VMA OperationsVMA Operations

Definido em <linux/mm.h>, representado Definido em <linux/mm.h>, representado por:por:

Page 12: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br

Lists and Trees of Memory AreasLists and Trees of Memory Areas

Lista Encadeada X Árvore Rubro Negra.Lista Encadeada X Árvore Rubro Negra. Redundância.Redundância. Performance.Performance. CaracterísticasCaracterísticas

Page 13: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br

Memory Areas in Real LifeMemory Areas in Real Life

Page 14: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br

O utilitário pmap(1) formata esse O utilitário pmap(1) formata esse informação um pouco mais fácil de ser informação um pouco mais fácil de ser lida:lida:

Page 15: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br

Manipulating Memory AreasManipulating Memory Areasmm/mmap.cmm/mmap.c

Page 16: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br
Page 17: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br

Mmap() and do_mmap:Creating na Mmap() and do_mmap:Creating na Address IntervalAddress Interval

Page 18: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br
Page 19: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br

The mmap()/munmap() System CallThe mmap()/munmap() System Call

Page 20: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br

Page TablesPage Tables

Trabalham por “splitting” o endereço Trabalham por “splitting” o endereço virtual em pedaços.virtual em pedaços.Cada pedaço é usado como um índice em Cada pedaço é usado como um índice em uma tabela.uma tabela.Em Linux, as Page Tables trabalham em 3 Em Linux, as Page Tables trabalham em 3 níveis:níveis: Page Global Directory (PGD).Page Global Directory (PGD). Page Middle Directory (PMD).Page Middle Directory (PMD). Page Table.Page Table.

Page 21: The Process Address Space João Victor Pap Almeida Sistemas Operacionais – Prof: Vitor COPPE Sistemas joao.pap@cos.ufrj.br