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

Post on 07-Apr-2016

216 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

The Process Address The Process Address SpaceSpace

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

COPPE SistemasCOPPE Sistemasjoao.pap@cos.ufrj.brjoao.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”

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”.

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;

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;};};

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.

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.

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

VMA OperationsVMA Operations

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

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

Memory Areas in Real LifeMemory Areas in Real Life

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:

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

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

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

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.

top related