• Home
  • Chat IA
  • Guru IA
  • Tutores
  • Central de ajuda
Home
Chat IA
Guru IA
Tutores

·

Engenharia Mecatrônica ·

Arquitetura de Computadores

Envie sua pergunta para a IA e receba a resposta na hora

Recomendado para você

Analise e Explicacao do Circuito Digital com Portas AND e NOT

2

Analise e Explicacao do Circuito Digital com Portas AND e NOT

Arquitetura de Computadores

UNISA

Prova de Arquitetura de Computadores: Conversão de Bases Numéricas e Circuitos Digitais

8

Prova de Arquitetura de Computadores: Conversão de Bases Numéricas e Circuitos Digitais

Arquitetura de Computadores

UNISA

AVI - Avaliação Integrada com Resolução de Questões de Cálculo

5

AVI - Avaliação Integrada com Resolução de Questões de Cálculo

Arquitetura de Computadores

UNISA

AVC - Avaliação Continua - Folha de Resposta

6

AVC - Avaliação Continua - Folha de Resposta

Arquitetura de Computadores

UNISA

Analise do Circuito Digital Y AB CD ABCD e Aplicabilidade da Porta NOT

3

Analise do Circuito Digital Y AB CD ABCD e Aplicabilidade da Porta NOT

Arquitetura de Computadores

UNISA

Conversão de Bases Numéricas e Lógica Digital - Lista de Exercícios

7

Conversão de Bases Numéricas e Lógica Digital - Lista de Exercícios

Arquitetura de Computadores

UNISA

Avi - Arquitetura de Computadores e Sistema Operacionais

4

Avi - Arquitetura de Computadores e Sistema Operacionais

Arquitetura de Computadores

UNISA

Texto de pré-visualização

