• Nenhum resultado encontrado

2.2 O Conceito de Sistema Operacional

2.2.1 Outros Conceitos Que Formam o Modelo Atual

O ponto de partida desta análise é o significado da definição apresentada por Tanenbaum (1987),uma vez que a discussão conceitual que se segue está a ele associada. Para tanto, cada trecho da definição antes apresentada é discutido a seguir:

• “Uma camada de software”: o sistema operacional é um programa de computador que, como qualquer outro, pode apresentar os problemas de qualidade e produtividade tão amplamente discutidos pela área de Engenharia de Software14. Portanto, um projeto de

14Segundo Deitel(1990,pg 15), os problemas relacionados ao desenvolvimento de sistemas operacionais na

década de 60 contribuíram significativamente para o surgimento da área de Engenharia de Software, uma vez que, até o início da década de 70, os fabricantes só vendiam hardware. O software e a documentação eram fornecidos como bônus, sem custos e, portanto, sem responsabilidade por parte dos fabricantes de

sistema operacional está sujeito às mesmas considerações relativas às atividades de criação, entrega e manutenção de sistemas de software.

• “que permite a abstração”: Segundo Larman(2000)apud Rumbaugh(1997),um sistema, do mundo real ou de software, é, de modo geral, excessivamente complexo; portanto é necessário decompô-lo em pedaços para melhor compreensão e administração de sua complexidade. Estes pedaços podem ser representados como modelos que descrevem e abstraem aspectos essenciais do sistema. Desse modo, um passo útil na construção de um sistema de software é, primeiro, criar modelos que permitam a organização e comunicação dos detalhes do problema do mundo real com o qual o sistema está relacionado, bem como do sistema a ser construído(LARMAN,2000).Como as aplicações que serão executadas num sistema operacional só têm acesso às funcionalidades disponibilizadas pelas abstrações fornecidas pelo modelo, a estruturação do mesmo pode ser um fator determinante na qualidade, robustez e eficiência dos produtos finais.

• “Que permite o compartilhamento de recursos”: Neste sentido, o sistema operacional é o principal controlador dos recursos físicos disponíveis, tais como: processador, memória e periféricos. A principal finalidade é homogeneizar e compatibilizar as velocidades e formas de operação, em alguns casos extremamente discrepantes. Segundo Deitel (1990), como gerente de recursos, o modelo de sistema operacional estabelece a forma de interação com o usuário (user interface) e gerencia o compartilhamento dos recursos físicos (hardware) e lógicos (dados) entre aplicações de um mesmo usuário ou de usuários diferentes.

• “De forma segura”: Compartilhamento e proteção são requisitos conflitantes. O compartilhamento de recursos entre usuários torna a utilização dos equipamentos mais eficiente e flexível. Contudo, este mesmo requisito torna mais vulnerável o acesso ao conteúdo de dados neles produzidos e armazenados. Em função disto, o aspecto segurança é um dos que atualmente demanda grandes investimentos em termos de pesquisa, no sentido de produzir soluções mais eficientes e eficazes.

Alguns outros conceitos também são importantes e precisam ser retomados15. O primeiro refere-se ao conceito de núcleo. Segundo Oliveira,Carissimi e Toscani (2000), a arquitetura de um sistema operacional corresponde à imagem que o usuário tem dele. Esta imagem é definida pela interface através da qual o usuário acessa os serviços proporcionados pelo sistema operacional. E esta interface é formada pelas chamadas de sistema e pelos programas de sistema. Os programas solicitam serviços ao sistema operacional através de chamadas de sistema. A parte do sistema operacional responsável por implementar o conjunto de chamadas de sistema, é normalmente referida como:

núcleo ou kernel. O tamanho desta porção de código é um dos fatores que determinam a

classificação nas várias categorias a serem apresentadas na seção 2.4. Portanto, um núcleo de sistema operacional corresponde ao conjunto de procedimentos que

hardware. Estes forneciam listas de erros (bugs) conhecidos como “cortesia”. A partir do momento em que aIBMpassou a vender software e hardware, é que surgiu a indústria de software independente e discussões mais amplas sobre questões relativas ao software.

15 Não se pretende, aqui, detalhar os conceitos de sistemas operacionais, mas estabelecer uma base

implementam os serviços que possibilitam a um programador desenvolver uma aplicação sem preocupar-se com os detalhes específicos de hardware. À lista dos serviços disponibilizados pelo sistema operacional, dá-se o nome de Interface com o programa de aplicação - comumente referida como API(OLIVEIRA,CARISSIMI e TOSCANI, 2000).

