01 introduÇÃoadao/teso.pdf · 1.5 estrutura dos sistemas operacionais ... o sistema operacional...
TRANSCRIPT
01 INTRODUÇÃO
1.5 ESTRUTURA DOS SISTEMAS OPERACIONAIS
O Sistema Operacional é formado por um Conjunto de rotinas (denominado denúcleo do sistema ou kernel) que oferece serviços aos usuários e suas aplicações
Figura 01 – Kernel de um Sistema Operacional
1.5.1 Linguagem de Comandos
As liguagens de comando permitem ao usuário comunicar-se de forma simples como SO para executar tarefas específicas do sistema operacional.
Estas tarefas são as seguintes: criar, ler ou eliminar arquivos, consultar diretório ouverificar a data e a hora armazenada no sistema
Cada comando é interpretado pelo Shell (interpretador de comandos) que verifica asua sintaxe e faz chamadas a rotinas do sistema e apresenta o resultado
Figura 02 – As linguagens de comando são interpretadas e as repectivas rotinas do Sistema acionadas
1.5.1.1 Linguagem de Comandos (exemplo no DOS)Dois comandos foram executados: um para listar os arquivos e diretórios e outro
para remover um arquivo.
4
Linguagem de Comandos (windows)
Figura 03 – Comando usando linguagem de comandos do DOS
1.5.1.2 Linguagem de Comandos (exemplo do linux)
Um comando para remoção de um diretório foi executado.
5
Linguagem de Comandos (linux)
Figura 04 - Comando usando linguagem de comandos do Linux
1.5.2 Kernel
As rotinas do sistema são executadas concorrentemente (ao mesmo tempo) semuma ordem pré-definida, com base em eventos (acontecimentos) dissociados do tempo(eventos assíncronos)
1.5.2.1 Funções do Kernel
São funções do Kernel:
• Tratamento de interrupções e exceções;• Criação, eliminação, sicronização,• Escalonamento e controle de processos• Gerência da memória, do sistemas de arquivos, das operações de entrada e
saída;• Suporte a redes locais e distribuídas• Contabilização, auditoria e segurança do sistema
Devido a complexidade de um ambiente multiprogramável podem surgir problemasrelativos à segurança.
Como diversos usuários compartilham os mesmos recursos (memória, processador edispositivos de E/S), o SO deve garantir a confiabilidade na execução concorrente de todosos programas e NOS DADOS DOS USUÁRIOS, além da garantia da integridade dosistema operacional.
No exemplo da figura abaixo o sistema operacional impediu que o arquivo emformato PDF que estava aberto para leitura fosse deletado.
13
Exemplo de função do Kernel(gerência do sistema de arquivos)
Figura 05 – Exemplificação da Função do Kernel
1.5.3 Modos de Acesso
Os sistemas operacionais restringem as operações executadas pelos programas(aplicações), por razões de segurança e estabilidade. Por exemplo o acesso a dispositivos dehardware (disco, memória, etc ...)
Muitas implementações de segurança do núcleo de um SO e de acesso aos seusserviços utilizam o modo de acesso dos processadores.
O modos de acesso dos processadores é um mecanismo presente no hardware dosprocessadores:
No MODO USUÁRIO uma aplicação só pode executar instruções não privilegiadas,ou seja, instruções que não oferecem riscos ao sistema.
No MODO KERNEL uma aplicação pode executar instruções não privilegiadas eprivilegiadas, ou seja, instrução que oferece risco ao sistema (exemplo: instruções queacessam dados no disco).
A figura abaixo exemplifica o uso do modo de acesso dos processadores
16
Modos de Acesso (exemplo de uso)Para que um programa (aplicação) possa escrever em umaárea de memória onde encontra-se o sistema operacional, oprograma (aplicação) deve estar sendo executado com oprocessador no modo kernel.
Figura 06 – Exemplo do uso dos modos de acesso dos processadores
1.5.4 System Calls (Chamadas de Sistema)
Como as rotinas do sistema possuem em seu código instruções privilegiadas, entãoo processador deve estar em modo kernel para executá-las.
As System Calls são como portas de entrada para se ter acesso as rotinas do SO.Se uma aplicação desejar chamar uma rotina do sistema operacional: mecanismo de
system call verificará se a aplicação possui os privilégios necessários.
Figura 07 – System Call (porta de entrada para rotinas do Sistema Operacional)
A figura abaixo exibe uma system call que obtem a data e hora do sistema
19
System Calls (Chamadas de Sistema)
Figura 08 – Chama de uma System Call
A figura abaixo mostra um comando em linux (utilizando a linguagem decomandos deste sistema) para remover um diretório denominado “diretório”.
20
Linguagem de Comandos (linux)
Figura 09 – Execução de um comando em Linux usando a linguagem de comandos do Sistema Operacional
A figura exibe um tabela de system calls do linux, onde se destaca a relacionada arotina que executa o comando da figura anterior
21
Linux System Call Table
Figura 10 – Tabela de System Call do Linux
Podemos constatar pelo figura abaixo que uma system call possui milhares de linhasde código
22
Figura 11 – Código fonte de uma System Call na linguagem C
Uma aplicação sempre deve executar com o processador no modo usuário. Se umaaplicação desejar chamar uma rotina do sistema operacional: o mecanismo de system callverificará se a aplicação possui os privilégios necessários.
Em caso negativo o SO impedirá o desvio para a rotina do sistema sinalizando aoprograma (aplicação) chamador (a) que a operação não é possível.
A figura abaixo temos um exemplo em que a aplicação não possui os privilégios
necessários.
24
Em caso negativo ...
Figura 12 -– Aplicação não possui privilégios necessários a execução de uma rotina do Sistema Operacional
Em caso positivo, caso a aplicação possua os privilégios necessário ocorrerá o seguinte:
Figura 13 – Aplicação possui privilégios necessários a execução de uma rotina do Sistema Operacional
Caso tente executar uma instrução privilegiada (rotinas do sistema) sem ser porintermédio de uma system call, um mecanismo de proteção por hardware impedirá aoperação.
As system call possuem diversos nomes dependendo do sistema operacional:
26
System Calls (Chamadas de Sistema)
Unix: system CallOpenVMS: system ServicesMS Windows: Application Program Interface (API)
Figura 14 – Outros nomes para uma System Call
1.5.4.1 Funções das System Calls (Chamadas de Sistema)
A figura abaixo exibe as principais unções desempenhadas por uma system call
Figura 15 – Funções das System Call
Cada Sistema Operacional possui seu próprio conjunto de rotinas.Uma aplicação desenvolvida utilizando rotinas de um determinado Sistema
Operacional não pode ser portada diretamente para outro SO, exigindo a correção docódigo-fonte.
1.5.5 Arquiteturas do Kernel
O projeto de um sistema operacional depende muito do hardware a ser utilizado edo tipo de Sistema Operacional que se deseja construir (tempo compartilhado, tempo real,monousuário, multiusuário,etc...)
Os primeiros sistemas operacionais foram desenvolvidos em linguagem assembly(IBM OS/360)
Nos sistemas operacionais atuais forma em grande parte escritos na linguagemC/C++ (MS Windows).
O uso de linguagem de alto nível na construção de sistemas operacionais possuivantagens e desvantagens:
Vantagem: O Sistema Operacional pode ser facilmente alterado em outra arquiteturade hardware (portabilidade do código)
Desvantagem: perca do desempenho
A arquitetura do kernel define a maneira como o código do sistema é organizado e ointer-relacionamento entre os seus diversos componentes pode variar conforme a concepçãodo projeto.
As principais arquiteturas dos Sistema Operacionais são:• Arquitetura monolítica• Arquitetura em camadas• Máquina virtual• Arquitetura microkernel
As figuras abaixo descrevem as principais arquiteturas:
32
Arquitetura MonolíticaCompara-se a uma aplicação formada por vários módulos quesão compilados separadamente e depois linkados formando umúnico programa executável onde os módulos podem interagirlivremente.Desvantagem:– desenvolvimento e manutenção bastante difíceis
Vantagem:– simplicidade e bom desempenho
MS-DOS e primeiros sistemas UNIX
Figura 16 – Arquiteura Monolítica
33
Sistema em CamadasCom o aumento da complexidade e do tamanho do código dosSO, técnicas de programação estruturada e modular foramincorporadas ao projetoO sistema é dividido em níveis sobrepostosCada camada oferece um conjunto de funções que podem serutilizadas apenas pelas camadas superiores.As camadas mais internas são mais privilegiadas que asexternas.Vantagem:– Facilita a manutenção e depuração– Cria uma hierarquia de níveis de modos de acesso
Desvantagem:– Desempenho
Maioria das versões do UNIX e do Windows
Figura 17 – Sistema em Camadas
Figura 18 - 21 - Máquina Virtual
37
Máquina VirtualEste modelo cria um isolamento total entre cada VM,oferecendo grande segurança para cada VM.Desvantagem:Estrutura bastante complexa devido a necessidadede compartilhar e gerenciar recursos do hardwareentre as diversas VM
Figura 19 -21 - Máquina Virtual
39
Arquitetura MicrokernelIdéia: tornar o núcleo do SO o mais simples possível.Os serviços do sistema são disponibilizados através deprocessos, responsáveis por oferecer um conjunto específicode funções (gerência de arquivos, processos, de memória eescalonamento)Sempre que uma aplicação deseja
algum serviço, deve solicitar ao processo responsável.
Figura 20 - 21 - Arquitetura Microkernel
40
Arquitetura MicrokernelA aplicação que solicita serviço é chamada de cliente e oprocesso que responde é denominado de servidor.A principal função do núcleo é realizar a troca de mensagensentre cliente e o servidorServidores: modo usuário e Núcleo: modo Kernel.Vantagem:Manutebilidade, flexibilidade eportabilidade
Desvantagem:– Difícil implementação
Maioria das iniciativas ligadas ao desenvolvimento de SO distribuídos
Figura 21 - Arquitetura Microkernel