Buscar

Slide Sistemas Operacionais

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 88 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 88 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 88 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
Sistemas operacionais 
Cap 2. Introdução II 
Jadilson Paiva 
 
Objetivos 
 
– Multitarefa 
– Interrupções 
– Estrutura do S.O 
– Tipos de Kernel 
 
1 – Monoprogramáveis x 
multiprogramáveis 
Mono x multiprogramáveis 
 
• Os sistemas multiprogramáveis surgiram da necessidade de 
utilizar os recursos da máquina de forma mais eficiente; 
 
 
 
 
 
 
• O throughput em (a) é 33% menor que em (b); 
 
Exemplo estatístico 
CPU x mono x multitarefa 
Existem vários 
algoritmos de 
escalonamento; 
 
Interrupções de 
relógio geradas 
pelo hardware 
podem definir o 
tempo do 
escalonamento; 
Interrupções no multitarefa 
Quantum de tempo para cada processo em função da quantidade de ticks 
Tick =~ 1 ms Quantum/ time slice 
= 1 a 100 ms 
Interrupções no multitarefa 
Após expirado o quantum de tempo, o sistema 
operacional muda o processo em execução; 
2 – Interrupções 
Interrupções 
• São mecanismos de hardware ou software que tem a 
finalidade de interromper a execução corrente da CPU; 
• Através da interrupção, a CPU é desviada para o tratamento 
da interrupção que a chamou; 
• É através deste mecanismo que é possível sincronizar o 
funcionamento de um sistema computacional assim como os 
sistemas multitarefas; 
• Interrupções de hardware (IRQ´s) 
• Interrupções de software (INT´s) 
• Exceções 
Geração das interrupções 
 
• Podem ser geradas pelo programa: Implementadas com o 
uso de instruções especiais (INT, TRAP); 
• Geradas por um erro (exceção): divisão por zero, referência 
a memória fora do espaço permitido e etc; 
• Geradas pelo relógio (temporizador da placa mãe); 
• Geradas pelos dispositivos de E/S (IRQ´s); 
2.1 – Interrupções de hardware 
Controlador de interrupções de HW PIC 
O controlador PIC e a CPU possuem um protocolo próprio de 
negociação quanto ao pedido e atendimento das interrupções de 
hardware; 
Geração das interrupções de HW 
 
• As interrupções 
de hardware são 
mascaráveis, ou 
seja, podem ser 
desabilitadas pelo 
sistema 
operacional, de 
forma que não 
interrompam a 
CPU durante a 
execução; 
Tratamento das interrupções 
 
 
Tratamento das interrupções 
 
 
Execução atômica 
PIC avalia os 
pedidos de IRQ 
quanto a 
prioridade bem 
como a pendencia 
da CPU ao 
tratamento de uma 
IRQ anterior 
Caso a INT de HW 
esteja habilitada 
Lista de interrupções de HW APIC 
Medindo as interrupções de HW 
 
 
#vmstat 1 
#watch –d –n 1 cat /proc/interrupts 
#watch –d –n 1 grep LOC /proc/interrupts 
2.2 – Interrupções de software 
Como seria uma procedure de vídeo 
 
 Pixel 
6 x 5 
ASCII 
Chip funções + 
Uso das interrupções de software 
 
 
Uso da procedure do teclado 
INT09 (IRQ 1) Teclado 
 
 
Buffer do teclado (INT hardware) 
INT09 (IRQ 1) Teclado 
 
 
Excesso de caracteres na pilha (overflow) 
 
Segurar a tecla!!!!!! 
Acoplamento das INTs 
 
 
Acoplamento.asm 
 
Uso das interrupções de software 
 
 
Uso da procedure do disco 
Uso das interrupções de software 
 
 
Uso da procedure hora 
Uso das interrupções de software 
 
 
Uso da procedure ticks 
Uso da pilha no tratamento da INT 
 
 
Exceção 
 
 
Evento previsível decorrente de um erro de 
programação 
 
