SISTEMAS OPERACIONAIS Tópico 4 Estrutura do Sistema Operacional Prof. Rafael Gross prof.rafaelgross@fatec.sp.gov.br
FUNÇÕES DO NUCLEO As principais funções do núcleo encontradas na maioria dos sistemas comerciais estão listadas a seguir: - tratamento de interrupções e exceções; - criação e eliminação de processos e threads; - sincronização e comunicação entre processos e threads; - escalonamento e controle dos processos e threads; - gerência de memória; - gerência do sistema de arquivos; - gerência dos dispositivos de E/S; - suporte a redes locais e distribuídas; - contabilização do uso do sistema; - auditoria e segurança do sistema.
Modos de Acesso Em Geral os processadores possuem 2 modos de acesso: Modo usuário- Quando o processador está nesse modo só pode executar instruções conhecidas como não privilegiadas. Modo Kernel Nesse modo pode ter acesso ao conjunto total da instrução no processador. Instruções previlegiadas : São instruções que só devem ser executadas pelo sistema operacional ou sob sua supervisão, impedindo assim a ocorrencia de problemas de segurança e integridade do sistema.
ROTINAS DO SISTEMA OPERACIONAL E SYTEM CALLS As rotinas do sistema operacional compoem o núcleo do sistema, oferecendo serviços aos usuários e suas aplicações. Rotinas possuem um acesso privilegiado para poderem ser executas pelo processador isso exige que estejam em modo kernel, que exige um mecanismo de proteção garantindo a confiabilidade do sistema. O controle das rotinas no sistema operacional é chamado de Sytem Calls. Sytema Calls verifica se aplicação possui privilégios e essa verificação garante uma melhor segurança nas operações que iram ser realizadas pelo processador.
CHAMADA AS ROTINAS DO SISTEMA OPERACIONAL As rotinas do sistema operacional e o mecanismo de Sytem call pode ser entendido como uma porta de entrada para o núcleo do sistema operacional e seus serviços. Funçoes Gerência de processo e Threads Gerência de memória Gerência de arquivos Gerência de Dispositivo System Calls Criação e eliminação de Threads Alteração das caracteristicas de processo e Threads Alocação e desalocação de memória Criar, eliminar arquivos e diretórios Operação de entrada e saida em dispositivos.
Interpretador de Comandos (Shell) O interpretador de comando é um processo que perfaz a interface do usuário com o sistema operacional. Este processo lê o teclado a espera de comandos, interpreta-os e passa seus parâmetros ao sistema operacional. Serviços como login/logout, manipulação de arquivos, execução de programas, etc, são solicitados através do interpretador de comandos.
LINGUAGEM DE COMANDO linguagem de comando ou linguagem de controle, permite ao suário se comunique de uma forma simples com o sistema peracional. s comando usados são interpretados pelo Shell, ou interpretador e comandos, que verifica a sintaxe do comando e faz chamada a otina. Unix Bourne Shell, C Shell, Korn Shell xemplo: COMANDO dir cd type del mkdir DESCRIÇÃO Lista os arquivos e diretorios Altera o diretório atual Exibe o conteudo do arquivo Elimina arquivos Cria diretório
ATIVAÇÃO / DESATIVAÇÃO do SISTEMA Boot loader- Localizado na memória ROM da máquina. Processo de desativação na maioria dos sistema operacionais exite o processo de shutdown, com isso o sistema operacional é desativado de uma maneira ordenada, garantindo desta forma, sua integridade
ARQUITETURA DO NÚCLEO Os primeiro sistemas operacionais foram desenvolvido integralmente em assembly que tinha cerca de 1 milhão de instruções, nos dias atuais com aplicação de liguagem de alto nivel os sistemas operacionais tem por volta de 20 milhões de instruções. A estrutura do núcleo do sistema operacional, a maneira como o código do sistema é organizado e interelaciona como seus diversos componentes.
Arquitetura Monolítica A arquitetura monolítica pode ser comparada com uma aplicação formada por vários módulos que são compilados separadamente e depois linkados (ligados), formando um grande e único programa executável, onde os módulos podem interagir livremente. Os primeiros sistemas operacionais foram desenvolvidos com base neste modelo, o que torna seu desenvolvimento e, principalmente, sua manutenção bastante difícil. Devido a sua simplicidade e bom desempenho, a estrutura monolítica foi adotada no projeto MS-DOS e nos primeiros sistemas UNIX.
Arquitetura Monolítica
Arquitetura de Camadas Com o aumento da complexidade e do tamanho do código do sistema operacionais, técnicas de programação estruturada e modular foram incorporadas ao seu projeto. Na arquitetura de camadas, o sistema é dividido em níveis de sobrepostos. Uma grande vantagem desse modelo é isolar as funções do sistema operacional, facilitando sua programação e depuração, além de criar uma hierarquia de níveis de acesso protegendo as camadas mais internas. Uma desvantagem é o desempenho. Cada nova camada implica em mudanças no modo de acesso. Atualmente a maioria dos sistemas operacionais comerciais utiliza o modelo de duas camadas, onde existem os modos de acesso usuário (não-privilegiado) e kernel (privilegiado). As maiorias das versões do Unix e o Windows 2000 da Microsoft estão baseados neste modelo.
Máquina Virtual Um sistema computacional é formado por níveis, onde a camada de nível mais baixa é o hardware. Acima desta camada encontramos o sistema operacional, que oferece suporte às aplicações. O modelo de máquina virtual, ou virtual machine (VM), cria um nível intermediário entre o hardware e o sistema operacional, denominado gerência de máquinas virtuais. Este nível cria diversas máquinas virtuais independentes, onde cada uma oferece uma cópia virtual do hardware, incluindo os modos de acesso, interrupções, dispositivos de E/S, etc. Como cada máquina virtual é independente das demais, é possível que cada VM tenha seu próprio sistema operacional e que seus usuários executem suas aplicações como se todo o computador estivesse dedicado a cada um deles.
Qualquer sistema operacional pode suportar uma aplicação Java, desde que exista uma JVM desenvolvida para ele. Desta forma, a aplicação não precisa ser recompilada para cada sistema computacional, tornando-se independente do hardware e do sistema operacional utilizados. A desvantagem deste modelo é seu menor desempenho se comparado a uma aplicação compilada e executada diretamente em uma arquitetura específica. Máquina Virtual Além de permitir a convivência de sistemas operacionais diferentes no mesmo computador, este modelo cria o isolamento total entre cada VM, oferecendo grande segurança para cada máquina virtual. Uma desvantagem desta arquitetura é sua grande complexidade, devido à necessidade de se compartilhar e gerenciar os recursos do hardware entre as diversas VMs. Outro exemplo de utilização desta arquitetura ocorre na linguagem Java, desenvolvida pela Sun Microsystems. Para se executar um programa em Java é necessário uma máquina virtual Java (Java Virtual Machine JVM).
Arquitetura Microkernel Uma tendência nos sistemas operacionais modernos é tornar o núcleo do sistema operacional menor e mais simples possível. Para implementar esta idéia, os serviços do sistema são disponibilizados através de processos, onde cada um é responsável por oferecer um conjunto específico de funções, como gerência de arquivos, gerência de processos, gerência de memória e escalonamento. O conceito de arquitetura microkernel surgiu no sistema operacional Mach, na década de 1980, na Universidade Carnegie- Mellon. O núcleo do sistema Mach oferece basicamente quatro serviços: gerência de processos, gerência de memória, comunicação por troca de mensagens e operações de E/S, todos em modo usuário.
Arquitetura Microkernel Sempre que uma aplicação deseja algum serviço, é realizada uma solicitação ao processo responsável. A aplicação solicitante é chamada de cliente, enquanto que o processo que responde à solicitação é chamado de servidor. A principal função do núcleo é realizar a comunicação, ou seja, a troca de mensagens entre o cliente e o servidor. A utilização deste modelo permite que os servidores executem em modo usuário, ou seja, não tenham acesso direto a certos componentes do sistema. Apenas o núcleo do sistema, responsável pela comunicação entre os clientes e servidores, executa no modo kernel. Como conseqüência, se ocorrer um erro em um servidor, este poderá parar, mas o sistema não ficará inteiramente comprometido, aumentando assim a sua disponibilidade.