Baixe o app para aproveitar ainda mais
Prévia do material em texto
C onceitos e Funcionamento dos Sistemas Operacionais Existem pessoas que afirmam que se você viajar no tempo, ao futuro, por exemplo, ficará assustado(a) com as inovações que verá, pois não terá presenciado seu desenvolvimento. Se a viagem no tempo for ao passado talvez não fique assustado(a), mas certamente perplexo(a) com como muitas coisas lhe parecem excessivamente rudimentares. Um dos componentes da vida moderna que certamente vai lhe causar alvoroço no passado e no futuro, é o sistema operacional (SO), que como seu nome denuncia, operacionaliza tanto o hardware quanto o software dos computadores. Se o olhar para o SO for no passado o que você verá, estudante, será algo discreto, em modo texto e até mesmo em tela verde (telas de fósforo dos computadores antigos), ou seja, um sistema simples, sem muitos recursos ou funções. Agora se o olhar for no futuro, vai presenciar SOs capazes de controlar muito mais que os computadores onde estão embarcados, mas outros dispositivos, e mais, verá que terão a capacidade de estar onde você estiver, mesmo que esteja longe do seu computador. Mas antes de prosseguir com sua viagem no tempo, vamos parar no presente e compreender melhor o que a geração atual de SOs representa, para o usuário principalmente. Resumidamente temos que um SO nasceu para governar o hardware e o software de um computador, permitindo que os sistemas do usuário façam uso dos recursos de hardware disponíveis. Portanto os sistemas operacionais fazem parte de um sistema maior, o sistema computacional, que por sua vez é composto de hardware e software, onde o hardware representa os componentes físicos, os circuitos eletrônicos como o processador, as memórias, os periféricos como teclado, mouse, etc. Já o Software representa a parte lógica de um sistema computacional, que de acordo com Maziero (2019, p. 02) Por sua vez, o software de aplicação é representado por programas destinados ao usuário do sistema, que constituem a razão final de seu uso, como editores de texto, navegadores Internet ou jogos. Entre os aplicativos e o hardware reside uma camada de software multifacetada e complexa, denominada genericamente de Sistema Operacional (SO). (MAZIERO 2019, p. 02) Com estas conceituações de hardware e software, você, estudante, passa a compreender que a tarefa de se criar um SO foi tremenda, pois imagine a sua ausência, imagine um PC sem sistema operacional onde cada software fosse encarregado de ter sua interface, sua rotina de inicialização. Agora imagine como seria trabalhoso trocar de aplicativos, como fazemos com frequência em um pc moderno, se cada aplicativo fosse isolado, autossuficiente. Desta forma, faz mais sentido ter um ambiente que sirva de ecossistema a todos os softwares que necessitamos, e que permita acesso aos recursos de hardware necessários em nossas aplicações, e como apresenta Córdova Júnior (2018, p. 15), ao dizer que “Os sistemas operacionais foram criados, [...], para oferecer uma maneira razoável de resolver o problema de criar um sistema de computação utilizável, com o objetivo fundamental de executar programas e facilitar a solução de problemas do usuário. Figura 1. Estrutura do sistema computacional Portanto, podemos definir SO como sendo um programa sendo executado a todo momento, em um computador, e este sistema carrega consigo uma série de recursos que a décadas seriam oferecidos por softwares de terceiros, mas que por questões comerciais e estratégicas passaram a ser incorporados pelos SOs. Um grande exemplo de como os sistemas operacionais estão incorporando aplicações antes oferecidas por terceiros, são os SOs de dispositivos móveis, como smartphones, tablets e outros, e incluem o Kernel, assim como SOs de desktops, mas também o que chamamos de middleware, ou seja, pacotes de aplicações de desenvolvedores de aplicativos. Sobre a evolução e os aperfeiçoamentos dos SOs, Córdova Júnior (2018, p. 15), afirma que, Com o passar do tempo, os sistemas operacionais foram aperfeiçoados para fazer melhor gerência de memória e discos, mais opções de segurança foram adicionadas, usabilidade e estilos foram melhorados. Além disso, a grande quantidade de sistemas operacionais disponíveis atualmente, sejam pagos ou gratuitos, de código aberto ou fechado, permite que o usuário encontre aquele que melhor se encaixa em suas necessidades. (CÓRDOVA JUNIOR, 2018, p. 15) Sobre o funcionamento de um sistema operacional devemos compreender que ele atua entre o hardware e o software promovendo a ligação entre estes componentes físicos e o lógico através das instruções contidas nos softwares, das funcionalidades embarcadas no hardware e de acordo com os anseios e dados inseridos pelo usuário. Portanto, podemos afirmar que o sistema operacional faz a comunicação entre as diversas aplicações e pelas instruções contidas em tais aplicações, faz requisições ao hardware. Assim, temos que o SO se comunicará com a memória, onde aloca, modifica e remove arquivos, com a CPU, onde envia instruções e dela recebe resultados, e dos demais dispositivos de hardware. Desta forma, temos que o SO é responsável por diversas funções, como as contidas no quadro a seguir: Quadro 1: Funções do sistema operacional Os sistemas operacionais se organizam em processos, que são os programas em execução, que são associados a seus respectivos endereços lógicos, ou seja, um local na memória do computador. Juntamente ao processo estão os recursos como os registradores, que são os contadores dos programas e ponteiros de suas pilhas respectivas, e com isso podemos definir processo como sendo “[...] um contêiner com todas as informações necessárias para executar um programa (SILBERSCHATZ; GAGNE; GALVIN, 2018, apud CÓRDOVA JUNIOR, 2018, p. 18) Sistema Operacional e Outros Tipos de Software Mesmo com toda a relevância e importância, o SO não é o único software embarcado em um computador, independente da aplicação na qual este computador foi destinado. Juntamente com o SO existem diversos outros softwares que vão sendo incorporados ao computador e de acordo com a necessidade do usuário, como editores de texto, planilhas eletrônicas, sistemas de gestão empresarial, jogos e muitas outras categorias. A ideia central aqui é compreender que apenas com o SO não se produz muito, principalmente no universo corporativo, e que a cada software nele instalado, configurado, o computador vai ganhando forma e utilidade ao usuário. Assim como o SO permite acesso aos recursos de hardware, ele funciona como o meio com o qual os outros softwares são instalados e permite a execução destes quando prontos. De uma forma geral o que o SO faz em seu computador é abstrair do hardware todas as suas funcionalidades e gerenciar todos os recursos nele alocados. A figura a seguir demonstra com claridade as interações que o SO mantém com hardware e software: Figura 1: Estrutura de um sistema de computação típico Existem muitas categorias de softwares se a análise for feita tendo em vista a sua função, como editores de texto, responsáveis por fornecer um ambiente onde o usuário pode criar, ler e editar seus documentos de texto como cartas, mensagens, receitas culinárias e documentos corporativos. Outra categoria e das mais vastas são as dos programas de gestão de empresas, capazes de controlar e fornecer relatórios sobre estoque, vendas, RH e praticamente todos os aspectos de uma empresa. Com isso fica claro que não nos serve grande propósito enumerar as diferentes categorias de softwares, ao menos não do ponto de vista do usuário, portanto nossa abordagem será apresentar os tipos de software do ponto de vista dos sistemas operacionais, como podemos compreender nas categorias a seguir: Programas utilitários: Dentro de toda a amplitude de funções e recursos que o SO disponibiliza ao usuário, em alguns momentos são criados pequenos softwares programados especificamente para atender o usuário em funcionalidades que são complementares ao SO. Estamos falando dos utilitários, “[...] como formatação de discose mídias, configuração de dispositivos, manipulação de arquivos (mover, copiar, apagar), interpretador de comandos, terminal, interface gráfica, gerência de janelas, etc. (MAZIERO 2019, p. 02) Drivers: Para que o usuário tenha acesso às funções de seu hardware o SO precisa compreender o que é este hardware, qual sua função, quais seus recursos disponíveis, e de que forma estes recursos podem ser disponibilizados ao SO e demais softwares. O responsável por estabelecer o contato do hardware com o software é chamado Driver, representado por um conjunto de módulos de código específico a cada tipo e modelo de componente. Cada modelo de placa de vídeo, mesmo que de um mesmo fabricante, vai ter seu driver específico, mesmo que sejam disponibilizados softwares genéricos que instalam, além do driver, alguns recursos de configuração, monitoramento e até aumento de desempenho, o famoso overclocking. O software [ou programa] aplicativo O conceito de software aplicativo é interessante, pois embora sejam softwares de uso específico, são tão amplamente utilizados que se apresentam de forma padronizada a todo usuário. Dentro desta lista temos softwares muito conhecidos a anos pelos usuários de computador, como o pacote Office da Microsoft que contém o Word, Excel, PowerPoint e outros softwares muito utilizados como o Paint para desenhos e edições básicas de imagens, o Bloco de notas, a calculadora, etc. De acordo com Amorin (2015, p.07) existem diversos outros softwares que se encaixam na categoria de aplicativos do sistema operacional, como “[...] os Browsers, isto é, os navegadores utilizados para acesso à internet. Os videojogos, bases de dados e sistemas de automação industrial, cujas atividades são consideradas específicas, também se enquadram neste tipo. A Estrutura dos Sistemas Operacionais A cada avanço em hardware, nas linguagens de programação, ou com o nascimento de novas tecnologias, novas demandas dos usuários por funcionalidades, os sistemas operacionais ganham em complexidade e gama de recursos embarcados, com isso sua arquitetura passa a ser cada vez mais complexa. Desta forma podemos classificar os SOs de acordo com a sua complexidade em sistemas monolíticos, sistemas micronúcleo, em camadas e híbridos. Sistemas monolíticos De acordo com Maziero (2019, p. 27) os sistemas operacionais monolíticos apresentam o SO como um bloco maciço, ou seja, um bloco que opera “[...] com acesso a todos os recursos do hardware e sem restrições de acesso à memória. Por isso, os componentes internos do sistema operacional podem se relacionar entre si conforme suas necessidades. (MAZIERO 2019, p. 27) A grande vantagem da arquitetura monolítica está em seu desempenho, pelo fato de que o acesso entre componentes é feito diretamente, sem barreiras, o que torna desnecessário intermediários para a comunicação. Sistemas micro núcleo Nesta categoria estão inclusos os SOs que não possuem código de alto nível em seu núcleo, ou seja, contém apenas o código de baixo nível responsável por interagir com o hardware, onde “O restante do código seria transferido para programas separados no espaço de usuário, denominados serviços. Por fazer o núcleo do sistema ficar menor, essa abordagem foi denominada micronúcleo (ou µ-kernel).” (MAZIERO 2019, p. 28) A construção de SOs micronúcleo representa uma estratégia modular, na medida em que cada serviço é desenvolvido independente dos outros, com maior flexibilidade, robustez o que garante, em caso de falhas, que somente o sistema específico será afetado. Sistema em camadas A construção de softwares em camada é muito comum, e no caso dos SOs, representa uma forma bastante concisa de construção lógica, uma vez que usa a noção de camadas, onde, de acordo com Maziero (2019), tem nas camadas mais baixas a interface com o hardware, as camadas intermediárias fazem a abstração e gestão de recursos, e por fim, a camada superior representa a interação entre o núcleo e as aplicações. Sistemas híbridos Embora os diferentes tipos de arquitetura básica de sistemas operacionais tenham seu destaque no que são propostos, fato é que muitos carecem de um melhor uso do seu hardware, como no caso dos sistemas micronúcleos onde mesmo com toda sua flexibilidade e robustez se apresentam lentos em comparação com outros tipos. De acordo com Maziero (2019, p. 31) A solução ao desempenho medíocre dos sistemas micro núcleo seria “[...] trazer de volta ao núcleo os componentes mais críticos[...]. Essa abordagem intermediária entre o núcleo monolítico e micronúcleo é denominada núcleo híbrido. É comum observar também nos núcleos híbridos uma influência da arquitetura em camadas.” (MAZIERO 2019, p. 31) Máquinas virtuais Este assunto já entra bem no universo dos serviços em nuvem e dentro da estrutura física e lógica dos servidores, pois a virtualização representa a criação de um espaço onde o usuário pode ter acesso ao seu SO dentro de uma estrutura maior que já contém seu próprio SO, mas que muitas vezes é incompatível com a arquitetura dos sistemas do usuário. Desta forma, as máquinas virtuais são uma camada de software responsável em dar ao usuário um outro sistema operacional completo, onde temos como exemplo o ambiente JVM (Java Virtual Machine) que usa como base um SO como o Windows ou Linux e dentro deste SO pode oferecer um sistema completo que opere em bytecode, o código binário comum dos programas escritos em Java. Outro exemplo são os VMWares que permitem uma instância Windows em sistemas Linux, ou vice-versa. Contêineres Podemos definir os contêineres como sendo uma forma de virtualização, mas desta vez focada em isolar o espaço do usuário de forma também virtualizada. Os contêineres também são conhecidos por servidores virtuais e onde em cada instância de usuário é alocada uma porção dos recursos de hardware disponíveis, onde temos principalmente a capacidade de processamento, memória e disco. Os 36 Anos de História dos Sistemas Operacionais O primeiro fato que devemos compreender sobre a evolução dos SOs está no surgimento da sua interface gráfica, ou seja, não existiria uma história de 36 anos a ser contada com tantos eventos como temos aqui se a interface gráfica não existisse, pois sem ela os computadores poderiam ser máquinas complexas restritas a programadores ou pessoas com treinamento especializado. Mas o nascimento da computação digital moderna demorou a ver o nascer da interface gráfica (as telas e ícones que usamos para navegar entre os recursos e softwares contidos em um sistema operacional). Em seu primeiro momento as instruções que hoje damos ao sistema com um clique deveriam ser inseridas diretamente no hardware, o que lhes dava muita complexidade e se assemelhava ao procedimento antigo de controle de conexões telefônicas com dezenas de cabos sendo intercambiados de acordo com a necessidade de conexão a se completar. Sem um conceito, mesmo que rudimentar, de sistema operacional, os primeiros computadores nem mesmo tinham a capacidade, hoje tida como trivial, de rodar softwares em sucessão, de forma automática, o que determinava que ao fim da execução de um programa, o usuário deveria retirar este programa do hardware e colocar outro para assim conseguir ter acesso a suas funcionalidades. Assim, sem um sistema capaz de governar o hardware e agilizar acesso aos seus recursos, o que hoje entendemos por fila de trabalho eram filas indianas de pessoas que ali aguardavam sua oportunidade de rodar a rotina computacional que eram responsáveis. Extraoficialmente falando, na Universidade de Cambridge as filas eram as fitas perfuradas (antes usadas como forma de armazenar os programas), e sua prioridade de execução seria através da cor do prendedor que as mantinham em linhas tipo varais de roupa. Mas, de acordo com Wazlawick (2016) na década de 1950 a evolução dos computadores lhes concedia cada vez mais velocidade, o que apresentou um severo gargalo, pois o tempo de se instalar o programa ao ponto de poder utilizar era, muitas vezes, maiordo que o tempo necessário para sua execução. A questão era muito mais econômica, pois computador sendo preparado, não é computador trabalhando, algo precisava ser feito. A solução veio na forma de programas capazes de executar outros programas em fila, de forma automática, os primeiros Sistemas Operacionais, que na época ganharam o nome de programas monitores, mas já faziam, em essência, o que o kernel (núcleo) dos sistemas operacionais modernos faziam. Nomear os programas monitores de Sistemas Operacionais foi apenas uma questão de lógica, uma vez que substituíram os operadores encarregados de executar as filas de programas manualmente. Assim nasceram os primeiros computadores capazes de realizar muitas operações por conta própria, assim como define Wazlawick (2016, p. 197) Bastava que os diversos programas fossem enfileirados na leitora de fita ou leitora de cartões e com as devidas diretivas (cartões de “job”) a máquina conseguiria sequenciar esses programas automaticamente, sem a necessidade do operador humano. (WAZLAWICK 2016, p. 197) Se existe uma constante no universo dos SOs é sua capacidade de convenientemente agregar novas funções e transformar softwares de terceiros em seus utilitários, como o Microsoft Windows fez com o compactador de arquivos do tipo Winzip. Um dos primeiros casos de incorporação e de grande relevância aos SOs foram as bibliotecas de rotinas, que permitiram maior agilidade no acesso ao hardware, e periféricos, pois o que se tinha antes era a necessidade do operador em conhecer os comandos próprios de cada componente, algo lento e moroso. Apresentando um pouco de cronologia histórica aos sistemas operacionais, temos que em três anos seguidos 1954, 1955 e 1956 foram lançados os três primeiros sistemas operacionais registrados, “Em 1955, a General Motors desenvolveu um sistema operacional para o seu IBM 701 e, em 1956, um outro chamado GM-NAA I/O para o seu IBM 704.” (WAZLAWICK 2016, p. 198) Se tem um nome que sempre tem lugar cativo nos livros de história ligado a inovação e pioneirismo no mundo dos computadores pessoais é o Steve Jobs, que embora não esteja mais entre nós deixou um legado na computação que jamais será esquecido. Na década de 1970, Jobs desenvolveu o que considerou sua tentativa de criar um computador pessoal e para ele desenvolveu um sistema operacional que pudesse ser operado por usuários comuns, ou seja, quem não tivesse conhecimento algum de programação. A iniciativa de Jobs deu início a era da microinformática e que por volta do ano de 1976 viu Bill Gates, fundador da Microsoft, desenvolver seu sistema, o PC-DOS que logo passou a ser conhecido como o MS-DOS. Gates lançou o seu produto mais conhecido, o SO Windows, depois que a sua parceria com a IBM tomou rumos inesperados e distintos. Atividade Extra Já foi o tempo em que instalar o sistema operacional Windows em um PC era tarefa quase de programador, pois atualmente nem mesmo é preciso o famoso disco de inicialização, o responsável por carregar um mini sistema operacional DOS, responsável por permitir que o usuário formatasse seu disco e instalasse seu SO. A inovação atual é poder ter sistemas operacionais como Windows ou Linux que funcionam sem a sua completa instalação no computador, podendo até mesmo funcionar a partir de uma mídia removível como um pen drive. Caso tenha curiosidade de saber como pode ser feito este procedimento, recomendo que consulte o artigo “Criando um pendrive de boot com vários sistemas operacionais” pelo link: https://www.infonova.com.br/artigo/criando-um-pen-drive-de-boot-com- varios-sistemas- operacionais/#:~:text=Um%20desses%20aplicativos%20%C3%A9%20o,ou%2 Referência Bibliográfica AMORIM, Diego Felipe Borges de. Softwares de sistemas e de aplicações livres: benefícios e limitações no uso dessas tecnologias nos negócios. 2015. Disponível em: <https://semanaacademica.org.br/system/files/artigos/dfba_artigo.pdf> Acesso EM: 14/05/2021. CÓRDOVA JUNIOR, Ramiro Sebastião. Sistemas operacionais. – Porto Alegre: SAGAH, 2018. MAZIERO, Carlos Alberto. Sistemas operacionais: conceitos e mecanismos. – Curitiba: DINF - UFPR, 2019. https://www.infonova.com.br/artigo/criando-um-pen-drive-de-boot-com-varios-sistemas-operacionais/#:~:text=Um%20desses%20aplicativos%20%C3%A9%20o,ou%2C%20ainda%2C%20do%20Linux https://semanaacademica.org.br/system/files/artigos/dfba_artigo.pdf
Compartilhar