Upload
hoangkhanh
View
213
Download
0
Embed Size (px)
Citation preview
Aspectos de Sistemas Operativos
Paulo Sergio Almeida
Grupo de Sistemas DistribuıdosDepartamento de Informatica
Universidade do Minho
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas OperativosServicos de um sistema operativoInterface com o utilizadorChamadas ao sistemaProgramas de sistemaConcepcao e implementacao de sistemas operativosEstruturacao de um sistema operativoMaquinas virtuais
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Servicos de um sistema operativo
Servicos de um sistema operativo
Servicos uteis ao utilizador:Interface com utilizador: pode ser em linha de comando (CLI) ouinterface grafica (GUI)Execucao de programas: carregar programas para memoria,correr, terminar execucao (eventualmente forcada)Operacoes de I/O: interaccao de programas com ficheiros oudispositivosManipulacao do sistema de ficheiros: manipulacao de ficheiros edirectorios, informacao associada, gestao de permissoesComunicacao: entre processos, na mesma maquina ou em rede;atraves de memoria partilhada ou passagem de mensagensTratamento de erros: no hardware ou programas; devem sertratados adequadamente; facilidades de debugging
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Servicos de um sistema operativo
Servicos de um sistema operativo
Servicos de gestao do sistema:Alocacao de recursos: aos varios utilizadores e processos;recursos como memoria, tempo de CPU, ficheirosContabilizacao: de como os utilizadores estao a usar recursos;e.g. espaco em disco, tempo de CPUProteccao e seguranca: isolamento entre processos; controlo noacesso aos recursos; autenticacao de utilizadores
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Interface com o utilizador
Interface em linha de comando
Permite a entrada de comandosGeralmente implementada por programas de sistema, quefazem uso de sevicos do SOCom inumeras variantes; e.g. sh, bash, csh, tcshRecebe input e executa comandoComandos podem ser internos ou nomes de programas
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Interface com o utilizador
Interface grafica
Normalmente metafora do desktop:rato, teclado, monitorıcones que representam ficheiros, programas, accoesbotoes e menus para invocar accoes; e.g. executar programa, abrirpasta
Sistemas geralmente trazem ambos os tipos de interface:Microsoft Windows: GUI + command shellMac OS X: Aqua GUI + unix kernel e shellsSolaris: CLI + GUI opcional (Java Desktop, KDE)
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Chamadas ao sistema
Chamadas ao sistema
system call: interface de programacao para os servicosfornecidos pelo sistema operativosSuportadas por instrucoes do CPU; e.g trap, syscallAcedidas indirectamente via API - application program interfaceAPIs mais comuns:
Win32 API para WindowsPOSIX API para versoes de UNIX, Linux, Mac OS XJava API para a JVM
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Chamadas ao sistema
Exemplo da API POSIX
Funcao para ler ficheiro
ssizet read (int fd,void* buf,size t count);
valor de retornonome da funcao
parametros
Sao passados a funcao:descritor do ficheiroendereco do buffer onde vao ser depositados os bytes lidosnumero maximo de bytes que estamos dispostos a ler
A funcao devolve o numero de bytes lidos ou erro
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Chamadas ao sistema
Implementacao de chamadas ao sistema
A cada system call e associado um numeroE mantida uma tabela indexada pelo numero da system callA system call interface invoca a funcionalidade no kernel edevolve status e valor de retornoO invocador nao sabe pormenores de implementacao:
apenas sabe usar APIbiblioteca que implementa API esconde detalhes
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Chamadas ao sistema
Relacao API – system call – SO
user mode
kernel modesystem call interface
aplicacaoread()
iImplementacaode read(). . .return
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Chamadas ao sistema
Passagem de parametros as system calls
Para alem do ındice da system call e necessario passar aokernel os parametros da funcaoAlternativas possıveis:
registos do CPU; mas pode haver mais parametros que registoscolocar parametros em tabela; passar endereco da tabela numregisto; usado em Linux e Solarisbiblioteca faz push para o stack; kernel faz pop do stack
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Chamadas ao sistema
Exemplo: uso de chamadas ao sistema por programa
int main(int argc, char **argv){
printf("Hello World!\n");return 0;
}
Resultado de “strace a.out”
execve("./a.out", ["a.out"], [/* 28 vars */]) = 0uname({sys="Linux", node="X1", ...}) = 0brk(0) = 0x804a000...write(1, "Hello World!\n", 13) = 13munmap(0xb7fb3000, 4096) = 0exit_group(0) = ?
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Programas de sistema
Programas de sistema
Software de sistema permite ter um ambiente apropriado paradesenvolvimento e execucao de aplicacoes:
manipulacao de ficheirossuporte a linguagens de programacaocarregamento e execucao de programasobter informacao sobre estado do sistema e historicoacesso remoto e comunicacao entre utilizadores
Maioria dos utilizadores (excepto os programadores):ve o sistema operativo como os programas de sistemanao se apercebe da existencia das chamadas ao sistema
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Concepcao e implementacao de sistemas operativos
Concepcao e implementacao de sistemas operativos
Nao existe unica receita; varias alternativas com provas dadasEstrutura interna varia muitoDefinicao de objectivos para:
utilizador: conveniencia, facilidade de uso, confiabilidade,seguranca, desempenhosistema: facilidade de desenho e implementacao, flexibilidade,confiabilidade, eficiencia
Princıpio da separacao entre polıtica e mecanismo:polıtica: decisao sobre o que fazer; fim a atingirmecanismo: como o fazer; implementar a polıtica
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Estruturacao de um sistema operativo
Estruturacao simples
Sem divisao em modulosSem boa separacao das interfaces e funcionalidadesMaxima funcionalidade no mınimo espacoExemplo: MS-DOS
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Estruturacao de um sistema operativo
Estruturacao em camadas/nıveis
SO dividido por camadas/nıveisCada camada construıda usando camadas inferioresNıvel 0 e o hardware; nıvel de topo a interface com utilizador
nıvel 0hardware
nıvel 1
nıvel Ninterface com utilizador
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Estruturacao de um sistema operativo
UNIX
Originalmente constituıdo por duas partes:Programas de sistemaKernel: escalonamento de processos, gestao de memoria,sistema de ficheiros; muita funcionalidade num so nıvel
shells and commandscompilers and interpreters
system librariessystem-call interface to the kernel
signals terminal file system CPU schedulinghandling swapping block I/O page replacement
character I/O system system demand pagingterminal drivers disk and tape drivers virtual memory
kernel interface to the hardwareterminal controllers device controlers memory controlers
terminals disks and tapes physical memory
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Estruturacao de um sistema operativo
Microkernels
Ideia: passar maximo de funcionalidade para modo utilizadorComunicacao entre modulos por passagem de mensagensBenefıcios:
facil de extenderpacil portar SO para novas arquitecturasmaior confiabilidade (menos codigo no kernel)mais seguro
Inconvenientes:Desempenho devido a comunicacao entre kernel e modo utilizador
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Estruturacao de um sistema operativo
Estruturacao por modulos
SOs actuais usam modulos no kernel:componentes separadosfalam entre eles atraves de interfacesmodulos carregados apenas se necessarios
Mais versatil do que abordagem baseada em camadasExemplo: Solaris
scheduling classes
device and bus drivers
miscellaneous modules
STREAMS modules executable formats
loadable system calls
file systems
core kernel
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Maquinas virtuais
Maquinas virtuais
Maquinas virtuais (VM: virtual machines) extendem aabordagem por camadas: encapsulam o hardware e sistemaoperativo como se fossem hardwareOferecem aos clientes uma interface identica a oferecida pordeterminada arquitectura de hardwarePodem ter como clientes sistemas operativos a correr sobre ohardware virtualizadoOs recurso fısicos do computador sao partilhados pelasdiferentes instancias das maquinas virtuaisOferecem ao cliente a ilusao de ter uma maquina so para si
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Maquinas virtuais
Maquinas virtuais
hardware
kernel
implementacao VM
VM1 VM2 VM3
kernel kernel kernel
processos processos processos
API
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Maquinas virtuais
Maquinas virtuais: isolamento
Cada maquina virtual e isolada das outras e do hardware fısicoVMs sao ideais para investigacao em sistemas operativosUm SO experimental pode correr por cima de uma VM; quandoas coisam correm mal, nao e necessario reinicializar a maquinatoda com o ambiente de desenvolvimentoA implementacao de VMs e difıcil por ter que oferecer umailusao perfeita de hardware com uma performance satisfactoria
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Maquinas virtuais
Exemplo: VMware
hardware
Linux
camada de virtualizacao
Free BSD Windows NT Windows XP
aplicacao aplicacao aplicacao
aplicacao
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos
Aspectos de Sistemas Operativos Maquinas virtuais
Exemplo: Java Virtual Machine
Aplicacoes fazem uso da Java API, ignorando o hardwareCompilador de Java (ou outra linguagem) gera java bytecodeVerificador de bytecode assegura certos invariantes:
permite proteccao no acesso a memoria sem ajuda do hardwareutil para hardware restricto (e.g. telemoveis)
Runtime executa bytecode com interpretador ou compilador JIT(just-in-time).
class loader
java interpreter
SO (Linux, Windows, . . . )
Java API.class files
Java program.class files
c©2006–2009 Grupo de Sistemas Distribuıdos Aspectos de Sistemas Operativos