SUMÁRIO A História do Computador _________________________________________________________________________________________ 2 As Gerações dos Computadores __________________________________________________________________________________ 5 Primeira Geração (1946-1954) _____________________________________________________________________________________ 5 Alan Turing – O pai da Ciência da Computação ________________________________________________________________________________ 6 O primeiro bug da história ______________________________________________________________________________________________________ 6 Segunda Geração (1955-1964) _____________________________________________________________________________________ 7 Terceira Geração (1964-1977) _____________________________________________________________________________________ 7 Quarta Geração (1977-1991) _______________________________________________________________________________________ 9 Quinta Geração (1991-dias atuais) _________________________________________________________________________________ 9 Representação da Informação _________________________________________________________________________________ 10 Como um Computador é Formado? ____________________________________________________________________________ 11 Arquitetura de Computador (John Von Neumman) ___________________________________________________________ 11 Dispositivos de entrada e saída (E/S) _________________________________________________________________________________________ 12 Memória _________________________________________________________________________________________________________________________ 15 Processador _____________________________________________________________________________________________________________________ 18 O Barramento ___________________________________________________________________________________________________________________ 19 Exercícios ____________________________________________________________________________________________________________ 20 Sistemas Operacionais ___________________________________________________________________________________________ 22 Histórico ______________________________________________________________________________________________________________ 22 Classificação quanto aos Usuários________________________________________________________________________________ 23 Sistemas Monousuário/monotarefa __________________________________________________________________________________________ 23 Sistemas Monousuário/multitarefa ___________________________________________________________________________________________ 24 Sistemas Multiusuários ________________________________________________________________________________________________________ 24 Tipos de Sistemas Operacionais __________________________________________________________________________________ 24 Sistemas Monoprogramáveis/Monotarefa ___________________________________________________________________________________ 24 Sistemas Multiprogramáveis/Multitarefa ____________________________________________________________________________________ 25 Sistemas com Múltiplos Processadores _______________________________________________________________________________________ 27 Estrutura do Sistema Operacional _______________________________________________________________________________ 30 Modo de Acesso _____________________________________________________________________________________________________ 32 Funções do Sistema _________________________________________________________________________________________________ 32 Exercícios ____________________________________________________________________________________________________________ 36 V e r s ã o 1 . 0 P á g i n a 1 de 36 INTRODUÇÃO A História do Computador O homem sempre procurou produzir mais com menos esforço e criou as máquinas para a simplificação e a evolução do trabalho humano. O ábaco foi um dos primeiros instrumentos desenvolvidos para auxiliar os humanos na realização de cálculos. Muitos atribuem sua criação à China, mas existem evidências deles na Babilônia no ano 300 A.C. A ideia básica no ábaco é considerar as contas (bolinhas) contidas na parte inferior, chamada de chão do Ábaco, com valor unitário e cada conta contida na parte superior, chamada de céu do Ábaco, com valor de cinco unidades. Cada valor unitário tem representação diferente dependendo da coluna em que se encontra, logo, uma unidade na primeira coluna tem valor 1 em nosso sistema numérico, já uma unidade na segunda coluna tem valor 10. NASA, na década de 1960, nos programas que levaram o homem à Lua. A primeira calculadora que realizava operações de soma e subtração, denominada “La Pascaline”, foi criada em 1642 pelo francês Blaise Pascal. Essa máquina funcionava por meio de uma engrenagem de rodas dentadas que levava os dígitos de uma coluna a outra. Os resultados apareciam em uma espécie de janelinha. Figura 2. A primeira calculadora que realizava operações de soma e subtração: "La Pascaline", criada por Blaise Pascal Leibniz, sucessor de Pascal, construiu uma máquina bem sofisticada, com avanços práticos. Ela trabalhava por meio de alavancas e relógios. Figura 1. O ábaco chinês Em 1614, Napier inventou o que ficou conhecido por “Ossos de Napier”, que auxiliavam na realização de multiplicações, baseando-se na teoria de logaritmos. Já criação da Régua de Cálculo, em 1632 na Inglaterra, foi diretamente influenciada pelos Ossos de Napier. Esta régua chegou a ser utilizada pelos engenheiros da V e r s ã o 1 . 0 Figura 3. A máquina de Leibniz, que já incluía operações como multiplicação e divisão P á g i n a 2 de 36 Um destaque para a história da computação foi invenção de máquinas programáveis, que funcionavam de forma diferente de acordo com uma programação que lhes era fornecida. Em 1804, o Francês Joseph Marie Jacquard inventou uma máquina de tear que trançava o tecido de acordo com uma programação que era fornecida através de furos num cartão. Em 1837, Charles Babbage anunciou um projeto para construção da Máquina Analítica. Influenciado pelo tear de Jacquard, Babbage propôs uma máquina de propósito genérico, utilizando uma programação através de cartões perfurados. Babbage trouxe um grande avanço intelectual na utilização de cartões perfurados, enquanto Jacquard utilizava os cartões apenas para acionar ou desativar o funcionamento uma determinada seção da máquina de tear, Babbage percebeu que os cartões poderiam ser utilizados para armazenar ideias abstratas, sejam elas instruções ou números, e que poderiam ser referenciados posteriormente, adotando para sua máquina o conceito de memória. Figura 4. Máquina de tear usando programação através de cartões perfurados Na época da Revolução Industrial, foram colocadas as primeiras grandes ideias sobre o trabalho humano vir a ser realizado por máquinas. O projeto dessa máquina é considerado como o primeiro semelhante ao nosso atual computador: a máquina diferencial (1822). Juntamente com esse projeto, o matemático inglês Charles Babbage desenvolveu a ideia de um dispositivo de entrada e saída. Essa máquina usava cartões perfurados. Figura 6. Cartões perfurados A Primeira programadora. A condessa de Lovelace, Ada Byron, se interessou pela máquina analítica de Babbage e se comunicava com ele através de cartas e encontros. Ela passou a escrever programas que a máquina poderia ser capaz de executar, caso fosse construída. Ela foi a primeira a reconhecer a necessidade de loops e sub-rotinas. Por esta contribuição, Ada ficou reconhecida na história como a primeira programadora. Linha do tempo dos precursores dos computadores Figura 5. A Máquina Analítica, projetada por Charles Babbage, fazia cálculos avançados e permitia a utilização de cartões perfurados para operações de leitura e escrita de dados computados V e r s ã o 1 . 0 300 a.C. 1614 1632 1642 1672 1804 1822 1837 Ábaco Ossos de Napier Régua de Cálculo “La Pascaline” Calculadora de Leibniz Tear de Jacquard Máquina Diferencial (Babbage) Máquina Analítica P á g i n a 3 de 36 Alan Turing desenvolveu o que conhecemos hoje como a base de todas as técnicas de programação, numa forma de inserir dados das máquinas chamada de decodificação. As informações eram transformadas em sinais (0 e 1). A partir daí, as máquinas puderam trabalhar com todos os tipos de informação. O crescente avanço da tecnologia utilizada na criação das máquinas chamou a atenção dos militares norte-americanos, que, interessados no poder que essas máquinas poderiam trazer a longo prazo, empregaram vultosos investimentos em pesquisas e projetos sobre computadores. Durante a 2ª Guerra Mundial, os militares começaram a ter os primeiros resultados desses investimentos. O Mark I, um enorme computador que utilizava milhares de relés, foi desenvolvido pela Marinha em parceria com a Universidade de Harvard e a IBM, em 1944. Um dos problemas apresentados pelo Mark I era o ruído alto e intenso que ele emitia quando estava em funcionamento. Figura 7. A máquina de Alan Turing, que trabalhava com o processo de decodificação e introduziu a codificação binária (de zeros e uns – 0..1), conseguiu decifrar mensagens nazistas criadas pela ENIGMA - 1940 (ilustração acima) A evolução da máquina de computar e calcular informações teve a chance de ser testada em um grande evento: o censo norte-americano de 1890. A grande inovação introduzida por Herman Hollerith foi a utilização da eletricidade. Figura 9. Para o seu funcionamento, o Mark I utilizava componentes eletromecânicos (relés) No decorrer da 2ª Guerra Mundial, criou-se um novo grande computador, com fins bélicos: o ENIAC (Electronic Numeric Integrator and Calculator). Ele funcionava por meio de um sistema construído inteiramente por válvulas. Esse computador não chegou a ser utilizado, pois ficou pronto somente em 1946, quando a guerra já havia terminado. Após o ENIAC, foi elaborado o projeto de um outro computador, o EDVAC, projetado com uma programação interna. Figura 8. A máquina de Herman Hollerith, utilizada no senso americano de 1890 V e r s ã o 1 . 0 P á g i n a 4 de 36 As ideias de Von Neumann transformaram o mundo da computação. Outro avanço tecnológico foi a criação do transistor, peça eletrônica com materiais semicondutores e com a mesma função das válvulas, porém, mais rápida, de maior confiabilidade, eficiência e durabilidade, utilizando menores quantidades de energia, além de não esquentar como as válvulas. O transistor possibilitou a redução contínua dos custos de produção dos computadores, tornando os preços mais acessíveis. Figura 10. Para o seu funcionamento, o ENIAC utilizava um conjunto de componentes eletromecânicos (válvulas) Em 1949, os computadores eram usados apenas em projetos governamentais e acadêmicos. Então a IBM começou, em 1951, a produzir computadores em série. Um professor de Princeton (EUA), Von Neumann, criou um sistema de estrutura lógica para o computador, para que pudesse trabalhar com variados tipos de informações ao mesmo tempo. Com a evolução dos transistores, desenvolveuse a ideia de criar uma peça eletrônica com maior capacidade de processamento de informações: criou-se o chip em apenas uma peça. A história da computação modifica-se continuamente e, hoje, chegamos a um estágio em que todos os equipamentos se acabam tornando obsoletos, pois a cada dia cria-se um equipamento novo, mais rápido, mais confiável, mais eficiente e com maior poder de nos auxiliar em nosso trabalho diário. Compilado de: Enciclopédia Módulo do Ensino Integrado (Editora DCL) e em http://producao.virtual.ufpb.br/books/camyle/introducaoa-computacao-livro/livro/livro.chunked/ch01s01.html As Gerações dos Computadores Os computadores são máquinas capazes de realizar vários cálculos automaticamente, além de possuir dispositivos de armazenamento e de entrada e saída. fluxo de elétrons. As válvulas aqueciam bastante e costumavam queimar com facilidade. Nesta seção iremos ver a evolução dos computadores até os dias atuais. Primeira Geração (1946-1954) A primeira geração dos computadores é marcada pela utilização de válvulas. A válvula é um tubo de vidro, similar a uma lâmpada fechada sem ar em seu interior, ou seja, um ambiente fechado a vácuo, e contendo eletrodos, cuja finalidade é controlar o V e r s ã o 1 . 0 Figura 11. As válvulas eram do tamanho de uma lâmpada P á g i n a 5 de 36 Além disso, a programação era realizada diretamente na linguagem de máquina, o que dificultava a programação e consequentemente despendia muito tempo. O armazenamento dos dados era realizado em cartões perfurados, que depois passaram a ser feitos em fita magnética. Um dos representantes desta geração é o ENIAC. Ele possuía 17.468 válvulas, pesava 30 toneladas, tinha 180 m² de área construída, sua velocidade era da ordem de 100 kHz e possuía apenas 200 bits de memória RAM. Nenhum dos computadores da primeira geração possuíam aplicação comercial, eram utilizados para fins balísticos, predição climática, cálculos de energia atômica e outros fins científicos. Alan Turing – O pai da Ciência da Computação Alan Mathison Turing (23 de Junho de 1912 — 7 de Junho de 1954) foi um matemático, lógico, criptoanalista e cientista da computação britânico. Foi influente no desenvolvimento da ciência da computação e proporcionou uma formalização do conceito de algoritmo e computação com a máquina de Turing, desempenhando um papel importante na criação do computador moderno. Durante a Segunda Guerra Mundial, Turing trabalhou para a inteligência britânica em Bletchley Park, num centro especializado em quebra de códigos. Por um tempo ele foi chefe de Hut 8, a seção responsável pela criptoanálise da frota naval alemã. Planejou uma série de técnicas para quebrar os códigos alemães, incluindo o método da bomba, uma máquina eletromecânica que poderia encontrar definições para a máquina de criptografia alemã, a Enigma. Após a guerra, trabalhou no Laboratório Nacional de Física do Reino Unido, onde criou um dos primeiros projetos para um computador de programa armazenado, o ACE. poderia manipular símbolos de um sistema de regras próprias. A máquina teórica de Turing pode indicar que sistemas poderosos poderiam ser construídos. Tornou possível o processamento de símbolos, ligando a abstração de sistemas cognitivos e a realidade concreta dos números. Isto é buscado até hoje por pesquisadores de sistemas com Inteligência Artificial (IA). Para comprovar a inteligência artificial ou não de um computador, Turing desenvolveu um teste que consistia em um operador não poder diferenciar se as respostas a perguntas elaboradas pelo operador eram vindas ou não de um computador. Caso afirmativo, o computador poderia ser considerado como dotado de inteligência artificial. Sua máquina pode ser programada de tal modo que pode imitar qualquer sistema formal. A ideia de computabilidade começou a ser delineada. A maior parte de seu trabalho foi desenvolvida na área de espionagem e, por isso, somente em 1975 veio a ser considerado o "pai da Ciência da Computação". O primeiro bug da história A palavra bug (inseto em inglês) é empregada atualmente para designar um defeito, geralmente de software. Mas sua utilização com este sentido remonta a esta época. Conta a história que um dia o computador apresentou defeito. Ao serem investigadas as causas, verificou-se que um inseto havia prejudicado seu funcionamento. A foto abaixo, supostamente, indica a presença do primeiro bug. Até hoje os insetos costumam invadir os equipamentos eletrônicos, portanto observe-os atentamente, evite deixar comida próximo ao computador e não fique sem utilizá-lo por um longo período. Aos 24 anos de idade, consagrou-se com a projeção de uma máquina que, de acordo com um sistema formal, pudesse fazer operações computacionais. Mostrou como um simples sistema automático V e r s ã o 1 . 0 P á g i n a 6 de 36 linguagem assembly, também conhecida como linguagem simbólica. A linguagem assembly possibilita a utilização de mnemônicos para representar as instruções de máquina. Figura 12. Registro do primeiro bug da história Segunda Geração (1955-1964) A segunda geração de computadores foi marcada pela substituição da válvula pelo transistor. O transistor revolucionou a eletrônica em geral e os computadores em especial. Eles eram muito menores do que as válvulas a vácuo e tinham outras vantagens: não exigiam tempo de pré-aquecimento, consumiam menos energia, geravam menos calor e eram mais rápidos e confiáveis. No final da década de 50, os transistores foram incorporados aos computadores. Figura 14. Computadores IBM da segunda geração Em seguida vieram as linguagens de alto nível, como, por exemplo, Fortran e Cobol. No mesmo período surgiu o armazenamento em disco, complementando os sistemas de fita magnética e possibilitando ao usuário acesso rápido aos dados desejados. Terceira Geração (1964-1977) A terceira geração de computadores é marcada pela utilização dos circuitos integrados, feitos de silício. Também conhecidos como microchips, eles eram construídos integrando um grande número de transistores, o que possibilitou a construção de equipamentos menores e mais baratos. Figura 13. Circuito com vários transistores (esquerda). Comparação do circuito com válvulas (canto superior-direito) com um circuito composto de transistores (inferior-direito). Na segunda geração o conceito de Unidade Central de Procedimento (CPU), memória, linguagem de programação e entrada e saída foram desenvolvidos. O tamanho dos computadores diminuiu consideravelmente. Outro desenvolvimento importante foi a mudança da linguagem de máquina para a V e r s ã o 1 . 0 Figura 15. Comparação do tamanho do circuito integrado com uma moeda (esquerda) e um chip (direita) Mas o diferencial dos circuitos integrados não era o apenas o tamanho, mas o processo de fabricação que possibilitava a construção de vários circuitos P á g i n a 7 de 36 simultaneamente, facilitando a produção em massa. Este avanço pode ser comparado ao advento da impressa, que revolucionou a produção dos livros. Didaticamente os circuitos integrados são categorizados de acordo com a quantidade de integração que eles possuem: LSI (Large Scale Integration – 100 transistores): computadores da terceira geração. VLSI (Very Large Scale Integration – 1.000 transistores): computadores da quarta geração. ULSI (Ultra-Large Scale Integration – milhões de transistores): computadores da quinta geração. Um computador que representa esta geração foi o IBM’s System/360, voltado para o setor comercial e científico. Ele possuía uma arquitetura plugável, na qual o cliente poderia substituir as peças que dessem defeitos. Além disso, um conjunto de periféricos eram vendidos conforme a necessidade do cliente. Figura 17. Computador Apple I Outro evento importante desta época foi que a IBM passou a separar a criação de hardware do desenvolvimento de sistemas, iniciando o mercado da indústria de softwares. Isto foi possível devido a utilização das linguagens de alto nível nestes computadores. Uma linguagem é considerada de alto nível quando ela pode representar ideias abstratas de forma simples, diferente da linguagem de baixo nível que representa as próprias instruções de máquina. Exemplo de linguagem de alto nível: x = y*7 + 2 Mesmo código em baixo nível (assembly): load y mul 7 add 2 store x Figura 16. Arquitetura plugável da série 360 da IBM A IBM, que até então liderava o mercado de computadores, passou a perder espaço quando concorrentes passaram a vender periféricos mais baratos e que eram compatíveis com sua arquitetura. No final desta geração já começaram a surgir os computadores pessoais. V e r s ã o 1 . 0 Load, mul, add e store são os mnemônicos que representam as instruções em código de máquina (binário). P á g i n a 8 de 36 Quarta Geração (1977-1991) Quinta Geração (1991-dias atuais) Os computadores da quarta geração são reconhecidos pelo surgimento dos processadores (CPU ou UCP) — Unidade Central de Processamento. Os sistemas operacionais como MS-DOS, UNIX, Apple’s Macintosh foram construídos. Linguagens de programação orientadas a objeto como C++ e Smalltalk foram desenvolvidas. Discos rígidos eram utilizados como memória secundária. Impressoras matriciais, e os teclados com os layouts atuais foram criados nesta época. Os computadores da quinta geração usam processadores com milhões de transistores. Nesta geração surgiram as arquiteturas de 64 bits, os processadores que utilizam tecnologias RISC e CISC, discos rígidos com capacidade superior a 600GB, pen-drives com mais de 1GB de memória e utilização de disco ótico com mais de 50GB de armazenamento. Os computadores eram mais confiáveis, mais rápidos, menores e com maior capacidade de armazenamento. Esta geração é marcada pela venda de computadores pessoais. Figura 19. Computador da quinta geração A quinta geração está sendo marcada pela inteligência artificial e por sua conectividade. A inteligência artificial pode ser verificada em jogos e robores ao conseguir desafiar a inteligência humana. A conectividade é cada vez mais um requisito das indústrias de computadores. Hoje em dia, queremos que nossos computadores se conectem ao celular, a televisão e a muitos outros dispositivos como geladeira e câmeras de segurança. Figura 18. Computador pessoal da quarta geração V e r s ã o 1 . 0 Conteúdo integral em (fonte): http://producao.virtual.ufpb.br/books/camyle/introducao-a-computacao-livro/livro/livro.chunked/ch01s01.html P á g i n a 9 de 36 COMPUTADORES E PRINCIPAIS COMPONENTES Representação da Informação Você provavelmente já ouviu alguém falar que os computadores trabalham internamente apenas com 0 e 1 (zero e um). Tudo o que você assiste, escuta ou cria no computador, é processado internamente através de sequências de zeros e uns. O computador ao ler estas sequências, consegue interpretá-las e em seguida apresentar as informações contidas nelas. Vamos começar nossos estudos aprendendo sobre os bits e bytes. Um bit ou dígito binário (binary digit), é a unidade básica que os computadores e sistemas digitais utilizam para trabalhar, ele pode assumir apenas dois valores, 0 ou 1. Um byte é uma sequência de 8 bits. Fisicamente, um bit pode ser representado de várias formas: através de dois valores de voltagem aplicados num fio, diferentes direções de magnetização em uma fita magnética, entre outras. O importante é que seja possível identificar dois estados diferentes. O byte é a menor unidade de armazenamento utilizada pelos computadores atuais. Isto quer dizer que, nós nunca conseguiremos salvar menos do que 8 bits. Exemplo: Como um bit só pode assumir dois valores (0 ou 1), só será possível representar exatamente dois estados distintos. Abaixo, nós temos exemplos de como podemos associar significados aos valores do bit. Bit 0 1 Porta Lâmpada Sexo Detector Movimento Estado Civil Aberta Apagada Masculino Sem movimento Solteiro Fechada Acesa Feminino Com movimento Casado Portanto, em um sistema com trava eletrônica, o valor 0 poderia indicar que a porta estava fechada, enquanto 1 indicaria que a porta está aberta. Em outro sistema que registra o estado civil, 0 poderia representar Solteiro, enquanto 1 seria Casado. Observe que o número de possibilidades diferentes que podemos representar depende do tamanho da sequência de bits que estamos utilizando, mais precisamente 2tamanho: 2¹= 2 2²= 4 6 2 = 64 27= 128 264= 18.446.744.073.709.551.615 2³= 8 28= 256 (1byte) 24= 16 216= 65.535 25= 32 232= 4.294.967.295 Portanto, para representar mais de dois valores distintos nós precisamos de uma sequência de bits maior. Conteúdo integral em (fonte): http://producao.virtual.ufpb.br/books/camyle/introducao-a-computacao-livro/livro/livro.chunked/ch01s01.html V e r s ã o 1 . 0 P á g i n a 10 de 36 Como um Computador é Formado? Hardware: é a parte física do equipamento, seus circuitos, dispositivos e unidades periféricas. São as partes mecânicas e eletrônicas do computador. Software: são os programas que o computador executa, já que o hardware não é capaz de realizar nenhuma tarefa sozinho. O hardware necessita de um comando para que ele possa executar o que lhe é ordenado e isso é feito por meio dos softwares. O organograma abaixo apresenta os principais Tipos de Software: Básicos •São programas que gerenciam todo o funcionamento do computador, além de propiciar uma interface com o usuário: •Exemplo: Sistemas Operacionais Utilitários •São programas que oferecem opções aos usuários de executar tarefas complementares às oferecidas pelos sistemas operacionais. •Exemplo: antivírus, desfragmentador de disco e compactador de arquivos Aplicativos •Os softwares aplicativos têm como objetivo facilitar o trabalho do usuário, auxiliando-o nas tarefas diárias específicas. •Exemplo: Word, Excel e CorelDraw Arquitetura de Computador (John Von Neumman) A Arquitetura de John von Neumann (pronunciado Nóimann) é uma arquitetura de computador que se caracteriza pela possibilidade de uma máquina digital armazenar seus programas no mesmo espaço de memória que os dados, podendo assim manipular tais programas. Esta arquitetura é um projeto modelo de um computador digital de programa armazenado que utiliza uma unidade de processamento (CPU) e uma de armazenamento (“memória”) para comportar, respectivamente, instruções e dados. A máquina proposta por Von Neumann reúne os seguintes componentes: (i) uma memória, (ii) uma unidade central de processamento (CPU), composta por diversos Registradores, por uma Unidade de Controle (UC) e por uma Unidade Lógica e Aritmética (ULA), cuja função é a mesma da tabela de controle da Máquina de Turing universal: buscar um programa na memória, instrução por instrução, e executá-lo sobre os dados de entrada; além de (iii) dispositivos de entrada e saída, e seus respectivos controladores, para fornecerem os insumos e mostrarem o resultado dos processamentos efetuados pela máquina. A Figura 20 esboça a conexão entre os principais elementos da arquitetura do computador. V e r s ã o 1 . 0 P á g i n a 11 de 36 Figura 20. Componentes da Arquitetura de John Von Neumman Dispositivos de entrada e saída (E/S) Entrada/Saída (E/S) compreende todas as maneiras como o computador se comunica com os usuários e outras máquinas ou dispositivos. Os dispositivos de entrada aceitam dados e instruções do usuário, os dispositivos de saída retornam os dados processados. Os dispositivos de saída mais comuns são a tela de vídeo, conhecida como monitor, e a impressora. Os dispositivos de entrada mais conhecidos são teclado e mouse. Os sistemas de multimídia possuem alto-falante como saída e microfone como entrada adicional. Os dispositivos de E/S trabalham com a memória do computador do seguinte modo: os dados captados pelos dispositivos de entrada são representados em pulsos elétricos e transmitidos ao computador, ali estes pulsos são convertidos em dados binários e armazenados na memória do computador. No caminho inverso, a informação binária é transformada em pulso elétrico e encaminhada para o dispositivo de saída especialista para tratá-lo e gerar uma saída ao usuário. Um dispositivo especial de E/S de um computador é o disco rígido (HD), nele são armazenados todos os dados que devem persistir num sistema computacional, mesmo na ausência de energia. Todos os programas que não estão em execução se encontram no disco, seu único problema é o tempo excessivo para a recuperação e escrita de uma informação, havendo assim a necessidade de se trabalhar com a memória volátil (memória principal), mais rápida, porém mais cara. Quando um periférico insere dados no computador, dizemos que ele é um dispositivo de entrada. Agora quando esses dados são colocados à mostra, ou quando saem para outros dispositivos, dizemos que estes periféricos são dispositivos de saída. Quando eles acumulam as duas funções, dizemos que é de entrada e de saída. Conteúdo integral em (fonte): http://producao.virtual.ufpb.br/books/camyle/introducao-a-computacao-livro/livro/livro.chunked/ch01s01.html V e r s ã o 1 . 0 P á g i n a 12 de 36 Dispositivos de Entrada do Computador Teclado – Principal dispositivo de entrada do computador. É nele que você insere caracteres e comandos do computador. Sua existência é primordial para que o ser humano possa interagir com o computador. Nos primórdios da computação, era a única forma de interação do homem com o computador (ocasião em que a inserção de dados era feita através dos prompt de comandos). Hoje em dia, utilizar o teclado para realizar comandos de prompt ficou mais rara. Mouse – Não menos importante que os teclados, os mouses ganharam grande importância com advento da interface gráfica. É através dos botões do mouse que interagirmos com o computador. Os sistemas operacionais de hoje estão voltados para uma interface gráfica e intuitiva onde é difícil imaginar alguém usando um computador sem este periférico de entrada. Ícones de programas, jogos e links da internet, tudo isto é clicado através dos mouses. Touchpad – É um dispositivo sensível ao toque que na informática tem a mesma função que o mouse. São utilizados principalmente por profissionais que desenham ou fazem concepções artísticas no computador. Também designa o dispositivo que funciona como o mouse, que já vem incorporado aos notebooks. Webcam – Câmera acoplada no computador e embutida na maioria dos notebooks. Dependendo do programa usado, sua função e capturar imagens que podem ser salvos tanto como arquivos de imagem ou como arquivos de vídeo. Scanner – Periférico semelhante a uma copiadora, mas desprovida da função de reprografia. O scanner tem a função de capturar imagens e textos de documentos expostos sobre a sua superfície. Estes dados serão armazenados no próprio computador. Microfone – Periférico de entrada com a função de gravação de voz e testes de pronuncias. Também podem ser usados para conversação online. Dispositivo de Saída do Computador Monitor – Principal dispositivo de saída de um computador. Sua função é mostrar tudo que está sendo processado pelo computador. V e r s ã o 1 . 0 P á g i n a 13 de 36 Impressora – Dispositivo com a função de imprimir documentos para um plano, folha A4, A3, A2, A1 e etc. Este documento pode ser um desenho, textos, fotos e gravuras. Existem diversos tipos de impressora as mais conhecidas são a matricial, jato de tinta, a laser e a Plotter. Caixas de Som – Dispositivo de saída essencial para quem desejar ouvir arquivos de áudio como MP3, WMA e AVI. Dispositivos de Entrada e de Saída O avanço da tecnologia deu a possibilidade de se criar um dispositivo com a capacidade de enviar e transmitir dados. Tais periféricos são classificados como dispositivos de entrada e de saída. São eles: PenDrives (HDs externos) – Tipo de memória portátil e removível com capacidade de transferir dados ou retirar dados de um computador. Impressora Multifuncional – Como o próprio nome já diz este tipo impressora poder servir tanto como copiadora ou scanner, além de muitas trabalharem como um dispositivo de fax. Monitor Touchscreen – Tela de monitor sensível ao toque. Através dela você recebe dados em forma de imagem e também enviar dados e comandos ao computador através do toque. A tecnologia é mais usada na indústria telefônica e seu uso em monitores de computadores ainda está em fase de expansão. Headset – dispositivo multimídia que acumula a função de caixa de som com a de microfone. Atenção: Não se confunda! Dispositivos de entrada e saída é o mesmo que periféricos de entrada e saída. As palavras “dispositivos” e “periféricos” são usadas como sinônimos. Conteúdo integral em (fonte): http://www.brcomputador.com/2013/02/dispositivos-de-entrada-e-saida-do.html V e r s ã o 1 . 0 P á g i n a 14 de 36 Memória Da mesma forma que o cérebro humano, o computador também possui uma memória, onde, quando está ligado, são armazenadas as informações. A menor unidade utilizável para representação de informações num computador é o BIT. Como este único bit é insuficiente para representar um carácter eles são reunidos em conjuntos de oito. Estes conjuntos de 8 bits recebem a denominação de BYTE. Sobre as informações armazenadas num computador, utiliza-se o termo byte, correspondendo a um caractere. Tendo em conta que a unidade byte é muito pequena para indicar valores mais extensos, utilizam-se múltiplos do byte. Kbyte (quilobyte): Unidade equivalente a 1.024 bytes Mbyte (megabyte): Unidade equivalente a 1.024 Kbytes Gbytes (gigabyte): Unidade equivalente a 1.024 Mbytes RAM Memória Principal Tipos de Memória ROM Cache Memória Secundária Discos (HD, CD, etc.), fitas e memórias flash A Memória Principal A memória do computador consiste numa coleção de registradores numerados consecutivamente (endereçados), onde cada um possui um tamanho denominado de tamanho da palavra, que pode variar em 16, 32, 64 e 128 bits, com a palavra de 32 bits sendo a mais comum hoje em dia, e a palavra de 64 bits aumentando de popularidade. Cada registrador tem um endereço, chamado de localização na memória, estas são organizadas linearmente em ordem consecutiva. O número único que identifica cada palavra é chamado de endereço. A memória possui um espaço de endereçamento representado pelo tamanho em bits do seu endereço, logo, um espaço de endereçamento de 32 bits pode acessar qualquer palavra de memória em qualquer lugar no intervalo de 0 a 232-1. O espaço de endereçamento pode ser dividido em regiões distintas usadas pelo sistema operacional, dispositivos de E/S, programas de usuário e pilha do sistema operacional. V e r s ã o 1 . 0 P á g i n a 15 de 36 Figura 21. Mapa da memória do computador As regiões ilustradas na Figura 21 compõem um possível mapa de memória. Os endereços acima (em vermelho) são reservados para uso do sistema operacional. O espaço do usuário (em amarelo) é onde um programa do usuário será carregado. A porção do espaço de endereçamento (em cinza) está reservada para dispositivos de E/S. Já a pilha do sistema (em azul) será o local onde as variáveis serão alocadas dinamicamente durante utilização dos programas do usuário. É importante manter clara a distinção entre o que é endereço e o que é dado. Uma palavra na memória, pode ter distintas representações dependendo do seu uso. Ela pode armazenar uma instrução contendo a operação e os operandos (dados de entrada) para a realização de uma específica operação, mas também pode armazenar o endereço de uma outra região de memória. Logo, o endereço é um apontador para uma posição de memória que contém dados, e estes são informações significativas para a realização de alguma atividade no computador, ou a representação de alguma informação. Tipos de Memória Memória RAM– É um tipo de memória essencial para o computador, sendo usada para guardar dados e instruções de um programa. Tem como características fundamentais, a volatilidade, ou seja, o seu conteúdo é perdido quando o computador é desligado; o acesso aleatório aos dados e o suporte à leitura e gravação de dados, sendo o processo de gravação um processo destrutivo e a leitura um processo não destrutivo. Existem dois tipos básicos de memória RAM. Ela pode ser de dois tipos: estática (velocidade alta) ou dinâmica (velocidade lenta). V e r s ã o 1 . 0 P á g i n a 16 de 36 Memória ROM- É um tipo de memória que contém instruções imutáveis, nela estão localizadas rotinas que inicializam o computador quando este é ligado; É não-volátil, ou seja, os dados não são perdidos com a ausência de energia; É também de acesso aleatório. Alguns dos tipos de memória ROM são: EPROM e EEPROM. EPROM- É um tipo de ROM especial que pode ser programada pelo usuário. Seu conteúdo pode ser apagado pela exposição a raios ultravioletas. EEPROM- É também um tipo especial de ROM muito semelhante à EPROM, tendo como diferença apenas o fato de que seu conteúdo é apagado aplicando-se uma voltagem específica em um dos seus pinos de entrada. Memória Cache – É uma memória de alta velocidade que faz a interface entre o processador e a memória do sistema. Para usar uma memória RAM dinâmica com um processador rápido é necessário este hardware extra. Todos os acessos da memória pelo processador são alimentados pelo sistema de cache, que compreende: Um comparador de endereços que monitora as requisições do processador. Memória RAM estática (alta velocidade). Chips extras de hardware. Atenção: A memória RAM dinâmica é frequentemente usada em computadores modernos. Isto, é devido a características como: baixo consumo, chips de alta densidade, e baixo custo. No entanto, é uma memória lenta não podendo assim suportar processadores velozes. Quando um processador requer dados da memória, ele espera recebê-los num tempo máximo. Isto é chamado ciclo de clock. O sistema de cache inicia tentando ler tantos dados da meFigura 22. Memórias cache L1 e L2 (níveis) – esquemático, mória dinâmica quanto possível e guarda-os em sua memória es- com a respectiva comunicação com o CORE do processador e com a memória RAM. tática de alta velocidade (ou cache). Quando requisições do processador chegam, ela checa se os endereços requisitados são os mesmos dos que já foram lidos da memória, caso seja, os dados são enviados diretamente da cache para o processador, caso contrário, ela permite que o processador acesse a memória principal (o processador realiza este acesso lentamente). Então o sistema de cache atualiza seu conteúdo com o que foi lido da memória pelo processador e tenta ler tantos dados quanto possível antes que a próxima requisição do processador chegue. Quando o sistema de cache atende a uma requisição do processador, é chamado cache hit. Se o sistema de cache não atende a uma requisição do processador, é chamado cache miss. Memória Secundária - a memória principal (RAM) não é o único meio de armazenamento existente. Devido a algumas características que são peculiares a este tipo de memória – por exemplo: volatilidade e alto custo –, surgiu a V e r s ã o 1 . 0 P á g i n a 17 de 36 necessidade de implementação de outro tipo de memória, chamado memória secundária. Este tipo de memória, não volátil, tem maior capacidade de armazenamento e é mais barata. Estas memórias podem ser removíveis ou não. Neste contexto, "removíveis" significa que ela pode ser retirada do computador e transportada facilmente para outro. O winchester ou disco rígido, por exemplo, não é removível. Já os demais podem ser chamados de removíveis. Estes são os tipos de memória secundária disponíveis hoje: Fitas Magnéticas; Discos rígidos (HD) e flexíveis; Discos: CD-ROM e CD-RW, DVD-ROM, DVDRW, Blu-ray; Pen-drives e cartões de memória, etc. Figura 23. Disco Rígido (HD), Flexível (Disquete), CD-ROM e Fita Magnética e seus respectivos "drivers" Conteúdo integral em (fonte): http://www.ime.usp.br/~weslley/memoria.htm#func Figura 24. Pen-drivers e cartões de memória (diversos tamanhos, marcas e capacidades) Processador A Unidade Central de Processamento (UCP, ou em inglês CPU), é composta por duas partes principais: a unidade lógica e aritmética (ULA, ou em inglês ALU), formada por circuitos que manipulam os dados através de operações binárias (dois operandos) e unárias (um operando); E, a unidade de controle (UC), cujos circuitos são responsáveis por coordenar as operações da UCP. Para o armazenamento e a comunicação entre estas duas unidades a UCP contém circuitos de armazenamento chamados de registradores, que se assemelham às células de armazenamento da memória principal. Alguns registradores funcionam como posições intermediárias de armazenamento para os dados manipulados pela UCP. Nestes registradores são armazenados os dados de entrada para a ULA e ainda proporcionam um local de armazenamento para o resultado das operações. Os dados a serem manipulados pela ULA tem origem na memória principal, sendo de responsabilidade da unidade de controle transferir estes dados aos registradores, informar à ULA sobre quais registradores estão os dados de entrada, ativar o circuito da operação apropriada e informar em que registrador deve guardar o resultado da operação. V e r s ã o 1 . 0 P á g i n a 18 de 36 A transferência desta informação oriunda da memória principal se dá através do barramento que é responsável por transmitir padrões de bits entre a UCP, os dispositivos de E/S e a memória principal. Nota Executar uma simples operação de soma é mais complexo que apenas somar estes números. Coordenado pela unidade de controle, os registradores intermediam a comunicação da memória principal e a ULA. Este processo pode ser resumido no “Exemplo simplificado”, abaixo. Exemplo simplificado Passos: 1. Obter da memória um dos valores da soma e guardar em um registrador; 2. Obter da memória o outro número a ser somado e armazená-lo em outro registrador; 3. Acionar o circuito de adição tendo os registradores do passo 1 e 2 como entrada, e escolher outro registrador para armazenar o resultado; 4. Armazenar o resultado na memória principal; Finalizar operação. Conteúdo integral em (fonte): http://producao.virtual.ufpb.br/books/camyle/introducao-a-computacao-livro/livro/livro.chunked/ch01s01.html O Barramento O objetivo do barramento é reduzir o número de interconexões entre a UCP e seus subsistemas. Em lugar de mantermos um caminho de comunicação entre a memória e cada um dos dispositivos de entrada e saída, a UCP é interconectada com os mesmos via barramento de sistema compartilhado. Figura 25. Modelo de Barramento do Computador V e r s ã o 1 . 0 P á g i n a 19 de 36 Os componentes são interconectados ao barramento da forma ilustrada na Figura 25. A UCP gera endereços que são colocados no barramento de endereços, e a memória recebe endereços do mesmo. O caminho inverso desta operação não é possível, como pode ser observado na figura. Durante a execução de um programa, cada instrução é levada até à ULA (Unidade Lógica e Aritmética) a partir da memória, uma instrução de cada vez, junto com qualquer dado que seja necessário para executá-la. A saída do programa é colocada em um dispositivo, tal como display de vídeo ou disco. A comunicação entre os três componentes (UCP, memória e E/S) é feita sempre pelos barramentos. Conteúdo integral em (fonte): http://producao.virtual.ufpb.br/books/camyle/introducao-a-computacao-livro/livro/livro.chunked/ch01s01.html Exercícios 1. São características da memória ROM: a) Memória somente de leitura de informações que tem como principal função o armazenamento temporário de dados. b) Chip de memória não volátil que é programado numa etapa posterior a sua fabricação. c) Memória não volátil, somente para leitura de informações, ou seja, as suas informações são gravadas pelo fabricante uma única vez e após isso não podem ser alteradas ou apagadas, somente acessadas. 3. Em informática, memória são todos os dispositivos que permitem a um computador guardar dados, temporariamente ou permanentemente. Memória é um termo genérico para designar componentes de um sistema capazes de armazenar dados e programas. Sabendo disto, diferencie memória RAM e memória ROM. 4. Como funciona a Unidade Central de Processamento (CPU)? Comente. d) Memória volátil, somente para leitura de informações, ou seja, as suas informações são gravadas pelo fabricante uma única vez e após isso não podem ser alteradas ou apagadas, somente acessadas. 5. São exemplos de periféricos que acumulam a função de entrada e saída de dados: e) Esta memória é responsável pela inicialização do Sistema Operacional. II) Touch Screen I) Modem estão corretas III) Teclado 2. Sabe-se que a Arquitetura de Von Neumann é um projeto modelo de um computador digital de programa armazenado que utiliza uma unidade de processamento (CPU) e uma de armazenamento (memória) para comportar, respectivamente, instruções e dados. Com base nestas informações caracterize essa arquitetura computacional enfatizando as funcionalidades principais de seus componentes. V e r s ã o 1 . 0 IV) Scanner V) Monitor a) As respostas I e II b) As respostas III e IV estão corretas. c) As respostas I e III estão corretas. d) As respostas III e V estão corretas. P á g i n a 20 de 36 6. Associe aos periféricos: (1) Periféricos de Entrada (2) Periféricos de Saída (3) Periféricos de Entrada e Saída. ( ) Teclado ( ) Modem ( ) Leitura Ótica ( ) Mouse ( ) Monitor ( ) Kit Mutimídia ( ) Microfone ( ) Scanner ( ) Disquete ( ) HD ( ) Cd-Rom ( ) Caixa de Som ( ) Impressora ( ) Plotter V e r s ã o 1 . 0 P á g i n a 21 de 36 Sistemas Operacionais Definição: é um tipo de software básico capaz de realizar as principais atividades de gerenciamento do hardware do computador, abstraindo os seus detalhes de implementação de baixo-nível e, por isso, servindo de interface entre o hardware do computador e o homem. Histórico Antes da década de 50, os computadores eram muito difíceis de serem programados. Era necessário conhecer totalmente sua arquitetura, e tal operação era efetuada em painéis com cerca de 6.000 conectores, em linguagem de máquina. Nesta fase os computadores não possuíam ainda dispositivos para interagir com o usuário, como teclados e monitores. Na década de 50, já com a utilização de transistores, sucedeu-se um grande avanço tecnológico, melhorando a velocidade dos processadores e a capacidade dos meios de armazenamento, em especial a memória e os discos magnéticos. Por volta de 1953 foi introduzido o primeiro sistema operacional, um programa de controle que permitia uma interação, mesmo que limitada, entre o operador e a máquina, otimizando a execução das tarefas. Em 1959 foi criada uma versão de sistema operacional que já implementava conceitos de memória virtual, conceito este largamente utilizado nos sistemas atuais. Na década de 60, a partir do surgimento dos circuitos integrados, foi possível difundir o uso de sistemas computacionais em empresas, com diminuição de custos e tamanho dos equipamentos. Além disso, esta década presenciou inúmeras inovações na área de sistemas operacionais, presentes até hoje, como os ambientes de multitarefa, multiprogramação, multiprocessamento e time-sharing, tendo o desenvolvimento destas técnicas avançado até o meado da década de 70, onde também foram implementadas as tecnologias baseadas em arquitetura VLSI (chips), as primeiras redes de computadores, e o desenvolvimento de diversas linguagens de programação de alto nível. A década de 80 foi marcada pela criação dos microcomputadores, baseados em microprocessadores de uso pessoal. Liderados pela IBM, diversos fabricantes seguiram por essa linha, porém alguns deles não abandonando a fabricação dos computadores de grande porte, como foi o caso da própria IBM. Nota-se que, a partir do meado da década de 80, acontece uma divisão de águas, com a indústria passando a produzir equipamentos de grande porte e muitos modelos de microcomputadores, que também precisavam de sistemas operacionais bastante evoluídos. Foram, então, utilizadas as técnicas modernas já existentes nos ambientes de grande porte na implementação de sistemas operacionais para os microcomputadores, com versões diversas, todas inicialmente monousuário/monotarefa (devido à baixa capacidade de armazenamento dos micros, naquela época). Com o avanço da tecnologia, os micros ganharam discos rígidos e outros periféricos, possibilitando a criação de sistemas operacionais mais evoluídos nesta categoria de computadores, quando surgiram os sistemas monousuário/multitarefa, que executam até hoje. V e r s ã o 1 . 0 P á g i n a 22 de 36 Figura 26. Histórico: cronologia dos principais eventos da história dos sistemas operacionais até o advento dos microcomputadores pessoais, em detrimento dos computadores de grande porte (mainframes) Classificação quanto aos Usuários Usuários e Sistemas Operacionais Sistemas Monousuário / Monotarefa Sistemas Monousuário / Multitarefa Sistemas Multiusuários Sistemas Monousuário/monotarefa O sistema operacional foi criado para que um único usuário possa fazer uma coisa por vez. O Palm OS dos computadores Palm é um bom exemplo de um moderno sistema operacional monousuário e monotarefa. O MS-DOS também pode ser enquadrado nesta categoria. V e r s ã o 1 . 0 P á g i n a 23 de 36 Sistemas Monousuário/multitarefa Este tipo de sistema operacional é o mais utilizado em computadores de mesa e laptops. As plataformas Microsoft Windows e Apple MacOS são exemplos de sistemas operacionais que permitem que um único usuário utilize diversos programas ao mesmo tempo. Por exemplo, é perfeitamente possível para um usuário de Windows escrever uma nota em um processador de texto ao mesmo tempo em que faz download de um arquivo da Internet e imprime um e-mail. Sistemas Multiusuários Um sistema operacional multiusuário permite que diversos usuários utilizem simultaneamente os recursos do computador. O sistema operacional deve se certificar de que as solicitações de vários usuários estejam balanceadas. Cada um dos programas utilizados deve dispor de recursos suficientes e separados, de forma que o problema de um usuário não afete toda a comunidade de usuários. Unix, VMS e sistemas operacionais mainframe como o MVS são exemplos de sistemas operacionais multiusuário. Tipos de Sistemas Operacionais Tipos de Sistemas Opercionais Sistemas Monoprogramáveis / Monotarefa Sistemas Multiprogramáveis / Multitarefa Sistemas Com Múltiplos Processadores Sistemas Monoprogramáveis/Monotarefa Os primeiros sistemas operacionais eram voltados tipicamente para a execução de um único programa. Qualquer outra aplicação, para ser executada, deveria aguardar o término do programa corrente. Neste tipo de sistema, o processador, a memória e os periféricos permanecem exclusivamente dedicados à execução de um único programa. Os sistemas monoprogramáveis estão diretamente ligados ao surgimento, na década de 50/60, dos primeiros computadores. Embora os sistemas operacionais já tivessem evoluído com as tecnologias de multitarefa e multiprogramáveis, os sistemas monoprogramáveis voltaram a ser utilizados na plataforma de microcomputadores pessoais e estações de trabalho devido à baixa capacidade de armazenamento destas máquinas, na época. V e r s ã o 1 . 0 P á g i n a 24 de 36 Era muito clara a desvantagem deste tipo de sistema, no que diz respeito à limitação de tarefas (uma de cada vez), o que provocava um grande desperdício de recursos de hardware. Figura 27. Sistemas Monoprogramáveis/Monotarefa Comparados a outros sistemas, os monoprogramáveis são de simples implementação, não existindo muita preocupação com problemas decorrentes do compartilhamento de recursos como memória, processador e dispositivos de E/S. Sistemas Multiprogramáveis/Multitarefa Constituindo-se uma evolução dos sistemas monoprogramáveis, neste tipo de sistema os recursos computacionais são compartilhados entre os diversos usuários e aplicações: enquanto um programa espera por um evento, outros programas podem estar processando neste mesmo intervalo de tempo. Neste caso, podemos observar o compartilhamento da memória e do processador. O sistema operacional se incumbe de gerenciar o acesso concorrente aos seus diversos recursos, como processador, memória e periféricos, de forma ordenada e protegida, entre os diversos programas. Figura 28. Sistemas Multiprogramáveis/Multitarefa V e r s ã o 1 . 0 P á g i n a 25 de 36 As vantagens do uso deste tipo de sistema são a redução do tempo de resposta das aplicações, além dos custos reduzidos devido ao compartilhamento dos recursos do sistema entre as diferentes aplicações. Apesar de mais eficientes que os monoprogramáveis, os sistemas multiprogramáveis são de implementação muito mais complexa. Os sistemas multiprogramáveis/multitarefa podem ser classificados de acordo com a forma com que suas aplicações são gerenciadas, podendo ser divididos em sistemas batch, de tempo compartilhado e de tempo real, de acordo com organograma abaixo. Sistemas Multiprogramáveis / Multitarefa Sistemas Batch Sistemas de Tempo Compartilhado Sistemas de Tempo Real Sistemas BATCH. Foram os primeiros sistemas multiprogramáveis a serem implementados na década de 60. Nesta modalidade, os programas eram submetidos para execução através de cartões perfurados e armazenados em disco ou fita, para posterior execução. Vem daí o nome batch (lote de cartões). O processamento em batch tem como característica não exigir interação do usuário com o sistema ou com a aplicação. Todas as entradas ou saídas são implementadas por meio de algum tipo de memória secundária, geralmente disco ou fita. Aplicações deste tipo eram utilizadas em cálculo numérico, compilações, backups, etc. Estes sistemas, se bem projetados, podem ser bastante eficientes devido à melhor utilização do processador, mas podem oferecer tempos de resposta bastante longos. Atualmente, os sistemas operacionais simulam este tipo de processamento, não havendo sistemas dedicados a este tipo de execução. Sistemas de Tempo Compartilhado. Também chamados sistemas de time-sharing, permitem que diversos programas sejam executados a partir da divisão de tempo do processador em pequenos intervalos, denominados fatias de tempo (ou time-slice). Caso a fatia de tempo não seja suficiente para a conclusão do programa, este é interrompido pelo sistema operacional e substituído no processador por outro, enquanto aguarda nova fatia de tempo. Neste tipo de processamento, cada usuário tem a impressão de que a máquina está dedicada ao seu programa, como se ele fosse o único usuário a se utilizar do sistema. Geralmente permitem interação do usuário com a aplicação através de terminais compostos por monitor, teclado e mouse. Estes sistemas possuem uma linguagem de controle que permite ao usuário interagir com o sistema operacional através de comandos. Assim, é possível verificar arquivos armazenados em disco ou cancelar execução de programas. Normalmente, o sistema responde em apenas alguns segundos à maioria destes comandos, o que se levou a chamá-los também de sistemas on-line. V e r s ã o 1 . 0 P á g i n a 26 de 36 A maioria das aplicações comerciais atualmente é processada em ambiente de tempo compartilhado, que oferece tempos baixos de respostas a seus usuários e menores custos, em função do alto grau de compartilhamento dos diversos recursos do sistema. Sistemas de Tempo Real. Este tipo de sistema é implementado de forma bastante semelhante ao de tempo compartilhado. O que caracteriza a diferença entre eles é o tempo exigido no processamento das aplicações. Enquanto nos sistemas de tempo compartilhado o tempo de processamento pode variar sem comprometer as aplicações em execução, nos sistemas de tempo real os tempos de execução devem estar dentro de limites rígidos, que devem ser obedecidos, caso contrário poderão ocorrer problemas irreparáveis. No sistema de tempo real não existe a ideia de fatia de tempo como nos sistemas de tempo compartilhado. Um programa ocupa o processador o tempo que for necessário ou até que apareça um outro com um nível de prioridade maior. Esta prioridade de execução é definida pela própria aplicação e não pelo sistema operacional, como nos sistemas de tempo compartilhado. Estes sistemas são utilizados em aplicações de controle de processos, como monitoramento de refinarias de petróleo, controle de tráfego aéreo, de usinas, ou em qualquer aplicação onde o tempo de processamento é fator fundamental. Sistemas com Múltiplos Processadores Os sistemas com múltiplos processadores caracterizam-se por possuir duas ou mais CPUs interligadas e trabalhando em conjunto. A vantagem deste tipo de sistema é permitir que vários programas sejam executados ao mesmo tempo ou que um mesmo programa seja subdividido em várias partes para serem executadas simultaneamente em mais de um processador. Esta técnica permitiu a criação de sistemas computacionais voltados para processamento científico, prospecção de petróleo, simulações, processamento de imagens e CAD. Um fator chave no desenvolvimento dos sistemas multiprocessados é a forma de comunicação entre as CPUs e o grau de compartilhamento da memória e dos dispositivos de E/S. Em função destes fatores, podemos classificar os sistemas multiprocessados de acordo com o organograma a seguir: Sistemas com Múltiplos Processadores Sistemas Fortemente Acoplados Simétricos V e r s ã o 1 . 0 Assimétricos Sistemas Fracamente Acoplados Redes Distribuídos P á g i n a 27 de 36 Na figura podemos perceber a divisão dos sistemas multiprocessados em duas categorias iniciais: sistemas fortemente acoplados e fracamente acoplados. A grande diferença entre estas duas categorias é que nos sistemas fortemente acoplados existe apenas uma memória a ser compartilhada pelos processadores do conjunto, enquanto que nos fracamente acoplados cada sistema tem sua própria memória individual. A taxa de transferência entre processadores e memória em sistemas fortemente acoplados é muito maior que nos fracamente acoplados. Nos sistemas fortemente acoplados a memória principal e os dispositivos de E/S são gerenciados por um único sistema operacional. Quando todos os processadores na arquitetura são iguais, diz-se que o sistema é simétrico. No entanto, quando os processadores são diferentes, dá-se à arquitetura a denominação assimétrica. Figura 29. Arquitetura Geral dos Sistemas Fortemente Acoplados Nos sistemas fracamente acoplados, como os processadores estão em arquiteturas diferentes, somente interligados por cabos de interconexão, cada CPU constitui uma máquina independente, com memória própria, dispositivos de E/S e sistemas operacionais independentes. Nesta subdivisão, temos como exemplo as redes e os sistemas distribuídos. No ambiente de rede, existem dois ou mais sistemas independentes (hosts), interligados por linhas telefônicas, que oferecem algum tipo de serviço aos demais, permitindo que um host compartilhe seus recursos, como impressora e diretórios, com os outros hosts da rede. Figura 30. Arquitetura Geral do ambiente de Rede V e r s ã o 1 . 0 P á g i n a 28 de 36 Enquanto nos sistemas em rede os usuários têm conhecimento dos hosts e seus serviços, nos sistemas distribuídos o sistema operacional esconde os detalhes dos hosts individuais e passa a tratá-los como um conjunto único, como se fosse um sistema só, fortemente acoplado. Os sistemas distribuídos permitem, por exemplo, que uma aplicação seja dividida em partes e que cada parte seja executada por hosts diferentes na rede. Para os usuários e suas aplicações é como se não existisse a rede, mas um único sistema centralizado. Outros exemplos de sistemas distribuídos são os clusters. Em um cluster podem existir dois ou mais servidores ligados por algum tipo de conexão de alto desempenho, e o usuário não conhece os nomes dos membros do cluster e nem quantos são. Quando é necessário algum serviço, basta solicitar ao cluster para obtê-lo, sem se preocupar com quem vai dispor e oferecer tal serviço. Clusters são muito utilizados em servidores de bancos de dados e Web. Figura 31. Arquitetura Geral dos Sistemas Distribuídos Interrupção Durante a execução de um programa, alguns eventos inesperados podem ocorrer, ocasionando um desvio forçado no seu fluxo normal de execução. Esses eventos são conhecidos como interrupção ou exceção, e podem ser resultado de sinalizações de algum dispositivo de hardware externo ao ambiente memória/processador. A diferença entre interrupção e exceção é dada pelo tipo de evento ocorrido, embora alguns autores e fabricantes não façam tal distinção. A interrupção é o mecanismo que permitiu a implementação da concorrência nos computadores, sendo o fundamento básico dos sistemas multiprogramáveis/multitarefa. Uma interrupção é sempre gerada por um evento externo ao programa e, sendo assim, independe da instrução que está sendo executada. Um exemplo de interrupção é quando um dispositivo avisa ao processador que alguma operação de E/S está completa. Neste caso, o processador deve interromper o programa para tratar o término da operação. Ao término de cada instrução a Unidade de Controle (situada dentro do processador) verifica a ocorrência de algum tipo de interrupção. Desta forma, o programa em execução é interrompido e seu controle é desviado para uma rotina do sistema responsável por tratar o evento ocorrido, denominada rotina de tratamento de interrupção. Para V e r s ã o 1 . 0 P á g i n a 29 de 36 que o programa interrompido possa retornar posteriormente à sua execução é necessário que, no momento da interrupção, um certo conjunto de informações sobre sua execução seja preservado. Essas informações consistem basicamente no conteúdo dos registradores internos da CPU, que deverão ser restaurados para a continuação do programa. Figura 32. Mecanismo de interrupção Para cada tipo de interrupção existe uma rotina de tratamento associada, para onde o fluxo do programa é desviado. A identificação do tipo de evento ocorrido é fundamental para determinar o endereço da rotina adequada ao tratamento da interrupção. As interrupções podem ser geradas: Pelo programa do usuário (entrada de dados pela console ou teclado) Pelo hardware (operações de E/S) Pelo sistema operacional (ao término da fatia de tempo do processador destinada ao programa) As interrupções sempre são tratadas pelo Sistema Operacional. A exceção é um evento semelhante à interrupção, pois também de fato interrompe um programa. A principal diferença é que a exceção é o resultado da execução de uma instrução dentro do próprio programa, como a divisão por zero ou a ocorrência de um overflow (estouro de capacidade de um campo) numa operação aritmética. Na maioria das vezes, a exceção provoca um erro fatal no sistema, causando o término anormal do programa. Isto se deve ao fato de que a exceção é melhor tratada dentro do próprio programa, com instruções escritas pelo programador. Estrutura do Sistema Operacional O sistema operacional é formado por um conjunto de rotinas que oferecem serviços essenciais aos usuários, às suas aplicações, e também ao próprio sistema. A esse conjunto de rotinas dá-se o nome de núcleo do sistema ou kernel. É fundamental não se confundir o núcleo do sistema com aplicações, utilitários ou o interpretador de comandos (shell), que acompanham o sistema operacional. As aplicações são utilizadas pelos usuários de maneira transparente, escondendo todos os detalhes da interação com o sistema. Os utilitários, como os compiladores, editores de V e r s ã o 1 . 0 P á g i n a 30 de 36 texto e interpretadores de comandos permitem aos usuários, desenvolvedores e administradores de sistema uma interação amigável com o sistema. Figura 33. Elementos da arquitetura Software/Hardware do sistema operacional: Shell e Kernel System Calls. Uma grande preocupação no projeto de sistemas operacionais se refere à implementação de mecanismos de proteção ao núcleo do sistema e também o controle de acesso aos serviços oferecidos pelo sistema. Caso uma aplicação que tenha acesso ao núcleo realize alguma operação que altere sua integridade, todo o sistema poderá ficar comprometido e inoperante. As system calls (chamadas do sistema) podem ser entendidas como uma porta de entrada para acesso ao núcleo do sistema e aos seus serviços. Sempre que um usuário ou uma aplicação necessita de algum serviço do sistema, é realizada uma chamada a uma de suas rotinas através de uma system call. Através dos parâmetros fornecidos na system call, a solicitação é processada e uma resposta é enviada à aplicação juntamente com um estado de conclusão indicando o sucesso ou não da operação. Para cada serviço disponível existe uma system call associada, e cada sistema operacional possui seu próprio conjunto de chamadas, com nomes, parâmetros e formas de ativação específicos. Isto explica por que uma aplicação desenvolvida utilizando serviços de um determinado sistema operacional não pode ser diretamente portada para um outro sistema. Figura 34. Interação dos componentes durante uma System Call V e r s ã o 1 . 0 P á g i n a 31 de 36 Existe uma grande dificuldade em compreender a estrutura e o funcionamento do sistema operacional, pois ele não é executado como uma aplicação tipicamente sequencial, com início, meio e fim. Os procedimentos do sistema são executados concorrentemente sem uma ordem específica ou predefinida, com base em eventos dissociados do tempo. Muitos desses eventos estão relacionados ao hardware e a tarefas internas do próprio sistema operacional. A estrutura do sistema, a maneira como ele é organizado e o inter-relacionamento entre seus diversos componentes pode variar conforme a concepção do projeto do sistema. Modo de Acesso Existem certas instruções que não podem ser colocadas diretamente à disposição das aplicações, pois a sua utilização indevida poderia ocasionar sérios problemas à integridade do sistema. Imagine que uma aplicação atualize um arquivo em disco. O programa, por si só, não pode especificar diretamente as instruções que acessam seus dados no disco pois, como o disco é um recurso compartilhado, sua utilização deve ser gerenciada unicamente pelo sistema operacional. Tal procedimento evita que a aplicação possa ter acesso a qualquer área do disco indiscriminadamente, o que poderia comprometer a segurança e a integridade do sistema de arquivos. Assim, fica claro que existem certas instruções que só podem ser executadas pelo sistema operacional ou sob sua supervisão. As instruções que têm o poder de comprometer o sistema são chamadas de instruções privilegiadas, enquanto as instruções que não comprometem o funcionamento do sistema chamam-se instruções não-privilegiadas. Para que uma aplicação possa executar uma instrução privilegiada, é preciso que haja um mecanismo de proteção no processador, chamado modos de acesso. Existem basicamente dois modos de acesso ao processador: modo usuário e modo kernel. Quando o processador trabalha no modo usuário, somente instruções não-privilegiadas podem ser executadas, tendo assim acesso a um número limitado de instruções do processador. Já no modo kernel (ou supervisor), a aplicação pode ter acesso ao conjunto total de instruções do processador. A melhor maneira de controlar o acesso às instruções privilegiadas é permitir que apenas o sistema operacional tenha acesso a elas. Sempre que uma aplicação necessita executar uma instrução privilegiada, a solicitação deve ser feita através de uma system call, que altera o modo de acesso ao processador do modo usuário para o modo kernel. Ao término da execução da rotina do sistema, o modo de acesso retorna para o modo usuário. Funções do Sistema As principais funções do núcleo encontradas na maioria dos sistemas comerciais são as seguintes: Gerenciamento de Processos: função responsável por alocar em memória todos os recursos necessários à execução do processo. É esta função que aloca em memória, além do executável, o contexto do processo, o buffer de leitura/gravação (se necessário), além de listas e estruturas de controle utilizadas pelo sistema operacional. Nesta função também são estabelecidos vínculos físicos a arquivos em disco, fitas e outros periféricos que serão usados no processamento. Quando do fim da execução do programa, é esta função que desaloca todos os espaços em memória ocupados pelo processo, liberando-os para futuras alocações a outros processos: V e r s ã o 1 . 0 P á g i n a 32 de 36 Escalonamento e controle de processos: função responsável por organizar a fila de acesso ao processador. Utiliza parâmetros do sistema e do perfil do usuário para estabelecer a ordem em que os processos permanecerão à espera pela liberação da CPU, para então entrarem em execução. Escalonamentos do tipo não-preemptivos são aqueles onde o sistema operacional não pode interromper o processo em execução para retirá-lo da CPU. Assim sendo, se nenhum evento externo ocorresse durante a execução do processo, este permanecia na CPU até terminar ou então alguma instrução do próprio programa o desviasse para o estado de espera (operação de E/S). Já os escalonamentos preemptivos são caracterizados pela possibilidade de o sistema operacional interromper o processo em execução para retirá-lo da CPU e dar lugar a outro. Neste caso o processo retirado da CPU volta ao estado de pronto, onde permanece aguardando nova oportunidade de ocupar a CPU. Com o uso da preempção, é possível ao sistema priorizar a execução de processos, como no caso de aplicações em tempo real. Outro benefício é a possibilidade de implementar políticas de escalonamento que compartilhem o processador de uma maneira mais uniforme, balanceando o uso da CPU entre os processos. Gerenciamento de memória: função responsável por fornecer à função de criação/eliminação de processos os endereços em memória disponíveis para alocação: Swapping: É uma técnica aplicada à gerência de memória que visa dar maior taxa de utilização à memória principal, melhorando seu compartilhamento. Visa também resolver o problema da falta de memória principal num sistema. Toda vez que um programa precisa ser alocado para execução e não há espaço na memória principal, o sistema operacional escolhe entre os processos alocados que não tem previsão de utilizar a CPU nos próximos instantes (quase sempre entre aqueles que estão em interrupção de E/S ou no final da fila de pronto), e “descarrega” este processo da memória para uma área especial em disco, chamada arquivo de swap, onde o processo fica armazenado temporariamente. Durante o tempo em que o processo fica em swap, o outro que necessitava de memória entra em execução ocupando o espaço deixado pelo que saiu. Pouco antes de chegar a vez do processo armazenado em swap utilizar a CPU, o sistema escolhe um outro processo para descarregar para swap e devolve o anterior da área de swap para a memória principal, para que este possa ser executado novamente. E vai trabalhando assim até que os processos vão terminando. O problema dessa técnica é que pode provocar um número excessivo de acesso à memória secundária (disco), levando o sistema a uma queda de desempenho. Memória Virtual: É uma técnica sofisticada e poderosa de gerência de memória onde as memórias principal e secundária são combinadas, dando ao usuário a impressão de que existe muito mais memória do que a capacidade real de memória principal. O conceito de memória virtual baseia-se em não vincular o endereçamento feito pelo programa aos endereços físicos da memória principal. Desta forma, o programa e suas estruturas de dados deixam de estar limitados ao tamanho da memória física disponível, pois podem possuir endereços vinculados à memória secundária, que funciona como uma extensão da memória principal. Outra vantagem desta técnica é permitir um número maior de processos compartilhando a memória principal, já que apenas partes de cada processo estarão residentes. Isto leva a uma utilização mais eficiente do processador, além de minimizar (ou quase eliminar) o problema da fragmentação. Gerenciamento de sistemas de arquivos: responsável pelo gerenciamento dos arquivos e diretórios, bem como seu compartilhamento pelos diversos usuários, implementando mecanismos de controle da segurança e direitos de acesso às áreas utilizadas pelos usuários nos diversos dispositivos: V e r s ã o 1 . 0 Estrutura de Diretórios: É como o Sistema organiza logicamente os arquivos. Contém entradas associadas aos arquivos, com as informações de localização, nome, organização e outros atributos: P á g i n a 33 de 36 o o o V e r s ã o Nível único: é a implementação mais simples de uma estrutura de diretórios, onde existe um único diretório contendo todos os arquivos do disco. É muito limitado, não permitindo a criação de arquivos com o mesmo nome. Diretório pessoal: Evolução do modelo anterior, permite a cada usuário ter ser “diretório” particular, sem a preocupação de conhecer os outros arquivos do disco. Neste modelo há um diretório “master” que indexa todos os diretórios particulares dos usuários, provendo o acesso a cada um. Múltiplos níveis (ÁRVORE): É o modelo utilizado hoje em dia em quase todos os Sistemas Operacionais. Nesta modalidade cada usuário pode criar vários níveis de diretórios (ou sub-diretórios), sendo que cada diretório pode conter arquivos e sub-diretórios. O número de níveis possíveis depende do Sistema Operacional. Sistemas de alocação de arquivos: o FAT: sistema criado no MS-DOS e depois utilizado no Windows. Usa listas encadeadas tem um limite de área utilizável em partições de 2 GB, caracteriza-se por um baixo desempenho no acesso e armazenamento. o FAT32: igual ao FAT no que diz respeito a organização e desempenho, mas pode trabalhar com partições de até 2TB. o NTFS: NT File System, original da plataforma Windows NT/2000/XP. Opera com uma estrutura em árvore binária, oferecendo alto grau de segurança e desempenho: nomes de arquivo com até 255 caracteres, podendo conter maiúsculas, minúsculas e espaços em branco; dispensa ferramentas de recuperação de erros; bom sistema de proteção de arquivos; criptografia. o UNIX: Usa diretório hierárquico, com um raiz e outros diretórios subordinados. Neste Sistema Operacional todos os arquivos são considerados apenas como uma “seqüência” de bytes, sem significado para o Sistema. É responsabilidade da aplicação controlar os métodos de acesso aos arquivos. O UNIX utiliza também alguns diretórios padronizados, de exclusividade do Sistema. Gerência de espaço livre: São três as formas de se implementar estruturas de espaços livres: o A primeira é através de uma tabela denominada mapa de bits, onde cada entrada da tabela é associada a um bloco do disco representado por um bit, que estando com valor 0 indica que o espaço está livre, e com valor 1 representa um espaço ocupado. Gasta muita memória, pois para cada bloco do disco há uma entrada na tabela; o A segunda forma é utilizando uma lista encadeada dos blocos livres do disco. Desse modo, cada bloco possui uma área reservada para armazenar o endereço do próximo bloco livre. Apresenta problemas de lentidão no acesso, devido às constantes buscas sequenciais na lista; e, o A terceira forma é a tabela de blocos livres. Nesta, leva em consideração que blocos contíguos de dados geralmente são alocados/liberados simultaneamente. Desta forma, pode-se enxergar o disco como um conjunto de segmentos de blocos livres. Assim, pode-se manter uma tabela com o endereço do primeiro bloco de cada segmento e o número de blocos contíguos que se seguem. Proteção de acesso: Considerando-se que os meios de armazenamento são compartilhados por vários usuários, é fundamental que mecanismos de proteção sejam implementados para garantir a integridade e proteção individual dos arquivos e diretórios: 1 . 0 P á g i n a 34 de 36 o o o Senha de acesso: mecanismo de simples implementação, mas apresenta duas desvantagens: não é possível determinar quais os tipos de operação podem ser efetuadas no arquivo, e, se este for compartilhado, todos os usuários que o utilizam devem conhecer a senha de acesso. Grupos de usuário: é muito utilizada em muitos Sistemas Operacionais. Consiste em associar cada usuário a um grupo. Os grupos são organizados logicamente com o objetivo de compartilhar arquivos e diretórios no disco. Este mecanismo implementa três níveis de proteção: OWNER (dono), GROUP (grupo) e ALL (todos). Na criação do arquivo o usuário especifica se o arquivo pode ser acessado somente pelo seu criador, pelo grupo ou por todos os usuários, além de definir que tipos de acesso podem ser realizados (leitura, escrita, execução e eliminação) Lista de controle de acesso: é uma lista associada ao arquivo onde são especificados quais os usuários e os tipos de acesso permitidos. O tamanho dessa estrutura pode ser bastante extenso se considerarmos que um arquivo pode ser compartilhado por vários usuários. Além deste problema, há o inconveniente de se fazer acesso sequencial à lista toda vez que um acesso é solicitado. Em determinados sistemas de arquivos pode-se utilizar uma combinação de proteção por grupos de usuários ou por listas de acesso, oferecendo assim maior flexibilidade ao mecanismo de proteção de arquivos e diretórios. Gerenciamento de dispositivos de E/S: responsável por gerenciar os dispositivos, prestando auxílio à criação/eliminação de processos e à gerência de sistemas de arquivos no que diz respeito ao endereçamento e associação de arquivos em periféricos (conhecidos como drivers): Tratamento de interrupções e exceções: já explicados anteriormente, em detalhes; Suporte a redes e teleprocessamento: é esta função que executa todos os serviços de rede, fazendo o empacotamento das mensagens vindas dos terminais para a CPU central e vice-versa, além de controlar e confirmar o envio e recebimento de todas as mensagens que trafegam pela rede; Contabilização de uso do sistema: responsável por contabilizar o uso de todos os recursos do sistema consumidos pelos usuários e suas aplicações. São registrados: tempo de CPU, tempo corrido, quantidade de área alocada em memória, em disco, linhas impressas, páginas de papel, entre outros. Isto se faz necessário para servir de subsídio para análise de performance, estatísticas de gastos com material de consumo e também para definição d e custos de processamento. Auditoria e segurança do sistema: função extremamente importante, pois detecta e registra (num arquivo especial de LOG) todas as ocorrências de erro e violação de direitos de acesso ao sistema, aos arquivos, à memória e a todos os recursos do sistema. O arquivo de LOG é usado pela gerência de sistemas, com o intuito de verificar e aperfeiçoar os mecanismos de segurança e proteção ao sistema. Conteúdo integral em (fonte): Apostila “Arquitetura de Sistemas Operacionais” do curso técnico em informática, IFNMG V e r s ã o 1 . 0 P á g i n a 35 de 36 Exercícios 1) Pressuponha que tenha sido criado um novo sistema operacional denominado Doors. O Doors não tem suporte a gerenciamento de usuários, pois somente o usuário Administrador pode realizar login no sistema. Doors é especialmente desenhado para executar um serviço de banco de dados desenhado para aplicações críticas em relação ao desempenho e que sejam executados em ambientes corporativos com milhares de usuários utilizando este serviço concorrentemente. Qual opção abaixo seria correta em relação a este sistema operacional? a) Não é economicamente viável por atuar em áreas onde já existem produtos com liderança de mercado e que dificilmente poderiam ser afetadas pela concorrência a este sistema operacional, seja em aplicações gerais ou em aplicações de nicho. b) É multiusuário, pois milhares de usuários podem utilizar seus serviços de forma concorrente. c) É multitarefa, pois dá suporte a execução de serviços de banco de dados e acesso a ambientes corporativos. a) É um periférico que exibe resultados na tela do computador com o objetivo de executar tarefas específicas. Também pode ser definido como os programas que comandam o funcionamento de um computador. b) É uma sequência de instruções escritas para serem interpretadas por um computador com o objetivo de executar tarefas específicas. Também pode ser definido como os programas que comandam o funcionamento de um computador. c) É uma operação realizada somente em micros com processador 80386 em diante. Também pode ser definido como os programas que comandam o funcionamento de um computador. d) É todo conjunto de periféricos de saída de dados com o objetivo de executar tarefas específicas. Também pode ser definido como os programas que comandam o funcionamento de um computador. e) Nenhuma das alternativas acima. d) Não é economicamente viável por não suportar gerenciamento de usuários. 4) Cite 2 ou 3 exemplos para cada tipo de software elencado a seguir: e) É monousuário, pois somente um usuário pode realizar login no sistema. - Softwares Básicos - Software Utilitário - Software Aplicativo 2) Qual a definição de Sistemas Operacionais? Cite algumas das principais funções de um Sistema Operacional. 3) É sabido que o computador é composto por dois componentes fundamentais: hardware e software. O hardware se refere à parte física e o software à parte lógica do computador. Assim, podemos afirmar que o software: V e r s ã o 1 . 0 5) Os Sistemas Operacionais são constituídos de duas principais estruturas: shell e kernel. Qual a principal diferença entre eles? 6) Quantos e quais são os meios de gerenciamento de um Sistema Operacional? Caracterize-os. P á g i n a 36 de 36