Um sistema operacional é essencial para que todos nós — usuários de computadores — possamos utilizar de forma mais amigável os recursos de que um computador dispõe, possibilitando executar suas funcionalidades por meio de interações com elementos gráficos que tornam a navegabilidade mais “natural” e compreensível aos usuários comuns, e, na maioria das vezes, nem nos damos conta da importância desse tipo de software.
Os Sistemas Operacionais e Compiladores, na verdade, pertencem a um mesmo tipo de software, os chamados softwares básicos, e embora tenham objetivos diferentes, eles fazem algo essencial: facilitam a nossa interação com o hardware ou a máquina. Dessa forma, nesta lição, vamos conhecer um pouco mais da história desse tipo de software e vamos descobrir um pouco do funcionamento deles.
Desde o lançamento do sistema operacional MS-DOS nos computadores IBM-PC, a Microsoft domina o mercado de sistemas operacionais, quando falamos de computadores ou notebooks. Quando pensamos em sistemas operacionais, precisamos ter em mente que a necessidade de novos sistemas operacionais aparecem conforme as coisas evoluem. Dessa forma, há alguns anos atrás, com a chegada dos smartphones, teve-se a necessidade de novos sistemas operacionais, como, por exemplo, o Android e o iOS. É possível perceber a importância dos softwares básicos, não é mesmo?
De maneira geral, será possível perceber que o usuário comum da computação aprende desde cedo a utilizar o Windows — que atualmente está na versão 11 (lançada em 2021).
Durante muito tempo, ao comprar um computador com o sistema operacional da Microsoft, este possuía o navegador de internet da Microsoft também instalado e aplicativos do pacote Office, e isso foi durante muito tempo alvo de disputas judiciais, pois forçava o consumidor a adquirir um produto ao levar outro. Isso gerava consumidores dos produtos e uma geração que garantiria o uso dos softwares da mesma empresa.
No decorrer do tempo, muitas empresas tentaram optar por outros sistemas operacionais que fossem mais seguros ou estáveis, porém, a grande maioria dos usuários ou funcionários das empresas demoravam a se adaptar ou aprender a utilização, o que levava as empresas a retornarem para a solução do Microsoft, o que implicava em um novo licenciamento de software, e, portanto, aumento nos custos.
Quando pensamos em empresas com 10 usuários, é um tipo de projeção, mas imagine empresas com 500, 1.000 ou 10.000 funcionários. Você consegue perceber de quantos usuários estamos falando se considerarmos que o mundo todo utiliza os sistemas operacionais diariamente? Acho que com isso dá para entender por que Bill Gates (dono da Microsoft) sempre aparece entre as pessoas mais ricas do mundo.
Um case interessante para essa lição é a maneira como um dos concorrentes da Microsoft foi construído: o Linux. Você já ouviu falar dele, não é mesmo? Inclusive, muitos dos computadores utilizados nas escolas públicas possuem sistema operacional Linux ou uma de suas variações. Enquanto de um lado temos o Microsoft Windows, um programa proprietário, que não dá acesso ao seu código-fonte, e para utilizar você precisa pagar uma licença de uso, do outro lado, temos o Linux, que possui código-fonte aberto e você não paga pelo uso, e ninguém pode vendê-lo. Você sabe o que isso quer dizer?
Bom, o Linux integra o que chamamos de projeto Software Livre ou Free Software. Trata-se de um movimento dentro da comunidade de desenvolvedores de tecnologia que é mantido e incentivado pela Free Software Foundation. E essa fundação diz que qualquer pessoa tem o direito de executar, copiar, distribuir, estudar, mudar e melhorar o software. Interessante a proposta, não é?
O Linux tem sido muito aceito, principalmente para servidores, pois possui uma grande estabilidade e menos brechas de segurança. É um belo exemplo de um projeto construído a muitas mãos e que trouxe uma boa contribuição para o mundo da computação.
De acordo com Guimarães e Lages (2005), nos sistemas de computação das décadas de 1960 e 1970, executar uma tarefa era um processo extremamente complexo e que muitas vezes levava dias. Isso porque, em muitos casos, não era apenas um trabalho executado pela máquina, pois envolvia processos realizados por pessoas em determinados pontos da tarefa. A pessoa, ou o programador, era também um operador, pois tinha que carregar os programas que seriam executados por meio de uma leitora de cartões que, por sua vez, tinha que ser alimentada quando os cartões lidos (limitados) terminavam. Sendo assim, se analisarmos como os sistemas funcionavam naquela época, podemos dizer que eles não eram eficientes.
É possível medir a eficiência de um sistema de computação por meio de dois cálculos:
1. Tempo do processador / tempo total de uso do sistema - chamado de Utilização.
2. Número de tarefas executadas por unidade de tempo - chamado de Vazão.
Nos primeiros sistemas, Guimarães e Lages (2005) destacam que a utilização do tempo de processador era de apenas 7%, e a vazão tinha uma média de apenas, acredite, três serviços por hora. Posteriormente, com melhores processadores e uma maior automatização das tarefas, esses números melhoraram para 50% de utilização e 25 serviços por hora de vazão. Mas foi somente na terceira geração que os sistemas operacionais como os que conhecemos surgiram. Eles foram essenciais para que as tecnologias de software avançassem em termos de maior confiabilidade de execução e também na melhoria dos recursos de hardware. Além, obviamente, da possibilidade de que os códigos-fonte pudessem ser executados em várias máquinas, independentemente da sua estrutura de hardware.
O principal componente do sistema operacional, agora, é o programa Supervisor. Esse programa está localizado na memória principal e realiza as funções de Entrada e Saída, controle do relógio central e alocação de recursos. O programa ainda executa instruções especiais, chamadas instruções privilegiadas, que somente ele pode realizar. O programa supervisor possibilita inovações como:
Relocabilidade - Permite que os programas sejam carregados em qualquer posição de memória.
Canais - Executa operações de entrada e saída sem a participação da Unidade Central de Processamento, o que permite a sobreposição de atividades, como a entrada e saída com o processamento ou mesmo várias operações simultâneas.
Mecanismos de interrupção - Permite processos de Entrada e Saída em paralelo a outros processos.
Assim, podemos dizer que o sistema operacional é a ligação entre o hardware e o programa de aplicação. A figura 1 ilustra o papel do Sistema Operacional:
Guimarães e Lages (2005) explicam que o usuário final não conseguiria interagir com o hardware sem os sistemas operacionais. Dessa forma, um Sistema Operacional possibilita que a interação seja suave e quase imperceptível, e isso impacta no programa que vamos criar, visto que ele roda de acordo com o sistema operacional.
O Mecanismo de Interrupção que citei anteriormente é essencial para entendermos o trabalho que o Sistema Operacional realiza. Toda vez que uma interrupção acontece, é provocada uma parada no processo, e o supervisor assume o controle da Unidade Central de Processamento. Veja, então, como a interação entre o software e o hardware acontece:
Após a interrupção, o supervisor vai realizar um teste, processar as informações que recebeu e, quando finalizar, retornar o controle para o utilizador.
Pense, agora, quando você está realizando alguma atividade no computador. É exatamente isso que é possível perceber, não é? Consegue compreender como ele organiza tudo isso?
Ele faz uma fila de prioridades, e dá o controle da Unidade Central de Processamento a um programa com maior prioridade, e vai repetindo isso, à medida que as tarefas são executadas.
Algumas interrupções, de acordo com Guimarães e Lages (2005) são:
Entrada/Saída - Quando um canal ou um dispositivo como um impressora, mouse ou toque na tela envia um sinal com informações de que uma determinada entrada ou saída foi finalizada. Lembre-se de que elas podem acontecer de forma simultânea.
Programa - Ocorre se houver algum erro durante a sua execução. Já viu a famosa tela azul do Windows ou uma mensagem de que houve um estouro de memória em algum programa que estava usando? São bons exemplos desse tipo de interrupção!
Erro de Hardware - Algo que pode implicar em erro de processamento como um problema nos dispositivos de entrada e saída, memória ou sistema elétrico.
Relógio - Todo computador precisa ter um relógio funcionando para que o sistema possa executar determinadas atividades. Ele, portanto, pode ser usado em uma programação para gerar uma interrupção necessária.
Chamadas ao Supervisor - Quando é preciso uma intervenção, de acordo com a necessidade de um programa, para que a ativação de uma função seja permitida.
Agora que você compreendeu um pouco mais o funcionamento dos sistemas operacionais e suas complexidades, será importante familiarizar-se com alguns termos que fazem parte desse contexto. Toda vez que uma ação é executada em seu computador, o sistema operacional “dispara” uma série de comandos, respeitando as configurações programadas, as prioridades e mecanismos de interrupção das atividades a serem executadas. Portanto, temos, assim, alguns conceitos que farão parte do seu dia a dia como desenvolvedor de sistemas, tais como:
JOB – São serviços específicos de trabalho de compilação de um programa, execução.
TASKS – São unidades em que o Sistema Operacional divide um serviço, para facilitar sua realização. O serviço “Execute o programa A” poderia ser dividido nas seguintes tarefas: (I) carregar o compilador para que o programa A seja compilado; (II) carregar o programa responsável pela ligação do programa A com eventuais rotinas de bibliotecas e ser colocado na memória; (III) transferir o controle para o programa A.
MONITOR - É um conjunto de programas de controle e fica na memória principal.
RECURSOS - Componentes como memória, processador, canais para entrada e saída.
ESCALONADOR - Um programa do Sistema Operacional que aloca o serviço de tempo do processador de acordo com as tarefas que precisam ser executadas.
PROCESSADOR DE ENTRADA E SAÍDA - Gerencia as entradas e saídas como operações.
SISTEMA DE ARQUIVO - Aloca os dados armazenados em um formato predefinido como arquivo.
LINGUAGEM DE CONTROLE DE SISTEMA OPERACIONAL - Para rodar um programa em um determinado Sistema Operacional, deve-se ter essa estrutura de compilação ou interpretação preparada. Um software não roda em dois sistemas operacionais diferentes, ele precisa ter versionamentos diferentes, pois a forma como acessa os dispositivos difere de um para o outro.
REENTRÂNCIA - Realiza uma melhor qualidade no uso da memória, pois permite acessar o programa em pontos diferentes da memória.
SPOOL - Uso de uma memória auxiliar à medida que o programa vai sendo executado.
Os Sistemas Operacionais, com base em sua evolução, também começaram a ser classificados de acordo com suas características: Lote Sequencial ou Batch, Multiprogramação, Tempo Compartilhado e Tempo Real.
Resumidamente, os Sistemas Operacionais têm como função gerenciar os recursos computacionais, que são:
Processador - Diminuir a ociosidade.
Periféricos - Controle das entradas e saídas, bloquear execuções, desbloquear execuções, amortecimento por meio do uso de buffers de memória.
Informação - Gerenciamento de espaço por meio da criação de arquivos, extensão dos arquivos e eliminação dos arquivos e gerenciamento do acesso da informação por meio de senhas e controle de permissões.
Memória - Gerência de alocação de espaço na memória principal por meio de uma ordenação.
Uma forma de perceber o trabalho dos Sistemas Operacionais é por alterar a ordem de prioridade dos processos que estão sendo executados. Se você é usuário do Windows, você pode, por meio de comandos simples, verificar a quantidade de processos que seu Sistema Operacional está executando no momento. Além disso, você ainda pode alterar a prioridade de um processo. Ou seja, você pode ajudar algum processo a “furar a fila” e ser atendido mais rápido. Tente fazer isso em um computador, basta seguir os passos a seguir:
Abra o Gerenciador de Tarefas pressionando “Ctrl + Shift + Esc”.
Na aba “Aplicações”, você pode encontrar o processo do aplicativo desejado.
Clique com o botão direito do mouse no processo que você deseja modificar.
Em “Definir Prioridade”, escolha a prioridade. Quanto mais alta a prioridade, mais recursos são atribuídos.
Assim, você pode imaginar o papel extremamente importante que o sistema operacional realiza entre nós, o programa ou software e o hardware.
GUIMARÃES, A. M.; LAGES, N. A. C. Introdução à Ciência da Computação. [S.l.] LTC, 2005.