ARQUITETURA DE COMPUTADORES E SISTEMAS OPERACIONAIS Wellington Barbosa 2 SUMÁRIO 1 INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES 3 2 PRINCIPAIS COMPONENTES DA ARQUITETURA DE COMPUTADORES 20 3 ARQUITETURAS DE COMPUTADORES BÁSICAS E AVANÇADAS 34 4 FUNDAMENTAÇÃO DOS PRINCIPAIS CONCEITOS RELATIVOS À ÁREA DE SISTEMAS OPERACIONAIS 49 5 ESTUDO DA ESTRUTURA DOS SISTEMAS OPERACIONAIS MAIS UTILIZADOS 65 6 PESQUISA SOBRE OS PRINCIPAIS SISTEMAS OPERACIONAIS UTILIZADOS NOS DIAS ATUAIS 84 3 1 INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES Olá aluno Neste bloco vamos compreender um pouco melhor as diferenças entre organização e arquitetura de computadores passando um pouco por seus modelos físicos e lógicos Além disso vamos nos apropriar melhor dos conceitos de sistemas de computação e de processamento de dados diferenciar o que é dado informação e conhecimento e como os sistemas computacionais modernos nos ajudam a obter cada um deles Vamos também fazer um passeio pelo tempo e analisar o histórico das gerações de computadores com suas principais características e mudanças no decorrer do tempo E para concluir o bloco vamos conhecer a relação entre arquitetura de computadores e os sistemas operacionais o que irá nos apoiar na escolha de bons sistemas operacionais para realização das nossas tarefas corporativas de maneira adequada ao hardware que temos à disposição 11 Arquitetura vs Organização de Computadores a organização estruturada de computadores e a descrição dos componentes da arquitetura de computadores Os termos arquitetura de computadores e organização de computadores podem parecer um pouco redundantes e confusos a princípio porém ao nos familiarizarmos fica fácil distinguilos O termo arquitetura de computadores tem relação com os componentes mais visíveis ao programador durante o desenvolvimento de seus softwares já organização de computadores é algo mais transparente imperceptível ao programador e principalmente a usuários finais muitas vezes sendo a forma de implementação dentro da arquitetura Um sistema desenvolvido para determinada arquitetura pode não funcionar se implantado em uma arquitetura diferente da sua atual Como exemplo disso podemos reparar em diversos sistemas operacionais atuais a distinção entre arquitetura de 64 bits e 32 bits para processadores Programas feitos para arquitetura de 32 bits não irão 4 funcionar em um processador 64 bits a menos que haja uma adaptação para realizar a compatibilidade entre arquiteturas Podemos ver com esse exemplo que a troca de arquitetura influencia diretamente no desenvolvimento e escolha de um software Quando nos referimos à organização de computadores não irá impactar diretamente no processo de utilização ou escolha de um software Algo que pode estar relacionado por exemplo é a estratégia de multiplicação para pontos flutuantes A mesma arquitetura pode suportar uma estratégia em que a unidade central de processamento popularmente conhecida como CPU do inglês Central Processing Unit realiza a multiplicação direta entre dois números ou adotar a estratégia que em vez de realizar a multiplicação direta faz a soma de maneira equivalente à multiplicação Por exemplo em vez de realizar o cálculo direto de 3 x 5 pode ser realizado o cálculo 5 5 5 Em ambos os casos se a CPU tem capacidade de realizar instruções de multiplicação o resultado será 15 mas cada um foi realizado com uma organização diferente A arquitetura também pode ser alterada de acordo com a funcionalidade que o computador terá É bem comum utilizar processadores com arquiteturas diferentes em máquinas cliente máquinas utilizadas por usuários finais e máquinas com a função de servidor que promovem serviços para diferentes pessoas simultaneamente Normalmente um servidor terá um processador que suporta mais tipos de virtualização e paralelismo de tarefas além de maior capacidade de recebimento de diversas instruções simultaneamente Por sua vez uma máquina cliente pode até ter maior frequência de processamento para uma tarefa exclusiva porém menor capacidade em multitarefas e virtualização O conhecimento nessa área se faz fundamental principalmente para uso em empresas pois a escolha de uma arquitetura de computadores errada pode comprometer um projeto ou levar a empresa a trocar os seus sistemas em decorrência da arquitetura Outro caso que pode acontecer é a compra de uma arquitetura muito mais cara do que a necessária e não utilizar suas vantagens como por exemplo a compra de computadores com processadores de servidor para utilizar em estações 5 que irão realizar tarefas únicas sem a necessidade de distribuição do processamento entre diversos computadores Nesse exemplo haveria computadores mais caros provavelmente com menor desempenho para tarefas únicas e sem utilizar as vantagens de uma arquitetura voltada para grandes volumes de tarefas Já a alteração da organização do computador é algo que não influencia diretamente na escolha do software pois um mesmo fabricante pode manter uma arquitetura por décadas e só melhorar a sua organização com isso reduzindo custos e aumentando o desempenho Se isso ocorrer os clientes não terão problemas ao migrar os seus sistemas de um parque antigo de máquinas para um novo parque Como citado acima se o processador aceita instruções de multiplicação não será relevante ao programador se tal tarefa está sendo realizada diretamente em uma unidade lógica aritmética com suporte à multiplicação ou se esse cálculo é realizado por uma sequência de somas e depois retornado o resultado 12 Conceituação de sistemas de computação e processamento de dados Para efeito de definição iremos tratar computador como uma máquina conjunto de partes eletrônicas e eletromecânicas capaz de sistematicamente coletar manipular e fornecer os resultados da manipulação de informações para um ou mais objetivos conforme Monteiro 2010 define em seu livro Porém essa definição em tempos atuais pode indicar muitas coisas Se pararmos para analisar temos computadores em todo nosso cotidiano e a todo momento Hoje em dia diversos aparelhos eletrônicos fazem coletas manipulações eou fornecimento de dados para gerar informações até mesmo um cartão de transporte público armazena dados que serão coletados em um computador ligado à catraca do ônibus Antigamente o serviço executado pelos computadores muitas vezes era conhecido como processamento eletrônico de dados inclusive em muitas empresas o que hoje é chamado de departamento de Tecnologia da Informação TI antes era conhecido como Centro de Processamento de Dado CPD Entretanto essa mudança de nomenclatura ocorreu porque atualmente o papel desempenhado pelo 6 departamento vai além de exclusivamente processar dados mas também está diretamente relacionado com a geração de informações que irão apoiar o negócio da empresa e a produção dessa informação é através de recursos tecnológicos O processamento de dados é apenas uma fase do processo de obtenção da informação Após a coleta dos dados temos a primeira fase o processamento quando os dados coletados serão manipulados de maneira sistemática e de acordo com as necessidades definidas para então gerar as informações A partir da sua análise gerada com auxílio do computador será possível realizar uma análise humana e com isso obter conhecimento para apoiar as decisões da empresa e auxiliar na melhora dos resultados do negócio Fonte elaborado pelo autor Figura 11 Fases do processo de obtenção de informação dados processamento informação análise e conhecimento 7 Os dados são a base dos processos a matériaprima antes de qualquer manipulação ou seja da forma como foi obtido da fonte de coleta O dado puro é algo sem significado não transmitindo nenhuma ideia se analisado de maneira bruta Após o processamento dos dados temos a informação que pode ser entendida como dados organizados de acordo com alguma estrutura ou padrão para possibilitar a compreensão humana Com os dados formatados de acordo com a necessidade iremos para a fase da análise para gerar o conhecimento humano e permitir tomadas de decisões mais assertivas Conforme pode ser visto na figura primeiro se coletam os dados depois ocorre o processamento para gerar informações e então fazse a análise que leva ao conhecimento 13 Evolução histórica dos computadores Seguindo a definição clássica de computador podemos dizer que o primeiro computador digital baseado em dígitos foi projetado pelo matemático inglês Charles Babbage que viveu entre 1792 e 1871 Ele dedicou a maior parte de sua vida ao desenvolvimento dessa máquina porém devido à falta de tecnologia da época faleceu antes de vêla funcionando Figura 12 Charles Babbage 17921871 8 Durante o projeto do primeiro computador digital época que ainda nem se imaginava a existência de sistemas operacionais Babbage identificou a necessidade da construção de rotinas lógicas e estruturadas para que sua máquina pudesse realizar as tarefas necessárias Para solucionar esse problema Babbage contratou a pessoa que hoje podemos chamar de a primeira programadora da história Ada Lovelace Após essa tentativa da construção da primeira máquina digital para realização de cálculos analíticos levouse um tempo para existir mais alguma pesquisa relevante nessa área Quando as pesquisas voltaram a acontecer começou a história das arquiteturas de computadores modernos e dos sistemas operacionais Como maneira de organização podemos categorizar nossos estudos dividindo entre as quatro gerações de arquiteturas de computadores TANENBAUM 2016 Com o início da Segunda Guerra Mundial a necessidade de efetuar cálculos mais rápidos e mais precisos foi aumentando a sociedade já precisava de equipamentos que fizessem tal tarefa para terem vantagens estratégicas sobre os inimigos Por esse motivo nessa época a evolução dos computadores deu um grande salto fazendo com que diversos pesquisadores idealizassem suas máquinas e começassem o processo de construção A maioria das máquinas dessa geração eram baseadas em válvulas e levavam segundos para realizar até mesmo os cálculos mais simples Tinham grande problema de falta de confiabilidade pois usavam uma quantidade muito grande de válvulas que frequentemente queimavam logo não se podia confiar muito no equipamento A utilização desses equipamentos era muito complicada desde seu armazenamento pois eram computadores enormes até a manutenção Isso acontecia porque era necessária uma equipe de profissionais com qualificação muito específica para que tivessem seu funcionamento da maneira adequada Outro fator que complicava muito a utilização desses equipamentos era o fato de que a única maneira de interagir com eles para realizar as tarefas era por meio de painéis de programação A ausência de sistemas operacionais nessa geração de computadores limitava seu uso a somente técnicos altamente capacitados pois todas as instruções 9 deveriam ser passadas em linguagem de máquina Nessa época não existia nem a assembly linguagem de segunda geração que faz uso de instruções semelhantes às de máquinas mas com uso de algumas palavras em inglês Somente no começo da década de 1950 foi inserido o cartão perfurado o programador podia desenvolver cartões perfurados para criar algum tipo de rotina que seria executado sem a necessidade de intervenção continua no painel de programação Essa difícil manipulação dos equipamentos normalmente fazia com que somente o próprio criador conseguisse fazer uso adequado de sua invenção Figura 13 Cartões perfurados da década de 1940 Na segunda geração de computadores que teve início em meados da década de 1950 as condições se alteraram bastante pois foi inserido o uso de transistores para substituir a utilização de válvulas Com o uso de transistores já era possível ter computadores capazes de funcionar tempo o suficiente para executar tarefas úteis sem a necessidade de manutenção tão frequente Porém nessa geração os computadores ainda eram equipamentos enormes e de alto custo onde somente grandes cooperações universidades ou instituições governamentais tinham a possibilidade de comprálos e mantêlos Essa evolução já permitiu que os computadores da época começassem a ser comercializados e não mais operados somente por seus próprios fabricantes Foi nesse momento da história que houve a possibilidade de separar as equipes que fariam uso dos computadores sendo possível distinguir o projetista do fabricante do 10 programador e do técnico de manutenção Isso porque a partir de então cada um tinha seu próprio papel e sua função ao utilizar o equipamento Começaram a existir diferentes funções e diferentes qualificações para utilização de computadores mas que ainda demandava alto conhecimento técnico para sua execução O processo de desenvolvimento dos programas nessa geração de computadores também evoluiu bastante pois já começaram as linguagens de programação assembly e Fortran sendo que a princípio havia a necessidade de cada programa ser escrito primeiramente no papel em uma das duas linguagens e depois as instruções eram passadas para os cartões perfurados Esses cartões perfurados eram entregues a um operador que faria a inserção no computador e esperaria um bom tempo até ter a saída do resultado Essa saída seria entregue novamente para o programador para que conferisse o resultado e assim fizesse uso das informações processadas pela máquina Esse processo consumia uma quantidade de tempo muito alta para que fosse operacionalizado pois em diversos pontos havia o deslocamento de um operador andando entre salas para que pudesse pegar todas as instruções de entradas e todos os resultados já processados para levar para os programadores Foi dessa necessidade que surgiram os primeiros sistemas operacionais A funcionalidade dos primeiros sistemas operacionais já se assemelhava aos de hoje em dia o que facilitava a utilização dos recursos de hardware pelo usuário final Os primeiros sistemas operacionais serviam para fazer a leitura de diversos cartões armazenar o conteúdo deles em fitas magnéticas para só depois de uma grande quantidade de instruções armazenadas começar a executálas Quando terminava a execução do processo a saída era gravada em uma segunda fita magnética Com isso ao término de uma instrução outra já começava automaticamente podendo assim executar instruções em lote batch sem a necessidade de troca de cartões a cada instrução ou um operador para ficar andando entre sala sempre que precisasse começar ou terminar uma instrução Agora o processo podia executar por mais tempo e com mais instruções sem intervenção humana 11 No começo da década de 1960 iniciouse a terceira geração onde existiam basicamente dois tipos de computadores os mais potentes utilizados por grandes empresas e universidade que tinham grande capacidade de processamento para realização de cálculos e eram orientados a palavras e os de menor porte que tinham como principal funcionalidade a ordenação e impressão de fitas utilizados por companhias de seguros e bancos orientados a caracteres ao invés de palavras Porém essa segunda estrutura tinha um problema sério de impossibilidade de utilizar programas feitos para uma das arquiteturas funcionar na outra se por exemplo uma empresa comprasse um computador de menor porte e sua demanda crescesse não poderia fazer a migração dos seus programas para um computador de maior porte A terceira geração de sistemas operacionais teve seu início em meados da década de 1960 e veio junto com uma solução para o problema de diferentes arquiteturas para os dois tipos de computadores existentes até então A IBM lançou a primeira geração de computadores baseados em circuitos integrados e não mais em transistores individuais Isso permitiu que os equipamentos ficassem com um custobenefício muito mais acessível e também possibilitou que computadores de diversos portes executassem o mesmo sistema operacional Esse fato permitiu que os programas pudessem ser desenvolvidos para funcionar em qualquer porte de equipamento Em relação as suas antecessoras essa geração tinha a vantagem de poder ser executada em qualquer tamanho de equipamento e para qualquer funcionalidade Porém esse também era seu maior defeito pois um sistema operacional que funcione para qualquer porte de máquina precisava ser muito grande e com muitas funcionalidades Era um sistema com milhões de linhas de código escrita por milhares de programadores e consequentemente diversos erros durante sua programação Eram necessárias atualizações constantes para correções mas estas vinham com erros diferentes e novamente precisavam de atualizações 12 Os sistemas operacionais de terceira geração mesmo tendo suas características negativas também começaram a implementar técnicas fundamentais para a evolução da computação como a multiprogramação Ou seja os computadores IObound Input and Outputbound equipamentos que tinham a maior utilização para tarefas com entrada e saída de dados podiam executar tarefas de processamento enquanto executavam tarefas de escrita nas fitas ou esperavam sua reposição O contrário também acontecia em computadores CPUbound equipamentos que tinham maior utilização de funcionalidades que exigiam processamento tipo computadores utilizados para cálculos de previsão do tempo também conseguiam realizar tarefas de entrada e saída de dados enquanto seus cálculos eram realizados O que possibilitou essa técnica de multiprogramação foi o fato de a memória começar a ser dividida em partes MACHADO MAIA 2017 podendo deixar uma parte da memória responsável para o sistema operacional e outras partes livres para cada uma armazenar uma tarefa diferente criando essa concorrência entre processos IObound e CPUbound de maneira a diminuir a ociosidade da máquina Ainda durante o processo de evolução dos sistemas operacionais de terceira geração identificouse que tendo os sistemas grande capacidade de processamento suportando multiprogramação e atendendo necessidade de vários tipos de sistemas ao mesmo tempo ainda tinham grande ociosidade pois continuavam agindo como sistema de execução em lotes ou seja eles executavam uma série de instruções de maneira sequencial Batch Isso gerava desperdício de tempo pois se um programador errasse uma vírgula durante sua programação teria que esperar o término da execução de todas as instruções de todos os outros programadores para que pudesse corrigir a sua Para solucionar esse problema de usabilidade foi colocado um esquema de rodízio de utilização dos recursos computacionais fazendo a divisão por tempo chamado time sharing Esse recurso identifica quantas pessoas estão utilizando o computador e destina uma fração de tempo normalmente muito inferior a um segundo para cada 13 usuário de maneira que não consigam perceber que estão compartilhando o mesmo hardware com outros usuários pois a fração de tempo reservado a cada um é tão pequena que fica completamente transparente a quem ele está dividindo o recurso Na década de 1980 deuse início a quarta geração de arquitetura de computadores e consequentemente houve mais uma evolução grande nos sistemas operacionais Graças ao desenvolvimento de circuitos integrados em larga escala em que se consegue construir chips com milhares de transistores em apenas um centímetro quadrado de silício foi possível impulsionar a computação pessoal A partir dessa geração tanto o tamanho quanto o custo para a produção de computadores diminuíram muito gerando a possibilidade de que as pessoas pudessem adquirir esses equipamentos para uso inclusive em suas residências e não mais se limitando apenas à empresa ou aos profissionais com qualificação específica na área de computação Nessa época se popularizou a nomenclatura microcomputador pois os computadores com circuito integrados em larga escala tinham seu tamanho bem menor do que as antigas máquinas que necessitavam muitas vezes de uma sala inteira para funcionar Junto dessa geração de computadores começaram a surgir novos equipamentos como por exemplo os discos flexíveis dando início a uma era Então com uma computação mais portátil e mais acessível houve a necessidade de novos sistemas operacionais que acompanhassem essa evolução Com isso algumas empresas começaram a surgir nessa área Hoje podemos dizer que a empresa dessa época que mais se destacou com o desenvolvimento do sistema operacional foi a Microsoft com o MSDOS Microsoft disk operating system fundada por Bill Gates Talvez a principal característica que tenha levado esse sistema operacional a fazer tanto sucesso e se popularizar da maneira que aconteceu tenha sido o fato da Microsoft atrelar a venda de seu sistema operacional ao hardware que o usuário final comprava Isso fez com que os computadores de diversos modelos vendidos pela IBM na época fossem com esse sistema operacional já como padrão 14 Porém os sistemas operacionais do começo dessa geração de computadores eram totalmente baseados em comandos digitados pelo usuário em pouco tempo houve a evolução do desenvolvimento de sistemas operacionais baseados em GUI graphical user interface ou seja sistemas operacionais baseados em janelas ponteiros ícones e menus Esse tipo de interface começou a tornar os computadores mais intuitivos e visualmente mais agradáveis para usuários finais outro fato que ajudou a popularizar mais ainda a computação pessoal 14 Aplicação de sistemas numéricos e conversão entre bases breve abordagem sobre aritmética de ponto flutuante Números são representações de um conceito abstrato normalmente utilizado para representar quantidades Devido à necessidade das sociedades modernas de quantificar fazemos uso de números diversas vezes ao dia seja para calcular um troco ao realizar pagamentos quantificar idade em aniversário ou mesmo para olhar a hora Todas as nossas necessidades casuais são em sistemas numéricos de base decimal ou seja temos dez números para representar a quantidade que queremos e quando esses dez números acabam acrescentamos mais um dígito com isso aumentando a ordem de grandeza no numeral utilizado Os dez números que costumamos trabalhar são 0123456789 Reparem que começamos do 0 e vamos até o 9 Se quiséssemos representar com dois dígitos essa mesma sequência numérica poderíamos escrever 00 01 02 03 04 05 06 07 08 09 que transmitiria a mesma ideia de valor pois o 0 à esquerda de um número inteiro não altera em nada o seu valor Porém com essa quantidade de números isolados é muito limitada a nossa contagem então quando é necessário representar algum valor acima de 9 juntamos mais dígitos para representar Por exemplo se seguirmos a sequência o próximo valor é o 10 e depois o 11 Reparem que o número 10 é o segundo algarismo que tínhamos em nossa sequência numérica decimal 1 seguido pelo primeiro algarismo 0 então iremos alterando o último número da esquerda para aumentar o valor da nossa 15 representação e se quisermos representar o próximo número iremos utilizar o segundo número tanto na esquerda quanto na direita 11 Esse processo se repetirá até chegarmos ao 19 a partir de então iremos mudar para 20 e repetiremos o processo Contar com uma base decimal é muito natural pois somos ensinados com ela desde a infância Por isso muitas vezes não paramos para analisar o como é feita só a assimilamos e aceitamos porém dentro da computação outras bases numéricas se fazem necessárias pois trabalhamos com diferentes tipos de medições Uma base muito utilizada na computação é a binária onde só temos 01 Essa base frequentemente é utilizada pois representa a menor unidade de medida da computação o bit O bit é utilizado para indicar se há ou não tensão se uma porta está aberta ou fechada ligado ou desligado e vários outros estados dentro de circuitos eletrônicos porém sempre situações que só podem ter duas possibilidades Logo o cálculo com bases binárias facilita o processo Há momentos em que é mais interessante realizar as representações computacionais por meio de bytes Um byte é um conjunto de oito bits e normalmente essa unidade de medida é utilizada para quantificar armazenamento de dados O tráfego de redes de computadores normalmente é medido em bits e o tamanho do armazenamento é medido em bytes Na escrita utilizamos a letra b minúscula para representar bits ou o B maiúsculo para bytes podemos contratar um link de internet com velocidade de 100mbps 100 mega bits por segundo ou ter uma foto com tamanho de 15mB 15 mega bytes Como normalmente trabalhamos com valores grandes esse fato pode tornar a representação de dados em binário muito extensa sendo necessário utilizar outras bases para facilitar a visualização Essas bases podem ser octal com oito dígitos 01234567 ou hexadecimal com dezesseis dígitos 0123456789ABCDF 16 Um momento bem comum de utilizar a base hexadecimal é em padrão de cores RGB Red Green Blue onde se determina a cor pela mistura de uma dada quantidade de vermelho verde ou azul Uma cor de tom alaranjado no padrão RGB seria EEAD2D sendo os dois primeiros dígitos a quantidade de vermelho os dois dígitos do meio a quantidade de verde e os últimos dois dígitos a quantidade de azul da cor Caso essa mesma cor fosse representada em binário seria 111011101010110100101101 É perceptível que a representação em binário fica muito extensa bem mais difícil de manusear ou mesmo memorizar sendo a representação hexadecimal bem mais enxuta Enquanto a representação binária tem vinte e quatro dígitos a representação hexadecimal tem apenas 6 O mesmo valor em octal seria 73526455 já uma representação com 6 dígitos É importante perceber que embora existam várias bases para representação de valores todas elas seguem o mesmo padrão de contagem em acrescentar um novo dígito à esquerda quando o número de possibilidades se esgotou para determinada quantidade de dígitos como vimos no exemplo da base decimal Compreendendo essa lógica de funcionamento das bases é fácil reparar que todas elas permitem contar até valores que tendem ao infinito sempre aumentando a quantidade de dígitos ou seja por maior que for um número sempre será possível escrever um número com valor maior que ele 15 Relação entre a arquitetura de computadores e os sistemas operacionais Os sistemas operacionais evoluíram muito com o passar do tempo e com as diversas necessidades das diferentes arquiteturas dos computadores Cada modelo de arquitetura tem uma necessidade de um sistema operacional diferente e os sistemas operacionais visam melhorar a usabilidade das principais funcionalidades do computador Logo um computador com uma funcionalidade específica também precisa de um sistema operacional específico 17 O sistema operacional tem a finalidade de servir como intermediário entre o usuário e o hardware de maneira que aquele não precise conhecer instruções deste e não precise saber nem mesmo qual a arquitetura do computador para realizar as tarefas básicas com o seu computador Um questionamento interessante a se fazer nesse momento o processador do computador que está fazendo uso nesse momento é de 32 ou 64 bits A grande maioria das pessoas não devem saber responder essa pergunta pois o sistema operacional cuida de tal diferenciação Embora um profissional precise saber responder isso com muita convicção até mesmo para poder realizar a escolha de softwares adequados essa é uma informação suprimível a um usuário padrão que usa o computador exclusivamente como meio para realizar suas tarefas e não como atividade final de seu serviço Mas se você trocar a placa mãe do seu computador existe a grande possibilidade de ter que apagar o sistema operacional instalado no disco rígido e instalar novamente pois no momento da instalação o sistema operacional irá identificar os componentes de hardware acoplados na placa mãe e tentará instalar os drivers necessários Drivers são softwares responsáveis por realizar uma boa comunicação entre o sistema operacional e os hardwares conectados a ele Então se você trocar a placa mãe de um computador por uma placa que não seja exatamente o mesmo modelo provavelmente os drivers antigos não irão funcionar por estarem preparados para outro tipo de arquitetura dos componentes da placa mãe Se houvesse só uma atualização de todos os componentes de hardware sem que não houvesse nenhuma alteração de arquitetura mas somente de organização todos os sistemas instalados teriam tendência de funcionar normalmente inclusive o sistema operacional Mas como cada fabricante adota a sua arquitetura isso seria bem difícil Então entra outra vantagem do sistema operacional em relação à utilização do hardware por programas desenvolvidos por terceiros um programa pode ser desenvolvido para ser utilizado em um sistema operacional onde a principal preocupação do programador será a utilização das chamadas do sistema operacional 18 ou até mesmo de funções prontas de algum framework instalado no sistema operacional deixando o programador ainda mais isento da preocupação da interação direta com a arquitetura do hardware As versões mais recentes do sistema operacional Windows possuem até modo de compatibilidade para a arquitetura do processador Se você tiver uma versão do Windows voltado para processadores de 64 bits e desejar instalar um programa normalmente antigo feito para arquitetura de 32 bits o próprio sistema operacional irá identificar e realizar uma instalação em diretório separado com modo de compatibilidade Isso pode gerar uma pequena perda de desempenho na utilização do programa porém irá funcionar de maneira adequada Sistemas operacionais e arquitetura de computadores têm um histórico muito semelhante pois os sistemas operacionais são desenvolvidos para um usuário final tirar o melhor proveito possível do hardware sem ter grande conhecimento técnico sobre o assunto As gerações de sistemas operacionais sempre foram ligadas às gerações de arquiteturas de computadores a cada passo que as gerações de computadores deram os sistemas operacionais foram adequados para atender os novos potenciais dos equipamentos e a nova demanda dos usuários desses computadores Até nos dias atuais existem sistemas operacionais voltados para arquiteturas especificas como por exemplo temos versões de Windows voltadas para servidores que podem fazer uso de recursos avançados de virtualização tais recursos de virtualização não poderiam ser utilizados em versões do Windows voltadas ao uso pessoal Também existem versões de sistemas operacionais para dispositivos móveis um tipo de computador que tem necessidades específicas Atualmente uma das principais é a economia de energia que embora seja importante em qualquer tipo de computador em um dispositivo móvel é primordial 19 Conclusão Neste bloco pudemos ver as características introdutórias aos temas sistemas operacionais e arquitetura de computadores passando por definições básicas de arquitetura e organização de computadores tendo uma prévia da definição de sistemas operacionais e analisando os sistemas numéricos utilizados dentro da computação Além disso passamos pelo histórico dos computadores e pelas necessidades dos sistemas operacionais em cada geração de computadores Para finalizar vimos o ponto de convergência entre sistemas operacionais e arquitetura de computadores REFERÊNCIAS MACHADO F B MAIA L P Arquitetura de Sistemas Operacionais Rio de Janeiro LTC 5 ed 2017 MONTEIRO M Introdução à Organização de Computadores Rio de Janeiro LTC 5 ed 2010 TANENBAUM A S Sistemas Operacionais Modernos São Paulo Pearson 4 ed 2016 20 2 PRINCIPAIS COMPONENTES DA ARQUITETURA DE COMPUTADORES Neste bloco vamos conhecer um pouco mais a fundo alguns dos componentes de um computador e iremos discutir modelos de arquiteturas de algumas partes isoladas Além disso vamos nos apropriar das partes que compõem uma CPU entender mais a fundo o conceito de interrupção analisar a hierarquia de memórias e entender a importância de cada uma delas Para complementar o nosso conhecimento sobre essas componentes também vamos falar sobre dispositivos de entrada e saída e tipos de barramentos 21 Descrição do funcionamento dos processadores Apresentação da CPU Unidade de Controle ULA Registradores Se pararmos para analisar o computador tem certas semelhanças com o ser humano enquanto este possui olhos para possibilitar a visão ouvidos que têm parte da responsabilidade pela audição e o tato para percepção de condições diversas aquele conta com diversos dispositivos de entrada de informação como teclado microfone e mouse O computador também tem dispositivos de saída como microfone e monitor que são capazes de transmitir as informações após processadas de maneira semelhante os seres humanos utilizam a fala MONTEIRO 2010 Mais uma semelhança que temos entre os dois é que toda a informação que entra é processada por um cérebro no caso do computador pela CPU Unidade Central de Processamento sigla do nome em inglês Central Processing Unit A computação atual se baseia na arquitetura de Von Neumann que considera que um computador deve conter três estruturas principais Unidade lógica e aritmética Essa parte do processador é responsável pela execução das operações algébricas e decisões sobre as operações booleanas E OU NÃO etc Também na ALU do inglês Arithmetic Logic Unit ficam os acumuladores partes responsáveis por receber informações vindas dos dispositivos de entrada e a última parte por onde os dados passam antes de irem para os dispositivos de saída 21 Unidade de controle A unidade de controle é responsável pela interpretação e execução das instruções passadas para o processador e irá decidir o que fazer com os dados Memória Na arquitetura de Von Neumann é previsto que nem todas as instruções podem ser executadas de imediato inclusive é o grande diferencial desse modelo em relação aos anteriores a ele Logo é necessário que haja memória dividia em hierarquia para armazenar as instruções que não estão sendo processadas no exato momento A figura abaixo ilustra a estrutura básica de um processador previsto no conceito da arquitetura de Von Neumann Fonte elaborado pelo autor Figura 21 Estrutura básica de um processador conceito da arquitetura de Von Neumann Embora todos os processadores contenham essa divisão de componentes e cada um seja responsável por suas funcionalidades fazendo com que o processador funcione com troca de mensagens entre eles os processadores modernos são fabricados de modo que todos os componentes necessários caibam em apenas um chip Ao observar um processador não será capaz de ver cada componente até porque a tecnologia está evoluída a ponto dos processadores serem compostos por bilhões de transistores o processador Intel Core i76950X tem 47 bilhões de transistores e tudo isso em um espaço de poucos cm² 22 22 Conceito de interrupção A maioria dos sistemas operacionais modernos tem a capacidade de executar diversas ações simultaneamente Hoje em dia um usuário de computadores costuma executar diversas funções ao mesmo tempo Por exemplo ao usarmos nosso notebook queremos acessar a internet assistir vídeos e editar planilhas ou documentos de texto ao mesmo tempo ou quando utilizamos nossos celulares também utilizamos os aplicativos de troca de mensagens enquanto ouvimos músicas e alternamos frequentemente para algum jogo ou qualquer outra funcionalidade de nosso dispositivo móvel Os computadores da segunda geração de arquitetura de computadores só tinham a capacidade de executar um processo por vez sendo que ao acabar um programa o operador tinha que ir até o equipamento e manualmente colocar outro programa para executar até se automatizar esse processo e possibilitar a execução de arquivos em lote batches onde era possível organizar para ao término de uma execução o início de outra Na geração seguinte de arquitetura de computadores os sistemas operacionais já conseguiram fazer uso de um novo conceito de execução de processos que possibilitou a execução de diversos programas diferentes ao mesmo tempo aparentemente O conceito central utilizado em um sistema operacional é o de processos afinal a principal funcionalidade de um sistema operacional é facilitar a interação do usuário com o hardware sendo o intermediário na hora de executar programas diversos fazendo isso com o melhor aproveitamento possível do hardware O processo é uma abstração do programa em execução que permite a capacidade de pseudoparalelismo ao executar diversas tarefas ao mesmo tempo mesmo havendo apenas uma CPU O processo a divide em diversas CPUs virtuais e consegue assim alternar entre elas gerando concorrência de tarefas 23 Essa característica de um ambiente permitir a execução de múltiplos processos ao mesmo tempo é chamada de multiprogramação Em um ambiente multiprogramado o sistema operacional chaveia efetua a troca do processo que está na CPU a todo momento disponibilizando algumas dezenas de milissegundos de processamento a cada programa em execução de maneira que nenhum processo fique sem ter sua necessidade atendida Devido ao fato de cada processo ficar apenas alguns milissegundos na CPU e depois entrar outro processo dizemos que é um pseudoparalelismo pois não se executam diversos processos paralelos na CPU mas há uma troca rápida do processo que está sendo executado no momento gerando a sensação de que vários estão em execução simultaneamente porém o paralelismo real só pode ocorrer em sistemas distribuídos que possuam diversos processadores trabalhando em conjunto de maneira transparente ao usuário sendo que cada processador ficará responsável por um processo por um determinado tempo Em determinados momentos pode acontecer de um evento em especial interromper essa distribuição justa de tempo para cada processo e ter a necessidade de ser executado naquele exato momento esse tipo de situação é chamado de interrupção Fonte elaborado pelo autor Figura 22 Exemplo de interrupção Processos A Processos B Interrupção 24 O mecanismo de interrupção é de suma importância no modelo de processamento multitarefas pois como cada fração de tempo é dedicada a um processo que ficam enfileirados seria impossível a identificação de um evento com necessidade de execução imediata caso não houvesse o mecanismo de interrupção Esse mecanismo é utilizado para indicar a CPU quando ocorrem eventos de grande importância relacionados a elementos do sistema ou periféricos PAIXÃO 2014 Por exemplo em Linux ao processar um shell script é possível parar imediatamente o seu processamento com a combinação das teclas CtrlC isso só é possível pois o mecanismo de interrupção captura o comando do teclado antes mesmo da conclusão do script porém não seria possível em um mesmo terminal iniciar um novo script antes da conclusão do anterior já que os processos são enfileirados e gerenciados pelo escalonador de processos Porém quando há uma interrupção o script tem prioridade de execução no momento e após a interrupção os processos novamente seguirão a ordem normal definida pelo escalonador de processos 23 Memória interna O ideal para todo desenvolvedor de software e embora eles não saibam mas para os usuários modernos também seria que os computadores tivessem uma quantidade infinita de espaço de armazenamento com alta velocidade de maneira não volátil e a um custo baixo Porém juntar todas essas características em apenas um tipo de memória é algo utópico TANENBAUM 2016 Para compensar essa impossibilidade de ideal os sistemas operacionais gerenciam hardwares que possuem o que pode ser chamado de memória hierárquica onde existem diferentes tipos de memória sendo cada tipo de memória responsável por um tipo de armazenamento diferente Como maneira de segmentar as memórias pertencentes a um computador atual podemos dividir em memória cache na qual cabem apenas alguns poucos megabytes um processador Intel Core i73770 de 39 Ghz de processamento por exemplo possui apenas 8 MB de cache porém é uma memória de altíssimo custo e com velocidade de leitura e gravação grande Esse tipo de memória normalmente fica no processador sendo a responsável por armazenar os dados que serão processados imediatamente 25 O segundo tipo de memória que podemos citar é a memória principal Nessa memória ficam armazenados os dados voláteis ou seja aqueles que serão apagados ao término da execução dos programas ou ao desligar o computador Essa memória também pode ser chamada de RAM do inglês Random Access Memory em português seria memória de acesso aleatório e normalmente tem alguns gigabytes de capacidade de armazenamento Outro tipo de memória que normalmente encontramos nos computadores é a memória secundária na qual atualmente chegamos a alguns terabytes de armazenamento Essa memória é onde armazenamos maiores volumes de dados de maneira não volátil sendo que ao desligarmos o computador ou ao terminarmos a execução de algum programa o que for armazenado nessa memória não irá sumir automaticamente Essa memória depende de comandos específicos do usuário para que seus dados sejam alterados ou apagados e normalmente ela é utilizada no HD hard disk do computador A memória RAM é a parte do computador que irá alocar o conteúdo que está em execução no momento Essa é a memória que se comunicará com o processador Para que possa acontecer o escalonamento de processos o conteúdo e os programas que estejam no estado de pronto ou bloqueado serão guardados na memória principal RAM Por esse motivo quando um computador está com lentidão ao executar os aplicativos é comum recomendar que se aumente a sua memória justamente a primária pois quanto mais memória RAM tivermos maior a quantidade de conteúdos executados simultaneamente Lembrando sempre que nesses casos ainda é necessário verificar a limitação do processador Embora a memória RAM não seja tão rápida quanto a memória cache ela é muito mais rápida do que a memória secundária Em geral a memória RAM fica próxima ao processador para facilitar a troca de dados entre eles 26 Ao calcular o preço do byte por exemplo dividindo o preço total da peça pela quantidade de bytes que tem o custo da memória principal é intermediário entre o HD e a memória cache o que possibilita colocar uma quantidade razoável de memória primária no computador a quantidade de memória cache por seu valor é pouquíssima e a quantidade de memória secundária é grande A memória principal é conhecida como memória de acesso aleatório RAM do inglês Random Access Memory pois um programa carregado nela pode ser armazenado em qualquer parte sendo possível fazer sua leitura e gravação de maneira aleatória a qualquer momento não havendo a necessidade de alocação dos dados em alguma parte específica A velocidade da memória principal é boa mas em geral com baixa capacidade de armazenamento Dentre outros motivos a memória principal tem baixa capacidade de armazenamento pelo seu elevado custo por byte Em uma configuração padrão de computadores pessoais um equipamento possui em torno de 4 ou 8 Gigabytes de memória principal Essa quantidade de memória é muito baixa às vezes o próprio sistema operacional pode ocupar mais espaço de armazenamento do que isso Nesse momento nossa hierarquia de memória entra em ação pois a memória principal é utilizada somente para armazenamento de dados que estão sendo usados no momento onde há maior necessidade de velocidade para enviar o conteúdo ao processador porém para armazenamentos não voláteis Ou seja quando os dados precisam continuar armazenados mesmo não sendo utilizados e guardados por tempo indeterminado fazemos uso da memória secundária A memória secundária mais conhecida para computadores pessoais é o HD do inglês Hard Disk Esse componente de nossos computadores é onde o sistema operacional irá armazenar todo o conteúdo permanente que só será removido caso haja alguma instrução por parte do usuário ou algum software faça essa solicitação 27 Diferente da memória primária o custo de um byte da secundária costuma ter um valor muito baixo e sua velocidade de leitura e escrita também é muito inferior à velocidade da memória principal Um computador de uso pessoal padrão hoje em dia costuma ter algo entre 500 GB a 2 TB de armazenamento para conteúdo não volátil Para que tenhamos ideia da necessidade de espaço de armazenamento de uma memória secundária para armazenarmos um filme com qualidade full HD precisamos de aproximadamente 47 Gigabytes de espaço disponível em nossa memória que estará ocupado o tempo todo independente do filme estar sendo assistido no momento ou não pois essa memória é não volátil Outro fator relevante nessa memória é sua velocidade que computacionalmente falando costuma ser muito lenta Embora hoje em dia existam Hard Disks do tipo SSD que dispensam a leitura mecânica dos dados a grande maioria ainda são os HDs que possuem um disco com agulhas para efetuar a leitura e gravação magnética do conteúdo Esse processo de movimentação do disco e movimentação da agulha é muito mais demorado do que o simples processo de transferência de pulsos elétricos dentro de um chip A memória principal armazena dados voláteis e os que estão em sendo utilizados no momento Logo de uma maneira geral temos a necessidade de armazenamentos menores Porém como essa memória tem comunicação com o processador tem a necessidade de maior velocidade Mas mesmo com a tecnologia tendo evoluído nos últimos anos e a capacidade de armazenamento da memória principal tendo aumentado bastante os softwares cresceram mais ainda Por esse motivo muitas vezes somente a memória RAM não é capaz de armazenar todo o conteúdo que está aberto no computador no mesmo momento Para resolver o problema de haver necessidade de mais memória RAM do que o que tem instalado no computador os sistemas operacionais modernos adotam um conceito de memória virtual Esse conceito consiste em usar parte da memória secundária como memória principal Ou seja o conteúdo que foi iniciado mas não está em uso exatamente naquele momento pode ser guardado no HD caso a memória principal esteja quase toda sendo utilizada por outros processos 28 Com isso é possível manter a execução de todos os conteúdos simultâneos porém com grande perda de desempenho pois a velocidade de leitura e gravação da memória secundária é muito menor do que a da memória principal Entretanto essa técnica só é utilizada quando a memória principal está quase toda ocupada e se acontecer com frequência provavelmente o hardware do computador deve ser alterado colocando mais memória principal Como mencionado anteriormente o ideal seria que todos os computadores possuíssem uma quantidade ilimitada de memória com alta velocidade de maneira não volátil e a um baixo custo Mas isso não é possível mesmo com a tecnologia atual e para contornar esse problema e possibilitar múltiplas ações por um mesmo equipamento os sistemas operacionais adotam uma hierarquia de memórias Essa hierarquia permite que cada necessidade de memória tenha uma tecnologia diferente para que possa atendêla Onde é necessário ter memória mais rápida tem se menos memória onde se precisa mais memória adotase uma memória economicamente mais viável tornando possível com isso ter um sistema com muita memória e com memórias rápidas mas cada uma delas fazendo o seu papel 24 Interfaces de Entrada e Saída De acordo com a arquitetura de Von Neumann um computador deve ter a capacidade de armazenar dados e instruções que serão executadas em memória para realização de tarefas futuras Esse pensamento foi proposto em 1946 para substituir o então modelo que só processava os dados passados no momento Com isso todos os dados são armazenados na memória e depois enviados à CPU então o usuário irá obter os resultados de acordo com as instruções recebidas Porém todos esses dados precisam ser inseridos na memória de alguma forma e todo o resultado do processamento também precisa ser apresentado ao usuário Para isso são utilizados os periféricos de entrada e saída 29 Os periféricos de entrada e saída são interfaces para a troca de mensagens entre o homem e a máquina Podemos definir interface como sendo um ponto de contato entre os dois artefato que permite o ser humano transmitir dados para o computador de uma maneira que seja interpretável pela máquina e vice e versa Para o computador a letra A não é interpretada como para nós seres humanos enquanto enxergamos um desenho convencionado com o som de A para o computador a mesma letra é uma sequência de pulsos elétricos que poderia ser representada em binário por 01000001 letra A maiúsculo em binário Porém devido às nossas interfaces podemos apertar uma letra no teclado passar tal instrução para o computador ele interpretar e retornar no monitor o desenho da letra que estamos acostumados a enxergar por isso dizemos que tanto o teclado como o monitor são interfaces para troca de dados entre homem e máquina Os elementos que têm a função de receber ou transmitir dados em um computador são chamados de dispositivos ou periféricos de entrada e saída Esse tipo de periférico compõe um subsistema computacional chamada subsistema de entra e saída que muitas vezes pode ser abreviado para ES ou do inglês IO Input and Output É portanto muito comum encontrar em especificações técnicas uma unidade de medida chamada taxa de IO onde indica a capacidade de entrada e saída de dados de determinado periférico Essa unidade de medida é uma das principais características a ser observada em um HD Os periféricos de entrada e saída podem ser divididos em duas categorias dispositivos de entrada e dispositivos de saída porém existem alguns dispositivos que ficam nas duas categorias simultaneamente Como exemplo de dispositivos de entrada temos o teclado que citamos anteriormente em que ao apertar um botão ele transmite informações ao computador permitindoo interpretálas Outro exemplo de periférico de entrada é o microfone onde podemos enviar informações de áudio para o computador e posteriormente até tratálas Ou seja qualquer equipamento que tenha a capacidade de receber dados e os transmitir para o computador são periféricos de entrada 30 Um exemplo que podemos citar de periférico de saída é o monitor no qual o computador converte as instruções binárias processadas pela CPU em formas visuais interpretáveis pelos seres humanos e repassa ao monitor mostrando imagens Outro exemplo muito tradicional de periférico de saída seria a impressora que através de tinta em um papel envia informações do computador para o ser humano Podemos considerar como periférico de saída qualquer equipamento que tenha a função de transmitir dados do computador para os seus usuários Conforme citado também existem alguns equipamentos que são periféricos tanto de entrada quanto de saída nessa categoria temos algumas unidades de armazenamento como HD ou mesmo pen drive Esses dispositivos podem receber e enviar dados ao computador não se limitando apenas à entrada ou saída dos dados Componentes como esse têm como principal unidade de medida a taxa de transferência de dados Os dados trocados entre os periféricos de entrada e saída podem ser transmitidos de maneira serial ou paralela Uma interface de comunicação serial faz o envio de cada bit de maneira sequencial ou seja envia um bit de cada vez através do canal de comunicação Esse é o principal método utilizado para comunicações de longa distância como nas comunicações de redes de computadores devido ao fato de reduzir custos com cabeamento e menor dificuldade em relação a sincronização dos bits transmitidos Outra característica da transmissão serial é poder ser síncrona ou assíncrona A primeira acontece de maneira em que os bits são enviados de maneira contínua e em um intervalo de tempo fixo não havendo espaços maiores ou menores entre o enviado de cada bit Caso o emissor não tenha dados para transmitir serão enviados bits especiais que serão desconsiderados no receptor mas não irá parar enviar os dados em um tempo fixo Já na assíncrona os dados serão enviados conforme a demanda tendo intervalos diferenciados para o enviado de cada bit Já em uma interface paralela é possível enviar muitos bits simultaneamente porém há necessidade de cabos com muitas vias e é preciso sempre manter o sincronismo para evitar o envio redundante de dados 31 25 Barramentos Um computador é composto por diversos componentes e de uma maneira geral há intercomunicação entre eles Por exemplo todos os dados de todas as partes de um computador precisam passar pelo processador Também há casos em que a parte gráfica de um computador pode ser processada em uma placa de vídeo que possui processador próprio e entregará dados já préprocessados Além disso as diferentes memórias trocam dados constantemente para poder manter a hierarquia necessária Fonte elaborado pelo autor Figura 23 Esquema de comunicação dos componentes sem e com barramento Mas para tantos componentes diferentes poderem transmitir informações um para o outro é necessário que todos estejam interligados de alguma maneira e para isso existem os barramentos O barramento é um conjunto de linhas de comunicação que permitem a interligação entre os diversos componentes do computador por meio de um caminho único Em vez de ligar um componente diretamente ao outro o que iria gerar um número muito grande de interconexões todos os componentes são ligados ao barramento e as mensagens trocadas por essa via Componente 1 Componente 3 Componente 2 Componente 4 Se não houvesse barramento Com barramento Componente 1 Componente 3 Componente 2 Componente 4 32 Figura 24 Placa mãe Ao olharmos a imagem de uma placa mãe podemos perceber que existem alguns espaços para ligar mais componentes como placas de memórias vídeo e até a fonte de alimentação Esses espaços são conhecidos por slot os responsáveis por conectar os novos componentes ao barramento central da placa mãe e realizar a troca de informações necessárias entre cada parte Além destes a própria placa mãe já vem com muito componentes inseridos nela chamados de onboard e os componentes que são colocados posteriormente são chamados de offboard Os barramentos são divididos em barramentos internos e de extensão os barramentos internos são os que permitem a comunicação dos componentes onboard da placa e suas estruturas principais como comunicação entre memória e processador Já os barramentos de extensão são os que possibilitam a inserção de novos componentes por meio dos slots 33 Conclusão Neste bloco conhecemos os principais componentes de um computador e como eles trocam informações entre si Para isso foi apresentado o que é um processador e cada um dos componentes que o constituem Também vimos que existe mais de um tipo de memória dentro do computador e as vantagens e desvantagens de cada tipo de memória como a velocidade de gravação e leitura e o custo para sua utilização Conhecemos também os dispositivos de entrada e saída falamos sobre os barramentos e como eles ajudam a comunicação interna da placa mãe de um computador REFERÊNCIAS MONTEIRO M Introdução à Organização de Computadores Rio de Janeiro LTC 5 ed 2010 PAIXÃO R R Arquitetura de Computadores PCs São Paulo Érica 2014 TANENBAUM A S Sistemas Operacionais Modernos São Paulo Pearson 4 ed 2016 34 3 ARQUITETURAS DE COMPUTADORES BÁSICAS E AVANÇADAS Neste bloco vamos discutir os modelos avançados para processamento de informação Também entenderemos as técnicas básicas de multiprocessamento e como elas são utilizadas no mercado de computadores atuais Em posse desse conhecimento básico vamos discutir os modelos avançados e como os supercomputadores atuais fazem uso dessa técnica para aumentar exponencialmente o seu poder de processamento Além disso vamos analisar as formas como multiprocessamento pode ser implementado e traremos algumas noções sobre computação distribuída Vamos lá 31 Conceituação de multiprocessamento simétrico e assimétrico Ao analisarmos a história da arquitetura de computadores podemos ver que houve grandes mudanças nos conceitos de utilização dos computadores e em suas especificações técnicas Cálculos que eram efetuados em dias nos supercomputadores da década de 1950 podem ser realizados em segundos em qualquer computador moderno MACHADO MAIA 2017 Porém mesmo com toda essa evolução os computadores atuais ainda têm suas limitações principalmente com relação a processamento Nos dias atuais o processamento ainda é o maior gargalo que se tem na computação É muito mais comum encontrar problemas que esbarram na falta de poder de processamento do que em outros aspectos como por exemplo o armazenamento de dados Fatores como armazenamento de dados ou até mesmo consumo de energia elétrica são contornáveis quando nos referimos a supercomputadores mas o processamento tem algumas limitações que iremos discutir mais adiante Com a evolução dos processadores foi possível aumentar muito a velocidade de processamento de cada chip porém ainda temos limitações Um famoso processador da década de 1980 foi o Intel 386 em sua versão de lançamento tinha velocidade de 12 MHz o que para a época era uma revolução um processador comercial com tamanha velocidade 35 Para que possamos entender um pouco melhor o tamanho da evolução e das limitações que ainda temos é necessário conhecer a unidade de medida que utilizaremos para comparar os núcleos de processamento Essa unidade é o Hertz Hz cuja função é medir eventos por segundo Como as outras unidades de medida utilizadas na computação essa também faz uso frequente das abreviações para indicar múltiplo Então se quisermos nos referir a 1000 Hz podemos utilizar o múltiplo quilohertz que abreviado fica KHz em caso de 1000 Khz temos 1 MHz para 1000 MHz temos 1 GHz e assim por diante Voltando ao processador Intel 386 este tinha uma arquitetura de 32 bits o qual indica que cada instrução que era recebida em seu ciclo de processamento tinha o tamanho de 32 bits Já um processador de 64 bits recebe uma instrução com o dobro de tamanho do Intel 386 Uma curiosidade interessante sobre essas duas diferentes arquiteturas de processadores na computação pessoal em especial no Brasil a arquitetura de 32 bits foi amplamente utilizada até por volta de 2014 devido aos recursos tecnológicos e à necessidade de migração de vários sistemas porém o vídeo game Nintendo 64 lançado em 1996 levava esse nome por seu processador ser de 64 bits e clock de 93 MHz Isso mostra como a migração de arquitetura de computadores é mais complexa para computadores que possuem sistemas utilizados por muitos usuários diversificados Agora comparando o processador Intel 386 a um processador mais atual podemos usar como referência o Intel Core i910900KF que possui velocidade máxima de 53 GHz quase 4417 vezes mais rápido que o Intel 386 da década de 1980 e arquitetura de 64 bits Isso quer dizer que esse processador tem capacidade máxima de execução de 5300000000 instruções de 64 bits por segundo em cada núcleo sem utilizar uma técnica de aumento de desempenho chamada overclock Em uma busca rápida pela internet é possível encontrar diversos vídeos de pessoas realizando overclock em seus processadores Essa técnica é utilizada para forçar o processador a trabalhar em uma frequência acima da qual ele foi projetado para suportar Alguns vídeos mostram processadores indo além dos 7 GHz porém isso 36 exige um sistema de resfriamento muito avançado normalmente à base de nitrogênio líquido para que o processador não queime Um clock muito alto em apenas um núcleo do processador leva a temperaturas altíssimas o que gera um limitador de velocidade nos processadores modernos Como forma de contornar essa limitação de velocidade dos processadores modernos o que se fez para aumentar a velocidade dos processadores foi a inserção de mais núcleos de processamento dentro do mesmo processador O processador Intel Core i910900KF citado anteriormente possui 10 núcleos de processamento o que lhe permite a execução de diversas tarefas simultaneamente a uma velocidade máxima Com isso introduzimos o conceito de multiprocessamento Um computador pode processar diversas tarefas simultaneamente ou mesmo dividir uma tarefa maior em pequenas tarefas menores e enviar cada uma dessas tarefas para um processador diferente Dessa forma é possível aumentar o poder de processamento sem ter que aumentar de maneira exagerada o clock de cada núcleo Essa divisão pode acontecer em um mesmo processador com vários núcleos ou dividindo em vários processadores diferentes e cada um deles com vários núcleos Quando utilizamos vários processadores distintos a conexão entre eles pode ser denominada como fortemente acoplada ou fracamente acoplada Tanenbaum 2016 A fortemente acoplada é quando a ligação entre os processadores é feita por meio de barramento e a fracamente acoplada é quando a ligação entre os diversos processadores é feita por rede de computadores Figura 31 Tipos de processadores 37 Outra característica é se a estratégia utilizada para realizar o multiprocessamento é simétrico ou assimétrico Em um sistema simétrico todos os processadores são de mesma arquitetura e compartilham a memória já em multiprocessamento assimétrico cada processador tem sua própria memória e pode ser de arquiteturas diferentes 32 Multiprocessadores de memória compartilhada O multiprocessamento permite aumentar bastante a capacidade de processamento dos computadores Os supercomputadores são todos feitos por meio da junção de diversos processadores e organizados de maneira a resolverem tarefas em conjunto Existe um projeto que reúne uma lista dos 500 supercomputadores mais poderosos do mundo Essa lista pode ser conferida no site TOP 500 vide referências Confira a lista abaixo com os 5 supercomputadores mais potentes do mundo em novembro de 2020 Fonte TOP 500 2020 Figura 32 Os 5 supercomputadores mais potentes do mundo até novembro de 2020 38 Nela são apresentadas diversas características dos supercomputadores das quais podemos destacar algumas como o nome do supercomputador a nacionalidade o modelo do processador com clock de cada núcleo e a placa de vídeo utilizada Porém o que nos é mais interessante neste momento é reparar na quantidade de Cores traduzindo do inglês quer dizer núcleos que cada supercomputador possui O primeiro supercomputador da lista Supercomputer Fugaku tem 7630848 núcleos que trabalham em conjunto para entregar uma capacidade de 4420100 TFlops podendo teoricamente chegar a 5372120 TFlops em momentos de pico em contrapartida consome 29899 kW de energia para funcionar A unidade de medida TFlops indica quantas operações com pontos flutuantes o equipamento consegue realizar por segundo Um Flops acrônimo para floating point operations per second indica que pode ser realizado uma operação de pontos flutuantes por segundo Portanto se 1 KFlops são 1000 Flops então 1 TFlops é 1000000000000 Flops Para efeito de comparativo o processador Intel Core i910900KF tem capacidade de processamento de 16960 GFlops Quando nos referimos a computadores com diversos processadores e que trabalham em conjunto para realizar as tarefas estamos falando em processamento simétrico e assimétrico No caso de processamento simétrico todos os processadores devem ser iguais e trabalhar de maneira igualitária não possuindo um processador mestre e outros escravos normalmente encontrase na literatura com os termos em inglês master mestre e slave escravo Esse modelo de processamento exige que todos os processadores tenham acesso direto a mesma memória além de todos poderem receber demandas do próprio Sistema Operacional O programador que utilizar computadores com essa estratégia de multiprocessamento terá que tomar cuidados específicos para que seu software não permita que um mesmo processo vá para processadores distintos pois nesse modelo isso pode ocorrer Como não há nenhum processador checando o que os outros processadores estão recebendo a programação para esse tipo de multiprocessamento precisa de cuidados especiais MONTEIRO 2010 Porém tem como vantagem um melhor balanceamento 39 de carga entre os processadores evitando a sobrecarga de um dos processadores enquanto outro fica ocioso Com essa estratégia também é possível adotar uma fila de processos comum entre todos os processadores em que o escalonamento é feito direto do sistema operacional para o processador disponível no momento da requisição Além do multiprocessamento simétrico ou multiprocessamento de memória compartilhada existe o multiprocessamento assimétrico No multiprocessamento assimétrico também é possível dividir tarefas entre diversos processadores porém cada processador terá sua própria memória e cada um pode ser de um modelo diferente não havendo compartilhamento de memória entre eles A principal característica que diferencia os processadores é o fato de possuir apenas um processador mestre e todos os outros processadores serem escravos logo o único que terá acesso ao sistema operacional será o processador mestre o qual será responsável pela distribuição das tarefas a cada um dos processadores escravos Figura 33 Multiprocessamento Assimétrico Outra diferença do multiprocessamento com compartilhamento de memória simétrico em relação ao multiprocessamento sem memória compartilhada assimétrico é que nesse segundo modelo os processadores não precisam trocar informações entre eles a comunicação será somente entre o processador mestre e os escravos da qual dois processadores escravos nunca irão precisar troca dados 40 No quesito de tolerância a falhas caso um processador mestre pare de funcionar um dos processadores escravos irá assumir o lugar dele e caso algum processador escravo pare de funcionar somente irá sair da fila de escalonamento dos processos que o processador mestre gerencia Outra vantagem do multiprocessamento assimétrico é a facilidade em desenvolvimento de sistemas para ele pois tem um processador mestre gerenciando a fila do escalonador de processos Isso fica transparente ao programador não demandando nenhum controle especial por estar usando multiprocessamento 33 Multicomputadores de troca de mensagens Um sistema distribuído é uma coleção de computadores independentes entre si que se apresentam ao usuário como um sistema único e coerente No sistema distribuído diversos computadores independentes entre si são interligados e fornecem serviços de uma maneira transparente ao usuário que não sabe qual ou quais dos computadores interligados está atendendo a sua solicitação Assim a computação distribuída consiste em adicionar o poder computacional de diversas máquinas interligadas por uma rede de computadores Essa união tem como objetivo compartilhar a execução de tarefas conhecida como sistema distribuído Para que o sistema seja considerado distribuído no momento em que um usuário fizer qualquer tipo de solicitação ele não deve passar ou mesmo visualizar o endereço do computador que está realizando a tarefa Isso implica em uma apresentação única ao usuário mostrando uma real distribuição do serviço a ponto de não ser possível identificar qual dos nós está sendo responsável pela requisição Existem vários exemplos de sistemas distribuídos que utilizamos em nosso dia a dia Talvez entre os mais famosos estejam os compartilhadores de arquivos do tipo P2P peer to peer Esse é um modelo famoso e que em teoria segue claramente os conceitos de sistemas distribuídos Redes como gnutella2 e eDonkey fazem uso de aplicativos para compartilhamento de arquivos entre vários dispositivos distintos e independentes de maneira que se em algum momento um dos nós falhar outros computadores poderão assumir o seu lugar e o usuário nem percebe essa alteração 41 Ao ingressar sua máquina em uma rede do tipo qualquer pessoa que esteja na rede poderá fazer solicitação a sua máquina igualmente você poderá fazer solicitação a qualquer máquina pertencente à rede sem necessidade alguma de passar endereços específicos ou mesmo saber onde está localizado o nó que está realizando as tarefas no momento Outra característica interessante das redes P2P que fazem parte das definições de sistemas distribuídos é a heterogeneidade que independe do sistema operacional instalado em cada um dos nós Estes conseguem ter comunicação e troca de conteúdo para realização da tarefa necessária de maneira a desconsiderar o sistema operacional Os nós fazem todas as trocas de mensagens por meio de uma rede de computadores usando uma camada intermediária que podemos chamar de middleware Essa parte é a responsável pela real distribuição das tarefas A denominação de multicomputador é aplicada a sistemas distribuídos que são compostos por processadores com suas próprias memórias Isso possibilita que o sistema distribuído seja de fácil escalabilidade O fato de cada processador do multicomputador possuir memória própria faz com que nenhum processador precise acessar endereçamentos de memória compartilhados com outros processadores mas para garantir o sincronismo entre todos é feita a comunicação interna do sistema por meio de troca de mensagens aumentando a robustez do sistema como um todo e melhorando a tolerância a falhas o que facilita uma computação de alto desempenho e alta disponibilidade O hardware necessário para montar um multicomputador pode ser simples necessitando apenas de processadores memórias e uma interface de rede para realizar a conexão entre todos os equipamentos Com isso os custos de montagem do sistema são reduzidos e se permite adição de mais poder de processamento sempre que necessário Existem diversas tecnologias para interconexão dos computadores ligados ao sistema de multicomputadores como se pode conferir na figura abaixo TANEMBAUM 2016 42 Fonte TANENBAUM 2016 Figura 34 Tecnologias para interconexão dos computadores ligados ao sistema de multicomputadores a Um comutador simples topologia em que todos os computadores do multicomputador se ligam a apenas um equipamento por exemplo um switch e trocam mensagens entre eles b Um anel simples cada computador tem dois fios conectados um que o liga ao computador da esquerda e outro que o liga ao computador da direita não precisa de nenhum equipamento específico para realizar a interconexão possui baixa tolerância a falhas c Uma grade também chamada de malha tem a vantagem da distância máxima entre dois computadores ser a raiz quadrada da quantidade de computadores na rede possui boa tolerância a falhas d Um toro duplo uma variação da grade sendo uma topologia bem parecida porém com ligação entre as margens o que diminui ainda mais a distância máxima entre os computadores e aumenta mais ainda a tolerância a falhas 43 e Um cubo uma topologia tridimensional com custo de implantação elevado mas com alta tolerância a falhas f Um hipercubo 4D um cubo tetradimensional constituído por dois cubos tridimensionais com os nós correspondentes conectados Cada uma das topologias tem suas características positivas e negativas mas de forma geral quanto maior a tolerância a falhas e maior o desempenho na troca de mensagens maior o custo também 34 Introdução ao processamento paralelo Nos computadores modernos é possível processar diversos programas simultaneamente havendo apenas um processador ou vários processadores Porém se houver apenas um processador terão que ser adotadas estratégias especiais para isso dar certo não permitindo processamento paralelo mas somente concorrente A principal estratégia para processar diversos programas simultaneamente é a divisão em processos O processo é uma abstração do programa em execução que permite a capacidade de pseudoparalelismo na execução de diversas tarefas ao mesmo tempo ainda havendo apenas uma CPU Essa característica de um ambiente permitir a execução de múltiplos processos ao mesmo tempo é chamada de multiprogramação Em um ambiente multiprogramado o sistema operacional chaveia o processo que está na CPU a todo o momento ou seja efetua a troca do processo disponibilizando algumas dezenas de milissegundos de processamento a cada programa em execução de modo que nenhum processo fique sem ter sua necessidade atendida Devido ao fato de cada processo ficar apenas alguns milissegundos na CPU e depois entrar outro processo dizemos que é um pseudoparalelismo isto é não se executam diversos processos paralelos na CPU mas há uma troca rápida do processo que está sendo executado no momento gerando a sensação de que vários processos estão em execução simultaneamente No entanto o paralelismo real só pode ocorrer em 44 sistemas distribuídos que possuam diversos processadores que trabalhem em conjunto de forma transparente para o usuário sendo que cada processador ficará responsável por um processo diferente por um determinado tempo O modelo de dividir uma mesma CPU entre vários processos de maneira que cada processo entende ter uma CPU exclusivamente sua mas na verdade o processador é dividido em diversas CPUs virtuais é conhecido como modelo de processos sequenciais Os projetistas de sistemas operacionais modernos utilizam dessa técnica para poderem implementar ambientes multiprogramados Para que seja possível vários processos dividirem o mesmo processador cada processo tem fluxo de controle de processo ou seja seu próprio contador de programa lógico independente dos outros processos A CPU também tem um contador de programa físico que será utilizado por todos os processos que passarem por ela Então a cada vez que um processo entra na CPU ele é processado por determinado tempo o processador faz sua contagem no contador de programa físico e quando acabar o tempo desse processo a ser executado ele sairá do processamento Porém seu contador de programa físico será atualizado para a posição na qual o contador de programa físico estava no momento da saída do processo Por sua vez quando o próximo processo entrar em execução a CPU iniciará seu contador de programa físico a partir do contador de programa lógico do processo dando continuidade exatamente de onde ele estava quando saiu do processamento da última vez possibilitando que todos os processos possam entrar e sair do processador sem que haja perda ou reprocessamento de qualquer instrução a ser executada pelo programa Com isso é gerado um ambiente de processamento concorrente Já em um sistema de processamento paralelo é possível que diversos processos estejam em execução exatamente ao mesmo tempo sem concorrer pelo menos processador Mas esse modelo exige a utilização de diversos processadores distintos para realizar a tarefa sendo que cada processador irá ficar responsável por um ou mais processos caso ele fique com mais de um seguirá a mesma estratégia de processamento concorrente porém só para seus próprios processos não impedindo o paralelismo em relação aos outros processadores 45 35 Tendências tecnológicas no mercado de computadores A computação é uma área muito nova se comparada com diversas outras Na administração são utilizados conceitos que puderam amadurecer por séculos Na matemática e na filosofia são discutidos problemas que têm milhares de anos Já na computação moderna temos apenas algumas décadas de estudos e ainda estamos realizando diversos experimentos para identificar quais a melhores soluções para determinados casos Algumas soluções vêm se mostrando viáveis para tipos específicos de problemas o que nos leva a crer que serão as tendências a serem seguidas nos próximos anos e provavelmente nas próximas décadas Uma das tendências mais fortes de mercado é a distribuição do processamento entre vários equipamentos para aumento da capacidade dos processadores Isso não só para realização de tarefas únicas mas principalmente para tarefas distribuídas Com o avanço das tecnologias móveis e portáteis em muitas situações é mais fácil utilizar dezenas de pequenos processadores em vez de um supercomputador Além do avanço dos computadores as redes para transmissão de mensagens também evoluíram muito o protocolo LTE também conhecido como 4G de redes móveis de comunicação tem potencial para velocidade máxima de 100 Mbps Considerando esses avanços na arquitetura de computadores e nas redes de comunicação é possível identificar uma tendência das coisas cada vez mais começarem a ter seus próprios processadores e seu próprio acesso à internet Esse modelo é chamado de internet das coisas IoT do inglês Internet of Things O conceito de IoT visa justamente o ponto de distribuir tarefas a pequenas coisas do cotidiano e elas transmitirem dados a um servidor central Hoje em dia já se fala em sensores agrícolas espalhados por grandes extensões de terra coletando dados sobre o solo clima e a evolução das próprias plantas para enviar ao servidor central que consolidará todos os dados mas tendo recebido uma coleta préprocessada 46 É comum ouvir falar em pontos de coleta de dados que fazem uso de Arduino ou Raspberry para realizar a coleta dos dados e um primeiro processamento com baixo custo e grande efetividade Esses são equipamento bem populares e de baixo custo O Arduino é famoso por ter componentes que podem ser comprados separadamente por um valor bem baixo porém normalmente sua capacidade de processamento é quase nula servindo mais para uma coleta e organização dos dados antes do envio a um servidor central Figura 35 Placa Arduino O Raspberry também é utilizado para montar circuitos ou sensores personalizados por meio de componentes isolados porém esse tem maior custo em contrapartida pode oferecer um poder de processamento semelhante a um computador de mesa dependendo do investimento que estiver disponível para a sua aquisição No caso do Raspberry pode ser possível até a instalação de sistemas operacionais em seus equipamentos podendo fazer uso de recursos e programas avançados no próprio equipamento de coleta de dados Esse modelo pode ser interessante para gerenciamento de catracas de acesso por exemplo 47 Fonte Zoltan Kiraly Shutterstockcom Figura 36 Placa Raspberry Nas tendências tecnológicas o IoT promete ser de grande valor para o mercado corporativo e ajudar muito no processo de coleta de dados e transmissões de informações em tempo real ajudando tomadas de decisões mais rápidas e assertivas pois as informações devem ser sempre a base para a tomada de qualquer decisão em uma empresa Conclusão Neste bloco consolidamos nosso conhecimento sobre diferentes estruturas de processamento das estratégias mais básicas até as mais avançadas Vimos que o processamento centralizado tem limitações físicas de velocidade e para contornar essas limitações e aumentar o poder de processamento dos computadores são adotadas diferentes estratégias para a divisão do processamento entre vários processadores Cada uma dessas estratégias possui vantagens e desvantagens sendo necessário conhecer os diversos modelos para ajudar na decisão de qual adotar em um cenário real baseado nas características de cada uma 48 REFERÊNCIAS MACHADO F B MAIA L P Arquitetura de Sistemas Operacionais Rio de Janeiro LTC 5 ed 2017 MONTEIRO M Introdução à Organização de Computadores Rio de Janeiro LTC 5 ed 2010 TANENBAUM A S Sistemas Operacionais Modernos São Paulo Pearson 4 ed 2016 49 4 FUNDAMENTAÇÃO DOS PRINCIPAIS CONCEITOS RELATIVOS À ÁREA DE SISTEMAS OPERACIONAIS Neste bloco vamos compreender os conceitos básicos de um Sistema Operacional ver suas características e as partes que compõem os principais Sistemas Operacionais modernos Após essa compreensão vamos analisar os serviços que um Sistema Operacional oferece ao usuário e entender como ele gerencia diversos processos em um ou vários processadores Vamos ver também outra característica importante de Sistemas Operacionais que é resolver problemas cotidianos de um programador como por exemplo dois processos acessando o mesmo espaço de memória e isso seria um dos problemas clássicos que devem ser resolvidos Além disso vamos observar todas as camadas de abstração de um Sistema Operacional 41 Introdução ao estudo de Sistemas Operacionais Estrutura de um Sistema Operacional De maneira simplista um Sistema Operacional é um software que é executado em diversos sistemas computacionais tais como os computadores de mesa celulares servidores etc Contudo para melhor compreensão do que é um Sistema Operacional devemos entender as razões que levaram a sua criação Imagine que você deseja criar um aplicativo para manipulação de imagens em disco rígido Suponha ainda que esse programa será executado diretamente sobre o hardware sem o auxílio de um Sistema Operacional Para desenvolver essa aplicação é necessário que você estude todos os padrões e tecnologias de disco disponíveis no mercado como o padrão SATA por exemplo que entenda todos os comandos e operações de acesso compreenda os protocolos de monitoramento do disco como a tecnologia SMART para contornar possíveis falhas de hardware e distinga as diferenças entre equipamento dos diversos fabricantes 50 Ou seja simples operações como as de leitura e escrita em disco se transformam em tarefas de altíssima complexidade para o programador Note ainda que sem um auxílio de um sistema operacional sua aplicação deverá lidar sozinha com a programação de todos os possíveis periféricos envolvidos como mouse teclado monitores entre outros O que é em suma quase impossível Para lidar com esses problemas o Sistema Operacional foi desenvolvido com o intuito de fazer o gerenciamento dos componentes do sistema ao mesmo tempo que prove uma interface amigável para acesso aos seus serviços tanto para o usuário abstrações como as pastas de arquivos os atalhos e menus quanto para o programador de aplicações chamadas de sistema que realizam por exemplo a leitura e escrita em disco rígido Os componentes do sistema podem ser tanto de hardware processador memória e monitores quanto de software programas drivers e processos Na maioria dos Sistemas Operacionais modernos podemos identificar rotinas relacionadas à interface com o usuário rotinas relacionadas aos serviços e funcionalidades do sistema as chamadas rotinas nãonúcleo nãokernel e as do núcleo kernel que realizam tarefas essenciais para as nãokernel As rotinas do núcleo são executadas em um modo de operação especial conhecido como modo kernel que possui acesso privilegiado e seguro ao processador As rotinas restantes são executadas em modo usuário que é um modo não protegido As aplicações do usuário inclusive também rodam em modo usuário Vamos ver agora como essas rotinas são organizadas nas estruturas mais conhecidas de Sistemas Operacionais As principais estruturas são Sistemas Monolíticos Sistemas em Camadas Micronúcleo Microkernel Máquina Virtuais e o modelo Cliente servidor TANENBAUM 2016 Vejamos cada uma delas a seguir Os Sistemas Monolíticos são formados por um conjunto de rotinas que podem se comunicar umas com as outras livremente e a qualquer instante para realizar algum serviço Todas as rotinas são visíveis entre si não havendo nenhuma restrição de comunicação entre elas Para facilitar essa interação cada rotina possui uma interface 51 bem definida em termos de entrada e saída de dados As rotinas são compiladas separadamente e depois agrupadas por meio de um ligador linker MONTEIRO 2010 em um único arquivo objeto binário executável que será executado em modo kernel Ou seja vemos que em um sistema monolítico todas as rotinas de sistema fazem parte do núcleo não havendo nenhuma distinção entre rotinas kernel e nãokernel quanto ao modo de execução É o modelo mais antigo e o mais comum de estrutura Algumas estruturas de dados podem ser incorporadas em Sistemas Monolíticos tais como registradores e pilhas de escalonamento No caso das pilhas são armazenados dentro delas os parâmetros da rotina que realizará o serviço Chamada de Sistema requisitado pela aplicação do usuário ao mesmo tempo em que um ponteiro para essa rotina é guardado em uma tabela à parte Posteriormente uma instrução de armadilha trap de desvio é acionada para a execução dessa rotina que faz com que o processador mude para o modo kernel Quando a rotina for concluída o Sistema Operacional retorna para o modo não protegido e entrega novamente o controle para a aplicação do usuário Um sistema em camadas é constituído por uma hierarquia de níveis onde cada nível é responsável por realizar uma tarefa distinta para o nível imediatamente superior OLIVEIRA CARISSIMI TOSCANI 2010 Desse modo como os serviços do sistema estão isolados uns dos outros é possível fazer o desenvolvimento de novos serviços e camadas com muito mais facilidade sem ter que alterar toda a estrutura do Sistema Operacional Além disso é muito mais simples para fazer identificação e correção de eventuais erros O sistema THE idealizado por E W Dijkstra e seus estudantes em 1968 foi o primeiro sistema em camadas a ser construído Possuía seis camadas diferentes cada uma com papéis distintos O processamento era feito em lotes batch ou seja o processador executava a próxima etapa apenas depois de concluir a etapa atual As camadas são organizadas resumidamente da seguinte forma note que os serviços são fornecidos no sentido da camada inferior à superior 52 Camada 5 É o próprio operador do sistema usuário Camada 4 Onde os programas do usuário estão localizados Camada 3 Faz o gerenciamento dos dispositivos de entrada e saída Um buffer memória para transferências temporária era alocado para as trocas de dados entre os dispositivos do sistema Observe que um console também é considerado um dispositivo de entrada e saída Camada 2 Responsável pela comunicação entre o console do usuário e os processos em execução Cada processo tinha seu próprio console na Camada 3 Camada 1 Faz o gerenciamento dos dispositivos de memória Na época o computador para o qual o sistema de camadas foi desenvolvido continha dois tipos de memória uma principal e uma memória de tambor magnético responsável por fazer paginação uma página são trechos de instruções de um programa que não são executados em um dado momento mas que podem ser necessários no futuro dependendo do fluxo de execução que o programa tomar A camada 1 é responsável por abstrair essa memória de tal forma que do ponto de vista da camada 2 o processo é executado em uma memória só Camada 0 Lida diretamente com os recursos do processador alternando entre os processos de execução quando interrupções são acionadas ou quando temporizadores chegam ao fim Fornecia também multiprogramação de tal forma que os processos em execução não precisavam se preocupar com problemas de concorrência Com relação ao Micronúcleo microkernel ele é uma estrutura em que o papel do kernel é reduzido a pequenos serviços essenciais executados em modo kernel Os outros serviços são divididos em uma ou mais camadas diferentes como rotinas executadas em modo usuário Essa subdivisão foi pensada como uma maneira de reduzir possíveis falhas graves de sistema 53 Por exemplo imagine um sistema dividido em apenas duas camadas uma em modo usuário que contém vários módulos servidores por exemplo um servidor de arquivos um servidor de processo e um servidor de rede e um microkernel que contém as rotinas mais sensíveis ao sistema Nessa estrutura por exemplo as chances de falha de uma simples rede derrubar todo o sistema são mínimas pois poderá afetar na sua maior parte apenas os serviços do servidor de rede Ou seja as falhas podem ser contidas dentro do módulo em que ocorreu Já a estrutura de Máquinas Virtuais VM do inglês Virtual Machine é um modelo que cria um nível de abstração entre o Sistema Operacional e o hardware do sistema Dentro desse nível cópias virtuais do hardware máquinas virtuais são criadas com seus elementos tais como processador memória dispositivos de ES entrada e saída modo kernel e modo usuário e todos os outros necessários Cada cópia pode inclusive rodar um Sistema Operacional diferente em cada uma e ao mesmo tempo coexistirem em paralelo multiprogramação O monitor da Máquina Virtual Virtual Machine Monitor VMM é o responsável por oferecer esses recursos e opera diretamente sobre o hardware do sistema Vários sistemas posteriores se utilizaram da ideia como as JVM máquina virtual para execução de programas feitos em Java e os servidores em nuvens que muitas vezes são máquinas virtuais dentro de um único ambiente e que podem fornecer ambientes distintos do sistema original que hospeda essas máquinas exemplos muito utilizados O modelo clienteservidor é uma extensão do sistema em camada com a diferença de que há distinção entre um processo cliente o qual solicita um serviço e um processo servidor que fornece um serviço A troca de mensagens entre esses processos são feitas via kernel que é o responsável pela comunicação Os processos cliente e servidor são executados em modo usuário enquanto o kernel é executado em modo kernel A comunicação pode ser realizada via barramento interno como também pela rede neste caso os processos cliente e servidor estariam localizados em computadores diferentes 54 42 Serviços de Sistemas Operacionais Os Sistemas Operacionais disponibilizam serviços para os usuários por meio de interfaces gráficas por interpretadores de comandos terminal do Linux e o prompt do DOS no Windows por exemplo entre outras formas Já para os programas esses serviços são oferecidos por rotinas escritas em linguagem assembly chamadas de sistemas Quando uma chamada de sistema é realizada o controle da execução é passado para o kernel assim como o status da execução é alternado para o modo seguro Toda vez que um programa necessita realizar uma instrução privilegiada por exemplo ler um arquivo em disco é necessário que a chamada de sistema correspondente seja feita As chamadas são convocadas por uma instrução de interrupção de desvio conhecida como Trap que possui os mesmos parâmetros da rotina desejada Um módulo de despacho dispatch utiliza esses parâmetros para identificar qual é a chamada de sistema correta as chamadas são armazenadas dentro de uma tabela com ponteiros que apontam para cada uma delas Feito isso um tratador de chamadas é acionado e o resultado computado é armazenado na memória As chamadas de sistemas são diferentes dependendo do Sistema Operacional estudado Elas podem diferir em funcionalidades quantidade e tipos de parâmetros Além de tudo alguns sistemas podem fornecer mais chamadas do que outros Muitas linguagens de programação fornecem funções e bibliotecas que executam as chamadas de sistemas diretamente como por exemplo as linguagens CC no Linux No Windows o acesso aos serviços é feito pela API do Windows32 A tabela a seguir mostra alguns exemplos de funções desses dois ambientes Perceba que nem todas as chamadas são implementadas em ambos 55 Tabela 11 Chamadas de Sistema Operacional para Linux e Windows Fonte elaborado pelo autor 43 Conceitos de Processo e Threads Para entender o que é um processo devemos antes compreender a diferença entre processos e programas Um programa de computador nada mais é do que um conjunto de instruções em linguagem de máquina organizadas de modo a produzir tarefas úteis ao usuário Os programas são comumente armazenados em memórias não voláteis de armazenamento duradouro como os discos rígidos memórias flash cartões SD entre outras Por outro lado um processo são trechos de programas que são executados em um dado momento como por exemplo instâncias de programas em execução As instruções de um processo são armazenadas em memórias voláteis de armazenamento temporário como as memórias RAM e cache antes de serem executadas pelo processador A relação entre programas e processos são de nn muitos para muitos um programa pode ter muitos processos abertos enquanto um processo pode ser composto por vários programas Devido à sua natureza dinâmica um processo também é formado por dados de entrada dados de saída e um estado Os estados são criação new execução running espera waiting pronto ready e encerrado finished As informações de um processo são guardadas em uma região de memória chamada PCB Process Control Block conforme pode ser observado na figura logo abaixo Vamos entender um pouco as características dos estados dos processos 56 New Processos são criados em várias circunstâncias diferentes Por exemplo quando o sistema operacional é inicializado quando uma chamada de sistema de criação é solicitada por um algum processo ou quando o usuário inicia algum programa Assim sendo os processos podem ser de usuário ao abrir um programa ou de sistema serviços que rodam em segundo plano sem o conhecimento do usuário no Linux são conhecidos como daemons e no Windows como serviços Nos sistemas UNIX por exemplo um processo pode criar um processo filho ao realizar uma chamada de sistema com a função fork O filho pode ou não ser uma cópia exata do pai Running O sistema operacional transfere o controle do processador para o processo realizar alguma atividade Waiting O processo é colocado em estado Waiting quando aguarda por algum evento Por exemplo ao requisitar um dado no disco o processo espera por um sinal de interrupção do sistema para alertálo quando a solicitação for concluída Além disso também é possível entrar nesse estado ao utilizar semáforos por intermédio das chamadas de sistema block ou pause Ao concluir o evento o processo é alternado para o estado Ready Ready Ocorre quando o tempo para utilizar o processador pelo processo se esgota e outro processo deve ocupar o seu lugar escalonamento Nesse caso o processo aguarda até a CPU estar livre novamente Finished É o momento em que o processo termina sua execução Isso acontece quando a tarefa é completada sem problemas e o processo chama voluntariamente uma chamada de sistema para encerramento ex exit no UNIX ocorrendo algum erro fatal bug ou quando um sinal de encerramento é mandado por outro processo por uma chamada de sistema kill no UNIX TerminateProcess no Windows 57 Fonte elaborado pelo autor Figura 41 Estados de um processo Os processos necessitam de um tempo determinado para concluírem as suas tarefas Alguns deles utilizam mais o processador processos orientados à CPU CPUbound Outros fazem muitas operações de ES de dados orientados à ES IObound De todo modo um processo deve aguardar em uma fila de espera caso o recurso de harware solicitado já esteja em uso e escolher qual processo será executado pela CPU e por quanto tempo é papel do escalonador de processos As tarefas do escalonador são cruciais para o bom desempenho do sistema Por exemplo um sistema em que a CPU é utilizada por apenas um processo por longos períodos perde a sua responsividade capacidade de resposta ao usuário Ou seja pode se tornar muito lento Um bom escalonador deve fazer o melhor balanceamento de carga possível de acordo com o tipo de sistema que será executado Escalonadores podem ser subdivididos em dois tipos básicos Os que utilizam algoritmos preemptivos o processo é executado por um tempo máximo sendo trocado por outro quando esse tempo termina Os que utilizam algoritmos nãopreemptivos esperase que o processo libere a CPU voluntariamente ou que seja colocado em Waiting por algum evento ES semáforos e interrupções de sistema 58 Já os principais tipos de sistemas são Sistemas em Batch as tarefas que serão executadas são postas em filas Nesses sistemas os usuários não esperam por responsividade respostas rápidas Exemplo antigos sistemas com cartões perfuráveis Sistemas Interativos são sistemas que esperam que os usuários interajam constantemente com eles Exemplos celulares e computadores de mesa Sistemas em Tempo Real são os sistemas críticos as repostas devem ser dadas quase que imediatamente Exemplos piloto automático de carros Em situações de multiprogramação há casos em que duas threads ou dois processos precisam acessar um mesmo valor porém para isso deve haver uma ordem se não o valor acessado pode ser alterado somente após a leitura ou uma alteração sobrepor a outra Como exemplo podemos falar sobre a compra de ingressos de cinema com cadeiras reservadas se duas pessoas forem realizar a compra em um mesmo instante em terminais diferentes e os dois efetivarem no mesmo momento somente um poderá ficar com o assento escolhido esse é um tipo de condição que envolve o controle de acesso simultâneo a um determinado dado Para resolver esse tipo de problema o Sistema Operacional marca o espaço de memória como em uso e será alterado por todos que estão utilizando esse dado simultaneamente Esse tipo de controle é conhecido como monitor situação em que caso necessário há exclusão mútua de todos os espaços acessados de maneira concorrente Outra estratégia para controle de processos concorrentes é a de semáforo onde é determinado um número máximo de processos que podem acessar um dado específico a cada novo processo que o acessar irá contar mais um a cada processo que deixar de acessar ele irá subtrair um caso atinja o valor máximo determinado em sua inicialização esse dado será bloqueado e não poderão ter novos acessos 59 Antigamente os Sistemas Operacionais simulavam paralelismo intercalando a execução de vários processos em conjunto Por exemplo um processo A executava um comando em um ciclo de instrução no próximo ciclo era a vez do processo B e no ciclo seguinte o processo A novamente Assim se um programador quisesse resolver um problema concorrentemente em pseudoparalelismo o processo pai deveria criar vários processos filhos e delegar várias tarefas diferente à cada um e as instruções de cada processo seriam intercaladas na CPU Essa técnica é conhecida como multiprogramação Contudo o tempo total execução equivalia à soma dos tempos dos dois processos Contudo em um sistema moderno os processos podem ter mais de um fluxo thread de execução nos antigos sistemas apenas um Isso significa que o conjunto de instruções de um processo pode ser executado ao mesmo tempo em threads distintas que fazem parte do mesmo espaço de endereçamento desse processo As threads são vantajosas nesse sentido porque existe uma menor sobrecarga overhead da memória afinal não é necessário alocar mais memória para a criação de novos processos filhos tudo é feito dentro do mesmo processo Além disso há também um menor overhead de CPU já que a quantidade de escalonamento de processos é bastante reduzida lembrese de que fazer o escalonamento de processos é uma tarefa muito custosa para o Sistema Operacional Outra grande vantagem é que a sincronização das threads é feita internamente ao processo reduzindo a necessidade de fazer chamadas de sistema Por fim com as threads o paralelismo é real em sistemas com múltiplas CPU por exemplo o tratamento de múltiplas operações de ES podem ser feitos ao mesmo tempo 60 44 Problemas Clássicos de Sincronização de Processos Alocação de Recursos e Deadlocks Problema do jantar dos Filósofos Sobre uma mesa de jantar redonda estão postos cinco pratos de espaguete cada qual com um único garfo como você pode ver na figura abaixo Cinco filósofos desejam saborear a iguaria e se sentam à mesa Todavia os filósofos percebem que o espaguete está escorregadio demais e portanto difícil de comer É proposto então que se usem 2 garfos para comer a refeição Cada filósofo tentará pegar um garfo à sua esquerda e outro à direita Caso consiga dois filósofos se alimentarão enquanto os outros ficarão pensando Os filósofos só podem comer por um pequeno instante de tempo devendo colocar os garfos à mesa logo em seguida Fonte elaborado pelo autor Figura 42 Jantar dos filósofos com 5 refeições e 5 talheres Essa é uma analogia à um problema clássico de sincronização em Sistemas Operacionais que envolve Deadlock Um ou mais processo impedidos de continuar devido a execução de um outro processo conflitante Starvation Processos executam mas não progridem por não conseguirem tempo de processamento suficiente 61 Problema do barbeiro Em uma barbearia N um número indeterminado cadeiras são colocadas para os clientes esperarem enquanto o barbeiro faz o corte de quem chegar primeiro Quando o salão está vazio o barbeiro se senta e dorme na cadeira de barbeiro Se um cliente chegar durante a sua soneca precisará acordar o barbeiro para ser atendido Os clientes seguintes ocupam as cadeiras restantes Caso todas as cadeiras estejam ocupadas o cliente vai embora Esse problema envolve situações de race conditions em Sistemas Operacionais Ou seja condições de disputa pelo processador de forma que sempre o mantenha ocupado e nunca com mais processos do que ele consegue gerenciar Seria análogo a não deixar o barbeiro dormir não deixar o processador ocioso e também não deixar faltar cadeiras de espera mais processos do que o processador conseguirá processar em tempo útil Problema dos LeitoresEscritores Vários processos acessam uma base de dados simultaneamente Existe dois tipos de processos diferentes um leitor e outro escritor O problema envolve fazer com que apenas um processo de escrita modifique a base em um determinado instante Além disso não pode ter nenhum processo leitor acessando a base enquanto uma operação de escrita está em andamento Como resolver essa situação Esse é um típico problema que pode ser resolvido com os conceitos de semáforo e monitor onde será controlado o número máximo de acessos simultâneos a quem terá a prioridade de alteração em cada momento será replicado mutuamente a todos além de garantir que uma alteração seja efetuada por um dos processos que está fazendo acesso à base 62 45 Camadas de Abstração de Sistemas Operacionais Camada de Aplicação Gerenciamento de arquivos Bibliotecas e Kernel As camadas de abstração dos Sistemas Operacionais são modelos lógicos que dividem e classificam as tarefas dos sistemas em funções correlacionadas Vimos ao longo desse bloco várias características da Camada de Gerenciamento de arquivos das Bibliotecas e do Kernel Estudaremos agora a Camada de Aplicação A camada de aplicativos encontrase no topo de qualquer modelo de arquitetura de um Sistema Operacional É nela que ocorrem as principais interações entre os dispositivos de computação e o usuário final MACHADO 2017 Os Sistemas Operacionais fornecem interfaces que estão presentes nessa camada para que os recursos dos dispositivos sejam eles de hardware ou de software possam ser manipulados pelo usuário As principais interfaces utilizadas são Interface de Linha de Comando CLI Command Line Interface ou Terminal de Comandos Um tipo de interface onde os componentes do sistema são representados por elementos textuais A interação é feita diretamente por comandos digitados em um Prompt através de um teclado que é o único dispositivo físico envolvido na comunicação Foi muito popular nos primórdios da computação onde periféricos como o mouse ainda não existiam Os comandos são analisados e executados por um interpretador chamado shell que intercede na comunicação com os componentes restantes do sistema tais como o Kernel Os mais conhecidos atualmente são o Bash Linux e o DOS Windows mas existem muitos outros É a forma principal para acesso e gerenciamento de dispositivos remotos entre os quais se destacam os servidores Interface Textual É um outro tipo de interface baseada em textos mas que possuem símbolos comuns aos ambientes gráficos como janelas menus e ícones De modo geral é um aplicativo executado por um interpretador de comandos que utiliza os elementos textuais para compor as imagens Por exemplo em ambientes gráficos a menor unidade de 63 informação visual é um pixel Todos os elementos exibidos na tela são formados por arranjos de pixels coloridos e dispostos de modo a formar imagens De forma semelhante uma Interface Textual utiliza o espaço de um carácter como a menor unidade de informação visual e compõe as imagens pela combinação de caracteres de blocos coloridos e posicionados para formar os elementos gráficos Apesar de ser raro é possível encontrar esse tipo de interface nos instaladores de sistemas operacionais Interface Gráfica Também chamada de GUI Graphical User Interface Interface Gráfica do Usuário utiliza figuras gráficos e quaisquer outros símbolos visuais para criar abstrações que representam os componentes do sistema A interação com o usuário é feita por dispositivos como mouse teclado canetas telas touchscreen monitores etc Os dois principais componentes das GUI voltadas para o uso em Sistema Operacionais são os Gerenciadores que fornecem meios para representar e organizar o conteúdo visual gerados pelos programas de Janelas e os Gerenciadores de Arquivos que provêm mecanismos para acesso aos arquivos e programas instalados no sistema A principal vantagem em relação à Interface de Linha de Comando é permitir a execução de tarefas que seriam difíceis ou impossíveis de serem executadas como a edição de imagens e animações ou a reprodução de vídeos Uma desvantagem é que as interfaces se tornam complexas e de difícil compreensão à medida que aumenta a quantidade de tarefas que uma aplicação deve executar Além disso diferentemente das CLI que podem formar scripts por meio da concatenação de comandos uma interface gráfica dificulta a automação de tarefas rotineiras Assim a combinação de ambos os mecanismos torna a interação com o usuário mais robusta e eficaz Interface de Voz VUI Voice User Interface São interfaces cujos usuários utilizam a própria voz para recitar comandos e interagir com o sistema É um dos principais mecanismos de acessibilidade para pessoas com deficiência visual Todavia seu uso também vem crescendo entre o público comum por causa de novas aplicações para smartphones tablet e computadores de mesa que vêm se tornando cada vez mais populares 64 Conclusão Este bloco foi voltado ao estudo dos princípios dos sistemas operacionais falando um pouco sobre a evolução e os sistemas operacionais modernos com suas características e principais responsabilidades Os principais serviços do Windows e do Linux foram descritos e comparados entre eles mostrando os que são comuns aos dois e os que são específicos Nos foi apresentado o conceito de divisão de um mesmo processo em diversas threads para possibilitar o processamento paralelo e concorrente para um mesmo programa Além de discutirmos os problemas clássicos que um Sistema Operacional precisa resolver como por exemplo o deadlock Além de nos ser apresentada as camadas de abstração de um Sistema Operacional REFERÊNCIAS MACHADO F B MAIA L P Arquitetura de Sistemas Operacionais Rio de Janeiro LTC 5 ed 2017 MONTEIRO M Introdução à Organização de Computadores Rio de Janeiro LTC 5 ed 2010 OLIVEIRA R S CARISSIMI A S TOSCANI S S Sistemas Operacionais Porto Alegre Bookman 4 ed vol 11 2010 TANENBAUM A S Sistemas Operacionais Modernos São Paulo Pearson 4 ed 2016 65 5 ESTUDO DA ESTRUTURA DOS SISTEMAS OPERACIONAIS MAIS UTILIZADOS Neste bloco vamos abordar os principais Sistemas Operacionais utilizados na atualidade Vamos analisar Sistemas Operacionais para uso corporativo e para uso pessoal como Windows e Linux Também vamos estudar estruturas dos Sistemas Operacionais e como eles podem organizar seus arquivos Além disso vamos discutir sobre Sistemas Operacionais para dispositivos móveis e suas principais características e utilizações 51 Estudo do funcionamento do Sistema Linux O Linux é um Sistema Operacional de multiprocessos e multiusuários desenvolvido pelo estudante finlandês Linus Torvalds no início dos Anos 90 Seu kernel foi projetado para ser compatível com as versões do UNIX um Sistema Operacional com ambiente de programação bastante sofisticado e amplamente conhecido no meio acadêmico e empresarial Fonte Stanislaw Mikulski Shutterstockcom Figura 51 Tux o Pinguim utilizado como mascote do Linux 66 O UNIX possuía inúmeras versões customizadas por empresas e universidades que detinham os direitos de propriedade intelectual das suas variantes Esses sistemas eram caros e muitas vezes o uso era imposto apenas ao ambiente corporativo e universitário Ter um UNIX em um computador pessoal era praticamente impossível Esse cenário foi motivador para desenvolvimento do Linux A versão 001 do Linux foi lançada em setembro de 1991 e rapidamente disponibilizada através da recém popularizada internet Muitos programadores de todo o mundo aderiram voluntariamente ao projeto situação que é mantida até os dias atuais Além disso o Linux é disponibilizado sob os termos da licença GNU GPL que permitem que você possa copiar alterar e redistribuir o código do sistema um dos motivos pelo qual o Linux se tornou tão popular MACHADO MAIA 2017 Hoje em dia este é um dos ambientes de desenvolvimento preferidos dos programadores existindo inúmeras versões os chamados Linux flavors Sabores Linux que rodam praticamente em qualquer arquitetura de processador a probabilidade de você ter algum sistema Linux em casa é enorme A memória do Linux é controlada pelo subsistema do kernel chamado LMM Linux Memory Manager Gerenciador de Memória do Linux É encarregado por fazer a distribuição da memória entre os componentes do sistema de forma segura e em quantidades adequadas Dentre as suas responsabilidades podemos citar a implementação da memória virtual o mapeamento de arquivos dentro do espaço de endereçamento dos processos a alocação de memória para as estruturas do kernel e programas que rodam dentro do espaço do usuário A memória virtual em Linux é uma camada de abstração que simplifica os detalhes de funcionamento de hardware para os processos de níveis mais altos Cria mecanismos que promovem segurança às informações armazenadas e controle das comunicações entre processos Nela a memória destinada aos processos é dividida em quatro partes distintas A parte inferior é onde o código em linguagem de máquina de um processo em específico é armazenado Logo acima temos os dados inicializados como as variáveis estáticas e strings cadeias de caracteres Em seguida temos a região onde estão os dados não inicializados BSS Block Started by Symbol 67 A próxima região é a memória HEAP espaço reservado para fazer alocação dinâmica de memória realizada em tempo de execução Por fim temos a pilha região destinada às variáveis locais e para os parâmetros das funções e seus retornos Normalmente ela é encontrada no topo da memória dos processos e cresce de cima para baixo Os computadores e outros dispositivos possuem uma quantidade de memória RAM várias vezes menor em comparação às utilizadas para armazenamento nãovolátil Além disso é muito comum que os programas tenham tamanhos que excedam a quantidade de RAM disponível Assim os sistemas modernos utilizam uma técnica chamada de paginação de memória que consiste em carregar na memória RAM apenas à parte do programa que será executada no momento Se um processo precisar de dados que não estão na memória page fault o paginador pager do sistema deve buscar essa informação em disco paginação por demanda No Linux a memória é dividida em páginas de tamanhos fixos de 4KB Quando a RAM está cheia as páginas menos usadas dos processos são transferidas da RAM e destinadas à uma região especial de disco chamada área de troca swap Quando forem necessárias novamente essas páginas são recarregadas na memória No Linux e Unix tudo é um arquivo Diretórios são arquivos arquivos são arquivos e dispositivos são arquivos Dispositivos são geralmente referidos por módulos entretanto eles ainda são arquivos Para simplificação todos os dispositivos do Linux são tratados como arquivos e são indexados em um diretório especial chamado dev Assim o processo de ES EntradaSaída é simplificado pois as mesmas chamadas de sistemas para tratamentos de arquivos podem ser usadas para controlar qualquer dispositivo conectado ao sistema Por exemplo é possível utilizar as chamadas read e write para ler e escrever os dados vindos da placa de rede ao invés do disco rígido Os dispositivos podem ser de blocos ou de caracteres Os de blocos são aqueles que os dados armazenados podem ser acessados em blocos de tamanho fixo Podese ler um ou mais blocos ao mesmo tempo os blocos podem estar armazenados em regiões não contíguas e o fluxo de informação pode ser simultâneo em ambas as direções bidirecional Discos rígidos pendrives CDRoms são exemplos de dispositivos de 68 bloco Já os dispositivos de caracteres são aqueles que o acesso é feito sequencialmente em fluxos stream de bytes Quando um byte é lido ele não pode ser armazenado novamente na mesma posição pois o dispositivo avançou um byte à frente da posição atual São exemplos de dispositivos de caracteres os terminais e as portas seriais e paralela 52 Estudo do funcionamento do Sistema Windows O Microsoft Windows é uma família de Sistema Operacionais desenvolvida pela Microsoft que abrange sistemas criados para uso comercial doméstico e corporativo e que se estendem desde os clássicos computadores de mesa até aos servidores e dispositivos embarcados Iremos estudar conceitos do Windows relativos à gerenciamento de memória dispositivos de entrada e saída e gerenciamento de arquivos Muitos desses conceitos são comuns ao Linux Fonte Stanislaw Mikulski Shutterstockcom Figura 52 Windows o principal Sistema Operacional utilizado para computadores de mesa Esse Sistema Operacional é proprietário e pertence a Microsoft A estrutura do Windows é composta por duas camadas distintas Modo Usuário conjunto de subsistemas em que a comunicação é feita por trocas de mensagens local procedure call LPC Modo Kernel e Executivo formado por todos os subsistemas restantes que trabalham diretamente com o hardware 69 O Executivo é uma camada do modo Kernel que implementa os módulos incumbidos de disponibilizar os serviços básicos dos sistemas como os módulos de gerenciador de processos objetos segurança cache e ES O gerenciamento de memória do Windows é feito por um executável próprio do sistema que se encontra no executivo Acima do gerenciador de memória está o gerenciador de heap que possui as funções para alocar e desalocar a memória No Windows as páginas da memória podem estar em um de três estados possíveis Livre quando não está sendo utilizada por nenhum processo Se um processo fizer referência à uma página nesse estado será lançado um page fault Dedicada isto é quando instruções ou dados estão mapeados nela Reservadas que é quando as páginas não estão disponíveis para uso Para minimizar a quantidade de trocas com o disco rígido o Windows utiliza clusterização ou seja ao ocorrer um page fault o gerenciador de memória carrega o bloco com a página requisitada junto de algumas páginas ao redor pois a probabilidade que uma dessas páginas sobressalentes sejam solicitadas em seguida é muito grande Para decidir o momento para alocar ou remover uma página é utilizado um workset conjunto de trabalho limite máximo e mínimo quando o conjunto é menor que o workset uma página é adicionada quando maior uma página é removida O algoritmo de troca de página é dependente do tipo de arquitetura do processador Por exemplo as famílias de multiprocessadores da Intel utilizam as filas FIFO first in first out enquanto os processadores mono core utilizam LRU com algoritmo do relógio Agora veremos o básico sobre ES no Windows As solicitações de ES podem ser feitas tanto pelos processos do modo usuário quanto pelos processos do modo kernel As operações são computadas de forma assíncrona Em outras palavras um processo pode continuar outras tarefas normalmente até que sua a solicitação seja concluída 70 O gerenciador de processo do Windows define um pacote de ES que é uma estrutura de dados utilizada para comunicação com o sistema de arquivos e drives do dispositivo Esse pacote é chamado de IRP IO Request Packet Pacote de requisição de ES Quando uma solicitação é concluída o drive do dispositivo avisa o gerenciador de entrada e saída com uma interrupção de sistema Na indústria existe um padrão aberto para configuração de dispositivos e energia chamado ACPI Advanced Configuration and Power Interface Interface avançada de configuração e energia Esse dispositivo define interfaces para que qualquer Sistema Operacional possa fazer a descoberta de periféricos de forma independente do hardware além de fornecer mecanismos para monitorar e gerenciar o consumo de energia É implementado no Windows desde a versão do Windows 98 e permite aos dispositivos serem conectados na forma Plug and Play Conecte e Use sem a necessidade de que o usuário faça a instalação Todavia ainda é necessário que os drivers e periféricos das fabricantes forneçam suporte para tanto O Windows é compatível nativamente com vários formatos de sistema de arquivo Os mais conhecidos são os FAT FAT32 VFAT e NTFS Assim como o Linux o Windows também implementa o VFS que abstrai o hardware do sistema e fornece mecanismos para que os processos que rodam em alto nível possam fazer leitura e escrita dos dados nos diferentes dispositivos de armazenamentos O padrão hoje utilizado para a armazenar o próprio Windows é o NTFS com raízes no Windows NT MACHADO MAIA 2017 Esse modelo utiliza uma técnica de alocação chamada de alocação por extensão Semelhante ao Inode do Linux o NTFS também possui uma tabela para guardar as informações dos arquivos a MFT Master File Table Tabela de Arquivo Mestre São guardados nela os metadados dos arquivos como o nome carimbo de tempo permissões tamanho etc Conforme um arquivo precisa de espaço extra de armazenamento o NTFS aloca uma extensão de memória em disco por isso o nome alocação por extensão de acordo com a necessidade Essa memória pode ser contígua ou não Assim o sistema armazena também na MFT o bloco inicial do arquivo a quantidade de blocos e o número do bloco do arquivo nas respectivas extensões 71 Diferentemente do Inode existe apenas uma MFT no disco que possui todas as entradas dos arquivos A tabela cresce conforme é adicionado mais entradas de arquivos e dados das suas extensões Quando um arquivo é removido a entrada torna se disponível para reutilização mas o tamanho da MFT continua o mesmo Por causa disso o disco faz um esforço para que seja reservado um espaço inicial adequado para a MFT Além disso problemas de fragmentação impactariam todo o sistema caso essa memória reservada para a MFT não fosse contígua Por isso evitase que a MFT cresça em tamanho além do proposto para evitar que partes dela sejam alocadas em outras regiões 53 Demonstração dos processos de gerenciamento de memória gerenciamento de arquivos De uma maneira geral a grande maioria das funcionalidades de um computador pessoal nas funções cotidianas de um usuário comum precisam armazenar algum tipo de informação para ser utilizada futuramente Até mesmo em tarefas que aparentemente não fazem uso de armazenamento de dados às vezes guardamos algumas informações como por exemplo um navegador de internet armazena dados em cache ou cookies para que possa traçar o perfil do usuário ou mesmo facilitar o carregamento da mesma página quando ela é aberta diversas vezes no mesmo computador em momentos próximos Alguns sistemas ainda armazenam informações como logs registros de eventos na memória secundária do computador fazendo uso de incrementação de informação a outras informações já existentes ou segmentando esse conteúdo por exemplo por dia Para que essa tarefa possa ser efetuada de uma maneira sequencial e ordenada nosso Sistema Operacional precisa segmentar todos esses conteúdos de alguma maneira e para isso utiliza arquivos Arquivos são unidades lógicas de informação criadas por processos Um disco normalmente conterá milhares ou mesmo milhões deles cada um independente dos outros Na realidade se pensar em cada arquivo como uma espécie de espaço de endereçamento você não estará muito longe da verdade exceto que eles são usados para modelar o disco em vez de modelar a RAM TANEMBAUM 2016 p 182 72 Em outras palavras arquivos são informações que iremos guardar por tempo indeterminado de maneira não volátil Então para que possamos armazenar informações por longos períodos devemos observar algumas características Deve ser possível armazenar uma quantidade muito grande de informações A informação deve sobreviver ao término do processo que a usa Múltiplos processos têm de ser capazes de acessar a informação corretamente As informações persistentes em sua grande maioria atualmente são armazenadas em discos magnéticos mas podem ser armazenadas também em pendrive fitas mídias óticas e outras maneiras Mas todas as mídias suportam basicamente a instrução de leitura e escrita para que possam armazenar informações Além disso arquivo é um mecanismo de abstração ou seja é o modo de como os objetos são gerenciados através de nomes que façam sentido a um usuário final A principal ideia da geração de arquivos em um Sistema Operacional é que possamos ter espaços determinados em que informações são armazenadas e podem ser resgatadas de uma maneira que não transpareça para o usuário sobre como um disco funciona e como os bits são alocados em uma sequência linear de blocos Quando o processo cria um arquivo um nome é gerado podendo ser de forma automática pelo próprio sistema operacional ou pelo próprio usuário pelo simples fato de salvar um documento através de algum aplicativo como uma planilha por exemplo As regras exatas para como formar o nome dos arquivos são variáveis para cada Sistema Operacional mantendo suas particularidades Mas de maneira geral a maioria dos sistemas operacionais adota como critério a utilização de sequência de caracteres para nomeação de seus arquivos Embora cada sistema operacional tenha seus critérios de nomeação eles aceitam conteúdos alfa numéricos e caracteres especiais normalmente se reservando a não permitir alguns caracteres especiais Como por exemplo o Windows não permitir a utilização da pois indica divisão ente diretórios Exemplos possíveis de nomes seriam Arquivo123 Urgente 11outroarquivo 73 Figura 53 Estrutura de diretórios em árvore modo mais utilizado na computação pessoal Outra característica que também não é uma regra que podemos usar de exemplo é o reconhecimento se a letra é maiúscula ou minúscula pois para o Windows um arquivo chamado Arquivotxt é a mesma coisa que um arquivo chamado arquivotxt já em sistemas baseados em Unix esses arquivos seriam diferentes podendo inclusive estar em um mesmo diretório sem gerar nenhum tipo de conflito Mais uma característica interessante sobre a nomeação de arquivos em relação sistemas operacionais é que em alguns sistemas podemos definir o tipo de informações que o arquivo armazena pela sua extensão O nome do arquivo pode ser dividido em duas partes sendo a primeira o próprio nome do arquivo e a segunda o indicativo de que tipo de informação esse arquivo armazena Em nosso exemplo Arquivotxt podemos saber que antes mesmo de olhar o conteúdo do arquivo ele armazena algum tipo de texto simples Essa informação pode ser obtida por sua extensão o txt que vem depois do Alguns sistemas operacionais como o Windows nos obrigam a definir o tipo de extensão durante o processo de criação inclusive para fazer a associação com qual aplicativo irá executar esse tipo de arquivo Já outros sistemas operacionais baseados em Unix não têm essa necessidade podemos ou não colocar a extensão no arquivo mas por boas práticas é interessante sempre ter a extensão para facilitar a utilização desse conteúdo da maneira mais adequada possível 74 Os arquivos podem ser estruturados de várias maneiras Porém existem as três possibilidades mais comuns de acontecer a sequência de bytes a sequência de registros a árvore Na sequência de bytes o Sistema Operacional não tem conhecimento sobre nenhuma informação do conteúdo armazenado no arquivo ele simplesmente enxerga o arquivo como sequência de bytes iniciada em um determinado bloco e concluída em outro bloco Sendo assim na sua estrutura o arquivo é basicamente dado pelo bloco de início bloco de fim e tudo que há entre um e outro Essa estrutura de arquivo é a utilizada em sistemas operacionais baseados em Unix e Windows Já a sequência de registros é composta por uma sequência de registro de tamanho fixo onde a operação de leitura nos traz um arquivo e a operação de escrita sobrepõe alguns dos registros já existentes Nos tempos em que os cartões perfurados eram a principal tecnologia de passagem de informações para os computadores era comum adotar esse modelo de armazenamento de dados nos computadores compondo as sequências de registros com o tamanho de 80 caracteres que eram o tamanho de armazenamento dos cartões A estrutura de arquivos em árvore consiste em armazenar conteúdos de mesmo tamanho e similaridades de maneira a conseguir resgatar dados parecidos e que possuam um mesmo campo chave com maior agilidade Esse método de armazenamento não prioriza a proximidade dos dados ou a sequência de armazenamento e sim o campo chave armazenando os campos chaves agrupados Esse modelo de armazenamento não é usual na computação pessoal mas é útil em sistemas de grande porte de processamentos comerciais pois consegue tomar a decisão automaticamente e de onde armazenar um arquivo baseado em seu campo chave 75 Podemos categorizar os arquivos em duas categorias principais os arquivos regulares que contém informações dos usuários e os diretórios que são os arquivos do sistema ou seja mantém a estrutura do sistema de arquivo organizada Em nossos arquivos regulares os dados são armazenados de forma binária e como já vimos em Windows e Linux são armazenados como uma sequência de byte onde é determinado o bloco de início e o bloco de fim Para que seja possível organizar a quantidade de informações que trabalhamos em nossos computadores a maioria dos Sistemas Operacionais adota um o conceito de diretório ou pastas que muitas vezes também são arquivos porém trabalhados de uma maneira diferenciada Os primeiros computadores pessoais adotavam o conceito de um diretório único para todo o sistema Tudo que se armazenava naqueles computadores era alocado em um mesmo diretório até porque na época os computadores eram projetados para serem utilizados por apenas uma pessoa e a quantidade de arquivos na época também era muito limitada Embora o primeiro supercomputador CDC 600 também tivesse a estrutura de diretório baseada em diretório único mesmo sendo utilizado por diversas pessoas simultaneamente provavelmente a escolha da estrutura de diretório se deu pelo fato de tornar o projeto de software mais simples de implementar A estrutura de armazenamento de arquivos em um diretório único ainda pode ser interessante hoje em dia para sistemas dedicados que cuidam de apenas uma função No começo da computação pessoal até atendia a necessidade dos usuários devido à baixa capacidade de armazenamento de dados que os computadores apresentavam Nos dias atuais com a quantidade de informações e de arquivos de categorias diferentes que os usuários padrões utilizam e fazem controle através de suas máquinas pessoais seria impossível achar algum determinado arquivo em um tempo aceitável Atualmente a estrutura de diretórios mais utilizada para computação pessoal é seguindo o sistema de diretório hierárquico Por exemplo o computador de um professor pode ter um diretório no qual ele agrupa todos os arquivos referentes a trabalhos de alunos outro para armazenar livros em formato digital outro para armazenamento de seus arquivos referentes a jogos e mais outro para armazenar os 76 arquivos que guardam os dados que contêm as fotos de família Dentro desse último diretório ainda podemos ter outros para melhorar a categorização por exemplo parentes próximos avós tios e afins Com isso temos uma hierarquia para armazenamento do conteúdo de maneira que podemos encontrar algum arquivo específico com muito mais agilidade e precisão No caso de sistema de diretório hierárquico teremos um diretório principal conhecido como diretório raiz que no Windows é o diretório C e no Linux é o Dentro desse diretório serão alocados todos os outros seguindo a estrutura determinada pelo sistema operacional e pelos usuários que fazem uso desses sistemas 54 Funcionamento de Sistemas Operacionais para Dispositivos Móveis Ubíquos e Pervasivos Agora vamos ilustrar o funcionamento de dispositivos móveis tendo como exemplo o Sistema Operacional Android que funciona para dispositivos móveis e possui um Kernel Linux com várias modificações feitas pela Google O principal motivo disso foi atender as exigências das empresas fabricantes de hardware e de software para sistemas embarcados Um exemplo seria as Wakelocks uma função do dispositivo que mantêm o sistema em baixo consumo de energia caso não tenha nenhum aplicativo em execução Além disso outros objetivos do projeto incluíam Criar uma plataforma de código aberto para dispositivos móveis Dar suporte completo para o desenvolvimento de aplicativos proprietário de terceiros Promover a segurança da plataforma de modo que não fosse necessário que os usuários confiassem cegamente nos desenvolvedores de aplicativos Gerenciar os recursos utilizados pelos processos para que os usuários não precisassem se preocupar em fechar aplicativos com o intuito de preservar os recursos do sistema Nesse caso em particular o sistema operacional deve assumir o controle da decisão de quando os aplicativos devem ser inicializados ou parados 77 Fonte rvlsoft Shutterstockcom Figura 54 Android e iOS os dois principais Sistemas Operacionais para dispositivos móveis Como o Kernel do Android é em essência um Kernel Linux muitas das características do sistema em relação ao gerenciamento de processos memória e arquivos são as mesmas do Linux Logo vamos nos concentrar nas novas funcionalidades relacionadas ao gerenciamento de memória listados a seguir Ashmem Anonymous Shared Memory Módulo que permite a vários aplicativos se comunicarem por meio de uma região de memória compartilhada sem afetar de forma significativa a segurança dos processos envolvidos OOM Out of Memory É um mecanismo que permite ao sistema encerrar aplicações quando o consumo de memória está alto e não existe memória disponível para manter o dispositivo em pleno uso Como o Android é instalado em dispositivos que não possuem memória virtual para troca swap é muito comum que o sistema esteja com falta de memória Garbage Collector Método utilizado para fazer a limpeza da memória dos processos Muito comum em várias linguagens de programação e no Android tem a finalidade de varrer toda a memória a procura de objetos e informações que não estão sendo mais utilizadas lixo 78 Uma outra categoria de sistemas presentes em dispositivos móveis mas não limitados a eles são os Sistemas UbíquosPervasivos Segundo o dicionário DÍCIO 2021 o termo pervasivo referese a algo espalhado que tende a se espalhar infiltrar propagar ou difundir por toda parte Já o termo Ubíquo DÍCIO 2021 significa algo que é onipresente que pode ser encontrado em todos os lugares A computação UbíquaPervasiva é um termo criado pelo norte americano Mark Weiser que se refere à onipresença dos sistemas de informática na vida cotidiana Fonte PERVASIVEcomputing 2002 Figura 55 Mark Weiser 19521999 A ideia consiste que dispositivos comuns e dos mais variados tipos como geladeiras chuveiros relógios canetas e roupas tenham computadores incorporados com o intuito realizar tarefas rotineiras de forma natural e pouco perceptível para as pessoas A computação Ubíqua envolve Invisibilidade se uma tecnologia estiver muito presente e em todos os lugares ele deverá ser o mais imperceptível possível As pessoas deverão estar tão integradas e acostumadas ao seu uso que nem notarão que dispositivos computacionais estão presentes Próatividade os equipamentos devem prever as intenções dos usuários e anteciparse 79 Sensibilidade ao Contexto as informações presentes no ambiente são de suma importância e os sistemas precisam colher processar e compartilhar essas informações Interfaces Naturais é necessário que a interface entre os dispositivos e o usuário seja simples e forneça uma interação o mais natural possível Assim esses sistemas precisam de mecanismo que permitam reconhecimento de voz de gesto e qualquer outra forma espontânea de comunicação Descentralização diferentes dos computadores os dispositivos ubíquos possuem tamanho reduzido o que reduz o poder computacional Por causa disso esses sistemas devem trabalhar em conjunto para realizar suas atividades de forma descentralizadas Notase pelas características acima que os dispositivos ubíquos devem ter periféricos pouco usuais como sensores de infravermelho temperatura e GPS pouca memória RAM e de armazenamento CPU com pouco poder de processamento e capacidade de se comunicarem das mais diferentes formas possíveis independente de tecnologia Assim o Sistema Operacional precisa integrar periféricos dos mais diversos tipos e simultaneamente precisar ser compacto e caber facilmente na memória Além disso ter funções específicas para comunicação e sincronização entre muitos equipamentos diferentes tanto para otimizar o poder de processamento quanto de armazenagem 55 Estudo de Funcionamento de Serviços Disponíveis para sistemas operacionais servidores corporativos Servidores são sistemas computacionais que promovem serviços para outros computadores estejam eles na rede local ou não Possuem hardware com especificações que variam de acordo com sua função podendo ser desde poderosos mainframes com seus vários núcleos memórias e dispositivos de armazenamento até equipamentos mais modestos como servidores de mídia em settopboxes ou até mesmo dispositivos presentes na borda da rede como os modens de acesso Um servidor é definido pelo tipo de serviço proporcionado Os mais comuns que serão detalhados nesta seção são de arquivo Web Proxy impressão e aplicação 80 Os Servidores de arquivo prestam serviços de armazenamento para máquinas clientes Normalmente esse tipo de servidor é encontrado em redes onde é necessário haver espaço compartilhado de armazenagem entre vários dispositivos O processamento desses servidores é geralmente destinado a oferecer serviços de segurança armazenamento e recuperação de arquivos de forma rápida e consistente Isto é o processamento semântico sobre os dados guardados cabe às aplicações nas máquinas clientes Normalmente os arquivos são dispostos em estruturas hierárquicas como as Árvores de Arquivos todavia sem haver restrições técnicas sobre quais tipos de arquivos podem ser colocados nesses servidores Os servidores Web são incumbidos de armazenar páginas Web e outros tipos de objetos como imagens sons animações arquivos e afins Os objetos podem ser requisitados por uma aplicação cliente Browser Navegador por meio do protocolo HTTP ou HTTPS HyperText Markup Language Secure traduzido para o português Linguagem de Marcação de Hipertexto Seguro Um outro programa do lado do servidor é responsável por responder as requisições Entre os programas servidores mais conhecidos podemos citar Apache2 NGINX Glassfish e IIS A comunicação é feita de maneira muito simplificada da seguinte forma 1 Primeiramente o navegador faz uma análise da URL digitada para distinguir o nome do site e do domínio por exemplo o domínio ponto com 2 O servidor DNS retorna o endereço IP correspondente ao nome do site solicitado 3 O navegador contata o servidor no endereço IP recebido e define o protocolo em que será feita a comunicação 4 O servidor determina quais são os objetos solicitados pelo cliente e os envia Caso não existam uma mensagem de erro é retornada 5 O navegador recebe os dados do servidor processaos e exibe as informações para o usuário 81 Em suma o papel do servidor Web é armazenar as páginas e os objetos traduzir as solicitações retornar os dados e exibir as notificações de erro adequadas Outros serviços podem ser providos pelos servidores web como por exemplo gerenciamento de conteúdo dinâmico Eles são feitos em conjunto com outras aplicações que rodam no servidor Os Servidores Proxies são configurados para fazer as requisições ao endereço de destino no lugar da estação do cliente e atuam entre a máquina que fez a requisição e o destino final Um Proxy pode ser utilizado para várias tarefas dentre elas Caching de páginas Quando um navegador requisita uma página o Proxy verifica se essa página está contida no seu cache e se é a versão mais atual Se sim retorna à requisição Se não faz a requisição ao destino armazena a página no seu cache e retorna o resultado ao cliente A grande vantagem dessa técnica é a economia de dados trocados com a internet além de diminuir o consumo da banda da rede Criptografia na troca das mensagens Os servidores Proxies podem ser configurados para que as informações trocadas sejam sempre criptografadas Além de ser um mecanismo adicional de privacidade diminui as chances de que o usuário possa ser envolvido em um ataque chamado maninthemidle que consiste em roubar informações trocadas entre clientes e servidores ao fazer com que as requisições aos serviços sejam feitas à uma máquina impostora Filtro de conteúdo e de sites Um proxy pode ser configurado para impedir que sites e domínios que estejam armazenados na sua black list lista negra não sejam acessados como também filtrar conteúdo indevido e propagandas Anonimato É possível implementar recursos adicionais de privacidade como trocar o useragent do navegador impedir a localização por IP mascarar o servidor DNS utilizado pelo cliente e etc 82 Os Servidores de impressão são componentes de uma rede local que podem ser implementados tanto em hardware no caso disponibilizados pela própria máquina de impressão ou em software A principal tarefa de um Servidor de Impressão é permitir que os usuários de uma rede possam acessar esses recursos de forma justa e sem ter que esperar muito Para tanto quando uma nova solicitação é feita ela é colocada em uma fila de espera sendo que as requisições podem ser atendidas por uma ou mais impressoras Um serviço de impressão pode também informar ao usuário a quantidade de impressoras disponíveis e seu status imprimindo fora do sistema sem tinta e em outras condições comuns à impressão Um Servidor de aplicação é um computador em que roda a parte servidora de uma aplicação em específico tanto em relação aos requisitos de hardware quanto aos de software e consiste em um conjunto de funções que disponibilizam serviços para as aplicações clientes Para melhor compreensão considere o seguinte para criar uma aplicação existem dois tipos de requisitos a serem atendidos os funcionais que são as funcionalidades que o programa deverá ter e os não funcionais que são todas as questões que não fazem parte das regras de negócio mas que são necessárias para que a aplicação funcione por exemplo gerenciamento de filas monitores de transação threads e largura de banda de redes Um servidor de aplicação deve garantir por exemplo o balanceamento de carga segurança disponibilidade dos serviços tratamento de erros entre outros São conhecidos também como middlewares Entre as plataformas mais conhecidas temos a J2EE o Net e o Zope 83 Conclusão Com este bloco pudemos compreender a estrutura dos dois principais Sistemas Operacionais para computadores de mesa os sistemas Windows e Linux os quais possuem características e estruturas próprias que mesmo semelhantes foram criados de origem bem diferentes Melhoramos nosso conhecimento sobre a gestão de arquivos e estruturas utilizadas para armazenar dados de maneira não volátil em um computador vendo diferentes tipos de hierarquias e analisando prioritariamente a hierarquia em árvore que é a mais utilizada na computação pessoal Também vimos uma tendência que está cada vez mais comum em nosso cotidiano a computação ubíqua e pervasiva onde os dispositivos se integram ao ambiente dispensando comandos específicos para realizarem suas tarefas E por fim neste bloco falamos sobre o uso de computadores para prover serviços chamados de servidores REFERÊNCIAS HONG J Mark Weiser 19521999 The Founder of Ubiquitous Computing Reaching for Weisers vision PERVASIVEcomputing janmar 2002 In Scientific American 1991 Inc MACHADO F B MAIA L P Arquitetura de Sistemas Operacionais Rio de Janeiro LTC 5 ed 2017 PERVASIVO In DICIO Dicionário Online de Português Porto 7Graus 2021 Disponível em httpswwwdiciocombrpervasivo Acesso em 11 jan 2021 TANENBAUM A S Sistemas Operacionais Modernos São Paulo Pearson 4 ed 2016 UBÍQUO In DICIO Dicionário Online de Português Porto 7Graus 2021 Disponível em httpswwwdiciocombrubiquo Acesso em 11 jan 2021 84 6 PESQUISA SOBRE OS PRINCIPAIS SISTEMAS OPERACIONAIS UTILIZADOS NOS DIAS ATUAIS Neste bloco vamos ver algumas tecnologias mais recentes dentro do contexto de Sistemas Operacionais além de discutirmos sobre a sua usabilidade Inicialmente vamos abordar uma análise sobre utilização dos Sistemas Operacionais no cotidiano e de maneira contemporânea e logo após vamos conhecer as características voltadas para o controle de multimidia e aprenderemos então a categorizálos através de suas funções básicas Em seguida vamos ver os principais Sistemas Operacionais para dispositivos móveis da atualidade junto de suas camadas e o que cada uma realiza Discutiremos características de acessibilidade nos Sistemas Operacionais e um pouco sobre legislação e boas práticas na área de tecnologia Para concluir abordaremos a integração entre hardware e Sistemas operacionais modernos 61 Estudos de caso de diferentes sistemas operacionais utilizados nos dias atuais Podemos encontrar nos dias de hoje vários Sistemas Operacionais disponíveis no mercado cada qual com algumas características distintas pensadas para executar tarefas específicas Empresas como Microsoft Apple Google e Canonical são responsáveis por construir e publicar esses sistemas Veremos nessa seção alguns dos Sistemas Operacionais mais usados entre os dispositivos de mesa e servidores O Microsoft Windows é um conjunto de Sistemas Operacionais desenvolvido e publicado pela Microsoft Atualmente possui a maior parcela do mercado entre os usuários dos Desktops graças à liberdade de uso e da sua interface amigável A primeira versão publicada do Windows foi a 10 1985 que fornecia uma interface gráfica para o MSDOS As principais vantagens do Windows são 85 Compatibilidade de Hardware Basicamente todos os computadores e dispositivos de hardware vendidos para computadores de mesa são compatíveis com o Windows É possível que um usuário compre aleatoriamente um computador ou periférico quaisquer e eles possuam as versões mais novas do Windows Softwares préinstalados O Windows possui nativamente vários programas que suprem com bastante eficácia as tarefas cotidianas dos usuários Aplicativos de terceiros também podem ser instalados os quais podem ser baixados diretamente pela internet ou através da sua loja de aplicativos Facilidade de uso É o sistema preferido para computadores pessoais devido à facilidade de instalação uso e remoção dos programas além de possuir uma das interfaces mais amigáveis entre os Sistemas Operacionais Plataforma de jogos O Windows é a plataforma preferida da maioria dos jogadores devido à compatibilidade com um acervo imenso de jogos novos e antigos Além disso o sistema possui tecnologias integradas para fazer o renderização dos jogos como o Direct X As desvantagens são Alto custo Mesmo as licenças das versões mais básicas do Windows costumam ter preços inacessíveis para a maior parte da população Todavia é possível instalar versões novas do Windows 10 sem custo algum mas com algumas limitações de uso Riscos de segurança O Windows costuma ter o pior desempenho entre os sistemas de uso pessoal mais populares no quesito de segurança sendo mais vulneráveis às ameaças como malwares e trojans Manutenção O sistema costuma apresentar quedas de desempenho após algum tempo de uso 86 Já o Unix foi um sistema multitarefa e multiusuário desenvolvido na BelLab em 1970 pelos criadores da linguagem C Muitas variantes foram criadas e distribuídas entre empresas e universidades A versão com a maior base de usuários no momento é o MacOs da Apple Esse sistema possui um conjunto de ferramentas dedicadas para realização de tarefas shell scripting e programação As vantagens do Unix são Portabilidade Assim como o Windows está entre os sistemas operacionais com maior compatibilidade no mercado podendo ser usado por uma ampla quantidade de dispositivos Segurança É um sistema que conta com muitas ferramentas de segurança além de possuir mecanismos de autenticação de alto nível Multitarefa eficiente O sistema foi construído com o propósito principal de permitir que vários processos rodem simultaneamente com atenção especial à segurança da memória para evitar possíveis perdas de dados As principais desvantagens são O Unix é um sistema orientado a comandos projetado para programadores o que pode tornar o seu uso difícil para o público leigo Para poder trabalhar com o Unix é necessário entender como o sistema foi desenhado além de compreender boa parte dos comandos que são o principal meio de interação com os recursos O Linux é um Sistema Operacional de código livre derivado do Unix TANENBAUM 2016 do qual herdou boa parte dos seus conceitos de design É um sistema que pode ser usado tanto em computadores pessoais quanto em servidores da internet Existe uma grande quantidade de distribuições do Linux sendo as mais comuns Ubuntu Linux Mint Debian Fedora OpenSUSE RedHat entre outros Algumas vantagens do Linux são 87 Códigofonte aberto Pode ser alterado pelo usuário além de possuir uma grande quantidade de repositórios com programas que podem ser baixados sem nenhum custo Apresenta grande desempenho e não precisa que o sistema seja reinicializado constantemente Permite que processos sejam executados simultaneamente sem pouca ou nenhuma perda de desempenho Compatível com a maior parte dos computadores modernos existentes É um dos sistemas mais seguros do mundo Desvantagens Uso avançado pensado primariamente para os programadores Existe uma grande quantidade de versões e pacotes de instalações o que dificulta a vida do usuário comum Suporte precário a jogos em comparação ao Windows 62 Estudos de caso de sistemas operacionais multimídia Multimídia ou seja várias mídias é um campo de estudo que visa produzir conhecimento e tecnologias por computador que dão suporte ao processamento e controle das várias mídias digitais existentes ou que ainda estão por vir Podemos citar como exemplos de mídias textos imagens vídeos sons animações jogos gráficos entre outros As aplicações que se destacam são videoconferência VoIP Voz sobre IP serviços ondemand sobe demanda estudo à distância EAD e jogos de computador As mídias podem ser de dois tipos 88 Mídias discretas estáticas não dependem do tempo e são apresentadas apenas nos espaços bidimensionais e tridimensionais como imagens textos e gráficos Mídias contínuas dinâmicas ou isócronas apresentamse no tempo ou no espaçotempo como os sons os vídeos os jogos e as animações As mídias costumam ter algumas necessidades em comum Taxa de dados extremamente alta faz com que os recursos computacionais tais como uso de CPU memória rede e disco devam ser generosos Por exemplo um vídeo em HD sem compressão exige uma largura de banda de aproximadamente 648mbps Note ainda que um servidor de mídia normalmente dispõe de centenas de outros vídeos que são compartilhados com milhares de usuários simultaneamente Reprodução em tempo real mídias como videoondemand jogos e VoIP são sensíveis a atrasos nas transmissões Uma chamada de vídeo por exemplo com atrasos no envio ou recebimento dos dados podem deixar a comunicação inviável Controle independente da estrutura de dados a arquitetura de um arquivo de mídia costuma ser muito diferente à dos arquivos tradicionais de caracteres Um filme pode consistir em vários arquivos distintos como os de áudio e de texto para suporte a múltiplos idiomas Isso faz com que o Sistema Operacional tenha que implementar formas de controle adicionais para lidar com esses arquivos satisfatoriamente Assim sendo técnicas clássicas como as de caching de blocos de texto que são utilizadas para diminuir a quantidade de leituraescrita ao ler um arquivo de caracteres geralmente não tenha serventia para por exemplo reproduzir vídeos 89 Um Sistema Operacional é considerado um sistema multimídia quando suporta a apresentação simultânea de ao menos uma mídia discreta e outra contínua Pode ser do tipo standalone isto é todos os recursos computacionais e as informações utilizadas estão disponíveis localmente ou são Sistemas Operacionais Distribuídos cujos recursos são compartilhados remotamente com um ou mais sistemas As aplicações distribuídas podem ser pessoaàpessoa que são voltadas à comunicação entre usuários VoIP por exemplo ou do tipo pessoaàsistema que são construídas para que usuários interajam com o sistema remotamente exemplo videoon demand Para garantir a qualidade dos serviços das aplicações multimídia os Sistemas Operacionais devem gerenciar os recursos de hardware de forma a atender as seguintes especificações Especificação e alocação de memória por exemplo garantir que as aplicações tenham um tempo máximo e mínimo de acesso à memória como também criar políticas de decisão para tratar situações extremas como memória cheia Controle de admissão fazer testes para garantir que os recursos disponíveis são suficientes para atender a demanda solicitada sem interferir diretamente com uma requisição em particular Alocação e mecanismos de escalonamento tem o intuito de garantir que os recursos estejam acessíveis quando requisitados A CPU e os mecanismos de ES devem ser escalonáveis Aqui podese usar técnicas de escalonamento oriundas dos sistemas de tempo real Adaptação como não é possível garantir que haja sempre recursos quando solicitado pelas aplicações é necessário que possam fazer com que os dados das aplicações ou a própria aplicação em si sejam adaptados Por exemplo quando não existe banda de rede disponível a qualidade do vídeo reproduzida pode ser alterada ou mesmo os recursos da interface podem ser simplificados 90 63 Apresentação das principais características dos sistemas operacionais mobile Google Android e Apple IOS O Android é um sistema operacional que está presente em uma vasta gama de dispositivos alguns exemplos são os smartphones televisores settopboxes carros Android auto e smartwatches É formado por uma pilha de tecnologias composta por vários componentes que permitem a desenvolvedores e fabricantes de hardware atuarem de forma independente em suas respectivas camadas Essa pilha pode ser subdivida em 5 componentes principais Aplicações Framework de Aplicações Bibliotecas Nativas Runtime do Android e o Kernel Linux A camada de aplicações é a camada de mais alto nível da pilha Abarca todo o conjunto de ferramentas do usuário que dão suporte às suas atividades rotineiras como fazer chamadas ouvir música assistir vídeos ler emails entre outras São aplicativos escritos em linguagens de programação para dispositivos móveis tais como Java Kotlin e C Os programas são distribuídos primariamente pela loja de aplicativos oficial do Google o Google Play mas também podem ser encontrados em lojas de terceiros Além disso podem ser instalados diretamente pelo usuário por meio do pacote nativo do Android o APK Android Package pacote do Android O Framework de Aplicações consiste em um conjunto de ferramenta de desenvolvimento prontas que dão suporte aos desenvolvedores para criarem suas aplicações e disseminálas na loja de aplicativo A API Application Programming Interface Interface de programação de aplicação compreende todo o conjunto de rotinas que fazem parte das aplicações do núcleo do Android além de permitir acesso às bibliotecas Java existentes Na camada das bibliotecas nativas estão compilados e préinstalados os binários em CC que são utilizados pelo sistema Exemplos dessas bibliotecas são Surface Manager SQLite Webkit OpenGLES etc 91 Surface Manager Servidor gráfico do Android muitas vezes chamado de gerenciador de janelas Equivale ao Xorg e Wayland do Linux É utilizado para criar imagens em 2D3D para compor as telas individuais do sistema Realiza outras tarefas tais como offscreen bufferring memória que permite ao desenvolvedor fazer atualizações na tela antes de enviála para exibição e transições de telas SQLite É um banco de dados relacional e de código aberto usado pelo Android para armazenar informações do sistema entre uma sessão e outra Os dados são armazenados na memória interna do dispositivo Webkit Mecanismo HTML que exibe páginas e seus componentes de forma rápida e fluida É o motor gráfico padrão do Android que também é usado pelo Chrome e pelos vários forks do Chromium Está disponível no sistema para uso de qualquer aplicação thirdparty OpenGLES Mecanismo de processamento gráfico do sistema Com ela é possível renderizar imagens 2D3D além de outras funções como aceleração de hardware São rotinas que trabalham diretamente com o processador gráfico do sistema Não confunda com o Surface Manager que apenas dá suporte de alto nível aos programas e oferece recursos para facilitar a manipulação de componentes gráficos como janelas e menus O Runtime do Android é formado por duas camadas distintas As bibliotecas Java que são fornecidas pelo sistema E o Dalvik que é uma implementação da Máquina Virtual Java JVM feita pela Google A camada do Runtime compartilha o mesmo nível da camada das bibliotecas nativas Por fim temos a camada do kernel O kernel do Android é um Kernel Linux modificado para prover serviços que não são comuns à dispositivos de mesa como botões de controle de hardware câmera integradas hardware de rádio e etc 92 Já a arquitetura do sistema IOS é muita parecida com aquela encontrada no seu irmão mais velho dos computadores de mesa o Mac OS X É composta por quatro camadas distintas onde cada uma abrange vários frameworks que podem ser utilizados por desenvolvedores de aplicativos Além de permitir que os programadores ganhem tempo de desenvolvimento uma vez que as rotinas estão testadas e prontas para o uso esses framewoks aumentam a portabilidade do código pois permitem que por exemplo um programa feito para rodar em um Iphone possa ser reutilizado sem problemas em um outro dispositivo da Apple como um Ipad A comunicação com o hardware é feita basicamente por um conjunto de interfaces bem definidas de acesso ao sistema que estão presentes nesses frameworks As camadas são de cima para baixo Cocoa Touch Media Core Services e Core OS As camadas superiores possuem maior nível de abstrações de alto nível enquanto as inferiores tendem a apresentar recursos mais próximos ao hardware Veremos cada uma delas a seguir A camada Cocoa Touch é onde estão contidos os principais frameworks orientados ao desenvolvimento de aplicativos Nessa camada por exemplo são oferecidas tecnologias como o serviço de multitarefas notificações Apple push proteção de dados do sistema entre outros Os frameworks aqui presentes resumem os serviços oferecidos pelas camadas adjacentes Mas caso não seja suficiente o desenvolvedor pode acessar os recursos das camadas mais abaixo diretamente A camada Media engloba as tecnologias que são utilizadas para construção de gráficos vídeos e áudio Possui frameworks simples como o UIKIT User interface kit kit de interface de usuário que prove serviços básicos para manipulações de imagens e animações como também frameworks mais elaborados Alguns exemplos são Core Graphics Renderizador de vetores de imagens 2D Core Animation Funções avançadas para lidar com animações OpenGLES Renderizador 2D3D e aceleração por hardware Text Core Renderizador e controle de texto Image IO Instruções para trabalhar com a maioria dos formatos de imagens 93 Assets Library Funções para acesso a fotos e vídeos da biblioteca do usuário Framework Media Player Suporte para reprodução de áudio e vídeo além de permitir acesso à biblioteca do ITunes Framework AV Foundation Interfaces feitas em ObjectiveC para gravação e reprodução de áudio além de captura e reprodução de filmes Frameworks Core Audio Alternativa ao AV Foundation permite também reproduzir sons de alertas do sistema executar vibrações e reproduzir streaming de áudio de conteúdos locais Core Media Onde são definidos os tipos de dados utilizados pelos frameworks de nível de aplicação e oferece interfaces de baixo nível para manipular o conteúdo das mídias O Core Services é a camada responsável por fornecer os serviços que serão utilizados por todos os aplicativos mesmo que esses não acessem suas funções diretamente Exemplos de tecnologias são o Grand Central Dispatch gerenciador de tarefas de interfaces para threadings o Inapp dispatch recursos para vendas dentro dos aplicativos como por exemplo processar transações financeiras dentro do ITunes o SQLite para criação de bancos de dados locais etc Por último temos a camada do Core OS que implementa interface de baixo nível tanto para o desenvolvedor quanto para os frameworks das camadas acima O kernel do sistema está nessa camada As informações e serviços de hardware podem ser acessados não somente pelos seguintes recursos Libsystem Biblioteca em C a fim de reunir um conjunto de interfaces para threading redes acesso ao sistema de arquivos ES padrão serviços Bonjoure alocação de memória etc Framework Accelerate Responsável por realizar cálculos matemáticos de forma eficiente pelo hardware Framework External Accessory utilizado para lidar com dispositivos periféricos compatíveis com o IOS 94 Essas são as principais características dos dois Sistemas Operacionais mais populares para dispositivos móveis 64 Pontos de acessibilidades nos Sistemas Operacionais Modernos Durante a história da humanidade pessoas com deficiência foram muitas vezes excluídas de partes da sociedade Porém nos tempos atuais esse cenário vem sendo trabalhado para reduzir essa exclusão ao máximo e a área de tecnologia não pode ficar fora dessa mudança tão positiva De acordo com o Decreto n 5296 a acessibilidade é definida como I acessibilidade condição para utilização com segurança e autonomia total ou assistida dos espaços mobiliários e equipamentos urbanos das edificações dos serviços de transporte e dos dispositivos sistemas e meios de comunicação e informação por pessoa portadora de deficiência ou com mobilidade reduzida BRASIL 2004 Cap III art 8º Logo podemos ver que os recursos computacionais estão previstos como quesitos de acessibilidade e os desenvolvedores de sistemas operacionais não podem se isentar dessa responsabilidade Todos os sistemas operacionais modernos têm por obrigação contemplar recursos de acessibilidade e facilitação de uso por pessoas que precisem de alguma condição especial seja ela temporária ou permanente Além disso você sabia que no Brasil temos diversas leis que apoiam os direitos das pessoas com deficiência Podemos citar a Lei n 10098 de 19 de dezembro de 2000 que foi regulamentada pelo Decreto nº 5296 de 2 de dezembro de 2004 Nessa Lei ao tratar especificamente do acesso à Internet seu Artigo 47 estabelece Art 47 No prazo de até doze meses a contar da data de publicação deste Decreto será obrigatória a acessibilidade nos portais e sítios eletrônicos da administração pública na rede mundial de computadores internet para o uso das pessoas portadoras de deficiência visual garantindolhes o pleno acesso às informações disponíveis BRASIL 2004 Cap VI 95 O Departamento de Governo Eletrônico Brasileiro oferece um conjunto de diretrizes que devem ser seguidas por sites governamentais disponíveis ao público em geral para que possam utilizar também em sites próprios chamadas de Modelo de Acessibilidade em Governo Eletrônico eMAG Para saber mais entre no link ao final do bloco em Saiba mais Alguns recursos disponíveis em sistemas operacionais que aumentam a autonomia de pessoas com deficiência são Leitor de tela Recurso de software que converte um texto em um fala sintetizada permitindo que o usuário ouça os elementos textuais da tela em vez de visualizar A maioria dos sistemas operacionais baseados em Linux possuem um leitor de tela chamado Orca por padrão No caso do Windows existe a ferramenta Narrador já inclusa no próprio sistema operacional Figura 61 Utilização de recurso de conversão de texto em áudio Aumento de fonte A maioria dos sistemas operacionais conta com recursos para aumentar o tamanho da fonte dos textos sistemas operacionais de dispositivos móveis como Android e IOS costumam ter esse recurso bem explicitado às vezes até perguntando durante sua primeira execução se deseja ativar 96 Fonte print screen da aplicação no sistema operacional Windows 10 Figura 62 Recurso de aumento de texto na aba de Configurações de tela do Windows 10 Digitação por voz Utilizada em muitos sistemas operacionais para apoiar pessoas com algum tipo de deficiência motora que dificulte a digitação através de teclado sendo muito utilizada em editores de texto também O Word da Microsoft já tem essa função por padrão e pode ser habilitada a qualquer momento Figura 63 Utilização de recurso de digitação por voz 97 Ferramenta lupa Esse tipo de ferramenta visa aumentar o tamanho da tela nos locais onde o cursor esteja próximo com isso facilitando a visualização no Windows já vem instalado por padrão e no Linux pode ser facilmente ativável em diversas de suas distribuições Fonte print screen da aplicação no sistema operacional Windows 10 Figura 64 Utilização da ferramenta lupa no Windows 10 em comparação com tamanho original da tela No caso do sistema operacional Windows ao usar a combinação de teclas de atalho do teclado logotipo U serão apresentadas diversas opções de acessibilidade para facilitar o uso do sistema operacional por pessoas que tenham alguma deficiência ou limitação temporária 65 Integração de Sistemas Operacionais Modernos e Novas Arquiteturas de Computador Tecnologias de hardware para dispositivos computacionais e seus periféricos estão sempre em desenvolvimento A todo momento temos que nos habituar com a presença de novos equipamentos dos mais variados tipos além de profundas melhorias nos dispositivos já conhecidos como por exemplo na arquitetura dos processadores Além disso várias áreas da computação estão cada vez mais presentes 98 no nosso cotidiano e com elas surgem uma vasta gama de dispositivos até então desconhecidos como sensores e atuadores Prevendo esse cenário os desenvolvedores de software criaram uma camada de abstração chamada HAL para lidar de forma eficaz com essas constantes mudanças Estudaremos ela a seguir HAL Hardware Abstraction Layer Camada de Abstração de Hardware é um conjunto de rotinas e bibliotecas organizadas em uma camada lógica de programação que se situa entre o hardware do dispositivo e os componentes de software restantes De forma simplória podese dizer que a HAL engloba todo elemento de software que trabalha diretamente e é depende do hardware subjacente Podemos citar como exemplos código para inicializar o sistema rotinas para configuração e acesso de hardware por exemplo a MMU Memory Management Unity ou Unidade de Gerenciamento de Memória códigos para troca de contexto contadores de tempo rotina para controle e calibragem de sensores distribuídos e atuadores A HAL atua como uma camada de abstração que serve como Interface de Programação API MACHADO MAIA 2017 para acesso direto ao hardware É incluída em muitos Sistemas Operacionais dentro dos drivers do sistema ou do próprio Kernel Como as rotinas da Hal são implementadas de forma independente das outras camadas não é necessário fazer grandes alterações no Sistema Operacional quando ele precisar rodar em outros dispositivos de hardware Ela muitas vezes é confundida com os drivers do sistema Em termos de tarefas um driver é simplesmente uma interface que possibilita fazer operações de ES para o dispositivo ao qual pertence Por exemplo um driver não faz nenhuma operação de mudança de contexto ou gerenciamento de interrupções que são operações típicas da HAL Além disso pode existir partes do driver que são formadas por rotinas que não trabalham diretamente com o hardware Mesmo assim a parte do driver dependente da arquitetura do dispositivo pode ser considerado uma HAL Ou seja um driver não é uma HAL mas a parte dele que acessa o hardware é Veja a seguir os benefícios que a HAL fornece 99 Permite que aplicações extraiam o máximo de desempenho possível do hardware Possibilita que o Sistema Operacional e os programas executem independentemente de hardware Viabiliza o acesso direto ao dispositivo tanto para os aplicativos quanto para os drivers Faz com que a comunicação com o hardware seja descomplicada e genérica Isto é a forma de acesso aos dispositivos devem ser as mesmas independente de tecnologias fabricantes ou arquitetura Facilita a portabilidade dos programas dos drivers e do próprio Sistema Operacional Agora observe alguns exemplos de APIs fornecidas pela HAL APIs do Kernel Realizam gerenciamento de contexto e operações atômicas APIs para gerenciamento de interrupções consistem em uma rotina de serviços de interrupção rápida APIs para ES Permitem formas de acesso e configuração para dispositivos de entrada e saída APIs para gerenciamento de Recursos gerenciamento de energia consumo de CPU APIs de tempo real para acesso aos ciclos de CPU por exemplo para criação de contadores de tempo Com o uso dessa camada entre o sistema e o hardware o papel do Sistema Operacional de tornar mais simples a interface entre o ser humano e os recursos computacionais como um todo ficam ainda mais fáceis e portáveis 100 Saiba mais Leia mais sobre o Modelo de Acessibilidade em Governo Eletrônico eMAG disponíveis no link a seguir httpemaggovernoeletronicogovbr Acesso em 11 jan 2021 Conclusão Neste bloco abordamos diferentes Sistemas Operacionais e suas utilizações e também os requisitos que um Sistema Operacional precisa apresentar para ser categorizado como multimídia Discutimos a estrutura dos principais Sistemas Operacionais para utilização em dispositivos móveis com suas características e diferenças entre eles Refletimos sobre os critérios de acessibilidade além de ver um pouco da legislação de acessibilidade voltada para o acesso à informação digital em sites E para finalizar analisamos a integração de sistemas operacionais modernos e novas arquiteturas de computador REFERÊNCIAS BRASIL Decreto nº 5296 de 2 de dezembro de 2004 Regulamenta as Leis nos 10048 de 8 de novembro de 2000 que dá prioridade de atendimento às pessoas que especifica e 10098 de 19 de dezembro de 2000 que estabelece normas gerais e critérios básicos para a promoção da acessibilidade das pessoas portadoras de deficiência ou com mobilidade reduzida e dá outras providências Brasília 2 dez 2004 Disponível em httpwwwplanaltogovbrccivil03ato2004 20062004decretod5296htm Acesso em 11 jan 2021 EMAG Modelo de Acessibilidade em Governo Eletrônico eMAG Versão 31 abr 2014 Disponível em httpemaggovernoeletronicogovbr Acesso em 11 jan 2021 MACHADO F B MAIA L P Arquitetura de Sistemas Operacionais Rio de Janeiro LTC 5 ed 2017 TANENBAUM A S Sistemas Operacionais Modernos São Paulo Pearson 4 ed 2016

