SISTEMAS OPERACIONAIS MODERNOS

Francisco Aguiar, Irineu.

Sumário

INTRODUÇÃO *

O QUE É UM SISTEMA OPERACIONAL? *

A DIVERSIDADE DE SISTEMAS OPERACIONAIS *

REVISÃO SOBRE HARDWARE DE COMPUTADORES *

CONCEITOS SOBRE SISTEMAS OPERACIONAIS *

INTRODUÇÃO

Um computador moderno consiste de processador, memória, discos, teclado, monitor, impressoras e outros dispositivos de entrada e saída.

O trabalho do sistema operacional é gerenciar esses componentes, e fornecer ao usuário uma interface mais simples com o hardware.

O hardware é composto em camadas, por dispositivos físicos (chips, fios, fontes de alimentação), microarquitetura - CPU - ULA - REGISTRADORES - (registradores internos e caminho de dados) e linguagem de máquina (instruções para mover os dados, fazer operações aritméticas e comparar valores).

Em cada ciclo de máquina, um ou dois operandos são trazidos aos registradores e combinados na ULA, sendo o resultado armazenado em registradores. O caminho de dados é a execução de um determinado conjunto de instruções, desta forma consegue-se executar instruções em cada ciclo de máquina(clock), através dos registradores e do caminho de dados.

O software é composto em camadas, pelo sistema operacional, interpretador de comandos (shell), compiladores, editores e os aplicativos.

 

O QUE É UM SISTEMA OPERACIONAL?

O sistema operacional tem duas funções não relacionadas: estender a máquina e gerenciar recursos.

Como máquina estendida, o sistema operacional oculta a ‘verdade’ do programador sobre o hardware e apresenta uma visão simples e agradável. Ele protege o programador do hardware do disco e apresenta uma interface orientada a arquivos simples, e também oculta muitos detalhes desagradáveis relacionados ao nível inferior O sistema operacional fornece uma variedade de serviços que os programas podem obter usando instruções especiais conhecidas como chamadas ao sistema.

Como gerenciador de recursos, o sistema operacional controla de forma ordenada o uso dos dispositivos físicos entre os vários programas que competem por eles. Esse gerenciamento é feito através de compartilhamento no tempo e no espaço. Quando compartilhado no tempo, cada programa ou usuário aguarda a sua vez de usar o recurso. Quando compartilhado no espaço, cada programa ou usuário ocupa uma parte do recurso.

 

A DIVERSIDADE DE SISTEMAS OPERACIONAIS

No topo estão os sistemas operacionais para computadores de grande porte. Esses computadores exigem grande capacidade de E/S. Seus sistemas operacionais são orientados para o processamento simultâneo de muitos jobs. Eles oferecem normalmente três tipos de serviços: em lote, processamento de transações e tempo compartilhado. Um exemplo é o OS/360.

Um nível abaixo estão os sistemas operacionais de servidores. Eles são executados em servidores, em estações de trabalho ou em computadores de grande porte. Eles servem múltiplos usuários de uma vez em uma rede e permitem-lhes compartilhar recursos de hardware e software. Exemplos incluem Unix, Windows 2000 e Linux.

Há também os sistemas operacionais de multiprocessadores. Esse sistema consiste em conectar várias CPUs em um único sistema para ganhar potência computacional. Eles usam variações dos sistemas operacionais de servidores com aspectos especiais de comunicação e conectividade.

O nível seguinte é o sistema de computadores pessoais. Sua função é oferecer uma boa interface para um único usuário. Exemplos comuns são o Windows 2000, o MacOS e o Linux.

O próximo nível é o de sistemas de tempo real. O tempo é um parâmetro fundamental. Eles são divididos em sistemas de tempo real crítico e de tempo real não crítico. Os sistemas de tempo real crítico possuem determinados instantes em que as ações devem ocorrer. Os sistemas de tempo real não crítico aceita um descumprimento ocasional de um prazo. VxWorks e QNX são exemplos bem conhecidos.

Descendo na escala, vemos os computadores de mão e embarcados. Os computadores de mão são computadores muito pequenos que realizam funções de agenda e livro de endereços. Os embarcados são computadores que controlam eletrodomésticos. Exemplos de sistemas operacionais são o PalmOS e o Windows CE.

