Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
ARQUITETURA DE COMPUTADORES E SISTEMAS OPERACIONAIS – Notas de Aula Pier-Giovanni Taranti 7 de março de 2013 2 Esta apostila contém notas de aula da disciplina ARQUITETURA DE COMPUTADORES E SISTEMAS OPERACIONAIS ministrada por Pier–Giovanni Taranti no período 2012.2. O material tem como fim apoiar as aulas e é resumo das fontes referenciadas no texto. Para uso em trabalhos sugere-se que as fontes originais sejam consultadas. A apostila é um material suplementar e não exime o aluno de utilizar o livro texto da disciplina. Da mesma forma, o conteúdo apresentado em sala de aula e que não conste deste material também é passível de sofrer avaliação nas provas. Não é autorizado o uso, cópia ou distribuição deste texto para outro fim que não a participação no curso citado. O uso de figuras ou transcrição de textos de outrem que conste neste trabalho é referenciado no intuito de preservar os diretos dos autores originais. Caso alguma omissão seja percebida, solicita-se informar para que a correção seja efetuada. i ii Sumário I Informações gerais sobre a disciplina e Apresentação da Ementa 1 II Introdução Arquitetura de Computadores 3 1 Introdução 5 1.1 Conceitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1.1 Processamento de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1.2 Sistemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1.3 Sistemas de Computação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1.4 Componentes de um Sistema de Computação . . . . . . . . . . . . . . . . . . . . . . . . 5 2 Representação da Informação 7 2.1 Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 Bytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3 Palavra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4 Caractere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.5 Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.6 Registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3 Coversão de Bases 11 3.1 Notação Posicional - Base 10 ou Decimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2 Outras Bases de Numeração e conversão para Base 10 . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2.1 Exemplo de Conversão para base 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3 Conversão de Bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3.1 Conversão de Bases Potência de 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3.2 Decimal para outra base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3.3 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 iii 4 Aritmética Não-Decimal 17 4.1 Aritmética binária . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.1.1 Soma binária . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.1.2 Subtração binária . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.1.3 Multiplicação Binária . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.1.4 Divisão Binária . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.2 Aritmética Hexadecimal e Octadecimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.2.1 Soma Hexa/Octadecimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.2.2 Subtração Hexa/Octadecimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.3 Limites Reais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 5 Noções sobre Lógica Digital 23 5.1 Portas ou Operações Lógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.1.1 Porta AND (“E”) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.1.2 Porta OR (“OU”) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.1.3 Porta NOT (“negação”) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.1.4 Porta NAND - NOT AND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.1.5 Porta NOR - NOT OR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.1.6 Porta XOR - “OU Exclusivo” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.2 Expressões Lógicas – Aplicação de Portas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.2.1 Cálculo com Expressões Lógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.2.2 Casos particulares - Tautologias, Contradições e Contingências . . . . . . . . . . . . . . . 31 5.2.3 Se...Então . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.2.4 ....Se e Somente Se... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.3 Exemplos de Aplicação - Circuitos Integrados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6 Subsistemas de Memória 37 6.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.1.1 Representação da Informação na Memória . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.1.2 Localização dos dados nas memórias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.1.3 Operações sobre a memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.2 Hierarquia de Memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 6.2.1 Registradores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.2.2 Memória Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.2.3 Memória Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.2.4 Memória Secundária . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.3 Memória Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6.3.1 Organização da Memória Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6.3.2 Considerações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 iv 6.3.3 Operações sobre a memória principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6.3.4 Capacidade da Memória Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.3.5 Tipos de Memoria Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.4 Erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.5 Memória Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.5.1 Utilização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.5.2 Tipos de Memoria de Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 7 Unidade Central de Processamento (UCP) 49 7.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.2 Funções Básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.2.1 Função Processamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.2.2 Função Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 7.3 O ciclo de instrução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 8 Entrada e Saída de Dados 55 8.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 8.2 Interfaces de ES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 8.2.1 Transmissão serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 8.2.2 Transmissão paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 8.3 Dispositivos de ES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 III Introdução a Sistemas Operacionais 59 9 Conceitos Básicos 61 9.1 Tipos de Sistemas Operacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 9.1.1 Sistemas Monoprogramáveis /Monotarefa . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 9.1.2 Sistemas Multiprogramáveis / Multitarefa . . . . . . . . . . . . . . . . . . . . . . . . . . 62 9.1.3 Sistemas de Múltiplos Processadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 9.2 Pipelining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 9.3 Exercício para Sala de Aula - Dia 11/10/2012 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 9.3.1 Tarefa 01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 9.3.2 Tarefa 02 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 9.3.3 Tarefa 03 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 10 Concorrência 65 10.1 Interrupção e Exceção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 10.1.1 Interrupção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 10.1.2 Exceção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 v 10.2 Buffering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 10.3 Spooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 10.4 Reentrância . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 11 Processos 67 11.1 Bloco de controle do processo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 11.2 Estados dos Processos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 11.3 Mudança de Estados de um Processo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 11.4 Subprocessos e Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 11.4.1 Subprocesso ou processo filho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 11.4.2 Thread ou Linha de Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 11.5 Comunicação entre Processos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 12 Gerência do Processador 73 12.1 Escalonamentos Preemptivos e Não-Preemptivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 12.1.1 escalonamento não-preemptivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 12.1.2 escalonamento preemptivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 13 Gerência de Memória 75 13.1 Funções básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 13.2 Alocação Contígua Simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 13.3 Alocação Particionada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 13.3.1 Alocação Particionada Estática ou Fixa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 13.3.2 Alocação Particionada Dinâmica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 13.4 Swapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 14 Gerência de Memória Virtual 79 14.1 Paginação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 14.1.1 Politica de busca de páginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 14.1.2 Politica de Alocação de páginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 14.2 Segmentação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 14.3 Fragmentação de memória virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 15 Sistemas de Arquivos 83 15.1 Gerência de Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 15.1.1 Organização de Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 15.2 Diretórios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 15.3 Alocação de Espaço em Disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 15.3.1 Alocação Contígua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 15.3.2 Alocação Encadeada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 vi 15.3.3 Alocação Indexada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 16 Gerência de Dispositivos 85 16.1 Operações de Entrada e Saída . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 16.2 Device Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 16.3 Controladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Glossary 91 Acronyms 93 vii viii Parte I Informações gerais sobre a disciplina e Apresentação da Ementa 1 Parte II Introdução Arquitetura de Computadores 3 Capítulo 1 Introdução 1.1 Conceitos A leitura de referencia para o tema é [MON07]. 1.1.1 Processamento de Dados Serie de atividades realizadas ordenadamente, com o objetivo de obter um conjunto de informações (saída) considerando um determinado conjuntos de informações iniciais (entrada). 1.1.2 Sistemas Conceito de Sistema (de Engenharia de Sistemas) 1.1.3 Sistemas de Computação Sistema de Computação = Software Básico + Hardware Software Básico é SO, software embarcado, driver, etc.. Software de Aplicação ou Programas de Aplicação são outra classe, destinada a solucionar problemas espe- cíficos de pessoas e/ou organizações. 1.1.4 Componentes de um Sistema de Computação Observar os componentes apresentados na figura 1.1, obtida em [MON07], página 27. 5 Figura 1.1: Componentes Básicos de Sistema de Computação 6 Capítulo 2 Representação da Informação A leitura de referencia para o tema é [MON07]. Computadores não “pensam” ou “entendem”. Eles processam informação. São, essencialmente, Máquina de Estados. O processamento de informação é possível devido a adoção de padrões para representação da mesma. Como ponto inicial, considerem que o computador possui a capacidade de diferenciar entre dois estados, que podem ser tratados por ativado ou não-ativado, diferencial de potencia, ou, em uma representação mais associada a ciência da computação, 0 e 1. Esse elemento é então combinado de diversas formas e, tal qual as letras de um alfabeto, forma palavras e expressões. A seguir discutiremos como esse elemento pode ser combinado e será apresentada a nomenclatura padrão. 2.1 Bits O Bit é a representação de um dígito binário, ou seja, de um digito que pode assumir unicamente dois valores. A escolha do padrão binário tem bases tecnológicas e teóricas: A representação binária é mais facilmente representada em circuitos eletrônicos, dispositivos ópticos e magné- ticos. A seleção de valor associa-se a expressões como: ativado/desativado e positivo/negativo. Outros sistemas, como o decimal, exigiriam da máquina uma capacidade discricionária superior, mais sensível a erros e complexa. O uso do padrão binário também permite um uso direto da álgebra de Boole ou lógica booleana, que é a base das estruturas de controle que usamos em programas de computadores. Contudo, obviamente, a capacidade de expressão de um dígito binário é muito limitada. No português, usamos o nosso alfabeto, concatenando as letras de forma a representar conceitos que possuem um entendimento compartilhado pela população. No caso dos bits, o computador, de forma semelhante, concatena dígitos binários de forma a representar conceitos que possam ser processados. 7 O conjunto de 8 dígitos concatenados forma um Byte 2.2 Bytes Como muitos padrões na industria, o Byte foi adotado por uma indústria (IBM), e posteriormente foi adotado como padrão. Nos computadores antigos, os processadores trabalhavam com palavras de 8 bits. Esse conjunto era usado para representar caracteres, instruções de computadores e para trafegar dados em barramentos de hardware. Até hoje o padrão é usado para medir capacidade de armazenamento e para acesso a informação. Quando dizemos que um dico pode armazenar 1 GB, isto é abreviatura de Gbytes. O mesmo se aplica a taxas de transferência de dados, I/O, etc. Observação: 1KB = 210 bytes = 1.024 bytes = 1.024 * 8 bits (kilobyte) 1MB = 22∗10 bytes = 1.048.576 bytes = 1.048.576 * 8 bits (megabyte) 1GB = 23∗10 bytes (megabyte) 1TB = 24∗10 bytes (terabyte) 1PB = 25∗10 bytes(petabyte) 2.3 Palavra Conjunto de bits que representa uma informação útil para os computadores. È um conceito relacionado ao tamanho da informação que trafega pelo I/O da Central processing unit (CPU). Está associada ao Processador da máquina: 8; 16; 32; 64 bits. 2.4 Caractere Os carcteres são representados por conjuntos de bits, normalmente organizados em bytes. Encode: ASCII – 1 byte - http://pt.wikipedia.org/wiki/Ascii#Tabela_ASCII ISO-8859-1 – 1 byte - http://en.wikipedia.org/wiki/ISO/IEC_8859 UTF-8- de 1 a 4 bytes UTF-16 - ........ Importante: é necessário respeitar o encode original de um arquivo, caso ele vá ser usado em outro ambiente é necessário codificá-lo para o novo encode. Este problema ocorre com frequência no desenvolvimento de programas Java para multiplataformas. 8 2.5 Arquivos Os sistemas operacionais organizam os dados de memória em arquivos. Arquivos de dados (ou informações) são conjuntos de dados (ou informações) de um mesmo tipo ou para uma mesma aplicação. A estrutura de arquivos é gerenciada pelo Sistema Operacional (ex. Linux, Unix, Solaris, Windows XP, Windows 7..). Sistemas de Arquivos estabelecem limitações sobre nomes, tamanho e metadados dos arquivos. 2.6 Registros Registros são estruturas de dados representadas dentro de determinados arquivos. Um exemplo seriam arquivos DBF (dBase) ou XLS (excel), nos quais os registros guardam informações sobre as tuplas. 9 10 Capítulo 3 Coversão de Bases 3.1 Notação Posicional - Base 10 ou Decimal A leitura de referencia para o tema é [MON07] A representação dos números é necessária para que possamos realizar operações matemáticas. Dentre as representações, a Notação Posicional é uma forma de representar os números, na qual a posição relativa de um algarismo (ou dígito) no numeral determina seu valor. A formação dos números e sua representação, em um sistema Posicional, depende da quantidade de dígitos disponíveis para esta tarefa. O sistema mais usual é o decimal, ou de Base 10, que possui um conjunto definido de 10 dígitos para representação numérica: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Valor pela posição? Veja a formula abaixo: N = dn−1 ∗ bn−1 + dn−2 ∗ bn−2 + ....dn−1 ∗ bn−1 + dn−2 ∗ bn−2 + d1 ∗ b1 + d0.b0 Calculando o valor pela posição: 923010 = 9 ∗ 103 + 2 ∗ 102 + 3 ∗ 101 + 0 ∗ 100 = 9000 + 200 + 30 + 0 A convenção para se representar a Base na qual o numeral está representado é apresentar o numero de dígitos disponíveis naquela base em subscrito a direita do numeral: 102910 Pergunta: O seguinte numeral é possível? − > 10296 Exemplos: 101111002 4034215 7065438 1239DF16 // // No último exemplo ocorre o uso de letras em substituição a digitos, para completar o conjunto de 16 caracteres para representar a base 16: 11 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A,B,C,D,E, F 3.2 Outras Bases de Numeração e conversão para Base 10 Conforme apresentado, um numero pode ser apresentado em qualquer base numérica. A notação usual é: DDDD...DDDB ; ou (DDDD...DDD)B O calculo do valor em base 10, isto é, base decimal, é simples: 3.2.1 Exemplo de Conversão para base 10 Lembrem da fórmula: N = dn−1 ∗ bn−1 + dn−2 ∗ bn−2 + ....dn−1 ∗ bn−1 + dn−2 ∗ bn−2 + d1 ∗ b1 + d0.b0 (3.1) Considerem o número 34657: 34657 = (3 ∗ 73 + 4 ∗ 72 + 6 ∗ 71 + 5 ∗ 70)10 Na ciência da computação, as bases que nos interessam são as de base 2, 8, 16..., ou seja, as potencias de 2. Por que? Lembrem-se que as palavras são formadas por potencias de 2, e isto tem origem na representação binária. A representação de caracteres é outro motivo para nosso interesse. A conversão de potencias de 2 para base 10 são realizadas pelo mesmo sistema que o apresentado na formula: 100011102 = (1 ∗ 27 + 1 ∗ 23 + 1 ∗ 22 + 1 ∗ 21)10 3.3 Conversão de Bases 3.3.1 Conversão de Bases Potência de 2 Observem cuidadosamente a tabela abaixo: 12 Base 2 Base 8 Base 16 Base 10 0000002 08 016 0 0000012 18 116 1 0000102 28 216 2 0000112 38 316 3 0001002 48 416 4 0001012 58 516 5 0001102 68 616 6 0001112 78 716 7 0010002 108 816 8 0010012 118 916 9 0010102 128 A16 10 0010112 138 B16 11 0011002 148 C16 12 0011012 158 D16 13 0011102 168 E16 14 0011112 178 F16 15 0100002 208 1016 16 0100012 218 1116 17 Atenção aos seguintes fatos: 1. Existe uma relação direta entre o conjunto formado pelos 3 últimos dígitos de um número em base binária e o último digito em base octal. Esta relação é mantida para o para o penúltimo conjunto de 3 dígitos do numero em base binaria e o penúltimo digito em base octal, e assim por diante; e 2. Existe uma relação direta entre o conjunto formado pelos 4 últimos dígitos de um número em base binária e o último digito em base octal. Esta relação é mantida para o para o penúltimo conjunto de 4 dígitos do numero em base binaria e o penúltimo digito em base octal, e assim por diante. 3.3.2 Conversão de Números de Base 10 para outras bases A conversão é obtida através da coleção dos restos de divisões sucessivas. O algoritmo é usualmente aplicado de duas formas que apenas possuem diferença na forma de organizar o cálculo. A primeira é apresentada na figura 3.1, (fonte: http://www.activeinfo.com.br/curso_programacao/ conversao_entre_bases.html) A segunda forma é apresentada na figura 3.2 cuja fonte é [MON07]. 13 Figura 3.1: Conversão de Base 10 para Base 2 3.3.3 Exercícios Converta para base 10: • 67809 • EF016 • 10010011112 • 7258 • 122123 • A3420 • 3478 14 Figura 3.2: Conversão de Base 10 para Base 8 • 2316 • 100001112 Converta para base 2: • 678016 • EF016 • 11118 • 7258 • 122123 • A3416 • 3478 15 • 2316 • 1011110 Converta para base 8: • 678016 • EF016 • 72510 • A3416 • 34710 • 234 • 111110 Converta para base 16: • 1111100110012 • 2368 • 111011101101111000112 16 Capítulo 4 Aritmética Não-Decimal A leitura de referência para o tema é [MON07] - item 3.4 Esta aula apresenta a realização das quatro operações aritméticas (adição, subtração, multiplicação e divisão) em números que usem a representação posicional e cuja base seja diferente da decimal. Em todos exemplos são adotados números inteiros positivos. 4.1 Aritmética binária 4.1.1 Soma binária A execução é semelhante a soma decimal, contudo existe a limitação de apenas dois algarismos na base binária (0, 1). Sempre que se soma 1 + 1 temos que usar a regra de “ ‘vai 1”. Abaixo a tabela de possibilidades: 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0, usando o “vai 1 para próxima posição” Exemplo (ver figura 4.1). 17 Figura 4.1: Exemplo de soma binária @ [MON07] 4.1.2 Subtração binária Ocorre da mesma forma que a decimal: Caso o minuendo seja menor que o subtraendo, utiliza-se uma unidade do número que ocupe a posição mais a esquerda para efetuar a operação. Exemplo (ver figura 4.2). Figura 4.2: Exemplo de subtração binária @ [MON07] 18 4.1.3 Multiplicação Binária O algoritmo de execução é o mesmo usado na base decimal, no qual se multiplica o multiplicando pelas diversas ordens do multiplicador e soma-se os resultados. Exemplo (ver figuras 4.3 e 4.4). Figura 4.3: Exemplo de Multiplicação binária @ [MON07] Figura 4.4: Exemplo de Multiplicação binária @ [MON07] 19 4.1.4 Divisão Binária Exemplo (ver figura 4.5). Figura 4.5: Exemplo de divisão binária @ [MON07] 4.2 Aritmética Hexadecimal e Octadecimal 4.2.1 Soma Hexa/Octadecimal Segue o mesmo princípio da Soma Decimal e da Binária. – Atenção aos exemplos executados em sala de aula 4.2.2 Subtração Hexa/Octadecimal Segue o mesmo princípio da Subtração Decimal e da Binária – Atenção aos exemplos executados em sala de aula 4.3 Limites Reais É importante lembrar que o computador possui limitações na representação de números, estabelecida conforme a tecnologia que se use. Essas limitações devem-se a, por exemplo, o numero de bytes alocados na memória 20 para cada numero, que varia conforme a linguagem de programação utilizada. 21 22 Capítulo 5 Noções sobre Lógica Digital A leitura de referência para o tema é [MON07] - Capítulo 4, com ênfase nos itens 4.1, 4.2 e 4.3. O computador trabalha com valores digitais, representados por 0, 1. Todas suas ações são realizadas através de operações que utilizam estes valores. Internamente, essas operações são executadas em microprocessadores. Estes microprocessadores possuem circuitos que representam as funções que milhares de transistores poderiam realizar, se dispostos em uma arquitetura adequada. Estes transistores seriam dispostos em componentes menores, os quais seriam agrupados posteriormente. Estes componentes são os circuitos flip-flop (figura 5.1). A principal característica deste tipo de circuito é que ele se apresenta em dois estados, que são nomeados como aberto/fechado; sim/não; 0/1.... A existência destes circuitos, combinada com a possibilidade de se verificar e manipular eletronicamente seus estados é que permite a construção dos atuais computadores. A manipulação dos valores é realizada por portas lógicas, capazes de realizar as operações lógicas de negação, E e OU. Essas portas permitem a implementação e uso da álgebra de Boole, também conhecida como álgebra booleana, coerente com a dita álgebra de chaveamentos. Através da combinação das portas, que representam as operações lógicas, e do encadeamento de estados 0, 1 – bit – em bytes e palavras; é possível realizar operações matemáticas e instruções de comando. Podemos afirmar que esta tecnologia e a teoria aplica é fundamental para construção dos computadores atuais. 23 Figura 5.1: circuito flipflop @http://en.wikipedia.org/wiki/File:Flipflop_by_trexer.png 5.1 Portas ou Operações Lógicas As portas ou operações definem uma função na qual, para determinados estados de entrada, um estado de saída específico é apresentado. A figura 5.2 apresenta estas operações. É interessante citar que as operações podem ser reduzidas a AND, OR e NOT. 24 Figura 5.2: portas lógicas @ [MON07], pag 66 25 5.1.1 Porta AND (“E”) p q p.q V V V V F F F V F F F F P Q FAND Figura 5.3: Porta Logica AND 26 5.1.2 Porta OR (“OU”) p q p+ q V V V V F V F V V F F F P Q FOR Figura 5.4: Porta Logica OR 5.1.3 Porta NOT (“negação”) p ¬p V F F V P ¬PNOT Figura 5.5: Porta Logica NOT 27 5.1.4 Porta NAND - NOT AND p q ¬(p.q) V V F V F V F V V F F V P Q F Figura 5.6: Porta Logica NAND 5.1.5 Porta NOR - NOT OR p q ¬(p+ q) V V F V F F F V F F F V P Q F Figura 5.7: Porta Logica NOR P Q F Figura 5.8: Porta Logica NOR 28 5.1.6 Porta XOR - “OU Exclusivo” p q p ⊕ q V V F V F V F V V F F F P Q FXOR Figura 5.9: Porta Logica XOR 29 5.2 Expressões Lógicas – Aplicação de Portas Expressão Lógica ou Função Lógica é uma expressão algébrica formada por variáveis logicas (V, F ) e por símbolos que representem operações lógicas: .,+,⊕,→,←→. Ainda podem compor as expressões: o sinal de igualdade (=) e parenteses. Os símbolos abaixo podem representar NEGAÇÃO: • ∼ A ; • A¯; e • ¬ A. Adicionalmente, os operadores e e ou podem ser representados por ∧ e ∨, respectivamente. Exemplo: F = (A+B¯ )⊕ (C.B) Como já dito, as variáveis (A, B, C) podem assumir valores de Verdadeiro ou Falso (0,1). O diagrama deste circuito é apresentado na figura 5.10. A B C NOT AND OR XOR Figura 5.10: Circuito Lógico 30 5.2.1 Cálculo com Expressões Lógicas Através de Tabelas Verdade podemos obter o valor da expressão para um dado conjunto de entradas. Na confecção das tabelas verdade devemos respeitar a ordem de realização dos calculos: A execução de AND têm prioridade sobre OR; ou seja: Em (A.B+C), resolver-se-ia primeiro A.B, e após isso o resultado seria utilizado na expressão +C. Em analogia, é como nas expressões aritméticas, quando a multiplicação deve ser executada antes da soma. Tabela Verdade Tabelas verdade apresentam as soluções para todas as combinações de entrada de uma expressão lógica. A tabela possui um número de linhas exponencialmente relacionado ao número de variáveis da expressão. Exemplos serão apresentados ao longo do texto. 5.2.2 Casos particulares - Tautologias, Contradições e Contingências Algumas expressões se caraterizam pelos resultados apresentados em sua tabela verdade, formando tautologias, contradições ou contingências. Tautologia Tautologias são expressões lógicas cujas tabela verdade sempre apresentam valor V erdadeiro na última coluna, ou, dito de outra forma, para qualquer conjunto de valores de entrada, uma tautologia sempre apresentará valor verdadeiro na saída. Exemplo ¬(¬p ∧ p), que é o mesmo que: p.p (figura 5.11) p ¬p ¬p ∧ p ¬(¬p ∧ p) V F F V F V F V P NOT NOTAND Figura 5.11: Circuito Lógico 31 Contradição Contradições são expressões lógicas cujas tabela verdade sempre apresentam valor Falso na última coluna, ou, dito de outra forma, para qualquer conjunto de valores de entrada, uma contradição sempre apresentará valor Falso na saída. Exemplo (¬p ∧ p), que é o mesmo que: p.p (figura 5.12) p ¬p ¬p ∧ p V F F F V F P NOT AND Figura 5.12: Circuito Lógico Contingências Contingências são todas as expressões para as quais a tabela verdade apresenta pelo menos uma ocorrência de V erdadeiro e uma de Falso. Podemos dizer que são todas as expressões que não são Tautologias ou Contradições. 5.2.3 Se...Então Se... então, símbolo: → Exemplo: • se P então Q • P → Q • ¬P ∨Q 32 P Q P → Q V V V V F F F V V F F V Observem a equivalência com o circuito lógico da figura 5.13. P Q NOT OR Figura 5.13: Circuito Lógico 5.2.4 ....Se e Somente Se... Se... então, símbolo: ←→ Exemplo: • P se e somente se Q • P ←→ Q • (P → Q) ∧ (Q→ P ) • (¬P ∨Q) ∧ (¬Q ∨ P ) P Q P → Q Q→ P P ←→ Q V V V V V V F F V F F V V F F F F V V V Observem a equivalência com o circuito lógico da figura 5.14. 33 P Q NOT1 OR1 NOT2 OR2 AND Figura 5.14: Circuito Lógico Representação com portas Para representar uma expressão com portas lógicas é necessário reduzi-la ao conjunto de portas utilizados. Expressões como “se....então” e “....se e somente se....” devem ser convertidas. 5.3 Exemplos de Aplicação - Circuitos Integrados As portas lógicas podem ser “construídas” com técnicas de engenharia eletrônica, e montadas em circuitos integrados (fig. 5.15). A complexidade destes circuitos depende de sua aplicação final. 34 Figura 5.15: circuito integrado @http://forum.clubedohardware.com.br 35 36 Capítulo 6 Subsistemas de Memória 6.1 Introdução Memória é o componente de um computador responsável por armazenar informação que está sendo ou será utilizada pelo computador. A prática mostra que não é viável a construção de computadores de razoável complexidade sem utilizar diferentes tipos de memória, aplicadas a diferentes tarefas. Diversos fatores corroboram esta decisão arquitetural, entre eles: • custo da memória; • tempo de acesso; • capacidade de reter a informação; e • capacidade de armazenamento. As restrições de projetos normalmente se atem as fatores velocidade e capacidade. Um fator importante é que a velocidade possui alto custo associado. Para atender a necessidade de memória rápida e de alta capacidade de armazenamento, a solução é o uso de um conjunto de memórias com diferentes características e que podem se complementar. Ainda sobre memórias, de forma genérica, pode-se afirmar que as operações que se realizam em memórias são somente duas: leitura e gravação (read/write; r/w). Toda posição na memória possui um endereço, que serve como um índice de acesso 1. O dado não é movido da memória: ele é lido e escrito em outra posição, para a qual o índice para a apontar. O dado não é apagado da memória: o índice que apontava para ele é apagado; ou a posição que ele ocupava é sobreescrita com dados diferentes. 1Estes índices de acesso são o endereço de acesso da memória. Em algumas linguagens de Programação, notadamente no C e no C++, estes índices podem ser manipulados diretamente sob o nome de ponteiros (pointer) 37 6.1.1 Representação da Informação na Memória Como já apresentado, a menor representação da informação em um sistema de computador é o bit, ou seja: 0/1. Em dispositivos de memória isto pode representar ausência/presença de diferença de potencial elétrico, campo eletromagnético ou luz. Um grupamento de bit na memória se denomina célula. O termo célula é mais usual na memória principal. Nas demais memórias encontramos definições como bloco, setor, cluster, etc.. Importante é saber que esses blocos são tratados de forma única nas operações sobre a memória, ou seja, são gravados, movidos, apagados e escritos de forma única. 6.1.2 Localização dos dados nas memórias A localização é realizada pelo endereçamento da célula de memoria, iniciando a contagem em 0,e terminando em N − 1, sendo N o número total de células. 6.1.3 Operações sobre a memória Armazenar − > escrita ou gravação Retirar − > leitura ou recuperação A leitura NÃO é destrutiva. Figura 6.1: Gravação @ [MON07] 38 Figura 6.2: Escrita @ [MON07] 6.2 Hierarquia de Memória Um computador possui diversas memórias que são utilizadas em uma organização hierarquizada (figura 6.3). Características importantes para definir o uso da memória são seu tempo de acesso, capacidade, volatilidade, tecnologia de fabricação, temporariedade e o custo : tempo de acesso tempo medido entre a requisição da informação e sua disponibilização. A memoria RAM e ROM tem ordem de grandeza semelhante quanto a tempo de acesso. Memórias como CD-ROM, BD, DVD, HD, Fita, possuem tempos muito maiores, dependentes da tecnologia. Alguns dispositivos possuem cache própria.2 capacidade é medida em bytes, comumente. A medida de células pode ser adotada, mas não é padrão, pois as células não possuem tamanho padronizado. O tamanho das células e registradores normalmente é apresentado em bits. 2O tempo de acesso é medido sobre caso médio. Para sistemas de tempo real esta medida deve ser repensada e deve-se proceder o estudo do pior caso. 39 Figura 6.3: Hierarquia de Memória @ [MON07] volatilidade - memorias não-voláteis mantém a informação armazenada mesmo sem provimento de energia (ex.: DVD, ROM, EPROM...). Já a memória volátil depende de circuito energizado para manutenção da informação armazenada (ex.: RAM, CACHE; Registradores) tecnologia de fabricação - este parâmetro envolve uma série de restrições, tais como dimensão, necessidade de peças móveis, necessidade de manutenção, etc. Ex.: memórias de semicondutores, de meio magnético e meio óptico. temporariedade diz respeito ao tempo no qual se garante a manutenção da informação gravada. Memorias transitórias destinam-se a operações em tempo de execução e permanentes á manutenção dos dados. custo Fator que tem reduzido muito devido à produção de escala. Porém novas tecnologias tendem a apresentas elevado custo, como os atuais discos de estado sólido. 40 6.2.1 Registradores O registrador de instruções tem como finalidade armazenar os dados que são consumidos pelo processador e seus componentes na execução da computação. Os registradores se localizam dentro da UCP, e seu tempo de acesso é de um (01) ciclo de memória, o menor tempo de acesso de um sistema, medido sobre unidades de nanosegundos em um processador de computador. Os registradores tipicamente possuem poucos bits (8 a 64, por exemplo). 6.2.2 Memória Cache A cada ciclo de execução da UCP, o computador precisa acessar a memória (principal) uma ou mais vezes. Como o tempo de acesso a esta memoria (ciclo) é maior do que o ciclo de execução da UCP, a memória passa a ser um gargalo para desempenho do sistema. Uma solução adotada para melhorar o desempenho é o uso de memória Cache, que fica em posição inter- mediária entre a CPU e a memória principal. A CACHE usa tecnologia similar a CPU e tem tempos de acesso melhores que as RAM. Os computadores modernos incluem um ou dois níveis de cache dentro do encapsulamento do processador. Em encapsulamentos de vários núcleos existe o conceito de cache compartilhada e cache individual, sendo que o arranjo pode ser diferente em liveis também diversos. 6.2.3 Memória Principal Memória básica de um sistema de computação desde sua concepção teórica. É neste dispositivo que os programas são “carregados” com seus dados de execução. Aqui a CPU lê as instruções cuja sequencia de execução forma o programa. O tempo de acesso deve ser rápido. Normalmente se constitui de memorias RAM. Existem diversos tipos no mercado, devido principalmente a rápida evolução da tecnologia. 6.2.4 Memória Secundária Apresenta a maior capacidade de armazenamento, menor custo e normalmente é permanente. As atuais soluções distribuídas não possibilitam uma clara percepção de onde o dado está armazenado, ou qual é sua memoria secundária. A nuvem é um conceito que ainda carece de definição. Dispositivos off line, pendriver, hd externo, HD, microSD são exemplos de memórias secundárias. O tempo de acesso elevado e baixo custo são características marcantes destas memórias. 41 6.3 Memória Principal 6.3.1 Organização da Memória Principal Conceitos básicos: A UCP e a MP trabalham diretamente conectadas por barramentos. Os programas ficam armazenados para execução na MP, e as instruções são lidas e executadas de forma sequencial. palavra - teoricamente a MP deveria ser organizadas em palavras, que seriam acessadas diretamente pelo processador, contudo isso não ocorre na prática, pois os fabricantes adotam padrão diferente. endereço, conteúdo e posição são conceitos diferentes. unidade de armazenamento – são as células de memória, endereçadas inequivocamente. A Unidade de Armazenamento DEVERIA ser a palavra, porém na prática isto não se verifica real. Unidade de transferência – pode ser valor diverso da Unidade de Armazenamento e da palavra. 6.3.2 Considerações A mediada de capacidade mede-se em bytes, mas isso não significa que a memória esteja estruturada em células de 1 byte. 6.3.3 Operações sobre a memória principal Leitura Utiliza: Barramento de Dados - interliga o Registrador de Dados de Memória (RDM) à MP. Registrador de Dados de Memória (RDM) Armazena temporariamente a informação a ser transferida (conteúdo de uma ou mais células). Armazena o conteúdo da palavra. Registrador de Endereços de Memória (REM) Armazena temporariamente o endereço de acesso a uma posição da memoria. Este endereço é usado para localizar a informação pelo sistema de controle da MP. 42 Barramento de Endereços interliga o REM a MP para transferência dos bits que representam um endereço. Barramento de Controle interliga o UCP a MP para transferência de sinais de controle durante leitura e gravação. É bidirecional e pode enviar sinais solicitando a UCP aguardar a MP. Passos da leitura ver figura 6.4 1. REM < − de registrador da UCP 2. O endereço vai para o barramento de endereços 3. sinal informado que é operação de leitura entra no barramento de controle 4. decodifica-se o endereço e se localiza a célula 5. RDM < − MP (REM) pelo Barramento de Dados 6. Para outro registrador da UCP < − RDM 43 Figura 6.4: Leitura @ [MON07] Escrita Utiliza a mesma estrutura que a leitura. Ver a operação de escrita na figura 6.5, acompanhando com os passos abaixo: 1. REM < − de registrador da UCP 2. O endereço vai para o barramento de endereços 44 3. RDM < − outro registrador – a UCP coloca o dado a ser escrito 4. sinal informado que é operação de escrita entra no barramento de controle 5. MP (REM)< − RDM – o dado do barramento é escrito na posição indicada por REM na MP Figura 6.5: Escrita @ [MON07] 45 6.3.4 Capacidade da Memória Principal Para efeito deste curso considera-se-á as informações dadas no item 2.2, que apresenta o calculo de capacidade em bytes. 46 6.3.5 Tipos de Memoria Principal Figura 6.6: RAM - tipos @ [MON07] 47 6.4 Erros Podem ocorrer erros devido a diversos fatores, principalmente ligados a interferências eletromagnéticas, durante a transmissão de dados entre memória e UCP. Para detectar estes erros os dados são submetidos a verificação (seguindo um algorítimo), e caso detectadas falhas os dados são novamente solicitados. 6.5 Memória Cache O uso das memórias cache deve-se a necessidade de reduzir o tempo em que a UCP permanece em estado de espera, aguardando operações da MP e a constatação que a maior parte dos dados lidos pela UCP são dados que foram acessados em tempo recente (localidade temporal) ou que se encontram em endereço próximo ao que recentemente foi acessado (localidade espacial) Desta situação surgiu a solução de engenharia de memórias cache. 6.5.1 Utilização • Sempre que a UCP tenta buscar um dado, após a busca inicial, ela acessa a cache. • se o dado estiver na cache, tem-se um acerto • se não estiver, temos uma perda, neste caso o programa interrompe e transfere parte dos dados da MP para cache, usando o principio de localidade espacial. A taxa de acertos é em torno de 80% a 90%. 6.5.2 Tipos de Memoria de Cache Em relação a CPU < − >MP - cache de RAM (L1, L2, L3) Em relação a MP< − >MS (Discos) - cache de disco 48 Capítulo 7 Unidade Central de Processamento (UCP) 7.1 Introdução A leitura de referencia para o tema é [MON07], capítulo 6 Apresentação básica através de diagrama apresentado na figura 7.1 (acompanhar pelo livro texto): 7.2 Funções Básicas A UCP é responsável pela execução de todas operações atribuídas ao computador, é o componente que executa o algorítmo, utilizando dados de entrada e da memória, e apresentando os resultados nos dispositivos de saída. 7.2.1 Função Processamento Seu nome decorre do motivo de executar operações sobre dados, ou seja, processamento: • operações aritméticas • operações lógicas • desvios (alteração na execução) • movimentação de dados • operações de entrada e saída 49 Unidade logica Aritmética Principal componente do processamento, a UAL executa operações com um dois valores, oferecendo uma saída. Um barramento interno conduz dados aos registradores, e destes a L1/L2, quando existentes. Registradores Armazenam temporariamente dados que são manipulados pela UAL 7.2.2 Função Controle A UCP possui uma área de controle responsável por manter o controle das instruções que alimentam o proces- samento da UAL. Os dispositivos que participam da função de controle são: • unidade de controle • decodificador • Registrador de Instrução (RI) • Contador de Instrução (CI) • Relógio • Registrador de Endereço de Memória (REM) • Registrador de Dados da Memória (RDM) Unidade de Controle Possui a lógica necessária para movimentar dados de e para a UCP. Se conecta aos elementos pelo barramento de controle. Relógio Gerador de pulsos que são usados para controlar os ciclos de execução. Registrador de Instrução Armazena da próxima instrução a ser executada pula UCP. Assim que esta instrução é executada, a próxima é registrada no RI, através do barramento de dados e RDM. 50 Contador de Instrução Armazena o endereço da próxima instrução a ser executada. Assim que esta instrução é transferida para a UCP um novo valor é registrado no RCI, indicando a próxima instrução a ser buscada. Decodificador de Instrução Recebe a instrução a ser executada (sequencia de bit) e transfere a mesma para a UC, que controla a execução. Registrador de dados em Memória e de Endereços de Memória 7.3 O ciclo de instrução Ver figura 7.2 51 Figura 7.1: Esquema básico de UCP @ [MON07] 52 Figura 7.2: Fluxograma do Ciclo de Instrução @ [MON07] 53 54 Capítulo 8 Entrada e Saída de Dados 8.1 Introdução A leitura de referencia para o tema é [MON07], capítulo 10 Considerem o conjunto MP/UCP. Este é o núcleo do computador, responsável pelo processamento. Todos dispositivos que não pertencem a este conjunto MP/CPU fica na periferia do computador, ou seja, são periféricos. Os periféricos são responsáveis por prover e receber informações do conjunto MP/CPU1. Seguindo o posicionamento de [MON07] manteremos como sinônimos dispositivos de entrada e saída e periféricos. Estes dispositivos são imprescindíveis para permitir que um computador envie e receba informações de usuários e de outros sistemas, sejam sistemas computacionais ou fontes de dados. Em um cenário que favorece a existência de computação distribuída o processamento do computador depende mais e mais desta comunicação. Como apresentado nas aulas anteriores, a CPU se comunica com a MP através de Barramentos, sejam: Barramento de Dados, de Endereços e de Controle. Estes mesmo barramentos são utilizados para acesso aos dispositivos de Entrada e Saída (ES) e suas funcio- nalidades, conforme apresentado na figura 8.1, obtida em http://www.artigonal.com/tecnologia-artigos/ processadores-evolucao-sem-limites-parte-1-4206067.html: 8.2 Interfaces de ES O texto até agora vem se referindo a Dispositivo de ES. Ocorre que existe uma enorme diversidade de tipos de dispositivos e para cada tipo diversos fabricantes e modelos. Esta explosão combinatória impediria construir CPU que pudesse garantir a comunicação com todas possibilidades. Para tratar essa questão, a solução de engenharia é utilizar interfaces padronizadas: A CPU/MP nao se comunica com o dispositivo, somente com a sua interface. Desta forma, a CPU não precisa conhecer as especi- 1Considerando esta definição, vale lembrar que os dispositivos de Memória Secundária (DVD, HD, .. ) também são periféricos 55 Figura 8.1: Barramento de comunicação ficidades de cada dispositivo. Esta solução também atende outras duas questões, que são a velocidade (ou taxa) de transferência de dados e a unidade de transferência (ex. bit, palavra) usada no periférico. Então, pode-se definir a Interface de ES como um dispositivo intermediário entre a MP/CPU e o Dispositivo periférico, que é responsável por: • Controlar e sincronizar o fluxo de dados entre CPU/MP e o dispositivo de ES; • Realizar a comunicação com a UCP, interpretando suas instruções e sinais de controle para acesso físico; • Manter memória temporária (buffer) para transito de informações; e • Realizar a detecção e correção de erros 8.2.1 Transmissão serial Na transmissão serial os dados são enviados bit a bit (um de cada vez) entre a interface de ES e o Dispositivo de ES. Isto não afeta a comunicação nos barramentos internos (dados, controle e endereços), que é paralela. assíncrona Os bits são precedidos de pulsos de start/stop. A implementação do hardware é mais simples, porém menos eficiente, atingindo taxas mais baixas. Adequado a dispositivos que nao dependem de velocidade elevada, como 56 mouse e teclado, terminais TTY. Não é comum nos computadores modernos. síncrona Os bits de dados são intercalados com sinais de controle. A transferência de dados ocorre em blocos. Muito mais eficiente, mas exige controladoras mais “inteligentes”. Ex: UART; USB. 8.2.2 Transmissão paralela Os bits são transmitidos em grupos de bits simultaneamente. Existe física limitação sobre o comprimento do barramento (as conexões seriais normalmente permitem conexões mais longas que as paralelas) 8.3 Dispositivos de ES Um dispositivo pode realizar somente a função de entrada de dados (ex. mouse), a de saída (ex. teclado) ou ambas (ex. tela touch)2. Exemplos de Dispositivos de Entrada e Saída: 1. Mouse 2. Unidades ópticas 3. Discos magnéticos 4. Fitas Magnéticas 5. Impressoras 6. Monitor de Vídeo 7. Teclado 2Lembrando que isto não implica em afirmar que a comunicação seria unidirecional. 57 58 Parte III Introdução a Sistemas Operacionais 59 Capítulo 9 Conceitos Básicos Item 01 de [MM04]. O Sistema Operacional (SO) é formado por um conjunto de processos executado pelo processador de forma semelhante a outros programas. O Sistema operacional (SO) controla o funcionamento do computador, gerenciando o uso e o compartilha- mento dos recursos, tais como memória, processador e dispositivos de entrada e saída. Características de um Sistema Operacional As principais funções do SO são: 1. Facilidade de Acesso aos recursos do Sistema – interface para os recursos 2. Compartilhamento de recursos de forma organizada e protegida – acesso concorrente a disco, impressora, rede, etc.. Desta forma, um computador que utilize um SO poderá ser vista como uma Máquina de Níveis, com camadas abaixo enumeradas: 1. Circuitos Eletrônicos 2. Microprogramação 3. Linguagem de Máquina 4. Sistema Operacional 5. Utilitários 6. Aplicações Para efeito de estudo, os SO podem ser classificados em diferentes tipos, conforme será apresentado a seguir. 61 9.1 Tipos de Sistemas Operacionais Item 1.5 de [MM04]. Os tipos se relacionam fortemente ao hardware e sua evolução, pois a oferta de nova capacidade computacional e recursos é que permitiu a construção de sistemas operacionais mais complexos. 9.1.1 Sistemas Monoprogramáveis /Monotarefa Item 1.5.1 de [MM04]. Permitem a execução de um único programas. Após inicializar o computador, o programa era carregado na memória principal e executado. Após iniciar um programa, era necessário esperar seu encerramento, o que implicava em liberar a memória principal, antes de carregar outro programa. Isto porque o SO dedicava o uso do Processador, Memória Principal e Dispositivos de Entrada e Saída a este programa. São mais simples, porque não precisam gerenciar concorrência, porém obviamente subutilizam recursos. Foram adotados até a década de 60 em computadores de porte e voltaram a ser utilizados durante a década de 70 em Personal Computers (PC) limitados por recursos e que se destinavam a um único programa em execução. 9.1.2 Sistemas Multiprogramáveis / Multitarefa Item 1.5.2 de [MM04]. Surgiram como uma evolução dos sistemas monotarefa. Permitem o compartilhamento de recursos, com várias aplicações acessando memória, processador e perifé- ricos. Ocorre clara otimização de recursos, porém a implementação destes SO é muito complexa. Estes sistemas podem ser classificados quanto ao número de usuários que interagem com o SO e quanto a forma pela qual as aplicações são gerenciadas. Classificação quanto ao número de Usuários Sistemas Multiprogramáveis Monousuário são aqueles em que apenas um usuários interage com a má- quina, porém fica mantida a possibilidade de executar diversas ações simultaneamente, em ambiente multitarefa. Sistemas Multiprogramáveis Multiusuário são aqueles em que diversos usuários podem interagir simul- taneamente com a máquina, cada qual executando suas tarefas. Classificação quanto a forma pela qual as aplicações são gerenciadas Sistemas Batch Os programas são organizados em jobs que são agendados ou colocados em filas de proces- samento. 62 Não existe interação com usuários. Os resultados são arquivados para uso posterior. Sistemas de tempo compartilhado Os programas a serem executados podem ser carregados em memória durante a execução dos outros. O sistema operacional trata cada programa como uma linha de processamento e interrompe periodicamente a execução de cada programa para continuar a dos outros. O tempo de execução é dividido em fatias que são organizadamente distribuídas entre todos programas em execução. A divisão do tempo de execução em fatias é a técnica conhecida por slice-time. Essa técnica é conhecida por time- sharing (sinônimo). Sistemas de tempo real Semelhantes a time-sharing, mas com requisitos de atendimento de tempo agendado rígidos. A corretude da execução não depende só da lógica de programação, mas também da execução no tempo previsto para cada ação. Existe o conceito de Hard and Soft real-time. Esses conceitos dizem respeito ao nível de flexibilidade do erro admissível na execução do programa. 9.1.3 Sistemas de Múltiplos Processadores Item 1.5.3 de [MM04]. Sistemas fortemente acoplados Memoria centralizada : existe um endereçamento único de memória prin- cipal, que é compartilhada por todos os processadores e dispositivos de entrada e saída. Há um único conjunto de parramentos (barramento de endereços, memória e controle) que é partilhados pelos componentes do computador. Sistemas fracamente acoplados Cada processador possui seu conjunto de barramentos (endereços, controle e dados), bem como acesso dedicado a interfaces de E/S e um conjunto próprio de Memória Principal. Em outras palavras, a memória principal é segregada por processador, com endereços individualizados, e um processador não tem acesso a memória dos outros. Existe uma conexão para comunicação entre as CPU. 9.2 Pipelining Item 2.2.7 de [MM04]. 63 9.3 Exercício para Sala de Aula - Dia 11/10/2012 9.3.1 Tarefa 01 Considerando-se as classificações dos sistemas operacionais (itens do resumo: 9.1,9.1.1,9.1.2,9.1.2,9.1.2), classi- fique os sistemas abaixo: 1. DOS 2. WinXP 3. Win7 4. OSX 5. UNIX 6. BSD 7. Linux OpenSuse 8. VMS 9. QNX 9.3.2 Tarefa 02 Explique a diferença entre sistemas fortemente acoplados e fracamente acoplados (10 linas no máximo) 9.3.3 Tarefa 03 Pesquise o uso de tecnologia de pipeline em sistemas operacionais e resuma em no máximo 20 linhas o que é a tecnologia e quais vantagens a mesma oferece. 64 Capítulo 10 Concorrência Item 3 de [MM04]. Os sistemas operacionais podem ser vistos como um conjunto de rotinas que executam concorrentemente de forma ordenada. Isto é possível porque o processador executa instruções em paralelo à execução de operações de de E/S. O conceito de concorrência é a base para implementação de Sistemas Operacionais multiprogramáveis. O tempo do processador é particionado entre os programas em execução por slice times, e as operações de E/S executam em paralelo. Aspecto importante é que os programas são suspensos pela CPU, que passa a atender outro programa, mas por ocasião do retorno estes programas deve apresentar o mesmo estado que tinham por ocasião da sua suspensão. 10.1 Interrupção e Exceção Item 3.2 de [MM04]. A Interrupção e a Exceção são conceitos que representam a interrupção forçada, ou seja, não programada de um software. Alguns autores tratam ambos os eventos como sinônimos, porém adotaremos significados diferentes, conforme as definições a seguir: 10.1.1 Interrupção Mecanismo no qual se baseia a sincronização do SO para controle de rotinas, programas e dispositivos. A interrupção propriamente dita é gerada por um evento externo ao programa em execução, portanto in- depende do programa. Por exemplo, isto ocorre quando um dispositivo notifica p término de uma operação de 65 E/S. Isto forca o processador a interromper a execução de programas para tratar o evento. Ex.: a impressora notificando q o trabalho enviado esta completo. Interrupções são eventos assíncronos. 10.1.2 Exceção A exceção, por sua vez, é gerada internamente no programa e seu lançamento deve-se a ocorrência de um evento inesperado na execução do programa. A exceção tem ocorrência dita síncrona. Quando detectada o fluxo de execução é desviado para a rotina de tratamento da exceção. Estas rotinas são comumente escritas pelo próprio desenvolvedor do programa que gerou a exceção. 10.2 Buffering Item 3.3 de [MM04]. Técnica que usa uma área reservada da Memória Principal, denominada buffer, para transferência de dados entre dispositivos de E/S e a memória principal. A técnica pode ser ser vista como um “deposito temporário” de dados que permite tratar a questão de diferença de velocidade de leitura e gravação entre os dispositivos, bem como reservar dados para uso da CPU enquanto esta ainda não esta liberada para a interrupção e sincronização. 10.3 Spooling Item 3.5 de [MM04]. A técnica de Spooling (Simultaneous peripheral operation on-line) foi introduzida para aumentar a concor- rência e eficiência com que dispositivos de E/S são usados. É um deposito de dados em área da memória (por vezes na memória secundária) pelos programas em execução, dados que serão posteriormente utilizados para envio a um dispositivo de E/S. O exemplo mais comum é o spool de impressão, no qual todos programas registram as impressões a ser realizadas. Este arquivo é lido pelo SO sempre que uma tarefa é concluída, a fim de selecionar a próxima impressão que será executada. 10.4 Reentrância Item 3.6 de [MM04]. 66 Capítulo 11 Processos Item 5.1 de [MM04]. A implementação dos SO multiprogramados é baseada no conceito de processos. Uma vez que o processador não percebe a diferença entre a origem das tarefas que executa, cabe ao sistema operacional gerenciar os processos que representam diferentes programas em tempo de execução (cada programa esta sempre associado a um processo). Cada processo criado pelo SO apresenta necessariamente os contextos de hardware, software e o espaço de endereçamento (fig. 11.1 ). Figura 11.1: Contexto de um Processo @ [MM04]) 67 Contexto de Hardware Armazena o conteúdo de registradores gerais da UCP, além de registradores de uso especifico. Contexto de Software Contém informações sobre: • Identificação – Principalmente número (PID) de identificação e identificação do processo ou usuário (UID) que o criou. • Quotas – Limites de cada recurso do sistema que um processo pode alocar • Privilégios – o que o processo pode ou não fazer em relação ao sistema e aos outros processos. Espaço de Endereçamento Contém informações sobre: • Área da memória do processo onde o programa será executado e para dados utilizados por ele. Esta área não deve ser compartilhada com outros processos. 11.1 Bloco de controle do processo O Process Control Block (PCB) é uma estrutura onde o SO guarda todas as informações do processo. O PCB contem a identificação, prioridade, estado corrente, recursos alocados e informações sobre o programa em execução (fig. 11.2) 11.2 Estados dos Processos Item 5.3 de [MM04]. O processo possui 3 estados: espera; pronto e execução. Execução: o processo esta sendo executado na CPU. Espera: o processo está esperando algum evento externo ou por algum recurso para poder prosseguir seu processamento. Pronto: O processo está pronto e esperando para ser executado pela CPU. 68 Figura 11.2: Bloco de Controle de Processo @ [MM04]) 11.3 Mudança de Estados de um Processo Item 5.4 de [MM04]. Os estados residentes (que se encontram carregados em memória) podem sofre 4 diferentes tipos de transição de estados (fig. 11.3) Pronto –> Execução Quando um processo é criado, é colocado em uma lista de processos no estado pronto. Então é escolhido pelo sistema para ser executado. Execução –> Espera O processo passa para espera quando aguarda a conclusão de um evento solicitado. Espera –> Pronto O processo passa para pronto quando a operação solicitada é atendida ou o recurso esperado é concedido. Execução –> Pronto O processo passa de execução para pronto por eventos gerados pelo sistema. Existem processos que são deslocados da MP para MS, normalmente para tornar mais eficiente o uso da MP. Estes processos são ditos NÃO–RESIDENTES. A figura 11.4 apresenta a transição entre estados não–residentes e os residentes 69 Figura 11.3: Estados de Processos e Transições [MM04]) 11.4 Subprocessos e Threads Tipos de Processos Item 5.6 de [MM04]. 11.4.1 Subprocesso ou processo filho • São processos criados por um outro processo, de maneira hierárquica. • O subprocessos são eliminados quando o processo pai deixa de existir. • Permite dividir a aplicação para trabalhar de forma concorrente. • Cada processo e subprocesso possui seu ambiente e recursos alocados. 70 11.4.2 Thread ou Linha de Controle • No ambiente multi–thread cada processo pode responder a várias solicitações concorrentes ou mesmo simultaneamente, se houver mais de um processador. • Threads compartilham o processador da mesma forma que um processo. • Cada Thread possui seu próprio conjunto de registradores, porém compartilha o mesmo espaço de ende- reçamento com as demais threads do processo – isso permite uma rápida comunicação entre threads. • Uma Thread pode alterar os dados de outra Thread (desde que ocupem o mesmo espaço de endereçamento). 11.5 Comunicação entre Processos Item 5.7, 5.8 e 5.9 de [MM04]. (O ITEM “Comunicação entre Processos” NÃO SERÁ OBJETO DE AVALIAÇÃO ) 71 Figura 11.4: Processos Residentes e não-Residentes @ [MM04] 72 Capítulo 12 Gerência do Processador Item 8 de [MM04]. Considerando a existência de sistemas multiprogramáveis, onde múltiplos processos podem permanecer na memória principal e competir pelo uso do processador, a gerência do uso deste passou a ser uma das atividades mais importantes do sistema operacional. Esta situação é mais complexa em sistemas de múltiplos processadores, pois a gerencia deve considerar o núcleo de execução dentre os existentes. Para efeito do curso consideraremos máquinas com um único proces- sador. Em uma forma simplista, podemos afirmar que a política de escalonamento de um SO é a forma com que este seleciona os processos que entrarão em estado de execução, dentre os processos que se encontram em estado de pronto. Observação: a referencia principal do curso, [MM04], usa o temo escalonador como tradução de scheduler. A literatura também adota o termo agendador para esta tradução. Os critérios abaixo são considerados na definição da política de escalonamento: • Utilização do processador • Throughput • Tempo de Processador • Tempo de Espera • Tempo de Turnaround • Tempo de Resposta • ..... 73 12.1 Escalonamentos Preemptivos e Não-Preemptivos Item 8.4 de [MM04]. A preempção define a capacidade que um SO possui de interromper a execução de um processo em estado de execução e substituí-lo por outro. 12.1.1 escalonamento não-preemptivo O escalonamento não-preemptivo foi o primeiro a ser usado, ainda nos sistemas de Batch. A execução somente para quando o processo se encerra, por haver terminado sua computação, ou quando uma instrução de código do próprio processo determina esta parada. 12.1.2 escalonamento preemptivo O escalonamento preemptivo , por sua vez, permite esta interrupção e desta forma gerencia de forma mais eficiente o tempo de processador. É necessário para existência de sistemas de tempo-real. Hoje a maior parte dos SO possui escalonamento preemptivo. 74 Capítulo 13 Gerência de Memória Item 9.1 e 9.2 de [MM04]. A memória era um recurso escasso e caro, e por este motivo projetistas de SO dedicava muito cuidado à gerência de memória. Apesar da atual redução de custos da memória, esta necessidade ainda persiste. Isto porque os sistemas modernos devem tratar questões como múltiplos processos, reentrância, agendamen- tos preemptivos de processos e suas consequências, etc. 13.1 Funções básicas Os programas são normalmente mantidos e memória secundária (MS), devido ao custo, capacidade e não- volatilidade da mesma. Contudo o processador somente consegue manipular os dados residentes na memória principal (MP). Como a MS possui tempos de acesso muito superiores aos da MP, é razoável que o processador tente manter o máximo de processos residentes na MP, estejam em estado de pronto ou não (ie. processos residentes). Mesmo mantendo o máximo de dados na MP, o SO deve ser capaz de transferir novos processos para a mesma, e isto é possível através de técnicas de transferências de dados entre MP e MS (ex. Swapping). 13.2 Alocação Contígua Simples Item 9.3 de [MM04]. A alocação contígua simples é uma técnica simplista, utilizada nos primeiros SO quando a memória era muito reduzida e o sistema monoprogramável. A memória é dividida em duas áreas: uma para o SO e outra para o programa em execução (que é apenas um). O programador deve ter cuidado em não ultrapassar os limites destinados ao programa, o que é possível. 75 Alguns SO utilizaram salvaguarda que, através de um registrador, tentava detectar o acesso à área reservada e encerrava o programa com uma mensagem de erro. A implementação da abordagem é simples, porém pouco eficiente para o cenário atual no qual vários GB de memória estão disponíveis. 13.3 Alocação Particionada Item 9.5 de [MM04]. Técnica que alocação que permite a existência de diversos programas simultaneamente na memória, geren- ciado pelo SO. Não se vislumbra um SO moderno que não suporte estas técnicas. 13.3.1 Alocação Particionada Estática ou Fixa Tipo mais antigo de particionamento. Quando o SO era inicializado, as PARTIÇÕES de memória eram criadas com tamanho fixo. Para alterar o tamanho de uma partição a reinicialização do SO era necessária. Alocação Particionada Estática Absoluta Esta técnica previa que o endereçamento usado pelo programa era absoluto em relação a memória. Isso não permitia o uso de outras partições, pois o programa tinha que ser executado naquela área de endereçamento específica. Alocação Particionada Estática Realocável A evolução das ferramentas de construção dos programas e das linguagens permitiu construir programas que não faziam mas referencia a um endereço específico, mas sim a posição relativa ao primeiro endereço do bloco ou partição ocupado pelo código em execução. Aqui se cria o CÓDIGO REALOCÁVEL. Desta forma o que define a partição aonde um programa será executado é o tamanho da partição, não existindo amarração direta entre programa e partição. Para controlar a alocação, são usados dois registradores com posição inicial e final de cada partição. Fragmentação Interna é o conjunto de áreas de memória não aproveitadas na alocação particionada estática. 13.3.2 Alocação Particionada Dinâmica Para reduzir a fragmentação interna e melhor aproveitar os recursos do sistema, foi desenvolvida a Alocação Particionada Dinâmica ou Variável. 76 De maneira resumida, o sistema cria partições dinamicamente com o tamanho adequado ao programa que será executado, eliminando a Fragmentação Interna. Contudo surge a fragmentação EXTERNA. 13.4 Swapping Item 9.6 de [MM04]. Técnica que visa o uso da MS em substituição da MP, para sanar ou mitigar as consequências da falta de recursos. O objetivo é permitir a execução de programas que esperam a existência de memória principal livre para ser executado. Como ocorre: • O SO escolhe um processo residente com pouca chance de ser executado e o transfere para a MS (Swap out); • O programa que estava esperando é executado; • Quando ocorre liberação de recurso, o processo que estava na Swap é novamente transferido para a MP (Swap in); • O processo executa de forma transparente. Um ponto importante, e que definiu o sucesso da técnica, foi a não necessidade de adaptações dos programas, ou seja, o SO executa toda tarefa. 77 78 Capítulo 14 Gerência de Memória Virtual Item 10.1 de [MM04]. As técnicas apresentadas no Capítulo 13 desta apostila se mostraram ineficientes ao longo do tempo, pois não conseguiam resolver os problemas decorrentes da fragmentação e limitavam o tamanho dos programas a serem executados. Em decorrência desta situação, surgiu o conceito de Memória Virtual. Memória Virtual é uma técnica de gerencia de memória pela qual a memória principal (MP) e a secundária (MS) são combinadas. A técnica baseia-se em não vincular endereços usados pelos programas a endereços reais da MP. Isto permite ultrapassar a MP e usar a MS sem que os processos em execução percebam a diferença. A técnica permite acompanhar mais processos, pois apenas parte destes deverá estar residente na MP (parte de cada processo poderá estar persistida na MS). Isto permite um uso mais eficiente do processador além de reduzir o problema da fragmentação. A seguir serão discutidas as duas principais técnicas de implementação da memória virtual, a paginação e a segmentação. Conquanto não vá ser abordada, é possível uma implementação mista usando as duas técnicas. 14.1 Paginação Item 10.4 de [MM04]. Paginação é uma técnica de gerencia de memória na qual a memória virtual e a real são divididas em blocos do mesmo tamanho chamados páginas. A memória virtual é dividida em páginas virtuais e a real em páginas reais ou frames. O mapeamento dos endereços virtuais em reais é realizado através de tabelas de páginas. Cada processo possui sua própria tabela de páginas, sendo que cada página virtual pertencente a este processo possui uma entrada na citada tabela de páginas. Isto é necessário para se localizar a informação na memória virtual. 79 Na paginação, cada endereço é formado pelo número de pagina virtual - NPV e pelo deslocamento, que indica a posição no interior da página. A exemplo do que acontece com a memória cache, um conjunto de páginas possui cópia na MP. Quando uma página é buscada, verifica-se primeiro se ela possui cópia na MP. Se a cópia não existir, ocorre um page fault, e a página é então transferida ma MS para a MP, em um processo conhecido como page in ou paginação. o numero de ocorrências de page fault por unidade de tempo define, então, a taxa de paginação. 14.1.1 Politica de busca de páginas Determina quando uma página deve ser carregada para a memória. As políticas são as a seguir: Paginação por demanda: as paginas são transferidas da MS para a MP somente quando referenciadas por um processo. A vantagem desta abordagem é que partes do código que não serão executadas como tratamento de erro, nunca serão carregadas na MP. Paginação Antecipada: o sistema tenta prever quais paginas serão acessadas e as carrega antecipadamente. Esta abordagem otimiza os recursos de E/S ao transferir blocos de dados maiores, além de reduzir, em teoria, a possibilidade de page fault. Contra a abordagem pesa o fato que dados desnecessários são carregados na memória. 14.1.2 Politica de Alocação de páginas Determina quantos frames ou paginas reais cada processo pode manter na MP. As políticas são Política de Alocação Fixa e a Política de Alocação Variável. 14.2 Segmentação Item 10.5 de [MM04]. A memória virtual por segmentação é uma técnica que divide a memória virtual em segmentos, os quais podem possuir tamanhos variados em função dos processos e sub rotinas destes. Um ponto de destaque é que existe uma relação entre o programa e o tamanho dos segmentos: o compilador é que, normalmente, indicará o tamanho dos segmentos que serão usados em tempo de execução. Os segmentos de memória pode representar estruturas de dados, vetores, pilhas, rotinas, etc. Existe um espaço de endereçamento que limita o número máximo de endereços que pode existir, contudo o tamanho dos segmentos pode variar em tempo de execução. O mecanismo de mapeamento é semelhante ao de paginação,com os seguintes elementos: • Tabela de Mapeamento de Segmento (TMS) 80 • Número de Segmento Virtual (NSV) e deslocamento A principal vantagem desta abordagem em relação à paginação é a facilidade de lidar com estruturas que variam seu tamanho dinamicamente. Para tirar proveito desta tecnologia os programas devem estar corretamente modularizados, e o compilador deve considerar a abordagem quando realiza a montagem dos programas. 14.3 Fragmentação de memória virtual • A paginação sofre fragmentação interna; e • A segmentação sofre fragmentação externa. 81 82 Capítulo 15 Sistemas de Arquivos 15.1 Gerência de Arquivos Item 11.2 de [MM04]. A gravação e recuperação de dados de forma permanente é uma atividade importante na computação. A forma em que essses dados são gravados e gerenciados pelo Sistema Operacional são os Arquivos. A parte responsável pela gerencia de arquivos é o Sistema de Arquivos. Arquivos são constituídos por informação logicamente relacionada. Es informações podem representar ar- quivos executáveis ou de dados. Alguns sistemas operacionais dividiram o nome do arquivo em duas artes, separadas por um ponto. O sufixo indicava a função exercida por este arquivo. Aplicativos tiraram vantagem deste padrão para indicar os arquivos que poderiam manipular (ex. .doc, .txt, .docx). 15.1.1 Organização de Arquivos Item 11.2.1 de [MM04]. A organização de arquivos diz respeito a forma com que os dados são armazenados. A estrutura de dados utilizada pode variar conforme o fim a que se destina o arquivo ou de acordo com o SO usado. 15.2 Diretórios Item 11.3 de [MM04]. A Estrutura de Diretórios é o modelo usado pelo sistema operacional para organizar logicamente os arquivos contidos no disco. O diretório é uma estrutura que reúne dados sobre os arquivos (metadados), tais como localização nome, etc. . É a estrutura de diretórios que permite se localizar um arquivo em disco. 83 15.3 Alocação de Espaço em Disco Item 11.5 de [MM04]. São técnicas sobre como distribuir dados no disco e que afetam a recuperação dos mesmos. As principais são as abaixo descritas: 15.3.1 Alocação Contígua 15.3.2 Alocação Encadeada 15.3.3 Alocação Indexada 84 Capítulo 16 Gerência de Dispositivos Item 12.1 de [MM04]. fonte: http://www.cybertechcse.com.br/sistOperacionais/Frame.htm A gerência de dispositivos é o meio através do qual todos os dispositivos de E/S são controlados a fim de se obter o maior compartilhamento possível entre os diversos usuários de forma estável e segura. Alguns dispositivos, tal como os discos, podem ser compartilhados simultaneamente por diversos usuários, sendo o Sistema Operacional responsável pela integridade dos dados. Já dispositivos como impressoras, por exemplo, devem ter acesso exclusivo, sendo dever do sistema controlar seu compartilhamento de forma organizada. Para atender a diversidade de dispositivos de E/S e ao mesmo tempo tratar a complexidade decorrente, a gerencia de dispositivos utiliza uma arquitetura em camadas, apresentada na figura 16.1. As camadas se dividem em um grupo que independe de qual dispositivo será acessado, e outro que é depen- dente deste hardware. 16.1 Operações de Entrada e Saída Item 12.2 e 12.3 de [MM04]. O sistema Operacional deve permitir o fácil acesos aos dispositivos de E/S pelos processos executados, devendo se comunicar com qualquer tipo de dispositivo conectado ao computador. Isto significa ser independente destes dispositivos. O acesso à dispositivos é realizado através bibliotecas. As atuais linguagens de programação de auto nível permitem portabilidade. A independência de dispositivos deve ser realizada através de system calls, chamadas de system calls de entrada/saída, presentes na camada de mais alto nível implementada pelo sistema operacional. Resumidamente, o SO permite que o usuário acesse os dispositivos sem se preocupar com detalhes de im- plementação. A comunicação é feita através das bibliotecas e System Calls são realizadas com passagens de 85 parâmetros. Objetivos da System Calls, neste caso, é esconder do programador características associadas à programação de cada dispositivo. 16.2 Device Drivers Item 12.4 de [MM04]. Os Device Drivers comunicação com dispositivos de Entrada/Saída em alto nível de hardware, geralmente através de controladores, especificando características físicas de cada dispositivo. Subsistemas de E/S trata de funções que afetam todos os dispositivos e os Drivers tratam apenas dos seus aspectos particulares. Cada Device Driver controla apenas um tipo de dispositivo ou grupo de dispositivos semelhantes. Eles tem a responsabilidade de receber comandos gerais sobre acessos aos dispositivos, geralmente System Calls, e traduzi-los para comandos específicos para serem executados pelos controladores. Um mesmo dispositivo normalmente possui diferentes Device Drivers para cada sistema operacional, isto porque a compilação é dedicada. Quando um novo dispositivo é adicionado, o seu driver deve ser instalado caso ele já não esteja incluído na distribuição do SO. 16.3 Controladores Item 12.5 de [MM04]. São componentes eletrônicos responsáveis por intermediar o acesso direto aos dispositivos de E/S. Normal- mente o SO se comunica com os controladores e não com os dispositivos. O controlador geralmente possui memória e registradores próprios para poder executar instruções de baixo nível enviadas pelo driver que são responsáveis pela interface entre o controlador e o dispositivo. O SO, através do driver, armazena comandos de E/S nos registradores e/ou memória do controlador, possibilitando a UCP permanecer livre para executar outras tarefas. 86 Figura 16.1: Gerencia de Dispositivos (copia de @ [MM04]) 87 88 Referências Bibliográficas [Dav91] W.S. Davis, Sistemas operacionais; uma visao sistematica, Campus, 1991. [MM04] F.B. MACHADO and L.P. Maia, Arquitetura de sistemas operacionais, LTC, 2004. [MON07] M.A. MONTEIRO, Introdução à organização de computadores, LTC, 2007. [Sil08] A. Silberschatz, Sistemas operacionais com java, CAMPUS, 2008. [Tan06] A.S. Tanenbaum, Sistemas operacionais modernos, PRENTICE HALL BRASIL, 2006. [Tan07] , Organização estruturada de computadores, PRENTICE HALL BRASIL, 2007. 89 90 Glossary Máquina de Estados O conceito é concebido como uma máquina abstrata que deve estar em um de seus finitos estados. A máquina está em apenas um estado por vez, este estado é chamado de estado atual. 7 91 92 Acronyms CPU Central processing unit. 8 93 Índice Remissivo Arquivos, 13 Bits, 11 Bytes, 12 Caractere, 12 Componentes de um Sistema de Computação, 9 Contingências, 33 Contradição, 33 Palavra, 12 Processamento de Dados, 9 Registros, 13 Sistemas, 9 Sistemas de Computação, 9 Tautologia, 32 94 I Informações gerais sobre a disciplina e Apresentação da Ementa II Introdução Arquitetura de Computadores Introdução Conceitos Processamento de Dados Sistemas Sistemas de Computação Componentes de um Sistema de Computação Representação da Informação Bits Bytes Palavra Caractere Arquivos Registros Coversão de Bases Notação Posicional - Base 10 ou Decimal Outras Bases de Numeração e conversão para Base 10 Exemplo de Conversão para base 10 Conversão de Bases Conversão de Bases Potência de 2 Decimal para outra base Exercícios Aritmética Não-Decimal Aritmética binária Soma binária Subtração binária Multiplicação Binária Divisão Binária Aritmética Hexadecimal e Octadecimal Soma Hexa/Octadecimal Subtração Hexa/Octadecimal Limites Reais Noções sobre Lógica Digital Portas ou Operações Lógicas Porta AND (``E'') Porta OR (``OU'') Porta NOT (``negação'') Porta NAND - NOT AND Porta NOR - NOT OR Porta XOR - ``OU Exclusivo'' Expressões Lógicas – Aplicação de Portas Cálculo com Expressões Lógicas Casos particulares - Tautologias, Contradições e Contingências Se...Então ....Se e Somente Se... Exemplos de Aplicação - Circuitos Integrados Subsistemas de Memória Introdução Representação da Informação na Memória Localização dos dados nas memórias Operações sobre a memória Hierarquia de Memória Registradores Memória Cache Memória Principal Memória Secundária Memória Principal Organização da Memória Principal Considerações Operações sobre a memória principal Capacidade da Memória Principal Tipos de Memoria Principal Erros Memória Cache Utilização Tipos de Memoria de Cache Unidade Central de Processamento (UCP) Introdução Funções Básicas Função Processamento Função Controle O ciclo de instrução Entrada e Saída de Dados Introdução Interfaces de ES Transmissão serial Transmissão paralela Dispositivos de ES III Introdução a Sistemas Operacionais Conceitos Básicos Tipos de Sistemas Operacionais Sistemas Monoprogramáveis /Monotarefa Sistemas Multiprogramáveis / Multitarefa Sistemas de Múltiplos Processadores Pipelining Exercício para Sala de Aula - Dia 11/10/2012 Tarefa 01 Tarefa 02 Tarefa 03 Concorrência Interrupção e Exceção Interrupção Exceção Buffering Spooling Reentrância Processos Bloco de controle do processo Estados dos Processos Mudança de Estados de um Processo Subprocessos e Threads Subprocesso ou processo filho Thread ou Linha de Controle Comunicação entre Processos Gerência do Processador Escalonamentos Preemptivos e Não-Preemptivos escalonamento não-preemptivo escalonamento preemptivo Gerência de Memória Funções básicas Alocação Contígua Simples Alocação Particionada Alocação Particionada Estática ou Fixa Alocação Particionada Dinâmica Swapping Gerência de Memória Virtual Paginação Politica de busca de páginas Politica de Alocação de páginas Segmentação Fragmentação de memória virtual Sistemas de Arquivos Gerência de Arquivos Organização de Arquivos Diretórios Alocação de Espaço em Disco Alocação Contígua Alocação Encadeada Alocação Indexada Gerência de Dispositivos Operações de Entrada e Saída Device Drivers Controladores Glossary Acronyms