É uma interrupção não mascarável 
Interrupções 
 
 
2.3 – Tabela do vetor de 
interrupções IVT 
Vetor de interrupções – IVT 
 
 
 
• São endereços indexados para procedimentos de 
tratamento de interrupções (hardware e software); 
• O vetor de interrupções está localizado no início da memória 
principal, formado por 256 posições de 4 Bytes cada um 
(IP:CS), totalizando 1kB; 
• Este vetor de interrupções é copiado pela firmware durante o 
boot da máquina e serve para funcionamento das funções de 
E/S no setup e de uso por sistemas operacionais legados que 
utilizam o MS-DOS (16 bits); 
• O que acontece se a IVT for manipulada???? 
Vetor de interrupções – IVT 
 
 
 
 
Endereço de 
memória / 
INT 
Registrador 
IP 
Registrador 
CS 
0000 / 0 9E 0F C9 00 
0004 / 1 65 04 70 16 
0008 / 2 16 00 D7 03 
000C / 3 65 04 70 00 
..... .... .... 
..... .... .... 
0399 / 100 xx yy zz ww 
Vetor de interrupções x86 - BIOS 
 
 
Execução da INT0 (ponteiros) 
 
 
Vetor de interrupções x86 - BIOS 
 
 
Vetor de interrupções x86 - BIOS 
 
 
Mapeamento de memória PC x86 
 
 
2.4 – Tratamento das múltiplas 
interrupções 
Tratamento das múltiplas interrupções 
Protocolo de comunicação entre a 
CPU e o PIC está em questão neste 
momento!!! 
2.5 – Descritor de interrupção - 
IDT 
Tabela de descritores de interrupção - IDT 
 
• É utilizada pelos sistemas operacionais a partir de 32 bits, 
uma vez que o processador de 16 bits só trabalha com IVT; 
• A tabela IDT é gerada pelo próprio sistema operacional 
durante o seu carregamento em memória, de forma que o 
S.O é responsável pelas suas próprias procedures de E/S 
evitando o legado; 
• Os processadores de 32 e 64 bits possuem um registrador 
especial (IDTR) para indicar o posicionamento da tabela IDT 
em memória; 
Tabela de descritores de interrupção - IDT 
 
• Trabalha de forma similar a IVT com endereços indexados, 
só que de 8 bytes e também possuem 256 entradas; 
• Inicialmente quando o PC é inicializado, a IVT é funcional 
pela firmware até que o S.O coloque a sua IDT em uma 
posição diferente de memória ou sobrescreva a antiga IVT; 
• A IDT trabalha juntamente com o controlador de interrupções 
avançado (APIC) que permite o um maior gerenciamento de 
interrupções de hardware (IRQ´s); 
• Já a antiga IVT só dava suporte até 16 IRQ´s; 
 
PIC (IVT) e APIC (IDT) 
Tabela de descritores de interrupção - IDT 
3 – Estrutura do S.O 
Estrutura do S.O 
Funções do kernel 
 
• É formado por um conjunto de rotinas que tem a finalidade 
de prover uma abstração do hardware para o usuário; 
• Fornece mecanismos de segurança e proteção através da 
gestão dos dispositivos do hardware de forma concorrente 
entre os programas (multitarefa); 
• Protege o sistema do usuário e do programador em acessos 
indevidos a regiões e eventos não privilegiados no sistema; 
• Os usuários e programas que estão em execução ficam 
protegidos uns dos outros; 
 
3.1 – Modos de acesso ao kernel 
Modos de acesso 
• Os processadores a partir do IA-32 apresentam quatro modos 
de funcionamento implementados em hardware; 
• Cada “ring” possui um nível de privilégio de funcionamento; 
Modos de acesso 
 
• Os processadores de 16 bits não possuem modo de acesso, 
no entanto, toda aplicação e o usuário tem acesso a toda a 
memória da máquina; 
• Os sistemas operacionais atuais utilizam apenas dois dos 
quatro modo disponíveis pelos processadores, conhecidos 
como modo kernel e modo usuário ou ring 0 e ring 3; 
• A memória do sistema é dividida logicamente e protegida 
através destes modos; 
Modos de acesso 
 