Um segundo conceito importante é relacionado à gerência de memória16 e diz respeito ao escopo de memória visível por uma aplicação. Geralmente o núcleo do sistema pode acessar qualquer endereço de memória física. No entanto, seguindo a mesma filosofia adotada para proteger o código do núcleo, geralmente a memória física é virtualizada (quando há suporte de hardware adequado através de um componente denominado Memory Management Unit (MMU) para proteger as aplicações entre si e, assim, obter-se um maior grau de confiabilidade no sistema. O espaço de endereços de memória a que uma aplicação tem acesso denomina-se espaço de endereçamento (address space).

Um terceiro conceito importante relaciona-se à diferenciação entre um programa (seqüência de instruções) e a sua efetiva execução. Segundo Oliveira, Carissimi e Toscani (2000),“não há uma definição objetiva, aceita por todos, para a idéia de processo.

Na maioria das vezes um processo é definido como um programa em execução”. De forma geral, durante a execução de um programa ele passa por vários estados lógicos, tais como: executando (quando detém efetivamente o processador), pronto para executar (quando aguarda em uma das filas do sistema para receber o processador), esperando (quando aguarda em alguma das filas do sistema pela ocorrência de algum evento – ex: término de uma operação de entrada/saída). O núcleo do sistema é o módulo responsável pelo escalonamento dos vários processos a serem executados em determinado momento.

Segundo Machado e Maia (2002,pág.83), a partir do desenvolvimento do sistema

Toth, em 1979, foi introduzido o conceito de processos leves (lightweight) em que o

espaço de endereçamento de um processo era compartilhado por vários programas. Apesar de revolucionária, a idéia não foi utilizada comercialmente e somente em meados da década de 80, com o desenvolvimento do sistema Mach (RASHID et al., 1989), ficou clara a separação entre o conceito de processo e thread. A partir do conceito de múltiplos

16Não é objetivo deste trabalho detalhar os aspectos relativos ao funcionamento dos esquemas de gerência

de memória virtual. O leitor que pretender aprofundar-se no assunto pode consultar Deitel (1990) e Tannenbaum (1987).

threads, é possível projetar e implementar aplicações concorrentes de forma eficiente, pois um processo pode ter partes diferentes do seu código sendo executadas em paralelo, com um menor overhead do que usando vários processos. Como as threads de um mesmo processo compartilham o mesmo espaço de endereçamento, a comunicação entre threads não envolve mecanismos lentos de intercomunicação entre processos (interprocess communication - IPC), aumentando, conseqüentemente, o desempenho da aplicação(MACHADO e MAIA, 2002).

A Tabela 1 ilustra a diferença de performance entre a implementação do conceito de processo e do conceito de thread, em termos de tempo de execução.

Tabela 1 - Latência de processos e threads

Implementação Tempo de criação (µs) Tempo de sincronização (µs)17

Processo 1700 200

Thread 52 66

Fonte: Adaptado de Vahalia apud Machado e Maia(2002,pág.88)

Um quarto conceito refere-se aos estados de execução do núcleo do sistema operacional. Havendo suporte de hardware adequado (anéis de proteção), é possível proteger o código do núcleo de forma a evitar que erros em programas de aplicação possam corromper o conteúdo de estruturas de dados nele mantidas e, assim, prejudicar seu funcionamento. Quando isto é possível, o código do núcleo que executa sob proteção do hardware é dito como executando em modo supervisor (kernel); por conseguinte, o código que executa fora deste anel de proteção é dito executando em modo usuário. Este conceito é importante porque a transição do modo usuário para o modo supervisor demanda vários ciclos de cpu, o que pode comprometer a eficiência de um núcleo de sistema operacional. A linha que separa o código que executa em modo usuário, daquele que executa em modo supervisor, é denominada de linha vermelha (red line). Isto porque a passagem de um modo de execução para outro geralmente consome muitos ciclos de processador, o que pode comprometer a performance do sistema como um todo.

A seguir é apresentado o modelo evolutivo proposto por Siewiorek, Bell e Newell

(1983) como forma de caracterizar o processo evolutivo de hardware. Esta análise é 17µs = microssegundos.

importante uma vez que, como o núcleo de um sistema operacional é o nível de software mais próximo do hardware, alterações na construção do hardware conduzem a alterações na forma como as abstrações de hardware são apresentadas aos usuários de níveis superiores ao sistema operacional.