System Calls (Chamadas de Sistema) - IME-USP

Propaganda
01 INTRODUÇÃO
1.5
ESTRUTURA DOS SISTEMAS OPERACIONAIS
O Sistema Operacional é formado por um Conjunto de rotinas (denominado de
nú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 com
o SO para executar tarefas específicas do sistema operacional.
Estas tarefas são as seguintes: criar, ler ou eliminar arquivos, consultar diretório ou
verificar a data e a hora armazenada no sistema
Cada comando é interpretado pelo Shell (interpretador de comandos) que verifica a
sua 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.
Linguagem de Comandos (windows)
4
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.
Linguagem de Comandos (linux)
5
Figura 04 - Comando usando linguagem de comandos do Linux
1.5.2 Kernel
As rotinas do sistema são executadas concorrentemente (ao mesmo tempo) sem
uma 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 problemas
relativos à segurança.
Como diversos usuários compartilham os mesmos recursos (memória, processador e
dispositivos de E/S), o SO deve garantir a confiabilidade na execução concorrente de todos
os programas e NOS DADOS DOS USUÁRIOS, além da garantia da integridade do
sistema operacional.
No exemplo da figura abaixo o sistema operacional impediu que o arquivo em
formato PDF que estava aberto para leitura fosse deletado.
Exemplo de função do Kernel
(gerência do sistema de arquivos)
13
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 de
hardware (disco, memória, etc ...)
Muitas implementações de segurança do núcleo de um SO e de acesso aos seus
serviços utilizam o modo de acesso dos processadores.
O modos de acesso dos processadores é um mecanismo presente no hardware dos
processadores:
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 e
privilegiadas, ou seja, instrução que oferece risco ao sistema (exemplo: instruções que
acessam dados no disco).
A figura abaixo exemplifica o uso do modo de acesso dos processadores
Modos de Acesso (exemplo de uso)
Q
Para que um programa (aplicação) possa escrever em uma
área de memória onde encontra-se o sistema operacional, o
programa (aplicação) deve estar sendo executado com o
processador no modo kernel.
16
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ão
o 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
System Calls (Chamadas de Sistema)
19
Figura 08 – Chama de uma System Call
A figura abaixo mostra um comando em linux (utilizando a linguagem de
comandos deste sistema) para remover um diretório denominado “diretório”.
Linguagem de Comandos (linux)
20
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 a
rotina que executa o comando da figura anterior
Linux System Call Table
21
Figura 10 – Tabela de System Call do Linux
Podemos constatar pelo figura abaixo que uma system call possui milhares de linhas
de 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 uma
aplicação desejar chamar uma rotina do sistema operacional: o mecanismo de system call
verificará se a aplicação possui os privilégios necessários.
Em caso negativo o SO impedirá o desvio para a rotina do sistema sinalizando ao
programa (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.
Em caso negativo ...
24
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 por
intermédio de uma system call, um mecanismo de proteção por hardware impedirá a
operação.
As system call possuem diversos nomes dependendo do sistema operacional:
System Calls (Chamadas de Sistema)
Q
Q
Q
Unix: system Call
OpenVMS: system Services
MS Windows: Application Program Interface (API)
26
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 do
código-fonte.
1.5.5 Arquiteturas do Kernel
O projeto de um sistema operacional depende muito do hardware a ser utilizado e
do 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 linguagem
C/C++ (MS Windows).
O uso de linguagem de alto nível na construção de sistemas operacionais possui
vantagens e desvantagens:
Vantagem: O Sistema Operacional pode ser facilmente alterado em outra arquitetura
de hardware (portabilidade do código)
Desvantagem: perca do desempenho
A arquitetura do kernel define a maneira como o código do sistema é organizado e o
inter-relacionamento entre os seus diversos componentes pode variar conforme a concepção
do 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:
Arquitetura Monolítica
Q
Q
Compara-se a uma aplicação formada por vários módulos que
são compilados separadamente e depois linkados formando um
único programa executável onde os módulos podem interagir
livremente.
Desvantagem:
– desenvolvimento e manutenção bastante difíceis
Q
Vantagem:
– simplicidade e bom desempenho
Q
MS-DOS e primeiros sistemas UNIX
32
Figura 16 – Arquiteura Monolítica
Sistema em Camadas
Q
Q
Q
Q
Q
Com o aumento da complexidade e do tamanho do código dos
SO, técnicas de programação estruturada e modular foram
incorporadas ao projeto
O sistema é dividido em níveis sobrepostos
Cada camada oferece um conjunto de funções que podem ser
utilizadas apenas pelas camadas superiores.
As camadas mais internas são mais privilegiadas que as
externas.
Vantagem:
– Facilita a manutenção e depuração
– Cria uma hierarquia de níveis de modos de
acesso
Q
Desvantagem:
– Desempenho
Q
Maioria das versões do UNIX e do Windows
Figura 17 – Sistema em Camadas
33
Figura 18 - 21 - Máquina Virtual
Máquina Virtual
Q
Q
Este modelo cria um isolamento total entre cada VM,
oferecendo grande segurança para cada VM.
Desvantagem:
Estrutura bastante complexa devido a necessidade
de compartilhar e gerenciar recursos do hardware
entre as diversas VM
37
Figura 19 -21 - Máquina Virtual
Arquitetura Microkernel
Idéia: tornar o núcleo do SO o mais simples possível.
Os serviços do sistema são disponibilizados através de
processos, responsáveis por oferecer um conjunto específico
de funções (gerência de arquivos, processos, de memória e
escalonamento)
Sempre que uma aplicação deseja
algum serviço, deve solicitar ao
processo responsável.
Q
Q
Q
39
Figura 20 - 21 - Arquitetura Microkernel
Arquitetura Microkernel
Q
Q
Q
Q
Q
Q
A aplicação que solicita serviço é chamada de cliente e o
processo que responde é denominado de servidor.
A principal função do núcleo é realizar a troca de mensagens
entre cliente e o servidor
Servidores: modo usuário e Núcleo: modo Kernel.
Vantagem:
Manutebilidade, flexibilidade e
portabilidade
Desvantagem:
– Difícil implementação
Maioria das iniciativas ligadas
ao desenvolvimento de SO distribuídos
40
Figura 21 - Arquitetura Microkernel
Download