Os menores sistemas operacionais são executados em cartões inteligentes. São dispositivos do tamanho de cartões de crédito que contêm uma CPU. Possuem restrições severas de consumo de energia e memória. Alguns são orientados a Java.

 

REVISÃO SOBRE HARDWARE DE COMPUTADORES

Processador - O ‘cérebro’ do computador é a CPU. Ela busca as instruções na memória, decodifica e executa. Assim são executados os programas. A CPU possui registradores internos de propósito geral que contêm variáveis e resultados temporários e registradores especiais visíveis ao programador. Entre os especiais, temos o contador de programa, que contém o endereço de memória da próxima instrução a ser buscada, o ponteiro de pilha, que aponta para o topo da pilha atual na memória, e o PSW(palavra de estado de programa), que contém os bits(dados) do código de condições.

Os modelos atuais de CPU tem recursos para executar mais de uma instrução por vez, são os processadores tipo: pipeline e superescalar.

Um CPU pipeline pode ter unidades separadas de busca, decodificação e execução.

Uma CPU superescalar possui um buffer que armazena as instruções até que elas possam ser executadas em uma de suas múltiplas unidades de execução.

Memória: - O segundo componente principal de um computador é a memória. Na hierarquia de camadas da memória, a camada superior consiste dos registradores da CPU. Eles são tão rápidos quanto a CPU, mas sua capacidade é inferior a 1KB. Os programas devem gerenciar os registradores. Abaixo, vem a camada da memória cache. Ela é controlada pelo hardware, e é mais lenta que os registradores e tem capacidade limitada pelo seu alto custo. A memória principal é a camada seguinte. É a famosa memória RAM, com capacidade de dezenas ou centenas de megabytes. Ela é responsável pelas requisições da CPU que não foram atendidas pela cache. A camada seguinte é o disco magnético, chamado de disco rígido. Sua capacidade é muito maior e seu custo é muito mais barato, porém seu acesso é muito mais lento em relação à RAM. A última camada é a fita magnética. É muito usada como cópia de segurança de dados. Seu custo é muito baixo e é removível.

Além desses tipos, há outros tipos de memória não voláteis. Por exemplo, a ROM, EEPROM e a flash RAM. A ROM é programada na fábrica e não pode ser alterada. É rápida e barata. A EEPROM e a flash RAM podem ser apagadas e reescritas. Quando temos vários programas na memória, dois problemas devem ser resolvidos: a proteção dos programas e núcleos, e a realocação. Para isso, usamos dois registradores especiais, o registrador-base e o registrador-limite. Eles são usados pelo hardware para fazer verificação e mapeamento da memória.

Dispositivos de E/S: - Os dispositivos de E/S são constituídos de: controlador e o dispositivo propriamente dito. O controlador é um chip ou conjunto de chips em uma placa que controla fisicamente o dispositivo. O dispositivo possui interface simples, ajudando a padronização. Já que cada tipo de controlador é diferente, diferentes programas são necessários para controlá-los. O programa que se comunica com um controlador é chamado driver de dispositivo. A entrada e a saída podem ser realizadas de três maneiras diferentes. No método mais simples, um programa de usuário faz uma chamada ao sistema, a qual o núcleo traduz em uma chamada ao driver apropriado. No segundo método, o driver inicia o dispositivo e pede a ele que o interrompa quando terminar. O terceiro método, utiliza um chip especial de acesso direto à memória que controla o fluxo de bits entre a memória e algum controlador sem intervenção constante da CPU.

Barramento: - À medida que os processadores e memórias tornaram-se mais rápidos foram incluídos barramentos adicionais, tanto para dispositivos de E/S mais velozes quanto para o tráfego entre memória e CPU. Um sistema Pentium avançado tem oito barramentos (cache, local, memória, PCI, SCSI, USB, IDE e ISA), cada um com diferentes funções e taxas de transferência. O sistema operacional deve configurá-los e gerenciá-los. O barramento ISA é usado para efeito de compatibilidade com as placas de E/S antigas e lentas. O barramento PCI é usado pela maioria dos dispositivos de E/S de alta velocidade. O barramento local faz a comunicação entre a CPU e o chip PCI. O barramento cache conecta a cache à CPU. O barramento IDE acopla discos e CD-ROMs ao sistema. O barramento USB conecta todos os dispositivos lentos de E/S. O barramento SCSI conecta discos rápidos, scanners e outros dispositivos que precisem de considerável largura de banda.

 

