Sistemas operacionais: conceito e estrutura

Sistemas operacionais: conceito e estrutura
Camila Pessôa
Camila Pessôa

Compartilhe

Todas as vezes que alguém pergunta: qual o sistema operacional que 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 aquele visual com pastinhas bonitinhas clicáveis e tão úteis em nosso dia-a-dia - conhecido como GUI (Graphical User interface, interface gráfica do usuário)? E você pode pensar: “Ah, então é o shell ou terminal?

Já te digo - e vai ser chocante: Nananinanão!

A imagem em loop mostra um homem mascarado, o personagem deadpool da franquia de filmes. Há um close em seus ombros e cabeça, onde o personagem leva as mãos até o rosto com uma expressão corporal que sugere surpresa.

Fonte: hips.hearstapps.com

Durante a leitura nós vamos identificar alguns aspectos fundamentais dos sistemas operacionais, compreenderemos sua importância tanto para o usuário comum, quanto para o desenvolver e também conheceremos tipos e estruturas de sistemas.

Apertem os cintos e vamos para as revelações...

O que é sistema operacional e qual o seu papel?

Um sistema operacional é fundamentalmente um software, pode ser o Linux, Windows, Android, macOS, UNIX. No entanto, 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 se preocupasse com detalhes de hardware para escrever um arquivo de texto, ou pior, se os desenvolvedores tivessem que aprender os pormenores dos componentes de um computador moderno para conseguir começar a programar? Parece um trabalho sem fim, não é?

 A imagem retrata um home negro com uma camisa socieal suando muito e com feições tensas.

Fonte: tenor.com

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 programador (ou mesmo usuário mais avançado).

Assim a gente não precisa se preocupar em administrar todos os recursos na mão, ou então, por exemplo, ter que deslocar um espaço na memória específico para determinada variável?

Ademais, certamente a quantidade de programadores e softwares disponíveis na atualidade não seria a mesma se houvesse a necessidade também de gerenciar formas de otimização dos recursos.

Muitas vezes o sistema operacional é considerado como um software base. Base porque fornece suporte às aplicações. Funciona como uma interface entre a aplicação e rotinas de E/S com o hardware, ou seja, é preciso de 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 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):

Desenho que mostra as camadas de um sistema operacional, sua posição e  relação com hardware e o modo usuário. Na camada acima há o modo usuário, que é composto pelas aplicações (como navegador web, reprodutor de música), a segunda camada é o programa de interface com o usuário. A terceira camada é o modo núcleo, que também é um software mas já faz parte do sistema operacional. Por fim há o hardware.

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 operação 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 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, um sistema operacional é um software que apresenta duas características principais: 1) funcionar como uma ponte entre aplicações na camada do usuário e hardware; 2) e 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).

Além do mais, são programas robustos, complexos e possuem longa vida. Sobretudo pelo fato 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!

A imagem em loop mostra um homem caucasiano com uma blusa branca de chef de cozinha. Ele está apoiando um lápis com a orelha direita e olha incrédulo para alguma coisa.

Fonte: i.gifer.com

Sistema operacional, o herói mascarado

Já discutimos que lidar com a arquitetura de hardware é algo muito trabalhoso, a linguagem de máquina é complexa e por essa razão todos os sistemas operacionais fornecem ao usuário 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 usuários 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.

Aimagem em loop mostra um homem branco com camisa social rosa, gravata escura e uma blusa amarela , o personagem Andy da série The Office. Ele está em frente a uma impressora e explicando algo, quando subitamente a impressora começa a fumaçar e uma luz, sugerindo um curto circuito, aparece atrás dela. O homem se assusta e se distancia da impressora.

Fonte: br.pinterest.com

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, de 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á sistemas operacionais específicos, com estruturas que se encaixam melhor em determinados computadores. Essas distintas formas 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: 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 um outro sistema dentro do seu sistema operacional, possui uma camada limiar que faz.

    • Exemplo: Máquina Virtual Java.

Os sistemas operacionais são um universo!

Conclusão

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 nenhuma ou 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 experiência para o usuário.

Neste apanhado geral, conseguimos vislumbrar os programas fascinantes que os sistemas operacionais são. Sabemos agora que a escolha do sistema operacional também está relacionada a sua necessidade e função do seu computador, ou seja: 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 realmente impressionantes. E lembre-se, a inteligência e utilidade no uso da tecnologia quem realiza é você!

E você, o que acha? Quais sistemas operacionais já usou?

Compartilha sua opinião em suas redes sociais e marca a gente!

E então, vamos aprender mais?

Camila Pessôa
Camila Pessôa

Olá, sou a Camila ! Tenho 33 anos, sou mãe e ingressei na área de tecnologia por meio da robótica educacional. Participei do Bootcamp { Reprograma } com foco em Back-End /Node.js e curso Sistemas de Informação.Atualmente faço parte do Scuba-Team e tenho grande paixão por educação e tecnologia, pois acredito que essa combinação é transformadora!

Veja outros artigos sobre Programação