24
Aspectos de Sistemas Operativos Paulo S´ ergio Almeida Grupo de Sistemas Distribu´ ıdos Departamento de Inform ´ atica Universidade do Minho c 2006–2009 Grupo de Sistemas Distribu´ ıdos Aspectos de Sistemas Operativos

Aspectos de Sistemas Operativos - necc.di.uminho.ptnecc.di.uminho.pt/wiki/lib/exe/fetch.php?media=ap:2ano:so:ap_so... · Servic¸os de um sistema operativo ... Sistemas geralmente

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