DESENVOLVIMENTO DE SISTEMAS PARA INTERNET 4. ESTRUTURA DO SISTEMA OPERACIONAL Disciplina: Sistemas Operacionais Facilitador: Alisson Cleiton [email protected] 06/05/2009 Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional 4.1 Introdução É a maneira como o código do sistema é organizado e como seus diversos componentes estão inter-relacionados Existem basicamente cinco abordagens: – System Calls – Modos de Acesso – Sistemas Monolíticos – Sistemas em Camada – Sistemas Cliente-Servidor Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional 4.1 Introdução Um sistema do tamanho e com a complexidade que é um moderno sistema operacional deve ser cuidadosamente construído para que funcione bem e posssa ser facilmente modificado. O sistema operacional é formado por um conjunto de rotinas que oferecem serviços aos usuários, às suas aplicações e também ao próprio sistema. Esse conjunto de rotinas é denominado núcleo do sistema ou Kernel. Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional 4.1 Introdução As principais funções do núcleo do sistema operacional são: Tratamento de interrupções e exceções; Criação e eliminação de processos; Sincronização e comunicação entre processos; Escalonamento e controle de processos; Gerência de memória; Gerência do sistema de arquivos; Gerência de dispositivos E/S; Suporte a redes locais e distribuídas; Contabilização do uso do sistema; Auditoria e segurança do sistema Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional 4.2.1 System calls Nos sistemas operacionais há a preocupação de oferecer segurança ao núcleo do sistema. As system calls são portas de acesso ao núcleo do sistema operacional e a seus serviços. Sempre que um usuário ou aplicação desejar algum serviço do sistema, é realizada uma chamada a uma de suas rotinas através da uma system call (chamada ao sistema). O termo system call é tipicamente utilizado em sistemas Unix, porém em outros sistemas o mesmo conceito é apresentado com diferentes nomes, como system services no OpenVMS e Application Program Interface (API) no Windows da Microsoft. Para cada serviço disponível há uma system call Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional 4.2.1 System calls Para cada serviço disponível existe uma system call associada e cada sistema operacional tem seu próprio conjunto de chamadas, com nomes, parâmetros e formas de ativação específicos. Através dos parâmetros fornecidos na System Call, a solicitação é processada e é enviada uma resposta à aplicação juntamente com um estado de conclusão, indicando se houve algum erro. Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional 4.2.1 System calls As system calls podem ser dividias por grupos de funções: Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional 4.2.2 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. Existem certas instruções que só devem ser executadas pelo sistema operacional ou sub sua supervisão As instruções que têm o poder de comprometer o sistema são conhecidas como instruções privilegiadas, enquanto as instruções não privilegiadas são as que não oferecem riscos ao sistema. Para que uma aplicação possa executar uma instrução privilegiada, é necessário que no processador seja implementado o mecanismo de proteção conhecido como modos de acesso. Existem, basicamente, dois modos de acesso implementados pelos processadores: modo usuário e modo kernel. Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional 4.2.2 Modos de Acesso Modo Usuário: ● Executa apenas instruções não – privilegiadas; ● Acesso a um número restrito de instruções; Modo Kernel: ● Executa instruções privilegiadas. ● Acesso total ao conjunto de instruções do processador. O modo de acesso de uma aplicação é determinado por um conjunto de bits, localizados no registrador de status do processador ( PSW ), que indica o modo de acesso corrente. Sempre que uma aplicação necessita utilizar uma instrução privilegiada, a solicitação deve ser realizada através de uma chamada a uma system call, que altera o modo de acesso do processador de modo usuário para modo kernel. Ao término da execução da rotina, há o retorno ao modo usuário. Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional 4.3 Sistema Monolítico Que designa o modelo em que o sistema operacional é codificado por via de uma coleção de procedimentos, onde é permitido a qualquer um deles em qualquer parte do programa "chamar" outro procedimento. A organização mais simples de um sistema como um conjunto de procedimentos que podem interagir livremente umas com as outras. Pode ser comparada com uma aplicação que contém vários procedimentos que são compilados separadamente e depois linkados, formando um grande e único programa executável. Vantagem: – Grande desempenho Desvantagem: – O sistema pode parar por causa de um erro. - As interfaces e níveis de funcionalidade não são bem separados nem estão unificados. O excesso de liberdade torna o sistema vulnerável. Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional 4.3 Sistema Monolítico ● Vários módulos compilados separadamente e linkados, formando um único grande programa executável; ● Arquitetura dos primeiros sistemas operacionais ( MS-DOS e Unix); ● Manutenção e desenvolvimento difíceis; ● Simples e com bom desempenho. Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional 4.4 Sistema em Camadas • Vários módulos compilados separadamente e linkados, formando um único grande programa executável; • Hierarquia da Camadas •A camada superior usa serviços da camada inferior • Arquitetura dos primeiros sistemas operacionais ( MS-DOS e Unix); • Manutenção e desenvolvimento difíceis; • Simples e com bom desempenho. Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional 4.4 Sistema em Camadas Camada 4 Programas de Usuário Camada 3 Gerência dos Dispositivos de Entrada/Saída E/S Comunicação operadorprocesso Administra a comunicação entre cada Camada 2 Administrar os dispositivos de processo Camada 1 Camada 0 Gerência de memória Alocação do processador e implementação da multiprogramação Responsável pela alocação de espaço Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional 4.5 Sistemas cliente-servidor - A tendência é tornar o núcleo do sistema operacional o menor e mais simples possível - Serviços do SO são implementados como processos de usuário - Sempre que uma aplicação deseja algum serviço ela solicita ao processo responsável - A aplicação que solicita o serviço é chamada de cliente, enquanto o processo que responde à aplicação é chamado de servidor Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional 4.5 Sistemas cliente-servidor -Função do núcleo: tratar da comunicação entre clientes e servidores - Apenas o núcleo executa no modo supervisor -Adaptabilidade ao uso em sistemas distribuídos Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional 4.5 Sistemas cliente-servidor – implementação • dividir o sistema em processos, sendo cada um responsável por oferecer um conjunto de serviços - serviços de arquivo; - serviços de criação de processos; - serviços de memória; - serviços de escalonamento, etc. • as aplicações solicitam serviços ao processo responsável - a aplicação que solicita o serviço é chamada de cliente; - o processo que responde à solicitação é chamado de servidor. Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional 4.5 Sistemas cliente-servidor Servidor de memória cliente Servidor de arquivo Servidor de processo Servidor de rede Modo usuário Núcleo Hardware Modo Kernel Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional 4.5 Sistemas cliente-servidor – Vantagens: – permite que os servidores executem em modo usuário (não tenham acesso direto a certos componentes do sistema) – Apenas o núcleo do sistema executa no modo kernel; – Se um erro ocorrer em um servidor, o sistema não ficará inteiramente comprometido; Permite isolar as funções do sistema operacional por diversos servidores pequenos e dedicados a serviços específicos; – Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional 4.5 Sistemas cliente-servidor • na prática: – a implementação de estruturas cliente-servidor é muito difícil devido a certas funções do sistema operacional exigirem acesso direto ao hardware; » exemplo: operações de e/s. • na realidade: – usualmente é implementado uma combinação do modelo de camadas com o modelo cliente-servidor; – núcleo do sistema » realizar a comunicação entre cliente e servidor; » executar funções críticas do sistema; » executar funções dos device drivers. Sistemas para Internet – 2º Período - Sistemas Operacionais 4. Estrutura do Sistema Operacional Exercícios 1 – O que é núcleo do sistema e quais são suas principais funções? 2 – O que é system call e qual sua importância para a segurança do sistema? 3 – O que são instruções privilegiadas e não-privilegiadas? Qual a relação dessas instruções com os modos de acesso? 4 – Como o kernel do sistema operacional pode ser protegido pelo mecanismo de modos de acesso? 5 – Compare as arquiteturas monolítica e de camadas. Quais as vantagens e desvantagens de cada arquitetura? DESENVOLVIMENTO DE SISTEMAS PARA INTERNET 5. PROCESSO E THREADS Sistemas para Internet – 2º Período - Sistemas Operacionais 5. Processo e Threads 5.1 Introdução O processo é a base para a implementação de sistemas multiprogramáveis; A gerência de um sistema multiprogramável é uma função exclusiva do sistema operacional, que deve controlar os diversos programas e o uso concorrente do processador; Um programa deve estar SEMPRE associado a um processo; Através do processo o programa pode alocar recursos, compartilhar dados, trocar informações e sincronizar sua execução Sistemas para Internet – 2º Período - Sistemas Operacionais 5. Processo e Threads 5.2 Modelo de processo Um processo pode ser definido como o ambiente onde um programa é executado; Este ambiente, além das informações sobre execução, possui também quanto os recursos de Hardware e Software; Um processo é formado por três partes conhecidas como Contexto de Hardware, Contexto de Software Espaço de endereçamento. Sistemas para Internet – 2º Período - Sistemas Operacionais 5. Processo e Threads 5.3 Contexto de hardware Armazena o conteúdo dos registradores gerais da UCP, além dos registradores de uso específico, como o Program Counter ( PC ), Stack Pointer ( SP ) e o registrador de status; Enquanto um processo está em execução, seu contexto de hardware está armazenado nos registradores da UCP; A troca de um processo por outro no processador, comandada pelo sistema operacional, é denominada mudança de contexto; Sistemas para Internet – 2º Período - Sistemas Operacionais 5. Processo e Threads 5.4 Contexto de software São especificadas características e limites dos recursos que podem ser alocados pelo processo; O arquivo de contas é um arquivo do sistema operacional de onde provém a maior parte das informações de contexto, como os limites dos recursos que cada processo pode alocar; arquivo do contexto de software é composto por três grupos de informações sobre o processo: identificação quotas privilégios. Sistemas para Internet – 2º Período - Sistemas Operacionais 5. Processo e Threads 5.4 Contexto de software Identificação Cada processo criada pelo sistema recebe uma identificação única ( PID – Process Identification ). Através do PID, o sistema operacional e outros processos podem fazer referência a qualquer processo; O processo possui a identificação do usuário que o criou. Sistemas para Internet – 2º Período - Sistemas Operacionais 5. Processo e Threads 5.4 Contexto de software Quotas São os limites dos recursos do sistema que cada processo pode alocar. Privilégios Define quais ações que um processo pode fazer em relação a ele mesmo, a outros processos e ao sistema operacional. Sistemas para Internet – 2º Período - Sistemas Operacionais 5. Processo e Threads 5.5 Estados do Processo Os processos passam por diferentes estados ao longo do seu processamento em função de eventos gerados pelo sistema operacional ou pelo próprio processo; Execução (Running) Pronto (Ready) Espera (Wait) Sistemas para Internet – 2º Período - Sistemas Operacionais 5. Processo e Threads 5.6 Mudança de Estado de Processo Um processo muda de estado durante seu processamento em função de eventos originados por ele próprio ( eventos voluntários ) ou pelo sistema operacional ( eventos involuntários ). Basicamente, existem quatro mudanças de estado que podem ocorrer a um processo, listadas a seguir. De pronto para execução De execução para espera De espera para pronto De execução para pronto Sistemas para Internet – 2º Período - Sistemas Operacionais 5. Processo e Threads 5.6 Mudança de Estado de Processo De pronto para execução Após a criação de um processo, o sistema o coloca em uma lista de processos no estado pronto, onde aguarda por uma oportunidade para ser executado; De execução para espera Um processo passa do estado de execução para o estado de espera em função de eventos gerados por ele mesmo ou por eventos externos; Sistemas para Internet – 2º Período - Sistemas Operacionais 5. Processo e Threads 5.6 Mudança de Estado de Processo De espera para pronto Um processo passa do estado de espera para o estado de pronto quando a operação solicitada é atendida ou o recurso esperado é concedido. Um processo no estado de espera terá sempre de passar pelo estado de pronto antes de ser novamente selecionado para execução. Sistemas para Internet – 2º Período - Sistemas Operacionais 5. Processo e Threads 5.6 Mudança de Estado de Processo De execução para pronto Um processo em execução passa para o estado de pronto por eventos gerados pelo sistema, como o término da fatia de tempo que o processo possui para execução. Não necessariamente um processo em estado de espera ou de pronto se encontra na memória principal. Caso não haja espaço, o processo pode ser movido à memória secundária, onde aguardará até o momento de ser novamente processado. Sistemas para Internet – 2º Período - Sistemas Operacionais 5. Processo e Threads 5.7 Subprocesso São processos criados dentro de uma estrutura hierárquica; Há dependência entre o processo criador e o subprocesso. Caso o processo pai deixe de existir, todos seus subprocessos são eliminados; Subprocessos possuem seu próprio PCB; Subprocessos podem compartilhar quotas com o processo pai. Quando o subprocesso é criado, o processo pai cede parte de suas cotas ao processo filho. Sistemas para Internet – 2º Período - Sistemas Operacionais 5. Processo e Threads 5.8 Thread Foi introduzida na tentativa de reduzir o tempo gasto na criação, eliminação e troca de contexto de processos nas aplicações concorrentes, bem como economizar recursos do sistema como um todo; Em um ambiente multithread, cada processo pode suportar múltiplos threads, cada qual associado a uma parte do código da aplicação; Threads compartilham os recursos do sistema da mesma maneira como se fossem um processo; Cada thread possui seu próprio contexto de hardware, porém compartilham o mesmo contexto de software e espaço de endereçamento com os demais threads do processo. Sistemas para Internet – 2º Período - Sistemas Operacionais 5. Processo e Threads Exercícios 1 – Quantas são e quais são as partes de uma estrutura de processos? 2 – Qual a denominação da troca de um processo por outro no processador? 3 – Como é feito a identificação do processo? 4 – O que são cotas? 5 – O que é espaço de endereçamento? 6 – Quais são os estados de um processo? 7 – Explique e exemplifique a criação de processos? 8 – O que são THREADS? DESENVOLVIMENTO DE SISTEMAS PARA INTERNET 6. COMUNICAÇÃO ENTRE PROCESSOS PRÓXIMA AULA