A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 COS 773- SISTEMAS OPERACIONAIS Prof: Vitor BLOCK I/O Cristiane Magalhães.

Apresentações semelhantes


Apresentação em tema: "1 COS 773- SISTEMAS OPERACIONAIS Prof: Vitor BLOCK I/O Cristiane Magalhães."— Transcrição da apresentação:

1 1 COS 773- SISTEMAS OPERACIONAIS Prof: Vitor BLOCK I/O Cristiane Magalhães

2 2 Sumário n Objetivo n Definições n Anatomia de um dispositivo de bloco n Buffers e cabeçalhos do buffer n Estrutura bio n Diferenças entre cabeçalhos do buffer e estrutura bio n Filas de Solicitação n Schedulers de E/S

3 3 Objetivo n O Kernel gerencia os dispositivos de bloco e suas solicitações. Essa parte do Kernel é conhecida como camada de E/S de bloco. Objetivo do Kernel de desenvolvimento 2.5: Consertar a camada de E/S de bloco. Objetivo do Kernel de desenvolvimento 2.5: Consertar a camada de E/S de bloco.

4 4 Definições n Dispositivos de Bloco: São dispositivos de hardware diferenciados por seu acesso aleatório (isto é, não necessariamente sequencial); Exemplos de dispositivo de blocos: disco rígido, disquetes, drivers de CD-ROM e memória flash; Exemplos de dispositivo de blocos: disco rígido, disquetes, drivers de CD-ROM e memória flash; n Dispositivos de Caractere ou Dispositivo Char: São acessados como um fluxo de dados sequenciais, um byte depois do outro; Exemplos de dispositivos char: Portas seriais e teclados. Tem apenas uma posição (a atual), já os dispositivos de bloco tem que ser capazes de navegar entre qualquer local no meio

5 5 Definições Se o dispositivo de hardware for acessado como um fluxo de dados, será implementado como um dispositivo de caractere; Se o dispositivo de hardware for acessado como um fluxo de dados, será implementado como um dispositivo de caractere; Por outro lado, se o dispositivo de hardware for acessado aleatoriamente, será implementado como um dispositivo de bloco; Por outro lado, se o dispositivo de hardware for acessado aleatoriamente, será implementado como um dispositivo de bloco; A diferença: se você acessa o dispositivo aleatoriamente, ou seja, se o dispositivo pode buscar uma posição a partir da outra. A diferença: se você acessa o dispositivo aleatoriamente, ou seja, se o dispositivo pode buscar uma posição a partir da outra.

6 6 Anatomia de um dispositivo de bloco n Bloco: É a menor unidade endereçável para o sistema de arquivos (os sistemas de arquivos podem ser acessados somente em múltiplos de um bloco); São também chamados de blocos do sistema de arquivos ou blocos da E/S São também chamados de blocos do sistema de arquivos ou blocos da E/S É composto por um ou mais setores, mas não mais que o tamanho de uma página. Portanto, uma única página pode manter um ou mais blocos na memória; É composto por um ou mais setores, mas não mais que o tamanho de uma página. Portanto, uma única página pode manter um ou mais blocos na memória; O kernel executa todas as operações do disco em termos de blocos. O kernel executa todas as operações do disco em termos de blocos. O kernel precisa que o bloco seja uma potência de dois; O kernel precisa que o bloco seja uma potência de dois;

7 7 Anatomia de um dispositivo de bloco n Setor: É a unidade fundamental de todos os dispositivos de bloco; É a unidade fundamental de todos os dispositivos de bloco; Menor unidade endereçável em um dispositivo de bloco, logo, o tamanho do bloco não pode ser menor que o setor e tem que ser um múltiplo de um setor; Menor unidade endereçável em um dispositivo de bloco, logo, o tamanho do bloco não pode ser menor que o setor e tem que ser um múltiplo de um setor; O dispositivo não pode endereçar ou operar em uma unidade menor que o setor, embora muitos dispositivos possam transferir diversos setores de uma só vez; O dispositivo não pode endereçar ou operar em uma unidade menor que o setor, embora muitos dispositivos possam transferir diversos setores de uma só vez; O tamanho mais comum é de 512 bytes; O tamanho mais comum é de 512 bytes; São também chamados de setores permanentes ou blocos do dispositivo É importante para o kernel pq toda E/S do dispositivo tem que ser feita nas unidades dos setores. É importante para o kernel pq toda E/S do dispositivo tem que ser feita nas unidades dos setores.

8 8 Buffers e cabeçalhos do buffer n Quando um bloco é armazenado na memória, é armazenado em um buffer; n Cada buffer é associado exatamente a um bloco; n Como o kernel requer algumas informações de controle associadas para acompanhar os dados (como de qual dispositivo do bloco e de qual bloco específico o buffer é) cada buffer é associado a um descritor; n O descritor é chamado de cabeçalho do buffer e é do tipo struct buffer_head n A estrutura buffer_head mantém todas as informações que o kernel precisa para manipular os buffers e é definida em n A estrutura buffer_head mantém todas as informações que o kernel precisa para manipular os buffers e é definida em

