Baixe o app para aproveitar ainda mais
Prévia do material em texto
Este livro é destinado a uma melhor compreensão do papel e das atividades desempenhadas pelo sistema operacional. Para isso, começa com uma apresentação histórica dos sistemas operacionais, seus possíveis ambientes, seus componentes e sua arquitetura. Em seguida, explica a forma com que o sistema operacional interage com o hardware e com o software; a execução de tarefas pelos sistemas operacionais; a conversão de processos em threads; o armazenamento em memória real e em memória virtual do computador; e, finalmen- te, trata da segurança em sistemas operacionais, as possíveis formas de ataque e defesa dos siste- mas e apresenta técnicas de proteção dos dados trocados pelos computadores. Em suma, esta obra traz as informações básicas para a compreensão do papel dos sistemas opera- cionais e destina-se aos estudantes que desejam aprofundar seus conhecimentos sobre esse co- adjuvante que merece todos os créditos por um trabalho bem realizado nos nossos computadores. S IS T E M A S O P E R A C IO N A IS A N D E R S O N D U T R A M O U R A Código Logístico 59313 Fundação Biblioteca Nacional ISBN 978-85-387-6615-5 9 7 8 8 5 3 8 7 6 6 1 5 5 Sistemas Operacionais Anderson Dutra Moura IESDE BRASIL 2020 Todos os direitos reservados. IESDE BRASIL S/A. Al. Dr. Carlos de Carvalho, 1.482. CEP: 80730-200 Batel – Curitiba – PR 0800 708 88 88 – www.iesde.com.br © 2020 – IESDE BRASIL S/A. É proibida a reprodução, mesmo parcial, por qualquer processo, sem autorização por escrito do autor e do detentor dos direitos autorais. Projeto de capa: IESDE BRASIL S/A. Imagem da capa: spainter_vfx/ whiteMocca/Shutterstock CIP-BRASIL. CATALOGAÇÃO NA PUBLICAÇÃO SINDICATO NACIONAL DOS EDITORES DE LIVROS, RJ M884s Moura, Anderson Dutra Sistemas operacionais / Anderson Dutra Moura. - 1. ed. - Curitiba [PR] : IESDE, 2020. 164 p. : il. Inclui bibliografia ISBN 978-85-387-6615-5 1. Sistemas operacionais (Computadores). I. Título. 20-64981 CDD: 005.43 CDU: 004.451 Anderson Dutra Moura Mestre em Tecnologia da Saúde pela Pontifícia Universidade Católica do Paraná (PUCPR). MBA em Sistemas de Informação pela mesma instituição. Bacharel em Ciência da Computação pela Universidade Federal do Paraná (UFPR). Professor universitário há mais de 15 anos em diversas instituições de ensino superior e empresário da área de tecnologia da informação (TI), com mais de 25 anos de experiência. Agora é possível acessar os vídeos do livro por meio de QR codes (códigos de barras) presentes no início de cada seção de capítulo. Acesse os vídeos automaticamente, direcionando a câmera fotográ�ca de seu smartphone ou tablet para o QR code. Em alguns dispositivos é necessário ter instalado um leitor de QR code, que pode ser adquirido gratuitamente em lojas de aplicativos. Vídeos em QR code! SUMÁRIO 1 Introdução aos sistemas operacionais 9 1.1 Evolução dos sistemas operacionais 9 1.2 Ambientes de sistemas operacionais 21 1.3 Componentes e objetivos dos sistemas operacionais 25 1.4 Arquitetura de sistemas operacionais 38 2 Interação do sistema operacional com hardware e software 45 2.1 Arquivos e diretórios 46 2.2 Interpretadores e compiladores 52 2.3 Firmware e middleware 54 2.4 Processadores 57 2.5 Memória 66 2.6 Discos e fitas 70 2.7 Dispositivos de E/S e barramentos 71 3 Processos e threads 76 3.1 Processos 76 3.2 Threads 88 3.3 Execução assíncrona concorrente 95 3.4 Programação concorrente 98 3.5 Deadlock e adiamento indefinido 100 3.6 Escalonamento de processador 103 4 Memória real e virtual 108 4.1 Memória real 108 4.2 Memória virtual 117 4.3 Questões de projeto e implementação 127 5 Segurança em sistemas operacionais 133 5.1 Criptografia 133 5.2 Autenticação 138 5.3 Controle de acesso 142 5.4 Ataques à segurança 146 5.5 Prevenção de ataques e soluções de segurança 148 5.6 Comunicação e protocolos de segurança 154 Gabarito 1611 Desde sua criação, na década de 1950, a computação evoluiu e passou a ocupar um lugar importante no cotidiano das pessoas, seja em casa, seja no trabalho, de um modo nunca antes visto. Na forma dos grandes computadores, utilizados pelos centros de pesquisa e grandes corporações, computadores pessoais, notebooks, tablets e até mesmo celulares, os dispositivos estão presentes em nossas vidas, realizando uma quantidade de tarefas além do que foi imaginado quando os primeiros aparelhos foram concebidos. Conectados a redes com ou sem fio, os computadores permitiram a comunicação entre usuários e outras máquinas separadas por longas distâncias. Desempenhando um papel coadjuvante nessa evolução, surgiu o sistema operacional, responsável por atender às solicitações feitas pelos usuários, controlar e se comunicar com a infinidade de dispositivos e acessórios, que podem ser conectados aos computadores e dispositivos; garantir a comunicação e a segurança na troca de informações com os computadores em rede ou que acessam a Web, entre outras tarefas. Este livro é destinado a uma melhor compreensão do papel e das atividades desempenhadas pelo sistema operacional. Para isso, começaremos com uma apresentação histórica dos sistemas operacionais, seus possíveis ambientes, seus componentes e sua arquitetura. Em seguida, apresentaremos a forma com que o sistema operacional interage com o hardware e com o software; a execução de tarefas pelos sistemas operacionais; a conversão de processos em threads; o armazenamento em memória real e em memória virtual do computador; e, finalmente, trataremos da segurança em sistemas operacionais, as possíveis formas de ataque e defesa dos sistemas e algumas técnicas de proteção dos dados trocados pelos computadores. Em suma, esta obra traz as informações básicas para a compreensão do papel dos sistemas operacionais e destina-se aos estudantes que desejam aprofundar seus conhecimentos sobre esse coadjuvante que merece todos os créditos por um trabalho bem realizado nos nossos computadores. Bons estudos! APRESENTAÇÃO Introdução aos sistemas operacionais 9 1 Introdução aos sistemas operacionais Se formos tomar como base o conceito de sistema operacio- nal da época em que ele foi criado, veríamos a definição de um software que controla um hardware. Para aquele tempo, esse con- ceito era válido. Porém, se examinarmos o hardware que temos hoje, podemos observar que ele está interagindo com um número cada vez maior de softwares, simultaneamente. Essa mudança na utilização e forma de interação com o software levou à necessi- dade da redefinição desse conceito; o novo papel desempenhado pelo sistema operacional é o de realizar a separação entre as apli- cações (software e hardware), criando um controle de acesso e um conjunto de serviços e permitindo a comunicação entre eles. Neste capítulo, abordaremos a evolução dos sistemas opera- cionais, que acompanha a evolução dos computadores e suas di- versas finalidades, tamanhos e componentes, motivando a criação e evolução dos sistemas operacionais. Além disso, observaremos os diferentes ambientes e tipos de sistemas nos quais os siste- mas operacionais estão inseridos, os principais componentes dos sistemas operacionais e as características consideradas essenciais em um sistema operacional. Por último, analisaremos a arquitetura dos sistemas operacionais. 1.1 Evolução dos sistemas operacionais Vídeo Segundo Deitel, Deitel e Choffnes (2005), um sistema operacio- nal é um software que habilita as aplicações para interagirem com o hardware de um computador. Com a evolução dos hardwares, suas diferentes aplicações e múltiplas possibilidades de utilização de softwares, podemos encontrar os sistemas operacionais não somente 10 Sistemas Operacionais em computadores de pequeno ou grande porte, mas também em nos- sos celulares, geladeiras, automóveis, televisões, videogames etc. Na maioria dos casos, a interaçãoentre o usuário e o sistema operacio- nal se resume à execução de uma tarefa, como executar um aplicativo ou copiar um arquivo. Ao receber esse comando, o sistema operacional faz a interação entre o hardware e o software, necessária para que a tarefa solicitada seja cumprida. Isso faz com que, para o usuário, o sistema ope- racional seja um mero coadjuvante na execução das suas tarefas; porém, ele desempenha um papel primordial nessa relação, com o hardware ge- renciando os recursos disponíveis e o software gerenciando as aplicações em seus diferentes formatos e distribuições. A evolução dos sistemas operacionais está intimamente ligada à dos computadores. À medida que os computadores foram se moder- nizando, por meio de novos dispositivos de hardware e novas formas de programação, fez-se necessária a criação e adaptação dos sistemas operacionais para realizar a comunicação entre as aplicações (software e hardware), bem como para atender à crescente expectativa por parte dos usuários. A primeira fase de computadores, criados entre 1945 e 1955, se caracterizava pelo uso de milhares de válvulas, que ocupavam enormes áreas e ainda não faziam uso de sistemas operacionais. A interação dos programadores com essas máquinas era feita com chaves mecânicas, nas quais se introduziam os comandos bit-a-bit 1 , para que estes fossem con- vertidos em uma linguagem que a máquina pudesse compreender. Esse cenário somente foi melhorado com a criação dos cartões per- furados, nos quais os comandos bit-a-bit foram transformados em se- quências no papel, acelerando o processo de programação por meio de linguagens, como assembly, que convertiam os sinais recebidos no cartão e permitiam a realização de operações básicas pelo computador. Para que um programador pudesse executar um job, isto é, um pro- grama ou conjunto de programas, ele deveria escrevê-lo em uma fo- lha de papel, fazendo uso da linguagem de programação chamada de Fortran ou em linguagem de montagem (assembly). Após essa etapa, ele iria transferir o programa para um cartão perfurado (Figura 1). Nes- se momento, ele poderia utilizar um ou mais cartões para representar o seu programa. Depois disso, os cartões seriam entregues para serem processados aos operadores do computador. Para ter uma noção do esforço realizado pelos pioneiros da computação, assista ao filme O jogo da imitação. Baseado no livro de Alan Turing, The Enigma, o longa-metra- gem retrata a busca de Turing para desenvolver um computador capaz de decodificar as mensagens nazistas, geradas pela máquina Enigma. Direção: Morten Tyldum. São Paulo: Paris Filmes, 2016. Filme A expressão bit (dígito binário - BInary digiT) é a menor unidade de medida de transmissão de dados utilizada pelos computa- dores. Um bit possui valor único, podendo ser definido como zero ou um, verdadeiro ou falso. 1 Para ter uma noção da primeira e segunda fase dos computadores, assista ao filme Estrelas além do tempo, que conta a história de três matemáticas da Nasa (Ka- therine Johnson, Dorothy Vaughn e Mary Jackson), as quais se mostram parte fundamental da evolução tecnológica durante a Guerra Fria. Direção: Theodore Melfi. São Paulo: WB Filmes, 2017. Filme https://pt.wikipedia.org/wiki/NASA https://pt.wikipedia.org/wiki/Katherine_Johnson https://pt.wikipedia.org/wiki/Katherine_Johnson https://pt.wikipedia.org/wiki/Dorothy_Vaughan https://pt.wikipedia.org/wiki/Dorothy_Vaughan https://pt.wikipedia.org/wiki/Mary_Jackson Introdução aos sistemas operacionais 11 Figura 1 Cartão perfurado Ar no ld Re in ho ld /W ik im ed ia C om m on s O primeiro sistema operacional surgiu no início da década de 1950, desenvolvido pelos Laboratórios de Pesquisa da General Motors, e foi chamado de GM-NAA I/O, para ser executado nos computadores IBM 701 (Figura 2), e comercializado a partir de 1953. O desenvolvimento do transistor e das memórias magnéticas marcou o começo da segunda fase de computadores, aqueles que foram construídos entre 1955 e 1965. A substituição das válvulas da primeira fase pelo transistor trouxe velocidade e confia- bilidade ao processamento. Já a criação das memórias magnéticas garantiu que os da- dos fossem acessados mais rapidamente, aumentou a capacidade de armazenamento e permitiu que o tamanho dos computado- res fosse reduzido. Com essa evolução, os computadores tornaram-se mais confiáveis e passaram a ser comercializados, porém com uso restrito para a realização de cálculos científicos e de engenharia. A segunda fase marcou a distinção dos profissionais que participavam do projeto, da construção, da operação, da programação e da manutenção dos computadores, os quais passaram a ser instalados em salas exclusi- Figura 2 Computador IBM 701 Da n/ W ik im ed ia C om m on s 12 Sistemas Operacionais vas para eles, que eram acessadas somente pelo pessoal autorizado e especializado. Em virtude do alto custo para aquisição, instalação e ma- nutenção desses computadores, eles eram utilizados exclusivamente por grandes empresas, órgãos governamentais ou universidades. Nessa fase, quando um programa (job) encerrava o seu processa- mento, um dos operadores da máquina retirava o relatório de saída, que havia sido impresso pelo programa, deixando-o na expedição. Esse relatório seria retirado, posteriormente, pelo programador do job. Ten- do feito isso, o operador selecionava um novo grupo de cartões, que haviam sido deixados pelos programadores na recepção, avaliando e providenciando os recursos necessários para a execução desse novo programa – por exemplo, a utilização do compilador Fortran, fazendo com que o operador realizasse a leitura do grupo de cartões correspon- dente ao compilador. Boa parte das atividades realizadas nessa fase es- tavam concentradas no trabalho dos operadores, que circulavam pela sala e providenciavam os recursos necessários para a execução dos jobs que estavam sob sua responsabilidade. Além do alto custo dos computadores, a forma como os programas eram executados não era muito eficiente, pois dependia da inserção manual por parte dos operadores e, enquanto não eram alimenta- dos por novas massas de cartões, os processadores ficavam ociosos. Buscando reduzir o desperdício do tempo de utilização da máqui- na, sua alimentação passou a seguir um novo modelo, chamado de sistema batch (lote). A ociosidade dos processadores era decorrente da utilização das lei- toras de cartão, como periférico de entrada, e das impressoras, como periférico de saída. Os processadores eram lentos, quando compara- dos ao processador que ficava aguardando a entrada dos dados, via cartão, ou o final da impressão do relatório, que marcava o término de execução do programa. Em 1957, a utilização da fita magnética surgiu como uma opção para resolver esse problema. Os dados dos cartões magnéticos eram transferidos para uma fita, que posteriormente era lida pelo computa- dor; o mesmo ocorria com os resultados que deveriam ser impressos, sendo copiados para uma outra fita. Assim, criando uma separação en- tre sistemas, o sistema auxiliar carregava os dados na fita magnética e Introdução aos sistemas operacionais 13 realizava a impressão, deixando o sistema principal responsável pelo processamento. A utilização da fita magnética para armazenamento dos dados de entrada e dos resultados de saída foi chamada de rolamento (spooling). Essa técnica permitia que a massa de cartões fosse gravada em uma fita, enquanto o sistema principal executava outro programa e gravava seus resultados em outra fita, que seria lida pelo sistema secundário, responsável por imprimir esses dados. Com sua utilização, as tarefas de entrada e saída foram agrupadas, maximizando o número de tare- fas processadas por unidade de tempo (throughtput) no sistema prin- cipal. Porém, a circulação das fitas pela sala ainda consumia tempo e, caso um programa muito longo fosse executado, ocasionava um atraso na execução dos demaisprogramas, em virtude da natureza sequen- cial do processo. Os programadores deixaram de se preocupar em desenvolver ro- tinas de leitura/gravação específicas, para cada dispositivo periférico, quando os sistemas operacionais incorporaram um conjunto de roti- nas para operação de entrada/saída (Input/Output Control System – IOCS). Com isso, possibilitava-se a interdependência de dispositivos, o que trouxe avanços, como o conceito de canal, que permitia a transfe- rência de dados entre dispositivos de E/S e a memória principal, sem a participação da CPU (UCP – Unidade Central de Processamento). A segmentação no uso dos computadores – divididos em computa- dores científicos de larga escala, usados em processamento científico e em computadores comerciais e utilizados por bancos, companhias de seguro e departamento de recursos humanos, que realizavam ope- rações de pesquisa de arquivos em fita magnética e a impressão de relatórios – marcou o surgimento da terceira fase de computadores, abrangendo aqueles criados entre 1965 e 1980. Entretanto, o desenvolvimento e o suporte de duas linhas de pro- dutos diferentes, uma para uso científico e outra para uso comercial, representavam um grande desafio para os fabricantes na época, pois os clientes, inicialmente, necessitavam de máquinas mais simples e, gradualmente, foram exigindo mais agilidade no processamento e au- mento na capacidade de armazenamento. Mesmo com a atualização de seu equipamento, o usuário poderia encontrar dificuldade em exe- 14 Sistemas Operacionais cutar mais rápido um programa que foi desenvolvido na sua máquina inicial, mais simples que a atual. Buscando solucionar o problema de performance e de armazena- mento, a International Business Machine (IBM) lançou a série 360, com- posta de máquinas compatíveis entre si. A série começava com o 1401, um computador menos potente, chegando até o IBM 7094, o computa- dor mais potente da série. A diferença entre os computadores estava no preço e na performance, em virtude da quantidade de memória, da velo- cidade do processador, do número de dispositivos de E/S etc. A compa- tibilidade dos programas a serem executados nos computadores dessa série era garantida por uma arquitetura comum entre eles e um mesmo conjunto de instruções básicas. Com a série 360, a IBM conseguia unir, em um mesmo conjunto de computadores, a utilização tanto para uso científico como para uso comercial. Uma outra inovação trazida pela IBM, na série 360, foi a utilização dos Circuitos Integrados (CI) ou Small Scale Integration (SSI) na sua fabrica- ção, o que trouxe um resultado de preço e performance muito superior quando comparado com os computadores da fase anterior, construídos com transistores individuais. O sucesso da série 360, que trouxe o con- ceito de uma família de computadores compatíveis, fez com que os ou- tros fabricantes adotassem, rapidamente, essa ideia. Realmente, a ideia da IBM era muito boa: a criação de uma família de computadores que atendessem ao processamento comercial e ao científico, de modo eficiente, e que permitissem qualquer programa. Entre esses programas, estava o sistema operacional OS/360, nativo tanto nas máquinas pequenas, que desenvolviam atividades mais sim- ples e gerenciavam poucos periféricos, como nas máquinas maiores, que realizavam cálculos matemáticos mais complexos e possuíam uma variedade muito grande de dispositivos de E/S. Na prática, a ideia de compatibilidade da série 360 acabou se revelan- do um grande problema, pois o OS/360, sistema operacional da série, era muito complexo, sendo três vezes maior do que os sistemas operacionais utilizados em computadores mais antigos. O OS/360 possuía muitos códi- gos escritos em linguagem de máquina, apresentando um número grande de erros, que, à medida que eram resolvidos, revelavam novos erros. Mesmo diante da complexidade, tamanho e erros de execução, o sis- tema operacional OS/360 e os sistemas operacionais de outros fabrican- Introdução aos sistemas operacionais 15 tes, que seguiram o seu modelo, foram bem recebidos pelos usuários, pois introduziam novas técnicas até então não disponíveis nos sistemas operacionais, como a multiprogramação, que permitia a execução si- multânea de vários programas por meio do compartilhamento de acesso à memória principal, ocupando em cada um deles um espaço reservado. A evolução trazida pelo OS/360 e os sistemas de outros fabricantes não mudou o fato de que o processamento ainda era realizado em lote, ou seja, eles ainda eram sistemas batch. Além disso, em virtude da auto- matização de muitas tarefas, os programadores começaram a sentir fal- ta do tempo em que tinham acesso ao computador por horas seguidas e podiam consertar, com mais agilidade, os seus jobs. O grande desafio era que os programadores daquela época não estavam presentes quan- do seus programas eram executados – eles os deixavam em cartões perfurados ou fitas de computador, aos cuidados do operador de sis- tema responsável por carregá-los no computador para execução. Caso ocorresse um erro durante a execução, o job era paralisado e somente poderia ser executado novamente depois de ser corrigido, o que o fazia entrar, mais uma vez, na fila de espera por carregamento e execução. Com a padronização obtida pelos computadores da série 360, ao uti- lizar seu modelo mais potente, o IBM 7094, evidenciou-se que, nas apli- cações científicas, as operações de E/S não eram usadas com frequência; o contrário acontecia nas aplicações comercias, que utilizavam muito os dispositivos de E/S, acarretando uma ociosidade por parte do processa- dor que, ao finalizar o job atual, ficava esperando o encerramento das operação de E/S. Isso não era perceptível para as aplicações científicas, mas para as comerciais representava uma perda de 80 a 90% de tem- po. A observação dessa diferença de comportamento e do desperdício no uso do processador trouxe à tona um problema que precisava ser solucionado. O conceito de compartilhamento de tempo (time sharing), uma va- riante da multiprogramação, surgiu em resposta à necessidade de se conseguir melhores tempos de resposta no processamento. Com a im- plantação do compartilhamento de tempo, cada usuário passou a aces- sar um terminal que não possuía capacidade de processamento e que era on-line, isto é, ligado diretamente ao computador por uma conexão ativa. Por meio desse terminal, os programadores poderiam se comuni- car com seus programas em tempo de execução. Porém, para que essa técnica pudesse ser disseminada, eram necessárias ações de proteção 16 Sistemas Operacionais do hardware do computador, que passou a ser acessado pelos programadores. Entre os sistemas operacionais, que faziam uso de time sharing na terceira fase dos computadores, podemos citar: Vyacheslavikus/Shutterstock O sistema Multiplexed Information and Computing Service (Multics) – desenvolvido pelo MIT, General Electric (GE) e Bell Laboratories para substituir o CTTS. Seus desenvolvedores foram os primeiros a utilizar o termo processo para descrever um programa em execução no sistema operacional. Também foi o primeiro sistema operacional escrito com uma linguagem de alto nível (EPL) e não uma linguagem de montagem (assembly). Control Program/ Conversational Monitor System (CP/CMS) – programa de controle/ sistema monitor conversacional –, que eventualmente evoluiu para o sistema operacional Virtual Machine (VM) – máquina virtual –, desenvolvido pelo Cambridge Scientific Center da IBM. Compatible Time- -Sharing System (CTTS), traduzido como sistema compatível de tempo compartilhado, desenvolvido pelo Massachusetts Institute of Technology (MIT). Time sharing system (sistema de tempo compartilhado), desenvolvido pela IBM. Uma das conquistas dessa fase foi a diminuição do tempo de retorno, isto é, o tempo entre a submissão de um job e o retorno de seus resultados foi reduzido para minutos ou até segundos.Assim, o programador não precisava esperar muito tempo para corrigir os erros mais simples; ele dava entrada no programa e realizava a com- pilação, na qual recebia uma lista dos erros de sintaxe. Isso permitia a execução, depuração, correção e conclusão do programa com eco- nomia de tempo. Os sistemas operacionais TSS, Multics e CP/CMS incorporavam o conceito de memória virtual, em que os programas conseguiam endereçar mais localizações de memória do que as providas pela memória principal, também chamada de memória real ou física. Isso permitia que os programadores se preocupassem com o desen- volvimento das aplicações e não precisassem mais atuar no geren- ciamento de memória. Introdução aos sistemas operacionais 17 Tendo sido concebido e implementado, em 1969, na AT&T Bell Laboratories, por Ken Thompson, Dennis Ritchie, Douglas McIlroy e Joe Ossanna, o sistema operacional Unix foi lançado em 1971, todo escrito em linguagem assembly. Sua versão original foi substituída, em 1973, por uma nova versão, reescrita por Dennis Ritchie, com a lin- guagem de programação C – uma linguagem de alto nível, que garan- tiu a portabilidade do Unix para outras plataformas de computador. Assim, o Unix cresceu rapidamente e se disseminou por institui- ções acadêmicas e empresas, pois, em virtude de uma lei antitrus- te, que proibia a AT&T de entrar no ramo de computadores, o seu código-fonte precisou ser licenciado. Os computadores na década de 1970 foram marcados por algu- mas evoluções, como: a. o aumento na comunicação entre sistemas de computadores nos EUA, graças ao uso dos padrões Transmission Control Protocol/Internet Protocol (TCP/IP), criados pelo departamento de defesa americano, que passaram a ser utilizados em larga escala, especialmente no meio militar e acadêmico; b. o padrão Ethernet, desenvolvido pelo Palo Alto Research Center (PARC) da Xerox, que popularizou a comunicação em redes locais (Local Area Network – LAN); c. o microprocessador comercial criado pela Intel, tendo como destaque o modelo 8080, que serviu de base para os primeiros microcomputadores pessoais, e fazendo uso do sistema operacional Control Program Monitor (CP/M), também criado pela Intel. Em virtude dessas evoluções e com o aumento da transferência de dados em ambientes vulneráveis, a segurança se tornou um proble- ma. Isso aumentou a responsabilidade dos sistemas operacionais, que passaram a atender as novas demandas, como as funcionalidades de redes e de segurança, além da melhoria no desempenho, por causa das demandas comerciais. O desenvolvimento da integração de circuitos em grande esca- la (LSI – Large-scale Integration) marcou o início da quarta fase de computadores, produzidos a partir de 1981, época em que surgi- ram os chips, nos quais milhares de transistores estavam encapsu- lados em 1 cm² de silício. Esse fato permitiu o desenvolvimento do conceito de computador pessoal. 18 Sistemas Operacionais O surgimento de softwares, como planilhas de cálculo, editores de texto, bancos de dados e pacotes gráficos, ajudou a dar impulso à revo- lução da computação pessoal, criando uma demanda entre as empresas, as quais podiam usar esses aplicativos para aumentar sua produtividade. Nessa fase, a aquisição de computadores por empresas ou univer- sidades foi facilitada pelo surgimento de oferta dos minicomputado- res – como os da classe PDP-11, desenvolvidos pela Digital Equipment Corporation (DEC) –, que não eram muito diferentes em termos de ar- quitetura dos computadores pessoais. Também, nessa fase, surgiu o conceito de rede, que permitia a troca de informações entre os computadores pessoais ligados a ela. A evolu- ção desse conceito é a internet, com a qual a maioria dos computado- res pessoais estão conectados atualmente. Os computadores pessoais mais poderosos passaram a ser chamados de workstations (estações de trabalho) e eram usados nas mais diferentes atividades. Com o desenvolvimento e a disseminação dos computadores, os softwares também precisaram passar por uma evolução, para que se tornassem o mais amigável possível para o usuário, ocultando toda a ló- gica envolvida no funcionamento do computador. Assim, foram criadas as Graphicals User Interfaces (GUI) – interfaces gráficas com o usuário –, pelo PARC da Xerox, que também desenvolveu o mouse. A aplicação dessas interfaces se deu de maneira intensa na criação dos sistemas operacionais. No Apple Macintosh (Figura 3), lançado em 1984, a GUI estava embutida no sistema operacional, padronizando o aspecto de todas as aplicações. Nessa fase, podemos destacar sistemas operacionais, como: o MS-DOS, lançado em 1981, pela Microsoft, para ser utilizado no Personal Computer (PC) da IBM; o System OS, cria- do pela Apple; e o Windows, também criado pela Microsoft, com base em um ambiente gráfico, sobreposto ao MS-DOS. No segmento de mini e superminicomputadores, destacaram- -se os sistemas multiusuários, compatíveis com Unix e o VMS da DEC. O ano de 1983 marcou o início de uma revolução no desen- volvimento de software. Nesse ano, Richard Stallman, um ex- -funcionário da IBM, ex-aluno de Harvard e desenvolvedor do MIT, fundou o movimento de software livre, que buscava obter e Figura 3 Apple Macintosh Kevin chen20 03/Wikimedi a Commons Introdução aos sistemas operacionais 19 garantir certas liberdades para os usuários, como o direito de executar, estudar e modificar o software, além de a liberdade de distribuir cópias desse software, com ou sem alterações. O lançamento do Projeto GNU, também criado por Stallman, representou o marco de início do mo- vimento de software livre. O objetivo do projeto era criar um sistema operacional, chamado GNU, com base em software livre. Esse projeto é mantido, atualmente, pela Free Software Foundation (FSF) – Fundação para o Software Livre – fundada por Stallman, em 1985. O núcleo (core) do sistema operacional Linux começou com um projeto particular de Linus Torvalds, inspirado no Minix, um pequeno sistema operacional baseado no Unix, que foi criado por Andrew S. Tanenbaum para fins acadêmicos. Na década de 1980, foram desenvolvidos os sistemas operacionais distribuídos, que trabalham com vários processadores. Esse conceito foi popularizado pelo modelo cliente/servidor (client/server), em que os clientes são os computadores de usuários que requisitam vários serviços, e os servidores são computadores que executam os serviços requisitados. Muitas vezes, os servidores eram dedicados a um tipo es- pecífico de tarefa, como: renderização de gráficos, gerenciamento de banco de dados ou hospedagem de páginas web. A utilização de vários processadores, por parte dos sistemas distribuí- dos, levou à necessidade de se melhorar os algoritmos de escalonamen- to de processador, a fim de aprimorar o grau de paralelismo do sistema. Os softwares de redes e as redes de computadores passaram a ocupar um lugar de destaque nos sistemas operacionais, permitindo o acesso a outros sistemas computacionais, independentemente do fa- bricante, estado ou, até mesmo, país. O multiprocessamento, isto é, a adição de mais processadores ao computador, marcou o final dos anos 1980. Esse avanço veio para atender à exigência das aplicações na realização de volumes de cálcu- los gigantescos. Diante disso, os sistemas operacionais precisaram se atualizar com novos mecanismos de controle e sincronismo, garantin- do a execução simultânea de mais de um programa ou, ainda, a execu- ção de um mesmo programa em processadores diferentes. Entre as novas tecnologias que foram introduzidas, com a utilização do multiprocessamento, garantindo o aumento de performance dos computadores, podemos destacar: https://pt.wikipedia.org/wiki/Sistema_operacional https://pt.wikipedia.org/wiki/Sistema_operacional https://pt.wikipedia.org/wiki/GNU https://pt.wikipedia.org/wiki/Software_livre 20 Sistemas Operacionais O uso dos processadores vetoriais ou processadores de matriz, que implementavam um conjuntode instruções no formato de matrizes unidimensionais de dados, chamadas vetores. Diferentemente dos processadores escalares, cujas instruções operavam em itens de dados individualmente, essa abordagem garantia um melhor desempenho em simulações numéricas. Tendo surgido no início da década de 1970 e dominado os projetos de supercomputadores até os anos 1990, o surgimento dos microprocessadores, com uma melhor relação entre preço e desempenho, pôs fim à sua utilização. O uso das técnicas de paralelismo, que permitem a execução simultânea das tarefas. Os sistemas operacionais desenvolvidos na década de 1990 foram marcados por uma interface mais amigável com o usuário; as capa- cidades de GUI, incluídas pela Apple no seu sistema operacional, e o System OS, nos anos 1980, foram ampliados e melhorados. A possibili- dade de o usuário adicionar e remover componentes de hardware (plu- g-and-play – ligar e usar) sem ter de reconfigurar o sistema operacional tornaram-se reais. Os usuários passaram a autenticar seu acesso ao sistema operacional, mantendo o seu perfil e permitindo a personaliza- ção da interface, diferenciando-a dos demais usuários. O núcleo do Linux, versão 0.02, foi lançado por Linus Torvalds em 1991. No ano seguinte, ele mudou a licença do núcleo do Linux para a licença GPL (General Public License), criada pelo Projeto GNU, que foi, inicialmente, utilizado por programadores, que interagiam por linhas de comando. Atualmente, esse projeto é usado por grupos de desenvolve- dores que criam interfaces gráficas para diferentes distribuições GNU/Li- nux, tornando-o um sistema operacional mais acessível. O projeto reúne muitos programadores, de diversas partes do mundo, que contribuem com o desenvolvimento do Linux, tornando o projeto um exemplo de sucesso colaborativo no desenvolvimento de um sistema operacional. O Linux é disponibilizado aos usuários por meio de várias distri- buições, como: Arch Linux, CentOS, Debian, Fedora Linux, Linux Mint, openSUSE, Ubuntu etc. Os usuários corporativos fazem uso de distri- buições focadas nesse público, como Red Hat Enterprise Linux ou SUSE Linux Enterprise Server. Uma distribuição Linux inclui: o núcleo Linux, bibliotecas e utilitários, além de aplicações, como a suíte de escritório denominada LibreOffice. Introdução aos sistemas operacionais 21 Nos anos 2000, um número cada vez maior de computadores passou a conseguir realizar paralelismo maciço, pois possuíam uma grande quantidade de processadores, permitindo que partes indepen- dentes das operações pudessem ser executadas em paralelo. Esse é um conceito drasticamente diferente da computação sequencial das fases iniciais das máquinas. A computação em dispositivos móveis, como celulares e tablets, tor- nou-se cada vez mais comum à medida que os processadores ficavam menores e mais poderosos. O que era utilizado, inicialmente, para opera- ções como e-mail, navegação web e fotos, hoje é utilizado por aplicações intensivas em recursos, como videoconferências. Apesar de limitados pelo tamanho, os dispositivos móveis dependem da computação distribuída para atender à sua demanda crescente de dados e processamento. 1.2 Ambientes de sistemas operacionais Vídeo Atualmente, os computadores são utilizados por usuários no seu dia a dia, em computadores pessoais (desktops), notebooks, estações de trabalho (workstations) ou dispositivos móveis (celulares e tablets); ou corporativamente, por meio de servidores web, servidores de ban- cos de dados, entre outros. Isso fez com que os sistemas operacionais tivessem de se relacionar com um crescente número de recursos de hardware, como: memória principal, discos de alta capacidade, dis- positivos periféricos etc. Somado a isso, do outro lado, há o sistema operacional que se responsabiliza pela execução de uma infinidade de aplicações (software) com diferentes finalidades (Figura 8). Aplicação Espaço do usuário Espaço do núcleo Componentes do SO Aplicação Interface de chamada ao sistema Aplicação Figura 4 Interação entre as aplicações e o sistema operacional Fonte: Deitel; Deitel; Choffnes, 2005. 22 Sistemas Operacionais Diante dessa diversidade de hardware e software, os sistemas ope- racionais precisaram se adaptar a diferentes tipos de ambientes. 1.2.1 Sistemas embarcados Segundo Stallings (2017), bilhões de sistemas operacionais são pro- duzidos anualmente. Os sistemas embarcados são computadores de- dicados ou embutidos, presentes em equipamentos que estão a nossa volta, sendo chamados de computadores pervasivos ou ubíquos. Segun- do Li (2003), os usuários muitas vezes não percebem sua existência, mas podemos encontrá-los nos eletroeletrônicos, hardwares de rede, equipamentos hospitalares, automóveis etc. Ao desenvolver sistemas operacionais para sistemas embarcados, a grande preocupação está em gerenciar, de maneira eficiente, os re- cursos disponíveis. Como estamos falando de dispositivos de pequeno porte, a capacidade de armazenamento é limitada, levando à necessida- de da construção de sistemas operacionais que atendam aos serviços necessários, com uma pequena quantidade de código. Outros pontos a serem observados nesse tipo de sistema são: gerenciamento de energia (bateria) e a necessidade de interfaces amigáveis para os usuários. 1.2.2 Sistemas de tempo real Com a disseminação do uso de sistemas computacionais, as aplica- ções com requisitos de tempo real tornaram-se cada vez mais comuns, variando em relação à complexidade e às necessidades de garantia no atendimento das restrições temporais. Assim, elas abrangem desde os sistemas mais simples, como os controladores inteligentes embarca- dos em utilidades domésticas (por exemplo, as lavadoras de roupa e os DVD players), até os sistemas mais complexos, como os sistemas militares de defesa e os de controle de tráfego aéreo. Mesmo sendo caracterizadas como aplicações de tempo real, algumas delas apresen- tam restrições de tempo mais rigorosas do que outras; entre elas, po- demos destacar os sistemas responsáveis pela respiração artificial de pacientes, que estão internados em Unidades de Terapia Intensiva (UTI) de hospitais, e os sistemas embarcados em robôs e veículos (automó- veis, aviões e sondas espaciais). Para exemplificar, o piloto automático de uma aeronave deve ajustar, constantemente, a velocidade, altitude e direção. Há, porém, aplicações que não apresentam restrições tão crí- Introdução aos sistemas operacionais 23 ticas, como: os consoles de games, as teleconferências e as aplicações de multimídia. Todas essas aplicações, que apresentam a característica adicional de estarem sujeitas a restrições temporais, são agrupadas no que é usualmente identificado como sistemas de tempo real. Ao desenvolver sistemas operacionais para sistemas de tempo real, é necessário assegurar que os processos respondam imediatamente aos eventos críticos. Os sistemas de tempo real não críticos devem garan- tir a execução das tarefas de tempo real com alta prioridade, mas sem a garantia de que elas sejam concluídas a tempo ou que, até mesmo, sejam concluídas. Já os sistemas de tempo real críticos garantem que todas as tarefas serão concluídas a tempo. Muitas vezes, os sistemas de tempo real são usados em sistemas de missão crítica, um sistema es- sencial para a sobrevivência de uma empresa ou organização – ou seja, quando esse tipo de sistema falha, as operações param e o negócio, por sua vez, é afetado. 1.2.3 Sistemas críticos em negócios Um sistema é considerado um sistema crítico em negócios quan- do falha e pode resultar em perdas econômicas significativas para a empresa que o utiliza. Podemos citar como exemplos os servidores web e os servidores de bancos de dados. Os sistemas operacionais garantem aos sites de comércio eletrôni- co (e-commerce) um tempo de resposta rápido ao usuários que estão comprando produtos pela internet; no uso corporativo, eles permitem o compartilhamento de informações entre funcionários.1.2.4 Máquinas virtuais O conceito de máquina virtual (virtual machine – VM) permite a um programa agir como um computador completo, com um sistema opera- cional funcional. Assim, temos um computador sendo executado dentro de outro computador. Para que isso aconteça, um programa cliente é uti- lizado como uma camada de virtualização entre o sistema operacional do computador hospedeiro e o sistema operacional do computador virtual. A virtualização não é semelhante à emulação, em que os recursos de um programa ou sistema são copiados e executados com o compu- tador hospedeiro. Na virtualização, a VM consegue operar de maneira independente e isolada, conseguindo executar o sistema operacional, 24 Sistemas Operacionais mesmo que esse seja incompatível com a arquitetura utilizada no com- putador hospedeiro. Chamamos esse recurso de portabilidade – a capacidade de o software ser executado em várias plataformas. Os recursos da máqui- na virtual são gerenciados pelo sistema operacional dela. Uma das faci- lidades oferecidas pela virtualização é permitir que várias instâncias de sistemas operacionais diferentes possam ser executadas, simultanea- mente, em um computador hospedeiro. Dessa forma, podemos ter um computador hospedeiro fazendo uso do sistema operacional Windows, que executa VMs com diferentes versões de Linux. As VMs fazem interface, via sistema operacional, com o hardware do computador em que estão instaladas. Uma VM é capaz de criar componentes de software que representam dispositivos físicos – como processadores, memória, canais de comunicação, discos etc. –, o que permite o compartilhamento de hardware entre vários usuários (Figura 5). A Java Virtual Machine (JVM) – máquina virtual java – é umas das VMs mais utilizadas, servindo como fundamentação da plataforma Java. Ela permite que as aplicações Java sejam executadas na versão correta de JVM, independentemente da plataforma em que esteja instalada. Empresas como a VMWare Software e Oracle fornecem máquinas vir- tuais, baseadas na arquitetura Intel, permitindo a execução de sistemas operacionais Linux e Windows, simultaneamente, em um só computador. Aplicações Aplicações Aplicações Máquina Virtual Aplicações Aplicações Linux Sistema operacional Windows Unix Camada de hardware virtual Camada de hardware físico Software Processador Memória Disco Fonte: Deitel; Deitel; Choffnes, 2005. Leia o livro Sistemas operacionais de tempo real e sua aplicação em sistemas embarcados para encontrar uma introdução teórica sobre sistemas de tempo real, além de exemplos de sua aplicação. DENARDIN, G. W.; BARRIQUELLO, C. H. 1. ed. São Paulo: Blucher, 2019. Livro Figura 5 Diagrama de uma máquina virtual Introdução aos sistemas operacionais 25 As VMs tendem a ser menos eficientes do que os computado- res reais, pois não acessam o hardware diretamente ou simulam o hardware que não está conectado no computador hospedeiro, o que aumenta o número de instruções de software requeridas para cada ação de hardware. 1.3 Componentes e objetivos dos sistemas operacionais Vídeo Nesta seção, apresentaremos os principais componentes de um sistema operacional, assim como os principais objetivos a serem al- cançados por um sistema operacional, isto é, suas características con- sideradas essenciais. 1.3.1 Componentes centrais do sistema operacional A interação do usuário com o sistema operacional é feita pelas aplicações ativadas por ele ou por meio de uma aplicação especial chamada shell, que atua como um interpretador de comandos. A im- plementação dos interpretadores de comandos é feita pelas interfaces de texto, que recebem os comandos dos usuários via teclado ou pela interface gráfica (GUI), em que o usuário interage com o mouse, requi- sitando a execução de serviços para o sistema operacional, como abrir um aplicativo. Os sistemas operacionais modernos, que fazem uso de GUI, possuem alternativas nas quais o usuário pode abrir um terminal e digitar os seus comandos via teclado. Segundo Deitel, Deitel e Choffnes (2005), o software que contém os componentes centrais do sistema operacional chama-se núcleo (kernel). Entre os componentes centrais do sistema operacional, estão: Escalonador de processos Sendo responsável pela decisão sobre o momento em que um pro- cesso acessará a CPU, o escalonador de processos é um subsistema, do sistema operacional, que faz uso de algoritmos de escalonamento para estabelecer a lógica de sua execução. Ele pode variar de acordo com o tipo de utilização do sistema operacional. É necessário que exista atenção, por parte do sistema operacional, para os processos que precisam de mais processamento, isto é, mais 26 Sistemas Operacionais atividade da CPU, ocupando-a por mais tempo e possuindo pouca, ou nenhuma, interação por parte do usuário. Como exemplo, temos a exe- cução de um programa de cálculo científico, no qual os parâmetros são inseridos pelo usuário, o qual inicia a execução do programa, que de- morará um certo tempo para exibir o resultado, período em que fará uso da CPU. O programa faz uso dos dispositivos de E/S somente na fase inicial, quando o usuário inseriu os dados, e no momento final, quando o sistema exibe o resultado do cálculo. Esse comportamento de processo é chamado de processo orientado à CPU (CPU bound). Pode parecer simples, mas o ato de teclar e, depois disso, o que foi digitado aparecer na tela exige do sistema operacional um processo de entrada/saída pela CPU, várias vezes, dentro de um pequeno intervalo de tempo. Esse comportamento de processo é denominado processo orientado à E/S (In/Out bound). Os casos representados na figura a seguir mostram os diferentes comportamentos de tais processos. Surto longo de uso de CPU Surto longo de uso de CPU Espera pela E/S Tempo (a) Processo CPU-bound ou orientado a CPU (b) Processo I/O-bound ou orientado a E/S Figura 6 Comportamento de processos Fonte: Novato, 2014. Gerenciador de memória Em sua grande maioria, os computadores fazem uso do conceito de hierarquia de memória. No topo dessa hierarquia, encontram-se os registradores, isto é, a memória que está dentro da CPU; eles são mais rápidos e mais caros, o que ocasiona a sua pequena quantidade. São seguidos, em uma quantidade maior, pela memória cache, que é mui- to rápida, porém inferior à dos registradores. Depois dela, encontramos Introdução aos sistemas operacionais 27 a memória principal (Random Access Memory), também conhecida como memória RAM, em maior quantidade que a sua sucessora, porém mais lenta. Por último, temos a memória de armazenamento em dis- co (Hard Disk – HD), em uma quantidade muito maior que as anterio- res, mas considerada lenta quando comparada às demais. Ao analisarmos o armazenamento de dados, em um sistema com- putacional, podemos observar que ele ocorre em diversos níveis, ou seja, em diferentes tipos de dispositivos, sempre levando em conta os seguintes fatores: a. o tempo de acesso ao dispositivo; b. a velocidade com que a operação deverá ser realizada; c. o custo da unidade de armazenamento; d. a capacidade de armazenamento do dispositivo. Tomando essa afirmação como base, ao realizar um projeto de siste- ma operacional, devemos definir a quantidade de cada tipo de memó- ria que será necessária utilizarmos para garantir que o futuro sistema seja, simultaneamente, eficiente e viável do ponto de vista financeiro. Isso porque a velocidade, o preço e a capacidade de armazenamento “andam de mãos dadas” quando falamos em memória. Quanto mais rápida ela for, mais cara será, e menor será a sua capacidade de arma- zenamento. A figura a seguir apresenta uma representação da hierar- quia de memória. Velocidade: Altíssima Custo: Altíssimo Capacidade: Pouquíssimo Tamanho: Muito pequeno Energizado: Sim Velocidade: Altíssima Custo: Altíssimo Capacidade: Muito pouco Tamanho: Muito pequeno Energizado: Sim Velocidade: Alta Custo: Médio Capacidade: Alta Tamanho:Razoável Energizado: Sim Velocidade: Baixa Custo: Baixíssimo Capacidade: Muito alta Tamanho: Grande Energizado: Não Registradores CPU cache Dispositivos de armazenamento em massa RAM Fonte: Pendrive..., 2015. Figura 7 Hierarquia de organização da memória 28 Sistemas Operacionais Cabe ao gerenciador de memória comandar a hierarquia da me- mória, isto é, controlar as partes da memória que estão em uso e as que não estão, de modo a: alocar a memória aos processos, quando for necessário; liberar a memória, quando um processo terminar; tratar do problema de swapping, isto é, quando a memória é insuficiente. Vyac hes lav iku s/ Sh ut te rs to ck Desse modo, existem dois tipos de memória principal. Quando um programa precisa alocar espaço em memória, ele faz uso da memó- ria lógica, que é a memória visível e manipulada pelos programas. Essa memória, acessada pelos programas, existe na memória física, implementada por Circuitos Integrados (CI). Isso ocorre graças à ação de uma unidade de gerência de memória, que realiza a tradução dos endereços lógicos em endereços físicos, permitindo que um programa alocado na memória lógica possua um endereço de memória física cor- respondente. Em geral, a memória lógica tem tamanho igual ou maior que a memória física. 1.3.1.1 Gerenciador de E/S O sistema operacional encontra no Gerenciador de E/S um par- ceiro para realizar uma das principais e mais complexas atividades no computador. Para isso, o gerenciamento de dispositivos de E/S é estruturado em camadas, nas quais os níveis mais baixos ocultam as caraterísticas de cada um dos dispositivos físicos das camadas superio- res, permitindo que as aplicações executadas pelo usuário atuem sem conhecer a arquitetura do hardware utilizado pelas operações de E/S. A existência de diferentes modelos de dispositivos de E/S, com ca- racterísticas diferentes entre si, levou os projetistas de sistemas opera- cionais a desenvolverem uma camada chamada de subsistema de E/S, que permite o isolamento desses dispositivos e sua ampla gama de variações. Com isso, o sistema operacional ganha flexibilidade, conse- guindo realizar a comunicação entre as aplicações e qualquer tipo de dispositivo de E/S. Introdução aos sistemas operacionais 29 A comunicação do dispositivo de E/S com a camada do subsistema de E/S é feita pela camada conhecida como device driver, que se respon- sabiliza pelos aspectos técnicos dessa comunicação, como a velocidade da operação, a unidade de transferência, a representação dos dados e os tipos de operações a serem realizados. Essas camadas são divididas em dois grupos: o primeiro grupo é responsável por permitir a visualização de todos os dispositivos de modo único, sem distinção; já o segundo grupo atua de manei- ra específica para cada um dos dispositivos. Em sua maioria, as camadas atuam de modo independente dos dispositivos de E/S (Figura 8). Figura 8 Camadas da gerência de dispositivos Representação das camadas que realizam o gerenciamento dos dispositivos de E/S. Processo Independente do dispositivo (a) Dependente do dispositivo (b) M od o ke rn el M od o us uá rio So ftw ar e H ar dw ar e Operações de E/S Subsistema de E/S Device drivers Controladores Dispositivo de E/S Sistema de arquivos Fonte: Machado; Maia, 2013. 30 Sistemas Operacionais O subsistema de E/S (system calls) desempenha um papel muito importante, pois busca simplificar a interação entre o usuário e as aplicações, isolan- do a complexidade dos dispositivos de E/S de suas operações, que são diferentes entre cada um dos dispositivos, e sua relação com as demais camadas – por exemplo, sistemas de arquivos, banco de da- dos e aplicações (Figura 9). As rotinas de E/S são um conjunto de rotinas espe- ciais que cuidam dos detalhes das operações de leitura e escrita a serem realizadas pelo sistema operacional, como o passo a passo que deve ser feito na gravação de um arquivo. Isso acontece sem que o usuário e a aplicação se preocupem com essa tarefa, que passa a ser de responsabilidade do subsistema de E/S. A comunicação do subsistema de E/S com os dis- positivos é feita por meio dos controladores de E/S, o device driver (ou somente driver). Cabe ao subsiste- ma de E/S gerenciar as funcionalidades de todos os dispositivos de E/S ligados ao computador, enquan- to o driver se responsabiliza pelas particularidades de cada um dos dispositivos (Figura 9). Os dispositivos de E/S enviam comandos gerais de leitura e escrita para os seus device drivers, os quais traduzem esses comandos para comandos es- pecíficos de leitura e escrita, que poderão ser execu- tados pelo controlador de E/S do dispositivo. Os controladores de E/S são os dispositivos de hardware responsáveis por interagir com os disposi- tivos de E/S. Existe um controlador de E/S para cada tipo de dispositivo de E/S, por exemplo, disco rígido, impressora, webcam etc. A comunicação entre os dois é possibilitada pelo device driver, que faz a tra- dução das instruções recebidas dos dispositivos e as converte para um padrão compreensível pelo con- trolador. Os controladores podem estar acoplados à CPU por meio de uma placa ou implementados na própria placa do processador. Figura 9 Subsistema (system calls) de E/S Comandos de E/S Bibliotecas Rotinas de E/S Device drivers Dispositivos de E/S Aplicação System calls de E/S Fonte: Machado; Maia, 2013. Driver de impressora Controlador de impressora Driver de disco Controlador de disco Driver de fita Controlador de fita Figura 10 Device driver Subsistema de E/S Processo Fonte: Machado; Maia, 2013. Introdução aos sistemas operacionais 31 No sistema operacional Windows, da Microsoft, os device drivers são desenvolvidos com base em um padrão chamado Windows Driver Model (WDM), responsável por definir um conjunto de características e funções a serem oferecidas por um driver. Esse padrão é homologado pela Microsoft, permitindo que o sistema operacional possa efetuar ta- refas, como: suporte ao plug-and-play (ligar e usar), acesso a múltiplos processadores, gerência de energia dos dispositivos e interação com os objetos do sistema operacional (Figura 11). Figura 11 Janela do Device Manager (gerenciador de dispositivos) do Windows No sistema operacional Unix, o gerenciador de E/S foi desenvolvi- do de modo integrado ao sistema de arquivos, permitindo acesso aos dispositivos de E/S por meio de arquivos especiais, que podem ser acessados como qualquer outro arquivo pelas system calls de leitura e gravação, enviando o mesmo dado para diferentes tipos de saída e garantindo às system calls de E/S a uniformidade na manipulação de 32 Sistemas Operacionais qualquer tipo de dispositivo de E/S. Esses arquivos especiais são arma- zenados no diretório do sistema operacional Unix. Em suas versões mais recentes, os sistemas operacionais Unix/ Linux passaram a permitir que os drivers dos dispositivos de E/S pudessem ser acoplados ao núcleo com o sistema operacional em fun- cionamento, sem a necessidade de se compilar e gerar um novo kernel ou mesmo efetuar o reboot (reinicialização) do sistema operacional para reconhecê-lo. A transferência dos dados, recebidos pelos dispositivos de E/S, para o sistema operacional é feita pelos controladores de E/S por meio de blocos de informação. Os dispositivos de E/S são responsáveis pela comunicação do computador com o mundo externo, sendo classifica- dos como dispositivos de entrada de dados, saída de dados ou ambos (entrada e saída). 1.3.1.2 Gerenciador de comunicação interprocessos (IPC) Para garantir a interdependência dos processos, os sistemas opera- cionais implementaram alguns mecanismos, com os quais os processos são executados em cápsulas autônomas, de modo que sua execução não afete a dos demais. O hardware também faz sua parte, oferecendo proteção à memória e garantindo que um processo não ocupe o mes- mo espaço endereçado ao outro.Os processos, entretanto, interagem e cooperam na execução de tarefas. Em muitos casos, os processos precisam trocar informação de maneira controlada para: a. dividir tarefas e aumentar a velocidade de processamento; b. aumentar a capacidade de transferência de dados (rede); c. atender a requisições simultâneas. Para atender a essa demanda, o sistema operacional fornece me- canismos que permitem aos processos se comunicarem uns com os outros por meio do IPC (Inter-Process Communication), um conjunto de mecanismos de troca de informação entre múltiplas threads de um ou mais processos. Os mecanismos de IPC permitem ao sistema ope- racional implementar canais de comunicação (implícitos ou explícitos) entre os processos. Introdução aos sistemas operacionais 33 Para realizar sua tarefa com eficiência, o IPC precisa se preocupar com a coordenação da comunicação, realizando a sincronização do processo, na qual o processo emissor precisa informar que um dado foi transmitido e o processo receptor precisa saber que o dado en- viado está disponível, informando aos dois quando podem realizar uma nova comunicação. Os processos podem se comunicar das seguintes formas: inter- namente, quando dois módulos de um mesmo processo se comuni- cam; entre dois processos diferentes, em um mesmo computador; ou externamente, quando dois processos em computadores dife- rentes se comunicam. Para realizar sua tarefa, o IPC pode fazer uso dos seguintes mo- delos de comunicação. a. Difusão (broadcast): quando o receptor envia a mesma mensagem para um grupo de receptores, sem saber quem são eles. b. Produtor-consumidor: quando existe somente um emissor e um receptor, com a comunicação unidirecional entre eles. c. Cliente-servidor: quando o cliente, que pode ser um computador, programa ou processo, solicita uma requisição para um servidor, que também pode ser um computador, programa ou processo. d. Peer-to-Peer (P2P): quando cada um dos nós (computadores, programas ou processos) que participam da comunicação atuam como servidores ou clientes. e. Caixa de correio (mailbox): quando a comunicação entre o emissor e o receptor funciona como uma caixa de correio, na qual o receptor não escolhe o emissor que lhe escreveu a mensagem. Pode ser classificada em dois tipos: a escrita não bloqueante, quando a capacidade de armazenamento da caixa de correio é ilimitada; ou de leitura bloqueante, quando a caixa de correio está vazia. f. Diálogo: quando há servidores exclusivos para cada cliente, unidos por um canal de comunicação dedicado somente a eles, que será desligado quando a comunicação entre eles acabar. 34 Sistemas Operacionais 1.3.1.3 Gerenciador de sistemas de arquivos O gerenciador de sistemas de arquivos é responsável pelo geren- ciamento dos arquivos e das operações que esses realizam, bem como pela segurança no seu acesso, garantindo que um usuário não consiga acessar um arquivo que pertence a outro usuário sem ter autorização para fazê-lo. Ele também é responsável por compartilhar arquivos en- tre os processos e usuários. O gerenciador de sistemas de arquivos acaba desempenhando o papel mais visível para o usuário do sistema operacional, pois está sempre manipulando os arquivos, criando ou editando os seus docu- mentos ou executando os aplicativos, que, para o computador, tam- bém são arquivos. Podemos definir um arquivo como sendo um conjunto de infor- mações, dados ou instruções relacionados logicamente. As visões são distintas, o usuário enxerga diferentes tipos de arquivos; mas, para o sistema operacional, um arquivo é um conjunto de registros definido pelo sistema de arquivos. O conteúdo desse arquivo vai influenciar a forma como ele será pro- cessado, por exemplo: a. um arquivo executável é composto de instruções em linguagem de máquina, que faz com que ele seja executado pelo sistema operacional; b. um arquivo de dados é constituído por dados estruturados ou não, que são lidos pelo sistema operacional; c. um arquivo de multimídia pode possuir imagem, áudio, som, vídeo etc., que será disponibilizado pelo sistema operacional para o usuário. O sistema operacional pode armazenar os arquivos em diferentes dispositivos físicos, como: fitas magnéticas, discos magnéticos, discos ópticos, entre outros. Para que isso aconteça, o sistema operacional dever criar um isolamento do tipo de dispositivo físico utilizado, per- mitindo que o sistema operacional consiga realizar a manipulação dos arquivos em diferentes dispositivos de armazenamento. Para que possa ser identificado pelo sistema operacional, um ar- quivo precisa de nome. Para isso, o sistema operacional possui algu- Introdução aos sistemas operacionais 35 mas regras particulares a serem seguidas na definição do nome do arquivo, por exemplo: o tamanho do nome, os caracteres a serem usa- dos, a distinção ou não de caracteres maiúsculos ou minúsculos, entre outras. A extensão é utilizada por alguns sistemas operacionais com parte do nome do arquivo; seu papel é identificar o tipo de conteúdo do arquivo. Para exemplificar, se pensarmos no sistema operacional Windows, quando visualizamos um arquivo com extensão .docx, sabe- mos que ele pertence ao Word. Por outro lado, se vemos um arquivo com extensão .xlsx, sabemos que ele pertence ao Excel. Os diretórios surgem como uma forma de organizar os arquivos (Figura 12), e são criados pelo gerenciador de sistemas de arquivo. Eles são uma estrutura de dados, no formato de árvore, que conterão elementos associados aos arquivos. Esses elementos vão possuir infor- mações, como a localização física do arquivo, seus nomes, a forma de organização do diretório etc. Uma regra é válida para todos os sistemas operacionais: você não pode armazenar dois arquivos com o mesmo nome em um mesmo diretório. Figura 12 Representação visual de um sistema de arquivos, com diretórios e arquivos Quando o usuário abre um arquivo no seu computador, o ge- renciador de sistemas de arquivo busca os seus dados na estrutu- ra de diretórios e efetua o armazenamento da sua localização e do seu nome em uma tabela da memória principal do computador, a qual mantém uma listagem de todos os arquivos abertos, trazendo performance à operação de acesso a esses arquivos. Esses registros permanecerão lá, enquanto os arquivos estiverem sendo utilizados 36 Sistemas Operacionais e não tiverem sido fechados; quando isso ocorre, os seus registros na tabela também são liberados. A forma mais simples de se implementar uma estrutura de dire- tórios é conhecida como nível único, em que não existem subdiretó- rios, apenas o diretório raiz, contendo todos os arquivos. Apesar de simples, esse modelo é muito limitado e não é recomendado quan- do precisamos implementar segurança no acesso aos arquivos. Para controlar a criação de arquivos, o sistema operacional preci- sa realizar o gerenciamento do espaço livre, isto é, identificar quais são os blocos e setores em disco que estão disponíveis para a cria- ção dos arquivos. O sistema consegue essa informação fazendo uma consulta à estrutura de dados em memória – uma tabela em que o sistema operacional consegue identificar os blocos livres que pode- rão ser alocados pelo novo arquivo. Ao fazer isso, esse espaço é re- movido da tabela para evitar que seja alocado por um outro arquivo. De maneira análoga, quando o usuário apaga um arquivo, os blocos em que ele estava armazenado são liberados e incluídos novamente na tabela de blocos livres. Outra preocupação do gerenciador de sistemas de arquivos é o gerenciamento do espaço alocado por esses arquivos, pois, com o decorrer do tempo, os arquivos mudam e a necessidade de espaço de armazenamento também. A importância dessa atividade se dá por estarmos falando de uma operação que pode sofrer influência direta da ação dos usuários, em um recurso com limitação de tama- nho, como ocorre, por exemplo, com o disco rígido. Além disso, faz parte das atividades do gerenciador de siste- mas de arquivospermitir o compartilhamento desses arquivos entre usuários e processos, garantindo que somente usuários e processos devidamente autorizados tenham acesso aos arquivos compartilhados. O sistema operacional implementa a proteção de acesso fazendo uso do controle de concessão de operações, isto é, leitura, gravação, execução e, em alguns momentos, exclusão. Os sistemas operacio- nais Unix/Linux permitem a ampliação das concessões de direitos aos usuários que participam do mesmo grupo daquele que está con- cedendo o direito ou, até mesmo, a outros usuários que não fazem parte do grupo do dono do arquivo. Introdução aos sistemas operacionais 37 1.3.2 Objetivos do sistema operacional De acordo com a evolução dos sistemas operacionais, os usuários passaram a considerar certas características como essenciais. Segundo Deitel, Deitel e Choffnes (2005), os objetivos a serem alcançados pelos sistemas operacionais são: a. Eficiência: característica que mede a capacidade de um sistema operacional em oferecer o máximo de serviços a diferentes aplicações, no menor espaço de tempo. b. Robustez: característica que permite ao sistema operacional ser tolerante a falhas e confiável; caso ocorra um erro de aplicação (de software ou hardware), o sistema operacional buscará minimizar a perda do trabalho realizado, tentando evitar danos ao hardware do computador. c. Escalabilidade: característica que permite ao sistema operacional fazer uso de recursos à medida que eles vão sendo acrescentados ao computador, sendo muito útil quando falamos de sistemas multiprocessados. d. Extensibilidade: essa característica garante que o sistema operacional se adapte bem ao uso de novas tecnologias, bem como que execute tarefas diferentes daquelas para as quais foi projetado. Dessa forma, a extensibilidade proporciona o aumento da flexibilidade do sistema operacional. Ao possibilitar que os usuários adaptem ou evitem o sistema operacional, os sistemas operacionais extensíveis possibilitam, em particular, que os usuários ajustem o comportamento do sistema para obterem um maior desempenho em casos específicos. e. Portabilidade: a portabilidade garante que o sistema operacional opere em muitas configurações de hardware. A portabilidade de aplicações também é importante, pois o desenvolvimento das aplicações (software) custa caro; portanto, a mesma aplicação deve ser executada em uma variedade de configurações de hardware, reduzindo os custos de desenvolvimento. f. Segurança: a segurança em um sistema operacional impede que os usuários e/ou softwares acessem os serviços ou recursos sem a devida autorização. Os mecanismos que implementam as políticas de segurança do sistema operacional são chamados de proteção. 38 Sistemas Operacionais g. Interatividade: a interatividade permite que as aplicações (software) respondam, rapidamente, às solicitações dos usuários ou aos eventos do sistema operacional. h. Usabilidade: a usabilidade concede ao sistema operacional o potencial de atender a uma base significativa de usuários. Esses sistemas operacionais, geralmente, apresentam uma interface gráfica (GUI) amigável, fácil de se utilizar. Sistemas operacionais, como Linux, Windows e MacOS, são caraterizados como utilizáveis, pois suportam muitas aplicações e fornecem uma interface-padrão para o usuário; isso não ocorre com sistemas operacionais acadêmicos ou experimentais, portanto, eles não são considerados utilizáveis. 1.4 Arquitetura de sistemas operacionais Vídeo As diferentes arquiteturas dos sistemas operacionais são resulta- do da necessidade de os computadores atenderem a diversos serviços e interagirem com os mais variados recursos de hardware e software para a execução das suas atividades. 1.4.1 Arquitetura monolítica Os primeiros sistemas operacionais, como OS/360, CP/M, MS-DOS e as versões inicias do Linux, faziam parte da arquitetura monolítica (Figura 13) – em que os componentes eram compilados em módulos separados e depois eram unidos (linkados) em um único programa executável, denominado núcleo (core) –, sendo, também, chamada de arquitetura de sistema operacional de núcleo monolítico. Os módulos do sistema operacional, os quais fazem uso desse tipo de arquitetura, eram carregados em memória e interagiam entre si por meio de funções. Figura 13 Arquitetura de sistema opera- cional de núcleo monolítico Aplicações GM E/S EP GR CEP SA Interface de chamada ao sistema GM – EP – CEP – SA – E/S – GR - ... GM= Gerenciador de memória EP = Escalonador de processador CEP = Comunicação entre processos SA = Sistema de arquivos E/S= Gerenciador de Entrada/Saída GR = Gerenciador de rede Espaço do usuário Núcleo ... Espaço do núcleo Fonte: Deitel; Deitel; Choffnes, 2005, p. 20. Introdução aos sistemas operacionais 39 A manutenção e a compreensão do código-fonte desse tipo de sis- tema são complicadas, pois é difícil isolar a fonte de problemas e de outros erros. Além disso, como todo o código é executado com acesso irrestrito ao sistema, os sistemas de núcleo monolítico são particular- mente suscetíveis a danos provocados por códigos sujeitos a erros ou mal-intencionados. 1.4.2 Arquitetura em camadas Buscando atender à evolução e complexidade das atividades rea- lizadas pelos sistemas operacionais, surgiu a arquitetura em cama- das (Figura 14), na qual o sistema operacional é composto de níveis ou camadas que se comunicam entre si. As camadas inferiores prestam serviço às camadas de nível superior, fazendo uso de uma interface, o que oculta para a camada de cima a sua implementação. O isolamento entre as camadas representa uma vantagem no uso desse tipo de arquitetura, garantindo segurança e proteção às camadas mais internas, onde está localizado o núcleo do sistema operacional. Porém, o desempenho do sistema é afetado negativamente pela troca de modo de acesso. Quando um serviço é solicitado para a camada do kernel, o sistema operacional precisará passar por várias camadas até chegar ao seu destino, realizando diversas trocas do modo de acesso du- rante o trajeto, o que constitui uma desvantagem para essa arquitetura. Aplicações do usuário H ardw are Gerenciamento de E/S Interpretador de mensagem Gerenciamento de memória Alocação de processador e escalonamento de processo hardware Camada 4 Usuário Espaço do usuário Espaço do núcleo Camada 3 Camada 2 Camada 1 Camada 0 Fonte: Deitel; Deitel; Choffnes, 2005, p. 20. Figura 14 Camadas do sistema operacional 40 Sistemas Operacionais 1.4.3 Arquitetura de micronúcleo (MicroKernel) A arquitetura de micronúcleo (MicroKernel) busca tornar o núcleo do sistema operacional o menor e mais simples possível (Figura 15). Nessa arquitetura, os componentes do sistema operacional são dispo- nibilizados como serviços. Cada serviço oferece um conjunto de fun- ções, como: gerência de arquivos, gerência de processos, gerência de memória etc. Quando uma aplicação do usuário solicita um serviço, realiza-se uma requisição ao processo responsável pelo serviço. A aplicação que solicita o serviço é chamada de cliente, e o processo que responde à solicitação é denominado servidor. O núcleo do sistema se limita a exe- cutar a comunicação entre cliente e servidor. Portanto, temos um nú- cleo muito mais simples. Figura 15 Arquitetura de sistema operacional de micronúcleo Espaço do usuário Espaço do núcleo Núcleo ... Aplicações Interface de chamada ao sistema Gerenciamento de memória Sincronização Sistema de arquivos Escalonador de processos Gerenciador de dispositivos CEP Fonte: Deitel; Deitel; Choffnes, 2005. A arquitetura de micronúcleo exibe um alto grau de modulari- dade, o que a torna extensível, portável e escalável. Com micronú- cleos, os processos executam suas funções em modo usuário, ou seja, não têm acesso a instruções privilegiadas e não têm acesso aos componentes do sistema. Apenas o núcleo executa em modo kernel. Isso garante que, caso ocorra algum erro em um processo,o sistema não ficará completamente comprometido, aumentando a sua disponibilidade. Introdução aos sistemas operacionais 41 São exemplos de sistemas operacionais, que fazem uso desse tipo de arquitetura: o GNU Hurd, desenvolvido pelo Projeto GNU, Minix e QNX e utilizado em sistemas embarcados; e o L4, desenvolvido por Jo- chen Liedtke, cientista alemão da computação, que atuou na pesquisa de microkernels. 1.4.4 Sistema Operacional de Redes (SOR) Para complementar as funções básicas de um sistema operacional, permitindo que elas possam ser utilizadas em recursos compartilhados em rede, o sistema operacional faz uso do Sistema Operacional de Redes (SOR) (Figura 16). Isso ocorre por meio da interação do Sistema Operacional Local (SOL) com o SOR, que permite a utilização de recur- sos do computador local e os recursos da rede. De maneira simples, o SOL faz uma requisição para a rede, e essa requisição é recebida pelo SOR, o qual a encaminha para um programa de comunicação, que vai buscar na rede quem poderá atendê-la. O modelo utilizado pelo SOR é o cliente/servidor, em que o compu- tador local atua como cliente, solicitando um serviço para a rede, na qual um outro computador ou dispositivo atuará como servidor, aten- dendo à demanda solicitada. Figura 16 Modelo de sistema operacional de rede cliente/servidor Disco Processador Servidor Servidor Cliente Cliente Cliente Cliente Cliente Servidor Hub Fonte: Deitel; Deitel; Choffnes, 2005. 42 Sistemas Operacionais Entre os tipos de arquitetura SOR, podemos destacar: Peer-to-Peer (P2P), na qual as máquinas interligadas atuam como clientes e servido- ras; cliente/servidor com servidor dedicado, em que há uma máquina que atua como servidora, mas executa atividades locais; e cliente/ser- vidor com servidor não dedicado, na qual a máquina servidora atende às requisições dos clientes. Os servidores podem ter diferentes atuações, como: servidores de arquivos, nos quais são armazenados arquivos de dados ou programas a serem compartilhados entre os usuários de uma rede; servidores de bancos de dados, em que são armazenados dados que serão cadas- trados ou consultados pelos usuários da rede, fazendo uso de uma in- terface ou via web; servidores de impressão, utilizados para gerenciar as impressoras conectadas na rede, facilitando o roteamento dos docu- mentos a serem impressos ou controlando as cotas de impressão por usuário em um período de tempo; servidores de comunicação, res- ponsáveis pela distribuição da informação na rede, como correio eletrô- nico (e-mail), web, FTP (File Transfer Protocol) etc., podendo, também, ser utilizados para gerenciar o acesso remoto dos usuários da rede; ou servidores de gerenciamento, que atuam no controle de acesso dos usuários, no controle de tráfego da rede e, em alguns casos, atuam como firewall, isto é, um dispositivo de hardware ou software que aplica políticas de segurança a um determinado ponto da rede. 1.4.5 Sistema operacional distribuído Ampliando o conceito de sistema operacional de rede, surge-se o conceito de sistemas distribuídos, em que encontramos um conjunto de computadores ligados a uma rede e independentes entre si, os quais atuam de modo que dão ao usuário a impressão de que são um siste- ma único e integrado. As tarefas nos sistemas distribuídos são divididas entre os compu- tadores que os compõem, sem a interferência do usuário; tudo ocor- re de maneira transparente. Isso os diferencia do sistema operacional de rede, em que as decisões de processamento e armazenamento são realizadas pelo usuário. São consideradas características do sistema distribuído: a capaci- dade de realizar tarefas simultaneamente (concorrência); a capacidade Introdução aos sistemas operacionais 43 de adicionar novos computadores, aumentando o processamento ou armazenamento (escalabilidade); o uso de mensagens para trocar in- formações entre os programas e as estações de trabalho; e, por fim, caso uma estação de trabalho pare de funcionar, não haverá compro- metimento do serviço, pois outra estação irá assumir as funções de- sempenhadas pela máquina que parou de funcionar. Com base nessas características, podemos concluir que os objetivos finais da utilização de um sistema operacional distribuído são o acesso aos recursos, a transparência, a abertura e a escalabilidade. CONSIDERAÇÕES FINAIS Iniciamos este capítulo mostrando que a criação e o desenvolvimen- to dos sistemas operacionais estão intimamente ligados à evolução do computador, do desenvolvimento de software e da crescente demanda de performance e segurança. Os diferentes tipos de aplicações fizeram com que os sistemas operacionais tivessem de se adaptar a diferentes ambientes, atendendo a requisições específicas de hardware e software. Vimos, também, que o núcleo (kernel) do sistema operacional faz uso de componentes (subsistemas) para realizar as tarefas mais importantes; tarefas essas que cumprem as características necessárias de um sistema operacional. Por fim, encerramos o capítulo apresentando as possíveis arquiteturas que um sistema operacional pode usar, bem como os exem- plos de sistemas operacionais que as utilizam. ATIVIDADES 1. Por que os computadores da primeira fase não usavam sistemas operacionais? 2. Quais tecnologias foram responsáveis pela segunda fase de computadores? Quais foram os ganhos obtidos com elas? 3. Quais são os diferenciais da série 360 da IBM? 4. Qual conceito foi incorporado aos sistemas operacionais TSS, Multics e CP/CMS? Qual foi o benefício que esse conceito trouxe? 5. O que é um sistema crítico em negócios? 44 Sistemas Operacionais REFERÊNCIAS DEITEL, H. M.; DEITEL, P.; CHOFFNES, D. Sistemas operacionais. 3. ed. Trad. de Arlete Simille Marques. São Paulo: Pearson, 2005. LI, Q. Real-time Concepts for Embedded Systems. 1. ed. Routledge, 2003. MACHADO, F. B.; MAIA, L. P. Arquitetura de Sistemas Operacionais. 5. ed. São Paulo: LTC, 2013. NOVATO, D. Sistemas Operacionais - O que é escalonamento de processos? Oficina da net, 22 maio 2014. Disponível em: https://www.oficinadanet.com.br/post/12781-sistemas- operacionais-o-que-e-escalonamento-de-processos. Acesso em: 26 maio 2020. PENDRIVE x HD x Nuvem: Como usar a hierarquia de memória para gerenciar seus arquivos. Por que não um “blog”, 2015. Disponível em: http://stonesjunior.blogspot. com/2015/12/hierarquia-de-memoria-e-suas-aplicacoes.html. Acesso em: 26 maio 2020. STALLINGS, W. Arquitetura e organização de computadores. 10. ed. São Paulo: Pearson Prentice-Hall, 2017. Interação do sistema operacional com hardware e software 45 2 Interação do sistema operacional com hardware e software Além de cumprir suas tarefas, o sistema operacional precisa se relacionar com várias outras partes. Ele atende às solicita- ções do usuário recebendo e devolvendo dados. Ele converte tais solicitações em tarefas, que serão executadas pelo compu- tador, respeitando os mais diferentes projetos de arquitetura. Ademais, o sistema operacional precisa estender esse relacio- namento a uma infinidade de dispositivos e de diversos propósi- tos, os quais são acoplados ao computador e auxiliam o usuário na realização das suas operações. Neste capítulo, abordaremos a relação dos sistemas opera- cionais com os arquivos e diretórios, que são as estruturas mais utilizadas pelos usuários no manuseio do computador; a evolu- ção da programação, a qual passou de linguagem de máquina para as linguagens de alto nível e começou a fazer uso de com- piladores e interpretadores para aumentar a produtividade dos desenvolvedores; o uso de firmwares e middlewares, facilitando a comunicação dos dispositivos e programas com o sistema ope- racional e o computador. Estudaremos, também, os hardwares, as suas diferentes arquiteturas e como eles interagem entre si e com o sistema operacional; o processador, o seu projeto, o desempenho e o uso de multiprocessadores; a memória, a sua hierarquia e as diferenças de custo e desempenho;
Compartilhar