Envie sua pergunta para a IA e receba a resposta na hora

Recomendado para você

Analise e Explicacao do Circuito Digital com Portas AND e NOT

2

Analise e Explicacao do Circuito Digital com Portas AND e NOT

Arquitetura de Computadores

UNISA

Prova de Arquitetura de Computadores: Conversão de Bases Numéricas e Circuitos Digitais

8

Prova de Arquitetura de Computadores: Conversão de Bases Numéricas e Circuitos Digitais

Arquitetura de Computadores

UNISA

AVI - Avaliação Integrada com Resolução de Questões de Cálculo

5

AVI - Avaliação Integrada com Resolução de Questões de Cálculo

Arquitetura de Computadores

UNISA

AVC - Avaliação Continua - Folha de Resposta

6

AVC - Avaliação Continua - Folha de Resposta

Arquitetura de Computadores

UNISA

Analise do Circuito Digital Y AB CD ABCD e Aplicabilidade da Porta NOT

3

Analise do Circuito Digital Y AB CD ABCD e Aplicabilidade da Porta NOT

Arquitetura de Computadores

UNISA

Conversão de Bases Numéricas e Lógica Digital - Lista de Exercícios

7

Conversão de Bases Numéricas e Lógica Digital - Lista de Exercícios

Arquitetura de Computadores