9 9 Buffers e cabeçalhos do buffer Struct buffer_head { unsigned long b_state;/* buffer state flags */ atomic_tb_count ;/* buffer usage counter */ struct buffer_head*b_this_page;/* list of buffers on the page */ struct page*b_page;/* associated page */ sector_tb_blocknr;/* logic block number */ u32b_size;/* block size (int bytes) */ char*b_data;/* pointer to buffer in the page*/ struct block_device*b_bdev;/* associated block device */ bh_end_io_t*b_end_io;/* I/O completion method */ void*b_private;/* completion method data */ struct list_headb_assoc_buffers/* list of associated mappings */ } ;

10 10 Buffers e cabeçalhos do buffer n Antes do kernel 2.6, o cabeçalho do buffer era a estrutura de dados mais importante. Basicamente, era a unidade de E/S no kernel. n O cabeçalho do buffer não descrevia somente o mapeamento do bloco do disco para a página física, mas também agia como um contêiner usado para toda E/S do bloco. Isso tinha dois problemas básicos: 1º) O cabeçalho do buffer era uma estrutura de dados grande e difícil (O kernel prefere trabalhar em termos de páginas, que são simples e permitem um maior desempenho); 2º) O cabeçalho do buffer quando usado como um contêiner para todas as operações de E/S, faz com que o kernel divida as operações de E/S do bloco em diversas estruturas buffer_head, isso resulta em um overhead desnecessário e no consumo do espaço

11 11 Estrutura BIO n O objetivo do kernel de desenvolvimento 2.5 foi introduzir um novo contêiner flexível e leve para as operações de E/S do bloco: Estrutura bio. n Representa as operações de E/S do bloco que são feitas como uma lista de segmentos. n Segmento: É uma parte do buffer que é contínua na memória. Assim os buffers individuais não precisam ser contínuos na memória. Permitindo que os buffers sejam descritos em partes, a estrutura bio fornece a capacidade de executar as operações de E/S do bloco de até um único buffer a partir de vários locais na memória.

12 12 Estrutura BIO Struct bio { Sector _tbi_sector;/* associated sector on disk */ Struct bio *bi_next;/* list of requests */ struct block_device*bi_bdev ;/* associated block device*/ unsigned longbi_flags;/* status and commad flags*/ unsigned long bi_rw;/* read or write? */ unsigned shortbi_vcnt;/* number of bio_vec´s off bi_io_vec */ unsigned shortbi_idx;/* current index in bi_io_vec */ unsigned shortbi_phys_segments;/* number of segments after coalescing unsigned short bi_hw_segments;/* number of segments after remapping*/ unsigned int bi_size;/* I/O count */ unsigned short bi_max_vecs;_/* maximum bio_vecs possible */ struct bio_vec*bi_io_vec;/* bio_vec list */ bio_end_io_t*bi_end_io;/* I/O completion method */ atomic_t bi_cnt/* usage counter */ void *bi_private;/* owner-private method */ bio_destructor_t*bi_destructor;/* destructor method */ } ;

13 13 Diferenças entre os cabeçalhos do buffer e a estrutura bio n Cabeçalhos do Buffer: Representa um único buffer, que descreve um único bloco no disco, Representa um único buffer, que descreve um único bloco no disco, São ligados a um único bloco do disco em uma única página, resultando na divisão desnecessária das solicitações em partes do tamanho do bloco; São ligados a um único bloco do disco em uma única página, resultando na divisão desnecessária das solicitações em partes do tamanho do bloco; É requerido para funcionar como um descritor mapeando os blocos do disco para as páginas. É requerido para funcionar como um descritor mapeando os blocos do disco para as páginas. n Estrutura bio: Representa uma operação E/S, que pode incluir uma ou mais páginas na memória; Representa uma operação E/S, que pode incluir uma ou mais páginas na memória; É mais leve e pode descrever blocos descontínuos e não divide desnecessariamente as operações de E/S É mais leve e pode descrever blocos descontínuos e não divide desnecessariamente as operações de E/S Não contém nenhuma informação sobre o estado do buffer Não contém nenhuma informação sobre o estado do buffer

14 14 Filas de Solicitação n Os dispositivos de bloco mantêm filas de solicitação para armazenar suas solicitações de E/S do bloco pendente; n São representadas pela estrutura request_queue e é definida em n São representadas pela estrutura request_queue e é definida em n Contém uma lista de solicitações e informações de controle associadas (as solicitações são adicionadas á fila pelo código de nível mais alto no kernel como os sistemas de arquivos); n A fila de solicitação não estando vazia, o driver do dispositivo de bloco associado á fila obterá o cabeçalho da fila e irá envia-lo para seu dispositivo de bloco associado. n Cada item na lista de solicitação da fila é uma solicitação do tipo struct request

15 15 Schedulers de E/S n Funciona gerenciando a fila de solicitação de um dispositivo de bloco; n Gerencia a fila de solicitação, decidindo a ordem das solicitações e em qual hora cada solicitação é enviada para o dispositivo de bloco; n Executa duas ações para minimizar as buscas: Mescla: É a combinação de duas ou mais solicitações em uma Mescla: É a combinação de duas ou mais solicitações em uma Classificação Classificação n Não deve ser confundido com o scheduler do processo. O sheduler do processo divide o recurso do processador entre os processos no sistema. n Exemplo de schedulers de E/S: Elevador Linus (era o schedulers de E/S default no 2.4).


Carregar ppt "1 COS 773- SISTEMAS OPERACIONAIS Prof: Vitor BLOCK I/O Cristiane Magalhães."

Apresentações semelhantes


Anúncios Google