Sistemas Operacionais - PowerPoint PPT Presentation

About This Presentation
Title:

Sistemas Operacionais

Description:

Sistemas Operacionais Page Cache e Page Writeback Vinicius Faria Culmant Ramos Prof.: Vitor Santos Costa Introdu o Page Cache , fisicamente, uma p gina na RAM ... – PowerPoint PPT presentation

Number of Views:87
Avg rating:3.0/5.0
Slides: 11
Provided by: cosUfrjB6
Category:

less

Transcript and Presenter's Notes

Title: Sistemas Operacionais


1
Sistemas Operacionais
  • Page Cache e Page Writeback
  • Vinicius Faria Culmant Ramos
  • Prof. Vitor Santos Costa

2
Introdução
  • Page Cache é, fisicamente, uma página na RAM
  • Cada página corresponde a vários blocos no disco
  • O kernel busca informações primeiro no cache para
    depois buscar no disco.

3
Características
  • Minimizar disk I/O -gt Armazenar dados em memória
    que pode vir a ser utilizado
  • Acesso ao disco é muito mais lento do que acesso
    à memória
  • Páginas acessadas são muito prováveis de serem
    acessadas em um curto espaço de tempo.
  • Page Cache x86 -gt tamanho 4Kb

4
address_space
  • SVR4 utilizava o Page Cache apenas para dados do
    filesystem
  • SVR4 Page Cache utilizado é equivalente ao file
    object (struct vnode)
  • Linux armazena qualquer page-based object,
    incluindo diferentes tipos de arquivos e
    mapeamento de memória
  • Utiliza a estrutura address_space que identifica
    as páginas no Page Cache

5
address_space
  • linux/fs.h
  • struct address_space
  • struct inode host
    / owning inode /
  • struct radix_tree_root page_tree
    / radix tree of all pages /
  • spinlock_t tree_lock
    / page_tree lock /
  • unsigned int
    i_mmap_writable / VM_SHARED ma count /
  • struct prio_tree_root i_mmap
    / list of all mappings /
  • struct list_head
    i_mmap_nonlinear / VM_NONLINEAR ma list /
  • spinlock_t i_mmap_lock
    / i_mmap lock /
  • atomic_t
    truncate_count / truncate re count /
  • unsigned long nrpages
    / total number of pages /
  • pgoff_t
    writeback_index / writeback start offset /
  • struct address_space_operations a_ops
    / operations table /
  • unsigned long flags
    / gfp_mask and error flags /
  • struct backing_dev_info
    backing_dev_info / read-ahead information /
  • spinlock_t private_lock
    / private lock /
  • struct list_head private_list
    / private list /
  • struct address_space assoc_mapping
    / associated buffers /

6
address_space
  • i_nmap -gt Árvore de prioridades de todos as mapas
    de memória, tanto compartilhado quanto privados
  • address_space está associado a algum objeto do
    kernel, geralmente é um inode
  • host pode ser NULL se o objeto associado não for
    um inode, por exemplo uma área de swap
  • a_ops aponta para a tabela de operações do
    address_space
  • Esta tabela está descrita na estrutura
    address_space_operations

7
address_space
  • struct address_space_operations
  • int (writepage)(struct page , struct
    writeback_control )
  • int (readpage) (struct file , struct
    page )
  • int (sync_page) (struct page )
  • int (writepages) (struct address_space
    , struct writeback_control )
  • int (set_page_dirty) (struct page )
  • int (readpages) (struct file , struct
    address_space , struct list_head , unsigned)
  • int (prepare_write) (struct file ,
    struct page , unsigned, unsigned)
  • int (commit_write) (struct file ,
    struct page , unsigned, unsigned)
  • sector_t (bmap)(struct address_space ,
    sector_t)
  • int (invalidatepage) (struct page ,
    unsigned long)
  • int (releasepage) (struct page , int)
  • int (direct_IO) (int, struct kiocb ,
    const struct iovec , loff_t, unsigned long)

8
read_page()
  • Um dos métodos mais importantes
  • Page find_get_page(mapping, index) // Busca a
    página no page cache
  • Se a página não estiver no cache
  • struct page cached_page
  • int error
  • cached_page page_cache_alloc_cold(mapping)
  • if (!cached_page)
  • / error allocating memory /
  • error add_to_page_cache_lru(cached_page,
    mapping, index, GFP_KERNEL)
  • if (error)
  • / error adding page to page cache /
  • error mapping-gta_ops-gtreadpage(file, page)

9
write_page()
  • Um dos métodos mais importantes
  • Quando uma página é modificada sempre é chamada a
    função SetPageDirty(page)
  • Para escrever, faz-se uma busca no cache pela
    página
  • Se não estiver, uma página é alocada e
    adicionada
  • prepare_write() é invocada para setar a
    requisição de escrita
  • Os dados são copiados da área do usuário para o
    Kernel buffer
  • Os dados são copiados para o disco com a função
    commit_write()

10
  • Obrigado!
Write a Comment
User Comments (0)
About PowerShow.com