Sistemas Operacionais Estrutura do Sistema Operacional Estrutura do Sistema Operacional Conjunto de rotinas executadas sem ordem préestabelecida Execução sob demanda (eventos assíncronos) Tarefas do próprio SO Cada rotina oferece um serviço Conjunto das rotinas Estrutura do Sistema Operacional O S.O. é estruturado por um conjunto de rotinas que oferecem serviços aos usuários do sistema e suas aplicações. As rotinas de um S.O não possuem um fluxo de execução sequancial. Esse conjunto de rotinas é chamado de kernel (núcleo). Estrutura do Sistema Operacional Definição do kernel: Ele representa a camada de software mais próxima do hardware, sendo responsável por gerenciar os recursos do sistema computacional como um todo. Estrutura do Sistema Operacional kernel Estrutura do Sistema Operacional kernel Estrutura do Sistema Operacional kernel Estrutura do Sistema Operacional Definição do kernel: Possui o uso privilegiadas; exclusivo de instruções Estrutura do Sistema Operacional funções do kernel: tratamento de interrupções; criação e eliminação de processos; sincronização e comunicação entre processos; escalonamento e controle dos processos; Criação, agendamento e finalização de processos; gerência de memória; Alocação e liberação de memória; gerência do sistema de arquivos; operações de I/O; contabilização de segurança do sistema. Operações de entrada e saída com dispositivos periféricos (discos, interface serial -- mouse, p.ex., interface paralela -- impressoras), Estrutura do Sistema Operacional System Call’s: É o mecanismo usado pelo programa para requisitar um serviço do sistema operacional, ou mais especificamente, do kernel do sistema operacional. São Funções que um programador pode chamar para executar os serviços do sistema operacional. Interface entre os processos e o SO – Kernel Cada serviço do S.O. tem sua rotina (system call) Estrutura do Sistema Operacional System Call’s: Disponíveis diretamente em linguagem de montagem Incorporadas ao compilador nas linguagens de alto nível Chamas feitas diretamente : C, C++ Passagens de parâmetros: Registradores; Pilhas do sistemas; Memoria; Estrutura do Sistema Operacional System Call’s: Biblioteca (APIs) Dividida em: Controle de processos (exp: Create process, end, abort, execute) Manipulação de arquivos (exp: Create file, open, close, read, write) Manipulação de sispositivos (exp:request device, read, write) Manipulação de informação (exp: get time, set time, get file atributes) Comunicação (exp: message, etc) create comunication connection, send Estrutura do Sistema Operacional System Call’s: Biblioteca (APIs) : Reduz a dependência entre o sistema operacional e a aplicação, e aumenta a "portabilidade", pois pode sofrer alterações significativas sem quebrar a compatibilidade. Estrutura do Sistema Operacional System Call’s: Aplicação System Calls Kernel HA RD WA R E Estrutura do Sistema Operacional System Call’s: Estrutura do Sistema Operacional Grupo das System Call’s: Gerência de processos Criação e eliminação de processos; Alteração das características do processo; Sincronização e comunicação entre processos. Estrutura do Sistema Operacional Grupo das System Call’s: Gerência de Memória Alocação e desalocação de memória. Estrutura do Sistema Operacional Grupo das System Call’s: Gerência de I/O Operações de I/O; Manipulação de arquivos e diretórios. Estrutura do Sistema Operacional Modos de acesso: Existem certas instruções que não podem ser colocadas diretamente à disposição das aplicações, pois a sua utilização indevida ocasionaria sérios problemas à integridade do sistema. Estrutura do Sistema Operacional System Call’s: Modos de acesso: Modo usuário – usado por instruções não-privilegiadas Modo supervisor ou kernel – usado por instruções privilegiadas Qualquer ação que envolva o uso de instruções privilegiadas deve ser solicitada por intermédio de system calls Estrutura do Sistema Operacional Organização do código do SO (Estrutura): Sistemas Monolíticos Em Camadas Maquinas Virtuais Cliente Servidor Estrutura do Sistema Operacional Sistemas Monolíticos O SO é organizado como uma coleção de processos seqüenciais cooperantes, que recebem as solicitações dos usuários (chamadas de sistema), as executam e devolvem um resultado. São os mais comuns de serem encontrados, podem ser comparados a uma aplicação formada por vários procedimentos compilados separadamente e linkados formando um único e grande executável. Estrutura do Sistema Operacional Sistemas Monolíticos Os Procedimentos não estão estruturados de uma forma especifica. É formado por uma coleção de procedimentos, com interface e funcionalidades bem definidas Qualquer procedimento pode fazer chamadas a qualquer procedimento Conjunto de rotinas que interagem livremente Estrutura do Sistema Operacional Sistemas Monolíticos Acoplamento forte Alto desempenho Ruim de manter e alterar o código Nota: Análogo a aplicação com vários módulos separados e ligados para formar um executável Exp. MS-DOS Estrutura do Sistema Operacional Sistemas Camadas Um sistema em camadas divide o sistema operacional em camadas sobrepostas, cada modulo oferece um conjunto de funções que podem ser utilizadas por outras camadas mas apenas os módulos superiores podem fazer referência aos inferiores. Estrutura do Sistema Operacional Sistemas Camadas Camadas com funções especificas Cada camada utiliza os serviços da camada inferior e fornece serviços a camada superior A hierarquia de níveis protege as camadas internas Prejudica a performance do sistema Técnicas de programação estruturada e modular Estrutura do Sistema Operacional Sistemas Camadas Tem como vantagem poder isolar algumas funções além de criar uma hierarquia de níveis de modos de acesso protegendo as camadas mais internas. Nota: Neste tipo de sistema as camadas mais internas possuem maiores privilégios. Estrutura do Sistema Operacional Sistemas Camadas Isolamento de funções Facilidade de depuração / manutenção Hierarquia de níveis Nota: Isolamento de funções facilita manutenção e cria uma hierarquia de modos de acesso Estrutura do Sistema Operacional Estrutura do Sistema Operacional Sistemas Cliente-Servidor A idéia principal do S.O cliente servidor é tornar o seu núcleo menor e mais simples possível. O sistema é dividido em processos, sendo cada um responsável por oferecer um conjunto de serviços(Exp. serviços de arquivo, criação de processos, de memória, de escalonamento) Sempre que uma aplicação necessita de um serviço ela solicita ao processo responsável, neste caso a aplicação que solicita um serviço é chamada de cliente enquanto o processo que responde a essa chamada é chamado de servidor. A função do núcleo do sistema é realizar a comunicação, ou seja, a troca de mensagens entra o cliente e o servidor. Estrutura do Sistema Operacional Sistemas Cliente-Servidor - Características Núcleo do SO menor e mais simples Serviços disponibilizados por processos dedicados em modo usuário Solicitação de serviços através de menssagens Microkernel tem a função de prover a troca de mensagens entre processos SO com maior protabilidade e mais confiavel Filosofia de Sistemas Distribuidos Arquitetura cliente-servidor Processo cliente solicita serviço ao processo servidor deste serviço Apenas o microkernel executa em modo kernel Estrutura do Sistema Operacional Sistemas Cliente-Servidor Como os servidores se comunicam através de mensagens, não importa se os cliente e servidores estão sendo processados por um único processador ou por vários. Estrutura do Sistema Operacional em Modo kernel ag ns me Modo usuário Microkernel Hardware me ns ag em Estrutura do Sistema Operacional Estrutura do Sistema Operacional Sistemas Cliente-Servidor - Vantagens Escalabilidade: não importa se clientes e servidores são processados em sistemas com um único processador, com vários processadores ou em ambientes de sistemas distribuídos. Esta característica permite adicionar servidores conforme o número de clientes aumenta. Isolamento de funções: Maior confiabilidade e facilidade de depuração. Estrutura do Sistema Operacional Sistemas Cliente-Servidor – Desvantagens Desempenho: Necessidade de mudança no modo de acesso a cada comunicação entre clientes e servidores. Estrutura do Sistema Operacional Máquina Virtual Máquinas virtuais são abstrações construídas por um monitor de máquinas virtuais, que distribui os recursos de hardware, permitindo a existência de vários ambientes de execução. Estrutura do Sistema Operacional Máquina Virtual Modelo de VM cria um nível intermediário entre hardware e SO denominado Gerência de Máquinas Virtuais Estrutura do Sistema Operacional Máquina Virtual Formada por recursos virtuais que são mapeados para recursos reais pelo monitor. Uma máquina com grande capacidade de memória, disco, etc. pode ser particionada em várias máquinas virtuais, com menos recursos que a máquina real. O acesso a uma página de memória na máquina virtual é mapeado (traduzido) em um acesso a uma página de memória real. As instruções da máquina virtual são traduzidas para instruções da máquina real e executadas. Estrutura do Sistema Operacional Máquina Virtual Máquina virtual uma simulação exata de um sistema operacional. Cada usuário executa seus programas armazena seus dados, etc. sem interferência e sem interferir com os outros usuários. VM n VM 2 VM 1 Estrutura do Sistema Operacional Ap 1 Ap2 Apn SO1 SO2 SOn HV1 HV2 HVn Gerência de Máquinas Virtuais Hardware Estrutura do Sistema Operacional Máquina Virtual Java Aplicação Máquina Virtual Java Sistema Operacional Hardware