CONCEITOS SOBRE SISTEMAS OPERACIONAIS

PROCESSO : - Um processo é um programa em execução. Associado ao processo está seu espaço de endereçamento e um conjunto de registradores com as informações necessárias para executar um programa. Quando suspenso, esse processo é constituído de seu espaço de endereçamento e em sua entrada na tabela de processos. Um processo pode criar um ou mais processos dando origem a processos filhos e formando uma hierarquia de processos.

DEADLOCK: - Um deadlock é uma situação da qual dois ou mais processos que estão interagindo não conseguem sair.

GERENCIAMENTO DE MEMÓRIA: - Todo computador tem uma memória principal que é usada para guardar os programas em execução. Em um sistema operacional muito simples, somente um programa por vez ocupa a memória. Para executar um segundo programa, o primeiro deve ser removido e o segundo tem de ser alocado na memória. Sistemas operacionais mais sofisticados permitem que múltiplos programas residam na memória principal ao mesmo tempo. O sistema operacional gerencia e protege a memória principal.

ENTRADA E SAÍDA: - Os dispositivos de entrada e saída servem para o usuário dizer o que deve ser feito e depois verificar o resultado do trabalho finalizado. O sistema operacional gerencia esses dispositivos. Ele possui um subsistema de E/S para gerenciar esses dispositivos.

ARQUIVOS: - Um diretório é um grupo de arquivos. Entradas de diretórios podem ser arquivos ou outros diretórios. Esse modelo dá origem ao sistema de arquivos. Para criar ou remover arquivos ou diretórios são usadas as chamadas ao sistema. Cada arquivo dentro da hierarquia de diretórios pode ser especificado fornecendo-se o caminho e o diretório-raiz. Para acessar arquivos em uma unidade de disco flexível é necessário fazer uma montagem (chamada mount) para que esses arquivos façam parte da hierarquia de arquivos.

SEGURANÇA: - Os computadores contêm muitas informações que os usuários querem manter confidenciais. Cabe ao sistema operacional gerenciar o sistema de segurança para que os arquivos sejam acessíveis apenas por usuários autorizados. Além da proteção de arquivos, há muitos outros tópicos. Proteger o sistema contra intrusos indesejáveis, vírus por exemplo, é um deles.

INTERPRETADOR DE COMANDOS: - Não faz parte do sistema operacional. Ele é a interface principal entre o usuário à frente de seu terminal e o sistema operacional, a menos que o usuário esteja usando uma interface gráfica de usuário. O interpretador tem o terminal como entrada-padrão e saída-padrão.

CHAMADAS AO SISTEMA: - Uma chamada ao sistema é a interface entre o sistema operacional e os programas do usuário. Chamadas são usadas para gerenciar processos, arquivos, diretórios e outros. Para criar um novo processo em Unix usamos uma chamada fork. Ela gera uma cópia exata do processo original. Depois dela acontecer, o processo original e sua cópia seguem caminhos separados.

Os processos em Unix têm suas memórias divididas em três segmentos: texto (código do programa), dados (variáveis) e pilha. O segmento de dados cresce para cima e a pilha cresce para baixo, em uma lacuna não usada. A pilha cresce automaticamente, mas os dados crescem através de uma chamada brk.

Para ler ou escrever um arquivo, deve-se primeiro usar uma chamada open. Ela especifica o nome do arquivo e o modo de abertura. Para criar um novo arquivo é usado O_CREAT. Para fechar é usado close. Para ler e escrever arquivos, usa-se depois uma chamada read ou write. Ao se ler um arquivo sequencialmente, aponta-se para o próximo byte a ser lido. A chamada Iseek altera o valor do ponteiro de posição, para que chamadas subsequentes possam começar em qualquer ponto do arquivo. Para cada arquivo, o Unix registra o modo do arquivo, o tamanho e o momento da última modificação. A chamada stat mostra essas informações.

Para criar e deletar diretórios vazios usa-se as chamadas mkdir e rmdir. A chamada link permite que um mesmo arquivo apareça com dois ou mais nomes, inclusive em diretórios diferentes. Ela é usada para permitir que vários usuários compartilhem um arquivo comum, com cada um deles tendo o arquivo aparecendo em seu próprio diretório, possivelmente com nomes diferentes.