• Os Conhecidos como modo usuário e modo kernel, o 
processador delimita a segurança do sistema pela quantidade 
de instruções que podem ser executadas nestes modos; 
• O modo usuário possui acesso a um conjunto de instruções 
limitados e de poucos privilégios; 
• O modo núcleo tem acesso a todo o conjunto de instruções do 
processador, ou seja, privilégio máximoao sistema; 
Modos de acesso 
• Os modos de acesso 
podem ser mudados 
através instruções 
especiais em 
hardware syscall e 
sysret (TRAP); 
• A mudança de modos 
caso seja necessária é 
realizada através das 
chamadas do sistema 
operacional (system 
calls); 
Modos de acesso em memória principal 
 
• O kernel é protegido das ações diretas dos usuários, uma vez 
que as aplicações alto nível funcionam em uma parte separada 
da memória e acopladas pelas chamadas de sistema ao núcleo; 
Modos de acesso Linux e Windows 
 
Modo Kernel (1GB) 
 
 
 
 
Modo usuário (3GB) 
 
 
 
 
Linux 32 bits 
 
 
Modo Kernel (2GB) *** 
 
 
 
 
 
Modo usuário (2GB) 
 
 
Windows 32 bits 
** Segundo documentação da Microsoft, este espaço pode ser reduzido! 
Inicialização do sistema 
A máquina inicia em 
modo real (sem 
proteção x86) para 
depois mudar para o 
modo protegido x32 
(kernel e user mode) 
e/ou modo longo x64 
(kernel e user mode) 
3.2 – System calls 
System calls 
 
 
• É uma API de serviços disponibilizada pelo S.O, e que pode 
ser usado pelos programas para requisitar serviços do 
sistema operacional; 
• Estas chamadas são procedimentos que se relacionam 
diretamente com o hardware, como forma de abstrair os 
detalhes de comunicação; 
• As system calls possuem instruções privilegiadas, e servem 
como um encapsulamento de proteção ao kernel e ao sistema 
como um todo; 
• As implementações de system calls são complexas; 
 
Algumas funcionalidades das system calls 
 
• Gerenciamento de processos; 
• Gerenciamento de sistema de arquivos; 
• Gerenciamento e tratamento de sinais; 
• Gerenciamento do tempo do sistema; 
Procedimento system call 
Procedimento system call 
As mudanças entre 
os modos usuário 
e kernel 
consomem muitos 
ciclos de CPU 
 
Dependendo da 
situação, 
mudanças em 
excesso geram 
overhead e 
inviabilizam a 
velocidade de 
aplicações e do 
sistema como um 
todo; 
Atuação das system calls 
3.3 – Padrão POSIX 
Padronização POSIX 
 
 
• Portable Operating System Interface objetiva garantir a 
portabilidade do código-fonte de um programa a partir de 
sistemas operacionais que atendam as normas POSIX; 
• Muito utilizado em sistemas UNIX e seu derivados, as 
system-calls obedecem ao padrão POSIX; 
• Não pode se garantir que todos os sistemas 
operacionais, inclusive entre proprietários e abertos, 
possuam a mesma API (Interface de programação de 
aplicativos) a utilizarem o POSIX; 
• O Windows utiliza a sua API própria conhecia como 
Win32; 
Syscall POSIX – Consultar !!! 
Uso de system calls no shell 
#chmod 777 teste 
#time teste 
#mkdir teste 
Criar scripts!!!!!! 
System calls em C 
 
 
 
• Este código deve ser 
portável em sistemas 
operacionais que utilizam as 
system calls POSIX; 
• System call fork() é 
utilizada para a criação de 
subprocessos; 
• A chamada kill() mata os 
processos; 
#include <stdio.h> 
#include <sys/types.h> 
#include <signal.h> 
int main() { 
int id ; 
id = fork (); >> SYSTEM CALL 
if (id != 0) { 
 printf(“Eu sou o pai\n”); 
 sleep(5) ; 
 kill (id, SIGKILL); >>SYS CALL 
 } 
else{ 
 printf(“Eu sou o filho\n”); 
 while(1); 
} 
 } 
