Baixe o app para aproveitar ainda mais
Prévia do material em texto
V e r s ã o 1 . 0 P á g i n a 1 de 36 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 2 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 de- senvolvidos 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. 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 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 ro- das dentadas que levava os dígitos de uma coluna a ou- tra. Os resultados apareciam em uma espécie de janeli- nha. 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 traba- lhava por meio de alavancas e relógios. Figura 3. A máquina de Leibniz, que já incluía operações como multiplicação e divisão V e r s ã o 1 . 0 P á g i n a 3 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 in- ventou uma máquina de tear que trançava o tecido de acordo com uma programação que era fornecida atra- vés de furos num cartão. Figura 4. Máquina de tear usando programação através de cartões perfurados Na época da Revolução Industrial, foram coloca- das as primeiras grandes ideias sobre o trabalho hu- mano 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 in- glês Charles Babbage desenvolveu a ideia de um dispo- sitivo de entrada e saída. Essa máquina usava cartões perfurados. 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 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 referencia- dos posteriormente, adotando para sua máquina o con- ceito de memória. Figura 6. Cartões perfuradosA Primeira programadora. A condessa de Lo- velace, 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 necessi- dade de loops e sub-rotinas. Por esta contribuição, Ada ficou reconhecida na história como a primeira progra- madora. Linha do tempo dos precursores dos computadores 300 a.C. Ábaco 1614 Ossos de Napier 1632 Régua de Cálculo 1642 “La Pascaline” 1672 Calculadora de Leibniz 1804 Tear de Jacquard 1822 Máquina Diferencial (Babbage) 1837 Máquina Analítica V e r s ã o 1 . 0 P á g i n a 4 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 de- codificação. As informações eram transformadas em si- nais (0 e 1). A partir daí, as máquinas puderam traba- lhar com todos os tipos de informação. Figura 7. A máquina de Alan Turing, que trabalhava com o pro- cesso 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 8. A máquina de Herman Hollerith, utilizada no senso ame- ricano de 1890 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 es- sas máquinas poderiam trazer a longo prazo, emprega- ram vultosos investimentos em pesquisas e projetos sobre computadores. Durante a 2ª Guerra Mundial, os militares começaram a ter os primeiros resultados des- ses 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 9. Para o seu funcionamento, o Mark I utilizava componen- tes 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 fun- cionava por meio de um sistema construído inteira- mente 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 ou- tro computador, o EDVAC, projetado com uma progra- mação interna. V e r s ã o 1 . 0 P á g i n a 5 de 36 Figura 10. Para o seu funcionamento, o ENIAC utilizava um con- junto 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 Neu- mann, criou um sistema de estrutura lógica para o com- putador, para que pudesse trabalhar com variados ti- pos de informações ao mesmo tempo. 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 se- micondutores e com a mesma função das válvulas, po- rém, mais rápida, de maior confiabilidade, eficiência e durabilidade, utilizando menores quantidades de ener- gia, 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. Com a evolução dos transistores, desenvolveu- se a ideia de criar uma peça eletrônica com maior ca- pacidade de processamento de informações: criou-se o chip em apenas uma peça. A história da computação modifica-se continua- mente 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/introducao- a-computacao-livro/livro/livro.chunked/ch01s01.html As Gerações dos Computadores Os computadores são máquinas capazes de rea- lizar vários cálculos automaticamente, além de possuir dispositivos de armazenamento e de entrada e saída. Nesta seção iremos ver a evolução dos computa- dores até os dias atuais. Primeira Geração (1946-1954) A primeira geração dos computadores é mar- cada 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 fluxo de elétrons. As válvulas aqueciam bastante e costumavam queimar com facilidade. Figura 11. As válvulas eram do tamanho de uma lâmpada V e r s ã o 1 . 0 P á g i n a 6 de 36 Além disso, a programação era realizada dire- tamente 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 fei- tos em fita magnética. Um dos representantes desta geração é o ENIAC. Ele possuía 17.468 válvulas, pesava 30 tone- ladas, tinha 180 m² de área construída, sua veloci- dade 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, crip- toanalista e cientista da computação britânico. Foi influente no desenvolvimento da ciência da compu- tação e proporcionou uma formalização do conceito de algoritmo e computação com a máquina de Tu- ring, desempenhando um papel importante na cria- ção do computador moderno. Durante a Segunda Guerra Mundial, Turing trabalhou para a inteligên- cia britânica em Bletchley Park, num centro especia- lizado 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 Labo- ratório Nacional de Física do Reino Unido, onde criou um dos primeiros projetos para um computa- dor de programa armazenado, o ACE. Aos 24 anos de idade, consagrou-se com a pro- jeção de uma máquina que, de acordo com um sis- tema formal, pudesse fazer operações computacio- nais. Mostrou como um simples sistema automático 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, li- gando a abstração de sistemas cognitivos e a reali- dade concreta dos números. Isto é buscado até hoje por pesquisadores de sistemas com Inteligência Arti- ficial (IA). Para comprovar a inteligência artificial ounão de um computador, Turing desenvolveu um teste que consistia em um operador não poder dife- renciar se as respostas a perguntas elaboradas pelo operador eram vindas ou não de um computador. Caso afirmativo, o computador poderia ser conside- rado como dotado de inteligência artificial. Sua má- quina pode ser programada de tal modo que pode imitar qualquer sistema formal. A ideia de computa- bilidade 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 re- monta a esta época. Conta a história que um dia o computador apresentou defeito. Ao serem investiga- das as causas, verificou-se que um inseto havia pre- judicado seu funcionamento. A foto abaixo, suposta- mente, indica a presença do primeiro bug. Até hoje os insetos costumam invadir os equi- pamentos eletrônicos, portanto observe-os atenta- mente, evite deixar comida próximo ao computador e não fique sem utilizá-lo por um longo período. V e r s ã o 1 . 0 P á g i n a 7 de 36 Figura 12. Registro do primeiro bug da história Segunda Geração (1955-1964) A segunda geração de computadores foi mar- cada 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 tran- sistores foram incorporados aos computadores. Figura 13. Circuito com vários transistores (esquerda). Compara- ção do circuito com válvulas (canto superior-direito) com um cir- cuito composto de transistores (inferior-direito). Na segunda geração o conceito de Unidade Central de Procedimento (CPU), memória, lingua- gem de programação e entrada e saída foram desen- volvidos. O tamanho dos computadores diminuiu consideravelmente. Outro desenvolvimento impor- tante foi a mudança da linguagem de máquina para a linguagem assembly, também conhecida como lin- guagem simbólica. A linguagem assembly possibilita a utilização de mnemônicos para representar as ins- truções de máquina. 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 pe- ríodo surgiu o armazenamento em disco, comple- mentando os sistemas de fita magnética e possibili- tando 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 equi- pamentos menores e mais baratos. 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 V e r s ã o 1 . 0 P á g i n a 8 de 36 simultaneamente, facilitando a produção em massa. Este avanço pode ser comparado ao advento da im- pressa, que revolucionou a produção dos livros. Didaticamente os circuitos integrados são ca- tegorizados de acordo com a quantidade de integra- ção que eles possuem: LSI (Large Scale Integration – 100 transisto- res): computadores da terceira geração. VLSI (Very Large Scale Integration – 1.000 transistores): computadores da quarta geração. ULSI (Ultra-Large Scale Integration – mi- lhõ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 comer- cial 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 cli- ente. 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 con- correntes 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 computado- res pessoais. Figura 17. Computador Apple I Outro evento importante desta época foi que a IBM passou a separar a criação de hardware do de- senvolvimento de sistemas, iniciando o mercado da indústria de softwares. Isto foi possível devido a uti- lização das linguagens de alto nível nestes computa- dores. Uma linguagem é considerada de alto nível quando ela pode representar ideias abstratas de forma simples, diferente da linguagem de baixo nível que re- presenta 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 Load, mul, add e store são os mnemôni- cos que representam as instruções em código de má- quina (binário). V e r s ã o 1 . 0 P á g i n a 9 de 36 Quarta Geração (1977-1991) Os computadores da quarta geração são reco- nhecidos pelo surgimento dos processadores (CPU ou UCP) — Unidade Central de Processamento. Os siste- mas operacionais como MS-DOS, UNIX, Apple’s Ma- cintosh 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 te- clados com os layouts atuais foram criados nesta época. Os computadores eram mais confiáveis, mais rápidos, menores e com maior capacidade de arma- zenamento. Esta geração é marcada pela venda de computadores pessoais. Figura 18. Computador pessoal da quarta geração Quinta Geração (1991-dias atuais) Os computadores da quinta geração usam pro- cessadores com milhões de transistores. Nesta gera- ção surgiram as arquiteturas de 64 bits, os processa- dores que utilizam tecnologias RISC e CISC, discos rígidos com capacidade superior a 600GB, pen-dri- ves com mais de 1GB de memória e utilização de disco ótico com mais de 50GB de armazenamento. Figura 19. Computador da quinta geração A quinta geração está sendo marcada pela in- teligê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 in- dústrias de computadores. Hoje em dia, queremos que nossos computadores se conectem ao celular, a televisão e a muitos outros dispositivos como gela- deira e câmeras de segurança. Conteúdo integral em (fonte): http://producao.virtual.ufpb.br/bo- oks/camyle/introducao-a-computacao-livro/livro/livro.chun- ked/ch01s01.html V e r s ã o 1 . 0 P á g i n a 10 de 36 COMPUTADORES E PRINCI- PAIS 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ên- ciasde zeros e uns. O computador ao ler estas sequências, consegue interpretá-las e em seguida apresentar as infor- maçõ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 aplica- dos num fio, diferentes direções de magnetização em uma fita magnética, entre outras. O importante é que seja pos- sí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 dis- tintos. Abaixo, nós temos exemplos de como podemos associar significados aos valores do bit. Bit Porta Lâmpada Sexo Detector Movimento Estado Civil 0 Aberta Apagada Masculino Sem movimento Solteiro 1 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, en- quanto 1 seria Casado. Observe que o número de possibilidades diferentes que podemos representar depende do tamanho da se- quência de bits que estamos utilizando, mais precisamente 2tamanho: 2¹= 2 2²= 4 2³= 8 24= 16 25= 32 26= 64 27= 128 28= 256 (1byte) 216= 65.535 232= 4.294.967.295 264= 18.446.744.073.709.551.615 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 11 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: Arquitetura de Computador (John Von Neumman) A Arquitetura de John von Neumann (pronunciado Nóimann) é uma arquitetura de computador que se caracte- riza 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 pro- grama 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: bus- car um programa na memória, instrução por instrução, e executá-lo sobre os dados de entrada; além de (iii) disposi- tivos 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. •São programas que gerenciam todo o funcionamento do computador, além de propiciar uma interface com o usuário: •Exemplo: Sistemas Operacionais Básicos •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 Utilitários •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 Aplicativos V e r s ã o 1 . 0 P á g i n a 12 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 disposi- tivos 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 con- vertidos 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 dis- positivos 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 13 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 intera- gir com o computador. Nos primórdios da computação, era a única forma de interação do ho- mem 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 com- putador. 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 maioriados notebooks. Depen- dendo 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 14 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 di- versos 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 trans- ferir 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 15 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 A Memória Principal A memória do computador consiste numa coleção de registradores numerados consecutivamente (endereça- dos), 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, dispositi- vos de E/S, programas de usuário e pilha do sistema operacional. Tipos de Memória Memória Principal RAM ROM Cache Memória Secundária Discos (HD, CD, etc.), fitas e memórias flash V e r s ã o 1 . 0 P á g i n a 16 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 ope- randos (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 al- guma 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 des- trutivo 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 17 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 ul- travioletas. 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 re- quisiçõ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 en- tanto, é uma memória lenta não podendo assim suportar proces- sadores velozes. Quando um processador requer dados da me- mória, ele espera recebê-los num tempo máximo. Isto é chamado ciclo de clock. O sistema de cache inicia tentando lertantos dados da me- mória dinâmica quanto possível e guarda-os em sua memória es- tática de alta velocidade (ou cache). Quando requisições do pro- cessador 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 lenta- mente). 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 Figura 22. Memórias cache L1 e L2 (níveis) – esquemático, com a respectiva comunicação com o CORE do processador e com a memória RAM. V e r s ã o 1 . 0 P á g i n a 18 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 re- tirada do computador e transportada facilmente para ou- tro. O winchester ou disco rígido, por exemplo, não é re- moví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, DVD- RW, Blu-ray; Pen-drives e cartões de memória, etc. Conteúdo integral em (fonte): http://www.ime.usp.br/~weslley/memo- ria.htm#func 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 uni- dade 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 ope- ração. Figura 23. Disco Rígido (HD), Flexível (Disquete), CD-ROM e Fita Mag- nética e seus respectivos "drivers" Figura 24. Pen-drivers e cartões de memória (diversos tamanhos, marcas e capacidades) V e r s ã o 1 . 0 P á g i n a 19 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 pro- cesso 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 re- gistrador 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 20 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 tempo- rá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 infor- maçõ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. 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. e) Esta memória é responsável pela inicialização do Sistema Operacional. 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, ins- truções e dados. Com base nestas informações ca- racterize essa arquitetura computacional enfati- zando as funcionalidades principais de seus com- ponentes. 3. Em informática, memória são todos os dispositi- vos que permitem a um computador guardar da- dos, temporariamente ou permanentemente. Me- mória é um termo genérico para designar compo- nentes de um sistema capazes de armazenar da- dos e programas. Sabendo disto, diferencie memó- ria RAM e memória ROM. 4. Como funciona a Unidade Central de Processa- mento (CPU)? Comente. 5. São exemplos de periféricos que acumulam a função de entrada e saída de dados: I) Modem estão corretas II) Touch Screen III) Teclado 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. V e r s ã o 1 . 0 P á g i n a 21 de 36 6. Associe aos periféricos: (1) Periféricosde Entrada (2) Periféricos de Saída (3) Periféricos de Entrada e Saída. ( ) Teclado ( ) Mouse ( ) Microfone ( ) HD ( ) Impressora ( ) Modem ( ) Monitor ( ) Scanner ( ) Cd-Rom ( ) Plotter ( ) Leitura Ótica ( ) Kit Mutimídia ( ) Disquete ( ) Caixa de Som V e r s ã o 1 . 0 P á g i n a 22 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 mag- né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 uti- lizado nos sistemas atuais. Na década de 60, a partir do surgimento dos circuitos integrados, foi possível difundir o uso de sistemas com- putacionais 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, multi- programaçã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 pes- soal. Liderados pela IBM, diversos fabricantes seguiram por essa linha, porém alguns deles não abandonando a fabri- caçã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 siste- mas 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/mono- tarefa (devido à baixa capacidade de armazenamento dos micros, naquela época). Com o avanço da tecnologia, os mi- cros 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 23 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 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 com- putadores Palm é um bom exemplo de um moderno sistema operacional monousuário e monotarefa. O MS-DOS tam- bém pode ser enquadrado nesta categoria. Usuários e Sistemas Operacionais Sistemas Monousuário / Monotarefa Sistemas Monousuário / Multitarefa Sistemas Multiusuários V e r s ã o 1 . 0 P á g i n a 24 de 36 Sistemas Monousuário/multitarefa Este tipo de sistema operacional é o mais utilizado em computadores de mesa e laptops. As plataformas Micro- soft Windows e Apple MacOS são exemplos de sistemas operacionais que permitem que um único usuário utilize di- versos 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 Sistemas Monoprogramáveis/Monotarefa Os primeiros sistemas operacionais eram voltados tipicamente para a execução de um único programa. Qual- quer 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 multipro- gramá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. Tipos de Sistemas Opercionais Sistemas Monoprogramáveis / Monotarefa Sistemas Multiprogramáveis / Multitarefa Sistemas Com Múltiplos Processadores V e r s ã o 1 . 0 P á g i n a 25 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 pre- ocupaçã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 computacio- nais 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 compartilha- mento 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 pro- gramas. Figura 28. Sistemas Multiprogramáveis/Multitarefa V e r s ã o 1 . 0 P á g i n a 26 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 asdiferentes aplicações. Apesar de mais efici- entes 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 apli- cações são gerenciadas, podendo ser divididos em sistemas batch, de tempo compartilhado e de tempo real, de acordo com organograma abaixo. 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 im- plementadas 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, te- clado 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. Sistemas Multiprogramáveis / Multitarefa Sistemas Batch Sistemas de Tempo Compartilhado Sistemas de Tempo Real V e r s ã o 1 . 0 P á g i n a 27 de 36 A maioria das aplicações comerciais atualmente é processada em ambiente de tempo compartilhado, que ofe- rece 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 siste- mas 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 fun- damental. Sistemas com Múltiplos Processadores Os sistemas com múltiplos processadores caracterizam-se por possuir duas ou mais CPUs interligadas e traba- lhando 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 Assimétricos Sistemas Fracamente Acoplados Redes Distribuídos V e r s ã o 1 . 0 P á g i n a 28 de 36 Na figura podemos perceber a divisão dos sistemas multiprocessados em duas categorias iniciais: sistemas for- temente acoplados e fracamente acoplados. A grande diferença entre estas duas categorias é que nos sistemas forte- mente 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 inter- ligados 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 distri- buí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 29 de 36 Enquanto nos sistemas em rede os usuários têm conhecimento dos hosts e seus serviços, nos sistemas distri- buí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 apli- caçõ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 inesperadospodem 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 resul- tado 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 fun- damento básico dos sistemas multiprogramáveis/multitarefa. Uma interrupção é sempre gerada por um evento externo ao programa e, sendo assim, independe da ins- truçã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ér- mino 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 30 de 36 que o programa interrompido possa retornar posteriormente à sua execução é necessário que, no momento da inter- rupçã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 res- taurados 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 é des- viado. 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 ker- nel. É fundamental não se confundir o núcleo do sistema com aplicações, utilitários ou o interpretador de coman- dos (shell), que acompanham o sistema operacional. As aplicações são utilizadas pelos usuários de maneira transpa- rente, 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 31 de 36 texto e interpretadores de comandos permitem aos usuários, desenvolvedores e administradores de sistema uma in- teraçã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 me- canismos 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 32 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 uti- lizaçã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 neces- sita 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 emmemó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 33 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 caracte- rizados 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 per- manece aguardando nova oportunidade de ocupar a CPU. Com o uso da preempção, é possível ao sis- tema 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 ma- neira 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 prin- cipal 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 pro- grama 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 comparti- lhando 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 frag- mentaçã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: Estrutura de Diretórios: É como o Sistema organiza logicamente os arquivos. Contém entradas associa- das aos arquivos, com as informações de localização, nome, organização e outros atributos: V e r s ã o 1 . 0 P á g i n a 34 de 36 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. o Diretório pessoal: Evolução do modelo anterior, permite a cada usuário ter ser “diretório” par- ticular, sem a preocupação de conhecer os outros arquivos do disco. Neste modelo há um dire- tório “master” que indexa todos os diretórios particulares dos usuários, provendo o acesso a cada um. o Múltiplos níveis (ÁRVORE): É o modelo utilizado hoje em dia em quase todos os Sistemas Ope- racionais. 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 pos- sí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
Compartilhar