Sistema operativo – o que é? (2)
Um sistema operativo é um programa ou um conjunto de programas cuja função é gerenciar os recursos do sistema (definir qual programa recebe atenção do processador, gerir a memória, criar um sistema de ficheiros, etc.), além de fornecer uma interface entre o computador e o utilizador. É o primeiro programa que a máquina executa no momento em que é ligada (num processo chamado de bootstrapping) e, a partir de então, não deixa de funcionar até que o computador seja desligado. O sistema operativo reveza a sua execução com a de outros programas, como se estivesse vigiando, controlando e orquestrando todo o processo computacional.
|
O sistema operativo funciona com a iniciação de processos que este irá precisar para funcionar correctamente. Esses processos poderão ser ficheiros que necessitam de ser frequentemente actualizados, ou ficheiros que processam dados úteis para o sistema. Poderemos ter acesso a vários processos do sistema operativo a partir do gestor de tarefas, onde se encontram todos os processos que estão em funcionamento desde o arranque do sistema operativo até a sua utilização actual. Pode-se também visualizar a utilização da memória por cada processo, no caso de o sistema operativo começar a mostrar erros ou falhas de acesso a programas tornando-se lento, pode-se verificar no gestor de tarefas qual dos processos estará bloqueado ou com elevado número de processamento que está a afectar o funcionamento normal da memória.
Funcionamento
Um sistema operativo possui as seguintes funções:
1.gerenciamento de processos;
2.gerenciamento de memória;
3.sistema de arquivos;
4.entrada e saída de dados.
Gerenciamento
de processos
O sistema operativo multitarefa é preparado para dar ao utilizador a ilusão de que o número de processos em execução simultânea no computador é maior que o número de processadores instalados. Cada processo recebe uma fatia do tempo e a alternância entre vários processos é tão rápida que o utilizador pensa que a sua execução é simultânea.
São utilizados algoritmos para determinar qual processo será executado em determinado momento e por quanto tempo.
Os processos podem comunicar-se, isto é conhecido como IPC (Inter-Process Communication). Os mecanismos geralmente utilizados são:
sinais;
pipes;
named pipes;
memória compartilhada;
soquetes (sockets);
trocas de mensagens.
O sistema operativo, normalmente, deve possibilitar o multiprocessamento (SMP ou NUMA). Neste caso, processos diferentes e threads podem ser executados em diferentes processadores. Para essa tarefa, ele deve ser reentrante e interrompível, o que significa que pode ser interrompido no meio da execução de uma tarefa.
Gerenciamento
de memória
O sistema operativo tem acesso completo à memória do sistema e deve permitir que os processos dos utilizadores tenham acesso seguro à memória quando o requisitam.
Vários sistemas operativos usam memória virtual, que possui três funções básicas:
1.assegurar que cada processo tenha o seu próprio espaço de endereçamento, começando em zero, para evitar ou resolver o problema de relocação (Tanenbaum, 1999);
2.prover protecção da memória para impedir que um processo utilize um endereço de memória que não lhe pertença;
3.possibilitar que uma aplicação utilize mais memória do que a fisicamente existente.
Sistema de ficheiros
A memória principal do computador é volátil, e seu tamanho é limitado pelo custo do hardware. Assim, os utilizadores necessitam de algum método para armazenar e recuperar informações de modo permanente.
Um arquivo é um conjunto de bytes, normalmente armazenado em um dispositivo periférico não volátil (por ex., disco), que pode ser lido e gravado por um ou mais processos.
Interface de uso
Os sistemas operativos fornecem abstracção de hardware para que os seus recursos possam ser usados de maneira correcta e padronizada, mas para ser possível operar um computador, é necessário fornecer também uma interface para que o utilizador possa desfrutar dos recursos do sistema. Actualmente existem dois tipos de interface: o GUI (graphical user interface), conhecida também por interface gráfica, e o CUI (command-line interface), sendo essa mais conhecida como interface de linha de comando.
GUI (Graphical
user interface)
Nesse tipo de interface, o utilizador tem à disposição um ambiente de trabalho composto por menus, ícones, janelas e outros itens disponíveis. O utilizador interage com esse tipo de interface usando o rato, podendo também usar o teclado e teclas de atalho. É possível fazer todo tipo de tarefas usando a interface gráfica, como edição de vídeos e imagens, sendo somente alguns tipos muito específicos de tarefas que se saem melhor em linha de comandos. Acrescentar facilidade de uso e agilidade é o objectivo da GUI, tendo a desvantagem de consumir muito mais memória que os interfaces de linha de comando. Em sistemas unix-likes, existe a possibilidade de escolher o gerenciador de janelas a utilizar, aumentando em muito a liberdade de escolha do ambiente.
CUI (Command-line
user interface)
Além da interface gráfica, existe a interface de linha de comando, que funciona basicamente com a digitação de comandos, sendo nesse relativamente pouco interactiva. Os comandos digitados são interpretados por um interpretador de comandos, conhecido também por shell, bastante comum em sistemas unix-likes. Um exemplo de interpretador de comandos seria o Bash. Usada geralmente por utilizadores avançados e em actividades específicas, como gerenciamento remoto, utiliza poucos recursos de hardware em comparação com a interface gráfica. Nesse tipo de ambiente, raramente se usa o rato, embora seja possível através do uso da biblioteca ncurses no desenvolvimento dos softwares.
Classificações
Em relação ao seu projecto (arquitectura), segundo Tanenbaum (1999):
Núcleo monolítico ou monobloco: o núcleo consiste em um único processo executado numa memória protegida (espaço de núcleo) executando as principais funções. Ex.: MAC OS X, OS/2, Windows, Linux, FreeBSD.
Micronúcleo ou modelo cliente-servidor: o núcleo consiste de funções mínimas (comunicação e gerenciamento de processos), e outras funções, como sistemas de arquivos e gerenciamento de memória, são executadas no espaço do utilizador como serviços; as aplicações (programas) são os clientes. Ex.: GNU Hurd, Mach.
Sistema em camadas: funções do núcleo irão executar em camadas distintas, de acordo com o seu nível de privilégio. Ex.: Multics.
Monitor de máquinas virtuais: fornece uma abstracção do hardware para vários sistemas operativos. Ex.: VM/370, VMware, Xen.
Quanto ao gerenciamento de processos, pode-se usar a seguinte classificação:
Monotarefa: pode-se executar apenas um processo de cada vez Ex.: MS-DOS.
Multitarefa: além do próprio SO, vários processos de utilizador (tarefas) estão carregados em memória, sendo que um pode estar ocupando o processador e outros ficam enfileirados, aguardando a sua vez. O compartilhamento de tempo no processador é distribuído de modo que o utilizador tenha a impressão que vários processos estão sendo executados simultaneamente. Ex: OS/2, Windows, Linux, FreeBSD e o Mac OS X.
Multiprocessamento: o SO distribui as tarefas entre dois ou mais processadores.
Multiprogramação: o SO divide o tempo de processamento entre vários processos mantendo o processador sempre ocupado.
Quanto à quantidade de utilizadores que podem utilizar o sistema simultaneamente:
Monoutilizador: apenas um utilizador por vez (apesar de poder suportar recursos como troca de utilizador). Ex.: Windows. Esse também pode ser acedido por terminais e conexão remota.
Multiutilizador: vários utilizadores usam o computador ao mesmo tempo, seja por diversos terminais, seja por conexão remota como o SSH. Ex.: Linux, Unix.*
*Wikipedia
|