UNISA

Avi - Arquitetura de Computadores e Sistema Operacionais

4

Avi - Arquitetura de Computadores e Sistema Operacionais

Arquitetura de Computadores

UNISA

Texto de pré-visualização

ARQUITETURA DE COMPUTADORES E SISTEMAS OPERACIONAIS Wellington Barbosa 2 SUMÁRIO 1 INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES 3 2 PRINCIPAIS COMPONENTES DA ARQUITETURA DE COMPUTADORES 20 3 ARQUITETURAS DE COMPUTADORES BÁSICAS E AVANÇADAS 34 4 FUNDAMENTAÇÃO DOS PRINCIPAIS CONCEITOS RELATIVOS À ÁREA DE SISTEMAS OPERACIONAIS 49 5 ESTUDO DA ESTRUTURA DOS SISTEMAS OPERACIONAIS MAIS UTILIZADOS 65 6 PESQUISA SOBRE OS PRINCIPAIS SISTEMAS OPERACIONAIS UTILIZADOS NOS DIAS ATUAIS 84 3 1 INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES Olá aluno Neste bloco vamos compreender um pouco melhor as diferenças entre organização e arquitetura de computadores passando um pouco por seus modelos físicos e lógicos Além disso vamos nos apropriar melhor dos conceitos de sistemas de computação e de processamento de dados diferenciar o que é dado informação e conhecimento e como os sistemas computacionais modernos nos ajudam a obter cada um deles Vamos também fazer um passeio pelo tempo e analisar o histórico das gerações de computadores com suas principais características e mudanças no decorrer do tempo E para concluir o bloco vamos conhecer a relação entre arquitetura de computadores e os sistemas operacionais o que irá nos apoiar na escolha de bons sistemas operacionais para realização das nossas tarefas corporativas de maneira adequada ao hardware que temos à disposição 11 Arquitetura vs Organização de Computadores a organização estruturada de computadores e a descrição dos componentes da arquitetura de computadores Os termos arquitetura de computadores e organização de computadores podem parecer um pouco redundantes e confusos a princípio porém ao nos familiarizarmos fica fácil distinguilos O termo arquitetura de computadores tem relação com os componentes mais visíveis ao programador durante o desenvolvimento de seus softwares já organização de computadores é algo mais transparente imperceptível ao programador e principalmente a usuários finais muitas vezes sendo a forma de implementação dentro da arquitetura Um sistema desenvolvido para determinada arquitetura pode não funcionar se implantado em uma arquitetura diferente da sua atual Como exemplo disso podemos reparar em diversos sistemas operacionais atuais a distinção entre arquitetura de 64 bits e 32 bits para processadores Programas feitos para arquitetura de 32 bits não irão 4 funcionar em um processador 64 bits a menos que haja uma adaptação para realizar a compatibilidade entre arquiteturas Podemos ver com esse exemplo que a troca de arquitetura influencia diretamente no desenvolvimento e escolha de um software Quando nos referimos à organização de computadores não irá impactar diretamente no processo de utilização ou escolha de um software Algo que pode estar relacionado por exemplo é a estratégia de multiplicação para pontos flutuantes A mesma arquitetura pode suportar uma estratégia em que a unidade central de processamento popularmente conhecida como CPU do inglês Central Processing Unit realiza a multiplicação direta entre dois números ou adotar a estratégia que em vez de realizar a multiplicação direta faz a soma de maneira equivalente à multiplicação Por exemplo em vez de realizar o cálculo direto de 3 x 5 pode ser realizado o cálculo 5 5 5 Em ambos os casos se a CPU tem capacidade de realizar instruções de multiplicação o resultado será 15 mas cada um foi realizado com uma organização diferente A arquitetura também pode ser alterada de acordo com a funcionalidade que o computador terá É bem comum utilizar processadores com arquiteturas diferentes em máquinas cliente máquinas utilizadas por usuários finais e máquinas com a função de servidor que promovem serviços para diferentes pessoas simultaneamente Normalmente um servidor terá um processador que suporta mais tipos de virtualização e paralelismo de tarefas além de maior capacidade de recebimento de diversas instruções simultaneamente Por sua vez uma máquina cliente pode até ter maior frequência de processamento para uma tarefa exclusiva porém menor capacidade em multitarefas e virtualização O conhecimento nessa área se faz fundamental principalmente para uso em empresas pois a escolha de uma arquitetura de computadores errada pode comprometer um projeto ou levar a empresa a trocar os seus sistemas em decorrência da arquitetura Outro caso que pode acontecer é a compra de uma arquitetura muito mais cara do que a necessária e não utilizar suas vantagens como por exemplo a compra de computadores com processadores de servidor para utilizar em estações 5 que irão realizar tarefas únicas sem a necessidade de distribuição do processamento entre diversos computadores Nesse exemplo haveria computadores mais caros provavelmente com menor desempenho para tarefas únicas e sem utilizar as vantagens de uma arquitetura voltada para grandes volumes de tarefas Já a alteração da organização do computador é algo que não influencia diretamente na escolha do software pois um mesmo fabricante pode manter uma arquitetura por décadas e só melhorar a sua organização com isso reduzindo custos e aumentando o desempenho Se isso ocorrer os clientes não terão problemas ao migrar os seus sistemas de um parque antigo de máquinas para um novo parque Como citado acima se o processador aceita instruções de multiplicação não será relevante ao programador se tal tarefa está sendo realizada diretamente em uma unidade lógica aritmética com suporte à multiplicação ou se esse cálculo é realizado por uma sequência de somas e depois retornado o resultado 12 Conceituação de sistemas de computação e processamento de dados Para efeito de definição iremos tratar computador como uma máquina conjunto de partes eletrônicas e eletromecânicas capaz de sistematicamente coletar manipular e fornecer os resultados da manipulação de informações para um ou mais objetivos conforme Monteiro 2010 define em seu livro Porém essa definição em tempos atuais pode indicar muitas coisas Se pararmos para analisar temos computadores em todo nosso cotidiano e a todo momento Hoje em dia diversos aparelhos eletrônicos fazem coletas manipulações eou fornecimento de dados para gerar informações até mesmo um cartão de transporte público armazena dados que serão coletados em um computador ligado à catraca do ônibus Antigamente o serviço executado pelos computadores muitas vezes era conhecido como processamento eletrônico de dados inclusive em muitas empresas o que hoje é chamado de departamento de Tecnologia da Informação TI antes era conhecido como Centro de Processamento de Dado CPD Entretanto essa mudança de nomenclatura ocorreu porque atualmente o papel desempenhado pelo 6 departamento vai além de exclusivamente processar dados mas também está diretamente relacionado com a geração de informações que irão apoiar o negócio da empresa e a produção dessa informação é através de recursos tecnológicos O processamento de dados é apenas uma fase do processo de obtenção da informação Após a coleta dos dados temos a primeira fase o processamento quando os dados coletados serão manipulados de maneira sistemática e de acordo com as necessidades definidas para então gerar as informações A partir da sua análise gerada com auxílio do computador será possível realizar uma análise humana e com isso obter conhecimento para apoiar as decisões da empresa e auxiliar na melhora dos resultados do negócio Fonte elaborado pelo autor Figura 11 Fases do processo de obtenção de informação dados processamento informação análise e conhecimento 7 Os dados são a base dos processos a matériaprima antes de qualquer manipulação ou seja da forma como foi obtido da fonte de coleta O dado puro é algo sem significado não transmitindo nenhuma ideia se analisado de maneira bruta Após o processamento dos dados temos a informação que pode ser entendida como dados organizados de acordo com alguma estrutura ou padrão para possibilitar a compreensão humana Com os dados formatados de acordo com a necessidade iremos para a fase da análise para gerar o conhecimento humano e permitir tomadas de decisões mais assertivas Conforme pode ser visto na figura primeiro se coletam os dados depois ocorre o processamento para gerar informações e então fazse a análise que leva ao conhecimento 13 Evolução histórica dos computadores Seguindo a definição clássica de computador podemos dizer que o primeiro computador digital baseado em dígitos foi projetado pelo matemático inglês Charles Babbage que viveu entre 1792 e 1871 Ele dedicou a maior parte de sua vida ao desenvolvimento dessa máquina porém devido à falta de tecnologia da época faleceu antes de vêla funcionando Figura 12 Charles Babbage 17921871 8 Durante o projeto do primeiro computador digital época que ainda nem se imaginava a existência de sistemas operacionais Babbage identificou a necessidade da construção de rotinas lógicas e estruturadas para que sua máquina pudesse realizar as tarefas necessárias Para solucionar esse problema Babbage contratou a pessoa que hoje podemos chamar de a primeira programadora da história Ada Lovelace Após essa tentativa da construção da primeira máquina digital para realização de cálculos analíticos levouse um tempo para existir mais alguma pesquisa relevante nessa área Quando as pesquisas voltaram a acontecer começou a história das arquiteturas de computadores modernos e dos sistemas operacionais Como maneira de organização podemos categorizar nossos estudos dividindo entre as quatro gerações de arquiteturas de computadores TANENBAUM 2016 Com o início da Segunda Guerra Mundial a necessidade de efetuar cálculos mais rápidos e mais precisos foi aumentando a sociedade já precisava de equipamentos que fizessem tal tarefa para terem vantagens estratégicas sobre os inimigos Por esse motivo nessa época a evolução dos computadores deu um grande salto fazendo com que diversos pesquisadores idealizassem suas máquinas e começassem o processo de construção A maioria das máquinas dessa geração eram baseadas em válvulas e levavam segundos para realizar até mesmo os cálculos mais simples Tinham grande problema de falta de confiabilidade pois usavam uma quantidade muito grande de válvulas que frequentemente queimavam logo não se podia confiar muito no equipamento A utilização desses equipamentos era muito complicada desde seu armazenamento pois eram computadores enormes até a manutenção Isso acontecia porque era necessária uma equipe de profissionais com qualificação muito específica para que tivessem seu funcionamento da maneira adequada Outro fator que complicava muito a utilização desses equipamentos era o fato de que a única maneira de interagir com eles para realizar as tarefas era por meio de painéis de programação A ausência de sistemas operacionais nessa geração de computadores limitava seu uso a somente técnicos altamente capacitados pois todas as instruções 9 deveriam ser passadas em linguagem de máquina Nessa época não existia nem a assembly linguagem de segunda geração que faz uso de instruções semelhantes às de máquinas mas com uso de algumas palavras em inglês Somente no começo da década de 1950 foi inserido o cartão perfurado o programador podia desenvolver cartões perfurados para criar algum tipo de rotina que seria executado sem a necessidade de intervenção continua no painel de programação Essa difícil manipulação dos equipamentos normalmente fazia com que somente o próprio criador conseguisse fazer uso adequado de sua invenção Figura 13 Cartões perfurados da década de 1940 Na segunda geração de computadores que teve início em meados da década de 1950 as condições se alteraram bastante pois foi inserido o uso de transistores para substituir a utilização de válvulas Com o uso de transistores já era possível ter computadores capazes de funcionar tempo o suficiente para executar tarefas úteis sem a necessidade de manutenção tão frequente Porém nessa geração os computadores ainda eram equipamentos enormes e de alto custo onde somente grandes cooperações universidades ou instituições governamentais tinham a possibilidade de comprálos e mantêlos Essa evolução já permitiu que os computadores da época começassem a ser comercializados e não mais operados somente por seus próprios fabricantes Foi nesse momento da história que houve a possibilidade de separar as equipes que fariam uso dos computadores sendo possível distinguir o projetista do fabricante do 10 programador e do técnico de manutenção Isso porque a partir de então cada um tinha seu próprio papel e sua função ao utilizar o equipamento Começaram a existir diferentes funções e diferentes qualificações para utilização de computadores mas que ainda demandava alto conhecimento técnico para sua execução O processo de desenvolvimento dos programas nessa geração de computadores também evoluiu bastante pois já começaram as linguagens de programação assembly e Fortran sendo que a princípio havia a necessidade de cada programa ser escrito primeiramente no papel em uma das duas linguagens e depois as instruções eram passadas para os cartões perfurados Esses cartões perfurados eram entregues a um operador que faria a inserção no computador e esperaria um bom tempo até ter a saída do resultado Essa saída seria entregue novamente para o programador para que conferisse o resultado e assim fizesse uso das informações processadas pela máquina Esse processo consumia uma quantidade de tempo muito alta para que fosse operacionalizado pois em diversos pontos havia o deslocamento de um operador andando entre salas para que pudesse pegar todas as instruções de entradas e todos os resultados já processados para levar para os programadores Foi dessa necessidade que surgiram os primeiros sistemas operacionais A funcionalidade dos primeiros sistemas operacionais já se assemelhava aos de hoje em dia o que facilitava a utilização dos recursos de hardware pelo usuário final Os primeiros sistemas operacionais serviam para fazer a leitura de diversos cartões armazenar o conteúdo deles em fitas magnéticas para só depois de uma grande quantidade de instruções armazenadas começar a executálas Quando terminava a execução do processo a saída era gravada em uma segunda fita magnética Com isso ao término de uma instrução outra já começava automaticamente podendo assim executar instruções em lote batch sem a necessidade de troca de cartões a cada instrução ou um operador para ficar andando entre sala sempre que precisasse começar ou terminar uma instrução Agora o processo podia executar por mais tempo e com mais instruções sem intervenção humana 11 No começo da década de 1960 iniciouse a terceira geração onde existiam basicamente dois tipos de computadores os mais potentes utilizados por grandes empresas e universidade que tinham grande capacidade de processamento para realização de cálculos e eram orientados a palavras e os de menor porte que tinham como principal funcionalidade a ordenação e impressão de fitas utilizados por companhias de seguros e bancos orientados a caracteres ao invés de palavras Porém essa segunda estrutura tinha um problema sério de impossibilidade de utilizar programas feitos para uma das arquiteturas funcionar na outra se por exemplo uma empresa comprasse um computador de menor porte e sua demanda crescesse não poderia fazer a migração dos seus programas para um computador de maior porte A terceira geração de sistemas operacionais teve seu início em meados da década de 1960 e veio junto com uma solução para o problema de diferentes arquiteturas para os dois tipos de computadores existentes até então A IBM lançou a primeira geração de computadores baseados em circuitos integrados e não mais em transistores individuais Isso permitiu que os equipamentos ficassem com um custobenefício muito mais acessível e também possibilitou que computadores de diversos portes executassem o mesmo sistema operacional Esse fato permitiu que os programas pudessem ser desenvolvidos para funcionar em qualquer porte de equipamento Em relação as suas antecessoras essa geração tinha a vantagem de poder ser executada em qualquer tamanho de equipamento e para qualquer funcionalidade Porém esse também era seu maior defeito pois um sistema operacional que funcione para qualquer porte de máquina precisava ser muito grande e com muitas funcionalidades Era um sistema com milhões de linhas de código escrita por milhares de programadores e consequentemente diversos erros durante sua programação Eram necessárias atualizações constantes para correções mas estas vinham com erros diferentes e novamente precisavam de atualizações 12 Os sistemas operacionais de terceira geração mesmo tendo suas características negativas também começaram a implementar técnicas fundamentais para a evolução da computação como a multiprogramação Ou seja os computadores IObound Input and Outputbound equipamentos que tinham a maior utilização para tarefas com entrada e saída de dados podiam executar tarefas de processamento enquanto executavam tarefas de escrita nas fitas ou esperavam sua reposição O contrário também acontecia em computadores CPUbound equipamentos que tinham maior utilização de funcionalidades que exigiam processamento tipo computadores utilizados para cálculos de previsão do tempo também conseguiam realizar tarefas de entrada e saída de dados enquanto seus cálculos eram realizados O que possibilitou essa técnica de multiprogramação foi o fato de a memória começar a ser dividida em partes MACHADO MAIA 2017 podendo deixar uma parte da memória responsável para o sistema operacional e outras partes livres para cada uma armazenar uma tarefa diferente criando essa concorrência entre processos IObound e CPUbound de maneira a diminuir a ociosidade da máquina Ainda durante o processo de evolução dos sistemas operacionais de terceira geração identificouse que tendo os sistemas grande capacidade de processamento suportando multiprogramação e atendendo necessidade de vários tipos de sistemas ao mesmo tempo ainda tinham grande ociosidade pois continuavam agindo como sistema de execução em lotes ou seja eles executavam uma série de instruções de maneira sequencial Batch Isso gerava desperdício de tempo pois se um programador errasse uma vírgula durante sua programação teria que esperar o término da execução de todas as instruções de todos os outros programadores para que pudesse corrigir a sua Para solucionar esse problema de usabilidade foi colocado um esquema de rodízio de utilização dos recursos computacionais fazendo a divisão por tempo chamado time sharing Esse recurso identifica quantas pessoas estão utilizando o computador e destina uma fração de tempo normalmente muito inferior a um segundo para cada 13 usuário de maneira que não consigam perceber que estão compartilhando o mesmo hardware com outros usuários pois a fração de tempo reservado a cada um é tão pequena que fica completamente transparente a quem ele está dividindo o recurso Na década de 1980 deuse início a quarta geração de arquitetura de computadores e consequentemente houve mais uma evolução grande nos sistemas operacionais Graças ao desenvolvimento de circuitos integrados em larga escala em que se consegue construir chips com milhares de transistores em apenas um centímetro quadrado de silício foi possível impulsionar a computação pessoal A partir dessa geração tanto o tamanho quanto o custo para a produção de computadores diminuíram muito gerando a possibilidade de que as pessoas pudessem adquirir esses equipamentos para uso inclusive em suas residências e não mais se limitando apenas à empresa ou aos profissionais com qualificação específica na área de computação Nessa época se popularizou a nomenclatura microcomputador pois os computadores com circuito integrados em larga escala tinham seu tamanho bem menor do que as antigas máquinas que necessitavam muitas vezes de uma sala inteira para funcionar Junto dessa geração de computadores começaram a surgir novos equipamentos como por exemplo os discos flexíveis dando início a uma era Então com uma computação mais portátil e mais acessível houve a necessidade de novos sistemas operacionais que acompanhassem essa evolução Com isso algumas empresas começaram a surgir nessa área Hoje podemos dizer que a empresa dessa época que mais se destacou com o desenvolvimento do sistema operacional foi a Microsoft com o MSDOS Microsoft disk operating system fundada por Bill Gates Talvez a principal característica que tenha levado esse sistema operacional a fazer tanto sucesso e se popularizar da maneira que aconteceu tenha sido o fato da Microsoft atrelar a venda de seu sistema operacional ao hardware que o usuário final comprava Isso fez com que os computadores de diversos modelos vendidos pela IBM na época fossem com esse sistema operacional já como padrão 14 Porém os sistemas operacionais do começo dessa geração de computadores eram totalmente baseados em comandos digitados pelo usuário em pouco tempo houve a evolução do desenvolvimento de sistemas operacionais baseados em GUI graphical user interface ou seja sistemas operacionais baseados em janelas ponteiros ícones e menus Esse tipo de interface começou a tornar os computadores mais intuitivos e visualmente mais agradáveis para usuários finais outro fato que ajudou a popularizar mais ainda a computação pessoal 14 Aplicação de sistemas numéricos e conversão entre bases breve abordagem sobre aritmética de ponto flutuante Números são representações de um conceito abstrato normalmente utilizado para representar quantidades Devido à necessidade das sociedades modernas de quantificar fazemos uso de números diversas vezes ao dia seja para calcular um troco ao realizar pagamentos quantificar idade em aniversário ou mesmo para olhar a hora Todas as nossas necessidades casuais são em sistemas numéricos de base decimal ou seja temos dez números para representar a quantidade que queremos e quando esses dez números acabam acrescentamos mais um dígito com isso aumentando a ordem de grandeza no numeral utilizado Os dez números que costumamos trabalhar são 0123456789 Reparem que começamos do 0 e vamos até o 9 Se quiséssemos representar com dois dígitos essa mesma sequência numérica poderíamos escrever 00 01 02 03 04 05 06 07 08 09 que transmitiria a mesma ideia de valor pois o 0 à esquerda de um número inteiro não altera em nada o seu valor Porém com essa quantidade de números isolados é muito limitada a nossa contagem então quando é necessário representar algum valor acima de 9 juntamos mais dígitos para representar Por exemplo se seguirmos a sequência o próximo valor é o 10 e depois o 11 Reparem que o número 10 é o segundo algarismo que tínhamos em nossa sequência numérica decimal 1 seguido pelo primeiro algarismo 0 então iremos alterando o último número da esquerda para aumentar o valor da nossa 15 representação e se quisermos representar o próximo número iremos utilizar o segundo número tanto na esquerda quanto na direita 11 Esse processo se repetirá até chegarmos ao 19 a partir de então iremos mudar para 20 e repetiremos o processo Contar com uma base decimal é muito natural pois somos ensinados com ela desde a infância Por isso muitas vezes não paramos para analisar o como é feita só a assimilamos e aceitamos porém dentro da computação outras bases numéricas se fazem necessárias pois trabalhamos com diferentes tipos de medições Uma base muito utilizada na computação é a binária onde só temos 01 Essa base frequentemente é utilizada pois representa a menor unidade de medida da computação o bit O bit é utilizado para indicar se há ou não tensão se uma porta está aberta ou fechada ligado ou desligado e vários outros estados dentro de circuitos eletrônicos porém sempre situações que só podem ter duas possibilidades Logo o cálculo com bases binárias facilita o processo Há momentos em que é mais interessante realizar as representações computacionais por meio de bytes Um byte é um conjunto de oito bits e normalmente essa unidade de medida é utilizada para quantificar armazenamento de dados O tráfego de redes de computadores normalmente é medido em bits e o tamanho do armazenamento é medido em bytes Na escrita utilizamos a letra b minúscula para representar bits ou o B maiúsculo para bytes podemos contratar um link de internet com velocidade de 100mbps 100 mega bits por segundo ou ter uma foto com tamanho de 15mB 15 mega bytes Como normalmente trabalhamos com valores grandes esse fato pode tornar a representação de dados em binário muito extensa sendo necessário utilizar outras bases para facilitar a visualização Essas bases podem ser octal com oito dígitos 01234567 ou hexadecimal com dezesseis dígitos 0123456789ABCDF 16 Um momento bem comum de utilizar a base hexadecimal é em padrão de cores RGB Red Green Blue onde se determina a cor pela mistura de uma dada quantidade de vermelho verde ou azul Uma cor de tom alaranjado no padrão RGB seria EEAD2D sendo os dois primeiros dígitos a quantidade de vermelho os dois dígitos do meio a quantidade de verde e os últimos dois dígitos a quantidade de azul da cor Caso essa mesma cor fosse representada em binário seria 111011101010110100101101 É perceptível que a representação em binário fica muito extensa bem mais difícil de manusear ou mesmo memorizar sendo a representação hexadecimal bem mais enxuta Enquanto a representação binária tem vinte e quatro dígitos a representação hexadecimal tem apenas 6 O mesmo valor em octal seria 73526455 já uma representação com 6 dígitos É importante perceber que embora existam várias bases para representação de valores todas elas seguem o mesmo padrão de contagem em acrescentar um novo dígito à esquerda quando o número de possibilidades se esgotou para determinada quantidade de dígitos como vimos no exemplo da base decimal Compreendendo essa lógica de funcionamento das bases é fácil reparar que todas elas permitem contar até valores que tendem ao infinito sempre aumentando a quantidade de dígitos ou seja por maior que for um número sempre será possível escrever um número com valor maior que ele 15 Relação entre a arquitetura de computadores e os sistemas operacionais Os sistemas operacionais evoluíram muito com o passar do tempo e com as diversas necessidades das diferentes arquiteturas dos computadores Cada modelo de arquitetura tem uma necessidade de um sistema operacional diferente e os sistemas operacionais visam melhorar a usabilidade das principais funcionalidades do computador Logo um computador com uma funcionalidade específica também precisa de um sistema operacional específico 17 O sistema operacional tem a finalidade de servir como intermediário entre o usuário e o hardware de maneira que aquele não precise conhecer instruções deste e não precise saber nem mesmo qual a arquitetura do computador para realizar as tarefas básicas com o seu computador Um questionamento interessante a se fazer nesse momento o processador do computador que está fazendo uso nesse momento é de 32 ou 64 bits A grande maioria das pessoas não devem saber responder essa pergunta pois o sistema operacional cuida de tal diferenciação Embora um profissional precise saber responder isso com muita convicção até mesmo para poder realizar a escolha de softwares adequados essa é uma informação suprimível a um usuário padrão que usa o computador exclusivamente como meio para realizar suas tarefas e não como atividade final de seu serviço Mas se você trocar a placa mãe do seu computador existe a grande possibilidade de ter que apagar o sistema operacional instalado no disco rígido e instalar novamente pois no momento da instalação o sistema operacional irá identificar os componentes de hardware acoplados na placa mãe e tentará instalar os drivers necessários Drivers são softwares responsáveis por realizar uma boa comunicação entre o sistema operacional e os hardwares conectados a ele Então se você trocar a placa mãe de um computador por uma placa que não seja exatamente o mesmo modelo provavelmente os drivers antigos não irão funcionar por estarem preparados para outro tipo de arquitetura dos componentes da placa mãe Se houvesse só uma atualização de todos os componentes de hardware sem que não houvesse nenhuma alteração de arquitetura mas somente de organização todos os sistemas instalados teriam tendência de funcionar normalmente inclusive o sistema operacional Mas como cada fabricante adota a sua arquitetura isso seria bem difícil Então entra outra vantagem do sistema operacional em relação à utilização do hardware por programas desenvolvidos por terceiros um programa pode ser desenvolvido para ser utilizado em um sistema operacional onde a principal preocupação do programador será a utilização das chamadas do sistema operacional 18 ou até mesmo de funções prontas de algum framework instalado no sistema operacional deixando o programador ainda mais isento da preocupação da interação direta com a arquitetura do hardware As versões mais recentes do sistema operacional Windows possuem até modo de compatibilidade para a arquitetura do processador Se você tiver uma versão do Windows voltado para processadores de 64 bits e desejar instalar um programa normalmente antigo feito para arquitetura de 32 bits o próprio sistema operacional irá identificar e realizar uma instalação em diretório separado com modo de compatibilidade Isso pode gerar uma pequena perda de desempenho na utilização do programa porém irá funcionar de maneira adequada Sistemas operacionais e arquitetura de computadores têm um histórico muito semelhante pois os sistemas operacionais são desenvolvidos para um usuário final tirar o melhor proveito possível do hardware sem ter grande conhecimento técnico sobre o assunto As gerações de sistemas operacionais sempre foram ligadas às gerações de arquiteturas de computadores a cada passo que as gerações de computadores deram os sistemas operacionais foram adequados para atender os novos potenciais dos equipamentos e a nova demanda dos usuários desses computadores Até nos dias atuais existem sistemas operacionais voltados para arquiteturas especificas como por exemplo temos versões de Windows voltadas para servidores que podem fazer uso de recursos avançados de virtualização tais recursos de virtualização não poderiam ser utilizados em versões do Windows voltadas ao uso pessoal Também existem versões de sistemas operacionais para dispositivos móveis um tipo de computador que tem necessidades específicas Atualmente uma das principais é a economia de energia que embora seja importante em qualquer tipo de computador em um dispositivo móvel é primordial 19 Conclusão Neste bloco pudemos ver as características introdutórias aos temas sistemas operacionais e arquitetura de computadores passando por definições básicas de arquitetura e organização de computadores tendo uma prévia da definição de sistemas operacionais e analisando os sistemas numéricos utilizados dentro da computação Além disso passamos pelo histórico dos computadores e pelas necessidades dos sistemas operacionais em cada geração de computadores Para finalizar vimos o ponto de convergência entre sistemas operacionais e arquitetura de computadores REFERÊNCIAS MACHADO F B MAIA L P Arquitetura de Sistemas Operacionais Rio de Janeiro LTC 5 ed 2017 MONTEIRO M Introdução à Organização de Computadores Rio de Janeiro LTC 5 ed 2010 TANENBAUM A S Sistemas Operacionais Modernos São Paulo Pearson 4 ed 2016 20 2 PRINCIPAIS COMPONENTES DA ARQUITETURA DE COMPUTADORES Neste bloco vamos conhecer um pouco mais a fundo alguns dos componentes de um computador e iremos discutir modelos de arquiteturas de algumas partes isoladas Além disso vamos nos apropriar das partes que compõem uma CPU entender mais a fundo o conceito de interrupção analisar a hierarquia de memórias e entender a importância de cada uma delas Para complementar o nosso conhecimento sobre essas componentes também vamos falar sobre dispositivos de entrada e saída e tipos de barramentos 21 Descrição do funcionamento dos processadores Apresentação da CPU Unidade de Controle ULA Registradores Se pararmos para analisar o computador tem certas semelhanças com o ser humano enquanto este possui olhos para possibilitar a visão ouvidos que têm parte da responsabilidade pela audição e o tato para percepção de condições diversas aquele conta com diversos dispositivos de entrada de informação como teclado microfone e mouse O computador também tem dispositivos de saída como microfone e monitor que são capazes de transmitir as informações após processadas de maneira semelhante os seres humanos utilizam a fala MONTEIRO 2010 Mais uma semelhança que temos entre os dois é que toda a informação que entra é processada por um cérebro no caso do computador pela CPU Unidade Central de Processamento sigla do nome em inglês Central Processing Unit A computação atual se baseia na arquitetura de Von Neumann que considera que um computador deve conter três estruturas principais Unidade lógica e aritmética Essa parte do processador é responsável pela execução das operações algébricas e decisões sobre as operações booleanas E OU NÃO etc Também na ALU do inglês Arithmetic Logic Unit ficam os acumuladores partes responsáveis por receber informações vindas dos dispositivos de entrada e a última parte por onde os dados passam antes de irem para os dispositivos de saída 21 Unidade de controle A unidade de controle é responsável pela interpretação e execução das instruções passadas para o processador e irá decidir o que fazer com os dados Memória Na arquitetura de Von Neumann é previsto que nem todas as instruções podem ser executadas de imediato inclusive é o grande diferencial desse modelo em relação aos anteriores a ele Logo é necessário que haja memória dividia em hierarquia para armazenar as instruções que não estão sendo processadas no exato momento A figura abaixo ilustra a estrutura básica de um processador previsto no conceito da arquitetura de Von Neumann Fonte elaborado pelo autor Figura 21 Estrutura básica de um processador conceito da arquitetura de Von Neumann Embora todos os processadores contenham essa divisão de componentes e cada um seja responsável por suas funcionalidades fazendo com que o processador funcione com troca de mensagens entre eles os processadores modernos são fabricados de modo que todos os componentes necessários caibam em apenas um chip Ao observar um processador não será capaz de ver cada componente até porque a tecnologia está evoluída a ponto dos processadores serem compostos por bilhões de transistores o processador Intel Core i76950X tem 47 bilhões de transistores e tudo isso em um espaço de poucos cm² 22 22 Conceito de interrupção A maioria dos sistemas operacionais modernos tem a capacidade de executar diversas ações simultaneamente Hoje em dia um usuário de computadores costuma executar diversas funções ao mesmo tempo Por exemplo ao usarmos nosso notebook queremos acessar a internet assistir vídeos e editar planilhas ou documentos de texto ao mesmo tempo ou quando utilizamos nossos celulares também utilizamos os aplicativos de troca de mensagens enquanto ouvimos músicas e alternamos frequentemente para algum jogo ou qualquer outra funcionalidade de nosso dispositivo móvel Os computadores da segunda geração de arquitetura de computadores só tinham a capacidade de executar um processo por vez sendo que ao acabar um programa o operador tinha que ir até o equipamento e manualmente colocar outro programa para executar até se automatizar esse processo e possibilitar a execução de arquivos em lote batches onde era possível organizar para ao término de uma execução o início de outra Na geração seguinte de arquitetura de computadores os sistemas operacionais já conseguiram fazer uso de um novo conceito de execução de processos que possibilitou a execução de diversos programas diferentes ao mesmo tempo aparentemente O conceito central utilizado em um sistema operacional é o de processos afinal a principal funcionalidade de um sistema operacional é facilitar a interação do usuário com o hardware sendo o intermediário na hora de executar programas diversos fazendo isso com o melhor aproveitamento possível do hardware O processo é uma abstração do programa em execução que permite a capacidade de pseudoparalelismo ao executar diversas tarefas ao mesmo tempo mesmo havendo apenas uma CPU O processo a divide em diversas CPUs virtuais e consegue assim alternar entre elas gerando concorrência de tarefas 23 Essa característica de um ambiente permitir a execução de múltiplos processos ao mesmo tempo é chamada de multiprogramação Em um ambiente multiprogramado o sistema operacional chaveia efetua a troca do processo que está na CPU a todo momento disponibilizando algumas dezenas de milissegundos de processamento a cada programa em execução de maneira que nenhum processo fique sem ter sua necessidade atendida Devido ao fato de cada processo ficar apenas alguns milissegundos na CPU e depois entrar outro processo dizemos que é um pseudoparalelismo pois não se executam diversos processos paralelos na CPU mas há uma troca rápida do processo que está sendo executado no momento gerando a sensação de que vários estão em execução simultaneamente porém o paralelismo real só pode ocorrer em sistemas distribuídos que possuam diversos processadores trabalhando em conjunto de maneira transparente ao usuário sendo que cada processador ficará responsável por um processo por um determinado tempo Em determinados momentos pode acontecer de um evento em especial interromper essa distribuição justa de tempo para cada processo e ter a necessidade de ser executado naquele exato momento esse tipo de situação é chamado de interrupção Fonte elaborado pelo autor Figura 22 Exemplo de interrupção Processos A Processos B Interrupção 24 O mecanismo de interrupção é de suma importância no modelo de processamento multitarefas pois como cada fração de tempo é dedicada a um processo que ficam enfileirados seria impossível a identificação de um evento com necessidade de execução imediata caso não houvesse o mecanismo de interrupção Esse mecanismo é utilizado para indicar a CPU quando ocorrem eventos de grande importância relacionados a elementos do sistema ou periféricos PAIXÃO 2014 Por exemplo em Linux ao processar um shell script é possível parar imediatamente o seu processamento com a combinação das teclas CtrlC isso só é possível pois o mecanismo de interrupção captura o comando do teclado antes mesmo da conclusão do script porém não seria possível em um mesmo terminal iniciar um novo script antes da conclusão do anterior já que os processos são enfileirados e gerenciados pelo escalonador de processos Porém quando há uma interrupção o script tem prioridade de execução no momento e após a interrupção os processos novamente seguirão a ordem normal definida pelo escalonador de processos 23 Memória interna O ideal para todo desenvolvedor de software e embora eles não saibam mas para os usuários modernos também seria que os computadores tivessem uma quantidade infinita de espaço de armazenamento com alta velocidade de maneira não volátil e a um custo baixo Porém juntar todas essas características em apenas um tipo de memória é algo utópico TANENBAUM 2016 Para compensar essa impossibilidade de ideal os sistemas operacionais gerenciam hardwares que possuem o que pode ser chamado de memória hierárquica onde existem diferentes tipos de memória sendo cada tipo de memória responsável por um tipo de armazenamento diferente Como maneira de segmentar as memórias pertencentes a um computador atual podemos dividir em memória cache na qual cabem apenas alguns poucos megabytes um processador Intel Core i73770 de 39 Ghz de processamento por exemplo possui apenas 8 MB de cache porém é uma memória de altíssimo custo e com velocidade de leitura e gravação grande Esse tipo de memória normalmente fica no processador sendo a responsável por armazenar os dados que serão processados imediatamente 25 O segundo tipo de memória que podemos citar é a memória principal Nessa memória ficam armazenados os dados voláteis ou seja aqueles que serão apagados ao término da execução dos programas ou ao desligar o computador Essa memória também pode ser chamada de RAM do inglês Random Access Memory em português seria memória de acesso aleatório e normalmente tem alguns gigabytes de capacidade de armazenamento Outro tipo de memória que normalmente encontramos nos computadores é a memória secundária na qual atualmente chegamos a alguns terabytes de armazenamento Essa memória é onde armazenamos maiores volumes de dados de maneira não volátil sendo que ao desligarmos o computador ou ao terminarmos a execução de algum programa o que for armazenado nessa memória não irá sumir automaticamente Essa memória depende de comandos específicos do usuário para que seus dados sejam alterados ou apagados e normalmente ela é utilizada no HD hard disk do computador A memória RAM é a parte do computador que irá alocar o conteúdo que está em execução no momento Essa é a memória que se comunicará com o processador Para que possa acontecer o escalonamento de processos o conteúdo e os programas que estejam no estado de pronto ou bloqueado serão guardados na memória principal RAM Por esse motivo quando um computador está com lentidão ao executar os aplicativos é comum recomendar que se aumente a sua memória justamente a primária pois quanto mais memória RAM tivermos maior a quantidade de conteúdos executados simultaneamente Lembrando sempre que nesses casos ainda é necessário verificar a limitação do processador Embora a memória RAM não seja tão rápida quanto a memória cache ela é muito mais rápida do que a memória secundária Em geral a memória RAM fica próxima ao processador para facilitar a troca de dados entre eles 26 Ao calcular o preço do byte por exemplo dividindo o preço total da peça pela quantidade de bytes que tem o custo da memória principal é intermediário entre o HD e a memória cache o que possibilita colocar uma quantidade razoável de memória primária no computador a quantidade de memória cache por seu valor é pouquíssima e a quantidade de memória secundária é grande A memória principal é conhecida como memória de acesso aleatório RAM do inglês Random Access Memory pois um programa carregado nela pode ser armazenado em qualquer parte sendo possível fazer sua leitura e gravação de maneira aleatória a qualquer momento não havendo a necessidade de alocação dos dados em alguma parte específica A velocidade da memória principal é boa mas em geral com baixa capacidade de armazenamento Dentre outros motivos a memória principal tem baixa capacidade de armazenamento pelo seu elevado custo por byte Em uma configuração padrão de computadores pessoais um equipamento possui em torno de 4 ou 8 Gigabytes de memória principal Essa quantidade de memória é muito baixa às vezes o próprio sistema operacional pode ocupar mais espaço de armazenamento do que isso Nesse momento nossa hierarquia de memória entra em ação pois a memória principal é utilizada somente para armazenamento de dados que estão sendo usados no momento onde há maior necessidade de velocidade para enviar o conteúdo ao processador porém para armazenamentos não voláteis Ou seja quando os dados precisam continuar armazenados mesmo não sendo utilizados e guardados por tempo indeterminado fazemos uso da memória secundária A memória secundária mais conhecida para computadores pessoais é o HD do inglês Hard Disk Esse componente de nossos computadores é onde o sistema operacional irá armazenar todo o conteúdo permanente que só será removido caso haja alguma instrução por parte do usuário ou algum software faça essa solicitação 27 Diferente da memória primária o custo de um byte da secundária costuma ter um valor muito baixo e sua velocidade de leitura e escrita também é muito inferior à velocidade da memória principal Um computador de uso pessoal padrão hoje em dia costuma ter algo entre 500 GB a 2 TB de armazenamento para conteúdo não volátil Para que tenhamos ideia da necessidade de espaço de armazenamento de uma memória secundária para armazenarmos um filme com qualidade full HD precisamos de aproximadamente 47 Gigabytes de espaço disponível em nossa memória que estará ocupado o tempo todo independente do filme estar sendo assistido no momento ou não pois essa memória é não volátil Outro fator relevante nessa memória é sua velocidade que computacionalmente falando costuma ser muito lenta Embora hoje em dia existam Hard Disks do tipo SSD que dispensam a leitura mecânica dos dados a grande maioria ainda são os HDs que possuem um disco com agulhas para efetuar a leitura e gravação magnética do conteúdo Esse processo de movimentação do disco e movimentação da agulha é muito mais demorado do que o simples processo de transferência de pulsos elétricos dentro de um chip A memória principal armazena dados voláteis e os que estão em sendo utilizados no momento Logo de uma maneira geral temos a necessidade de armazenamentos menores Porém como essa memória tem comunicação com o processador tem a necessidade de maior velocidade Mas mesmo com a tecnologia tendo evoluído nos últimos anos e a capacidade de armazenamento da memória principal tendo aumentado bastante os softwares cresceram mais ainda Por esse motivo muitas vezes somente a memória RAM não é capaz de armazenar todo o conteúdo que está aberto no computador no mesmo momento Para resolver o problema de haver necessidade de mais memória RAM do que o que tem instalado no computador os sistemas operacionais modernos adotam um conceito de memória virtual Esse conceito consiste em usar parte da memória secundária como memória principal Ou seja o conteúdo que foi iniciado mas não está em uso exatamente naquele momento pode ser guardado no HD caso a memória principal esteja quase toda sendo utilizada por outros processos 28 Com isso é possível manter a execução de todos os conteúdos simultâneos porém com grande perda de desempenho pois a velocidade de leitura e gravação da memória secundária é muito menor do que a da memória principal Entretanto essa técnica só é utilizada quando a memória principal está quase toda ocupada e se acontecer com frequência provavelmente o hardware do computador deve ser alterado colocando mais memória principal Como mencionado anteriormente o ideal seria que todos os computadores possuíssem uma quantidade ilimitada de memória com alta velocidade de maneira não volátil e a um baixo custo Mas isso não é possível mesmo com a tecnologia atual e para contornar esse problema e possibilitar múltiplas ações por um mesmo equipamento os sistemas operacionais adotam uma hierarquia de memórias Essa hierarquia permite que cada necessidade de memória tenha uma tecnologia diferente para que possa atendêla Onde é necessário ter memória mais rápida tem se menos memória onde se precisa mais memória adotase uma memória economicamente mais viável tornando possível com isso ter um sistema com muita memória e com memórias rápidas mas cada uma delas fazendo o seu papel 24 Interfaces de Entrada e Saída De acordo com a arquitetura de Von Neumann um computador deve ter a capacidade de armazenar dados e instruções que serão executadas em memória para realização de tarefas futuras Esse pensamento foi proposto em 1946 para substituir o então modelo que só processava os dados passados no momento Com isso todos os dados são armazenados na memória e depois enviados à CPU então o usuário irá obter os resultados de acordo com as instruções recebidas Porém todos esses dados precisam ser inseridos na memória de alguma forma e todo o resultado do processamento também precisa ser apresentado ao usuário Para isso são utilizados os periféricos de entrada e saída 29 Os periféricos de entrada e saída são interfaces para a troca de mensagens entre o homem e a máquina Podemos definir interface como sendo um ponto de contato entre os dois artefato que permite o ser humano transmitir dados para o computador de uma maneira que seja interpretável pela máquina e vice e versa Para o computador a letra A não é interpretada como para nós seres humanos enquanto enxergamos um desenho convencionado com o som de A para o computador a mesma letra é uma sequência de pulsos elétricos que poderia ser representada em binário por 01000001 letra A maiúsculo em binário Porém devido às nossas interfaces podemos apertar uma letra no teclado passar tal instrução para o computador ele interpretar e retornar no monitor o desenho da letra que estamos acostumados a enxergar por isso dizemos que tanto o teclado como o monitor são interfaces para troca de dados entre homem e máquina Os elementos que têm a função de receber ou transmitir dados em um computador são chamados de dispositivos ou periféricos de entrada e saída Esse tipo de periférico compõe um subsistema computacional chamada subsistema de entra e saída que muitas vezes pode ser abreviado para ES ou do inglês IO Input and Output É portanto muito comum encontrar em especificações técnicas uma unidade de medida chamada taxa de IO onde indica a capacidade de entrada e saída de dados de determinado periférico Essa unidade de medida é uma das principais características a ser observada em um HD Os periféricos de entrada e saída podem ser divididos em duas categorias dispositivos de entrada e dispositivos de saída porém existem alguns dispositivos que ficam nas duas categorias simultaneamente Como exemplo de dispositivos de entrada temos o teclado que citamos anteriormente em que ao apertar um botão ele transmite informações ao computador permitindoo interpretálas Outro exemplo de periférico de entrada é o microfone onde podemos enviar informações de áudio para o computador e posteriormente até tratálas Ou seja qualquer equipamento que tenha a capacidade de receber dados e os transmitir para o computador são periféricos de entrada 30 Um exemplo que podemos citar de periférico de saída é o monitor no qual o computador converte as instruções binárias processadas pela CPU em formas visuais interpretáveis pelos seres humanos e repassa ao monitor mostrando imagens Outro exemplo muito tradicional de periférico de saída seria a impressora que através de tinta em um papel envia informações do computador para o ser humano Podemos considerar como periférico de saída qualquer equipamento que tenha a função de transmitir dados do computador para os seus usuários Conforme citado também existem alguns equipamentos que são periféricos tanto de entrada quanto de saída nessa categoria temos algumas unidades de armazenamento como HD ou mesmo pen drive Esses dispositivos podem receber e enviar dados ao computador não se limitando apenas à entrada ou saída dos dados Componentes como esse têm como principal unidade de medida a taxa de transferência de dados Os dados trocados entre os periféricos de entrada e saída podem ser transmitidos de maneira serial ou paralela Uma interface de comunicação serial faz o envio de cada bit de maneira sequencial ou seja envia um bit de cada vez através do canal de comunicação Esse é o principal método utilizado para comunicações de longa distância como nas comunicações de redes de computadores devido ao fato de reduzir custos com cabeamento e menor dificuldade em relação a sincronização dos bits transmitidos Outra característica da transmissão serial é poder ser síncrona ou assíncrona A primeira acontece de maneira em que os bits são enviados de maneira contínua e em um intervalo de tempo fixo não havendo espaços maiores ou menores entre o enviado de cada bit Caso o emissor não tenha dados para transmitir serão enviados bits especiais que serão desconsiderados no receptor mas não irá parar enviar os dados em um tempo fixo Já na assíncrona os dados serão enviados conforme a demanda tendo intervalos diferenciados para o enviado de cada bit Já em uma interface paralela é possível enviar muitos bits simultaneamente porém há necessidade de cabos com muitas vias e é preciso sempre manter o sincronismo para evitar o envio redundante de dados 31 25 Barramentos Um computador é composto por diversos componentes e de uma maneira geral há intercomunicação entre eles Por exemplo todos os dados de todas as partes de um computador precisam passar pelo processador Também há casos em que a parte gráfica de um computador pode ser processada em uma placa de vídeo que possui processador próprio e entregará dados já préprocessados Além disso as diferentes memórias trocam dados constantemente para poder manter a hierarquia necessária Fonte elaborado pelo autor Figura 23 Esquema de comunicação dos componentes sem e com barramento Mas para tantos componentes diferentes poderem transmitir informações um para o outro é necessário que todos estejam interligados de alguma maneira e para isso existem os barramentos O barramento é um conjunto de linhas de comunicação que permitem a interligação entre os diversos componentes do computador por meio de um caminho único Em vez de ligar um componente diretamente ao outro o que iria gerar um número muito grande de interconexões todos os componentes são ligados ao barramento e as mensagens trocadas por essa via Componente 1 Componente 3 Componente 2 Componente 4 Se não houvesse barramento Com barramento Componente 1 Componente 3 Componente 2 Componente 4 32 Figura 24 Placa mãe Ao olharmos a imagem de uma placa mãe podemos perceber que existem alguns espaços para ligar mais componentes como placas de memórias vídeo e até a fonte de alimentação Esses espaços são conhecidos por slot os responsáveis por conectar os novos componentes ao barramento central da placa mãe e realizar a troca de informações necessárias entre cada parte Além destes a própria placa mãe já vem com muito componentes inseridos nela chamados de onboard e os componentes que são colocados posteriormente são chamados de offboard Os barramentos são divididos em barramentos internos e de extensão os barramentos internos são os que permitem a comunicação dos componentes onboard da placa e suas estruturas principais como comunicação entre memória e processador Já os barramentos de extensão são os que possibilitam a inserção de novos componentes por meio dos slots 33 Conclusão Neste bloco conhecemos os principais componentes de um computador e como eles trocam informações entre si Para isso foi apresentado o que é um processador e cada um dos componentes que o constituem Também vimos que existe mais de um tipo de memória dentro do computador e as vantagens e desvantagens de cada tipo de memória como a velocidade de gravação e leitura e o custo para sua utilização Conhecemos também os dispositivos de entrada e saída falamos sobre os barramentos e como eles ajudam a comunicação interna da placa mãe de um computador REFERÊNCIAS MONTEIRO M Introdução à Organização de Computadores Rio de Janeiro LTC 5 ed 2010 PAIXÃO R R Arquitetura de Computadores PCs São Paulo Érica 2014 TANENBAUM A S Sistemas Operacionais Modernos São Paulo Pearson 4 ed 2016 34 3 ARQUITETURAS DE COMPUTADORES BÁSICAS E AVANÇADAS Neste bloco vamos discutir os modelos avançados para processamento de informação Também entenderemos as técnicas básicas de multiprocessamento e como elas são utilizadas no mercado de computadores atuais Em posse desse conhecimento básico vamos discutir os modelos avançados e como os supercomputadores atuais fazem uso dessa técnica para aumentar exponencialmente o seu poder de processamento Além disso vamos analisar as formas como multiprocessamento pode ser implementado e traremos algumas noções sobre computação distribuída Vamos lá 31 Conceituação de multiprocessamento simétrico e assimétrico Ao analisarmos a história da arquitetura de computadores podemos ver que houve grandes mudanças nos conceitos de utilização dos computadores e em suas especificações técnicas Cálculos que eram efetuados em dias nos supercomputadores da década de 1950 podem ser realizados em segundos em qualquer computador moderno MACHADO MAIA 2017 Porém mesmo com toda essa evolução os computadores atuais ainda têm suas limitações principalmente com relação a processamento Nos dias atuais o processamento ainda é o maior gargalo que se tem na computação É muito mais comum encontrar problemas que esbarram na falta de poder de processamento do que em outros aspectos como por exemplo o armazenamento de dados Fatores como armazenamento de dados ou até mesmo consumo de energia elétrica são contornáveis quando nos referimos a supercomputadores mas o processamento tem algumas limitações que iremos discutir mais adiante Com a evolução dos processadores foi possível aumentar muito a velocidade de processamento de cada chip porém ainda temos limitações Um famoso processador da década de 1980 foi o Intel 386 em sua versão de lançamento tinha velocidade de 12 MHz o que para a época era uma revolução um processador comercial com tamanha velocidade 35 Para que possamos entender um pouco melhor o tamanho da evolução e das limitações que ainda temos é necessário conhecer a unidade de medida que utilizaremos para comparar os núcleos de processamento Essa unidade é o Hertz Hz cuja função é medir eventos por segundo Como as outras unidades de medida utilizadas na computação essa também faz uso frequente das abreviações para indicar múltiplo Então se quisermos nos referir a 1000 Hz podemos utilizar o múltiplo quilohertz que abreviado fica KHz em caso de 1000 Khz temos 1 MHz para 1000 MHz temos 1 GHz e assim por diante Voltando ao processador Intel 386 este tinha uma arquitetura de 32 bits o qual indica que cada instrução que era recebida em seu ciclo de processamento tinha o tamanho de 32 bits Já um processador de 64 bits recebe uma instrução com o dobro de tamanho do Intel 386 Uma curiosidade interessante sobre essas duas diferentes arquiteturas de processadores na computação pessoal em especial no Brasil a arquitetura de 32 bits foi amplamente utilizada até por volta de 2014 devido aos recursos tecnológicos e à necessidade de migração de vários sistemas porém o vídeo game Nintendo 64 lançado em 1996 levava esse nome por seu processador ser de 64 bits e clock de 93 MHz Isso mostra como a migração de arquitetura de computadores é mais complexa para computadores que possuem sistemas utilizados por muitos usuários diversificados Agora comparando o processador Intel 386 a um processador mais atual podemos usar como referência o Intel Core i910900KF que possui velocidade máxima de 53 GHz quase 4417 vezes mais rápido que o Intel 386 da década de 1980 e arquitetura de 64 bits Isso quer dizer que esse processador tem capacidade máxima de execução de 5300000000 instruções de 64 bits por segundo em cada núcleo sem utilizar uma técnica de aumento de desempenho chamada overclock Em uma busca rápida pela internet é possível encontrar diversos vídeos de pessoas realizando overclock em seus processadores Essa técnica é utilizada para forçar o processador a trabalhar em uma frequência acima da qual ele foi projetado para suportar Alguns vídeos mostram processadores indo além dos 7 GHz porém isso 36 exige um sistema de resfriamento muito avançado normalmente à base de nitrogênio líquido para que o processador não queime Um clock muito alto em apenas um núcleo do processador leva a temperaturas altíssimas o que gera um limitador de velocidade nos processadores modernos Como forma de contornar essa limitação de velocidade dos processadores modernos o que se fez para aumentar a velocidade dos processadores foi a inserção de mais núcleos de processamento dentro do mesmo processador O processador Intel Core i910900KF citado anteriormente possui 10 núcleos de processamento o que lhe permite a execução de diversas tarefas simultaneamente a uma velocidade máxima Com isso introduzimos o conceito de multiprocessamento Um computador pode processar diversas tarefas simultaneamente ou mesmo dividir uma tarefa maior em pequenas tarefas menores e enviar cada uma dessas tarefas para um processador diferente Dessa forma é possível aumentar o poder de processamento sem ter que aumentar de maneira exagerada o clock de cada núcleo Essa divisão pode acontecer em um mesmo processador com vários núcleos ou dividindo em vários processadores diferentes e cada um deles com vários núcleos Quando utilizamos vários processadores distintos a conexão entre eles pode ser denominada como fortemente acoplada ou fracamente acoplada Tanenbaum 2016 A fortemente acoplada é quando a ligação entre os processadores é feita por meio de barramento e a fracamente acoplada é quando a ligação entre os diversos processadores é feita por rede de computadores Figura 31 Tipos de processadores 37 Outra característica é se a estratégia utilizada para realizar o multiprocessamento é simétrico ou assimétrico Em um sistema simétrico todos os processadores são de mesma arquitetura e compartilham a memória já em multiprocessamento assimétrico cada processador tem sua própria memória e pode ser de arquiteturas diferentes 32 Multiprocessadores de memória compartilhada O multiprocessamento permite aumentar bastante a capacidade de processamento dos computadores Os supercomputadores são todos feitos por meio da junção de diversos processadores e organizados de maneira a resolverem tarefas em conjunto Existe um projeto que reúne uma lista dos 500 supercomputadores mais poderosos do mundo Essa lista pode ser conferida no site TOP 500 vide referências Confira a lista abaixo com os 5 supercomputadores mais potentes do mundo em novembro de 2020 Fonte TOP 500 2020 Figura 32 Os 5 supercomputadores mais potentes do mundo até novembro de 2020 38 Nela são apresentadas diversas características dos supercomputadores das quais podemos destacar algumas como o nome do supercomputador a nacionalidade o modelo do processador com clock de cada núcleo e a placa de vídeo utilizada Porém o que nos é mais interessante neste momento é reparar na quantidade de Cores traduzindo do inglês quer dizer núcleos que cada supercomputador possui O primeiro supercomputador da lista Supercomputer Fugaku tem 7630848 núcleos que trabalham em conjunto para entregar uma capacidade de 4420100 TFlops podendo teoricamente chegar a 5372120 TFlops em momentos de pico em contrapartida consome 29899 kW de energia para funcionar A unidade de medida TFlops indica quantas operações com pontos flutuantes o equipamento consegue realizar por segundo Um Flops acrônimo para floating point operations per second indica que pode ser realizado uma operação de pontos flutuantes por segundo Portanto se 1 KFlops são 1000 Flops então 1 TFlops é 1000000000000 Flops Para efeito de comparativo o processador Intel Core i910900KF tem capacidade de processamento de 16960 GFlops Quando nos referimos a computadores com diversos processadores e que trabalham em conjunto para realizar as tarefas estamos falando em processamento simétrico e assimétrico No caso de processamento simétrico todos os processadores devem ser iguais e trabalhar de maneira igualitária não possuindo um processador mestre e outros escravos normalmente encontrase na literatura com os termos em inglês master mestre e slave escravo Esse modelo de processamento exige que todos os processadores tenham acesso direto a mesma memória além de todos poderem receber demandas do próprio Sistema Operacional O programador que utilizar computadores com essa estratégia de multiprocessamento terá que tomar cuidados específicos para que seu software não permita que um mesmo processo vá para processadores distintos pois nesse modelo isso pode ocorrer Como não há nenhum processador checando o que os outros processadores estão recebendo a programação para esse tipo de multiprocessamento precisa de cuidados especiais MONTEIRO 2010 Porém tem como vantagem um melhor balanceamento 39 de carga entre os processadores evitando a sobrecarga de um dos processadores enquanto outro fica ocioso Com essa estratégia também é possível adotar uma fila de processos comum entre todos os processadores em que o escalonamento é feito direto do sistema operacional para o processador disponível no momento da requisição Além do multiprocessamento simétrico ou multiprocessamento de memória compartilhada existe o multiprocessamento assimétrico No multiprocessamento assimétrico também é possível dividir tarefas entre diversos processadores porém cada processador terá sua própria memória e cada um pode ser de um modelo diferente não havendo compartilhamento de memória entre eles A principal característica que diferencia os processadores é o fato de possuir apenas um processador mestre e todos os outros processadores serem escravos logo o único que terá acesso ao sistema operacional será o processador mestre o qual será responsável pela distribuição das tarefas a cada um dos processadores escravos Figura 33 Multiprocessamento Assimétrico Outra diferença do multiprocessamento com compartilhamento de memória simétrico em relação ao multiprocessamento sem memória compartilhada assimétrico é que nesse segundo modelo os processadores não precisam trocar informações entre eles a comunicação será somente entre o processador mestre e os escravos da qual dois processadores escravos nunca irão precisar troca dados 40 No quesito de tolerância a falhas caso um processador mestre pare de funcionar um dos processadores escravos irá assumir o lugar dele e caso algum processador escravo pare de funcionar somente irá sair da fila de escalonamento dos processos que o processador mestre gerencia Outra vantagem do multiprocessamento assimétrico é a facilidade em desenvolvimento de sistemas para ele pois tem um processador mestre gerenciando a fila do escalonador de processos Isso fica transparente ao programador não demandando nenhum controle especial por estar usando multiprocessamento 33 Multicomputadores de troca de mensagens Um sistema distribuído é uma coleção de computadores independentes entre si que se apresentam ao usuário como um sistema único e coerente No sistema distribuído diversos computadores independentes entre si são interligados e fornecem serviços de uma maneira transparente ao usuário que não sabe qual ou quais dos computadores interligados está atendendo a sua solicitação Assim a computação distribuída consiste em adicionar o poder computacional de diversas máquinas interligadas por uma rede de computadores Essa união tem como objetivo compartilhar a execução de tarefas conhecida como sistema distribuído Para que o sistema seja considerado distribuído no momento em que um usuário fizer qualquer tipo de solicitação ele não deve passar ou mesmo visualizar o endereço do computador que está realizando a tarefa Isso implica em uma apresentação única ao usuário mostrando uma real distribuição do serviço a ponto de não ser possível identificar qual dos nós está sendo responsável pela requisição Existem vários exemplos de sistemas distribuídos que utilizamos em nosso dia a dia Talvez entre os mais famosos estejam os compartilhadores de arquivos do tipo P2P peer to peer Esse é um modelo famoso e que em teoria segue claramente os conceitos de sistemas distribuídos Redes como gnutella2 e eDonkey fazem uso de aplicativos para compartilhamento de arquivos entre vários dispositivos distintos e independentes de maneira que se em algum momento um dos nós falhar outros computadores poderão assumir o seu lugar e o usuário nem percebe essa alteração 41 Ao ingressar sua máquina em uma rede do tipo qualquer pessoa que esteja na rede poderá fazer solicitação a sua máquina igualmente você poderá fazer solicitação a qualquer máquina pertencente à rede sem necessidade alguma de passar endereços específicos ou mesmo saber onde está localizado o nó que está realizando as tarefas no momento Outra característica interessante das redes P2P que fazem parte das definições de sistemas distribuídos é a heterogeneidade que independe do sistema operacional instalado em cada um dos nós Estes conseguem ter comunicação e troca de conteúdo para realização da tarefa necessária de maneira a desconsiderar o sistema operacional Os nós fazem todas as trocas de mensagens por meio de uma rede de computadores usando uma camada intermediária que podemos chamar de middleware Essa parte é a responsável pela real distribuição das tarefas A denominação de multicomputador é aplicada a sistemas distribuídos que são compostos por processadores com suas próprias memórias Isso possibilita que o sistema distribuído seja de fácil escalabilidade O fato de cada processador do multicomputador possuir memória própria faz com que nenhum processador precise acessar endereçamentos de memória compartilhados com outros processadores mas para garantir o sincronismo entre todos é feita a comunicação interna do sistema por meio de troca de mensagens aumentando a robustez do sistema como um todo e melhorando a tolerância a falhas o que facilita uma computação de alto desempenho e alta disponibilidade O hardware necessário para montar um multicomputador pode ser simples necessitando apenas de processadores memórias e uma interface de rede para realizar a conexão entre todos os equipamentos Com isso os custos de montagem do sistema são reduzidos e se permite adição de mais poder de processamento sempre que necessário Existem diversas tecnologias para interconexão dos computadores ligados ao sistema de multicomputadores como se pode conferir na figura abaixo TANEMBAUM 2016 42 Fonte TANENBAUM 2016 Figura 34 Tecnologias para interconexão dos computadores ligados ao sistema de multicomputadores a Um comutador simples topologia em que todos os computadores do multicomputador se ligam a apenas um equipamento por exemplo um switch e trocam mensagens entre eles b Um anel simples cada computador tem dois fios conectados um que o liga ao computador da esquerda e outro que o liga ao computador da direita não precisa de nenhum equipamento específico para realizar a interconexão possui baixa tolerância a falhas c Uma grade também chamada de malha tem a vantagem da distância máxima entre dois computadores ser a raiz quadrada da quantidade de computadores na rede possui boa tolerância a falhas d Um toro duplo uma variação da grade sendo uma topologia bem parecida porém com ligação entre as margens o que diminui ainda mais a distância máxima entre os computadores e aumenta mais ainda a tolerância a falhas 43 e Um cubo uma topologia tridimensional com custo de implantação elevado mas com alta tolerância a falhas f Um hipercubo 4D um cubo tetradimensional constituído por dois cubos tridimensionais com os nós correspondentes conectados Cada uma das topologias tem suas características positivas e negativas mas de forma geral quanto maior a tolerância a falhas e maior o desempenho na troca de mensagens maior o custo também 34 Introdução ao processamento paralelo Nos computadores modernos é possível processar diversos programas simultaneamente havendo apenas um processador ou vários processadores Porém se houver apenas um processador terão que ser adotadas estratégias especiais para isso dar certo não permitindo processamento paralelo mas somente concorrente A principal estratégia para processar diversos programas simultaneamente é a divisão em processos O processo é uma abstração do programa em execução que permite a capacidade de pseudoparalelismo na execução de diversas tarefas ao mesmo tempo ainda havendo apenas uma CPU Essa característica de um ambiente permitir a execução de múltiplos processos ao mesmo tempo é chamada de multiprogramação Em um ambiente multiprogramado o sistema operacional chaveia o processo que está na CPU a todo o momento ou seja efetua a troca do processo disponibilizando algumas dezenas de milissegundos de processamento a cada programa em execução de modo que nenhum processo fique sem ter sua necessidade atendida Devido ao fato de cada processo ficar apenas alguns milissegundos na CPU e depois entrar outro processo dizemos que é um pseudoparalelismo isto é não se executam diversos processos paralelos na CPU mas há uma troca rápida do processo que está sendo executado no momento gerando a sensação de que vários processos estão em execução simultaneamente No entanto o paralelismo real só pode ocorrer em 44 sistemas distribuídos que possuam diversos processadores que trabalhem em conjunto de forma transparente para o usuário sendo que cada processador ficará responsável por um processo diferente por um determinado tempo O modelo de dividir uma mesma CPU entre vários processos de maneira que cada processo entende ter uma CPU exclusivamente sua mas na verdade o processador é dividido em diversas CPUs virtuais é conhecido como modelo de processos sequenciais Os projetistas de sistemas operacionais modernos utilizam dessa técnica para poderem implementar ambientes multiprogramados Para que seja possível vários processos dividirem o mesmo processador cada processo tem fluxo de controle de processo ou seja seu próprio contador de programa lógico independente dos outros processos A CPU também tem um contador de programa físico que será utilizado por todos os processos que passarem por ela Então a cada vez que um processo entra na CPU ele é processado por determinado tempo o processador faz sua contagem no contador de programa físico e quando acabar o tempo desse processo a ser executado ele sairá do processamento Porém seu contador de programa físico será atualizado para a posição na qual o contador de programa físico estava no momento da saída do processo Por sua vez quando o próximo processo entrar em execução a CPU iniciará seu contador de programa físico a partir do contador de programa lógico do processo dando continuidade exatamente de onde ele estava quando saiu do processamento da última vez possibilitando que todos os processos possam entrar e sair do processador sem que haja perda ou reprocessamento de qualquer instrução a ser executada pelo programa Com isso é gerado um ambiente de processamento concorrente Já em um sistema de processamento paralelo é possível que diversos processos estejam em execução exatamente ao mesmo tempo sem concorrer pelo menos processador Mas esse modelo exige a utilização de diversos processadores distintos para realizar a tarefa sendo que cada processador irá ficar responsável por um ou mais processos caso ele fique com mais de um seguirá a mesma estratégia de processamento concorrente porém só para seus próprios processos não impedindo o paralelismo em relação aos outros processadores 45 35 Tendências tecnológicas no mercado de computadores A computação é uma área muito nova se comparada com diversas outras Na administração são utilizados conceitos que puderam amadurecer por séculos Na matemática e na filosofia são discutidos problemas que têm milhares de anos Já na computação moderna temos apenas algumas décadas de estudos e ainda estamos realizando diversos experimentos para identificar quais a melhores soluções para determinados casos Algumas soluções vêm se mostrando viáveis para tipos específicos de problemas o que nos leva a crer que serão as tendências a serem seguidas nos próximos anos e provavelmente nas próximas décadas Uma das tendências mais fortes de mercado é a distribuição do processamento entre vários equipamentos para aumento da capacidade dos processadores Isso não só para realização de tarefas únicas mas principalmente para tarefas distribuídas Com o avanço das tecnologias móveis e portáteis em muitas situações é mais fácil utilizar dezenas de pequenos processadores em vez de um supercomputador Além do avanço dos computadores as redes para transmissão de mensagens também evoluíram muito o protocolo LTE também conhecido como 4G de redes móveis de comunicação tem potencial para velocidade máxima de 100 Mbps Considerando esses avanços na arquitetura de computadores e nas redes de comunicação é possível identificar uma tendência das coisas cada vez mais começarem a ter seus próprios processadores e seu próprio acesso à internet Esse modelo é chamado de internet das coisas IoT do inglês Internet of Things O conceito de IoT visa justamente o ponto de distribuir tarefas a pequenas coisas do cotidiano e elas transmitirem dados a um servidor central Hoje em dia já se fala em sensores agrícolas espalhados por grandes extensões de terra coletando dados sobre o solo clima e a evolução das próprias plantas para enviar ao servidor central que consolidará todos os dados mas tendo recebido uma coleta préprocessada 46 É comum ouvir falar em pontos de coleta de dados que fazem uso de Arduino ou Raspberry para realizar a coleta dos dados e um primeiro processamento com baixo custo e grande efetividade Esses são equipamento bem populares e de baixo custo O Arduino é famoso por ter componentes que podem ser comprados separadamente por um valor bem baixo porém normalmente sua capacidade de processamento é quase nula servindo mais para uma coleta e organização dos dados antes do envio a um servidor central Figura 35 Placa Arduino O Raspberry também é utilizado para montar circuitos ou sensores personalizados por meio de componentes isolados porém esse tem maior custo em contrapartida pode oferecer um poder de processamento semelhante a um computador de mesa dependendo do investimento que estiver disponível para a sua aquisição No caso do Raspberry pode ser possível até a instalação de sistemas operacionais em seus equipamentos podendo fazer uso de recursos e programas avançados no próprio equipamento de coleta de dados Esse modelo pode ser interessante para gerenciamento de catracas de acesso por exemplo 47 Fonte Zoltan Kiraly Shutterstockcom Figura 36 Placa Raspberry Nas tendências tecnológicas o IoT promete ser de grande valor para o mercado corporativo e ajudar muito no processo de coleta de dados e transmissões de informações em tempo real ajudando tomadas de decisões mais rápidas e assertivas pois as informações devem ser sempre a base para a tomada de qualquer decisão em uma empresa Conclusão Neste bloco consolidamos nosso conhecimento sobre diferentes estruturas de processamento das estratégias mais básicas até as mais avançadas Vimos que o processamento centralizado tem limitações físicas de velocidade e para contornar essas limitações e aumentar o poder de processamento dos computadores são adotadas diferentes estratégias para a divisão do processamento entre vários processadores Cada uma dessas estratégias possui vantagens e desvantagens sendo necessário conhecer os diversos modelos para ajudar na decisão de qual adotar em um cenário real baseado nas características de cada uma 48 REFERÊNCIAS MACHADO F B MAIA L P Arquitetura de Sistemas Operacionais Rio de Janeiro LTC 5 ed 2017 MONTEIRO M Introdução à Organização de Computadores Rio de Janeiro LTC 5 ed 2010 TANENBAUM A S Sistemas Operacionais Modernos São Paulo Pearson 4 ed 2016 49 4 FUNDAMENTAÇÃO DOS PRINCIPAIS CONCEITOS RELATIVOS À ÁREA DE SISTEMAS OPERACIONAIS Neste bloco vamos compreender os conceitos básicos de um Sistema Operacional ver suas características e as partes que compõem os principais Sistemas Operacionais modernos Após essa compreensão vamos analisar os serviços que um Sistema Operacional oferece ao usuário e entender como ele gerencia diversos processos em um ou vários processadores Vamos ver também outra característica importante de Sistemas Operacionais que é resolver problemas cotidianos de um programador como por exemplo dois processos acessando o mesmo espaço de memória e isso seria um dos problemas clássicos que devem ser resolvidos Além disso vamos observar todas as camadas de abstração de um Sistema Operacional 41 Introdução ao estudo de Sistemas Operacionais Estrutura de um Sistema Operacional De maneira simplista um Sistema Operacional é um software que é executado em diversos sistemas computacionais tais como os computadores de mesa celulares servidores etc Contudo para melhor compreensão do que é um Sistema Operacional devemos entender as razões que levaram a sua criação Imagine que você deseja criar um aplicativo para manipulação de imagens em disco rígido Suponha ainda que esse programa será executado diretamente sobre o hardware sem o auxílio de um Sistema Operacional Para desenvolver essa aplicação é necessário que você estude todos os padrões e tecnologias de disco disponíveis no mercado como o padrão SATA por exemplo que entenda todos os comandos e operações de acesso compreenda os protocolos de monitoramento do disco como a tecnologia SMART para contornar possíveis falhas de hardware e distinga as diferenças entre equipamento dos diversos fabricantes 50 Ou seja simples operações como as de leitura e escrita em disco se transformam em tarefas de altíssima complexidade para o programador Note ainda que sem um auxílio de um sistema operacional sua aplicação deverá lidar sozinha com a programação de todos os possíveis periféricos envolvidos como mouse teclado monitores entre outros O que é em suma quase impossível Para lidar com esses problemas o Sistema Operacional foi desenvolvido com o intuito de fazer o gerenciamento dos componentes do sistema ao mesmo tempo que prove uma interface amigável para acesso aos seus serviços tanto para o usuário abstrações como as pastas de arquivos os atalhos e menus quanto para o programador de aplicações chamadas de sistema que realizam por exemplo a leitura e escrita em disco rígido Os componentes do sistema podem ser tanto de hardware processador memória e monitores quanto de software programas drivers e processos Na maioria dos Sistemas Operacionais modernos podemos identificar rotinas relacionadas à interface com o usuário rotinas relacionadas aos serviços e funcionalidades do sistema as chamadas rotinas nãonúcleo nãokernel e as do núcleo kernel que realizam tarefas essenciais para as nãokernel As rotinas do núcleo são executadas em um modo de operação especial conhecido como modo kernel que possui acesso privilegiado e seguro ao processador As rotinas restantes são executadas em modo usuário que é um modo não protegido As aplicações do usuário inclusive também rodam em modo usuário Vamos ver agora como essas rotinas são organizadas nas estruturas mais conhecidas de Sistemas Operacionais As principais estruturas são Sistemas Monolíticos Sistemas em Camadas Micronúcleo Microkernel Máquina Virtuais e o modelo Cliente servidor TANENBAUM 2016 Vejamos cada uma delas a seguir Os Sistemas Monolíticos são formados por um conjunto de rotinas que podem se comunicar umas com as outras livremente e a qualquer instante para realizar algum serviço Todas as rotinas são visíveis entre si não havendo nenhuma restrição de comunicação entre elas Para facilitar essa interação cada rotina possui uma interface 51 bem definida em termos de entrada e saída de dados As rotinas são compiladas separadamente e depois agrupadas por meio de um ligador linker MONTEIRO 2010 em um único arquivo objeto binário executável que será executado em modo kernel Ou seja vemos que em um sistema monolítico todas as rotinas de sistema fazem parte do núcleo não havendo nenhuma distinção entre rotinas kernel e nãokernel quanto ao modo de execução É o modelo mais antigo e o mais comum de estrutura Algumas estruturas de dados podem ser incorporadas em Sistemas Monolíticos tais como registradores e pilhas de escalonamento No caso das pilhas são armazenados dentro delas os parâmetros da rotina que realizará o serviço Chamada de Sistema requisitado pela aplicação do usuário ao mesmo tempo em que um ponteiro para essa rotina é guardado em uma tabela à parte Posteriormente uma instrução de armadilha trap de desvio é acionada para a execução dessa rotina que faz com que o processador mude para o modo kernel Quando a rotina for concluída o Sistema Operacional retorna para o modo não protegido e entrega novamente o controle para a aplicação do usuário Um sistema em camadas é constituído por uma hierarquia de níveis onde cada nível é responsável por realizar uma tarefa distinta para o nível imediatamente superior OLIVEIRA CARISSIMI TOSCANI 2010 Desse modo como os serviços do sistema estão isolados uns dos outros é possível fazer o desenvolvimento de novos serviços e camadas com muito mais facilidade sem ter que alterar toda a estrutura do Sistema Operacional Além disso é muito mais simples para fazer identificação e correção de eventuais erros O sistema THE idealizado por E W Dijkstra e seus estudantes em 1968 foi o primeiro sistema em camadas a ser construído Possuía seis camadas diferentes cada uma com papéis distintos O processamento era feito em lotes batch ou seja o processador executava a próxima etapa apenas depois de concluir a etapa atual As camadas são organizadas resumidamente da seguinte forma note que os serviços são fornecidos no sentido da camada inferior à superior 52 Camada 5 É o próprio operador do sistema usuário Camada 4 Onde os programas do usuário estão localizados Camada 3 Faz o gerenciamento dos dispositivos de entrada e saída Um buffer memória para transferências temporária era alocado para as trocas de dados entre os dispositivos do sistema Observe que um console também é considerado um dispositivo de entrada e saída Camada 2 Responsável pela comunicação entre o console do usuário e os processos em execução Cada processo tinha seu próprio console na Camada 3 Camada 1 Faz o gerenciamento dos dispositivos de memória Na época o computador para o qual o sistema de camadas foi desenvolvido continha dois tipos de memória uma principal e uma memória de tambor magnético responsável por fazer paginação uma página são trechos de instruções de um programa que não são executados em um dado momento mas que podem ser necessários no futuro dependendo do fluxo de execução que o programa tomar A camada 1 é responsável por abstrair essa memória de tal forma que do ponto de vista da camada 2 o processo é executado em uma memória só Camada 0 Lida diretamente com os recursos do processador alternando entre os processos de execução quando interrupções são acionadas ou quando temporizadores chegam ao fim Fornecia também multiprogramação de tal forma que os processos em execução não precisavam se preocupar com problemas de concorrência Com relação ao Micronúcleo microkernel ele é uma estrutura em que o papel do kernel é reduzido a pequenos serviços essenciais executados em modo kernel Os outros serviços são divididos em uma ou mais camadas diferentes como rotinas executadas em modo usuário Essa subdivisão foi pensada como uma maneira de reduzir possíveis falhas graves de sistema 53 Por exemplo imagine um sistema dividido em apenas duas camadas uma em modo usuário que contém vários módulos servidores por exemplo um servidor de arquivos um servidor de processo e um servidor de rede e um microkernel que contém as rotinas mais sensíveis ao sistema Nessa estrutura por exemplo as chances de falha de uma simples rede derrubar todo o sistema são mínimas pois poderá afetar na sua maior parte apenas os serviços do servidor de rede Ou seja as falhas podem ser contidas dentro do módulo em que ocorreu Já a estrutura de Máquinas Virtuais VM do inglês Virtual Machine é um modelo que cria um nível de abstração entre o Sistema Operacional e o hardware do sistema Dentro desse nível cópias virtuais do hardware máquinas virtuais são criadas com seus elementos tais como processador memória dispositivos de ES entrada e saída modo kernel e modo usuário e todos os outros necessários Cada cópia pode inclusive rodar um Sistema Operacional diferente em cada uma e ao mesmo tempo coexistirem em paralelo multiprogramação O monitor da Máquina Virtual Virtual Machine Monitor VMM é o responsável por oferecer esses recursos e opera diretamente sobre o hardware do sistema Vários sistemas posteriores se utilizaram da ideia como as JVM máquina virtual para execução de programas feitos em Java e os servidores em nuvens que muitas vezes são máquinas virtuais dentro de um único ambiente e que podem fornecer ambientes distintos do sistema original que hospeda essas máquinas exemplos muito utilizados O modelo clienteservidor é uma extensão do sistema em camada com a diferença de que há distinção entre um processo cliente o qual solicita um serviço e um processo servidor que fornece um serviço A troca de mensagens entre esses processos são feitas via kernel que é o responsável pela comunicação Os processos cliente e servidor são executados em modo usuário enquanto o kernel é executado em modo kernel A comunicação pode ser realizada via barramento interno como também pela rede neste caso os processos cliente e servidor estariam localizados em computadores diferentes 54 42 Serviços de Sistemas Operacionais Os Sistemas Operacionais disponibilizam serviços para os usuários por meio de interfaces gráficas por interpretadores de comandos terminal do Linux e o prompt do DOS no Windows por exemplo entre outras formas Já para os programas esses serviços são oferecidos por rotinas escritas em linguagem assembly chamadas de sistemas Quando uma chamada de sistema é realizada o controle da execução é passado para o kernel assim como o status da execução é alternado para o modo seguro Toda vez que um programa necessita realizar uma instrução privilegiada por exemplo ler um arquivo em disco é necessário que a chamada de sistema correspondente seja feita As chamadas são convocadas por uma instrução de interrupção de desvio conhecida como Trap que possui os mesmos parâmetros da rotina desejada Um módulo de despacho dispatch utiliza esses parâmetros para identificar qual é a chamada de sistema correta as chamadas são armazenadas dentro de uma tabela com ponteiros que apontam para cada uma delas Feito isso um tratador de chamadas é acionado e o resultado computado é armazenado na memória As chamadas de sistemas são diferentes dependendo do Sistema Operacional estudado Elas podem diferir em funcionalidades quantidade e tipos de parâmetros Além de tudo alguns sistemas podem fornecer mais chamadas do que outros Muitas linguagens de programação fornecem funções e bibliotecas que executam as chamadas de sistemas diretamente como por exemplo as linguagens CC no Linux No Windows o acesso aos serviços é feito pela API do Windows32 A tabela a seguir mostra alguns exemplos de funções desses dois ambientes Perceba que nem todas as chamadas são implementadas em ambos 55 Tabela 11 Chamadas de Sistema Operacional para Linux e Windows Fonte elaborado pelo autor 43 Conceitos de Processo e Threads Para entender o que é um processo devemos antes compreender a diferença entre processos e programas Um programa de computador nada mais é do que um conjunto de instruções em linguagem de máquina organizadas de modo a produzir tarefas úteis ao usuário Os programas são comumente armazenados em memórias não voláteis de armazenamento duradouro como os discos rígidos memórias flash cartões SD entre outras Por outro lado um processo são trechos de programas que são executados em um dado momento como por exemplo instâncias de programas em execução As instruções de um processo são armazenadas em memórias voláteis de armazenamento temporário como as memórias RAM e cache antes de serem executadas pelo processador A relação entre programas e processos são de nn muitos para muitos um programa pode ter muitos processos abertos enquanto um processo pode ser composto por vários programas Devido à sua natureza dinâmica um processo também é formado por dados de entrada dados de saída e um estado Os estados são criação new execução running espera waiting pronto ready e encerrado finished As informações de um processo são guardadas em uma região de memória chamada PCB Process Control Block conforme pode ser observado na figura logo abaixo Vamos entender um pouco as características dos estados dos processos 56 New Processos são criados em várias circunstâncias diferentes Por exemplo quando o sistema operacional é inicializado quando uma chamada de sistema de criação é solicitada por um algum processo ou quando o usuário inicia algum programa Assim sendo os processos podem ser de usuário ao abrir um programa ou de sistema serviços que rodam em segundo plano sem o conhecimento do usuário no Linux são conhecidos como daemons e no Windows como serviços Nos sistemas UNIX por exemplo um processo pode criar um processo filho ao realizar uma chamada de sistema com a função fork O filho pode ou não ser uma cópia exata do pai Running O sistema operacional transfere o controle do processador para o processo realizar alguma atividade Waiting O processo é colocado em estado Waiting quando aguarda por algum evento Por exemplo ao requisitar um dado no disco o processo espera por um sinal de interrupção do sistema para alertálo quando a solicitação for concluída Além disso também é possível entrar nesse estado ao utilizar semáforos por intermédio das chamadas de sistema block ou pause Ao concluir o evento o processo é alternado para o estado Ready Ready Ocorre quando o tempo para utilizar o processador pelo processo se esgota e outro processo deve ocupar o seu lugar escalonamento Nesse caso o processo aguarda até a CPU estar livre novamente Finished É o momento em que o processo termina sua execução Isso acontece quando a tarefa é completada sem problemas e o processo chama voluntariamente uma chamada de sistema para encerramento ex exit no UNIX ocorrendo algum erro fatal bug ou quando um sinal de encerramento é mandado por outro processo por uma chamada de sistema kill no UNIX TerminateProcess no Windows 57 Fonte elaborado pelo autor Figura 41 Estados de um processo Os processos necessitam de um tempo determinado para concluírem as suas tarefas Alguns deles utilizam mais o processador processos orientados à CPU CPUbound Outros fazem muitas operações de ES de dados orientados à ES IObound De todo modo um processo deve aguardar em uma fila de espera caso o recurso de harware solicitado já esteja em uso e escolher qual processo será executado pela CPU e por quanto tempo é papel do escalonador de processos As tarefas do escalonador são cruciais para o bom desempenho do sistema Por exemplo um sistema em que a CPU é utilizada por apenas um processo por longos períodos perde a sua responsividade capacidade de resposta ao usuário Ou seja pode se tornar muito lento Um bom escalonador deve fazer o melhor balanceamento de carga possível de acordo com o tipo de sistema que será executado Escalonadores podem ser subdivididos em dois tipos básicos Os que utilizam algoritmos preemptivos o processo é executado por um tempo máximo sendo trocado por outro quando esse tempo termina Os que utilizam algoritmos nãopreemptivos esperase que o processo libere a CPU voluntariamente ou que seja colocado em Waiting por algum evento ES semáforos e interrupções de sistema 58 Já os principais tipos de sistemas são Sistemas em Batch as tarefas que serão executadas são postas em filas Nesses sistemas os usuários não esperam por responsividade respostas rápidas Exemplo antigos sistemas com cartões perfuráveis Sistemas Interativos são sistemas que esperam que os usuários interajam constantemente com eles Exemplos celulares e computadores de mesa Sistemas em Tempo Real são os sistemas críticos as repostas devem ser dadas quase que imediatamente Exemplos piloto automático de carros Em situações de multiprogramação há casos em que duas threads ou dois processos precisam acessar um mesmo valor porém para isso deve haver uma ordem se não o valor acessado pode ser alterado somente após a leitura ou uma alteração sobrepor a outra Como exemplo podemos falar sobre a compra de ingressos de cinema com cadeiras reservadas se duas pessoas forem realizar a compra em um mesmo instante em terminais diferentes e os dois efetivarem no mesmo momento somente um poderá ficar com o assento escolhido esse é um tipo de condição que envolve o controle de acesso simultâneo a um determinado dado Para resolver esse tipo de problema o Sistema Operacional marca o espaço de memória como em uso e será alterado por todos que estão utilizando esse dado simultaneamente Esse tipo de controle é conhecido como monitor situação em que caso necessário há exclusão mútua de todos os espaços acessados de maneira concorrente Outra estratégia para controle de processos concorrentes é a de semáforo onde é determinado um número máximo de processos que podem acessar um dado específico a cada novo processo que o acessar irá contar mais um a cada processo que deixar de acessar ele irá subtrair um caso atinja o valor máximo determinado em sua inicialização esse dado será bloqueado e não poderão ter novos acessos 59 Antigamente os Sistemas Operacionais simulavam paralelismo intercalando a execução de vários processos em conjunto Por exemplo um processo A executava um comando em um ciclo de instrução no próximo ciclo era a vez do processo B e no ciclo seguinte o processo A novamente Assim se um programador quisesse resolver um problema concorrentemente em pseudoparalelismo o processo pai deveria criar vários processos filhos e delegar várias tarefas diferente à cada um e as instruções de cada processo seriam intercaladas na CPU Essa técnica é conhecida como multiprogramação Contudo o tempo total execução equivalia à soma dos tempos dos dois processos Contudo em um sistema moderno os processos podem ter mais de um fluxo thread de execução nos antigos sistemas apenas um Isso significa que o conjunto de instruções de um processo pode ser executado ao mesmo tempo em threads distintas que fazem parte do mesmo espaço de endereçamento desse processo As threads são vantajosas nesse sentido porque existe uma menor sobrecarga overhead da memória afinal não é necessário alocar mais memória para a criação de novos processos filhos tudo é feito dentro do mesmo processo Além disso há também um menor overhead de CPU já que a quantidade de escalonamento de processos é bastante reduzida lembrese de que fazer o escalonamento de processos é uma tarefa muito custosa para o Sistema Operacional Outra grande vantagem é que a sincronização das threads é feita internamente ao processo reduzindo a necessidade de fazer chamadas de sistema Por fim com as threads o paralelismo é real em sistemas com múltiplas CPU por exemplo o tratamento de múltiplas operações de ES podem ser feitos ao mesmo tempo 60 44 Problemas Clássicos de Sincronização de Processos Alocação de Recursos e Deadlocks Problema do jantar dos Filósofos Sobre uma mesa de jantar redonda estão postos cinco pratos de espaguete cada qual com um único garfo como você pode ver na figura abaixo Cinco filósofos desejam saborear a iguaria e se sentam à mesa Todavia os filósofos percebem que o espaguete está escorregadio demais e portanto difícil de comer É proposto então que se usem 2 garfos para comer a refeição Cada filósofo tentará pegar um garfo à sua esquerda e outro à direita Caso consiga dois filósofos se alimentarão enquanto os outros ficarão pensando Os filósofos só podem comer por um pequeno instante de tempo devendo colocar os garfos à mesa logo em seguida Fonte elaborado pelo autor Figura 42 Jantar dos filósofos com 5 refeições e 5 talheres Essa é uma analogia à um problema clássico de sincronização em Sistemas Operacionais que envolve Deadlock Um ou mais processo impedidos de continuar devido a execução de um outro processo conflitante Starvation Processos executam mas não progridem por não conseguirem tempo de processamento suficiente 61 Problema do barbeiro Em uma barbearia N um número indeterminado cadeiras são colocadas para os clientes esperarem enquanto o barbeiro faz o corte de quem chegar primeiro Quando o salão está vazio o barbeiro se senta e dorme na cadeira de barbeiro Se um cliente chegar durante a sua soneca precisará acordar o barbeiro para ser atendido Os clientes seguintes ocupam as cadeiras restantes Caso todas as cadeiras estejam ocupadas o cliente vai embora Esse problema envolve situações de race conditions em Sistemas Operacionais Ou seja condições de disputa pelo processador de forma que sempre o mantenha ocupado e nunca com mais processos do que ele consegue gerenciar Seria análogo a não deixar o barbeiro dormir não deixar o processador ocioso e também não deixar faltar cadeiras de espera mais processos do que o processador conseguirá processar em tempo útil Problema dos LeitoresEscritores Vários processos acessam uma base de dados simultaneamente Existe dois tipos de processos diferentes um leitor e outro escritor O problema envolve fazer com que apenas um processo de escrita modifique a base em um determinado instante Além disso não pode ter nenhum processo leitor acessando a base enquanto uma operação de escrita está em andamento Como resolver essa situação Esse é um típico problema que pode ser resolvido com os conceitos de semáforo e monitor onde será controlado o número máximo de acessos simultâneos a quem terá a prioridade de alteração em cada momento será replicado mutuamente a todos além de garantir que uma alteração seja efetuada por um dos processos que está fazendo acesso à base 62 45 Camadas de Abstração de Sistemas Operacionais Camada de Aplicação Gerenciamento de arquivos Bibliotecas e Kernel As camadas de abstração dos Sistemas Operacionais são modelos lógicos que dividem e classificam as tarefas dos sistemas em funções correlacionadas Vimos ao longo desse bloco várias características da Camada de Gerenciamento de arquivos das Bibliotecas e do Kernel Estudaremos agora a Camada de Aplicação A camada de aplicativos encontrase no topo de qualquer modelo de arquitetura de um Sistema Operacional É nela que ocorrem as principais interações entre os dispositivos de computação e o usuário final MACHADO 2017 Os Sistemas Operacionais fornecem interfaces que estão presentes nessa camada para que os recursos dos dispositivos sejam eles de hardware ou de software possam ser manipulados pelo usuário As principais interfaces utilizadas são Interface de Linha de Comando CLI Command Line Interface ou Terminal de Comandos Um tipo de interface onde os componentes do sistema são representados por elementos textuais A interação é feita diretamente por comandos digitados em um Prompt através de um teclado que é o único dispositivo físico envolvido na comunicação Foi muito popular nos primórdios da computação onde periféricos como o mouse ainda não existiam Os comandos são analisados e executados por um interpretador chamado shell que intercede na comunicação com os componentes restantes do sistema tais como o Kernel Os mais conhecidos atualmente são o Bash Linux e o DOS Windows mas existem muitos outros É a forma principal para acesso e gerenciamento de dispositivos remotos entre os quais se destacam os servidores Interface Textual É um outro tipo de interface baseada em textos mas que possuem símbolos comuns aos ambientes gráficos como janelas menus e ícones De modo geral é um aplicativo executado por um interpretador de comandos que utiliza os elementos textuais para compor as imagens Por exemplo em ambientes gráficos a menor unidade de 63 informação visual é um pixel Todos os elementos exibidos na tela são formados por arranjos de pixels coloridos e dispostos de modo a formar imagens De forma semelhante uma Interface Textual utiliza o espaço de um carácter como a menor unidade de informação visual e compõe as imagens pela combinação de caracteres de blocos coloridos e posicionados para formar os elementos gráficos Apesar de ser raro é possível encontrar esse tipo de interface nos instaladores de sistemas operacionais Interface Gráfica Também chamada de GUI Graphical User Interface Interface Gráfica do Usuário utiliza figuras gráficos e quaisquer outros símbolos visuais para criar abstrações que representam os componentes do sistema A interação com o usuário é feita por dispositivos como mouse teclado canetas telas touchscreen monitores etc Os dois principais componentes das GUI voltadas para o uso em Sistema Operacionais são os Gerenciadores que fornecem meios para representar e organizar o conteúdo visual gerados pelos programas de Janelas e os Gerenciadores de Arquivos que provêm mecanismos para acesso aos arquivos e programas instalados no sistema A principal vantagem em relação à Interface de Linha de Comando é permitir a execução de tarefas que seriam difíceis ou impossíveis de serem executadas como a edição de imagens e animações ou a reprodução de vídeos Uma desvantagem é que as interfaces se tornam complexas e de difícil compreensão à medida que aumenta a quantidade de tarefas que uma aplicação deve executar Além disso diferentemente das CLI que podem formar scripts por meio da concatenação de comandos uma interface gráfica dificulta a automação de tarefas rotineiras Assim a combinação de ambos os mecanismos torna a interação com o usuário mais robusta e eficaz Interface de Voz VUI Voice User Interface São interfaces cujos usuários utilizam a própria voz para recitar comandos e interagir com o sistema É um dos principais mecanismos de acessibilidade para pessoas com deficiência visual Todavia seu uso também vem crescendo entre o público comum por causa de novas aplicações para smartphones tablet e computadores de mesa que vêm se tornando cada vez mais populares 64 Conclusão Este bloco foi voltado ao estudo dos princípios dos sistemas operacionais falando um pouco sobre a evolução e os sistemas operacionais modernos com suas características e principais responsabilidades Os principais serviços do Windows e do Linux foram descritos e comparados entre eles mostrando os que são comuns aos dois e os que são específicos Nos foi apresentado o conceito de divisão de um mesmo processo em diversas threads para possibilitar o processamento paralelo e concorrente para um mesmo programa Além de discutirmos os problemas clássicos que um Sistema Operacional precisa resolver como por exemplo o deadlock Além de nos ser apresentada as camadas de abstração de um Sistema Operacional REFERÊNCIAS MACHADO F B MAIA L P Arquitetura de Sistemas Operacionais Rio de Janeiro LTC 5 ed 2017 MONTEIRO M Introdução à Organização de Computadores Rio de Janeiro LTC 5 ed 2010 OLIVEIRA R S CARISSIMI A S TOSCANI S S Sistemas Operacionais Porto Alegre Bookman 4 ed vol 11 2010 TANENBAUM A S Sistemas Operacionais Modernos São Paulo Pearson 4 ed 2016 65 5 ESTUDO DA ESTRUTURA DOS SISTEMAS OPERACIONAIS MAIS UTILIZADOS Neste bloco vamos abordar os principais Sistemas Operacionais utilizados na atualidade Vamos analisar Sistemas Operacionais para uso corporativo e para uso pessoal como Windows e Linux Também vamos estudar estruturas dos Sistemas Operacionais e como eles podem organizar seus arquivos Além disso vamos discutir sobre Sistemas Operacionais para dispositivos móveis e suas principais características e utilizações 51 Estudo do funcionamento do Sistema Linux O Linux é um Sistema Operacional de multiprocessos e multiusuários desenvolvido pelo estudante finlandês Linus Torvalds no início dos Anos 90 Seu kernel foi projetado para ser compatível com as versões do UNIX um Sistema Operacional com ambiente de programação bastante sofisticado e amplamente conhecido no meio acadêmico e empresarial Fonte Stanislaw Mikulski Shutterstockcom Figura 51 Tux o Pinguim utilizado como mascote do Linux 66 O UNIX possuía inúmeras versões customizadas por empresas e universidades que detinham os direitos de propriedade intelectual das suas variantes Esses sistemas eram caros e muitas vezes o uso era imposto apenas ao ambiente corporativo e universitário Ter um UNIX em um computador pessoal era praticamente impossível Esse cenário foi motivador para desenvolvimento do Linux A versão 001 do Linux foi lançada em setembro de 1991 e rapidamente disponibilizada através da recém popularizada internet Muitos programadores de todo o mundo aderiram voluntariamente ao projeto situação que é mantida até os dias atuais Além disso o Linux é disponibilizado sob os termos da licença GNU GPL que permitem que você possa copiar alterar e redistribuir o código do sistema um dos motivos pelo qual o Linux se tornou tão popular MACHADO MAIA 2017 Hoje em dia este é um dos ambientes de desenvolvimento preferidos dos programadores existindo inúmeras versões os chamados Linux flavors Sabores Linux que rodam praticamente em qualquer arquitetura de processador a probabilidade de você ter algum sistema Linux em casa é enorme A memória do Linux é controlada pelo subsistema do kernel chamado LMM Linux Memory Manager Gerenciador de Memória do Linux É encarregado por fazer a distribuição da memória entre os componentes do sistema de forma segura e em quantidades adequadas Dentre as suas responsabilidades podemos citar a implementação da memória virtual o mapeamento de arquivos dentro do espaço de endereçamento dos processos a alocação de memória para as estruturas do kernel e programas que rodam dentro do espaço do usuário A memória virtual em Linux é uma camada de abstração que simplifica os detalhes de funcionamento de hardware para os processos de níveis mais altos Cria mecanismos que promovem segurança às informações armazenadas e controle das comunicações entre processos Nela a memória destinada aos processos é dividida em quatro partes distintas A parte inferior é onde o código em linguagem de máquina de um processo em específico é armazenado Logo acima temos os dados inicializados como as variáveis estáticas e strings cadeias de caracteres Em seguida temos a região onde estão os dados não inicializados BSS Block Started by Symbol 67 A próxima região é a memória HEAP espaço reservado para fazer alocação dinâmica de memória realizada em tempo de execução Por fim temos a pilha região destinada às variáveis locais e para os parâmetros das funções e seus retornos Normalmente ela é encontrada no topo da memória dos processos e cresce de cima para baixo Os computadores e outros dispositivos possuem uma quantidade de memória RAM várias vezes menor em comparação às utilizadas para armazenamento nãovolátil Além disso é muito comum que os programas tenham tamanhos que excedam a quantidade de RAM disponível Assim os sistemas modernos utilizam uma técnica chamada de paginação de memória que consiste em carregar na memória RAM apenas à parte do programa que será executada no momento Se um processo precisar de dados que não estão na memória page fault o paginador pager do sistema deve buscar essa informação em disco paginação por demanda No Linux a memória é dividida em páginas de tamanhos fixos de 4KB Quando a RAM está cheia as páginas menos usadas dos processos são transferidas da RAM e destinadas à uma região especial de disco chamada área de troca swap Quando forem necessárias novamente essas páginas são recarregadas na memória No Linux e Unix tudo é um arquivo Diretórios são arquivos arquivos são arquivos e dispositivos são arquivos Dispositivos são geralmente referidos por módulos entretanto eles ainda são arquivos Para simplificação todos os dispositivos do Linux são tratados como arquivos e são indexados em um diretório especial chamado dev Assim o processo de ES EntradaSaída é simplificado pois as mesmas chamadas de sistemas para tratamentos de arquivos podem ser usadas para controlar qualquer dispositivo conectado ao sistema Por exemplo é possível utilizar as chamadas read e write para ler e escrever os dados vindos da placa de rede ao invés do disco rígido Os dispositivos podem ser de blocos ou de caracteres Os de blocos são aqueles que os dados armazenados podem ser acessados em blocos de tamanho fixo Podese ler um ou mais blocos ao mesmo tempo os blocos podem estar armazenados em regiões não contíguas e o fluxo de informação pode ser simultâneo em ambas as direções bidirecional Discos rígidos pendrives CDRoms são exemplos de dispositivos de 68 bloco Já os dispositivos de caracteres são aqueles que o acesso é feito sequencialmente em fluxos stream de bytes Quando um byte é lido ele não pode ser armazenado novamente na mesma posição pois o dispositivo avançou um byte à frente da posição atual São exemplos de dispositivos de caracteres os terminais e as portas seriais e paralela 52 Estudo do funcionamento do Sistema Windows O Microsoft Windows é uma família de Sistema Operacionais desenvolvida pela Microsoft que abrange sistemas criados para uso comercial doméstico e corporativo e que se estendem desde os clássicos computadores de mesa até aos servidores e dispositivos embarcados Iremos estudar conceitos do Windows relativos à gerenciamento de memória dispositivos de entrada e saída e gerenciamento de arquivos Muitos desses conceitos são comuns ao Linux Fonte Stanislaw Mikulski Shutterstockcom Figura 52 Windows o principal Sistema Operacional utilizado para computadores de mesa Esse Sistema Operacional é proprietário e pertence a Microsoft A estrutura do Windows é composta por duas camadas distintas Modo Usuário conjunto de subsistemas em que a comunicação é feita por trocas de mensagens local procedure call LPC Modo Kernel e Executivo formado por todos os subsistemas restantes que trabalham diretamente com o hardware 69 O Executivo é uma camada do modo Kernel que implementa os módulos incumbidos de disponibilizar os serviços básicos dos sistemas como os módulos de gerenciador de processos objetos segurança cache e ES O gerenciamento de memória do Windows é feito por um executável próprio do sistema que se encontra no executivo Acima do gerenciador de memória está o gerenciador de heap que possui as funções para alocar e desalocar a memória No Windows as páginas da memória podem estar em um de três estados possíveis Livre quando não está sendo utilizada por nenhum processo Se um processo fizer referência à uma página nesse estado será lançado um page fault Dedicada isto é quando instruções ou dados estão mapeados nela Reservadas que é quando as páginas não estão disponíveis para uso Para minimizar a quantidade de trocas com o disco rígido o Windows utiliza clusterização ou seja ao ocorrer um page fault o gerenciador de memória carrega o bloco com a página requisitada junto de algumas páginas ao redor pois a probabilidade que uma dessas páginas sobressalentes sejam solicitadas em seguida é muito grande Para decidir o momento para alocar ou remover uma página é utilizado um workset conjunto de trabalho limite máximo e mínimo quando o conjunto é menor que o workset uma página é adicionada quando maior uma página é removida O algoritmo de troca de página é dependente do tipo de arquitetura do processador Por exemplo as famílias de multiprocessadores da Intel utilizam as filas FIFO first in first out enquanto os processadores mono core utilizam LRU com algoritmo do relógio Agora veremos o básico sobre ES no Windows As solicitações de ES podem ser feitas tanto pelos processos do modo usuário quanto pelos processos do modo kernel As operações são computadas de forma assíncrona Em outras palavras um processo pode continuar outras tarefas normalmente até que sua a solicitação seja concluída 70 O gerenciador de processo do Windows define um pacote de ES que é uma estrutura de dados utilizada para comunicação com o sistema de arquivos e drives do dispositivo Esse pacote é chamado de IRP IO Request Packet Pacote de requisição de ES Quando uma solicitação é concluída o drive do dispositivo avisa o gerenciador de entrada e saída com uma interrupção de sistema Na indústria existe um padrão aberto para configuração de dispositivos e energia chamado ACPI Advanced Configuration and Power Interface Interface avançada de configuração e energia Esse dispositivo define interfaces para que qualquer Sistema Operacional possa fazer a descoberta de periféricos de forma independente do hardware além de fornecer mecanismos para monitorar e gerenciar o consumo de energia É implementado no Windows desde a versão do Windows 98 e permite aos dispositivos serem conectados na forma Plug and Play Conecte e Use sem a necessidade de que o usuário faça a instalação Todavia ainda é necessário que os drivers e periféricos das fabricantes forneçam suporte para tanto O Windows é compatível nativamente com vários formatos de sistema de arquivo Os mais conhecidos são os FAT FAT32 VFAT e NTFS Assim como o Linux o Windows também implementa o VFS que abstrai o hardware do sistema e fornece mecanismos para que os processos que rodam em alto nível possam fazer leitura e escrita dos dados nos diferentes dispositivos de armazenamentos O padrão hoje utilizado para a armazenar o próprio Windows é o NTFS com raízes no Windows NT MACHADO MAIA 2017 Esse modelo utiliza uma técnica de alocação chamada de alocação por extensão Semelhante ao Inode do Linux o NTFS também possui uma tabela para guardar as informações dos arquivos a MFT Master File Table Tabela de Arquivo Mestre São guardados nela os metadados dos arquivos como o nome carimbo de tempo permissões tamanho etc Conforme um arquivo precisa de espaço extra de armazenamento o NTFS aloca uma extensão de memória em disco por isso o nome alocação por extensão de acordo com a necessidade Essa memória pode ser contígua ou não Assim o sistema armazena também na MFT o bloco inicial do arquivo a quantidade de blocos e o número do bloco do arquivo nas respectivas extensões 71 Diferentemente do Inode existe apenas uma MFT no disco que possui todas as entradas dos arquivos A tabela cresce conforme é adicionado mais entradas de arquivos e dados das suas extensões Quando um arquivo é removido a entrada torna se disponível para reutilização mas o tamanho da MFT continua o mesmo Por causa disso o disco faz um esforço para que seja reservado um espaço inicial adequado para a MFT Além disso problemas de fragmentação impactariam todo o sistema caso essa memória reservada para a MFT não fosse contígua Por isso evitase que a MFT cresça em tamanho além do proposto para evitar que partes dela sejam alocadas em outras regiões 53 Demonstração dos processos de gerenciamento de memória gerenciamento de arquivos De uma maneira geral a grande maioria das funcionalidades de um computador pessoal nas funções cotidianas de um usuário comum precisam armazenar algum tipo de informação para ser utilizada futuramente Até mesmo em tarefas que aparentemente não fazem uso de armazenamento de dados às vezes guardamos algumas informações como por exemplo um navegador de internet armazena dados em cache ou cookies para que possa traçar o perfil do usuário ou mesmo facilitar o carregamento da mesma página quando ela é aberta diversas vezes no mesmo computador em momentos próximos Alguns sistemas ainda armazenam informações como logs registros de eventos na memória secundária do computador fazendo uso de incrementação de informação a outras informações já existentes ou segmentando esse conteúdo por exemplo por dia Para que essa tarefa possa ser efetuada de uma maneira sequencial e ordenada nosso Sistema Operacional precisa segmentar todos esses conteúdos de alguma maneira e para isso utiliza arquivos Arquivos são unidades lógicas de informação criadas por processos Um disco normalmente conterá milhares ou mesmo milhões deles cada um independente dos outros Na realidade se pensar em cada arquivo como uma espécie de espaço de endereçamento você não estará muito longe da verdade exceto que eles são usados para modelar o disco em vez de modelar a RAM TANEMBAUM 2016 p 182 72 Em outras palavras arquivos são informações que iremos guardar por tempo indeterminado de maneira não volátil Então para que possamos armazenar informações por longos períodos devemos observar algumas características Deve ser possível armazenar uma quantidade muito grande de informações A informação deve sobreviver ao término do processo que a usa Múltiplos processos têm de ser capazes de acessar a informação corretamente As informações persistentes em sua grande maioria atualmente são armazenadas em discos magnéticos mas podem ser armazenadas também em pendrive fitas mídias óticas e outras maneiras Mas todas as mídias suportam basicamente a instrução de leitura e escrita para que possam armazenar informações Além disso arquivo é um mecanismo de abstração ou seja é o modo de como os objetos são gerenciados através de nomes que façam sentido a um usuário final A principal ideia da geração de arquivos em um Sistema Operacional é que possamos ter espaços determinados em que informações são armazenadas e podem ser resgatadas de uma maneira que não transpareça para o usuário sobre como um disco funciona e como os bits são alocados em uma sequência linear de blocos Quando o processo cria um arquivo um nome é gerado podendo ser de forma automática pelo próprio sistema operacional ou pelo próprio usuário pelo simples fato de salvar um documento através de algum aplicativo como uma planilha por exemplo As regras exatas para como formar o nome dos arquivos são variáveis para cada Sistema Operacional mantendo suas particularidades Mas de maneira geral a maioria dos sistemas operacionais adota como critério a utilização de sequência de caracteres para nomeação de seus arquivos Embora cada sistema operacional tenha seus critérios de nomeação eles aceitam conteúdos alfa numéricos e caracteres especiais normalmente se reservando a não permitir alguns caracteres especiais Como por exemplo o Windows não permitir a utilização da pois indica divisão ente diretórios Exemplos possíveis de nomes seriam Arquivo123 Urgente 11outroarquivo 73 Figura 53 Estrutura de diretórios em árvore modo mais utilizado na computação pessoal Outra característica que também não é uma regra que podemos usar de exemplo é o reconhecimento se a letra é maiúscula ou minúscula pois para o Windows um arquivo chamado Arquivotxt é a mesma coisa que um arquivo chamado arquivotxt já em sistemas baseados em Unix esses arquivos seriam diferentes podendo inclusive estar em um mesmo diretório sem gerar nenhum tipo de conflito Mais uma característica interessante sobre a nomeação de arquivos em relação sistemas operacionais é que em alguns sistemas podemos definir o tipo de informações que o arquivo armazena pela sua extensão O nome do arquivo pode ser dividido em duas partes sendo a primeira o próprio nome do arquivo e a segunda o indicativo de que tipo de informação esse arquivo armazena Em nosso exemplo Arquivotxt podemos saber que antes mesmo de olhar o conteúdo do arquivo ele armazena algum tipo de texto simples Essa informação pode ser obtida por sua extensão o txt que vem depois do Alguns sistemas operacionais como o Windows nos obrigam a definir o tipo de extensão durante o processo de criação inclusive para fazer a associação com qual aplicativo irá executar esse tipo de arquivo Já outros sistemas operacionais baseados em Unix não têm essa necessidade podemos ou não colocar a extensão no arquivo mas por boas práticas é interessante sempre ter a extensão para facilitar a utilização desse conteúdo da maneira mais adequada possível 74 Os arquivos podem ser estruturados de várias maneiras Porém existem as três possibilidades mais comuns de acontecer a sequência de bytes a sequência de registros a árvore Na sequência de bytes o Sistema Operacional não tem conhecimento sobre nenhuma informação do conteúdo armazenado no arquivo ele simplesmente enxerga o arquivo como sequência de bytes iniciada em um determinado bloco e concluída em outro bloco Sendo assim na sua estrutura o arquivo é basicamente dado pelo bloco de início bloco de fim e tudo que há entre um e outro Essa estrutura de arquivo é a utilizada em sistemas operacionais baseados em Unix e Windows Já a sequência de registros é composta por uma sequência de registro de tamanho fixo onde a operação de leitura nos traz um arquivo e a operação de escrita sobrepõe alguns dos registros já existentes Nos tempos em que os cartões perfurados eram a principal tecnologia de passagem de informações para os computadores era comum adotar esse modelo de armazenamento de dados nos computadores compondo as sequências de registros com o tamanho de 80 caracteres que eram o tamanho de armazenamento dos cartões A estrutura de arquivos em árvore consiste em armazenar conteúdos de mesmo tamanho e similaridades de maneira a conseguir resgatar dados parecidos e que possuam um mesmo campo chave com maior agilidade Esse método de armazenamento não prioriza a proximidade dos dados ou a sequência de armazenamento e sim o campo chave armazenando os campos chaves agrupados Esse modelo de armazenamento não é usual na computação pessoal mas é útil em sistemas de grande porte de processamentos comerciais pois consegue tomar a decisão automaticamente e de onde armazenar um arquivo baseado em seu campo chave 75 Podemos categorizar os arquivos em duas categorias principais os arquivos regulares que contém informações dos usuários e os diretórios que são os arquivos do sistema ou seja mantém a estrutura do sistema de arquivo organizada Em nossos arquivos regulares os dados são armazenados de forma binária e como já vimos em Windows e Linux são armazenados como uma sequência de byte onde é determinado o bloco de início e o bloco de fim Para que seja possível organizar a quantidade de informações que trabalhamos em nossos computadores a maioria dos Sistemas Operacionais adota um o conceito de diretório ou pastas que muitas vezes também são arquivos porém trabalhados de uma maneira diferenciada Os primeiros computadores pessoais adotavam o conceito de um diretório único para todo o sistema Tudo que se armazenava naqueles computadores era alocado em um mesmo diretório até porque na época os computadores eram projetados para serem utilizados por apenas uma pessoa e a quantidade de arquivos na época também era muito limitada Embora o primeiro supercomputador CDC 600 também tivesse a estrutura de diretório baseada em diretório único mesmo sendo utilizado por diversas pessoas simultaneamente provavelmente a escolha da estrutura de diretório se deu pelo fato de tornar o projeto de software mais simples de implementar A estrutura de armazenamento de arquivos em um diretório único ainda pode ser interessante hoje em dia para sistemas dedicados que cuidam de apenas uma função No começo da computação pessoal até atendia a necessidade dos usuários devido à baixa capacidade de armazenamento de dados que os computadores apresentavam Nos dias atuais com a quantidade de informações e de arquivos de categorias diferentes que os usuários padrões utilizam e fazem controle através de suas máquinas pessoais seria impossível achar algum determinado arquivo em um tempo aceitável Atualmente a estrutura de diretórios mais utilizada para computação pessoal é seguindo o sistema de diretório hierárquico Por exemplo o computador de um professor pode ter um diretório no qual ele agrupa todos os arquivos referentes a trabalhos de alunos outro para armazenar livros em formato digital outro para armazenamento de seus arquivos referentes a jogos e mais outro para armazenar os 76 arquivos que guardam os dados que contêm as fotos de família Dentro desse último diretório ainda podemos ter outros para melhorar a categorização por exemplo parentes próximos avós tios e afins Com isso temos uma hierarquia para armazenamento do conteúdo de maneira que podemos encontrar algum arquivo específico com muito mais agilidade e precisão No caso de sistema de diretório hierárquico teremos um diretório principal conhecido como diretório raiz que no Windows é o diretório C e no Linux é o Dentro desse diretório serão alocados todos os outros seguindo a estrutura determinada pelo sistema operacional e pelos usuários que fazem uso desses sistemas 54 Funcionamento de Sistemas Operacionais para Dispositivos Móveis Ubíquos e Pervasivos Agora vamos ilustrar o funcionamento de dispositivos móveis tendo como exemplo o Sistema Operacional Android que funciona para dispositivos móveis e possui um Kernel Linux com várias modificações feitas pela Google O principal motivo disso foi atender as exigências das empresas fabricantes de hardware e de software para sistemas embarcados Um exemplo seria as Wakelocks uma função do dispositivo que mantêm o sistema em baixo consumo de energia caso não tenha nenhum aplicativo em execução Além disso outros objetivos do projeto incluíam Criar uma plataforma de código aberto para dispositivos móveis Dar suporte completo para o desenvolvimento de aplicativos proprietário de terceiros Promover a segurança da plataforma de modo que não fosse necessário que os usuários confiassem cegamente nos desenvolvedores de aplicativos Gerenciar os recursos utilizados pelos processos para que os usuários não precisassem se preocupar em fechar aplicativos com o intuito de preservar os recursos do sistema Nesse caso em particular o sistema operacional deve assumir o controle da decisão de quando os aplicativos devem ser inicializados ou parados 77 Fonte rvlsoft Shutterstockcom Figura 54 Android e iOS os dois principais Sistemas Operacionais para dispositivos móveis Como o Kernel do Android é em essência um Kernel Linux muitas das características do sistema em relação ao gerenciamento de processos memória e arquivos são as mesmas do Linux Logo vamos nos concentrar nas novas funcionalidades relacionadas ao gerenciamento de memória listados a seguir Ashmem Anonymous Shared Memory Módulo que permite a vários aplicativos se comunicarem por meio de uma região de memória compartilhada sem afetar de forma significativa a segurança dos processos envolvidos OOM Out of Memory É um mecanismo que permite ao sistema encerrar aplicações quando o consumo de memória está alto e não existe memória disponível para manter o dispositivo em pleno uso Como o Android é instalado em dispositivos que não possuem memória virtual para troca swap é muito comum que o sistema esteja com falta de memória Garbage Collector Método utilizado para fazer a limpeza da memória dos processos Muito comum em várias linguagens de programação e no Android tem a finalidade de varrer toda a memória a procura de objetos e informações que não estão sendo mais utilizadas lixo 78 Uma outra categoria de sistemas presentes em dispositivos móveis mas não limitados a eles são os Sistemas UbíquosPervasivos Segundo o dicionário DÍCIO 2021 o termo pervasivo referese a algo espalhado que tende a se espalhar infiltrar propagar ou difundir por toda parte Já o termo Ubíquo DÍCIO 2021 significa algo que é onipresente que pode ser encontrado em todos os lugares A computação UbíquaPervasiva é um termo criado pelo norte americano Mark Weiser que se refere à onipresença dos sistemas de informática na vida cotidiana Fonte PERVASIVEcomputing 2002 Figura 55 Mark Weiser 19521999 A ideia consiste que dispositivos comuns e dos mais variados tipos como geladeiras chuveiros relógios canetas e roupas tenham computadores incorporados com o intuito realizar tarefas rotineiras de forma natural e pouco perceptível para as pessoas A computação Ubíqua envolve Invisibilidade se uma tecnologia estiver muito presente e em todos os lugares ele deverá ser o mais imperceptível possível As pessoas deverão estar tão integradas e acostumadas ao seu uso que nem notarão que dispositivos computacionais estão presentes Próatividade os equipamentos devem prever as intenções dos usuários e anteciparse 79 Sensibilidade ao Contexto as informações presentes no ambiente são de suma importância e os sistemas precisam colher processar e compartilhar essas informações Interfaces Naturais é necessário que a interface entre os dispositivos e o usuário seja simples e forneça uma interação o mais natural possível Assim esses sistemas precisam de mecanismo que permitam reconhecimento de voz de gesto e qualquer outra forma espontânea de comunicação Descentralização diferentes dos computadores os dispositivos ubíquos possuem tamanho reduzido o que reduz o poder computacional Por causa disso esses sistemas devem trabalhar em conjunto para realizar suas atividades de forma descentralizadas Notase pelas características acima que os dispositivos ubíquos devem ter periféricos pouco usuais como sensores de infravermelho temperatura e GPS pouca memória RAM e de armazenamento CPU com pouco poder de processamento e capacidade de se comunicarem das mais diferentes formas possíveis independente de tecnologia Assim o Sistema Operacional precisa integrar periféricos dos mais diversos tipos e simultaneamente precisar ser compacto e caber facilmente na memória Além disso ter funções específicas para comunicação e sincronização entre muitos equipamentos diferentes tanto para otimizar o poder de processamento quanto de armazenagem 55 Estudo de Funcionamento de Serviços Disponíveis para sistemas operacionais servidores corporativos Servidores são sistemas computacionais que promovem serviços para outros computadores estejam eles na rede local ou não Possuem hardware com especificações que variam de acordo com sua função podendo ser desde poderosos mainframes com seus vários núcleos memórias e dispositivos de armazenamento até equipamentos mais modestos como servidores de mídia em settopboxes ou até mesmo dispositivos presentes na borda da rede como os modens de acesso Um servidor é definido pelo tipo de serviço proporcionado Os mais comuns que serão detalhados nesta seção são de arquivo Web Proxy impressão e aplicação 80 Os Servidores de arquivo prestam serviços de armazenamento para máquinas clientes Normalmente esse tipo de servidor é encontrado em redes onde é necessário haver espaço compartilhado de armazenagem entre vários dispositivos O processamento desses servidores é geralmente destinado a oferecer serviços de segurança armazenamento e recuperação de arquivos de forma rápida e consistente Isto é o processamento semântico sobre os dados guardados cabe às aplicações nas máquinas clientes Normalmente os arquivos são dispostos em estruturas hierárquicas como as Árvores de Arquivos todavia sem haver restrições técnicas sobre quais tipos de arquivos podem ser colocados nesses servidores Os servidores Web são incumbidos de armazenar páginas Web e outros tipos de objetos como imagens sons animações arquivos e afins Os objetos podem ser requisitados por uma aplicação cliente Browser Navegador por meio do protocolo HTTP ou HTTPS HyperText Markup Language Secure traduzido para o português Linguagem de Marcação de Hipertexto Seguro Um outro programa do lado do servidor é responsável por responder as requisições Entre os programas servidores mais conhecidos podemos citar Apache2 NGINX Glassfish e IIS A comunicação é feita de maneira muito simplificada da seguinte forma 1 Primeiramente o navegador faz uma análise da URL digitada para distinguir o nome do site e do domínio por exemplo o domínio ponto com 2 O servidor DNS retorna o endereço IP correspondente ao nome do site solicitado 3 O navegador contata o servidor no endereço IP recebido e define o protocolo em que será feita a comunicação 4 O servidor determina quais são os objetos solicitados pelo cliente e os envia Caso não existam uma mensagem de erro é retornada 5 O navegador recebe os dados do servidor processaos e exibe as informações para o usuário 81 Em suma o papel do servidor Web é armazenar as páginas e os objetos traduzir as solicitações retornar os dados e exibir as notificações de erro adequadas Outros serviços podem ser providos pelos servidores web como por exemplo gerenciamento de conteúdo dinâmico Eles são feitos em conjunto com outras aplicações que rodam no servidor Os Servidores Proxies são configurados para fazer as requisições ao endereço de destino no lugar da estação do cliente e atuam entre a máquina que fez a requisição e o destino final Um Proxy pode ser utilizado para várias tarefas dentre elas Caching de páginas Quando um navegador requisita uma página o Proxy verifica se essa página está contida no seu cache e se é a versão mais atual Se sim retorna à requisição Se não faz a requisição ao destino armazena a página no seu cache e retorna o resultado ao cliente A grande vantagem dessa técnica é a economia de dados trocados com a internet além de diminuir o consumo da banda da rede Criptografia na troca das mensagens Os servidores Proxies podem ser configurados para que as informações trocadas sejam sempre criptografadas Além de ser um mecanismo adicional de privacidade diminui as chances de que o usuário possa ser envolvido em um ataque chamado maninthemidle que consiste em roubar informações trocadas entre clientes e servidores ao fazer com que as requisições aos serviços sejam feitas à uma máquina impostora Filtro de conteúdo e de sites Um proxy pode ser configurado para impedir que sites e domínios que estejam armazenados na sua black list lista negra não sejam acessados como também filtrar conteúdo indevido e propagandas Anonimato É possível implementar recursos adicionais de privacidade como trocar o useragent do navegador impedir a localização por IP mascarar o servidor DNS utilizado pelo cliente e etc 82 Os Servidores de impressão são componentes de uma rede local que podem ser implementados tanto em hardware no caso disponibilizados pela própria máquina de impressão ou em software A principal tarefa de um Servidor de Impressão é permitir que os usuários de uma rede possam acessar esses recursos de forma justa e sem ter que esperar muito Para tanto quando uma nova solicitação é feita ela é colocada em uma fila de espera sendo que as requisições podem ser atendidas por uma ou mais impressoras Um serviço de impressão pode também informar ao usuário a quantidade de impressoras disponíveis e seu status imprimindo fora do sistema sem tinta e em outras condições comuns à impressão Um Servidor de aplicação é um computador em que roda a parte servidora de uma aplicação em específico tanto em relação aos requisitos de hardware quanto aos de software e consiste em um conjunto de funções que disponibilizam serviços para as aplicações clientes Para melhor compreensão considere o seguinte para criar uma aplicação existem dois tipos de requisitos a serem atendidos os funcionais que são as funcionalidades que o programa deverá ter e os não funcionais que são todas as questões que não fazem parte das regras de negócio mas que são necessárias para que a aplicação funcione por exemplo gerenciamento de filas monitores de transação threads e largura de banda de redes Um servidor de aplicação deve garantir por exemplo o balanceamento de carga segurança disponibilidade dos serviços tratamento de erros entre outros São conhecidos também como middlewares Entre as plataformas mais conhecidas temos a J2EE o Net e o Zope 83 Conclusão Com este bloco pudemos compreender a estrutura dos dois principais Sistemas Operacionais para computadores de mesa os sistemas Windows e Linux os quais possuem características e estruturas próprias que mesmo semelhantes foram criados de origem bem diferentes Melhoramos nosso conhecimento sobre a gestão de arquivos e estruturas utilizadas para armazenar dados de maneira não volátil em um computador vendo diferentes tipos de hierarquias e analisando prioritariamente a hierarquia em árvore que é a mais utilizada na computação pessoal Também vimos uma tendência que está cada vez mais comum em nosso cotidiano a computação ubíqua e pervasiva onde os dispositivos se integram ao ambiente dispensando comandos específicos para realizarem suas tarefas E por fim neste bloco falamos sobre o uso de computadores para prover serviços chamados de servidores REFERÊNCIAS HONG J Mark Weiser 19521999 The Founder of Ubiquitous Computing Reaching for Weisers vision PERVASIVEcomputing janmar 2002 In Scientific American 1991 Inc MACHADO F B MAIA L P Arquitetura de Sistemas Operacionais Rio de Janeiro LTC 5 ed 2017 PERVASIVO In DICIO Dicionário Online de Português Porto 7Graus 2021 Disponível em httpswwwdiciocombrpervasivo Acesso em 11 jan 2021 TANENBAUM A S Sistemas Operacionais Modernos São Paulo Pearson 4 ed 2016 UBÍQUO In DICIO Dicionário Online de Português Porto 7Graus 2021 Disponível em httpswwwdiciocombrubiquo Acesso em 11 jan 2021 84 6 PESQUISA SOBRE OS PRINCIPAIS SISTEMAS OPERACIONAIS UTILIZADOS NOS DIAS ATUAIS Neste bloco vamos ver algumas tecnologias mais recentes dentro do contexto de Sistemas Operacionais além de discutirmos sobre a sua usabilidade Inicialmente vamos abordar uma análise sobre utilização dos Sistemas Operacionais no cotidiano e de maneira contemporânea e logo após vamos conhecer as características voltadas para o controle de multimidia e aprenderemos então a categorizálos através de suas funções básicas Em seguida vamos ver os principais Sistemas Operacionais para dispositivos móveis da atualidade junto de suas camadas e o que cada uma realiza Discutiremos características de acessibilidade nos Sistemas Operacionais e um pouco sobre legislação e boas práticas na área de tecnologia Para concluir abordaremos a integração entre hardware e Sistemas operacionais modernos 61 Estudos de caso de diferentes sistemas operacionais utilizados nos dias atuais Podemos encontrar nos dias de hoje vários Sistemas Operacionais disponíveis no mercado cada qual com algumas características distintas pensadas para executar tarefas específicas Empresas como Microsoft Apple Google e Canonical são responsáveis por construir e publicar esses sistemas Veremos nessa seção alguns dos Sistemas Operacionais mais usados entre os dispositivos de mesa e servidores O Microsoft Windows é um conjunto de Sistemas Operacionais desenvolvido e publicado pela Microsoft Atualmente possui a maior parcela do mercado entre os usuários dos Desktops graças à liberdade de uso e da sua interface amigável A primeira versão publicada do Windows foi a 10 1985 que fornecia uma interface gráfica para o MSDOS As principais vantagens do Windows são 85 Compatibilidade de Hardware Basicamente todos os computadores e dispositivos de hardware vendidos para computadores de mesa são compatíveis com o Windows É possível que um usuário compre aleatoriamente um computador ou periférico quaisquer e eles possuam as versões mais novas do Windows Softwares préinstalados O Windows possui nativamente vários programas que suprem com bastante eficácia as tarefas cotidianas dos usuários Aplicativos de terceiros também podem ser instalados os quais podem ser baixados diretamente pela internet ou através da sua loja de aplicativos Facilidade de uso É o sistema preferido para computadores pessoais devido à facilidade de instalação uso e remoção dos programas além de possuir uma das interfaces mais amigáveis entre os Sistemas Operacionais Plataforma de jogos O Windows é a plataforma preferida da maioria dos jogadores devido à compatibilidade com um acervo imenso de jogos novos e antigos Além disso o sistema possui tecnologias integradas para fazer o renderização dos jogos como o Direct X As desvantagens são Alto custo Mesmo as licenças das versões mais básicas do Windows costumam ter preços inacessíveis para a maior parte da população Todavia é possível instalar versões novas do Windows 10 sem custo algum mas com algumas limitações de uso Riscos de segurança O Windows costuma ter o pior desempenho entre os sistemas de uso pessoal mais populares no quesito de segurança sendo mais vulneráveis às ameaças como malwares e trojans Manutenção O sistema costuma apresentar quedas de desempenho após algum tempo de uso 86 Já o Unix foi um sistema multitarefa e multiusuário desenvolvido na BelLab em 1970 pelos criadores da linguagem C Muitas variantes foram criadas e distribuídas entre empresas e universidades A versão com a maior base de usuários no momento é o MacOs da Apple Esse sistema possui um conjunto de ferramentas dedicadas para realização de tarefas shell scripting e programação As vantagens do Unix são Portabilidade Assim como o Windows está entre os sistemas operacionais com maior compatibilidade no mercado podendo ser usado por uma ampla quantidade de dispositivos Segurança É um sistema que conta com muitas ferramentas de segurança além de possuir mecanismos de autenticação de alto nível Multitarefa eficiente O sistema foi construído com o propósito principal de permitir que vários processos rodem simultaneamente com atenção especial à segurança da memória para evitar possíveis perdas de dados As principais desvantagens são O Unix é um sistema orientado a comandos projetado para programadores o que pode tornar o seu uso difícil para o público leigo Para poder trabalhar com o Unix é necessário entender como o sistema foi desenhado além de compreender boa parte dos comandos que são o principal meio de interação com os recursos O Linux é um Sistema Operacional de código livre derivado do Unix TANENBAUM 2016 do qual herdou boa parte dos seus conceitos de design É um sistema que pode ser usado tanto em computadores pessoais quanto em servidores da internet Existe uma grande quantidade de distribuições do Linux sendo as mais comuns Ubuntu Linux Mint Debian Fedora OpenSUSE RedHat entre outros Algumas vantagens do Linux são 87 Códigofonte aberto Pode ser alterado pelo usuário além de possuir uma grande quantidade de repositórios com programas que podem ser baixados sem nenhum custo Apresenta grande desempenho e não precisa que o sistema seja reinicializado constantemente Permite que processos sejam executados simultaneamente sem pouca ou nenhuma perda de desempenho Compatível com a maior parte dos computadores modernos existentes É um dos sistemas mais seguros do mundo Desvantagens Uso avançado pensado primariamente para os programadores Existe uma grande quantidade de versões e pacotes de instalações o que dificulta a vida do usuário comum Suporte precário a jogos em comparação ao Windows 62 Estudos de caso de sistemas operacionais multimídia Multimídia ou seja várias mídias é um campo de estudo que visa produzir conhecimento e tecnologias por computador que dão suporte ao processamento e controle das várias mídias digitais existentes ou que ainda estão por vir Podemos citar como exemplos de mídias textos imagens vídeos sons animações jogos gráficos entre outros As aplicações que se destacam são videoconferência VoIP Voz sobre IP serviços ondemand sobe demanda estudo à distância EAD e jogos de computador As mídias podem ser de dois tipos 88 Mídias discretas estáticas não dependem do tempo e são apresentadas apenas nos espaços bidimensionais e tridimensionais como imagens textos e gráficos Mídias contínuas dinâmicas ou isócronas apresentamse no tempo ou no espaçotempo como os sons os vídeos os jogos e as animações As mídias costumam ter algumas necessidades em comum Taxa de dados extremamente alta faz com que os recursos computacionais tais como uso de CPU memória rede e disco devam ser generosos Por exemplo um vídeo em HD sem compressão exige uma largura de banda de aproximadamente 648mbps Note ainda que um servidor de mídia normalmente dispõe de centenas de outros vídeos que são compartilhados com milhares de usuários simultaneamente Reprodução em tempo real mídias como videoondemand jogos e VoIP são sensíveis a atrasos nas transmissões Uma chamada de vídeo por exemplo com atrasos no envio ou recebimento dos dados podem deixar a comunicação inviável Controle independente da estrutura de dados a arquitetura de um arquivo de mídia costuma ser muito diferente à dos arquivos tradicionais de caracteres Um filme pode consistir em vários arquivos distintos como os de áudio e de texto para suporte a múltiplos idiomas Isso faz com que o Sistema Operacional tenha que implementar formas de controle adicionais para lidar com esses arquivos satisfatoriamente Assim sendo técnicas clássicas como as de caching de blocos de texto que são utilizadas para diminuir a quantidade de leituraescrita ao ler um arquivo de caracteres geralmente não tenha serventia para por exemplo reproduzir vídeos 89 Um Sistema Operacional é considerado um sistema multimídia quando suporta a apresentação simultânea de ao menos uma mídia discreta e outra contínua Pode ser do tipo standalone isto é todos os recursos computacionais e as informações utilizadas estão disponíveis localmente ou são Sistemas Operacionais Distribuídos cujos recursos são compartilhados remotamente com um ou mais sistemas As aplicações distribuídas podem ser pessoaàpessoa que são voltadas à comunicação entre usuários VoIP por exemplo ou do tipo pessoaàsistema que são construídas para que usuários interajam com o sistema remotamente exemplo videoon demand Para garantir a qualidade dos serviços das aplicações multimídia os Sistemas Operacionais devem gerenciar os recursos de hardware de forma a atender as seguintes especificações Especificação e alocação de memória por exemplo garantir que as aplicações tenham um tempo máximo e mínimo de acesso à memória como também criar políticas de decisão para tratar situações extremas como memória cheia Controle de admissão fazer testes para garantir que os recursos disponíveis são suficientes para atender a demanda solicitada sem interferir diretamente com uma requisição em particular Alocação e mecanismos de escalonamento tem o intuito de garantir que os recursos estejam acessíveis quando requisitados A CPU e os mecanismos de ES devem ser escalonáveis Aqui podese usar técnicas de escalonamento oriundas dos sistemas de tempo real Adaptação como não é possível garantir que haja sempre recursos quando solicitado pelas aplicações é necessário que possam fazer com que os dados das aplicações ou a própria aplicação em si sejam adaptados Por exemplo quando não existe banda de rede disponível a qualidade do vídeo reproduzida pode ser alterada ou mesmo os recursos da interface podem ser simplificados 90 63 Apresentação das principais características dos sistemas operacionais mobile Google Android e Apple IOS O Android é um sistema operacional que está presente em uma vasta gama de dispositivos alguns exemplos são os smartphones televisores settopboxes carros Android auto e smartwatches É formado por uma pilha de tecnologias composta por vários componentes que permitem a desenvolvedores e fabricantes de hardware atuarem de forma independente em suas respectivas camadas Essa pilha pode ser subdivida em 5 componentes principais Aplicações Framework de Aplicações Bibliotecas Nativas Runtime do Android e o Kernel Linux A camada de aplicações é a camada de mais alto nível da pilha Abarca todo o conjunto de ferramentas do usuário que dão suporte às suas atividades rotineiras como fazer chamadas ouvir música assistir vídeos ler emails entre outras São aplicativos escritos em linguagens de programação para dispositivos móveis tais como Java Kotlin e C Os programas são distribuídos primariamente pela loja de aplicativos oficial do Google o Google Play mas também podem ser encontrados em lojas de terceiros Além disso podem ser instalados diretamente pelo usuário por meio do pacote nativo do Android o APK Android Package pacote do Android O Framework de Aplicações consiste em um conjunto de ferramenta de desenvolvimento prontas que dão suporte aos desenvolvedores para criarem suas aplicações e disseminálas na loja de aplicativo A API Application Programming Interface Interface de programação de aplicação compreende todo o conjunto de rotinas que fazem parte das aplicações do núcleo do Android além de permitir acesso às bibliotecas Java existentes Na camada das bibliotecas nativas estão compilados e préinstalados os binários em CC que são utilizados pelo sistema Exemplos dessas bibliotecas são Surface Manager SQLite Webkit OpenGLES etc 91 Surface Manager Servidor gráfico do Android muitas vezes chamado de gerenciador de janelas Equivale ao Xorg e Wayland do Linux É utilizado para criar imagens em 2D3D para compor as telas individuais do sistema Realiza outras tarefas tais como offscreen bufferring memória que permite ao desenvolvedor fazer atualizações na tela antes de enviála para exibição e transições de telas SQLite É um banco de dados relacional e de código aberto usado pelo Android para armazenar informações do sistema entre uma sessão e outra Os dados são armazenados na memória interna do dispositivo Webkit Mecanismo HTML que exibe páginas e seus componentes de forma rápida e fluida É o motor gráfico padrão do Android que também é usado pelo Chrome e pelos vários forks do Chromium Está disponível no sistema para uso de qualquer aplicação thirdparty OpenGLES Mecanismo de processamento gráfico do sistema Com ela é possível renderizar imagens 2D3D além de outras funções como aceleração de hardware São rotinas que trabalham diretamente com o processador gráfico do sistema Não confunda com o Surface Manager que apenas dá suporte de alto nível aos programas e oferece recursos para facilitar a manipulação de componentes gráficos como janelas e menus O Runtime do Android é formado por duas camadas distintas As bibliotecas Java que são fornecidas pelo sistema E o Dalvik que é uma implementação da Máquina Virtual Java JVM feita pela Google A camada do Runtime compartilha o mesmo nível da camada das bibliotecas nativas Por fim temos a camada do kernel O kernel do Android é um Kernel Linux modificado para prover serviços que não são comuns à dispositivos de mesa como botões de controle de hardware câmera integradas hardware de rádio e etc 92 Já a arquitetura do sistema IOS é muita parecida com aquela encontrada no seu irmão mais velho dos computadores de mesa o Mac OS X É composta por quatro camadas distintas onde cada uma abrange vários frameworks que podem ser utilizados por desenvolvedores de aplicativos Além de permitir que os programadores ganhem tempo de desenvolvimento uma vez que as rotinas estão testadas e prontas para o uso esses framewoks aumentam a portabilidade do código pois permitem que por exemplo um programa feito para rodar em um Iphone possa ser reutilizado sem problemas em um outro dispositivo da Apple como um Ipad A comunicação com o hardware é feita basicamente por um conjunto de interfaces bem definidas de acesso ao sistema que estão presentes nesses frameworks As camadas são de cima para baixo Cocoa Touch Media Core Services e Core OS As camadas superiores possuem maior nível de abstrações de alto nível enquanto as inferiores tendem a apresentar recursos mais próximos ao hardware Veremos cada uma delas a seguir A camada Cocoa Touch é onde estão contidos os principais frameworks orientados ao desenvolvimento de aplicativos Nessa camada por exemplo são oferecidas tecnologias como o serviço de multitarefas notificações Apple push proteção de dados do sistema entre outros Os frameworks aqui presentes resumem os serviços oferecidos pelas camadas adjacentes Mas caso não seja suficiente o desenvolvedor pode acessar os recursos das camadas mais abaixo diretamente A camada Media engloba as tecnologias que são utilizadas para construção de gráficos vídeos e áudio Possui frameworks simples como o UIKIT User interface kit kit de interface de usuário que prove serviços básicos para manipulações de imagens e animações como também frameworks mais elaborados Alguns exemplos são Core Graphics Renderizador de vetores de imagens 2D Core Animation Funções avançadas para lidar com animações OpenGLES Renderizador 2D3D e aceleração por hardware Text Core Renderizador e controle de texto Image IO Instruções para trabalhar com a maioria dos formatos de imagens 93 Assets Library Funções para acesso a fotos e vídeos da biblioteca do usuário Framework Media Player Suporte para reprodução de áudio e vídeo além de permitir acesso à biblioteca do ITunes Framework AV Foundation Interfaces feitas em ObjectiveC para gravação e reprodução de áudio além de captura e reprodução de filmes Frameworks Core Audio Alternativa ao AV Foundation permite também reproduzir sons de alertas do sistema executar vibrações e reproduzir streaming de áudio de conteúdos locais Core Media Onde são definidos os tipos de dados utilizados pelos frameworks de nível de aplicação e oferece interfaces de baixo nível para manipular o conteúdo das mídias O Core Services é a camada responsável por fornecer os serviços que serão utilizados por todos os aplicativos mesmo que esses não acessem suas funções diretamente Exemplos de tecnologias são o Grand Central Dispatch gerenciador de tarefas de interfaces para threadings o Inapp dispatch recursos para vendas dentro dos aplicativos como por exemplo processar transações financeiras dentro do ITunes o SQLite para criação de bancos de dados locais etc Por último temos a camada do Core OS que implementa interface de baixo nível tanto para o desenvolvedor quanto para os frameworks das camadas acima O kernel do sistema está nessa camada As informações e serviços de hardware podem ser acessados não somente pelos seguintes recursos Libsystem Biblioteca em C a fim de reunir um conjunto de interfaces para threading redes acesso ao sistema de arquivos ES padrão serviços Bonjoure alocação de memória etc Framework Accelerate Responsável por realizar cálculos matemáticos de forma eficiente pelo hardware Framework External Accessory utilizado para lidar com dispositivos periféricos compatíveis com o IOS 94 Essas são as principais características dos dois Sistemas Operacionais mais populares para dispositivos móveis 64 Pontos de acessibilidades nos Sistemas Operacionais Modernos Durante a história da humanidade pessoas com deficiência foram muitas vezes excluídas de partes da sociedade Porém nos tempos atuais esse cenário vem sendo trabalhado para reduzir essa exclusão ao máximo e a área de tecnologia não pode ficar fora dessa mudança tão positiva De acordo com o Decreto n 5296 a acessibilidade é definida como I acessibilidade condição para utilização com segurança e autonomia total ou assistida dos espaços mobiliários e equipamentos urbanos das edificações dos serviços de transporte e dos dispositivos sistemas e meios de comunicação e informação por pessoa portadora de deficiência ou com mobilidade reduzida BRASIL 2004 Cap III art 8º Logo podemos ver que os recursos computacionais estão previstos como quesitos de acessibilidade e os desenvolvedores de sistemas operacionais não podem se isentar dessa responsabilidade Todos os sistemas operacionais modernos têm por obrigação contemplar recursos de acessibilidade e facilitação de uso por pessoas que precisem de alguma condição especial seja ela temporária ou permanente Além disso você sabia que no Brasil temos diversas leis que apoiam os direitos das pessoas com deficiência Podemos citar a Lei n 10098 de 19 de dezembro de 2000 que foi regulamentada pelo Decreto nº 5296 de 2 de dezembro de 2004 Nessa Lei ao tratar especificamente do acesso à Internet seu Artigo 47 estabelece Art 47 No prazo de até doze meses a contar da data de publicação deste Decreto será obrigatória a acessibilidade nos portais e sítios eletrônicos da administração pública na rede mundial de computadores internet para o uso das pessoas portadoras de deficiência visual garantindolhes o pleno acesso às informações disponíveis BRASIL 2004 Cap VI 95 O Departamento de Governo Eletrônico Brasileiro oferece um conjunto de diretrizes que devem ser seguidas por sites governamentais disponíveis ao público em geral para que possam utilizar também em sites próprios chamadas de Modelo de Acessibilidade em Governo Eletrônico eMAG Para saber mais entre no link ao final do bloco em Saiba mais Alguns recursos disponíveis em sistemas operacionais que aumentam a autonomia de pessoas com deficiência são Leitor de tela Recurso de software que converte um texto em um fala sintetizada permitindo que o usuário ouça os elementos textuais da tela em vez de visualizar A maioria dos sistemas operacionais baseados em Linux possuem um leitor de tela chamado Orca por padrão No caso do Windows existe a ferramenta Narrador já inclusa no próprio sistema operacional Figura 61 Utilização de recurso de conversão de texto em áudio Aumento de fonte A maioria dos sistemas operacionais conta com recursos para aumentar o tamanho da fonte dos textos sistemas operacionais de dispositivos móveis como Android e IOS costumam ter esse recurso bem explicitado às vezes até perguntando durante sua primeira execução se deseja ativar 96 Fonte print screen da aplicação no sistema operacional Windows 10 Figura 62 Recurso de aumento de texto na aba de Configurações de tela do Windows 10 Digitação por voz Utilizada em muitos sistemas operacionais para apoiar pessoas com algum tipo de deficiência motora que dificulte a digitação através de teclado sendo muito utilizada em editores de texto também O Word da Microsoft já tem essa função por padrão e pode ser habilitada a qualquer momento Figura 63 Utilização de recurso de digitação por voz 97 Ferramenta lupa Esse tipo de ferramenta visa aumentar o tamanho da tela nos locais onde o cursor esteja próximo com isso facilitando a visualização no Windows já vem instalado por padrão e no Linux pode ser facilmente ativável em diversas de suas distribuições Fonte print screen da aplicação no sistema operacional Windows 10 Figura 64 Utilização da ferramenta lupa no Windows 10 em comparação com tamanho original da tela No caso do sistema operacional Windows ao usar a combinação de teclas de atalho do teclado logotipo U serão apresentadas diversas opções de acessibilidade para facilitar o uso do sistema operacional por pessoas que tenham alguma deficiência ou limitação temporária 65 Integração de Sistemas Operacionais Modernos e Novas Arquiteturas de Computador Tecnologias de hardware para dispositivos computacionais e seus periféricos estão sempre em desenvolvimento A todo momento temos que nos habituar com a presença de novos equipamentos dos mais variados tipos além de profundas melhorias nos dispositivos já conhecidos como por exemplo na arquitetura dos processadores Além disso várias áreas da computação estão cada vez mais presentes 98 no nosso cotidiano e com elas surgem uma vasta gama de dispositivos até então desconhecidos como sensores e atuadores Prevendo esse cenário os desenvolvedores de software criaram uma camada de abstração chamada HAL para lidar de forma eficaz com essas constantes mudanças Estudaremos ela a seguir HAL Hardware Abstraction Layer Camada de Abstração de Hardware é um conjunto de rotinas e bibliotecas organizadas em uma camada lógica de programação que se situa entre o hardware do dispositivo e os componentes de software restantes De forma simplória podese dizer que a HAL engloba todo elemento de software que trabalha diretamente e é depende do hardware subjacente Podemos citar como exemplos código para inicializar o sistema rotinas para configuração e acesso de hardware por exemplo a MMU Memory Management Unity ou Unidade de Gerenciamento de Memória códigos para troca de contexto contadores de tempo rotina para controle e calibragem de sensores distribuídos e atuadores A HAL atua como uma camada de abstração que serve como Interface de Programação API MACHADO MAIA 2017 para acesso direto ao hardware É incluída em muitos Sistemas Operacionais dentro dos drivers do sistema ou do próprio Kernel Como as rotinas da Hal são implementadas de forma independente das outras camadas não é necessário fazer grandes alterações no Sistema Operacional quando ele precisar rodar em outros dispositivos de hardware Ela muitas vezes é confundida com os drivers do sistema Em termos de tarefas um driver é simplesmente uma interface que possibilita fazer operações de ES para o dispositivo ao qual pertence Por exemplo um driver não faz nenhuma operação de mudança de contexto ou gerenciamento de interrupções que são operações típicas da HAL Além disso pode existir partes do driver que são formadas por rotinas que não trabalham diretamente com o hardware Mesmo assim a parte do driver dependente da arquitetura do dispositivo pode ser considerado uma HAL Ou seja um driver não é uma HAL mas a parte dele que acessa o hardware é Veja a seguir os benefícios que a HAL fornece 99 Permite que aplicações extraiam o máximo de desempenho possível do hardware Possibilita que o Sistema Operacional e os programas executem independentemente de hardware Viabiliza o acesso direto ao dispositivo tanto para os aplicativos quanto para os drivers Faz com que a comunicação com o hardware seja descomplicada e genérica Isto é a forma de acesso aos dispositivos devem ser as mesmas independente de tecnologias fabricantes ou arquitetura Facilita a portabilidade dos programas dos drivers e do próprio Sistema Operacional Agora observe alguns exemplos de APIs fornecidas pela HAL APIs do Kernel Realizam gerenciamento de contexto e operações atômicas APIs para gerenciamento de interrupções consistem em uma rotina de serviços de interrupção rápida APIs para ES Permitem formas de acesso e configuração para dispositivos de entrada e saída APIs para gerenciamento de Recursos gerenciamento de energia consumo de CPU APIs de tempo real para acesso aos ciclos de CPU por exemplo para criação de contadores de tempo Com o uso dessa camada entre o sistema e o hardware o papel do Sistema Operacional de tornar mais simples a interface entre o ser humano e os recursos computacionais como um todo ficam ainda mais fáceis e portáveis 100 Saiba mais Leia mais sobre o Modelo de Acessibilidade em Governo Eletrônico eMAG disponíveis no link a seguir httpemaggovernoeletronicogovbr Acesso em 11 jan 2021 Conclusão Neste bloco abordamos diferentes Sistemas Operacionais e suas utilizações e também os requisitos que um Sistema Operacional precisa apresentar para ser categorizado como multimídia Discutimos a estrutura dos principais Sistemas Operacionais para utilização em dispositivos móveis com suas características e diferenças entre eles Refletimos sobre os critérios de acessibilidade além de ver um pouco da legislação de acessibilidade voltada para o acesso à informação digital em sites E para finalizar analisamos a integração de sistemas operacionais modernos e novas arquiteturas de computador REFERÊNCIAS BRASIL Decreto nº 5296 de 2 de dezembro de 2004 Regulamenta as Leis nos 10048 de 8 de novembro de 2000 que dá prioridade de atendimento às pessoas que especifica e 10098 de 19 de dezembro de 2000 que estabelece normas gerais e critérios básicos para a promoção da acessibilidade das pessoas portadoras de deficiência ou com mobilidade reduzida e dá outras providências Brasília 2 dez 2004 Disponível em httpwwwplanaltogovbrccivil03ato2004 20062004decretod5296htm Acesso em 11 jan 2021 EMAG Modelo de Acessibilidade em Governo Eletrônico eMAG Versão 31 abr 2014 Disponível em httpemaggovernoeletronicogovbr Acesso em 11 jan 2021 MACHADO F B MAIA L P Arquitetura de Sistemas Operacionais Rio de Janeiro LTC 5 ed 2017 TANENBAUM A S Sistemas Operacionais Modernos São Paulo Pearson 4 ed 2016

Sua Nova Sala de Aula

Sua Nova Sala de Aula

Empresa

Central de ajuda Contato Blog

Legal

Termos de uso Política de privacidade Política de cookies Código de honra

Baixe o app

4,8
(35.000 avaliações)
© 2025 Meu Guru®