Enquanto o Unix consiste em um código que faz uma coisa ou outra, executando chamadas ao sistema para realizar certos serviços, o Windows é dirigido por eventos. O programa principal espera acontecer algum evento e então chama um procedimento para tratá-lo. Os tratadores de eventos são então chamados para processar o evento, atualizar a tela e o estado interno do programa. As chamadas de biblioteca e as chamadas reais ao sistema são bastante desacopladas.

API WIN32 DO WINDOWS: - A Microsoft definiu um conjunto de procedimentos, denominado API Win32 para que os programadores tivessem acesso aos serviços do sistema operacional. A API Win32 possui enorme número de chamadas para gerenciar aspectos da interface gráfica GUI. Essa interface é composta de chamadas ao sistema.

ESTRUTURA DOS SISTEMAS OPERACIONAIS: - A organização monolítica é a estrutura de sistemas operacionais mais comum. O sistema monolítico é formado de um procedimento principal, procedimentos de serviços e procedimentos utilitários. O procedimento principal invoca o procedimento do serviço requisitado. Os procedimentos de serviço que executam as chamadas ao sistema. Os procedimentos utilitários auxiliam os procedimentos de serviço. A estrutura por camadas, organiza o sistema operacional em uma hierárquia de camadas, o sistema THE é um sistema formado de seis camadas. A camada 0 trata da alocação do processador e da multiprogramação. A camada 1 trata do gerenciamento de memória e do tambor magnético. A camada 2 trata da comunicação operador-processo. A camada 3 trata do gerenciamento de entrada/saída. A camada 4 é formada pelos programas do usuário. A camada 5 é formada pelo processo operador.

na estrutura por Máquina Virtual, o sistema VM/370 é um sistema com separação completa entre as funções de multiprogramação e máquina estendida. O coração do sistema, o monitor de máquina virtual, é executado diretamente sobre o hardware e implementa a multiprogramação, provendo várias máquinas virtuais, que são cópias exatas do hardware. Cada máquina virtual executa seu próprio sistema operacional ou o CMS, um sistema operacional monousuário interativo dedicado a usuários interativos em tempo compartilhado. Quando um programa CMS executa uma chamada ao sistema, ela é desviada para o sistema operacional que executa em sua própria máquina virtual, como se estivesse executando sobre uma máquina real e não sobre uma máquina virtual. Com a separação completa das funções de multiprogramação e de máquina estendida, há uma divisão em partes mais simples, flexíveis e fáceis de serem mantidas.

Um outro sistema entrega a cada usuário um clone do computador real, mas com um subconjunto de recursos. Na camada mais inferior desse sistema, executando em modo núcleo, há um programa chamado exonúcleo. Ele aloca recursos às máquinas virtuais e verifica as tentativas de usá-las para assegurar que cada máquina use apenas os seus recursos. Cada máquina virtual, em nível de usuário, pode executar seu próprio sistema operacional, só que cada uma está restrita a usar somente os recursos que pediu e que foram alocados. A vantagem é que uma camada de mapeamento é poupada. O exonúcleo precisa somente manter o registro de para qual máquina virtual foi atribuído qual recurso. Esse método também separa, com menor custo, a multiprogramação (no exonúcleo) do código do sistema operacional do usuário (no espaço do usuário).

O modelo cliente-servidor é um sistema onde um processo de usuário (processo cliente) envia a requisição a um processo servidor, que executa o trabalho e envia a resposta. Divide-se o sistema operacional em várias partes pequenas e gerenciáveis. Todos os servidores são executados como processos em modo usuário, não tendo acesso direto ao hardware. Consequentemente, se um erro ocorrer no servidor de arquivos, não afetará toda a máquina. Outra vantagem é a sua adaptabilidade ao uso em sistemas distribuídos. Se um cliente se comunica com um servidor enviando-lhe mensagens, o cliente não precisa saber se a mensagem é tratada localmente em sua própria máquina ou se ela foi enviada pela rede a um servidor em uma máquina remota. Para o cliente, a mesma coisa acontece em ambos os casos: uma requisição foi enviada e uma resposta foi devolvida.