Prévia do material em texto
Sistemas Operacionais Unidade 1 Introdução aos Sistemas Operacionais Diretor Executivo DAVID LIRA STEPHEN BARROS Gerente Editorial CRISTIANE SILVEIRA CESAR DE OLIVEIRA Projeto Gráfico TIAGO DA ROCHA Autoria JOÃO DANILO VENTURA HOLANDA NOGUEIRA AUTORIA João Danilo Ventura Holanda Nogueira Sou formado em Ciência da Computação, com uma experiência técnico-educacional na área de Sistemas Operacionais de mais de dois anos. Lecionei na Faculdade Integrada da Grande Fortaleza. Sou apaixonado pelo que faço e adoro transmitir meu conhecimento àqueles que estão iniciando em suas carreiras. Por isso, fui convidado pela Editora Telesapiens a integrar seu elenco de autores independentes. Estou muito feliz em poder ajudar você, nesta fase de muito estudo e trabalho. Conte comigo! ICONOGRÁFICOS Olá. Esses ícones irão aparecer em sua trilha de aprendizagem toda vez que: OBJETIVO: para o início do desenvolvimento de uma nova compe- tência; DEFINIÇÃO: houver necessidade de se apresentar um novo conceito; NOTA: quando forem necessários obser- vações ou comple- mentações para o seu conhecimento; IMPORTANTE: as observações escritas tiveram que ser priorizadas para você; EXPLICANDO MELHOR: algo precisa ser melhor explicado ou detalhado; VOCÊ SABIA? curiosidades e indagações lúdicas sobre o tema em estudo, se forem necessárias; SAIBA MAIS: textos, referências bibliográficas e links para aprofundamen- to do seu conheci- mento; REFLITA: se houver a neces- sidade de chamar a atenção sobre algo a ser refletido ou dis- cutido sobre; ACESSE: se for preciso aces- sar um ou mais sites para fazer download, assistir vídeos, ler textos, ouvir podcast; RESUMINDO: quando for preciso se fazer um resumo acumulativo das últi- mas abordagens; ATIVIDADES: quando alguma atividade de au- toaprendizagem for aplicada; TESTANDO: quando o desen- volvimento de uma competência for concluído e questões forem explicadas; SUMÁRIO Definição de sistemas operacionais .................................................... 12 O que é um sistema operacional? ...................................................................................... 12 Sistema de processamento Batch ...................................................................................... 16 Sistema multitarefa ........................................................................................................................ 18 Sistema de computador pessoal ........................................................................................ 20 Sistemas com múltiplos processadores ........................................................................ 21 Sistemas fortemente acoplados .......................................................................23 Sistemas fracamente acoplados .....................................................................24 Histórico dos sistemas operacionais ..................................................26 Como tudo começou? .................................................................................................................26 Os computadores antes de Babbage ...........................................................27 Os computadores depois de Babbage ........................................................28 Evolução do computador moderno ..................................................................................29 Década de 40 ..................................................................................................................29 Década de 50 ................................................................................................................. 30 Década de 60 .................................................................................................................32 Década de 70 ..................................................................................................................34 Década de 80 .................................................................................................................35 Década de 90 .................................................................................................................35 A virada do milênio .....................................................................................................37 Década de 2010 – tempos atuais .................................................................... 38 Conceitos iniciais sobre sistemas operacionais ............................. 41 Hardware ............................................................................................................................................... 41 Processador .....................................................................................................................42 Memórias ............................................................................................................................44 Dispositivos de entrada e saída ........................................................................................... 46 Barramentos.....................................................................................................................47 Arquiteturas de processadores .........................................................................47 Software ................................................................................................................................................ 49 Tradutor .............................................................................................................................. 50 Linker e Loader ............................................................................................................. 50 Concorrência ...................................................................................................................................... 51 Estrutura dos sistemas operacionais ..................................................54 Processos e endereçamento ..................................................................................................54 Arquivos..................................................................................................................................................55 Interpretador de comandos .....................................................................................................57 Criando shellscripts ...................................................................................................................... 59 Comunicação .....................................................................................................................................61 9 UNIDADE 01 Sistemas Operacionais 10 INTRODUÇÃO Você sabia que chamamos de sistema operacional (SO), e na realidade, não é um sistema operacional?? Isso mesmo. Na verdade, o que hoje é chamado de SO é, apenas, um mecanismo de interação com o usuário que pode ser chamado de Shell, ou interpretador de comandos, quando temos um sistema com base em texto, ou uma GUI, nome dado para a famosa interface gráfica, usada na grande maioria dos computadores. Isso vale para diversos tipos de sistemas operacionais com os quais as pessoas, normalmente, têm contato como: Windows, Linux, iOS ou qualquer outro. Entendeu? Ao longo desta unidade letiva, você vai mergulhar neste universo! Sistemas Operacionais 11 OBJETIVOS Olá. Seja muito bem-vindo à Unidade 1. Nosso objetivo é auxiliar você no desenvolvimento das seguintes competências profissionais até o término desta etapa de estudos: 1. Definir o conceito de sistemas operacionais. 2. Entender a evolução dos sistemas operacionais até o estado da arte. 3. Definir os conceitos iniciais relacionados aos sistemas operacionais. 4. Demonstrar a estrutura dos sistemas operacionais. Sistemas Operacionais 12 Definição de sistemas operacionais OBJETIVO: Ao término deste capítulo, você será capaz de entender como funcionamos sistemas operacionais. Entender o funcionamento de um SO é fundamental para qualquer um que deseja seguir na área da tecnologia, pois ele interfere diretamente em todo o processo tecnológico. E então? Motivado para desenvolver esta competência? Então vamos lá. Avante. O que é um sistema operacional? Muito se fala de sistemas operacionais e muito pouco se compreende sua real função. Um sistema operacional é um software que atua como um mediador de interação entre os usuários e os hardwares do computador. Ele é um software que operacionaliza a utilização de outros softwares para tornar as funcionalidades mais intuitivas. Figura 1 – Sistema operacional Fonte: Freepik (2021). Sistemas Operacionais 13 Para cumprir o objetivo de se tornar mais intuitivo, o SO conta com a utilização de dois mecanismos de interação: o Shell e a GUI. O Shell é um interpretador de comandos, um software que responde, via texto, para cada instrução que seja digitada em sua caixa. As GUI, Graphical User Interface, ou interface gráfica do usuário, são o mecanismo de interação mais comum nos computadores modernos de uso pessoal. Elas têm como base as imagens gráficas, cores e respostas visuais. Vale a pena salientar que o uso de um mecanismo de interação não exclui o outro, pois os grandes sistemas operacionais de mercado, como diversas distribuições Linux (Debian, Ubuntu, Slackware, Fedora, Mint), as distribuições macOS e as distribuições Microsoft Windows, utilizam-se de uma combinação de Shell e GUI para sua total funcionalidade. Os SOs têm os chamados terminais de comando, sendo o Bash, em distribuições Linux e macOS e o CMD, em distribuições Microsoft Windows. Mas tornando a dialogar sobre sistemas operacionais, propriamente ditos, trata-se de uma das partes mais importantes de um sistema computacional. Segundo Tanenbaum (1995), o sistema operacional pode ser chamado de alocador de recursos, sendo responsável por processar, escalonar e controlar os recursos de hardware e software, garantindo que eles possam se comunicar sem problemas. Os SOs fazem parte do chamado sistema computacional, que pode ser dividido em quatro partes: Hardware, sistema operacional, Softwares aplicativos e usuários. Figura 2 – Componentes de um sistema computacional Usuário Aplicativos Sistema operacional Hardware Fonte: Elaborado pelo autor (2021). Segundo Tanenbaum (1995), os hardwares englobam toda a parte operacional física do computador, desde a unidade central de processamento, UCP, mais conhecida como CPU, as memórias e os dispositivos de entrada e saída de dados. Os softwares aplicativos Sistemas Operacionais 14 englobam a parte lógica, desenvolvida para cumprir funções específicas e facilitar a vida do usuário. Seus exemplos mais comuns são os aplicativos de leitura e edição de texto, executores de áudio, vídeo, navegadores da internet, aplicativos presentes em celulares, entre outros. Já os usuários são os atores que irão interagir com os softwares aplicativos para que eles realizem o processamento de dados. São aqueles que esperam os resultados dos processamentos e execuções das funções específicas dos softwares aplicativos. Podem ser tanto seres humanos como outros computadores. Por fim, o sistema operacional, que é o nosso foco principal, é o responsável por garantir o controle dos recursos de hardware, permitindo que todos os softwares aplicativos funcionem e apresentem seus resultados para o usuário. REFLITA: Para facilitar o entendimento, pense em um SO como o RH de uma empresa. Cada setor dessa empresa é um software diferente e o quadro de funcionários é o agrupamento de hardwares. O diretor da empresa é o usuário que precisa que cada setor apresente seus resultados. O RH da empresa irá alocar cada funcionário em setores e cada funcionário irá realizar sua função para gerar o resultado do setor. Por fim, esse resultado é enviado para o diretor da empresa que analisa todas as informações e pode aceitá-las ou solicitar uma nova demanda dos setores. Esse é o funcionamento de um sistema computacional. Com base nessa análise, podemos inclusive perceber que a definição de sistema operacional pode, muitas vezes, ser confundida com a definição de sistema computacional. Isso acontece porque não existe uma definição, universalmente, aceita sobre o que é um sistema operacional. É mais fácil definirmos um SO pelo que ele faz, do que pelo que ele propriamente é. Tendo isso em mente, um sistema operacional é uma ferramenta que torna o uso do computador, conveniente para o usuário. Tomamos, por exemplo, um sistema computacional comum, presente nas casas, empresas e ambientes educacionais. Esses sistemas têm diversos dispositivos de entrada e saída, monitores, mouses, Sistemas Operacionais 15 teclados, portas USB que podem receber pen-drives, leitoras de CD. Os mais antigos tinham floopy de disquetes. A forma de funcionamento desses dispositivos não é interessante para o usuário. Para ele, basta que os dispositivos funcionem, sem que se preocupe em porque ou como está ocorrendo. Muitas vezes, ocorre de um usuário achar que uma interação de um dispositivo desses é simples, quando, na verdade, ela é composta por um conjunto de rotinas específicas que são, totalmente, manipuladas pelo sistema operacional, de modo que elas sejam acionadas de forma correta e eficaz. Em outras palavras, uma das funções do sistema operacional é ser um facilitador de acesso aos componentes desse sistema. A grande maioria dos usuários acaba tendo essa visão de simplicidade por conta de definições rápidas dadas por algumas literaturas. Não vale a pena para, por exemplo, um usuário comum, entender todo o conceito que está em um SO, pois para ele, basta saber que o sistema operacional é o responsável pela interface gráfica, apresentada pelo computador. Esse conceito, embora incompleto, não está errado, é uma abstração de um todo para partes, também chamada de visão top-down. Nós, da área da tecnologia, estamos mais acostumados com uma visão alternativa, que tem sempre o objetivo de abstrair as partes e relacioná-las a um todo, chamada de visão bottom-up. Enquanto a visão top-down tem o objetivo de simplificar conceitos, abstraindo suas partes, tornando fácil de compreender o funcionamento de uma determinada ferramenta, a bottom-up vem com o objetivo de listar todas as partes da ferramenta que contribuem para seu funcionamento. Quando, por exemplo, o usuário de um SO executa três aplicativos simultaneamente, ele jamais irá imaginar que, no lugar daquele funcionamento, existe todo um processo de distribuição de processamento e que, na verdade, nada está sendo executado de forma simultânea. Sistemas operacionais modernos podem realizar as chamadas “execuções simultâneas” de forma mascarada, quando, de fato, os processadores estão tão desenvolvidos que as trocas de processamento são imperceptíveis, de tão rápidas. Sistemas Operacionais 16 Esse é o conceito do compartilhamento de recursos do SO, no qual temos uma determinada lista de requisições e o sistema operacional irá tratar uma a uma, em uma fila de prioridade. Quando a requisição que tiver maior prioridade for executada por tempo suficiente, os recursos irão para a segunda requisição, em seguida para a terceira e assim, sucessivamente. Exemplo: Pense no funcionamento de uma impressora, agora imagine que vários arquivos foram enviados para serem impressos nessa mesma impressora. Se não houvesse um sistema operacional, gerindo o funcionamento, poderíamos ter uma impressão em que partes da folha pertenceriam a vários arquivos diferentes. Porém, existe uma fila de impressão, que cuida para que os recursos físicos sejam utilizados para cada requisição, uma por vez, garantindo assim que, quando o processamento for concluído, o próximo seja iniciado tão logo, quando possível e, caso surja uma requisiçãoprioritária, ela fure essa fila e seja executada, logo após o atual processamento. Sistema de processamento Batch Antes dos computadores modernos existirem, todos os processos eram realizados de forma manual. Mesmo aqueles processos que já utilizavam alguma forma de automatização, por meio de computadores, precisavam ser inseridos manualmente, um a um, para seu processamento. Nessa época, os computadores eram máquinas fisicamente grandes, com toda a sua operação controlada em um painel que continha, geralmente, uma leitora de cartão ou fita e um dispositivo, que poderia ser uma impressora, um unidade de gravação de fita ou um perfurador de cartão, responsável por entregar os resultados dos processamentos de dados. Como ainda não existia um dispositivo ou método de comunicação entre usuário e máquina, não havia interação direta do responsável pela operação com o sistema computacional. Para realizar os processamentos, o usuário preparava todo a tarefa, previamente, e a submetia para a execução. Dependendo da complexidade da tarefa, o processamento poderia levar um tempo extremamente longo, o que tornava a permanência do usuário na frente do console obsoleta. Os usuários submetiam as tarefas e iam fazer outras atividades, até que o resultado fosse emitido pelo computador. Sistemas Operacionais 17 Em algum momento, no entanto, se erros ocorressem ou se o processamento terminasse, antes do tempo estimado, a máquina ficava obsoleta, por só poder realizar uma tarefa por vez. Pensando nisso, os programadores da época começaram a organizar as tarefas em lotes de requisitos semelhantes. O loteamento de processamentos e execução sequencial de tarefas de requisitos semelhantes denominam-se de processamento em lote, ou processamento Batch. Figura 3 – Processamento sequencial Fonte: Freepik (2021). Nos sistemas computacionais antigos, mesmo o processamento Batch acabava deixando a máquina obsoleta, em alguns momentos, pois a diferença, entre a velocidade do processamento eletrônico e do processamento físico, era enorme. Durante a execução das tarefas, uma determinada atividade precisaria executar uma ação de entrada ou saída. Enquanto essa ação ocorria, o sistema ficava ocioso, aguardando o momento em que poderia retomar o processamento e seguir com a execução da tarefa. Sistemas Operacionais 18 Com o avanço das tecnologias computacionais, surgiu um modelo de processamento chamado de multiprogramação. Os sistemas operacionais que se baseavam em multiprogramação tinham, uma certa autonomia, sobre o lote de processamentos que ele deveria realizar e, enquanto um determinado processo estava aguardando uma ação de entrada ou saída, o processador era realocado para outra tarefa, que era executada até que ela ficasse dependente de alguma ação física da máquina, passando, logo em seguida, para o próximo processamento, assim diminuindo o tempo de ociosidade do sistema computacional. Ao processo de decidir qual tarefa executar, enquanto outra tarefa esperava, dá-se o nome de escalonamento de processos. Sistema multitarefa O uso e o desenvolvimento de técnicas para o melhoramento do processamento Batch, incluindo o uso de multiprogramação, chegou ao ponto de evolução. Segundo Machado (2007), o sistema multitarefa, de tempo compartilhado ou de compartilhamento de tempo, é um sistema que funciona com o princípio da multiprogramação. Diversos processos executados por vez, cada um ocupando o processador por um determinado período, porém, diferente do processamento Batch, em que os processos que ocupam o processador só são trocados, quando há uma dependência externa. No processamento multitarefa, as execuções entram e saem do processador, em intervalos de tempo fixos, permanecendo lá por tempo o bastante para executar uma instrução e, logo depois, é substituída por outro processo. Aqui, as trocas ocorrem com uma frequência tão acelerada que temos a impressão de presenciar o processamento simultâneo de tarefas. Sistemas Operacionais 19 Figura 4 – Multitarefa Fonte: Freepik (2021). Os sistemas interativos usam a técnica de processamento multitarefa para garantir que o usuário tenha sempre o melhor resultado possível da execução. Quando o usuário, por exemplo, alterna as janelas de programas, ele precisa ter a percepção de que tudo está ocorrendo de forma simultânea, na frente dele, porém, ali há todo o escalonamento de processos, definindo a fila de prioridade para os processamentos em lote. Essa técnica de processamento permite que múltiplos usuários usem os recursos da máquina, ao mesmo tempo. Sistemas operacionais de tempo compartilhado têm uma complexidade maior do que um sistema operacional de multiprogramação. Embora ambos tenham similaridades, como o caso de terem a necessidade de manter várias tarefas na memória ao mesmo tempo, no caso do tempo compartilhado, a velocidade com que as tarefas são executadas exige uma rápida troca de alocação do processo, entre memória principal e disco. Um dos métodos mais utilizados para garantir essa velocidade de forma eficiente, é a utilização das memórias virtuais. Esse método permite que algumas tarefas sejam executadas, sem que elas estejam, totalmente, na memória física da máquina, permitindo, assim, que o sistema computacional consiga executar, até mesmo tarefas que sejam maiores do que a própria memória física. Sistemas Operacionais 20 O uso da memória virtual elimina a limitação do tamanho da memória, fazendo com que programas, mais complexos, possam ser executados sem problemas. Os sistemas de tempo compartilhado, geralmente, têm um sistema de arquivos que são armazenados em diversos discos, exigindo tecnologias de gerenciamento de arquivos e gerenciamento de disco. Sistema de computador pessoal Não é nenhum segredo que o desenvolvimento tecnológico não teve foco na experiência com o usuário, mas sim no poder de processamento e execução de tarefas. As máquinas eram criadas para serem capazes de realizar as mais diversas tarefas e, quando sofriam atualizações, eram aquelas que potencializavam os hardwares e a capacidade de processamento. Com a chegada dos computadores pessoais, no entanto, uma nova linha de pensamento começou a ser aplicada nas linhas de produção. O usuário comum não tinha necessidade de um hardware potencializado, porque o usuário comum realizaria tarefas mais simples do que, por exemplo, o cálculo necessário para realizar um lançamento de um foguete espacial que irá aterrissar em outro planeta. Surgiram então os modelos de sistemas operacionais, voltados exclusivamente, para computadores pessoais, especialidade de empresas como Microsoft e Apple e de comunidades de software livre que criavam distribuições Linux. Esses SO otimizavam a experiência do usuário, o tempo de resposta das execuções e o conforto da utilização dos terminais para a realização das mais diversas tarefas. Coloca-se em questão, também, que computadores pessoais não tinham uma conexão de rede, inicialmente, então os sistemas operacionais não eram preparados para realizar a proteção de dados, porém, com o advento da internet e com a aplicação das máquinas em empresas, surgiu a necessidade do desenvolvimento de SOs capazes de realizar essa proteção de forma autônoma, embora existam diversos softwares de antivírus que prometem aprimorar essa proteção. Sistemas Operacionais 21 Figura 5 – Sistema de computador pessoal Fonte: Freepik (2021). Conforme a tecnologia aplicada nos computadores pessoais foi se aprimorando, hardwares e softwares mais poderosos começaram a ser utilizados, chegando em um momento tecnológico que dificulta a separação do que é a tecnologia do computador pessoal e da tecnologia, por exemplo, de mainframes. Sistemas com múltiplos processadores Com a necessidade de resultados mais rápidos, chegamos ao impedimento do nível de processamentodas tecnologias atuais. Uma problemática que foi abonada com a aplicação da metodologia de criação de sistemas com múltiplos processadores. Esses sistemas caracterizam-se por terem, duas ou mais unidades de processamento interligadas, trabalhando em conjunto para realizar as atividades de processamento. Com a aplicação de sistemas com múltiplos processadores, as execuções começaram a ter seu tempo de resposta diminuído e criou- se a capacidade de termos mais de um processamento, ocorrendo simultaneamente. São computadores complexos, não voltados para o uso do público geral, com foco maior em desenvolvimento científico e militar, processamento de imagens e CAD. Sistemas Operacionais 22 VOCÊ SABIA? Segundo Narayan (2008), CAD é o nome dado a softwares, utilizados principalmente por engenheiros, geólogos, geógrafos e designers para a criação e facilitação de projetos técnicos. São softwares que exigem um nível de processamento extremamente alto, devido ao detalhamento das informações que cada desenho deve passar, podendo ter diversas camadas que aumentam a exigência de processamento. Um sistema com múltiplos processadores pode ser comparado a um sistema de multiprogramação, com um foco principal, na forma como é realizada o escalonamento das tarefas e a sua distribuição pelos processadores de forma que a tarefa seja executada, no menor tempo possível. Para falar desses sistemas, precisamos entender os conceitos relacionados às três vantagens de sua aplicação em atividades, que segundo Machado (2007) são: escalabilidade, disponibilidade e balanceamento. Ainda, para Machado (2007), escalabilidade é a garantia que, a qualquer momento, eu posso ampliar a quantidade de processadores no sistema computacional, para potencializá-lo. Hoje, em um sistema computacional comum, caso haja algum problema em um processador, é necessário trocar todo o sistema por um novo, de forma a reconfigurar o funcionamento pelo novo dispositivo. Disponibilidade é, talvez, a maior vantagem do uso de um sistema de múltiplos processadores. Imagine que você está na sua casa, trabalhando em um projeto para seu curso e, devido a uso constante, o processador do seu computador queime. No mesmo momento, o dispositivo iria desligar e só iria ligar novamente, se você trocasse o processador. Agora imagine que você não conseguiu o mesmo modelo de processador, esse trabalho seria ainda maior, pois todo o sistema computacional seria afetado e o sistema operacional precisaria ser trocado para se adaptar ao novo hardware. Sistemas Operacionais 23 De acordo com Machado (2007), a disponibilidade garante, por exemplo, que caso isso ocorra no sistema, ele continue disponível e funcional, realizando a distribuição dos processamentos que seriam feitos pelo processador que falhou, entre os demais processadores disponíveis. Por fim, o balanceamento é a forma como os processos serão alocados, entre os processadores, de forma que eles sempre trabalhem similarmente balanceados (MACHADO, 2007), ou seja, se estou em um sistema de oito processadores e tenho 64 tarefas, cada processador irá, teoricamente, realizar oito tarefas cada, podendo, inclusive, serem tarefas de diferentes capacidades e diferentes exigências de processamento, algumas até serem feitas simultaneamente pelos oito. Quando falamos de sistemas com multiprocessadores, falamos, principalmente de duas classificações: sistemas fortemente acoplados ou sistemas paralelos e sistemas fracamente acoplados ou sistemas distribuídos. Sistemas fortemente acoplados Um sistema fortemente acoplado é formado por conexões “fortes”. É um sistema computacional que tem um conjunto de processadores que compartilham, entre si, o mesmo conjunto de hardwares: memória física, dispositivos de entrada e dispositivos de saída. Também são sistemas que sofrem gerenciamento de um único sistema operacional. Eles podem ser divididos em sistemas de multiprocessadores simétrico e sistemas de acesso não uniforme à memória. A diferença dos dois está no tempo de resposta aos processamentos. Enquanto o primeiro, tem um tempo simétrico e linear de acesso à memória principal, o segundo, por ser composto por diversos conjuntos de processadores acoplados, por meio de interconexões, tem um tempo de acesso não linear. Em sistemas paralelos, não existe um conceito de hierarquia de processamento, então, todos os processadores têm a mesma função. Você vai perceber que toda tecnologia relacionada a computadores, que é desenvolvida, passa por um período de “larga escala de tamanho” e depois passa por um período de “encolhimento”. Com os sistemas Sistemas Operacionais 24 fortemente acoplados não foi diferente. Inicialmente, eles eram formados por dispositivos enormes, para caber os diversos processadores alinhados. Esses dispositivos eram utilizados, geralmente, por universidades e por grandes corporações que necessitavam de um processamento massivo e poderoso de dados. Atualmente, com o avanço da tecnologia, os sistemas fortemente acoplados são utilizados na maioria dos sistemas operacionais modernos, principalmente naqueles com base em Unix e nos relacionados à família Microsoft. Sistemas fracamente acoplados Diferentemente dos sistemas fortemente acoplados, os sistemas fracamente acoplados não dividem uma única memória física, pois eles são formados por agrupamentos de sistemas computacionais, ou seja, cada integrante do sistema tem um sistema operacional próprio, uma memória física individual, seus próprios dispositivos de entrada e saída. Uma curiosidade, é que a existência de um sistema fortemente acoplado, em um sistema fracamente acoplado, é possível, pois nada impede que um dos sistemas computacionais, listados no grupo, tenha mais de um processador. Nesse modelo de sistema, os sistemas computacionais são interligados por redes de comunicação, podendo ser locais ou não. Os membros do sistema, por meio da rede, enviam requisições para o sistema computacional, definido como principal, e esperam as respostas para realizar seus processamentos. Com o avanço das tecnologias de comunicação, surgiu um modelo novo de rede de computadores. Um modelo que difere dos anteriores, enquanto eles traziam um sistema computacional como o “host”, ou principal, o novo modelo trazia um conceito similar a “dividir para conquistar”, no qual diversos sistemas computacionais principais fazem parte desse sistema, descentralizando, assim, o acesso à informação. Sistemas Operacionais 25 Cada sistema computacional principal é responsável por parte das requisições, agilizando assim o andamento dos processos e acesso aos resultados. RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que um sistema operacional é o software responsável por gerenciar a comunicação de todas as partes de um sistema computacional e que, por isso, ele é considerado uma das partes mais importantes dele. Vimos também que existem muitas definições possíveis para o que seria realmente um sistema operacional, mas que é mais fácil definir um SO, por sua função e usabilidade, do que realmente por sua essência. Definimos então o conceito com o qual iremos trabalhar a partir de agora, o “alocador de recursos” que se utiliza de uma GUI ou Shell, para traduzir para o usuário, o funcionamento dos hardwares e softwares e, utilizando-se da mesma GUI ou Shell traduz os comandos e ações do usuário para esses hardwares e softwares. Vimos também os conceitos, envolvendo o compartilhamento de recursos, que é a funcionalidade principal de um sistema operacional. Foram abordados conceitos sobre tipos específicos de sistemas operacionais, salientando a diferença entre sistemas multiprogramados e multitarefados e de sistemasfracamente acoplados e fortemente acoplados. Sistemas Operacionais 26 Histórico dos sistemas operacionais OBJETIVO: Ao término deste capítulo, você será capaz de entender o avanço dos sistemas operacionais até o estado da arte. Faremos uma viagem por todo o túnel do tempo, entendendo os tipos de sistemas operacionais e suas usabilidades. E então? Motivado para desenvolver esta competência? Então vamos lá. Avante! Como tudo começou? É impossível falar sobre a história dos sistemas operacionais, sem falar sobre a história da evolução do computador como um todo. Sempre existiu o conceito de que o software apareceu para desafiar o hardware e esse evolui para suportar aquele. No dia a dia, podemos ver isso claramente, temos computadores com alta capacidades de processamento, memórias cada vez maiores, sistemas de armazenamento, cada vez mais rápidos e, sempre, acompanhados desse avanço, temos diversos softwares que exigem mais processamento, mais armazenamento e, cada vez mais, memória. Para falar sobre a história dos sistemas operacionais, precisamos nos atentar a dois grandes marcos temporais. A máquina de Babbage, também chamada de máquina analítica ou Analytical Engine, considerada, hoje, como o mais próximo que temos de um computador moderno, criado, em 1833, por Charles Babbage, também chamado de “Pai do Computador”, juntamente com sua assistente Augusta Ada Byron, que ficou responsável por criar a sequência de instruções que eram executadas pela máquina. Ada Byron é considerada a primeira programadora da história. Considerando Babbage, temos o período em que o computador se modernizou, juntamente com os sistemas operacionais, mas vale nos atermos à menção honrosa de todos aqueles que vieram antes. Sistemas Operacionais 27 Os computadores antes de Babbage Um dos grandes nomes da programação moderna é Blaise Pascal, homenageado pela linguagem de programação Pascal. Mas o que muitos desconhecem é que Blaise Pascal foi um matemático francês que, em 1642, utilizando-se dos seus conhecimentos em matemática, inventou uma máquina de somar, a primeira do mundo, que ficou conhecida como Pascalina. Figura 6 – Manutenção de engrenagens Fonte: Freepik (2021). Em 1673, quando a Pascalina só era utilizada por faculdades renomadas, devido ao seu alto valor comercial, Gottfried Wilhem Leibniz se dedicou a aperfeiçoá-la e, com seu sucesso, construiu uma máquina capaz de multiplicar e dividir. As máquinas de Pascal e Leibniz foram utilizadas, constantemente, até o ano de 1820, quando outro matemático francês resolveu trabalhar em um invento capaz de realizar as quatro operações matemáticas. Charles Colmar então inventou o Arithmomètre. Uma máquina que teve mais sucesso comercial, pois suas antecessoras foram máquinas de sucesso acadêmico. Em 1822, surge o divisor de águas. Charles Babbage trabalhou e lançou uma máquina para cálculos de equações polinomiais, a máquina diferencial. Mas foi, em 1833, que, com o algoritmo descoberto por Ada Byron, surgiu a ideia da máquina analítica. Sistemas Operacionais 28 Os computadores depois de Babbage De acordo com Machado (2007), a máquina analítica nunca foi concluída por problemas de financiamentos, porém seu funcionamento e engenharia foi estudado e contribuiu para a criação do que hoje chamamos de computador moderno. E é por esse motivo que o título de Babbage se mantém como “Pai do Computador.” Com o avanço nas engenharias das máquinas, foi necessário o estudo de técnicas de comunicação e lógica. Foi seguindo essa linha de estudo que George Boole chegou à definição da lógica Booleana, a base para o modelo de computação digital que é utilizada até hoje. Também chamada de lógica binária e lógica de Boole, foi um conceito usado no desenvolvimento de dispositivos com relés e válvulas, criando sistemas complexos de engenharia, capazes de ações automatizadas, nunca pensadas. Boole abriu as portas para o desenvolvimento dos primeiros computadores. Em 1890, surgiu então a primeira máquina de cartões perfurados, criada por Herman Hollerith, para facilitar e acelerar os processos relacionados ao censo dos Estados Unidos. Hollerith, mais tarde, viria a fundar uma empresa que se tornaria a International Business Machine, IBM. Enquanto a utilização de cartões perfurados era difundida, o ano de 1930 se tornou um ano de inovação. Na Alemanha surgia a Z1, a primeira calculadora eletrônica, que utilizava de relés e lógica binárias para chegar aos seus resultados. Nos Estados Unidos, surgia também a primeira máquina de cálculos lineares, a ABC (Atanasoff-Berry Computer), nome dado por seus criadores John Vicent Atanasoff e Clifford Berry. Essa é a máquina considerada o primeiro computador digital. O ano era 1937, véspera do despontar da Segunda Guerra Mundial, Alan Turing cria a ideia da máquina universal, a máquina de Turing, capaz de executar qualquer sequência de instruções de forma eficaz. Um modelo teórico que criou todo um novo pensamento e chegou a auxiliar na criação do modelo de processamento de símbolos, a base da ciência da computação. Turing também é chamado de “Pai da Computação.” Sistemas Operacionais 29 Evolução do computador moderno Aqui, chegamos ao segundo grande marco temporal: A Segunda Guerra Mundial. Não é segredo que as guerras aceleram a pesquisa e o desenvolvimento de novas tecnologias, e foi a Segunda Guerra que acelerou o desenvolvimento do computador moderno. Mas porque isso é importante? Simples, os sistemas operacionais começaram a surgir, com o desenvolvimento dos computadores modernos. Década de 40 Com o advento da Segunda Guerra Mundial, tornou-se, cada vez mais comum, encontrar máquinas de grandes dimensões, capazes de realizar os mais diversos tipos de cálculos. Essas máquinas podiam ser do tamanho de salas ou prédios inteiros. Nessa época, Alan Turing estava focado em desenvolver uma nova máquina, uma capaz de decifrar mensagens codificadas, principalmente, do exército nazista. Foi na mesma época que a Marinha dos Estados Unidos começou a utilizar o Mark I, o invento de Howard Aiken, para realizar os cálculos de coordenadas náuticas. A máquina usava os mesmos princípios da máquina analítica, de Babbage. Com o fim da Segunda Guerra, os investimentos em tecnologia focaram em criar máquinas, capazes de maior processamento, desde o início da era criada por Pascal. Só em 1945, foi criado o primeiro computador eletrônico-digital. Ele recebeu o nome de Electronic Numerical Integrator and Calculator, o ENIAC. Foi uma máquina revolucionária, capaz de realizar milhares de adições por minuto, seu principal uso conhecido foi o projeto da bomba de hidrogênio. Por mais revolucionário que fosse o computador, programar o ENIAC requeria um conhecimento profundo do hardware da máquina. Sua programação consistia em painéis e conectores que deveriam ser posicionados, utilizando-se linguagem de máquina. Sistemas Operacionais 30 Embora a velocidade de processamento fosse excelente, o tempo necessário para codificar um programa começou a se tornar um empecilho para seu uso, o que levou a novas pesquisas. John Von Neumann, um dos consultores do projeto ENIAC, propôs o primeiro modelo de armazenamento de instruções e dados em uma memória. Figura 7 – Circuitos eletrônicos Fonte: Freepik (2021). Com base no modelo desenvolvido por Von Neumann, criou-se o conceito de programa armazenado que é a base da arquitetura atual de computadores. Esse modelo, chamado de arquitetura de Von Neumann, pegou as ideias de Babbage (máquina analítica) e Turing (máquina de Turing) e unificou-as em um só projeto, finalmente colocando-as em prática. Deu-se início ao que foi chamado de sistema computacional. Embora o conceito de sistema computacional começasse a ser aplicado no desenvolvimento de novos modelos de computadores, ainda não se trabalhava com mecanismosou dispositivos, com função de interface com o usuário. Não existiam formas de entrada de dados como teclados, nem de saída de informação como monitores. As máquinas ainda eram utilizadas, unicamente, por universidades e órgãos militares. O conceito de sistema operacional ainda não havia sido aplicado. Década de 50 Os computadores da época já eram mais usuais, mas não eram nada práticos. Seus tamanhos atrapalhavam processos simples, de manutenção. Foi, também, na década anterior que se popularizou o termo Sistemas Operacionais 31 “bug” para representar a existência de alguma falha no funcionamento. Insetos costumavam ficar presos entre as engrenagens e alavancas e causavam mau funcionamento. Os físicos, do final da década de 40, inventaram um dispositivo capaz de amplificar e trocar sinais eletrônicos. Batizaram seu invento de transistor. Com seu tamanho diminuto, os transistores começaram a ser utilizados para substituir os grandes maquinários dos computadores. Foi na década de 50 que a memória magnética começou a ser empregada. O uso combinado dos transistores e das memórias magnéticas permitiu um aumento na qualidade, confiabilidade e velocidade do processamento, além de rapidez e precisão no acesso de dados. Também foi ampliada a capacidade de armazenamento dos computadores e, conforme as engrenagens e alavancas foram sendo substituídos, começou-se também o processo de diminuição do tamanho das máquinas. Com a diminuição do tamanho e barateamento da produção, grandes empresas começaram a atuar no mercado e a desenvolverem computadores para utilização em aplicações comerciais. O primeiro computador a atender esse objetivo de forma bem-sucedida foi o UNIVAC, Universal Automatic Computer. VOCÊ SABIA? A IBM nasceu em 1896, com o nome de Tabulating Machine Company e já naquela época dominava a tecnologia dos cartões perfurados. Só em 1924, que se tornou a International Business Machine, a empresa que continuou dominando a parcela de mercado por ser a única no mundo a dominar a tecnologia de seu lançamento. Foi ela que, no início da década de 60, lançou o primeiro computador eletrônico do mundo, RAMAC 305, que por sua vez, foi a primeira máquina comercial a utilizar um sistema operacional. Programas específicos começaram a ser criados para as mais diversas áreas. Eles eram registrados em cartões perfurados que, quando submetidos a leitoras eram gravados em fitas. Os computadores eram Sistemas Operacionais 32 utilizados para realizar a leitura dessas fitas, executando as instruções gravadas, gerando uma fita de resultado. Quando um conjunto de programas é submetido a um computador, para sofrer esse tipo de processamento, chamados de processamento Batch. Antes do surgimento do processamento Batch, os processadores ficavam ociosos entre uma execução e outra, porque as inserções de instruções eram feitas de forma manual e uma por vez. Para realizar automatização desse processo, alguns membros do Centro de Pesquisa da General Motors, utilizando-se do computador IBM 701, criaram o primeiro sistema operacional, registrado na história. Ele serviria de base para a criação de várias outras versões até a versão que chegou para lançamento comercial, juntamente com o RAMAC 305. A década de 50 trouxe mais uma revolução nas tecnologias computacionais. Surgiram as primeiras linguagens de programação. Até aqui, sempre que alguma instrução era passada para o computador, a linguagem utilizada era a linguagem de máquina. Com o surgimento das linguagens de alto nível, como COBOL, FORTRAN e ALGOL, os programas que antes eram desenvolvidos para serem executados em um determinado hardware e que, muito dificilmente, eram compatíveis com outros hardwares, passaram a ser mais “eletrônicos”, tornando a manutenção e evolução deles mais fácil e barata. Os sistemas operacionais, seguindo a lógica da evolução das linguagens de programação, começaram a mudar para se tornarem mais simples, mais eficazes, para facilitarem codificação, execução e depuração dos aplicativos. Foi no final da década que surgiu o Atlas. O SO que introduziu a ideia de hierarquia de memória, criando os conceitos conhecidos e utilizados até hoje de memória principal, secundária e virtual. Década de 60 A década de 60 trouxe um avanço no uso de transistores. Eles passaram a ser utilizados em circuitos integrados, o que fez o custo, que já era baixo, cair mais ainda, tornando o computador comercial mais acessível para ser utilizado em massa. Sistemas Operacionais 33 As grandes empresas então começaram a utilizá-los para compor seus escritórios. Com a procura aumentando, novas tecnologias de processamento foram desenvolvidas e os processadores começaram a ficar, cada vez mais, poderosos. As revoluções dessa década trouxeram diversas técnicas que usamos hoje para implementar sistemas operacionais, são elas: multiprogramação, multiprocessamento, compartilhamento de tempo e uma usabilidade mais encorpada da memória virtual. Lembra-se do processamento Batch? A técnica de processamento em que permitia múltiplos programas serem executados de forma sequencial? Agora, surgiu o conceito de multiprogramação. Mas o que seria isso? É um modelo de processamento que permite que vários programas sejam executados na mesma memória. Enquanto no Batch, os programas eram enfileirados e executados, um por vez, aqui temos programas que executam parcialmente “simultaneamente”. Por exemplo, enquanto um processamento de leitura de dados ocorria, um processamento de escrita de dados poderia ser executado. Nessa década, começou o processo de substituição das fitas por discos, tornando o uso dos processamentos Batch e a multiprogramação mais rápidos e eficientes. Vários programas eram carregados na memória e a gerência da fila de execução passou a ser dinâmica e não mais puramente sequencial. Figura 8 – HardDisk (HD) – Disco magnético Fonte: Pixabay (2021). Sistemas Operacionais 34 A análise e a depuração de programas, no entanto, ainda estava sendo um empecilho para os programadores da época. Erros de digitação e de lógica poderiam levar horas para serem encontrados. A tecnologia de compartilhamento de tempo foi lançada para que esse problema pudesse ser sanado, fazendo com que os SO garantissem que cada programa utilizaria o processador por pequenos intervalos de tempo. O final da década de 60 foi marcado pela criação do mercado de minicomputadores, computadores de tamanho extremamente compacto, que poderiam ser mais facilmente comercializados. Foi também no final da década que Ken Thompson criou um sistema operacional que se popularizou e é utilizado como Kernel, base para vários sistemas operacionais modernos, o UNIX. Década de 70 O advento dos anos 70 trouxe o conceito de microtecnologia. Tivemos aqui o lançamento do primeiro microprocessador, utilizado na composição do primeiro microcomputador. Esta década também foi marcada pela criação de duas linguagens de programação que, até hoje, são importantes para a área da Tecnologia da Informação: Pascal e C. Os microcomputadores tornaram-se os computadores mais baratos já produzidos, o que induziu e aferventou o seu comércio, difundindo- os para vários usos possíveis. Foi nessa mesma década que Steve Jobs lançou o seu primeiro grande sucesso, o Apple II. Essa foi a década de fundação de duas das empresas que mais marcaram a evolução dos sistemas operacionais: a Apple e a Microsoft. Jobs e Gates competiram em tecnologia de forma tão intensa que forçaram a evolução da tecnologia, causando a criação de diversas arquiteturas de processamento e a principal delas foi a arquitetura de multiprocessadores. A arquitetura de multiprocessadores levou um desafio aos programadores responsáveis por desenvolver os SOs. Eles precisavam de novos mecanismos de controle e sincronismos. Surgiu então o multiprocessamento, quepermitia a execução de mais de um programa, agora, simultaneamente, ou até mesmo, quando necessário, a execução de um mesmo programa por mais de um processador. Sistemas Operacionais 35 Usando tecnologias de processamento vetorial e de paralelismo, agregadas ao multiprocessamento, foi lançado em 1976 o Cray-1, um microcomputador de processamento extremamente potente, composto por nada menos que duzentos mil circuitos integrados, capaz de realizar milhões de operações por segundo. As GUIs começaram a se tornar, cada vez mais populares, e com elas os usuários comuns começaram a se mostrar interessados na usabilidade das máquinas. As redes distribuídas, WAN (Wide Area Network), ficaram mais comuns, fazendo com que sistemas computacionais distintos passassem a conversar e compartilhar dados, independente da distância geográfica. As redes locais, LAN (Local Area Network), passaram a ser utilizados para interligar computadores e criar redes de acesso restrito. Com a popularização do uso de redes, os sistemas operacionais avançaram e se tornaram intimamente relacionados a elas. Década de 80 A década de 80, trouxe o surgimento do computador pessoal, da estação de trabalho e dos sistemas operacionais, com base totalmente, em uma interface gráfica amigável ao usuário. Embora as estações de trabalho fossem de uso de um usuário único, elas eram multitarefa, permitindo que diversas tarefas fossem realizadas de forma concorrente. Um dos destaques dessa era foi, sem dúvida, o surgimento da tecnologia de protocolo TCP/IP, Transmission Control Protocol/Internet Protocol. Esse protocolo de rede é utilizado para uso da internet. Década de 90 Os anos 1990 vieram com diversos avanços, relacionados a hardware e software. Podemos perceber que, durante a história, até esse momento, estavam sendo desenvolvidos hardwares mais potentes, mas pouco se falava da eficácia dos softwares. Eles eram criados para serem utilizados por aquele conjunto de hardware. Sistemas Operacionais 36 Isso mudou durante esta década. Softwares, cada vez mais potentes, foram surgindo o que obrigou a uma nova busca de formas de potencializar os hardwares para acompanhar esse desenvolvimento. A evolução da microeletrônica possibilitou a então criação de processadores e memórias com maiores capacidade e de custos, extremamente inferiores. Em adendo, as mídias de entrada e saída sofreram uma redução de tamanho físico e uma ampliação de capacidade, ao mesmo tempo. O Protocolo TCP/IP começou a ser mais frequente nos sistemas operacionais, devido à difusão do uso da internet. Com o aumento de usuários, surgiram os problemas de segurança e gestão do tráfego de dados. Os sistemas operacionais passaram a receber ferramentas que controlavam esse tráfego e procuravam garantir a segurança da informação. Também, se tornaram comuns os ataques de vírus ao computador. Figura 9 – Rede de conexão Fonte: Freepik (2021). Foi a década de 90 que consolidou as interfaces gráficas dos sistemas operacionais. O lançamento das empresas Microsoft, Apple e Unix ganharam a simpatia dos usuários finais e os computadores pessoais de modelo Desktop começaram a entrar nas casas. O Projeto Linux foi criado, em 1991, por Linus Torvalds, com auxílio e apoio de diversos programadores, criando uma comunidade que difundiu Sistemas Operacionais 37 o conceito de software aberto. Até o final dessa década, diversos produtos surgiram e foram disponibilizados, gratuitamente, na internet, atraindo diversos adeptos da filosofia. A virada do milênio Com computadores pessoais adentrando inúmeras casas pelo mundo e a internet se tornando um meio de entretenimento, além de uma forma de uma comunicação de dados, a virada do milênio trouxe um grande avanço nas tecnologias de processamento. Os, até então já baratos, computadores se tornaram tão acessíveis que passaram de bem de luxo para bem comum. A eficácia e eficiência dos equipamentos trouxeram um novo viés comercial e começou-se a trabalhar em modelos portáteis. Diversos portais de comunicação foram criados, periódicos que, antes, eram exclusivos em papel começaram a criar suas versões digitais. Comunicação pessoal, antes com base em telefonia e correios, começa a se digitalizar com a frequência do uso de e-mails. Diversos modelos de portais, especializados em comunicação humana, começaram a serem lançados por todo o globo, fazendo surgirem assim as primeiras redes sociais: Orkut, Facebook, Twitter, Flickr, Google+. Surgem também os aplicativos de comunicação direta: ICQ, MSN, IRC. O advento da internet gerou um novo modelo comercial, antes experimental. Nos anos 1990, já era comum existirem propagandas de aquisição de produtos por meio da TV e do rádio, mas com a internet, a ideia de comércio a distância popularizou-se e surgiram os primeiros e-commerces. Os sistemas operacionais tornaram-se o grande foco do desenvolvimento da tecnologia. Agora eles estavam presentes nas vidas das pessoas por meio de computadores e, aos poucos, começaram a ser implantados em outros dispositivos, começando a ideia de ambientes integrados. Sistemas Operacionais 38 Os SOs começaram a ser implementador com técnicas de inteligência artificial, fazendo com que o tratamento de erros, prevenções de segurança e recuperação de dados ocorressem de forma automática, sempre que necessário. A área da Tecnologia da Informação começou a se tornar de extrema importância em todas as linhas socioeconômicas e as tecnologias começaram a mudar para suprir essas necessidades, criando arquiteturas mais robustas e sistemas distribuídos. O final da década inicial do milênio, trouxe consigo uma nova visão do que era tecnologia. O que antes eram prédios e salas, agora estava disponível não apenas nas residências, como também espalhados nas mãos, com acesso facilitado com o toque. Surgiram os Smartphones e os sistemas operacionais embarcados. DEFINIÇÃO: Chamamos de sistema embarcado todo sistema operacional que é, completamente, dedicado a um dispositivo ou sistema que o controla. Os exemplos mais comuns os Smartphones. Um sistema operacional, totalmente, voltado para garantir o funcionamento de um dispositivo específico. Embora, por exemplo, possamos ter um Android Marshmallow em diversos dispositivos diferentes, na prática, o que existe é uma imagem do sistema operacional Android Marshmallow que foi adaptado e otimizado para o funcionamento em conjunto daquele agrupamento de hardware, ou seja, mesmo com sistemas operacionais de bases iguais, dois modelos diferentes de Smartphone teriam dois sistemas operacionais embarcados, totalmente diferentes. Década de 2010 – tempos atuais A ideia que até ali estava surgindo, aqui começou a ser popularizada. Com a facilidade de acesso e o baixo custo, os aparelhos smartphones se difundiram por todo o planeta. Dispositivos com capacidades de conexão à internet, que antes necessitava ser cabeada, agora utilizavam redes com base em conexões de ondas. Sistemas Operacionais 39 Com a comunicação de dados na palma das mãos e as diversas possibilidades de perdas de dados, novas tecnologias de armazenamento começaram a ser utilizadas. Diversos serviços de armazenamento de dados surgem, utilizando- se da internet. O armazenamento em nuvem difunde-se, se tornando uma nova rama de negócios digitais. O armazenamento massivo em disco, que antes era um desejo e uma necessidade, agora passa a ser, cada vez mais, substituível por um armazenamento de nuvem. A evolução da tecnologia móvel começou a desafiar os desenvolvedores de sistemas operacionais a criarem SOs mais robustos e com mais ferramentas e funcionalidades, voltadas à comunicação. As interfaces começaram a ser desenvolvidas para serem mais intuitivas e para garantirem uma compatibilidade na comunicação, entre os dispositivos móveis, desktops e servidores. Figura 10– Internet das Coisas (IoT) Fonte: Freepik (2021). Esse mesmo crescimento começou a trazer um novo conceito de usabilidade. Equipamentos que, antes eram puramente eletrônicos, começaram a se tornar digitais. Os sistemas operacionais foram aplicados em aparelhos de televisão, eletrodomésticos, equipamentos elétricos. Assim, surgiu a era da Internet das Coisas (Internet of Things – IoT). Sistemas Operacionais 40 RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo tudinho? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que a criação dos sistemas operacionais está intimamente ligada ao desenvolvimento e evolução dos computadores. A evolução das máquinas foi lenta e gradual, usando as mesmas mecânicas e extremamente complexas. Diversos foram os nomes que tentaram criar automatizações de trabalhos manuais, mas os mais famosos foram Babbage e Turing. Enquanto Babbage teorizou uma máquina, capaz de realizar processamentos analíticos, Turing utilizou a teoria de Babbage para criar ideal de processamento, uma máquina capaz de executar, qualquer instrução que fosse inserida em seu processamento. Infelizmente, nenhum dos dois viveu o bastante para ver suas teorias aplicadas e utilizadas, no dia a dia e, inclusive, eles nem imaginavam onde suas teorias os levariam na história da computação. Chegamos então aos sistemas operacionais modernos. Softwares extremamente poderosos, capazes de processamentos impensáveis, disponíveis em aparelhos que cabem na palma das nossas mãos. Sistemas Operacionais 41 Conceitos iniciais sobre sistemas operacionais OBJETIVO: Ao término deste capítulo, você será capaz de entender conceitos relacionados aos sistemas operacionais. Para entender o funcionamento de um SO é preciso ter em mente diversos conceitos sobre técnicas e funcionalidades para os quais ele é preparado. Como visto anteriormente, temos sistemas computacionais de diversos tipos de formação, bem como sistemas operacionais, desenvolvidos para atender cada modelo daquele sistema. Entender o tipo de sistema computacional ou operacional com o qual se está tratando, é fundamental para garantir a melhor aplicação das novas implementações ou de manutenções. Mas, quais são os conceitos que vão auxiliar, diretamente, nos tratamentos com o sistema operacional? E então? Motivado para desenvolver esta competência? Então vamos lá. Avante! Hardware Muito falamos sobre hardwares, até o momento, mas o que realmente ele é? Para responder isso, vamos ter que lembrar que um sistema computacional é formado por um aglomerado de circuitos eletrônicos. Esses circuitos eletrônicos formam diferentes dispositivos que têm funções específicas no sistema computacional. Existe uma numerosa lista de possibilidades da existência desses dispositivos em um sistema computacional, mas os mais comuns de serem encontrados são: processadores, memórias, registradores, barramentos, monitores de vídeo, dispositivos de impressão, mouses, teclados e discos magnéticos. Segundo Machado (2007), a característica comum a todos esses dispositivos é a capacidade individual de manipular dados de forma digital, gerando resultados específicos de cada função de dispositivo, tornando-os úteis e confiáveis para a realização da transmissão de Sistemas Operacionais 42 dados por meio do próprio sistema computacional. Dispositivos físicos que realizam transmissão de dados e comunicação, nesse sistema, são chamados hardwares. Figura 11 – Manutenção de hardwares por técnico Fonte: Freepik (2021). Os hardwares são divididos, no sistema, em três grandes agrupamentos: unidade central de processamento, composta unicamente pelo processador (veja na Figura 11); a memória principal, formada por um dispositivo de memória; e os dispositivos de entrada e saída. Esses três agrupamentos, ou unidades funcionais, estão presentes em todos os sistemas computacionais digitais, independente do modelo ou arquitetura. Algumas vezes, em formatos variados. Processador Todo sistema computacional é centralizado em dispositivos de hardware chamados de processadores. Os processadores, ou unidades centrais de processamento, são responsáveis por realizar todas as execuções de processar e o gerenciamento de ações de um sistema computacional, responsáveis, também, pelo controle de todas as unidades funcionais (outros hardwares), ligados ao sistema. Os processadores são o cérebro da máquina. Todos os dados, em algum momento, passam por eles para que alguma ação seja executada. Eles são responsáveis por controlar e executar cada instrução, registrada na memória principal, por meio de operações lógicas, aritméticas ou apenas de gestão de dados. Sistemas Operacionais 43 Assim, existem unidades diferentes do processador que lidam com cada tipo de operação realizada por ele: uma unidade lógica e aritmética, uma unidade de controle e os registradores. Cada unidade do processador tem suas funcionalidades bem definidas, por exemplo, a unidade de controle é a responsável pela execução de todas as atividades de cada componente do sistema computacional. É ela, por exemplo, que gerencia o processo de gravação e a leitura do disco magnético e o escalonamento de instruções, enfileirados na memória principal. A unidade lógica e aritmética já descreve em seu nome sua funcionalidade. Cada operação lógica, sendo comparação e testes lógicos, e operação aritmética, somas e subtrações, são realizadas nessa parte do processador. Por fim, temos os registradores. Eles são pequenos hardwares que compõem o hardware maior (processador). Eles, como o próprio nome já descreve, realizam o registro de dados. Para serem processados, os dados precisam estar em algum lugar de fácil acesso ao processador, então, durante uma execução, o processador registra esses dados, temporariamente, nos registradores e, quando o processamento é finalizado, ele emite o resultado e limpa dos dados registrados. Os principais registradores que existem em um processador são específicos, com alguma funcionalidade, voltada ao funcionamento do sistema como um todo. Um processador tem um registrador que guarda o endereçamento de memória da próxima tarefa a ser executada, e que, toda vez que a tarefa é concluída, ele já se atualiza para apontar para o próximo endereço, por exemplo. O funcionamento de um processador é um ciclo bem definido. De primeiro passo, o processador busca, na memória, o endereçamento registrado da próxima tarefa e então executa o processo de atualização do próximo endereçamento de memória. Ele então interpreta a instrução que recebeu, para a realização daquela tarefa e decodifica em linguagem de máquina. Caso existam dados complementares ou necessários na memória, ele realiza a busca e os carrega nos registradores. Quando os Sistemas Operacionais 44 registradores estão carregados com os dados necessários, finalmente, o processo é executado e então se inicia o ciclo novamente, como demonstrado na figura 12. Figura 12 – Funcionamento de um processador Atualização do registro do próximo endereçamento de instrução Execução da atividade Busca na memória pelo endereçamento de instrução Decodificação da instrução Busca de dados complementares Fonte: Elaborado pelo autor (2021). Memórias As memórias são dispositivos que permitem ao sistema computacional a ação de armazenar dados, de forma permanente ou temporária. Os computadores modernos, geralmente, com base na arquitetura de Von Neumann, utilizam-se de memórias. Memórias, quando realizam o armazenamento, organizam os dados em unidades de memória, a mais comum é o bit. Um bit é a menor unidade existente de memória, podendo assumir, apenas valores positivos ou negativos, aritmeticamente, descritos como 1 ou 0, respectivamente. Um sistema computacional trabalhacom a existência de dois tipos de memória, as voláteis e as não voláteis. A volatilidade da memória está diretamente ligada à necessidade de energia para manter os dados, e as memórias voláteis são totalmente apagadas, quando a energia desaparece. Com as não voláteis, mesmo quando o sistema não está sendo alimentado com energia, os dados permanecem armazenados. A memória principal, ou memória primária, é a memória onde os dados ficam armazenados, enquanto estão sendo utilizados. Ela é formada por células compostas por um determinado número de bits. É uma memória volátil. Na Figura 13, podemos ver o formato atual de uma memória principal. Sistemas Operacionais 45 Figura 13 – Memória principal Fonte: Freepik (2021). Para realizar o acesso ao conteúdo de uma célula da memória principal, o processador utiliza um registrador que ficou responsável por guardar um endereço de memória. Então, se determinada instrução quiser acessar informações na memória, ela precisa fornecer, ao processador, o endereço em que aquela informação foi armazenada. As memórias secundárias são memórias não voláteis, responsáveis pelo armazenamento de modo permanente dos dados. São utilizadas para agrupar dados importantes que não, necessariamente, serão utilizados pelo processador imediatamente. Seus principais exemplos são as memórias de fita magnética, disco magnético e disco óptico. Por fim, temos o terceiro tipo de memória, que também é uma memória volátil. A memória cache é uma memória de alta velocidade, utilizada para reduzir a disparidade entre as velocidades de execução das instruções pelo processador e a velocidade que os dados são gerenciados na memória principal. Se colocarmos em ordem de velocidade de acesso, temos a memória secundária, com a mais lenta e a memória cache com a mais rápida. Em ordem de espaço de armazenamento, a velocidade de acesso é inversamente proporcional, sendo a memória cache a com menor capacidade de armazenar massividade de dados e a memória secundária, a com maior capacidade. Sistemas Operacionais 46 Dispositivos de entrada e saída Um sistema computacional é formado por um sistema operacional, processador, hardwares, softwares e usuários, como já falamos. O objetivo geral da existência de um sistema computacional é a interação do usuário com os hardwares e softwares com o foco de determinar tarefas e receber resultados. Para isso ocorrer, são necessários dispositivos que permitam essa comunicação, transformando linguagem humana em linguagem de máquina e vice-versa. A esses dispositivos, damos o nome de dispositivos de entrada e saída, utilizados pelo usuário, para comandar o sistema computacional (entrada) e para receber os resultados das execuções de suas tarefas (saída). Os discos e fitas magnéticas são os dispositivos de entrada, utilizados pelo sistema computacional como memórias secundárias, geralmente, sendo acoplados ao sistema computacional e, raramente, são retirados de seus lugares. Figura 14 – Dispositivos de entrada e saída mais comuns Fonte: Freepik (2021). Os dispositivos não necessariamente acoplados são variados, como teclados e mouses que têm objetivo de transmitir aos hardwares e softwares os comandos, definidos pelo usuário, de forma direta para gerar resultados. Resultados esses que podem ser exibidos, diretamente em telas, e monitores ou podem ser impressos ou plotados. Sistemas Operacionais 47 Barramentos Barramentos são fundamentais no tratamento das unidades funcionais do sistema computacional. São os responsáveis por realizar a conexão de dados entre os dispositivos de hardware. Seu funcionamento é simples. Eles têm dois registradores, um que registra a natureza da operação que está sendo executada, e outro que registra os dados que devem ser repassados de um hardware para outro. Os dados são endereçados e enviados para a memória principal, para assim passar pelo processador e a tarefa ser executada. Agora, imagine que você está mexendo o mouse pela tela do seu computador. Enquanto você está movimentando o ponteiro, centenas de processamentos estão acontecendo e centenas de sinais estão sendo enviados do seu mouse, passando por barramentos, para só então entrarem na memória e serem processados pela unidade central de processamento. Agora perceba, também, que o ponteiro do mouse apresenta um movimento fluido e contínuo. Esse é o potencial de processamento dos computadores modernos. Arquiteturas de processadores Para falar sobre as arquiteturas, usadas nos processadores, é necessário entender um pouco sobre o conceito do que seria uma linguagem de máquina. Bom, quando falamos em computação, temos a linguagem humana, a linguagem de programação e a linguagem de máquina. A linguagem humana é a que nós utilizamos no dia a dia, a linguagem como os humanos costumam se comunicar. Linguagem de programação é uma abstração da linguagem humana, criada para podermos nos comunicar com a máquina. O computador não entende a linguagem humana, assim como ele não entende a linguagem de programação, o que ocorre é que as linguagens de programação são criadas com base na arquitetura de um tradutor de código. Esse tradutor é o responsável por transformar a linguagem humana em uma linguagem que o sistema computacional possa compreender. Sistemas Operacionais 48 Existem linguagens de programação de alto nível, que são mais próximas da linguagem humana e são mais facilmente entendidas em uma leitura superficial, e existem as linguagens de programação de baixo nível, que são mais próximas da linguagem de máquina, a linguagem entendida pelo sistema computacional. Cada processador vem com um conjunto de instruções, definidas pelo fabricante; são responsáveis por ditar a forma como esse processador irá trabalhar com seus registradores, controle de endereçamento e os tipos de dados que podem ser interpretados. Se um programa for criado, em linguagem de máquina, podemos executá-lo diretamente no processador, sem a necessidade de interpretá- lo. Também pensando na ideia de que cada processador tem a sua lista de instruções, podemos dizer que cada processador fala uma linguagem diferente. As instruções diretas que funcionam em um processador A não serão executadas pelo processador B. Um processador de arquitetura RISC (Reduced Instruction Set Computer), por exemplo, é criado com uma quantidade diminuta de instruções de máquina. Geralmente, as instruções aqui não acessam a memória principal e podem ser executadas, diretamente, no processador, sem passar por meios externos. A arquitetura RISC tem execução de tarefas rápida e tem fácil implementação de pipelinings. DEFINIÇÃO: Nós vimos que existe um tipo de processamento de dados, chamado de processamento Batch, em que o sistema operacional aloca um lote de tarefas e faz com que elas sejam executadas de forma intercalada para diminuir o tempo ocioso do sistema. Um pipelining é um outro modelo de processamento em lote, no qual esse lote de tarefas é executado de forma que cada tarefa seja particionada em pequenas instruções e entrem uma a uma, sendo executadas como em uma linha de produção (TANENBAUM,1995). Sistemas Operacionais 49 Uma arquitetura CISC (Complex Instruction Set Computer), por outro lado, apresenta um conjunto de instruções complexas que necessitam de programas para serem executadas. Ela se diferencia da RISC também pelo número de registradores, enquanto a RISC tem muitos, CISC é caracterizada por ter poucos. Esse número reduzido de registradores dificulta a implementação de pipelinings. Software Depois de trabalharmos a definição de hardwares, está na hora de falarmos sobre o outro nome, citado diversas vezes: o software. O hardware nada mais é do que um conglomerado de peças eletrônicas que reagem a impulsos elétricos. Na prática, sem um software eles não têm aplicação direta. É necessário existir umconjunto de programas para servir de interface de comunicação e que realizem a gestão de fluxo de dados para que os hardwares possam então funcionar devidamente no sistema computacional. Podemos dizer então que o software é o gerenciador lógico do sistema computacional e que ele pode enviar diversas tarefas e instruções para serem executadas no processador e, após a conclusão do processamento, recolher os resultados e organizá-los para melhor apresentar ao usuário que disparou seu início. Podemos fixar três nomenclaturas que são utilizadas, na área da computação, para trabalharmos com softwares. Um software de sistema operacional é o próprio sistema da máquina, quem faz a gestão direta e indireta de todos os hardwares e demais softwares que compõem o sistema computacional. Mas, além do sistema operacional, os computadores modernos vêm com um conjunto de softwares que têm funções complementares ao SO. Eles são chamados de softwares utilitários e realizam serviços de apoio ao SO. São eles que cuidam de correções de erros, depuração de dados, carregamentos e ligações. Sistemas Operacionais 50 Por fim, os softwares aplicativos são aqueles que foram criados por usuários ou empresas, para a realização de objetivos específicos ou realização de tarefas cotidianas. Tradutor Como falado anteriormente, existem diversas linguagens de programação de alto nível e baixo nível. Essas linguagens de programação não são compreendidas pelo sistema computacional e precisam passar por um processo de tradução. Os primeiros programadores eram obrigados a saber linguagem de máquina, já que as instruções eram passadas para o processador por meio de painéis e fios. Porém, com o desenvolvimento das técnicas de processamento, linguagens foram introduzidas no universo computacional. REFLITA: Vamos contextualizar os sistemas em Batch, sem conceitos de multiprogramação. Nessa etapa de processamento, em que um código não pode ser executado porque vai ficar, dependente de um código externo que precisa ser preparado, antes de ser executado, o sistema computacional se tornava ocioso e o tempo permanecia sendo gasto. Nos computadores modernos, esse processo simplesmente é realocado para outra posição na fila de execução e um novo processamento pode ocupar seu espaço. Um tradutor carrega a instrução escrita em linguagem de programação e converte toda a representação simbólica em linguagem de máquina para só então iniciar a execução do código fonte. Muitas vezes, os códigos não estão prontos para serem executados, mesmo após estarem traduzidos, isso ocorre devido a existência de dependências externas que precisam ser ligadas ao processo de execução. Linker e Loader Após o tradutor gerar o programa de código fonte, ou módulo- objeto, cabe ao linker a função de realizar ligações entre os códigos Sistemas Operacionais 51 fontes que têm dependência entre si, para que assim seja gerado um programa executável que, pode ser listado na memória principal, para ser executado pelo processador. Linkers são os softwares utilitários responsáveis por resolver todas as referências simbólicas entre dois, ou mais, códigos fontes. Ele faz isso, utilizando-se de bibliotecas de módulos-objetos. O linker é o responsável por garantir o funcionamento do endereçamento da tarefa, gerada na memória principal, utilizando-se do princípio da relocação, para que sempre que o objeto seja carregado na memória, ele possa ser acessado. Para isso, o linker chama o processo do loader, que faz o trabalho de relocar esse processo sempre que é recarregado na memória principal. É o loader que cuida do carregamento da memória principal. Todos os processos que estão enfileirados para serem executados são gerenciados por ele. Concorrência Um sistema operacional é um gestor para o sistema computacional. Ele é responsável por organizar e escalonar os processos, que serão executados, de forma ordenada e balanceada. Podemos então dizer que um sistema operacional é um conjunto de processos que serão executados, competindo por recursos, ordenadamente. Isso ocorre porque o processador executa diversas tarefas, simultaneamente, fazendo com que os recursos do sistema computacional tenham que ser concorridos em cada processo. Já vimos o conceito relacionado a multiprogramação. Se existe algo com uma característica multiplicativa, significa que existe algo com característica individual, então, vamos entender também o conceito de monoprogramação. Em sistemas monoprogramáveis, cada processo entra de forma solitária no processador e permanece lá até seu encerramento. Todos os recursos do sistema computacional permanecem exclusivos para esse Sistemas Operacionais 52 processo. É um tipo de processamento que não utiliza o potencial do processador e causa ociosidade no sistema. Nos sistemas multiprogramáveis, temos exatamente o conceito contrário, em que diversos processos são armazenados, na memória principal, e são executados de forma concorrente, com os recursos do sistema. Enquanto um processo aguarda uma operação de entrada/ saída, por exemplo, outro processo ocupa o processador. O princípio da concorrência diz que, quando um determinado processo perde o lugar no processador e retorna para a memória principal e logo em seguida, quando for recuperar seu lugar no processamento, esse processo deve estar exatamente igual ao momento em que deixou o processador, ou seja, a concorrência de processos exige que seja, criada uma imagem estática do momento do processo, para que esse possa ser continuado do mesmo ponto em que parou. Para a existência da concorrência, também devemos nos atentar à necessidade de existirem interrupções e exceções. Quando, por exemplo, algum evento causa uma mudança no fluxo de processamento ou ocorre alguma falha de processamento, chamamos de interrupção ou de exceção, dependendo da natureza do evento. Para entender esses dois conceitos, vamos contextualizar um caso: existe um processo A, que iniciou o processamento e solicitou uma requisição de entrada. Entrada e Saída são processos lentos, logo, o sistema operacional escalonou o processo B para executar, enquanto A ainda aguarda. Quando o hardware de entrada emite um sinal, informando ao processador que a requisição de A foi atendida, um processo de interrupção é disparado e interrompe o processamento de B, retomando, em seguida, o processamento de A. Em resumo, uma interrupção sempre será gerada por causa externa à execução. Quando uma interrupção ocorre, o sistema operacional aciona um sistema de tratamento de interrupção, para garantir que o estado lógico daquele processo permaneça o mesmo até ele retornar para o processamento. Sistemas Operacionais 53 Exceções são geradas, sempre, como resultados do processo de execução. Quando ocorrem falhas de processamento, como por exemplo um ciclo infinito (loop infinito), uma superlotação de memória (overflow), uma divisão por zero ou o retorno nulo de uma solicitação que não deveria retornar nulo. Assim como quando ocorrem interrupções, quando ocorrem exceções, o sistema operacional tende a acionar uma rotina de tratamento de exceções, para evitar que a falha cause danos diretos a outros processos. RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo tudinho? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que um sistema computacional é formado por hardwares e softwares e que dependem um do outro para operar, senão não passam de um conjunto de circuitos que responde a impulsos elétricos. Você deve ter visto os tipos de hardwares que podem compor o sistema computacional, seus funcionamentos, diferenças, classificações e papéis específicos no sistema. Quando falamos de softwares, foram listados os conceitos e suas divisões, os tipos existentes,funcionalidades no sistema computacional e as funções dos utilitários de tradução, ligação e carregamento de código. Também, foi abordado o conceito de concorrência, a capacidade do sistema computacional em permitir que seus recursos sejam concorridos pelos processos, armazenados na memória principal. Vimos um pouco sobre o que seria uma interrupção e uma exceção e sobre o princípio da concorrência. Sistemas Operacionais 54 Estrutura dos sistemas operacionais OBJETIVO: Ao término deste capítulo, você será capaz de entender a estrutura de um sistema operacional. Compreender as estruturas de funcionamento de um sistema operacional nos mostra o caminho a seguir para a criação das ferramentas de sistema (softwares utilitários). E então? Motivado para desenvolver esta competência? Então vamos lá. Avante! Para a compreender o funcionamento de um sistema operacional, precisamos entender que ele é um agrupamento de instruções que estão sendo executadas de forma lógica e ordenada. Para que essa lógica e ordenação funcionem, é necessário que toda a estrutura do sistema seja bem definida. Vamos dar uma olhada, mais profundamente, em cada parte dessa estrutura: Processos e endereçamento Muito falamos sobre processos, processamentos, processadores. O que realmente seria um processo? Podemos dizer que é um dos conceitos mais básicos e mais importantes para os sistemas operacionais. Todo software em execução irá gerar um ou mais processos, então podemos relacionar, diretamente, que um processo é um software ou parte dele que é executado pelo sistema computacional. Um processo tem instruções detalhadas para a execução de sua tarefa central. Essas instruções podem ser simples ou até mesmo complexas o bastante para se tornarem um novo processo. Cada um deles, quando é alocado na memória principal, recebe um endereçamento de memória. Esse endereçamento consiste em um registro de posição, na memória, no qual aquele processo estará armazenado. Aqui, podemos relembrar que a memória principal é composta, por células divididas, em agrupamentos de bytes. O endereçamento diz para o processador em qual célula e em que byte específico ele irá encontrar o início do processo que irá ser executado. Sistemas Operacionais 55 No espaço endereçado, estão presentes todo o código executável, os dados a serem processados e o conjunto de recursos que serão necessários para a conclusão da tarefa. As principais chamadas do SO, quando se trata do gerenciador de processos, estão relacionadas ao início e final do processo. Sempre que um processo é iniciado pelo sistema, ele dispara uma rotina que irá realizar o seu encerramento. Em todo sistema computacional, necessariamente na memória principal, existem espaços destinados ao armazenamento de informações, sobre os processos registrados, que entrarão na fila de processamento. Esses espaçamentos são organizados e registrados de forma que um espaçamento seja único, impedindo assim que o funcionamento de um processo interfira em outro. Em uma situação ideal, os processos são enxutos e cabem, individualmente, em um endereçamento de memória, porém, com os avanços tecnológicos, processamentos, cada vez mais poderosos, foram se tornando mais comuns. e os processos que utilizavam diversos espaços de memória começaram a fazer parte do dia a dia do sistema computacional, o que acabava por diminuir a capacidade de armazenamento de um número maior de processos. Foi então aplicado o uso de memórias virtuais, uma técnica que separa parte do disco de armazenamento (memória secundária) para servir de apoio à memória principal, na qual o processo é incialmente endereçado a essa memória principal e, complementarmente, endereçado no disco. Conforme o processamento vai ocorrendo, os endereçamentos são trocados de uma para outra até que todo o processo tenha passado pelo processador. Arquivos Trabalhando com o conceito de memória secundária, ou memória de armazenamento, temos então os arquivos. Aglomerados de dados, logicamente, dispostos de forma a exibirem resultados ou informações, pertinentes ao usuário. A base fundamental de todo o sistema operacional é o gerenciamento de arquivos, afinal, é necessário o registro dos arquivos, Sistemas Operacionais 56 na memória secundária, para serem executados com sucesso, durante o processamento de dados. Os arquivos são manipulados por meio de chamadas de sistema que podem mover, criar, editar, excluir ou copiar seus dados. A usabilidade de um arquivo é simples: ele pode ser aberto, lido e fechado. Para trabalhar com arquivos, o sistema operacional fornece o suporte aos diretórios, que nada mais são do que agrupadores de arquivos. Você, por exemplo, pode ter um diretório com todos os arquivos referentes ao curso que está fazendo, agrupando-os de forma inteligente e que facilitem um acesso futuro. O sistema operacional oferece a capacidade de um diretório ter outros diretórios, o que cria a árvore de hierarquia de diretórios, na qual para você acessar um diretório filho, necessariamente, você tem que passar pelo diretório pai. A essa árvore hierárquica, chamamos sistema de arquivos. Assim como na memória principal, os dados armazenados na memória secundária, também, são endereçados. Esse endereço é composto pela nomenclatura do disco, também chamada de diretório- raiz, em que se encontra o caminho para acessar o arquivo, passando por todos os diretórios necessários para chegar a ele. O resultado desse endereço é chamado de caminho ou pathname. Figura 15 – Exemplo de hierarquia de arquivos Fonte: Elaborado pelo autor (2021). Sistemas Operacionais 57 Com base no exemplo da Figura 15, podemos ver que o diretório- raiz tem três diretórios que contêm outros diretórios e arquivos. Para acessarmos, por exemplo, o arquivo “Unidade 01.pdf”, temos que acessar o seguinte Pathname: “/Raiz/Documentos/Faculdade/Sistemas Operacionais/Unidade 01.pdf”. Interpretador de comandos Antes de continuar, vamos falar um pouco sobre um SO específico. Para essa disciplina, iremos utilizar uma distribuição Linux, chamada de Ubuntu. Ela utiliza a base do sistema Debian. Usaremos um sistema Linux, devido a característica de código aberto que nos permite maior liberdade para realizarmos operações das mais variadas naturezas. É comum a comunidade, inclusive, utilizar o sistema operacional como base e realizar centenas de modificações para torná-los únicos para cada usuário. Figura 16 – Shell Fonte: Elaborado pelo autor (2021). Dito isso, um sistema operacional é na verdade um código que realiza as chamadas de sistema, ou seja, o SO é um processo que chama outros processos, mas isso, nós já definimos anteriormente. Vale a pena lembrar que alguns sistemas operacionais trabalham com shell. O shell é o Sistemas Operacionais 58 interpretador de comandos mais comum, utilizado nas distribuições Linux e, recentemente, aderida por algumas versões do Microsoft Windows e também tem bastante similaridade com o interpretador de comandos do iOS, da Apple. Cada linha digitada no shell gerará um subprocesso que irá executar e, quando encerrado, irá exibir o resultado de seu processamento. Vamos tomar como exemplo o Shell do Ubuntu, caso a instrução “date”, sem aspas, seja inserida, ele irá realizar o processamento e irá retornar a data atual do sistema operacional. Nós podemos, por exemplo, realizar combinações de comandos como, “echo ‘Olá Mundo’”, sem as aspas duplas. Esse comando vai fazer com que o interpretador de comandos, shell, ou terminal, exiba a saída “Olá Mundo”, porém, caso seja realizada uma modificação nesse comando e ele se torne “echo ‘Olá Mundo’>arquivo1”, também sem as aspas duplas, ele irá gerar um arquivo, no diretório em que está, e nesse arquivo irá escrever “Olá Mundo”. Quadro 1 – Lista de comandos comuns ao interpretador de comandos do UBUNTU Comando Objetivo AplicaçãoMkdir Criação de um diretório mkdir pasta01 Cp Copiar arquivos ou diretórios cp arquivo01 arquivo02 Mv Mover arquivos ou diretórios mv pathname1 pathname2 Cd Acessa um determinado Pathname cd pathname rm Remove um arquivo ou diretório rm arquivo 01 Help Exibe informações sobre os comandos comando --help Fonte: Elaborado pelo autor (2021). O quadro 1 traz uma lista dos comandos mais comuns, utilizados pelo sistema LINUX. A lista de comandos do sistema operacional é infindável, cada um contém suas próprias funcionalidades e muitos são relacionados a softwares específicos. Na lista, temos instruções de gerenciamento do sistema de arquivos. Sistemas Operacionais 59 Criando shellscripts Vimos que o Shell é o interpretador de comandos no Linux e que ele aceita a inserção de instruções diversas que realizam processos e retornam resultados. Vimos, também, alguns comandos que são mais comuns no uso do shell, mas agora vamos realizar um procedimento de automatização desses comandos. Vamos criar um arquivo, chamado de shellscript, que será executado e irá realizar a sequência de instruções que nós definirmos, no interpretador. Vamos começar com a preparação do ambiente. Já é comum as distribuições Linux virem com editores de texto instalados, mas vamos utilizar o editor de textos do próprio terminal do Linux. Caso ele não esteja instalado, basta executar o comando a seguir: sudo apt-get update && sudo apt-get install vim Sudo é um comando que invoca as permissões do administrador do sistema. Somente ele pode realizar algumas operações especiais ou instalações de pacotes de recursos. Apt-get é uma chamada de instalador de pacotes de recursos; é um gerenciador que auxilia o sistema operacional a organizar os softwares que estão armazenados no disco. Ele pode ser combinado com comandos como “update”, para realizar a atualização de todos os pacotes instalados e “install” que irá instalar o pacote, cujo nome for listado, após o comando. Então, essa linha de comando realiza a atualização de todos os pacotes de recurso instalados no seu sistema operacional e, logo em seguida, instala o software aplicativo “vim”. Vamos criar um arquivo, com o vim, inserir uma sequência de comandos e então preparar a execução. Para criar o arquivo, podemos utilizar o comando “vim meu_shell.sh”, que irá criar um arquivo de texto com o nome “arquivo.sh”. Nesse arquivo iremos digitar: Sistemas Operacionais 60 Código 1 – Exemplo de Código ShellScript simples #!/bin/bash echo “Esse é o meu primeiro ShellScript” numero_1 = 15 numero_2 = 16 soma = $numero_1 + $numero_2 echo “Um Shell Script é capaz de realizar operações matemáticas, quando precisar” echo “Por exemplo: $numero_1 + $numero_2 = $soma” Podemos também criar condições e laços de repetição que executem um shellscript, criando execuções mais complexas e mais específicas. Podemos usar como exemplo o código abaixo: Código 2 – Exemplo de código shellscript com condicional e laço de repetição if [“$numero_1” > 10]; then echo “O número é maior que 10” fi if [“$numero_2” > 20]; then echo “o número é maior que 20” elif [“$numero_2” < 10]; then echo “o número é menor que 10” else echo “o número é $numero_2” fi for i in $(seq $numero_1) do echo $i done Sistemas Operacionais 61 No código 2, temos dois modelos de condicional e um modelo de laço de repetição. No primeiro modelo, ele apenas irá informar, se o número é maior que 10. No segundo modelo, ele faz uma verificação para o número maior que 20 ou menor que 10, caso não seja nenhum dos dois, ele irá imprimir o próprio número. Por fim, o laço de repetição que irá fazer com que todos os números de 0 até 15 sejam impressos na tela, de 1 em 1. Lembre-se, a implementação de um arquivo shellscript necessita sempre ser iniciada com a instrução “#!/bin/bash”, sem aspas. Retomemos o arquivo criado pelo vim, o “meu_shell.sh”. Ao concluir a inserção das instruções, linha a linha no arquivo, pressione a tecla ESC, no teclado e digite as teclas : e w, logo pressione enter. Essa ação irá salvar as alterações no arquivo. Repita o procedimento de pressionar ESC e agora realize a inserção das teclas : e q, logo depois pressione enter, novamente. O aplicativo vim será encerrado e nós retornaremos para o interpretador de comandos. Caso deseje, você também pode efetuar esse procedimento, utilizando wq, juntos, assim ele irá salvar e, em seguida, encerrar o aplicativo. Agora vamos transformar nosso arquivo de texto em um shell executável, para isso, vamos mexer nas permissões gerais do arquivo. O comando que permite que nós alteremos as permissões de leitura e execução de um arquivo é o chmod. chmod a+x meu_shell.sh Ao executar esse comando, o arquivo se torna executável e passará a funcionar sempre que for chamado com a instrução “./meu_shell.sh”. Comunicação Sistemas operacionais modernos são preparados, para a realização de conexões entre máquinas, por meio de redes de comunicação. Existem três protocolos que são utilizados, de forma comum, para a realização dessa conexão e troca de pacotes de dados: TCP, SSH e FTP. Sistemas Operacionais 62 O protocolo TCP é o mais utilizado para realização de conexões de rede, geralmente, relacionado à rede WAN. Ele é que permite a conexão de um sistema computacional com a internet. Com ele, por meio de servidores e endereçamentos WEB, é possível realizar o envio e recebimento indireto de dados. Protocolos SSH e FTP diferem do TCP no caráter de diretividade. Enquanto o TCP utiliza uma ferramenta para realizar o intermédio de comunicação, os protocolos SSH e FTP conectam dois sistemas computacionais, diretamente entre si, e permitem a interação de dados. O Protocolo SSH, Secure Shell, garante a conexão entre o cliente (sistema computacional requisitante) e o cliente remoto (sistema computacional acessado). Ele permite a manipulação e comunicação de dados, bem como a transferência de arquivos. Ele funciona de forma a criptografar os arquivos que estão transitando de um sistema para o outro, evitando assim que, caso eles sejam interceptados por um software malicioso, possam ser lidos por terceiros. O FTP, File Transfer Protocol, é um protocolo de transferência de arquivos. Enquanto o SSH permite a manipulação do sistema computacional, acessado remotamente, o FTP permite apenas a comunicação e transferência de dados. As distribuições Linux são variadas e implementadas para diversos tipos de objetivo, logo, algumas delas já podem vir com aplicativos que garantam ou facilitem a utilização de protocolos de transferência de arquivos. O Ubuntu não está nessa lista de distribuições, logo, para utilizar o serviço, teremos que realizar a instalação dos pacotes necessários. No shell do seu sistema operacional, execute o seguinte comando: sudo apt-get install openssh-server sudo service ssh start Sistemas Operacionais 63 Para se conectar com o sistema operacional, é necessário utilizar o comando ssh, da seguinte forma: ssh nomeusuario@ip-remoto O “nomeusuario” é o nome do usuário do computador remoto, “ip- remoto” é o endereçamento IP do computador remoto. É possível também acessar por meio de uma porta de conexão específica e ainda conectar, automaticamente, já passando na instrução a senha de conexão. Para usar outra porta, que não seja a padrão, basta adicionar no final da instrução o complemento “-p numeroporta”, sem aspas. Para realizar a passagem automática da senha, precisamos utilizar um outro pacote do sistema operacional. Execute os comandos: sudo apt-get install sshpass sshpass -p “seu_password” ssh nomeusuario@ip-remoto Para realizar a transferência de arquivos, utilize, no lugar de ssh, o comando scp, seguido do pathname que contém o arquivo: scp nomeusuario@ip-remoto:/home/documentos/faculdade/sistemas_ operacionais/unidade_01.pdf /home/documentos Esse comando fará comque o documento “unidade01.pdf”, que está em outro sistema computacional, seja copiado para meu sistema computacional, nos diretórios “documentos.” Sistemas Operacionais 64 RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que um sistema computacional tem uma estrutura bem definida, e que tudo funciona de forma organizada e objetiva. Os famosos processos, tão citados em outros capítulos, são a alma do sistema operacional e são movimentados o tempo inteiro entre as memórias principal, secundária e o processador. Viu também a importância do endereçamento de memória e entendeu o conceito do sistema de arquivos. O sistema de arquivos, como base do sistema de armazenamento da memória secundária, é organizado de forma hierárquica e pode ser acessado também por meio de um endereçamento de memória. Você entendeu o conceito do interpretador de comandos, descobriu alguns comandos comuns e suas funcionalidades e até mesmo montou seu primeiro shellscript. Agora você é capaz de criar shellscripts variados para atender os mais diversos propósitos no seu sistema computacional. Falamos também sobre comunicação de dados, focando em protocolos de transferência de arquivos. Realizou a primeira configuração e entendeu como funciona o protocolo SSH para manipulação de clientes remotos e transferência de arquivos. Sistemas Operacionais 65 REFERÊNCIAS MACHADO, F. B.; MAIA, L. P. Arquitetura de sistemas operacionais. Rio de Janeiro: LTC, 2007. NARAYAN, K. L. Computer aided design and manufacturing. New Delhi: Prentice Hall of India, 2008. TANENBAUM, A. S. Sistemas operacionais modernos. São Paulo: Guanabara Koogan, 1995. SILBERSCHATZ, A.; GALVIN, P.; GAGNE, G. Fundamentos de sistemas operacionais. Rio de Janeiro: LTC, 2010. SILBERSCHATZ, A. GALVIN, P.; GAGNE, G. Sistemas operacionais: conceitos e aplicações. Rio de Janeiro: Campus, 2000. Sistemas Operacionais Sistemas Operacionais Unidade 2 Processos e Threads Diretor Executivo DAVID LIRA STEPHEN BARROS Gerente Editorial CRISTIANE SILVEIRA CESAR DE OLIVEIRA Projeto Gráfico TIAGO DA ROCHA Autoria LEANDRO C. CARDOSO AUTORIA Leandro C. Cardoso Sou formado em Comunicação Social com habilitação em Design Digital e mestrado em Tecnologias da Inteligência e Design Digital, pela PUC-SP, com experiência em direção de arte e criação na área com mais de 25 anos. Passei por empresas com a Laureate International Universities - FMU | FIAM-FAAM, Universidade Anhembi Morumbi e o Centro Paula Souza (FATEC-ETEC). Fui analista de Desenvolvimento Pedagógico Sênior - Laureate EAD e coordenador de Curso Técnico de Design Gráfico, no Centro Paula Souza. Fui revisor técnico e validador para cursos EAD, atendendo cliente como Laureate International Universities; DeVry Brasil; UNEF; FAESF; Faculdade Positivo; Uninter; Platos Soluções Educacionais S.A. (Krotonn - Universidade Anhaguera). Sou autor de mais de 21 livros didáticos, um dos organizadores da Maratona de Criação e Design do Curso de Comunicação Visual, da ETEC - Albert Einstein. Sou apaixonado pelo que faço e adoro transmitir minha experiência de vida àqueles que estão iniciando em suas profissões. Por isso, fui convidado pela Editora Telesapiens a integrar seu elenco de autores independentes. Estou muito feliz em poder ajudar você nesta fase de muito estudo e trabalho. Conte comigo! ICONOGRÁFICOS Olá. Esses ícones irão aparecer em sua trilha de aprendizagem toda vez que: OBJETIVO: para o início do desenvolvimento de uma nova compe- tência; DEFINIÇÃO: houver necessidade de se apresentar um novo conceito; NOTA: quando forem necessários obser- vações ou comple- mentações para o seu conhecimento; IMPORTANTE: as observações escritas tiveram que ser priorizadas para você; EXPLICANDO MELHOR: algo precisa ser melhor explicado ou detalhado; VOCÊ SABIA? curiosidades e indagações lúdicas sobre o tema em estudo, se forem necessárias; SAIBA MAIS: textos, referências bibliográficas e links para aprofundamen- to do seu conheci- mento; REFLITA: se houver a neces- sidade de chamar a atenção sobre algo a ser refletido ou dis- cutido sobre; ACESSE: se for preciso aces- sar um ou mais sites para fazer download, assistir vídeos, ler textos, ouvir podcast; RESUMINDO: quando for preciso se fazer um resumo acumulativo das últi- mas abordagens; ATIVIDADES: quando alguma atividade de au- toaprendizagem for aplicada; TESTANDO: quando o desen- volvimento de uma competência for concluído e questões forem explicadas; SUMÁRIO Conceito de processos e threads ......................................................... 10 Os processos e o modelo de threads na dinâmica de um sistema operacional .......................................................................................................................................... 10 Comunicação e escalonamento de processos ............................... 17 Forma de comunicação entre processos de um sistema operacional ......... 17 Técnica de escalonamento de processos em um sistema operacional ...... 21 Gerenciamento de memória .................................................................24 Atribuições do gerenciamento de memória ...............................................................24 Algoritmos de substituição de páginas ............................................32 Políticas de substituição de páginas.................................................................................32 7 UNIDADE 02 Sistemas Operacionais 8 INTRODUÇÃO Você sabia que os processos e threads são uma das demandas mais importantes do sistema operacional, justamente por serem relacionados à memória, seja ela física, a memória RAM ou virtual? Isso mesmo. Para o entendimento desses processos e threads, é importante compreendê-los e ao modelo de threads na dinâmica de um sistema operacional, a comunicação e o escalonamento de processos, como a forma de comunicação entre processos de um sistema operacional. Também é importante conhecer as técnicas de escalonamento de processos em um sistema operacional, logicamente, o gerenciamento de memória e as suas atribuições e o conhecimento dos algoritmos de substituição de páginas e como ocorre as políticas de substituição de páginas. Entendeu? Ao longo desta unidade letiva você vai mergulhar nesse universo! Sistemas Operacionais 9 OBJETIVOS Olá. Seja muito bem-vindo à Unidade 2. Nosso objetivo é auxiliar você no desenvolvimento das seguintes competências profissionais até o término desta etapa de estudos: 1. Discernir sobre o papel dos processos na dinâmica de um sistema operacional. 2. Aplicar o modelo de threads em sistemas operacionais. 3. Compreender a forma de comunicação entre processos de um sistema operacional. 4. Entender a técnica de escalonamento de processos em um sistema operacional. Sistemas Operacionais 10 Conceito de processos e threads OBJETIVO: Ao término deste capítulo, você será capaz de entender como funcionam os processos e threads. Isto será fundamental para o exercício de sua profissão. As pessoas que tentaram compreender, sem a devida instrução, tiveram problemas ao trabalhar com sistemas operacionais. E então? Motivado para desenvolver esta competência? Então vamos lá. Avante! Processo é uma entidade dinâmica e sua função é de alteração do seu estado, de acordo com o avanço de sua execução. O conceito de threads está relacionado em um processo com múltiplos fluxos de controle. Os processos e o modelo de threads na dinâmica de um sistema operacional Para entender o conceito de processos, entende-se que a totalidade dos arquivos executáveis, chamados diretamente, rodará nesses processos. Os executáveis, que são chamados em um processo, permitem rodarexplicitamente, seja em outro ou no mesmo processo. Logicamente, quando esses procedimentos forem viáveis, de acordo com a característica do executável, geralmente se usa uma DLL. Os arquivos executáveis são os que se caracterizam por realizar comandos, no momento que são abertos, ou seja, executado pelo usuário. São facilmente identificados pelas extensões EXE, BAT e COM. DLL - Dynamic Link Library nada mais é que uma biblioteca dinâmica na qual estão contidos dados que podem ser acessados, por mais de um programa que esteja instalado em um sistema operacional. A DLL pode ser acessada da maneira simultânea, ou seja, mais de um programa acessa a mesma DLL, ao mesmo tempo. Um exemplo prático é o momento em que abrimos mais do que um programa ao mesmo tempo. Além de conceituar DLL, é importante entender que o processo tem controle do sistema operacional em duas situações. São elas: Sistemas Operacionais 11 1. Relacionado ao tempo de processador, no qual o processo tem referência à memória disponível, que pode ser solicitada por esse processo. 2. Nas permissões de acesso, relacionadas a outros recursos, que têm vínculos ao processo como um todo. Figura 1 - Todos os arquivos executáveis rodam em um processo Fonte: Freepik (2021). É importante frisar que um processo tem um espaço de endereçamento de memória virtual, destinado único e, exclusivamente, para ele. De certa forma, pode ser conceituado como se o processo rodasse, unicamente, no dispositivo, como o computador. Figura 2 - Uma das situações em que o processo tem controle do sistema operacional está relacionada ao tempo de processador Fonte: Freepik (2021). Embora pareça que o processo “rode sozinho” não é que o realmente acontece. Os profissionais iniciantes e estudantes, às vezes, se confundem, pelo fato que comportamento desse processo é bem característico e esteja executando de maneira única. Não acontece devido ao fato de que ele é executável, com poder de rodar em vários momentos. Estes são os conceitos, de maneira geral, relacionados a eles. Já a conceituação de thread pode ser definida que é similar ao de processo. Esta semelhança Sistemas Operacionais 12 ocorre pelo fato que o thread tem uma nova linha de execução, e, também, todos os aspectos que estão relacionados a esta linha. Assim o sistema operacional lhe dá o tratamento de maneira similar ao processo. Para alocar o tempo de processamento, mas quando se trata da memória, esta responsabilidade de aplicar o controle do acesso, é compartilhado por todo o processo. Uma maneira prática de visualizá-lo, é utilizando o sistema operacional Windows, por exemplo, por meio do Gerenciador de Tarefas, que pode ser acessado pela tecla de atalho CTRL+ALT+DEL, conforme exemplificada na próxima figura. Figura 3 - No gerenciador de tarefas, do Sistema Operacional Windows, é uma das formas de visualizar os processos Fonte: Elaborado pelo autor (2021). Para entender melhor em relação aos processos, é importante salientar que, comumente, os programas que também são conhecidos como aplicações têm uma stack para cada thread. Mas raramente um programa tem mais do que um stack espaço de heap para todo o sistema. Dessa maneira, alguns profissionais encontram dificuldades na Sistemas Operacionais 13 programação com threads, pelo fato de ser muito difícil compartilhar estado. A definição de stack, também conhecida como pilha de funções, trata-se de uma área da memória em que são alocadas as variáveis ou ponteiros. No momento, em que uma função é chamada e desalocada, como também no momento que esta função é encerrada, em outras palavras seria a representação da memória local àquela função. Já o termo heap, também conhecido como área de alocação dinâmica, é um espaço reservado para variáveis e dados, criado no período da execução do programa, também conhecido como expressão runtime. Em outras palavras, o heap pode ser considerado como a memória global do programa ou aplicação, assim, threads estão vinculados ao processo, até porque o principal em si não deixa de ser uma thread. É importante considerar que alguns programas dispõem de seu próprio controle de threads internamente, não controlados pelo processador ou o sistema operacional. Figura 4 - Algumas aplicações dispõem de seu próprio controle de threads internamente não controladas pelo sistema operacional - Windows. Fonte: Freepik (2021). As vantagens, quando os threads não são controlados pelo processador/ sistema operacional, é que pode ser evitada a troca de contexto do sistema operacional, mas também tem desvantagens, por exemplo, não ser permitido o uso de outros processadores. Geralmente, são denominados como soft, light ou green threads, para entender melhor, green threads são implementados no nível do programa, e não no sistema operacional. Normalmente, acontecem no momento que o sistema operacional não fornece uma API de thread. Dessa maneira, os benefícios são obter as funcionalidades similares a do thread propriamente dito. Sistemas Operacionais 14 IMPORTANTE: API - Application Programming Interface (Interface de Programação de Aplicações) trata-se de uma série tanto de padrões como de rotinas, estabelecidas por uma aplicação, com objetivo de usar de suas funções por aplicativos, nos quais não pretendem envolver-se em detalhes da implementação do programa, mas somente utilizar suas funcionalidades. Figura 5 – API- conjunto de padrões e rotinas estabelecidas por um programa Fonte: Freepik (2021). De maneira geral, de acordo com a maneira que é analisada, thread pode ser visto correspondente a um processo ou não, mas analisando, especificamente, na perspectiva de agendamento do processador. Nesta visão, pode-se conceituar que apenas existem threads, e não processos, e de maneira simplificada, na visão de gerenciamento de memória e acesso aos recursos externos, pode-se definir que só existe o processo. Veja a seguir uma tabela comparativa entre processo e threads. Sistemas Operacionais 15 Quadro 1- Comparação entre processo e threads Recurso Processo Thread Execução Linha própria Linha própria Memória global Própria Compartilhada Memória local Sim Geralmente Consumo de memória Normal Ligeiramente menor Manipuladores de recursos externos Proprietário Empresta do processo Tempo de criação Relativamente longo Relativamente curto Tempo de troca de contexto Relativamente longo Relativamente curto Instâncias Múltiplas Múltiplas Associação Um programa (executável) Um processo Paralelismo Limitado Sim Comunicação entre seus pares Só com um mecanismo de IPC Sim, no processo Eficiência de comunicação Não Sim Comunicação direta com o OS Sim Não Controle de exceções Próprio Próprio Confiabilidade e segurança Sim Depende do código Fonte: Silberschatz (2010). De maneira geral, processo trata de uma entidade dinâmica, cuja função é de alteração de seu estado, conforme avança sua execução. Já threads são um processo com múltiplos fluxos de controle. Sistemas Operacionais 16 RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo tudinho? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que os conceitos de processos e threads, embora tenham similaridades são diferentes, pois processos são referentes a uma entidade dinâmica, que tem com atribuição modificar seu estado, de acordo com o avanço de sua execução. Em relação à conceituação de threads é um processo com múltiplos fluxos de controle e processos são todos praticamente arquivos de programas executáveis de maneira geral. Os programas dispõem de uma stack para cada thread, quase nunca um programa tem mais do que um stack, espaço de heap para todo processo. Stack, nada mais é do que pilha de funções, a área da memória na qual são alocados variáveis ou ponteiros.Existem vantagens e desvantagens no momento que os threads não são controlados pelo processador e ou sistema operacional. Uma delas é evitar a troca de contexto do sistema operacional, mas não permite o uso de outros processadores. Sistemas Operacionais 17 Comunicação e escalonamento de processos OBJETIVO: Ao término deste capítulo, você será capaz de entender o processo de comunicação e escalonamento em um sistema operacional. Isto será fundamental para o exercício de sua profissão. E então? Motivado para desenvolver esta competência? Então vamos lá. Avante! A sigla IPC, da língua inglesa, Inter-Process Communication, ou simplesmente comunicação entre processos, consiste em um grupo de mecanismos que viabiliza aos processos o poder de transferir as informações entre si. Forma de comunicação entre processos de um sistema operacional Executar um processo presume, em relação do sistema operacional, entre vários aspectos, criar um contexto de execução próprio do qual, certa maneira, é abstraído o processo dos componentes reais do sistema. No sistema operacional Windows, por exemplo, ele pode ser visualizado no gerenciador de tarefas, no qual são discriminados os aplicativos, esses processos, em segundo plano, e os próprios processos do sistema operacional. Figura 6 - No Windows, por exemplo, os processos podem ser visualizados no gerenciador de tarefas Fonte: Elaborado pelo autor(2021). Sistemas Operacionais 18 Justamente pelo fato da virtualização dos recursos, faz com que o próprio processo não tome ciência em relação aos outros e, desta maneira, não consiga intercambiar informações. Técnica que viabiliza que um programa de um sistema operacional, ou até mesmo o sistema na sua totalidade, seja executado em outro sistema operacional, é o conceito de virtualização. Por exemplo, permite que o sistema Linux seja executado no Windows e vice-versa. Os modelos de comunicação entre processos, normalmente, são caracterizados em dois grupos. O primeiro recebe o nome de memória compartilhada e o segundo de troca de mensagens. O modelo de memória compartilhada caracteriza-se por ser uma área de memória na qual, como o nome diz, é compartilhada entre os processos. Já segundo modelo acontece por meio da troca dessas mensagens entre os processos. Figura 7 - No modelo de memória compartilhada, há o compartilhar entre os processos Fonte: Freepik (2021). O objetivo principal da memória compartilhada, além de permitir o acesso simultâneo de vários programas, é promover a comunicação entre eles, evitando que aconteçam cópias redundantes. As cópias redundantes consistem em duplicar os componentes principais, ou seja, os mais críticos, com objetivo de aumentar a confiança de um sistema e sua disponibilidade. De maneira geral, a memória compartilhada, de acordo com a situação, permite que os programas sejam executados, apenas em um processador, ou também por dois processadores diferentes. Deve-se Sistemas Operacionais 19 atentar que nos fundamentos de memória compartilhada, normalmente, não é inclusa a utilização da memória com objetivo de comunicar distintos threads de um mesmo processo. Figura 8- A memória compartilhada viabiliza que as aplicações sejam executadas apenas em um ou dois processadores diferentes Fonte: Freepik (2021). Para compreender melhor a comunicação de processos, também, é importante o entendimento da sincronização entre processos, no qual tem a função de proporcionar o gerenciamento do acesso concorrente a recursos do sistema operacional, mas de maneira que se tenha controle em relação aos processos, proporcionando que um recurso não sofra alterações simultâneas, ou que os processos não fiquem aguardando que o recurso seja disponibilizado. Os mecanismos de sincronização podem ser classificados quanto à espera em dois grupos: 1. Busy waiting - espera ociosa. 2. Espera bloqueante. Em relação à espera ociosa, a entidade seja processo ou thread, tem o seu funcionamento testando de maneira repetitiva à condição de sincronização. Normalmente é usado uma variável de impedimento que é denominada spinlock, que é um bloqueio que viabiliza com que um thread que procura adquiri-lo, apenas aguarde um loop até que seja verificado de forma repetida, se o bloqueio está com disponibilidade. Sistemas Operacionais 20 Figura 9- A memória compartilhada apresenta como desvantagem o desperdício de tempo de CPU Fonte: Freepik (2021). A memória compartilhada apresenta como desvantagem, se a espera é longa, o desperdício de tempo de CPU. Assim, normalmente, é usada nos programas que executam processamento paralelo, conhecido como multiprocessamento, e recomendada para sincronização rápida. DEFINIÇÃO: Central Process Unit – CPU, ou simplesmente em português, Unidade Central de Processamento, é considerado o principal elemento de hardware do computador, cuja responsabilidade é desenvolver cálculos e a realização de específicas tarefas, de acordo solicitada pelo usuário. A espera bloqueante é a segunda classificação dos mecanismos de sincronização. Neste caso não existe desperdiço do tempo de CPU, no momento que é executado um programa no modo usuário. Uma comparação ilustrativa entre a espera ociosa e a espera bloqueante pode ser visualizada na Figura 10. Figura 10 - Comparação entre a espera ociosa e a espera bloqueante Fonte: Elaborado pelo autor (2021). Sistemas Operacionais 21 Comparando à espera ociosa e a espera bloqueante, fica nítido que no primeiro método, ou seja, a espera ociosa ou loop, e no segundo método de espera bloqueante, não há o desperdício de tempo de CPU. Técnica de escalonamento de processos em um sistema operacional Escalonamento de maneira geral é o ato de decisão no qual o processo irá ocupar o processador no momento que ele estiver livre, e para facilitar essa etapa, geralmente, os sistemas operacionais dispõem de um escalonador, ou seja, o responsável pelas decisões para resultar em uma escolha, no qual geralmente se baseia na política, usando os algoritmos de escalonamento, atribuindo assim os processos concorrentes a um ou mais processadores. Normalmente, o escalonamento é executado pelo sistema operacional, com base no compartilhamento do processador, por meio de técnicas de timesharing, no qual o tempo de utilização do processador é dividido em time-slice, ou seja, pequenas fatias de tempo que são usadas pelos variados processos, ordenadamente, permitindo assim, o uso de forma eficiente o processador que está disponível. Figura 11 - O uso de maneira eficiente do processador é função do escalonador do sistema operacional Fonte: Freepik (2021). Para que seja garantida a imparcialidade, o sistema operacional, normalmente, define a ativação ou suspensão dos processos, por meio de uma técnica chamada de preempção, ou seja, de preferência. Sistemas Operacionais 22 Preempção ou preemptividade, nos sistemas operacionais, é a ação de interrupção temporária de uma tarefa que está em execução, por meio de um sistema operacional, mas com objetivo de retornar a tarefa posteriormente; esse ato também é conhecido como troca de contexto. Escalonar pode apresentar problemas como apontam Casavant e Kuhl (1988), visualizando como recurso para o gerenciamento de recursos. Assim é apresentado o problema dividindo em três componentes principais: 1. Algoritmo de escalonamento. 2. Consumidores que são os processos tanto dos sistemas quanto dos usuários. 3. Recursos que podem ser redes de comunicação, memória processadores, entre outros. De maneira geral, os consumidores, ou seja, os processos dos usuários e dos sistemas operacionais usam os recursos computacionais como também o algoritmo de escalonamento, que é o responsável pela a distribuição dos processos entre os processadores, conforme se faz necessário, e também são disponíveis nos recursos. Figura 12 - As redes de comunicaçãosão uma das situações de aplicação do escolamento para a definição de prioridades Fonte: Freepik (2021). Sistemas Operacionais 23 Autores como Shirazi e Hurson (1992) e Baumgartner e Wah (1991) apontam que distribuir processos é importante que seja vinculado com um propósito, que deve ter como base todas as decisões de escalonamento a serem tomadas. Para exemplificar, uma decisão pode ser tomada com o intuito da diminuição do tempo de execução dos processos, balanceando, assim a carga do sistema. RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo tudo? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que a comunicação e o escalonamento de processos são muito importantes para um bom funcionamento de um sistema operacional, que fica evidenciado pelo uso da sigla IPC Inter-Process Communication, que significa comunicação entre processos, relacionados a uma série de mecanismos que viabiliza aos processos o poder de transferir as informações entre si. A execução de um processo considera o relacionamento do sistema operacional em diferentes aspectos, como desenvolver um contexto de execução própria que é abstraída do processo dos componentes reais do sistema. De modo geral, os modelos de comunicação entre processos, são divididos em duas classificações grupos, o de memória compartilhada e troca de mensagens, este último tem como base a troca de mensagens entre os processos. Já a memória compartilhada trata-se de uma área de memória no qual é compartilhada entre os processos. Sistemas Operacionais 24 Gerenciamento de memória OBJETIVO: Ao término deste capítulo, você será capaz de compreender como ocorre o gerenciamento de memória dos sistemas operacionais. Isto será fundamental para o exercício de sua profissão. E então? Motivado para desenvolver esta competência? Então vamos lá. Avante! O gerenciamento da memória RAM que está disponível em um dispositivo como um computador, é considerado uma das principais características e atribuições do sistema operacional, para que ele possa assegurar que o próprio sistema como também quaisquer processos tenham a quantidade de memória necessária, para a execução dos processos. Atribuições do gerenciamento de memória Quando comparamos aos demais recursos disponíveis em um sistema operacional, como a instalação de programas, entre outros, podemos considerar que a memória dispõe de recursos escassos. Figura 13- O gerenciamento da memória RAM e as atribuições do sistema operacional Fonte: Freepik (2021). Sistemas Operacionais 25 Pelo fato de que os recursos da memória são considerados escassos, várias técnicas foram criadas com o objetivo de otimizar o seu uso. É importante estarmos atualizados e procurar informações detalhadas de cada uma, principalmente nas atualizações dos sistemas operacionais. São exemplos, segundo Vahalia (1996): • Compressão de memória. • Bibliotecas dinâmicas compartilhadas. • Memória virtual. • Carga de páginas sob demanda. • Copy-on-write. • Alocação preguiçosa. Quando um sistema é virtualizado, sua característica permite que em cada máquina virtual se obtenha do hipervisor uma fração da memória da máquina, no qual tem o gerenciamento do sistema operacional convidado. Para entender melhor o hipervisor, trata-se de um programa que desenvolve e executa máquinas virtuais, também conhecido como VMs ou VMM - monitor da máquina virtual. Figura 14 - Em um sistema virtualizado, cada máquina virtual obtém do hipervisor uma fração da memória da máquina Fonte: Freepik (2021). Sistemas Operacionais 26 É importante salientar que os mecanismos que estão, internamente, no sistema operacional têm limitação em relação à memória da própria máquina virtual, na qual tem isolamento das demais pelo hipervisor. Para facilitar o entendimento em relação ao gerenciamento de memória nos sistemas virtualizados, alguns termos devem ser facilmente compreendidos, segundo VMware Inc. (2010): • Memória física da máquina virtual - trata-se da memória que é disponibilizada pelo hipervisor, gerenciada pelo sistema operacional da máquina virtual – VM. • Memória virtual da máquina virtual - está relacionado à memória vista pelos processos da máquina virtual, ou seja, as páginas. • Memória de máquina - host memory - trata-se da memória RAM, propriamente dita, ou seja, a memória real que está disponível no hardware e também gerenciada pelo hipervisor. Mecanismos relacionados à alocação de memória, geralmente devem ser adicionados, nos sistemas virtualizados, com o objetivo de prestar atendimentos à demanda de memória dos sistemas convidados. Figura 15- A memória de máquina - host memory- tem a memória RAM propriamente dita Fonte: Freepik (2021). Ao serem adicionados mecanismos facilitam tanto na manutenção quanto no equilíbrio de recursos nos ambientes, principalmente, em ambientes de grande porte com diversas máquinas virtuais - VM, consequentemente, ocasionando aproveitamento do hardware e economia de recursos físicos. Sistemas Operacionais 27 O recurso denominado memory overcommit, também, se refere na proposta de oferecimento de espaço de memória, além da memória física que está disponível no dispositivo como um computador, mas sem quaisquer garantias de que a quantia do armazenamento físico, determinada efetivamente exista, desta maneira, é um recurso também usado nos sistemas operacionais. É importante considerar que geralmente os sistemas convidados utilizam somente pouca parte da memória física que lhe são alocadas, permitindo que os hipervisores com a função de identificação de trechos de memória ócios, atuem bem. De modo dinâmico, executam o processo de relocação para as outras máquinas virtuais – VMs, que precisam de quantidade de memória maior no momento específico, segundo VMware Inc. (2010). Figura 16- O memory overcommit oferece espaço de memória e memória física que está disponível Fonte: Freepik (2021). Além do recurso memory overcommit, existem outras técnicas de recuperação e de otimização de memória, por exemplo: • Swap. • Memory compression. • Ballooning. Sistemas Operacionais 28 A técnica denominada de swap, geralmente, é utilizada quando se esgotam todas as opções de recuperar páginas de memória por meio de outras técnicas como ballooning e memory compression. DEFINIÇÃO: Página virtual, página de memória, ou simplesmente uma página, trata-se de um bloco contínuo e de comprimento fixo de memória virtual, o qual tem descrição por uma única entrada na tabela de páginas. O swap também é utilizado quando não existe a possibilidade de alocamento de quantidade de memória maior para as máquinas virtuais – VMs, ou para o host de virtualização, sendo a utilização da área de troca como o último recurso para recuperação de memória (YUN et al., 2014). No swap, cada um dos hipervisores usa mecanismos para potencializar o processo. Geralmente, é desenvolvido um arquivo auxiliar na estrutura de diretórios do hipervisor, e nesse arquivo são transferidas as páginas de memória da máquina virtual – VM. Desta maneira, é liberado o espaço da área de memória que no momento está em disco. Importante salientar que quando acontece esse processo, não acontece interação com o sistema convidado, sendo o hipervisor o responsável por decidir quais páginas que serão enviadas para swap (WALDSPURGER, 2002). É considerado desvantagem que reside no hipervisor o fato de não dispor o acesso às páginas, as quais seriam mais recomendadas de serem remetida para swap. Assim, uma máquina virtual – VM pode acessar uma página na mesa hora que é enviada para área de intercâmbio, podendo afetar de forma considerável a performance do sistema convidado. A técnica de recuperação e de otimização de memória que recebe o nome de memory compression, osmecanismos de compressão de memória são usados em situações de falta de memória do hipervisor. E como quaisquer sistemas, na inexistência de memória, as páginas serão direcionadas para a área de troca ou swap, isso se não existir a possibilidade de recuperação da memória a suficiente, usando a técnica denominada como balloning. Sistemas Operacionais 29 Ou outras técnicas de gerenciamento de memória, em que as páginas que iriam para área de troca podem sofrer compreensão e serem armazenadas em uma unidade na qual há o controle do hipervisor, que recebe o nome de cache de compressão (WALDSPURGER, 2002). Esta ficará situada na memória do host, para que possam ser direcionadas para o cache de compressão as páginas, que foram identificadas para a área de troca que precisam de percentual de ao menos 50% de compressão. Na situação que esse valor não seja atingindo, essa mesma página não é preiteada ao cache de compressão, segundo VMware Inc. (2010). A figura 18 representa o processo de armazenamento de páginas e o cache de compressão. Observe que com a utilização do cache de compressão não é usada a área de troca. Figura 18 - Técnica Memory Compression Fonte: VMware Inc (2010). Já a técnica denominada como ballooning é comum em diversos hipervisores e se caracteriza por uma maneira de máquina virtual – VM, se comunicar com o hipervisor no momento que o hipervisor está demandando mais memória. De acordo com Wen et al., (2012) por causa do isolamento, o sistema operacional convidado não tem ciência de que está sendo executado internamente de uma máquina virtual – VM, e, também, não tem conhecimento da relação dos estados das outras máquinas virtuais no mesmo host físico. Sistemas Operacionais 30 A próxima figura representa o processo de funcionamento do mecanismo ballooning. Observe que é somente ativado no momento que host está com pouca memória. E o driver balloon específico em que as páginas de memória -as máquinas virtuais – VM, de certa forma serão permitidas de “abrir mão” para que o servidor executar swap para o disco. Figura 19- Técnica Ballooning Fonte: VMware Inc. (2010). No momento que o hipervisor executa diversas máquinas virtuais – VMs- e o número total de memória livre no host está baixo, nenhuma das máquinas virtuais poderão efetuar a liberação física, pois o sistema operacional convidado não tem ciência da falta de memória do host. Em relação à abordagem desse tema, entre outros, é importante estar atualizado, principalmente, pelo fato que sempre há novas atualizações dos sistemas operacionais. Sistemas Operacionais 31 RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que o gerenciamento da memória, seja ele físico como a memória RAM que está disponível em um dispositivo, como um computador, ou memória virtual, é considerado uma das principais características e atribuições do sistema operacional. Para isso, é importante o conhecimento de virtualização, entendendo suas aplicações, tipos e técnicas, um diferencial no entendimento do gerenciamento de memória em ambientes virtualizados. Importante salientar que apesar de existirem diversos mecanismos de recuperação de memória, os ambientes virtualizados precisam de uma quantidade de memória adicional para controle do funcionamento do hipervisor. Enfim, o gerenciamento de memória é importante para que o próprio sistema operacional e quaisquer processos tenham a quantidade de memória necessária. Sistemas Operacionais 32 Algoritmos de substituição de páginas OBJETIVO: Ao término deste capítulo, você será capaz de compreender o que são os algoritmos de substituição de páginas e as suas funções no sistema operacional. Isto será fundamental para o exercício de sua profissão. E então? Motivado para desenvolver esta competência? Então vamos lá. Avante! No momento da gerência da memória virtual com paginação, um dos maiores problemas que, geralmente, são apresentados, por incrível que pareça, não estão relacionados à decisão de qual página deve ser carregada na memória principal. Mas sim, qual será a página que deve ser removida da memória principal, justamente os algoritmos de substituição de página têm como principal atribuição de seleção dos frames que terão menor chances de serem referenciados em um futuro próximo. Políticas de substituição de páginas A política de substituição de páginas usadas é considerada um dos elementos mais fundamentais em um sistema de memória virtual, pois tem poder da determinar os parâmetros de seleção que serão utilizados para remoção de uma ou mais páginas de memória principal, no momento que se faz necessário que outra página seja designada e não exista espaço disponível. Para implementar a substituição de página, usam-se algoritmos para tal substituição que de maneira geral são classificados em dois tipos: 1. Algoritmos com espaço variável. 2. Algoritmos com espaço fixo. Sistemas Operacionais 33 Figura 20 - Algoritmos - decisão da substituição de uma página Fonte: VMware Inc. ( 2010). Os algoritmos com espaço variável caracterizam-se pelo poder de alterar o tamanho da memória, alocada dinamicamente, conforme o volume de execução do sistema. Já os algoritmos com espaço fixo caracterizam-se em relação a uma determinada região de memória que esteja disponível de maneira contínua, ou seja, sempre constante. São exemplos de algoritmos com espaço fixo: • FIFO. • LRU. • OPT. • MRU-n. • Clock. • NRU. • LFU. • MFU. • WS. • PFF. • VMIN. Sistemas Operacionais 34 O algoritmo FIFO - First In, First Out- tem, como diretriz de substituição, remover da memória a página carregada que está há mais tempo, não considerando acessos, identificados no momento que esteve residente na memória. Figura 21 - O algoritmo FIFO remove da memória virtual a página carregada há mais tempo Fonte: Freepik (2021). Alguns estudiosos apontam que o algoritmo FIFO pode apresentar uma incapacidade que recebe o nome de “anomalia de Belady” (BELADY; NELSON; SHEDLER, 1969), que se caracteriza pelo número de faltas de página, ocasionalmente, gerar um aumento no momento que o tamanho da memória disponível aumenta. Mas tem como benefício a facilidade de implementar e simplicidade, pois uma fila pode ser facilmente usada como ordenamento das páginas, de acordo com a ordem de chegada, por exemplo. Uma página como regra entrará no começo da fila no momento que é carregada e a página substituída, como diretriz, sempre será aquela que ocupará a última posição da fila. Figura 22 - Uma página entrará no começo da fila no momento que é carregada Fonte: Freepik (2021). Sistemas Operacionais 35 O algoritmo Least Recently Used – LRU -é outro exemplo de algoritmo de espaço físico. É considerado bastante eficiente e com simplicidade, utilizando como diretriz de substituição a página que teve acesso há mais tempo. Desta forma, será a página residente que esteja com menor atividade ativa no momento da substituição; é importante estar sempre atualizados, pois este algoritmo tem algumas variações, nos quais podem ser destacadas duas: 1. LRU-K. 2. 2Q. O algoritmo denominado como LRU-K, segundo O’Neil et.al (1993, 1999), não considera a quantidade de tempo que uma página foi acessada pela última vez, mas sim o momento que aconteceu o seu último acesso. Para exemplificar, veja a seguinte situação: o LRU-2 tem a função de verificar qual a página que realizou penúltimo acesso há mais tempo, neste mesmo momento o LRU-3 identifica o antepenúltimo acesso e assim de maneira sucessiva. Em relação ao algoritmo denominado como 2Q, como apontam Johnson e Shasha (1994), tem como diretriz utilizar duas áreas para gerenciar a memória que são: 1. Páginas recém-carregadas. 2.Páginas acessadas no momento que estavam na primeira área. As páginas que são excluídas da memória, utilizando as diretrizes 2Q são as que, geralmente, estão na primeira área, e a definição utilizada são os critérios FIFO, mas caso, a situação for que a primeira área se torne pequena demais, e se quase todas as páginas que foram carregadas já foram acessadas pelo menos por duas vezes. O critério de substituição executado será em relação a uma página da segunda área, a diretriz aplicada nesta situação será o LRU. Para entender melhor, nesta situação a memória é dividida em dois níveis, pois as páginas serão direcionadas em cada um, conforme sua frequência de utilização. Assim, pode-se observar que o algoritmo 2Q usa uma convenção bem considerável dos algoritmos LRU e FIFO para critérios de substituição das páginas. Sistemas Operacionais 36 O algoritmo que recebe o nome OPT ou Ótimo, de acordo com Belady, (1966), tem como função representar a melhor solução possível, com objetivo de minimizar o número de faltas de página. IMPORTANTE: O algoritmo OPT utiliza como critério remover da memória, em caso de falta, a página que leva maior tempo para ser novamente referenciada, pode se dizer que o algoritmo “conhece” o futuro, pelo fato de permitir a leitura prévia de todos os acessos à memória, que foi executada pelo programa, o que não aconteceria em uma situação real de execução (BELADY, 1966). Já o algoritmo que recebe o nome de MRU-n de Most Recently Used- tem como diretriz escolher a última página que foi acessada, para que ela seja substituída, é uma variação do MRU-2. Mas é considerado mais eficiente, pois explora, com maior ou menor grau de intensidade, as características de localidade temporal que algumas páginas apresentam. Já o clock, se caracteriza por ser uma fila como a do FIFO, no qual é usada pelo algoritmo do relógio, ou algoritmo clock, em que as páginas são apresentadas nesta fila, conforme a ordenação que foram carregadas na memória. Figura 23 - Clock tem como característica de ser uma fila, usada pelo algoritmo do relógio Fonte: Freepik (2021). Sistemas Operacionais 37 Neste algoritmo, a página substituída geralmente a que foi carregada há mais tempo, mas neste caso um bit de uso será adicionado ao mecanismo de seleção, fazendo com que a página residente mais antiga apenas seja substituída. Na situação no qual o seu bit de uso estiver zerado, se esta situação não ocorrer, a próxima página com bit zerado na sequência da fila será selecionada. DEFINIÇÃO: O bit é considerado a menor unidade de informação que pode ser tanto transmitida quanto armazenada na informática Os algoritmos bit são consideradas bastante velozes e, geralmente, são utilizados para melhorar a performance de programas. A função do bit no clock é de prestar informação da situação de uma página se ela foi ou não referenciada, desde o momento do seu carregamento, utilizando este procedimento não acontece o risco de remoção de páginas que foram acessadas recente, assim é similar ao LRU. Figura 24 - Um bit de uso é adicionado ao mecanismo de seleção, na página substituída Fonte: Freepik (2021). O algoritmo NRU – Not Recently Used -tem como diretriz a remoção da memória de uma página não acessada, recentemente, isto é, entre as duas últimas faltas. Este algoritmo também tem a função de verificação de cada página residente foi ou não alterada, isto é, se aconteceram modificações nos dados, desde que foi carregada na memória. Neste caso, dois bits são utilizados: Sistemas Operacionais 38 1. Primeiro com objetivo de representação da existência ou não de acessos recentes. 2. Segundo com objetivo de sinalizar, se a página foi modificada, desde o seu carregamento. A diretriz que estabelece prioridades de substituição utiliza a ordem, de primeiro as páginas não referenciadas e também não alteradas, segundo as páginas apenas não referenciadas, terceiro, as páginas que não foram alteradas e, quarto, as páginas referenciadas e também modificadas. Figura 25 - No algoritmo NRU, caso aconteçam modificações nos dados de uma página, dois bits são utilizados Fonte: Freepik(2021). No caso do algoritmo LFU – Least Frequently Used - é utilizado como diretriz de substituição, a página que foi menos acessada entre as páginas que estejam carregadas na memória. Assim, esta verificação é executada por contador de acessos, também chamado de hits, mas associado a cada página residente, no qual é zerado no momento que uma página deixa a memória principal. Desta forma, frequência de utilização se refere somente aos acessos recentes e não a todo o histórico de execução da aplicação. Sistemas Operacionais 39 O algoritmo MFU – Most Frequently Used - tem como principal função substituir sempre a página residente que obteve mais acesso, igualmente, o LFU, utiliza contadores de acesso para definir a frequência de utilização de cada página. O algoritmo WS Working Set, segundo Denning e Schwartz, (1972), utiliza as mesmas diretrizes da LRU, no momento que a memória já está carregada e uma falta de página acontece, a página acessada há mais tempo é substituída. Porém, não tem como função somente a substituição de páginas, mas também de estabelecer o tempo máximo que cada uma pode permanecer na memória, sem ser referenciada. Figura 27- Algoritmo WS Working Set estabelece o tempo máximo que cada página pode permanecer na memória Fonte: Freepik(2021). O algoritmo PFF- Page Fault Frequency- usa as diretrizes LRU, em situações de substituição, no momento no qual o espaço de memória disponível está totalmente ocupado, igualmente ao WS remove, automaticamente, páginas da memória, quando constatado inatividade aparente. O algoritmo VMIN é considerado bastante eficiente por reconhecer os acessos futuros que um programa irá realizar, removendo memória das páginas que o próximo acesso leve mais tempo para acontecer do que um parâmetro fixo pré-estabelecido. Por esse motivo a memória que tem o gerenciamento de VMIN, quase que nunca estará totalmente ocupada, pelo fato de apenas permanecer aquelas páginas que certamente serão referenciadas em um futuro breve. Sistemas Operacionais 40 RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo tudinho? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que os algoritmos de substituição de páginas são fundamentais para uma boa performance de um sistema operacional, no qual está relacionado ao gerenciamento de memória virtual, ligada à paginação. A principal decisão não é a definição de qual página será carregada na memória principal e sim, qual será a página excluída da memória principal. Para essa decisão importante são consultados os algoritmos de substituição. Assim a sua principal função é selecionar os frames que terão menor chances de serem referenciados em um futuro próximo, para isso, é estabelecida uma política de substituição de páginas usada, assim considerada, uns dos elementos essenciais em um sistema de memória virtual. Os algoritmos de substituição de páginas, de maneira geral, são classificados em dois tipos: algoritmos com espaço variável e algoritmos com espaço fixo. Sistemas Operacionais 41 REFERÊNCIAS BELADY, L. A. A study of replacement algorithms for a virtual storage computer. IBM Systems Journal, v. 5, n. 2, p. 78-101, 1966. BAUMGARTNER, K.M.; WAH, B.W. A global load balancing strategy for a distributed computer system. In: International workshop on the future trends in distributed computing systems. 1990. S, 1, 1998, Hong Kong. Anais… Los Alamitos: IEEE CS Press, 1998. p. 93-102. BELADY, L.A.; NELSON, R.A.; SHEDLER, G.S. An anomaly in space- time characteristics of certain programs running in a paging machine. Communications of the ACM, v. 12, n. 6, p. 349-353, 1969. CASAVANT,L.; KUHL, J.G. A taxonomy of scheduling in general- purpose distributed computing systems. New York: IEEE Trans. Softw. Eng, 1988. DENNING, P.J.; SCHWARTZ, S.C. Properties of the working-set model. Communications of the ACM, v. 15, n. 3, p. 191-198, 1972. VAHALIA, V. U. UNIX Internals: The New Frontiers. [s.l.]: Prentice- Hall, 1996. Sistemas Operacionais Sistemas Operacionais Unidade 3 Sistemas de Arquivos Diretor Executivo DAVID LIRA STEPHEN BARROS Gerente Editorial CRISTIANE SILVEIRA CESAR DE OLIVEIRA Projeto Gráfico TIAGO DA ROCHA Autoria LEANDRO C. CARDOSO AUTORIA Leandro C. Cardoso Sou formado em Comunicação Social com habilitação em Design Digital e mestrado em Tecnologias da Inteligência e Design Digital, pela PUC-SP, com experiência em direção de arte e criação na área com mais de 25 anos. Passei por empresas com a Laureate International Universities - FMU | FIAM-FAAM, Universidade Anhembi Morumbi e o Centro Paula Souza (FATEC-ETEC). Fui analista de Desenvolvimento Pedagógico Sênior - Laureate EAD e coordenador de Curso Técnico de Design Gráfico, no Centro Paula Souza. Fui revisor técnico e validador para cursos EAD, atendendo cliente como Laureate International Universities; DeVry Brasil; UNEF; FAESF; Faculdade Positivo; Uninter; Platos Soluções Educacionais S.A. (Krotonn - Universidade Anhaguera). Sou autor de mais de 21 livros didáticos, um dos organizadores da Maratona de Criação e Design do Curso de Comunicação Visual, da ETEC - Albert Einstein. Sou apaixonado pelo que faço e adoro transmitir minha experiência de vida àqueles que estão iniciando em suas profissões. Por isso, fui convidado pela Editora Telesapiens a integrar seu elenco de autores independentes. Estou muito feliz em poder ajudar você nesta fase de muito estudo e trabalho. Conte comigo! ICONOGRÁFICOS Olá. Esses ícones irão aparecer em sua trilha de aprendizagem toda vez que: OBJETIVO: para o início do desenvolvimento de uma nova compe- tência; DEFINIÇÃO: houver necessidade de se apresentar um novo conceito; NOTA: quando forem necessários obser- vações ou comple- mentações para o seu conhecimento; IMPORTANTE: as observações escritas tiveram que ser priorizadas para você; EXPLICANDO MELHOR: algo precisa ser melhor explicado ou detalhado; VOCÊ SABIA? curiosidades e indagações lúdicas sobre o tema em estudo, se forem necessárias; SAIBA MAIS: textos, referências bibliográficas e links para aprofundamen- to do seu conheci- mento; REFLITA: se houver a neces- sidade de chamar a atenção sobre algo a ser refletido ou dis- cutido sobre; ACESSE: se for preciso aces- sar um ou mais sites para fazer download, assistir vídeos, ler textos, ouvir podcast; RESUMINDO: quando for preciso se fazer um resumo acumulativo das últi- mas abordagens; ATIVIDADES: quando alguma atividade de au- toaprendizagem for aplicada; TESTANDO: quando o desen- volvimento de uma competência for concluído e questões forem explicadas; SUMÁRIO Arquivos e diretórios .................................................................................. 10 Aspectos essenciais de arquivos e diretórios ............................................................ 10 Desempenho do sistema de arquivos ................................................ 18 Performance do acesso a dados em um sistema de arquivos ..................... 18 Processamento paralelo e distribuído ............................................................................. 21 Segurança em sistemas de arquivos ..................................................29 Processamento do sistema de segurança em arquivos e diretórios implementado por sistemas operacionais ...................................................................29 Mecanismos de proteção em sistemas de arquivos .................... 35 Técnicas e mecanismos de proteção para sistemas de arquivos ...............35 7 UNIDADE 03 Sistemas Operacionais 8 INTRODUÇÃO Você sabia que os sistemas de arquivos é uma das demandas mais importantes que os sistemas operacionais têm como atribuição? Isso mesmo. A área de sistemas de arquivos envolve os arquivos e diretórios e, logicamente, os seus aspectos essenciais, e para isso são importantes o seu desempenho e a sua performance do acesso a dados em um sistema de arquivos. Entender, ainda, como os dados e arquivos podem ser processados de maneira paralela ou distribuída, e principalmente, aspectos relacionados à segurança em sistemas de arquivos. Para isso, é importante o entendimento como se gera o processamento do sistema de segurança em arquivos e diretórios implementados por sistemas operacionais, como também das técnicas e mecanismos de proteção em sistemas de arquivos. Entendeu? Ao longo desta unidade letiva você vai mergulhar neste universo! Sistemas Operacionais 9 OBJETIVOS Olá. Seja muito bem-vindo à Unidade 3. Nosso objetivo é auxiliar você no desenvolvimento das seguintes competências profissionais até o término desta etapa de estudos: 1. Identificar os aspectos essenciais de um sistema de arquivos. 2. Compreender os aspectos que impactam a performance do acesso a dados em um sistema de arquivos. 3. Entender como se processa o sistema de segurança em arquivos e diretórios, implementado por sistemas operacionais. 4. Aplicar as técnicas e mecanismos de proteção para sistemas de arquivos, analisando alguns modelos e exemplos. Sistemas Operacionais 10 Arquivos e diretórios OBJETIVO: Ao término deste capítulo, você será capaz de entender como funcionam os sistemas de arquivos. Isto será fundamental para o exercício de sua profissão. As pessoas que tentaram utilizar, sem a devida instrução, tiveram problemas ao buscar e organizar os arquivos. E então? Motivado para desenvolver esta competência? Então vamos lá. Avante! Uma série de dados que estão relacionados de alguma forma, ou seja, que unidos têm a função de descrever uma informação ou uma série de informações, é o que caracteriza um arquivo na informática. Aspectos essenciais de arquivos e diretórios Os arquivos são sempre constituídos por dados digitais, justamente pela natureza da sua aplicação que se originam em dispositivos digitais como computadores, notebooks, tablets, smartphones, entre outros, nos quais podem ser armazenados e executados arquivos. Além de serem dados digitais, para ser caracterizado como um arquivo, eles são organizados, seguindo alguma forma estrutural ou formato. Figura 1 - Os arquivos são formados por dados digitais pela natureza da sua aplicação em dispositivos digitais Fonte: Freepik (2021). Sistemas Operacionais 11 Os arquivos são caracterizados pelo poder de representação de dados, das mais variadas naturezas como: • Texto. • Imagens. • Áudio. • Instruções para processadores. Além do poder de representação de um determinado tipo de arquivo, em um mesmo arquivo é possível a junção de vários tipos como um vídeo cujo conteúdo tem informações gráficas, ou seja, arquivo de imagem. No vídeo, também, há informações sonoras, os arquivos de áudio, além de em algumas situações ter legenda, ou seja, informações textuais que podem ser originadas de um arquivo de texto. Figura 2 - Arquivo de um produto audiovisual - junção de vários tipos de arquivos Fonte: Freepik (2021). É importante compreender a maneira pela qual o serviço de arquivos está estruturado, pois depende como o sistema operacional mostra ou representa os arquivos, por exemplo, em alguns sistemas, um arquivo pode ser caracterizado como uma série sequencial de quaisquer bytes. O MS-DOS ou Unix são exemplos de representação de arquivos em uma sequência qualquer, e nesta situação, a estrutura e o conteúdo interno do arquivo estão por conta dos programas de aplicação. Sistemas Operacionais 12 DEFINIÇÃO: Microsoft Disk Operation System, ou simplesmente MS- DOS, foi o primeiro sistema operacional daMicrosoft. Sua comercialização foi no início da década de 1980, nos primeiros computadores pessoais da IBM. Até a versão do Windows 98, era possível instalar o sistema num computador sem o sistema operacional, nas versões mais recentes encontra-se o MS-DOS por meio do comando CMD, que pode ser aberto na opção Localizar do Windows ou no Executar. Outra maneira de estruturar um arquivo é por meio de uma série de registros de modo sequencial, no qual ele pode ser localizado por meio de uma posição, ou seja, o número do registro. Ou até mesmo, por meio do valor de algum de seus campos, cujas chamadas no sistema operacional são executadas para escrita e leitura em um registro específico. O atributo que podem estar contidos nos arquivos, nada mais é do que as informações relacionadas nesses arquivos, mas que não pertencem ao conteúdo, como: • Tamanho. • Data de criação. • Nome • Direitos de acesso. Para entender melhor, uma imagem que abrimos em um navegador qualquer, seja Chrome, Firefox, Safira, Edge, entre outros, visualizamos apenas essa imagem, mas se visualizarmos em um gerenciador de arquivos, dados que foram relacionados, anteriormente, como tamanhos, data de criação, nome, e direitos de acesso podem ser vistos. Sistemas Operacionais 13 Figura 3 - Exemplo dos atributos contidos nos arquivos Fonte: Elaborado pelo autor (2021). Uma forma fácil de identificar essas informações é no gerenciador de arquivos, por exemplo, o explorador de arquivos do Microsoft Windows, que basta clicar com o botão direito em quaisquer arquivos. E depois escolher a opção Propriedades que abrirá uma caixa de diálogo, como apresentado na Figura 3. É importante destacar que os arquivos, também, podem dispor de proteções para o controle de: • Operações referentes aos arquivos. • Acesso ao seu conteúdo. Essas informações, continuando a utilizar o exemplo da caixa de diálogo Propriedades do sistema operacional Windows, estão identificadas bem abaixo, nas opções de Atributos nos quais podem ser selecionados somente leitura ou oculto. Sistemas Operacionais 14 Figura 4 - Exemplo de atributos relacionados à leitura de arquivo Fonte: Elaborado pelo autor (2021). Em relação aos diretórios, são estruturas de dados que estão contidos nas entradas, associadas aos arquivos, nos quais são armazenadas informações como: • Organização. • Localização física. • Nome. • Outros atributos. No momento em que é solicitada a abertura, ou seja, a leitura do arquivo, o sistema operacional busca a sua entrada na estrutura de diretórios cujo serviço dispõe de várias operações. Figura 5 - Os diretórios são estruturas de dados que contêm entradas associadas aos arquivos Fonte: Freepik (2021). Sistemas Operacionais 15 São exemplos das operações que os serviços de diretório dispõem, a possibilidade de movimentar arquivos de um diretório para outro, exclusão de diretórios, alterar nomes de arquivos, operações e identificação. A maneira de organização que o sistema de arquivo executa no disco é que o determina a estrutura de diretórios, na qual em relação a sua estruturação pode ser de diversas formas, por exemplo, estrutura de diretórios de: • Múltiplos níveis. • Nível único. • Dois níveis. A estrutura de diretórios de múltiplos níveis é uma das estruturas mais utilizadas nos sistemas operacionais, também, chamada de estrutura de diretórios em árvore. Proporciona que o usuário crie a quantidade de diretórios que deseja, assim os arquivos podem, de certa forma, ter uma melhor organização, conforme apresentado na Figura 6 (MACHADO,1997). Figura 6 - Exemplo de estrutura de diretórios de múltiplos níveis Fonte: MACHADO (1997). Na estrutura de diretórios de nível único, embora seja considerada mais fácil a sua implementação, não é indicada a melhor forma de um sistema operacional organizar os arquivos em disco, pelo fato de consistir em apenas um único diretório que irá conter todos os arquivos, e não Sistemas Operacionais 16 é permitido ao usuário a criação de nomes duplicados desses arquivos. Também não pode executar a separação dos arquivos dos demais arquivos do disco. Figura 7 - Exemplo de estrutura de diretórios de nível único Fonte: MACHADO (1997). A estrutura de diretórios de dois níveis surgiu pela necessidade das restrições da estrutura de nível único, na qual a solução apontada foi de manter um diretório principal que recebe o nome de MFD - Master File Directory. Nele cada usuário dispõe de seu próprio diretório, ou seja, individual, que recebe o nome de UFD - User File Directory, que está conectado ao diretório principal. O diretório principal é indexado, ou seja, os arquivos são organizados por meio de índices, facilitando o acesso rápido à informação, favorecendo a organização dos arquivos que pode ser pelo nome do usuário, e tem uma entrada que aponta para cada diretório pessoal. De maneira geral, no momento que um arquivo é criado, é possível executar a definição de qual organização será aplicada, além de outras variáveis, se pode ser uma estrutura suportada pelo sistema operacional ou definida pelo próprio programa. Sistemas Operacionais 17 Figura 8 - A estrutura de diretórios de dois níveis Fonte: MACHADO (1997). RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo tudo? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que nos sistemas de arquivos, é importante identificar seus aspectos essenciais, e um arquivo propriamente dito é o conjunto de dados que estão relacionados de alguma forma. Os arquivos têm como objetivo a descrição de um conjunto de informações, e por serem executados e abertos, em dispositivos digitais, como computadores, notebooks, tablets, smartphones, os dados dos arquivos são, obrigatoriamente, digitais. Um arquivo pode ser constituído apenas por um tipo de dado, ou pela união de vários tipos: um vídeo com legenda é um exemplo que tem um arquivo de vídeo, áudio e de texto. Sobre os diretórios, são caracterizados como estruturas de dados, nas quais contêm as entradas associadas aos arquivos que armazenam informações como organização, localização física, nome, entre outros atributos. Sistemas Operacionais 18 Desempenho do sistema de arquivos OBJETIVO: Ao término deste capítulo, você será capaz de compreender a importância do desempenho do sistema de arquivos em um sistema operacional. Isto será fundamental para o exercício de sua profissão. E então? Motivado para desenvolver esta competência? Então vamos lá. Avante! Compreender os aspectos que impactam a performance do acesso a dados em um sistema de arquivos, tem papel de extrema importância para os sistemas operacionais, de maneira geral, tanto para já os existentes, como para as suas atualizações ou inovações. Performance do acesso a dados em um sistema de arquivos Um sistema operacional, entre as suas várias atribuições relacionadas aos arquivos, executa a função de transferir dados e arquivos, nos quais é importante a procura constante para melhora da sua performance nesse aspecto. Figura 9 - A transferência de dados e arquivos é função do sistema operacional Fonte: Freepik (2021). Para acessar os dados ou transferir, esta ação pode ser tanto local, ou seja, de um diretório para o outro do mesmo dispositivo, ou por meio de servidores, nos quais podem ser utilizada a técnica de cache no servidor. Sistemas Operacionais 19 DEFINIÇÃO: Cache trata-se de mecanismo que propõe acesso rápido de maneira interna a um sistema, como o sistema operacional, cuja função principal é fazer o intercâmbio entre um operador de um processo, que pode ser, por exemplo, o programa e o dispositivo de armazenamento ao qual esse operador faz parte. É importante salientar que acessar os sistemas de arquivos é mais lento do que oacesso à memória e os discos rígidos, também conhecidos como HD – Hard Disk, que têm taxa de acessos de velocidade inferior em relação às memórias RAM. Figura 10- Os discos rígidos têm taxa de acesso de velocidade inferior às memórias RAM Fonte: Freepik (2021). Mas existem alternativas para melhorar o desempenho do sistema de arquivos, por exemplo, as denominadas como: • Redução do movimento do braço do disco. • Leitura antecipada de blocos. • Cache de blocos. Sobre a redução do movimento do braço do disco, primeiro é importante entender que os pratos de um HD ou disco rígido, têm a possibilidade de giro a uma velocidade bastante considerável. Porém, o braço no qual executa a leitura, o movimento é de uma velocidade Sistemas Operacionais 20 bem inferior. Assim diminuir a quantidade de movimentos do braço para que seja efetuada a leitura dos blocos de um arquivo, pode ter como consequência a melhora do desempenho do sistema de arquivos. Para executar esse procedimento, uma das maneiras é a reorganização de modo inteligente dos blocos dos arquivos no disco, como na Figura 11. Figura 11 - Redução do movimento do braço em um HD Fonte: Elaborado pelo autor(2021). Sobre a leitura antecipada de blocos, estão relacionados nos mecanismos com objetivo que resultem nas transferências de blocos para o cache do HD, antes mesmo que sejam necessários. Consequentemente, irá ocasionar o aumento dos acertos, justamente pelo fato dos históricos de diversos programas acessarem arquivos de forma sequencial. Por exemplo, no momento que o bloco t é solicitado ao sistema de arquivos, ele o busca e executa a verificação, se o bloco t+1 já está no cache, se não está, é agendada a recuperação; a desvantagem é que para acesso aleatório esta estratégia piora o tempo de acesso. Figura 12- Leitura antecipada de blocos nos mecanismos para transferências para cache do HD Fonte: Elaborado pelo autor (2021). Sistemas Operacionais 21 Em relação ao cache de blocos, pode ser considerada como a técnica mais utilizada para a redução do acesso ao disco, assim, o cache é uma série de blocos que, do ponto de vista lógico, faz parte do disco. Mas que de certa forma, é mantido na memória com objetivo de melhorar a perfomance, para isso, existem diversos algoritmos que podem gerenciar o cache de disco, sendo que o mais comum executa as seguintes funções: • Na situação no qual o bloco não esteja no cache, primeiramente, é executada a sua leitura do disco, repassado ao processo requisitante, e, posteriormente, é efetuada uma cópia para o cache desse procedimento também conhecido como – MISS. • Verificação de todas as requisições de leitura de modo a apontar, caso o bloco que é esperado se encontre no cache. • Na situação no qual o bloco está no cache, a requisição de leitura pode ser atendida, sem um acesso ao disco, também, conhecida pela sigla – HIT. Além dos diversos algoritmos que podem gerenciar o cache de disco, a compreensão do processamento paralelo é importante para o desempenho do sistema de arquivos. Processamento paralelo e distribuído Processamento paralelo é uma maneira considerada eficiente de trabalhar com dados e arquivos com ênfase em explorar eventos sincrônicos, ou seja, simultâneos na execução de um programa, por exemplo. Aplicando esses fundamentos na prática, é a utilização, no uso sincrônico, de inúmeras CPUs – Unidades de Processamento- com objetivo de realizar funções computacionais. Este fundamento origina-se desde o surgimento da era da computação, é observado em trabalhos de Von Neumann (1945) em que Arquiteturas Paralelas foram apresentadas como maneiras de obtenção de maior capacidade de processamento para executar tarefas, na qual se faz necessária para altas cargas de processamento, como arquivos. Sistemas Operacionais 22 Figura 13 - O processamento paralelo utiliza inúmeras CPUs para realizar funções computacionais Fonte: Freepik (2021). De forma geral, são diversas unidades de processamento ativas que colaboram para resolver um problema específico por meio de cooperação, e cada uma delas, de certa forma, se destina à resolução de determinada parte de trabalho. Mas nesse processamento paralelo, as unidades comunicam-se para trocar os resultados, obtidos seja ele intermediário ou no mínimo para dividir o início do trabalho e, consequentemente, para a junção final dos resultados. São exemplos de programas paralelos, aplicações escritas, em: • C com vários threads. • Java com vários threads. • Java usando RMI (Remote Method Invocation). • C quebrada em vários processos que se comunicam por sockets. Para utilizar os benefícios do processamento paralelo, é necessário que o programa e os arquivos sejam desenvolvidos para que possam executar com várias unidades ativas. Caso seja implementado, utilizando somente um processo que não dispara múltiplas threads, ele não executará mais rápido em uma máquina dual, ou seja, com dois processadores integrados. Sistemas Operacionais 23 Figura 14 – Java com vários threads é exemplo de programa paralelo Fonte: Freepik (2021). Executando esses procedimentos, o programa e os arquivos, de certa forma, não “quebrarão” de maneira automática pelo sistema operacional e só executarão em um único processador, e não utilizarão os benefícios de outros processadores que poderiam estar disponíveis na arquitetura, seguindo o exemplo da máquina dual. A utilização de processamento paralelo traz diversos benefícios como de desempenho, reduzindo o tempo de executar determinados processos, pelo fato de utilizar várias unidades ativas para resolver um determinado problema, melhorando, por exemplo, o desempenho de arquivos. Figura 15 - O processamento paralelo utiliza unidades ativas para resolver um determinado problema Fonte: Freepik (2021). Sistemas Operacionais 24 O processamento paralelo tende à redução da probabilidade de falhas no cálculo, pelo fato que cada unidade ativa pode calcular o mesmo problema procedimento conhecido como tolerância a falhas. Reduz a complexidade da modelagem e, consequentemente, de implementar a aplicação, usando uma linguagem que expresse paralelismo. Logicamente, esta técnica é aplicada em casos em que o problema tem sua essência no paralelo. O aproveitamento de recursos é um dos benefícios do processamento paralelo, pelo fato de fazer esse aproveitamento na rede, executando uma aplicação com múltiplos processos. A resolução no processamento paralelo se origina na quebra do problema em diversas partes menores, para que cada pedaço que foi dividido receba uma série de instruções ainda menores e direcionadas para inúmeras CPUs para ser resolvida de maneira simultânea. A partir desse fundamento, fica fácil constatar que se torna mais rápido resolver problemas, uma estratégia no caso de operações que necessitam o processamento de grande quantidade de dados ou arquivos que precisam gerar informações de maneira rápida. Um exemplo prático são os desktops que utilizam o princípio desta tecnologia como “dual core” ou “quad core” em suas configurações, ou seja, são de certa forma diversa CPUs, usando o sistema de multiprocessamento. Figura 16- Exemplo de processamento paralelo são os desktops que usam o“dual core” ou “quad core” Fonte: Commons.wikimedia (2021). Em relação ao processamento distribuído, é notório que a área da computação tem como uma das principais características o avanço tecnológico e o poder de conexão entre si. Segundo Tanenbaum (1992), esses avanços proporcionaram o surgimento de redes que permitiam Sistemas Operacionais 25 a conexão de muitos computadores e a transmissão de dados e arquivos com alta velocidade. Os microprocessadores sempre avançam, tecnologicamente, praticamente a cada dia, e, consequentemente, com diminuição de custo, mas com aumento da qualidade de interconexão entre as máquinas,ainda, se tornando mais confiáveis. Todos esses acontecimentos incentivam a ideia de implementar processamento distribuído, que tem como uma das suas características a necessidade de programas e arquivos diferentes dos utilizados em sistemas centralizados. Figura 17 - Os microprocessadores contribuem para o processamento distribuído Fonte: Freepik (2021). Analisando os fundamentos de processamento distribuído, alguns estudiosos e autores elaboram diferenciação drásticas com o processamento paralelo, que podem gerar discussões. Já outros conceituam o processamento paralelo, igualitariamente, como processamento distribuído, pois também se enquadram na definição prática e teórica desse processamento. Na prática, para fundamentar o processamento distribuído precisa acontecer o resultado de integrar sistemas computacionais autônomos, combinados com objetivo comum. Pode ser entendido como sistemas “centralizados” interligados por meio de uma rede que compartilha recursos físicos, com a intenção de desenvolver uma atividade ou tarefa específica. Para comparar melhor, o autor Tanenbaum (1992) identifica que os sistemas paralelos também obedecem a esta definição, mas além de ter sistemas em máquinas dispersas, os processos são executados paralelamente no mesmo instante de tempo. Sistemas Operacionais 26 Algumas vantagens do processamento distribuído são mais evidentes, se comparadas com a dos sistemas centralizados, e uma delas está relacionada ao baixo custo, principalmente pelo avanço tecnológico dos microprocessadores que resultaram na queda dos preços. Assim, torna a implementação de sistemas distribuídos com um custo menor e ainda com melhor desempenho. Por exemplo, um sistema distribuído com 20.000 microprocessadores, cada um dos quais rodando a 20 MIPS (milhões de instruções por segundo), teria um desempenho de 400.000 MIPS. Mas tudo deve ser levado em consideração, embora os sistemas distribuídos tenham melhor custo/benefício em relação aos sistemas centralizados, não significa que o sistema distribuído é mais barato e oferece maior eficiência no processamento dos dados, como aponta Tanenbaum (1992). Figura 18- Avanço tecnológico dos microprocessadores resulta em bom custo benefício Fonte: Freepik (2021). Para aplicações que exigem alto teor de confiabilidade, o processamento distribuído normalmente é empregado, como no caso de controle de tráfego aéreo, que nunca pode parar, mesmo que aconteça uma perda de 10% do seu funcionamento. Para esses tipo de sistema como o de tráfego aéreo, correria grandes riscos de queda em sua totalidade, caso fosse utilizado o sistema centralizado, pois ficaria dependendo do funcionamento do mainframe, e caso acontecesse algum problema, o sistema poderia parar. Com sistemas centralizados ainda pode acontecer saturação da rede pelo alto tráfego de dados com origem/destino ao mainframe. Sistemas Operacionais 27 Figura 19 - Processamento distribuído pode ser empregado no controle de tráfego aéreo Fonte: Freepik (2021). Outro exemplo de aplicação de processamento distribuído é o sistema bancário, no qual há computadores distribuídos em várias agências que estão distantes, fisicamente, portanto a implantação de sistema distribuído é mais viável. Sistemas Operacionais 28 RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo tudinho? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que o desempenho do sistema de arquivos está relacionado em compreender os aspectos que impactam a performance do acesso a dados em um sistema de arquivos, justamente pelo fato de executar a função de transferência de dados e arquivos como uma das funções de um sistema operacional. Assim é destacada a importância da busca constante para melhora da sua performance nesse aspecto. Mesmo com as evoluções tecnológicas, o acesso aos sistemas de arquivos é mais devagar, quando comparado ao acesso à memória, na qual dispõe de acessos de velocidade inferior em relação às memórias RAM. Para isso foram encontradas alternativas para melhora do desempenho do sistema de arquivos, como a redução do movimento do braço do disco, leitura antecipada de blocos e cache de blocos. Sistemas Operacionais 29 Segurança em sistemas de arquivos OBJETIVO: Ao término deste capítulo, você será capaz de compreender a segurança em sistemas de arquivos. Isto será fundamental para o exercício de sua profissão. E então? Motivado para desenvolver esta competência? Então vamos lá. Avante! A busca pela segurança em sistemas de arquivos e confiáveis, nos sistemas operacionais, que em tempos atrás era apenas uma tendência, já algum tempo se tornou uma necessidade e não mais um diferencial. Processamento do sistema de segurança em arquivos e diretórios implementado por sistemas operacionais É importante entender como se processa o sistema de segurança em arquivos e diretórios implementado por sistemas operacionais, nos diferentes aspectos, como em sistemas distribuídos. Apontam Tanenbaum e Steen (2006): “Se por um lado os processos devem ser desvinculados e independentes, por outro é necessário garantir integridade e confidencialidade dos dados”. Figura 20 - A segurança nos sistemas de arquivos é imprescindível nos ambientes não confiáveis Fonte: Freepik (2021). Sistemas Operacionais 30 Modi et al. (2010) complementam que devido ao aumento de casos de acesso não autorizado e mal-intencionado aos arquivos armazenados, remete à demanda aos sistemas de arquivos como os distribuídos e à necessidade de estarem capacitados para lidar com a segurança dos arquivos de maneira transparente e eficaz, principalmente, na situação que os arquivos estejam disponíveis a um ambiente não confiável. A segurança em sistemas de arquivos está relacionada à segurança no armazenamento. Desta maneira, destaca-se a importância da investigação dos requisitos de segurança com objetivo de se evitarem as ameaças em que o sistema de arquivos está aparente. Assim, define-se o nível de segurança que deve ser oferecido aos arquivos armazenados, de acordo com as diferentes ameaças à segurança em sistemas de arquivos, nos quais vários aspectos devem ser considerados como: • Eficiência dependente do hardware. • Largura de banda. • Tamanho dos arquivos. • Latência. Mas também outros pontos fundamentais, que têm relação com a segurança em sistemas de arquivos, são importantes como disponibilidade dos arquivos, confidencialidade, integridades que podem ser afetadas pelo programa que os utilizam. Figura 21 - A segurança em sistemas de arquivos e a segurança do armazenamento Fonte: Freepik (2021). Sistemas Operacionais 31 É importante salientar, como apontam Graf e Wolthusen (2005) as distintas ameaças a um sistema de arquivos, que podem ser divididas em duas principais, por exemplo: 1. Off-line. 2. On-line. Para entender melhor, as ameaças on-line são caracterizadas como aquelas que acontecem, no momento que o sistema operacional, desempenha o intercâmbio para acessar os recursos de armazenamento. Já na off-line acontece, quando essa mediação não é realizada. Uma das soluções para as ameaças, on-line ou off-line, indicadas na segurança em sistemas de arquivos, está relacionada à criptografia. A criptografia relacionada nos sistemas operacionais pode ser definida como métodos com referências de fundamentos matemáticos, que recebe o nome de algoritmos, utilizados para converter mensagens de fácil decifração, em mensagens ininteligíveis para as quais não há a informação correta para decifrá-las. De acordo Stallings (2015), tanto os protocolos quanto os algoritmos de criptografia podem ser agrupados em quatro principais áreas: o primeiro, encriptação ou criptografia simétrica; o segundo, assimétrica; o terceiro, algoritmos de integridadede dados e o quarto, protocolos de autenticação. Figura 22 - Uma das soluções para as ameaças na segurança é a criptografia Fonte: Freepik(2021). Sistemas Operacionais 32 Em relação à encriptação ou criptografia simétrica, é usada com objetivo de mascarar o conteúdo dos fluxos contínuos ou blocos de dados de quaisquer tamanhos. Já a encriptação ou criptografia assimétrica, é utilizada para mascarar pequenos blocos de dados, como valores de função e chaves de encriptação. Sobre algoritmos de integridade de dados são aplicados para identificação de prováveis mudanças em blocos de dados; e protocolos de autenticação são esquemas que têm como base a utilização de algoritmos criptográficos, criados para autenticação da identidade de entidades. DEFINIÇÃO: As entidades de segurança são aquelas no qual é permitida a sua autenticação pelo sistema operacional. São exemplos a conta de usuário, a conta de computador ou processo ou thread, no qual é executado na circunstância de segurança de uma conta de usuário ou computador ou os grupos de segurança dessas contas. É importante salientar e sempre revisar que a função da criptografia é ligada aos fundamentos de segurança nos sistemas de arquivos, nos quais é importante um aprofundamento nos principais tipos de criptografia. Existem várias técnicas de criptografia, a assimétrica e a simétrica, essa última também é conhecida como criptografia de chave simples ou chave secreta, e tem como base a aplicação de um segredo a um texto de uma mensagem. Essa técnica altera as informações para texto cifrado, em que este segredo pode ser de vários tipos como: • Sequência de caracteres aleatórios. • Senha. Todos em forma de chave, no qual pode-se ter o conhecimento apenas do lado que cifra e para o outro lado que o decifra a mensagem, mas o aspecto negativo é quem tiver conhecimento da chave terá a capacidade de decifrar tal mensagem. Pelo fato dessa insegurança, deve- se tomar o máximo de cuidado com o controle, troca e distribuição das chaves, para não resultar em problemas de segurança, durante todo o processo. Em relação à criptografia assimétrica também denominada Sistemas Operacionais 33 como chave pública e privada, se caracteriza por utilizar um par de chaves que tem relação entre si, da maneira que uma delas pode ser distribuída publicamente. Mas a outra permanece em segredo com o proprietário, por esse motivo é chamado de chave pública e a segunda recebe o nome de chave privada. Para entender melhor, um arquivo que foi cifrado com a chave pública, apenas pode ser decifrado, usando o mesmo algoritmo da respectiva chave privada. Figura 23- A criptografia assimétrica- chave pública e privada Fonte: Freepik (2021). Utilizando essa técnica de chave pública e de chave privada, os problemas identificados com a técnica simétrica são solucionados, mas consequentemente em questões de custo é maior em relação ao seu processamento, é mais lento quando se comparado à criptografia simétrica. Mas cada um dos tipos de criptografia tem a sua indicação, na qual a simétrica é indicada para arquivos pequenos e a assimétrica para criptografar arquivos maiores. Também há possibilidade da utilização do uso de método híbrido, no qual são empregados ambas técnicas, aproveitando o melhor de cada uma, além da criptografia simétrica e assimétrica, é importante o conhecimento da função de hash. Esta corresponde a cálculos matemáticos, cuja operação são referentes dos dados de tamanho variável, resultando em uma sequência de dados de tamanho fixo. Uma das principais características da função de hash é a de que quaisquer alterações em seu domínio, o resultado será em uma mudança considerável na sua imagem, assim, é importante estar atualizados em todas as novas opções de segurança em sistemas de arquivos. Sistemas Operacionais 34 RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo tudo? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que a segurança em sistemas de arquivos não é relacionado ao entendimento de como se processa o sistema de segurança em arquivos e diretórios, implementado por sistemas operacionais. É importante que os profissionais da área, em relação aos próprios sistemas de arquivos, tenham a capacidade para lidar com a segurança dos arquivos de forma eficaz e transparente. Essa preocupação deve ser mais potencializada nos casos em que os arquivos estejam disponíveis em um ambiente não confiável e também pelo motivo do constante aumento de situações de acesso não autorizado e mal-intencionado aos arquivos armazenados. A segurança em sistemas de arquivos está relacionada à segurança no armazenamento, por isso é importante, adotar diretrizes de segurança que devem ser oferecidas aos arquivos armazenados. Deve ser personalizada, conforme as distintas ameaças à segurança em sistemas de arquivos, e vários aspectos devem ser considerados como a eficiência dependente do hardware, largura de banda, tamanho dos arquivos e latência. Sistemas Operacionais 35 Mecanismos de proteção em sistemas de arquivos OBJETIVO: Ao término deste capítulo, você será capaz de entender os conceitos de mecanismos de proteção em sistemas de arquivos. Isto será fundamental para o exercício de sua profissão. E então? Motivado para desenvolver esta competência? Então vamos lá. Avante! Os mecanismos de proteção em sistemas de arquivos, geralmente, englobam diversos princípios como de disponibilidade, confidencialidade e da integridade, para isso, é importante aplicar técnicas para alcançar esses objetivos. Técnicas e mecanismos de proteção para sistemas de arquivos Uma das técnicas e mecanismos de proteção para sistemas de arquivos está relacionada à confidencialidade, que pode ser conhecida também como sigilo ou exclusividade, que se caracteriza pela limitação dos usuários que podem acessar determinado tipo de arquivo. Desta maneira, de acordo Hintzbergen (2018), a confidencialidade tem o foco com o sigilo da informação, no qual pode ser o resultado da criptografia dos arquivos, conforme acontece a sua transmissão ou armazenamento. A integridade é outra das técnicas e mecanismos de proteção para sistemas de arquivos. Neste caso tem relação com a proteção dos arquivos contra alterações não autorizadas, nas quais podemos exemplificar como medidas de integridade a segregação das funções que pode indicar que é necessário dois usuários para que seja possível a realização de alterações significativas. Esta segregação também pode ser nas execuções de gravar as ações dos usuários, nas quais seja possível o rastreamento e a identificação desse usuário que realizou determinadas alterações no arquivo, além de poder utilizar a criptografia para assegurar a integridade dos arquivos. Sistemas Operacionais 36 Figura 24 - A confidencialidade é uma das técnicas de proteção para sistemas de arquivos Fonte: Freepik(2021). Figura 26 - A integridade e proteção dos arquivos contra alterações não autorizadas Fonte: Freepik (2021). Outro recurso importante, segundo Cert (2012), relacionado às técnicas e aos mecanismos de proteção para sistemas de arquivos é a disponibilidade, cujo objetivo é da garantia que um determinado recurso permaneça acessível, sempre que for necessário. Esta técnica e mecanismo compreendem vários aspectos como: • Robustez. • Continuidade. • Oportunidade. Sistemas Operacionais 37 Para exemplificar as medidas de disponibilidade, temos os mais rotineiros como os procedimentos de backup, o gerenciamento e armazenagem de arquivos, objetivando perda mínima de informações ou arquivos. Figura 27 - Procedimentos de backups são medidas de disponibilidade Fonte: Freepik (2021). Além dos mecanismos de proteção em sistemas de arquivos já citados, existem outros princípios que podemser aplicados nos sistemas operacionais, como: • Não repúdio. • Autorização. • Autenticação. • Identificação. O não repúdio está relacionado em evitar que a entidade negue que ela executou determinado ato, quando de fato executou. A autorização tem objetivo de determinar as ações que podem ser executadas pela entidade. Já a autenticação é usada para a verificação, se a entidade é realmente quem se diz ser e a identificação está relacionada à permissão para que a entidade possa se identificar. Sistemas Operacionais 38 Figura 28 - A identificação é mecanismos de proteção em sistemas de arquivos Fonte: Freepik (2021). Enfim para que sejam garantidos que os princípios serão adotados, é fundamental que na prática sejam aplicados mecanismos de segurança, que também servem como um facilitador na proteção dos arquivos, garantido que as informações não sejam violadas. Mas apenas os princípios ou mecanismo não são importantes, pois em grandes organizações é recomendado a elaboração de políticas de segurança que devem ser respeitadas por todos os usuários que manipulam os arquivos nos sistemas operacionais. De acordo com Guimarães et al (2006), os mecanismos de proteção em sistemas de arquivos podem ser compreendidos como “mecanismos projetados para detectar, prevenir ou se recuperar de um ataque de segurança”. Vários mecanismos de segurança podem ser adotados nos sistemas de arquivos, os quais é sempre bom serem revistos, pois envolvem os próprios arquivos dos sistemas operacionais, que são recebidos pelos diversos meios, como: • Filtro antispam. • Firewall. • Ferramentas antimalware. • Criptografia. • Cópias de segurança. Sistemas Operacionais 39 • Notificação de incidentes e abusos. • Política de segurança. • Contas. • Senhas. De maneira geral, a notificação de incidentes e abusos estão relacionados em prestar informações que sejam fundamentais para a organização poder se proteger e facilitar na detecção de problemas, como violações de políticas de segurança e computadores infectados. Figura 29 - A senha é um mecanismos de segurança adotado nos sistemas de arquivos Fonte: Freepik (2021) A política de segurança está relacionada a uma série de diretrizes e normas que devem ser respeitadas por todos os usuários que tem acesso aos sistemas de arquivos no sistema operacional. É importante que sejam especificadas as penalidades e as responsabilidades de cada usuário ao acessar os arquivos, no caso dos descumprimentos das diretrizes e normas da política de segurança. Sistemas Operacionais 40 Figura 30 - A política de segurança inclui normas respeitadas pelos usuários Fonte: Freepik (2021). Assim pode-se definir que a política de segurança compreende diversos outros procedimentos e políticas, por exemplo, a política de privacidade, de senhas, de backup, confidencialidade e de uso aceitável. Sistemas Operacionais 41 RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo tudinho? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que os mecanismos de proteção em sistemas de arquivos, de maneira geral, compreendem vários princípios como de disponibilidade, confidencialidade e da integridade, e consequentemente, é importante aplicar técnicas para alcançar esses objetivos. Como também existem outros princípios como não repúdio, autorização, autenticação e identificação. Somente os princípios ou mecanismos não são suficientes para garantir segurança. Por exemplo, em grandes organizações é recomendado a elaboração de políticas de segurança que devem ser respeitadas por todos os usuários que manipulam os arquivos nos sistemas operacionais. De maneira geral, vários mecanismos de segurança podem ser adotados nos sistemas de arquivos, como filtro antispam, firewall, ferramentas antimalware, criptografia, cópias de segurança, notificação de incidentes e abusos, contas, senhas. Assim é importante estar sempre atualizado sobre os novos mecanismos de proteção em sistemas de arquivos, pois sempre aparecem novas ameaças que precisam de soluções inovadoras. Sistemas Operacionais 42 REFERÊNCIAS GRAF, F.; WOLTHUSEN, D. S. A capability-based transparent cryptographic file system,” In: 2005 International Conference on Cyberworlds (CW’05), Nov. 2005, pp. 8 pp.–108. 21. GUIMARÃES, A. G..; LINS, R. D.; OLIVEIRA, R. Segurança em redes privadas virtuais - VPNs. Rio de Janeiro: Brasport, 2006. HINTZBERGEN, J. et al. Fundamentos em segurança da informação: com base na ISO 27001 e na ISO 27002. Rio de Janeiro: Brasport, 2018. MACHADO, B.; MAIA, L. P. Arquitetura de sistemas operacionais. Rio de Janeiro : Livros Técnicos e Científicos Editora, 1997. MODI, D.; AGRAWALLA, R.K. ; R. MOONA, R. Transcryptdfs: a secure distributed encrypting file system. In: International Congress on Ultra Modern Telecommunications and Control Systems, p. 187–194. 20, Oct 2010. TANENBAUM, A.S.; STEEN, M.V. Distributed systems: principles and paradigms. Upper Saddle River, NJ, USA: Prentice-Hall, Inc., 2006 TANENBAUM, A. S. Sistemas operacionais modernos. São Paulo: Editora Campus,1992. STALLINGS, W. Criptografia e segurança de redes: princípios e práticas, 6a. ed. São Paulo: Pearson Education do Brasil, 2015. Sistemas Operacionais Sistemas Operacionais Unidade 4 Entrada e Saída Diretor Executivo DAVID LIRA STEPHEN BARROS Gerente Editorial CRISTIANE SILVEIRA CESAR DE OLIVEIRA Projeto Gráfico TIAGO DA ROCHA Autoria LEANDRO C. CARDOSO AUTORIA Leandro C. Cardoso Sou formado em Comunicação Social com habilitação em Design Digital e mestrado em Tecnologias da Inteligência e Design Digital, pela PUC-SP, com experiência em direção de arte e criação na área com mais de 25 anos. Passei por empresas com a Laureate International Universities - FMU | FIAM-FAAM, Universidade Anhembi Morumbi e o Centro Paula Souza (FATEC-ETEC). Fui analista de Desenvolvimento Pedagógico Sênior - Laureate EAD e coordenador de Curso Técnico de Design Gráfico, no Centro Paula Souza. Fui revisor técnico e validador para cursos EAD, atendendo cliente como Laureate International Universities; DeVry Brasil; UNEF; FAESF; Faculdade Positivo; Uninter; Platos Soluções Educacionais S.A. (Krotonn - Universidade Anhaguera). Sou autor de mais de 21 livros didáticos, um dos organizadores da Maratona de Criação e Design do Curso de Comunicação Visual, da ETEC - Albert Einstein. Sou apaixonado pelo que faço e adoro transmitir minha experiência de vida àqueles que estão iniciando em suas profissões. Por isso, fui convidado pela Editora Telesapiens a integrar seu elenco de autores independentes. Estou muito feliz em poder ajudar você nesta fase de muito estudo e trabalho. Conte comigo! ICONOGRÁFICOS Olá. Esses ícones irão aparecer em sua trilha de aprendizagem toda vez que: OBJETIVO: para o início do desenvolvimento de uma nova compe- tência; DEFINIÇÃO: houver necessidade de se apresentar um novo conceito; NOTA: quando forem necessários obser- vações ou comple- mentações para o seu conhecimento; IMPORTANTE: as observações escritas tiveram que ser priorizadas para você; EXPLICANDO MELHOR: algo precisa ser melhor explicado ou detalhado; VOCÊ SABIA? curiosidades e indagações lúdicas sobre o tema em estudo, se forem necessárias; SAIBA MAIS: textos, referências bibliográficas e links para aprofundamen- to do seu conheci- mento; REFLITA: se houver a neces- sidade de chamar a atenção sobre algo a ser refletido ou dis- cutido sobre; ACESSE: se for preciso aces- sar um ou mais sites para fazer download, assistir vídeos, ler textos, ouvir podcast; RESUMINDO: quando for preciso se fazer um resumo acumulativo das últi- mas abordagens; ATIVIDADES: quando alguma atividade de au- toaprendizagem for aplicada; TESTANDO: quando o desen- volvimento deuma competência for concluído e questões forem explicadas; SUMÁRIO Princípios de hardware e software ...................................................... 10 Princípios dos hardwares e dos softwares de entrada/saída nos sistemas operacionais ........................................................................................................................................ 10 Gerenciamento de discos ....................................................................... 16 Dinâmica de funcionamento de discos seus tipos e formatos ..................... 16 Clocks .............................................................................................................. 25 Conceito de clock de processamento e aplicação em dispositivos de entrada/saída .....................................................................................................................................25 Terminais ....................................................................................................... 33 Gerenciamento de terminais multiusuários por meio de um sistema operacional ..........................................................................................................................................33 7 UNIDADE 04 Sistemas Operacionais 8 INTRODUÇÃO Você sabia que os dispositivos de entrada e saída são elementos importantes dos sistemas operacionais, considerados responsáveis pela a popularização dos computadores? Isso mesmo. Mesmo nos sistemas operacionais com códigos, eram necessários dispositivos de entrada e saída, como o teclado, para que o operador de computador pudesse interagir com a máquina. E com a evolução dos sistemas operacionais e outros dispositivos de entrada em saída como o mouse, os computadores tornaram-se mais populares. Os dispositivos de entradas e saídas podem ser utilizados não apenas em computadores, mas também em outros dispositivos computacionais como notebooks, tablets, smartphones, entre outros existentes. Entendeu? Ao longo desta unidade letiva você vai mergulhar neste universo! Sistemas Operacionais 9 OBJETIVOS Olá. Seja muito bem-vindo à Unidade 4. Nosso objetivo é auxiliar você no desenvolvimento das seguintes competências profissionais até o término desta etapa de estudos: 1. Entender os princípios dos Hardwares e dos Softwares de entrada/ saída no contexto dos sistemas operacionais. 2. Compreender o papel dos discos, seus vários tipos e formatos, bem como a dinâmica de seu funcionamento no contexto dos sistemas operacionais. 3. Definir o conceito de Clock de processamento e sua aplicação em outros dispositivos de entrada/saída. 4. Entender como o sistema operacional consegue gerenciar terminais multiusuário. Sistemas Operacionais 10 Princípios de hardware e software OBJETIVO: Ao término deste capítulo, você será capaz de entender os conceitos de dispositivos de entrada e saída no sistema operacional. Isto será fundamental para o exercício de sua profissão. As pessoas que tentaram utilizar esses dispositivos, sem a devida instrução, tiveram problemas ao tentar conectá-los nos dispositivos como computadores, notebooks, tablet, ente outros. E então? Motivado para desenvolver esta competência? Então vamos lá. Avante! O hardware é a parte física de um dispositivo, seja um computador, notebook, tablet, smartphone, entre outros. Já o software é como um programa ou software aplicativo, é a parte lógica dos dispositivos que recebe e emite instruções, fundamental para o funcionamento deles, gerenciada pelo sistema operacional. Princípios dos hardwares e dos softwares de entrada/saída nos sistemas operacionais O hardware de um dispositivo, como um computador ou notebook, é formando por uma série de componentes que têm interligação entre si, os quais podemos citar: • Impressoras. • Processadores. • Terminais. • Memória principal. • Outros dispositivos físicos. Os componentes físicos, ou seja, ou hardwares de um dispositivo como computador, geralmente, têm um agrupamento em três subsistemas básicos: o primeiro é a CPU - Unidade Central de Processamento; o segundo, a memória o terceiro, os dispositivos de entrada e saída. Sistemas Operacionais 11 Figura 1 - A CPU é um dos componentes físicos de um dispositivo Fonte: Freepik (2021). A CPU - Unidade Central de Processamento- tem como principal atribuição agregar todo o sistema e ter o controle das aplicabilidades, realizadas em cada unidade funcional, é a responsável por executar todos os softwares. É importante salientar que para a execução desses softwares, eles devem estar armazenados na memória principal. A CPU divide-se em dois principais componentes: 1. ULA - Unidade Lógica e Aritmética. 2. UC - Unidade de Controle. Para entender melhor, a unidade lógica e aritmética – ULA- tem como principal atribuição realizar as operações lógicas como comparações e testes, e as operações aritméticas, ou seja, as somas e as subtrações. Figura 2 - A ULA é responsável por operações lógicas e aritméticas na CPU Fonte: Freepik (2021). Sistemas Operacionais 12 Já a Unidade de Controle – UC - tem como principal atribuição o controle das atividades de todos os componentes de um dispositivo, como o computador, por intermédio da projeção de pulsos elétricos, ou seja, sinais de controle, realizados por um mecanismo que recebe o nome de clock, no qual esse controle pode ser realizado na busca de uma instrução na memória ou a gravação de um dado no disco. DEFINIÇÃO: Clock é definido como o número de ciclos por segundo de um sinal de sincronismo, utilizado no processador. Esse ciclo é medido em Hertz (Hz). Um exemplo prático é quando “escutamos” a expressão GigaHertz dos processadores. Desta maneira, é importante conhecer a velocidade de processamento de uma CPU - Unidade Central de Processamento, que pode ser definida pela quantidade de instruções que o processador exerce e executa por unidade de tempo. Geralmente, este tempo é medido em segundos e é utilizada a unidade de medida MIPS, que corresponde a milhões de instruções por segundo, pois a emissão de dados entre o próprio transmissor e receptor é controlada pelo clock. Figura 3 - A velocidade de processamento da CPU é medida em segundos Fonte: Freepik (2021). Os aparelhos de entrada e saída estão relacionados aos que proporcionam a comunicação com os dispositivos como computador, notebook ou tablet, sendo que alguns aparelhos estão ligados diretamente na comunicação entre o homem-máquina. São exemplos: Sistemas Operacionais 13 • Impressoras. • Teclados. • Mouses. • Monitores de vídeo. • Plotters. • Joystick. Implementar interfaces consideradas amigáveis, facilita que o maior número de pessoas, sem conhecimento específico sobre informática, possa utilizar dispositivos como computador, notebook e tablets, facilitados pelos itens de entrada e saída. Figura 4 - Teclado é um dispositivo de entrada e saída Fonte: Freepik (2021). Outros exemplos que tornam mais acessíveis dispositivos computacionais são caneta ótica, scanner, dispositivos sensíveis à voz humana, como a Alexia, da Google, ou a Siri, da Apple. Já em relação aos softwares, existem três níveis ou camadas: 1. Software aplicativos. 2. Utilitários. 3. Sistema operacional. Os programas ou softwares que são executados pelos usuários, atualmente, são chamados de aplicativos, principalmente pelo fato da popularização dos dispositivos móveis, como os smartphones e tablets, nos quais os softwares que podem ser instalados são chamados apenas Sistemas Operacionais 14 pela a sigla APP, pois, antes eram chamados, simplesmente, de programas ou softwares. Na maioria dos procedimentos, ações nas quais os usuários de qualquer sistema operacional conseguem executar, é necessário um software com recursos para ser possível sua viabilização. Figura 5 - O computador como máquina de níveis Fonte:Machado (2004). Os programas de um sistema operacional podem ser de vários tipos, por exemplo: • Contas a receber. • Editor de textos. • Planilhas. • Programa de imposto de renda. • Controle de estoques. Tempos atrás eram mais visíveis as diferenças entre os programas, hoje são chamados de aplicativos e utilitários. Pelo fato que poucas pessoas tinham acesso aos computadores, existiam profissionais que exerciam a função de operador de computador que tinham como atribuição a execução de determinadas atividades, como operar as impressoras, copiar de fita para disco e vice-versa e, para desenvolver esses procedimentos, eram necessários vários softwares. Era necessário, Sistemas Operacionais 15 ainda, um software específico apenas para localizar um arquivo no computador, pois a maioria deles, que o operador de computador utilizava eram chamados de utilitários. Atualmente, ainda existe uma série de softwares, usados como interface entre o usuário e o hardware. A terminologia utilitários é, assim, uma referência a softwares que têm relação aos serviços do sistema operacional como os compiladores, depuradores e outros. É importante revisar que os softwares ou aplicativos podem ser facilmente identificados, como os que estão mais próximos do usuário domésticos, por exemplo, os navegadores web, os editores de texto como o Word, jogos etc. Já os softwares utilitários executam a intermediação entre eles e o núcleo do sistema operacional, dispondo de funções mais específicas e, normalmente, mais restritas. RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo tudo? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que para entender os princípios de hardware e software de entrada/ saída no contexto dos sistemas operacionais, é importante saber definir o que é cada um deles. O hardware trata-se da parte física de um dispositivo, seja um computador, notebook, tablet, smartphone, entre outros. Já o software que também recebe as denominações de programa ou software aplicativo, é a parte lógica que recebe e emite instruções, que são fundamentais para o funcionamento do dispositivo, o qual é gerenciado pelo sistema operacional. A emissão e o recebimento das instruções são facilitadas por dispositivos de entrada e saída, como o teclado, mouse, uma impressora, entre outros. Um joystick, também, é considerado um dispositivo de entrada e saída, mas o seu uso tem um foco maior no entretenimento, como também os óculos de realidade virtual que pode ser conectado via bluetooh. Sistemas Operacionais 16 Gerenciamento de discos OBJETIVO: Ao término deste capítulo, você será capaz de entender como se processa o gerenciamento de discos, nos sistemas operacionais. Isto será fundamental para o exercício de sua profissão. E então? Motivado para desenvolver esta competência? Então vamos lá. Avante! Gerenciamento de disco é considerado um utilitário dos sistemas operacionais como o Windows, da empresa Microsoft, cuja função é proporcionar a execução de tarefas avançadas de armazenamento. Dinâmica de funcionamento de discos seus tipos e formatos De maneira geral, o gerenciamento de disco manipula as Unidades Lógicas - UL dos HDs, ou seja, os discos rígidos, pensando na sua subdivisão ou unificação, por exemplo. Modifica assim o seu tamanho, podendo executar cópias, além de alterar o seu tipo, no qual pode ser particionado, geralmente, de dois modos: o primeiro recebe o nome de estendido e o segundo, de primário. Figura 6 - O gerenciamento de disco permite executar cópias dos arquivos armazenados em HD Fonte: Freepik (2021). Sistemas Operacionais 17 Para entender melhor, a partição estendida caracteriza-se por dedicar uma área no disco, para alocar as unidades lógicas que são objetos que atuam como partições, mas não podem ser destinadas ao sistema operacional. DEFINIÇÃO: A partição é uma fragmentação do espaço de um disco rígido – HD, cuja partição é possível armazenar um sistema de arquivos distintos. Desta forma, em cada partição pode ser instalado um sistema operacional diferente. Por exemplo, Windows ou Linux, é uma solução para viabilizar uma convivência de vários sistemas operacionais distintos no mesmo HD, bastante utilizados por estudantes e profissionais da área para conhecer vários sistemas operacionais com baixo custo. Em relação à partição primária, os sistemas operacionais, como o Windows, permitem o uso de uma partição desse tipo com objetivo de inicialização desse sistema operacional. Assim, apenas as partições primárias devem estar identificadas como ativas. A partição ativa é o ambiente, no qual o dispositivo como o computador ou notebook busca pelos arquivos de inicialização. Figura 7 - A partição primária tem a função de inicialização do sistema operacional Fonte: Freepik (2021). Sistemas Operacionais 18 Depois de encontrados os arquivos de inicialização, é iniciado assim o processo de boot do sistema operacional. É importante salientar que em uma HD, apenas uma partição pode estar marcada como ativa. DEFINIÇÃO: Boot é terminologia inglesa, traduzida por arranque ou inicialização. O boot é utilizado no dispositivo como o computador ou notebooks, no período que está carregando o sistema operacional, exatamente no momento que o dispositivo está sendo ligado. Em uma HD básica, geralmente, é possível incluir até quatro partições primárias, ou, por exemplo, três partições primárias e uma partição estendida, e usar algum utilitário para o gerenciamento dessas informações, mas deve estar como ativa, apenas, a partição na qual contém o sistema operacional. Figura 8 - Em uma HD básica, é possível incluir até quatro partições primárias Fonte: Freepik (2021). Sistemas Operacionais 19 O sistema operacional Windows, por exemplo, normalmente, utiliza três partições na unidade principal que, geralmente, é identificada como unidade C:\. São elas: 1. Partição de recuperação. 2. Partição de sistema EFI. 3. Unidade do sistema operacional Windows (C:). A partição de recuperação é o local em que as ferramentas específicas são armazenadas para facilitar a recuperação do sistema operacional. No caso do Windows, nas situações que aconteçam erros de inicialização ou mesmo problemas graves. Figura 9 - Exemplos de partições-padrões do sistema operacional Windows Fonte: Elaborado pelo autor (2021). A partição de sistema EF pode ser configurada e utilizada por alguns dispositivos como computadores ou notebooks para a inicialização por meio de boot, tanto o próprio dispositivo como também o sistema operacional. Já a unidade do sistema operacional, no caso do exemplo o Windows (C:), é o local no qual está instalado, e que, normalmente, estão armazenado os outros softwares e os arquivos. É importante considerar que mesmo que o gerenciamento de disco permita apresentar a partição de sistema EFI, como também a partição de recuperação como 100% livre, não é o que realmente acontece. Normalmente, essas partições ficam com bastante ocupação de arquivos, que são geralmente fundamentais para os dispositivos, assim, é importante que estas partições sejam operadas, corretamente. Deve-se evitar, por exemplo, executar alterações para que essas partições desenvolvam as funções nos quais são destinadas, que podem ser de iniciar o dispositivo e facilitar recuperar, quando houver problemas. Sistemas Operacionais 20 Figura 10 - O uso das partições facilita recuperar informações Fonte: Freepik (2021). Outros recursos relacionados ao gerenciamento de discos facilitam compreender o seu papel, seus vários tipos e formatos e a dinâmica de seu funcionamento no contexto dos sistemas operacionais. Estão relacionados aos discos rígidos virtuais, também conhecidos pela sigla VHDs, que são arquivos de disco rígido virtualizados que,ao serem preparados, executam o funcionamento, e parecem de maneira bem similar a um disco rígido físico. DEFINIÇÃO: Virtualização pode ser definida como o fundamento que propõe resultados computacionais que permitem executar vários sistemas operacionais, e logicamente, os softwares relacionados por meio de um único dispositivo, por exemplo, um computador ou notebook ou até mesmo servidores robustos. É importante salientar que os discos rígidos virtuais – VHDs- são apresentados como discos físicos. No gerenciamento de disco, no momento, em que um disco rígido virtual é disponibilizado, ou seja, é anexado para ser utilizado no sistema operacional, ele é identificado com Sistemas Operacionais 21 a cor azul, utilizando o sistema operacional Windows, por exemplo, e no momento, que ele fica indisponível, ou seja, for desanexado, o seu ícone é apresentado na cor cinza. Para a criação de discos rígidos virtuais – Vedas, continuando o exemplo do sistema operacional Windows, primeiro o usuário deve ter privilégios de administrador ou operador de backup, depois basta ir no menu Ação e selecionar a opção denominada como Criar VHD. Figura 11 - Exemplo de como criar discos rígidos virtuais – VHDs no sistema operacional Windows Fonte: Elaborado pelo autor (2021). Na caixa de diálogo denominada como Criar e Conectar disco rígido virtual, deve ser especificado o local no dispositivo, ou seja, no computador ou notebook, no qual será armazenado o arquivo VHD e o tamanho do VHD, como é apresentado na Figura 12. Sistemas Operacionais 22 Figura 12 - Caixa de diálogo Criar e Conectar disco rígido virtual no sistema operacional Windows Fonte: Elaborado pelo autor (2021). Depois de efetuar esses procedimentos para conectar, ou seja, anexar ou desconectar um disco rígido virtual – VHD para iniciar o seu uso, basta ir novamente, no menu Ação, depois selecionar Anexar VHD. Depois que esteja conectado, caso queira desanexar o VHD, ou seja, tornar indisponível, basta clicar no disco com o botão direito e selecionar Desanexar VHD, e clicar em OK. É importante considerar que ao desanexar um VHD, não exclui o VHD - disco rígido virtual ou quaisquer arquivos nos quais foram armazenados. Algumas observações são importantes como o caminho que determina o local do VHD que deve estar, plenamente correto, não podendo ficar no \diretório do Windows, pois o tamanho mínimo para um VHD é de três megabytes (MB), como também que um VHD pode ser apenas um disco básico. É importante, ainda, considerar o fato que VHD é inicializado, quando é criado e quando é utilizada a opção de tamanho fixo grande, pode levar algum tempo. Sistemas Operacionais 23 Figura 13 - Opções disponíveis de disco rígido virtual – VHD no sistema operacional Windows Fonte: Elaborado pelo autor (2021). No sistema operacional Windows, também, é importante conhecer os discos dinâmicos. Nesse tipo de armazenamento de arquivos, é criado apenas uma única partição com todo o espaço do disco, e esse disco no qual foi configurado, com esse tipo de armazenamento, recebe o nome de “disco dinâmico”. Um disco dinâmico pode ser dividido em volumes, nos quais cada volume pode conter uma ou mais partes de um ou mais discos, e existem diferentes tipos de volumes. É importante estar sempre atualizado nos tipos de volumes que são: • Volume simples. • Volume expandido. • Striped volume ou distribuído (RAID 0). • Volume espelhado (Mirrored volume – RAID 1). • Volume do tipo RAID-5. Sistemas Operacionais 24 É importante considerar que o tipo de volume a ser usado é especificado por vários fatores como performance, espaço disponível e tolerância a falhas, nos quais está relacionada a possibilidade de manter as informações, mesmo no evento de comprometimento de um disco ou volume. É importante compreender o papel dos discos, seus vários tipos e formatos, bem como a dinâmica de seu funcionamento no contexto dos diversos sistemas operacionais, não apenas no Windows. Geralmente, o sistema operacional Windows obtém mais destaque, pelo fato de ser o mais utilizado e mais fácil de usar para os profissionais iniciantes e estudantes. RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo tudinho? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que para entender o gerenciamento de discos, primeiro é importante saber o seu papel e seus vários tipos e formatos, bem como a dinâmica de seu funcionamento no contexto dos sistemas operacionais. O gerenciamento de disco é classificado como um utilitário dos sistemas operacionais, como o Windows, da empresa Microsoft, no qual uma das suas atribuições é permitir que sejam executadas as tarefas avançadas de armazenamento. O gerenciamento de disco pode modificar as Unidades Lógicas - UL dos discos rígidos, ou seja, HDs, com o objetivo de subdividir ou mesmo unificar, utilizando os mecanismos de partição que pode ser primária ou estendida. A partição estendida aloca uma parte do disco rígido, com objetivo de destinar as unidades lógicas que não podem ser destinadas ao sistema operacional. Já partição primária, os sistemas operacionais, como o Windows, utilizam para inicializar o sistema operacional. Em uma HD básica, geralmente, é possível incluir até quatro partições primárias. Sistemas Operacionais 25 Clocks OBJETIVO: Ao término deste capítulo, você será capaz de entender o conceito de clocks em um sistema operacional. Isto será fundamental para o exercício de sua profissão. E então? Motivado para desenvolver esta competência? Então vamos lá. Avante! Clocks são frequências nas quais um processador é qualificado a exercer as tarefas de sua responsabilidade, de modo que, quanto maior for a frequência, menor intervalo uma tarefa levará para ser executada, ou seja, o processador será mais eficiente. Conceito de clock de processamento e aplicação em dispositivos de entrada/saída Tecnicamente, o conceito de clock é um relógio interno, por esse motivo recebe este nome, que tem referências num cristal de quartzo que produz um pulso elétrico. Sua principal função é a sincronização da totalidade dos circuitos que são compostos da placa-mãe, como também os circuitos internos do processador, com objetivo de que o sistema execute todas as suas funções de modo harmônico. Figura 14 - O clock tem como função a sincronização dos circuitos internos do processador Fonte: Freepik (2021). Sistemas Operacionais 26 Os pulsos elétricos, gerados pelos clocks em intervalos regulares, são medidos pela sua frequência, cuja unidade é dada em hertz. Então 1 MHz equivale a 1 milhão de ciclos por segundo. Geralmente, os processadores são referenciados pelo clock ou frequência de operação. VOCÊ SABIA? Hertz, cujo símbolo é o Hz, é uma unidade de medida derivada do SI (Sistema Internacional de Unidades) para frequência, que expressa, em termos de ciclos por segundo, essa frequência do evento periódico, oscilações, ou seja, vibrações ou rotações por segundo. O nome homenageia o físico alemão Heinrich Hertz. Disponível aqui. Para definir o conceito de clock de processamento e sua aplicação em outros dispositivos de entrada saída, é importante saber fundamentar um microprocessador, também conhecido como processador (SILBERSCHATZ, 200), que equivale, em um circuito integrado, o que foi arquitetado com objetivo da realização de operações e cálculos, considerado como a parte principal de um dispositivo como um computador ou notebook. Figura 15 - O microprocessador é a parte principal de um dispositivo como computador ou notebook Fonte: Freepik (2021). É preciso salientar que, embora o microprocessador seja importante, por si só, não é autossuficiente para um dispositivo ter interações com um usuário, com o qual é necessário ter outros mecanismos como: SistemasOperacionais http://www.numdam.org/article/PHSC_1996__1_1_21_0.pdf 27 • Conversores de sinais. • Dispositivos de entrada e saída. • Memórias. O microprocessador é o responsável por determinar a velocidade de processamento dos dados de um dispositivo, como um computador ou notebook, melhorando assim o desempenho do sistema operacional. Figura 16 - O microprocessador determina a velocidade de processamento dos dados de um dispositivo Fonte: Freepik (2021). É importante, inclusive, o conhecimento de alguns termos como Clock Rate, que também é conhecido como Clock Speed, que é a velocidade em que o processador desempenha instruções. Seguindo nesta lógica, quanto maior for a velocidade do clock, mais instruções uma CPU terá habilidades de executar por segundo, geralmente, a taxa de clock é uma característica fixa do processador. Mas alguns dispositivos como computadores ou notebooks têm uma “chave” que proporciona duas ou mais velocidades distintas. Esse benefício pode ser aplicado em softwares que foram criados para se utilizar em dispositivos com boa performance, ou seja, com alta velocidade de clock, mas em contrapartida, esses mesmos programas podem não ter a mesma performances em dispositivos cuja velocidade de clock seja mais lenta, e vice versa, e ainda, interfere na velocidade dos dispositivos de entrada e saída. Sistemas Operacionais 28 Figura 17 - A velocidade do clock é aplicada na performance dos periféricos de entrada e saída Fonte: Freepik (2021). Igualmente, é importante considerar que alguns elementos de expansão não podem ter capacidade de utilizar a alta velocidade de clock. Dessa maneira, pode-se concluir que aliada à velocidade desse clock, a arquitetura interna de um processador interfere na performance. Por esse motivo, é possível levantar a hipótese que mesmo duas CPUs com velocidades iguais de clock, não se pode afirmar que vão performar da mesma maneira. Por exemplo, um processador 80286 precisa de vinte ciclos para multiplicar dois números, já um processador superior 80486 pode ser capaz de efetuar o mesmo cálculo simples no mesmo ciclo. Dessa maneira, a tecnologia de novos processadores pode ser vinte vezes superior, ou seja, mais rápida, quando comparada aos de tecnologia inferior, caso a velocidade de clock seja a mesma. Figura 18 - Os novos processadores são mais rápidos Fonte: Freepik (2021). Sistemas Operacionais 29 É importante salientar que existem processadores que são superescalar, ou seja, que têm habilidade de execução de mais de uma instrução por ciclo, otimizando, consideravelmente, os dispositivos de entrada e saída. São exemplos, os barramentos de expansão e CPUs, que também têm a sua velocidade de clock. A melhor situação é quando as velocidades, tanto dos barramentos quanto da CPU, forem as mesmas, assim um componente não fica mais lento que o outro. Na prática, a velocidade de clock dos barramentos é mais lenta que a velocidade da CPU. DEFINIÇÃO: Processador superescalar utiliza de paralelismo em grau de instruções de modo a possibilitar a execução de mais de uma instrução por ciclo de clock, decodificando inúmeras dessas instruções de uma só vez. Outro termo importante relacionado para entender a definição do conceito de clock de processamento, e sua aplicação em outros dispositivos de entrada e saída, é overclock, no qual há o incremento da frequência do processador, para possibilitar que ele desenvolva a sua atividade rapidamente. Figura 19 - Overclock é o aumento da frequência do processador para desenvolver sua atividade mais rápida Fonte: Freepik (2021). Sistemas Operacionais 30 A frequência de operação dos dispositivos domésticos como computadores e notebooks, normalmente, são definidos por dois princípios: 1. Um multiplicador de clock. 2. Velocidade de operação da placa-mãe. Um multiplicador de clock proporciona ao processador lidar de maneira interna a uma velocidade superior que a da placa-mãe, salientando que outros periféricos do dispositivo como o computador são importantes: • Placa de vídeo. • Memória RAM. • Cachê. Esses periféricos permanecem trabalhando na velocidade de barramento. Figura 20 - A placa de vídeo trabalha na velocidade de barramento se é utilizado um multiplicador de clock Fonte: Freepik (2021). A velocidade de operação da placa-mãe, que também é conhecida como velocidade de barramento, nos processadores da marca Pentium, pode ser de 50, 60 e 66 MHz, por exemplo. É importante lembrar que as frequências tanto do multiplicador quanto do barramento podem ser modificadas por meio de jumpers de configuração da placa-mãe. Sistemas Operacionais 31 DEFINIÇÃO: Tecnicamente jumper trata-se de uma ligação móvel entre duas partes de um circuito eletrônico; é constituído por uma pequena peça plástica que contém um metal que tem função de conduzir a eletricidade. A incrementação da velocidade de barramento da placa-mãe pode criar problemas, caso algum periférico como a memória RAM ou cache não suporte essa velocidade. No momento que é executado um overclock, o processador começa a lidar a uma velocidade superior do que foi projetado, fazendo com que haja um maior aquecimento dele. Figura 21 - Ao executar um overclock, o processador começa a uma velocidade superior do que foi projetado Fonte: Freepik (2021). É importante salientar que quando é utilizado esse procedimento, acontece uma redução considerável da vida útil do processador, provocando um aquecimento excessivo que pode ocasionar os conhecidos crashes, ou seja, travamento do sistema operacional, exigindo do usuário reiniciar o dispositivo. É importante que ao executar o overclock, não se pode dispensar o uso de um cooler, ou seja, um ventilador que fica sobre o processador para reduzir seu aquecimento, mas que seja de qualidade. Em algumas situações é recomendada uma pasta térmica especial que é colocada diretamente sobre a superfície do processador. Sistemas Operacionais 32 Figura 22 - Ao executar o overclock, não dispensar o uso de um cooler Fonte: Freepik (2021). Para definir o conceito de clock de processamento e sua aplicação em outros dispositivos de entrada saída, é importante estar sempre atualizado, pois nesta área existem avanços rápidos e consideráveis. RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo tudinho? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que para entender clock de processamento e sua aplicação em outros dispositivos de entrada/saída, é importante conhecer o seu conceito. Clock pode ser definido como as frequências de um microprocessador exercem suas tarefas, pois quanto maior é a frequência, menor intervalo uma tarefa levará para ser executada, assim, o processador é considerado mais eficiente. Uma das suas principais atribuições é sincronizar todos os circuitos que fazem parte a placa-mãe e também os circuitos internos do processador, para que todos executem as suas atribuições com harmonia. Os pulsos elétricos que são originados pelos clocks, em períodos regulares, são medidos pela sua frequência, e sua unidade é de medida é o hertz. Ainda é essencial o entendimento de alguns termos como Clock Rate, também conhecido como Clock Speed, entre outros. Sistemas Operacionais 33 Terminais OBJETIVO: Ao término deste capítulo, você será capaz de entender como o sistema operacional consegue gerenciar terminais multiusuários. Isto será fundamental para o exercício de sua profissão. E então? Motivado para desenvolver esta competência? Então vamos lá. Avante! Um dispositivo seja ele um computador ou notebook, é constituído por diversos subsistemas, como memórias, processadores, discos rígidos ou HD, interfaces de rede, impressoras, diversos dispositivos de entrada e saída, além dos terminais. Gerenciamento de terminaismultiusuários por meio de um sistema operacional O sistema operacional tem como uma das suas principais atribuições, o gerenciamento de maneira mais correta possível de todos os recursos nativos e os que podem ser incorporados, por exemplo, os dispositivos de entrada e saída. Este gerenciamento tem como principal objetivo atender às demandas solicitadas pelos usuários, ou seja, por meio dos softwares utilitários, softwares aplicativos, ou por outros meios, e é importante que esse atendimento seja o mais rápido possível. As várias atribuições do sistema operacional é, por exemplo, o compartilhamento da CPU - Unidade Central de Processamento, entre as diversas tarefas planejadas em sistemas multiprogramados, nas quais o sistema operacional assume a função de distribuir de maneira otimizada os recursos da CPU, entre as tarefas em execução. Sistemas Operacionais 34 Figura 23 - O sistema operacional gerencia as demandas solicitadas pelos usuários Fonte: Freepik (2021). DEFINIÇÃO: Os sistemas multiprogramados são caracterizados pelo momento em que um software aguarda uma entrada de dados pelo usuário, simultaneamente outro programa pode estar em processo, no mesmo intervalo de tempo. Assim tanto o processador quanto a memória são compartilhados, e o sistema operacional gerencia e controla este compartilhamento dos recursos de forma segura e protegida. É importante revisar que um software que está em execução recebe o nome de tarefas ou processo, as quais podem ser visualizadas, por exemplo, no gerenciador de tarefas do Windows pelas teclas CTRL+ALT+Del. Sistemas Operacionais 35 Figura 24 - Gerenciador de tarefas do sistema operacional Windows Fonte: Elaborado pelo autor (2021). Um sistema operacional multitarefa é caracterizado pela sua atribuição de poder suportar a execução concorrente de processos sobre um processador único, sem que seja preciso prover uma elaborada forma de gerenciamento de recursos como de: • Memória. • CPU, entre outros. Assim, sistemas operacionais multiusuários proporcionam acessos simultâneos ao dispositivo como o computador, por meio de dois ou mais terminais de entrada. Mesmo que geralmente haja associação com multiprogramação, a multitarefa não acarreta absolutamente em uma operação multiusuário. A operação multiprocesso sem suporte de multiusuários pode ser encontrada em sistemas operacionais de determinados dispositivos como computadores pessoais. Sistemas Operacionais 36 Para entender como o sistema operacional consegue gerenciar terminais multiusuários, é importante conhecer o conceito de multiprogramação, que é um fundamento mais genérico do que multitarefa (SILBERSCHATZ, 2010). Evidencia um sistema operacional que é o provedor de gerenciamento de todos os recursos como, memória, CPU, mas também dos sistemas de arquivos e adição ao suporte da execução concorrente dos processos. Figura 25 - O conceito de multiprogramação é mais genérico do que multitarefa Fonte: Freepik (2021). É importante considerar que um dispositivo, como um computador, pode ter uma série de processos que estão sendo executados de forma serial ou de forma concorrente. Nesta situação, os recursos presentes no dispositivo podem ser disponibilizados a um único software até a finalização de sua execução. Também esses recursos podem ser disponibilizados de maneira dinâmica, entre um número de softwares, conforme o nível de prioridade ou o estágio de execução de cada um deles. A utilização da multiprogramação possibilita a redução do tempo que a CPU fica inativa, aumentando assim a eficiência do uso do sistema na sua totalidade. O nível de multiprogramação presente em um sistema pode ser classificado em dois: 1. Serial. 2. Integral. Sistemas Operacionais 37 Na multiprogramação serial somente um processo se encontra em execução a cada instante, sendo a CPU alocada aos processos de forma intercalada, ao longo do tempo. Já a multiprogramação integral, na situação de um processo, pode se encontrar em execução em um dado instante. Já que a maioria dos dispositivos, como computadores e notebook, dispõe somente de uma única CPU, a multiprogramação serial é encontrada com mais frequência. Figura 26 - A multiprogramação serial é mais comum nos computadores ou notebook que dispõe de uma única CPU Fonte: Freepik (2021). De maneira geral, para entender como o sistema operacional consegue gerenciar terminais multiusuários, é importante entender os sistemas operacionais considerados complexos que dispõem de dispositivo como um computador multiusuário com vários terminais. Nestas situações, diversas variáveis devem ser consideradas, como a administração de todos os pedidos de usuários, assegurando que eles não conflitem entre si. É necessário o gerenciamento dos dispositivos entre todos os usuários que solicitam um serviço, em um dispositivo que nativamente são seriais, por exemplo, uma impressora. Sistemas Operacionais 38 Figura 27 - Em terminais multiusuários, pode se gerenciar uma impressora Fonte: Freepik (2021). Uma das soluções é armazenar o sistema em disco rígido - HD, e partes podem ser carregadas na memória RAM, quando for preciso, para isso é necessário que o sistema operacional tenha utilitários como: • Desenvolvimento de softwares. • Gerenciamento de documentos. • Gerenciamento de arquivos. • Comunicação entre outros computadores e usuários. Além de utilitário relacionado ao gerenciamento de pedidos de usuários para softwares, prevendo espaço de armazenamento e prioridade, é preciso uma interface que aceite, interprete e então execute comandos ou programas do usuário, por exemplo, Shell. DEFINIÇÃO: De maneira geral, Shell é um software utilitário que tem como função a intermediação do contato entre o usuário e o computador, ou seja, é a interface entre o usuário e o sistema operacional. Sistemas Operacionais 39 É importante para entender como o sistema operacional consegue gerenciar terminais multiusuários, cujo principal objetivo é proporcionar o controle e a proteção dos diversos tipos de dispositivos que possam estar conectados em uma rede. Atualmente é possível controlar diversos dispositivos como Tanenbaum (1995) aponta: • Smartphones. • Notebooks. • Tablets. • Computadores. • Equipamentos de IoT. • Dispositivos vestíveis. Este controle pode ser efetuado por terminais ou por um único terminal, no qual também pode ter o foco na automação de processos, facilitando o gerenciamento de todo o ambiente, desde a camada de dispositivos até sistemas operacionais e modelos de implantação em nuvem. Figura 28 - Equipamentos de IoT são administrados em terminais multiusuários Fonte: Freepik (2021). Sistemas Operacionais 40 Por meio do gerenciamento dos terminais multiusuários, é possível também automatizar a implantação de software, executar restrição do uso de determinados dispositivos, para entender como o sistema operacional consegue gerenciar esses terminais, lembrando que é importante estar sempre atualizado. RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo tudinho? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que para entender como o sistema operacional consegue gerenciar terminais multiusuários, primeiro é importante ter um dispositivo seja ele um computador ou notebook. O sistema é formado por vários subsistemas, como as memórias, processadores, discos rígidos ou HD, interfaces de rede, impressoras, diversos dispositivos de entrada e saída como também os terminais. O gerenciamento tem como foco principal o atendimento dos pedidos dos usuários, por meio de softwares utilitários, softwares aplicativos, ou por outros meios, sendo fundamental que o atendimento seja o mais rápido possível. Os sistemas operacionais multiusuários permitem acessossimultâneos ao dispositivo como o computador pelos terminais de entrada. Diversas situações devem ser consideradas, por exemplo, da administração de todos os pedidos de usuários, assegurando que eles não conflitem entre si. Sistemas Operacionais 41 REFERÊNCIAS MACHADO, F. B. Arquitetura de sistemas operacionais. Rio de Janeiro: Editora LTC, 2004. SILBERSCHATZ, A.; GALVIN, P.; GAGNE, G. Fundamentos de sistemas operacionais. Rio de Janeiro: LTC, 2010. SILBERSCHATZ, A.; GALVIN, P.; GAGNE, G. Sistemas Operacionais: Conceitos e Aplicações. Rio de Janeiro: Campus, 2010. TANENBAUM, A. S. Sistemas operacionais modernos. Rio de Janeiro: Ed. Guanabara Koogan, 1995. Sistemas Operacionais