libc6-dev (bilbioteca) 
#cc –o teste teste.c 
3.4 – Bibliotecas 
Bibliotecas 
• São procedimentos que possuem códigos auxiliares ao 
programador e aplicações; 
• Com maior vantagem de portabilidade em relação a uma 
system call, o seu uso torna o desenvolvimento de softwares 
mais simples, uma vez que se abstrai mais que uma chamada 
de sistema; 
• As bibliotecas podem ser criadas e compartilhadas entre 
sistemas operacionais; 
• As bibliotecas intermediam o acesso do usuário a system 
call; 
Bibliotecas 
Testando a portabilidade Linux e Windows 
#include <stdio.h> >> biblioteca 
 
int main (void) { 
 
 FILE *file; 
 file = fopen("teste.txt","w"); Função >> 
 
 return 0; 
 
} 
Testar no Windows e Linux!!!!! 
 
Writedisk.c 
Rastreando chamadas de sistema e sinais 
#strace <program> 
#strace -c <program> 
#ltrace <program> 
Rastreando syscall e sinais 
Rastreando bibliotecas 
#ltrace -c <program> 
#strace –c ls -la 
#ltrace -c ls -la 
Verificando o uso dos recursos 
#perf stat <program> 
#time <program> 
#top 
System calls em Assembly 32 bits 
Rastreando as syscalls 
#nasm –f elf helloworld.asm 
#ld helloworld.o –o helloworld 
#strace ./helloworld 
Fazer o comparativo entre C e Assembly 
#strace -c ./helloworld 
4 – Tipos de kernel 
Implementação do kernel 
 
 
 
• Idealmente, o kernel deveria ser independente da ISA do 
processador; 
• Na prática, mais de 90% do kernel é escrito em uma 
linguagem de alto nível como C, e posteriormente compilado 
para a ISA do processador; 
• O restante do código é escrito diretamente na ISA (assembly) 
que é adaptada para cada tipo de ISA de processadores; 
 
Handbook codes s.o 
4.1 – Kernel monolítico 
Kernel monolítico 
 
• Primeiro conceito de kernel; 
• Todas as funções estão em modo kernel; 
• Todas as funções são linkadas em um único bloco; 
• Simples e de bom desempenho pelo menor quantitativo de 
mudança de modos; 
• Difícil de isolar fontes de problema; 
• Aplicado no MS-DOS, Jadilson 1.3 e primeiros UNIX e Linux 
Kernel monolítico 
4.2 – Kernel em camadas 
Kernel em camadas 
 
• Com o aumento da complexidade dos S.Os e técnicas de 
programação estruturada e modular, o S.O foi dividido em 
camadas hierárquicas; 
• Possui a vantagem de isolar as camadas em níveis de 
privilégios diferentes, e fazendo com que as camadas 
inferiores provejam serviços as camadas superiores; 
• Possui a desvantagem de menor desempenho gerado pelo 
overhead de mudança de privilégios entre as camadas; 
• Aproveita os rings de privilégios do processador; 
 
Kernel em camadas 
 
 
 
• Baseado nos 4 modos de 
funcionamentos dos 
processadores a partir do IA-
32; 
4.3 – Microkernel 
Microkernel 
• Funções do núcleo reduzidas ao extremo (leve e simples); 
• Os serviços do sistema operacional estão disponíveis em 
modo usuário e chamadas de servidores; 
• As aplicações são chamadas de clientes, e comunicam-se 
umas com as outras através de troca de mensagens através 
do núcleo; 
• O núcleo tem apenas as funções de gerenciar, interrupções, 
IPC, escalonamento e E/S; 
• Na prática é combinada com a arquitetura em camadas 
devido ao seu baixo desempenho pela troca dos modos; 
Microkernel 
Kernel Linux híbrido-monolítico

Outros materiais