Sistemas operacionais: conceito e estrutura
Sempre que alguém pergunta: qual sistema operacional você usa? Instantaneamente, você pensa na janelinha do Windows, no Shell do Linux ou mesmo no ícone de configurações do Android, dentre outros, não é mesmo?
Mas e se eu te contasse que um sistema operacional não se resume àquele visual com pastinhas bonitinhas clicáveis e tão úteis em nosso dia-a-dia — conhecido como GUI (Graphical User interface, ou interface gráfica do usuário)? Então você pode pensar: “Ah, então é o Shell ou terminal? Na verdade, não!
Durante a leitura, nós vamos identificar qual o conceito de sistema operacional e alguns de seus aspectos fundamentais.
Compreenderemos sua importância tanto para o usuário ou usuária comum, quanto para as pessoas desenvolvedoras, e também conheceremos tipos e estruturas de sistemas e as principais funções do sistema operacional. Vamos lá?
Leia também: Como instalar o MongoDB, Compass e Shell no sistema operacional Linux?
O que é um sistema operacional?
Fundamentalmente, um sistema operacional é um software, que pode ser o Linux, Windows, Android, macOS, UNIX, entre outros.
No entanto, ele não resume aquilo que seus olhos conseguem ver ou ao que você consegue interagir. Em outras palavras, é um programa que conversa diretamente com o hardware da sua máquina.
O sistema operacional assegura que os programas funcionem corretamente. Mas antes de entendermos o que é um sistema operacional, precisamos definir o que é um sistema computacional.
Um computador moderno apresenta alguns elementos principais, que podemos destacar:
- um ou mais processadores (o core);
- memória principal;
- dispositivos de entrada e saída (E/S), como monitores e teclados.
Todos esses componentes lidam em conjunto com os programas na sua máquina. À primeira vista pode parecer pouca coisa, mas você conhece de fato todos os componentes que pertencem ao seu computador? Sabe como todos eles funcionam?
Já pensou, então, se todo o usuário e usuária se preocupassem com detalhes de hardware para escrever um arquivo de texto?
Ou pior, se os desenvolvedores e desenvolvedoras tivessem que aprender os pormenores dos componentes de um computador moderno para conseguir começar a programar? Parece um trabalho sem fim, não é?
Fonte: tenor.com
Qual a função do sistema operacional?
O autor do livro sistemas operacionais modernos, Tanenbaum, levanta essa questão e justifica que o sistema operacional surgiu para intermediar o diálogo entre máquina e pessoa programadora (ou mesmo usuário/a mais avançado).
Assim, a gente não precisa se preocupar em administrar todos os recursos manualmente, como, por exemplo, ter que deslocar um espaço específico na memória para determinada variável.
Além disso, certamente a quantidade de programadores e softwares disponíveis na atualidade não seria a mesma se houvesse também a necessidade de gerenciar formas de otimização dos recursos.
Muitas vezes o sistema operacional é considerado um software base, por fornecer suporte às aplicações.
Ele funciona como uma interface entre a aplicação e as rotinas de E/S com o hardware, ou seja, é preciso ter um sistema que faça essa conversa, e é nesse campo que o sistema operacional atua. Essa peça mais elementar de software opera em dois modos: o modo núcleo (modo supervisor) e o modo usuário.
No modo supervisor o acesso é completo a todo o hardware, e é possível enviar qualquer instrução que a máquina seja capaz de executar.
O modo usuário é mais restrito para instruções que interferem no controle da máquina, mas é onde todo o resto do software opera.
Na imagem abaixo, conseguimos visualizar de forma simplificada as responsabilidades dos modos usuário e núcleo, assim como o local de atuação dos programas de interface com o usuário (GUI ou Shell):
Fonte: Sistemas Operacionais Modernos. Tanenbaum, p.1.
Embora a divisão de responsabilidades pareça muito clara, em diversas ocasiões, a distinção entre o campo de atuação do sistema operacional e o modo usuário (software usual) se torna complexa.
Um exemplo dessa afirmação é um programa que funciona em modo usuário, mas executa tarefas privilegiadas, como permitir ao usuário ou usuária a troca de senha.
Em outras palavras, definir exatamente um sistema operacional não é tão simples assim, mas conseguimos diferenciá-los de programas de usuário por meio de suas particularidades.
Em resumo, se formos elencar quais são os três principais objetivos de um sistema operacional, podemos citar como as principais funções:
1) funcionar como uma ponte entre aplicações na camada do usuário e hardware; 2) gerenciar os recursos de um sistema complexo (por exemplo, quando você executa vários programas ao mesmo tempo, na realidade é o seu sistema operacional que troca, em frações de segundos, o programa processado pela unidade central de processamento); 3) prover serviços e facilidades para a execução de programas, tais como gerenciamento de processos, controle de entrada/saída, manipulação de arquivos, comunicação entre processos (IPC), e segurança.
Esses serviços permitem escrever aplicações de forma mais eficiente, aproveitando as funcionalidades oferecidas pelo sistema operacional.
Além disso, são programas robustos, complexos e possuem longa vida. Apesar de serem muito difíceis de escrever, você acredita que o Linux tem cerca de cinco milhões de linhas? E isso é só a parte que opera no modo núcleo!
Fonte: i.gifer.com
Sistema operacional, o herói mascarado
Já discutimos que lidar com a arquitetura de hardware é algo muito trabalhoso, uma vez que a linguagem de máquina é complexa e, por essa razão, todos os sistemas operacionais fornecem ao usuário ou usuária um nível de abstração.
Para criar um arquivo, uma foto ou música no seu computador, você não precisa conhecer os pormenores de hardware, mas usa a abstração fornecida para realizar essa tarefa. Dessa maneira, o hardware fica “escondido” nesse processo.
Os sistemas operacionais também fornecem uma série de benefícios, como maior portabilidade das aplicações (possibilidade de uso de uma mesma aplicação em diferentes computadores), e proporcionam o espaço para que as aplicações se dediquem a problemas de alto nível, ou seja, aos problemas que foram designadas para solucionar.
Além disso, só é possível executar múltiplos programas simultaneamente graças ao gerenciamento de recursos do sistema operacional.
O gerenciamento de recursos apresenta a multiplexação, que é o compartilhamento de recursos no tempo e no espaço.
Em outras palavras, quando diferentes programas ou mesmo pessoas usuárias realizam o revezamento no uso de um recurso, esse recurso é multiplexado no tempo.
Um exemplo bem comum de multiplexação no tempo é quando temos várias saídas de impressão em fila e apenas uma impressora, o que ocorre é que haverá uma decisão sobre qual documento será impresso primeiro.
Fonte: br.pinterest.com
Evolução dos Sistemas operacionais
Com o avanço contínuo da tecnologia, os sistemas operacionais assumiram um papel ainda mais importante na nossa vida cotidiana.
Os sistemas operacionais hoje, na 5ª geração de computadores, não se limitam aos desktops, mainframes ou notebooks. Observamos a presença em diferentes dispositivos, como IoT, celulares, até carros autônomos e muitos outros.
Diversas arquiteturas de sistemas operacionais foram criadas para atender a essas demandas especializadas. Vamos conhecer alguns?
Tipos e estruturas de Sistemas operacionais
Assim como existem dispositivos diferentes, também há tipos de sistemas operacionais específicos, com estruturas que se encaixam melhor em determinados computadores. Essas formas distintas de processamento do sistema operacional, estão divididas em monoprogramada e **multiprogramada.
Formas de processamento:
- Monoprogramada ou serial: um único programa na máquina.
Exemplo: embarcados.
- Multiprogramada ou concorrente: é eficiente e apresenta vários programas dentro de um sistema.
Exemplo: Linux, Windows, UNIX.
É através das chamadas de sistemas (System Calls) que executamos ou interrompemos os processos. Um exemplo é a chamada mkdir no terminal, que cria um novo diretório.
Agora que compreendemos de forma sucinta como ocorre a atuação dos sistemas operacionais, é interessante observarmos também algumas estruturas que já foram implementadas na prática, são elas: sistema monolítico, sistemas de camadas, micronúcleos, modelo cliente-servidor, máquinas virtuais e exonúcleos.
Dentre os sistemas citados, podemos destacar alguns que usualmente aparecem em nossa rotina:
- Sistema monolítico: possui um modo núcleo e um modo usuário. “O sistema é escrito como uma coleção de rotinas, ligadas a um único grande programa binário executável” (Tanenbaum, p.44).
Exemplos de sistemas operacionais: Linux, UNIX, Windows.
Sistemas de camadas: é modular, isso significa que sua forma de operar é através da divisão de funcionalidades que correspondem a uma hierarquia.
Exemplos: MULTICS, OpenVMS.
Micronúcleo ou microkernel: o objetivo da arquitetura de kernel é atingir alta confiabilidade por meio da divisão do sistema em pequenos módulos, onde apenas um é executado em modo núcleo — o micronúcleo, e o restante funciona em processos comuns.
Exemplos: Symbian, MINIX 3
Virtual Machine, ou Máquina Virtual: é basicamente a virtualização de outro sistema dentro do seu sistema operacional, possuindo uma camada limiar que torna isso possível.
Exemplo: Máquina Virtual Java.
Leia também: Sistemas de Informação: Como se especializar neste mercado?
Quais os sistemas operacionais mais usados?
Em 2022, a Stack Overflow realizou uma pesquisa abrangente, na qual uma das perguntas feitas era: “Qual é o sistema operacional principal em que você trabalha?”
Na pesquisa realizada, o Windows se destacou como o sistema operacional mais amplamente adotado entre os desenvolvedores e desenvolvedoras, tanto para fins pessoais quanto profissionais.
Além disso, constatou-se que sistemas operacionais com base em Linux registraram uma popularidade superior à do macOS.
Para o Windows, 62,33% responderam que optam por uso pessoal, e 48,82% para uso profissional. Já o Linux, 40,23% para uso pessoal e 39,89% profissional.
Confira no gráfico abaixo:
Créditos:Stack Overflow
O Windows é normalmente escolhido para uso pessoal devido à familiaridade prévia das pessoas usuárias, sendo o sistema operacional padrão na maioria dos dispositivos.
Mas você sabe quais são os 4 sistemas operacionais do Windows? São eles: Windows 10 (lançado em 2015), Windows 11 (lançado em 2021), Windows Server (projetado para servidores) e Windows IoT (destinado a dispositivos de Internet das Coisas).
Conclusão
Se conhecer circuitos, dispositivos de entrada e saída, monitor, memória, processador, e demais elementos em detalhes fosse requisito para escrever as linhas de código, sem dúvida quase nenhum programa seria feito, como esclarece Tanenbaum.
Os sistemas operacionais, então, surgem como programas fundamentais para operar diferentes computadores e garantir maior eficiência e uma experiência facilitada para o usuário e usuária.
Neste apanhado geral, conseguimos vislumbrar o que é sistema operacional e o quanto ele é fascinante.
Além disso, também foi possível compreender para que serve o sistema operacional e quais os tipos existentes.
Sabemos, agora, que a escolha do sistema operacional também está relacionada à sua necessidade e função do seu computador, por isso:
1) instale diferentes sistemas operacionais (uma máquina virtual já é um excelente começo!); 2) avalie suas funcionalidades e, por fim; 3) estude seus pormenores, pois os sistemas operacionais são bastante abrangentes.
E lembre-se, a inteligência e utilidade no uso da tecnologia quem realiza é você! O que você acha disso? Quais sistemas operacionais já usou? Compartilhe sua opinião em suas redes sociais e marque a gente!
E então, vamos aprender mais?
- Sistemas Operacionais Modernos 4º Edição — Tanenbaum
- Artigo Sistema e código Binário
- Artigo Trabalhando com caminhos e pastas no terminal
- Curso Windows Prompt: Trabalhando na linha de comando
- Curso de Linux Onboarding: usando a CLI de uma forma rápida e prática
- Curso Arquitetura de computadores: por trás de como seu programa funciona
- Cursos Linux
- Cursos Windows
- Alura+ Máquina Virtual: O que é e como instalar
- O MELHOR sistema operacional para programação com Fabio Akita
- Arquitetura de sistemas com Fabio Akita