Sistemas operacionais

23
26/02/2015 1 Sistemas Operacionais Uniarp Curso Sistemas de Informação – 3 ͣ Fase Professor Humberto Luiz Brezolin SUMARIO DA AULA Técnicas de Organização dos Sistemas Operacionais; Bootstrapping; Chamadas de Sistemas; Exemplos de Sistemas Operacionais.

description

chamadas de Sistemas OperacionaisOrganização de Sistemas operacionaisComunicação de Sistemas Operacionais

Transcript of Sistemas operacionais

Page 1: Sistemas operacionais

26/02/2015

1

Sistemas Operacionais

Uniarp

Curso Sistemas de Informação – 3 ͣ Fase

Professor Humberto Luiz Brezolin

SUMARIO DA AULA

Técnicas de Organização dos Sistemas Operacionais;

Bootstrapping;

Chamadas de Sistemas;

Exemplos de Sistemas Operacionais.

Page 2: Sistemas operacionais

26/02/2015

2

TÉCNICAS DE ORGANIZAÇÃO DE SISTEMAS OPERACIONAIS

Como se dá com outros sistemas robustos de software, umsistema operacional deve ser projetado com cuidado, para tantousamos algumas técnicas para a organização de SO.

Modelos monoliticos

• É apenas aquele modelo organizadocomo um único programa. Como ocorreem qualquer programa, esse projeto deveser feito com uma estrutura bemorganizada.

• A maioria dos sistemas operacionais foiorganizada desse modo.

Page 3: Sistemas operacionais

26/02/2015

3

Modelos em camadas

• O conceito de modelo em camadas não é exclusivamente dossistemas operacionais.

• A idéia básica é que cada camada aumenta o nível de abstração eé amparada pelas funções fornecidas pelas camadas inferiores.

• Na maioria, o uso de bibliotecas segue a abordagem em camadas.

• No contexto de projeto de SO, o modelo em camadas pode colocaro gerenciamento de dispositivos de E/S na camada mais baixa,instalar o gerenciamento de memória em cima dele, colocar ossistemas de arquivos como terceira camada e, por fim, ogerenciamento de processos pode existir na camada superior.

• O sistema operacional XINU, de Comer, é um bom exemplo de sistema que segue um modelo em camadas.

Modelos em camadasExemplo simplificado do modelo de SO em camadas

Hardware

Gerenciamento de processos

Sistemas de arquivos

Gerenciamento de memória

Gerenciamento de dispositivosde E/S

Page 4: Sistemas operacionais

26/02/2015

4

Modelos de microkernel

• Pesquisando, vemos que váriosprojetistas sugerem que boa parte dafuncionalidade tradicional do Kernelpoderia ser retirada dele e movida paraoutros processos gerenciados por ele.

• Neste modelo, boa parte do que é feitopor meio de chamadas de função em umkernel monolítico é tratada por meio detroca de mensagens em um microkernel.

Modelos de microkernel

• Cada caixa acima do microkernel é implementada como umprocesso independente. O papel principal do microkernel éescalonar os processos e trocar mensagens entre eles.

• Alguns modelos de SO que usam o conceito de microkernel são: oMINIX, The Hurd e o MACH.

... Aplicações ...Gerenciamento de memória Sistemas de arquivos

... Gerenciamento de dispositivos de E/S ...MicrokernelHardware

Page 5: Sistemas operacionais

26/02/2015

5

Modelos de máquina virtual

• Essa abordagem de modelo nos leva adesenvolver um sistema operacional que dá acada processo a ilusão de estar sendoexecutado totalmente sozinho na maquina. Emoutras palavras, a principal função de umsistema operacional de maquina virtual é dar ailusão de muitas copias do hardware.

• Um exemplo desse modelo é o sistemaoperacional VM da IBM.

Modelos de máquina virtual

Aplicações Aplicações AplicaçõesSO convidado SO convidado SO convidado

SO de máquina virtualHardware

Page 6: Sistemas operacionais

26/02/2015

6

BOOTSTRAPPING“Quem surgiu antes o ovo ou a galinha?”

Bootstrapping

• Esta é uma análise que particularmente nos invoca a uma questãodesafiadora.

• O SO só pode oferecer os serviços que mencionamos depois de estarcarregado na memória e em execução. Contudo alocar memória, carregaro código de um dispositivo de armazenamento e iniciar a execução delessão funções que normalmente seriam executadas pelo próprio sistemaoperacional que precisamos carregar e começar a executar. Esse efeitovolta a primeira questão de bootstrapping: “”Quem surgiu primeiro, o ovo oua galinha?”.

• Como podemos fazer o sistema chegar a um ponto em que o sistemaoperacional esteja em execução antes de estar disponível para executar asfunções normalmente associadas ao carregamento e à execução de umprograma? Levar o sistema do hardware puro ao ponto em que temos umSO em execução é um processo que chamamos de bootstrapping. ( estetermo vem da imagem do computador erguendo a si mesmo por suaspróprias abas).

Page 7: Sistemas operacionais

26/02/2015

7

• Embora o termo bootstrapping esteja em uso corrente atualmente,muitos fabricantes se referem a ele por outros termos, que aindasão usados nesses sistemas. Entre eles, temos: partida a frio,partida não programada e carga do programa inicial.(IPL)

• Há três abordagens típicas para o problema do bootstrapping:– Na década de 1980,muitos computadores eram fabricados com painel

frontal que permitia o operador ter acesso a CPU e à memória dosistema.

– Mais tarde esse painel constituiu-se de um pequeno console e atravésdele apontava onde estaria o programa de carregamento.

– Após isso alguns sistemas incluía o código de vários carregadores deboot em uma memória de leitura.

• Independente do método usado para o sistema entrar em execução,acabávamos executando um pequeno programa que carregava osistema operacional a partir do disco (ou outro dispositivo dearmazenamento) e fazia que ele entrasse em execução. Em algunscasos, havia carregadores intermediários adicionais. Costumamosnos referir a cada um dos programas carregados como um estagio.Os projetos mais comuns usam carregadores de boot com dois outrês estágios. Normalmente, cada carregador faz pouca coisa parainiciar o hardware. Costumamos deixar isso para o SO. Contudo, namaioria dos casos, há alguns jobs que devem ser executados parafazer o sistema chegar ao estado esperado pelo SO, e esses jobssão executados pelo código do carregador.

Page 8: Sistemas operacionais

26/02/2015

8

CHAMADAS AO SISTEMA

Chamada ao sistema

• É a ligação entre as aplicações e osistema operacional. Quaseuniversalmente, ela se dá por meio dechamadas ao sistema.

• A chamada ao sistema é um mecanismopelo qual um processo pode solicitar umdos serviços a partir do sistemaoperacional.

Page 9: Sistemas operacionais

26/02/2015

9

Exemplo de chamadas ao sistema

• Estes exemplos de chamadas ao sistema são retirados de sistemas operacionais UNIX:– fork(): cria um novo processo que é uma cópia do

existente;

– exit(): encerra o processo solicitante;

– open(): abre um arquivo para leitura e/ ou gravação;

– read(): lê dados de um arquivo ou dispositivo;

– write(): grava os dados em um arquivo ou dispositivo;

Como utilizar chamadas ao sistema

• Supondo que tenhamos que ler o cabeçalho de um arquivo. Uma função para fazer isso, codificada em linguagem C, teria o seguinte aspecto:

int load_hdr(char *name, char *buf){

int fd;fd=open(name, O_RDONLY);if (fd<0)return (fd);

n=read(fd,buf,HDR_SIZE);close(fd);return(n);}

Page 10: Sistemas operacionais

26/02/2015

10

Mecanismos de chamada ao sistema

• Existe várias maneiras em que o mecanismo dechamada ao sistema possa ser implementado.

• Normalmente o compilador não sabe qualquer coisa deespecial sobre as chamadas de sistema em contrastecom as chamadas de função normais. Podemos saberdisso porque as bibliotecas que utilizamos tempequenas funções comuns para cada uma daschamadas ao sistema. Esses pequenas funções stubem geral não fazem mais do que ajustar os parametrosda chamada ao sistema de um modo bem definido edepois passar o controle para o sistema operacional.

Mecanismos de chamada ao sistema

• A transferencia de controle costuma ser feita por algumtipo de instrução de interrupção de software(comumente chamada “trap”). Essas instruçõesespeciais fazem a CPU salvar o estado corrente damaquina e transferir o controle para uma função nosistema operacional. Ao receber a transferencia decontrole, o SO em geral suspende o processosolicitante. Posteriormente, quando a solicitação foratendida, o processo solicitante é retomado e osresultados da chamada ao sistema são retornados deum modo bem definido.

Page 11: Sistemas operacionais

26/02/2015

11

EXEMPLOS DE SISTEMAS OPERACIONAIS

CTSS

• Alguns pesquisadores do MIT, compararam que oprocessamento em batch e o escalonamento rudimentareram formas ineficazes de usar as máquinas. Emconsequencia, sugeriram desenvolver um sistemaoperacional com compartilhamento de tempo para o IBM7094. O resultado desse estudo foi o Compatible Time-Sharing System (CTSS), um dos primeiros SO comcompartilhamento de tempo. Esse SO foi mostrado em1961e continuou até 1973. A palavra “compatible”(compatível) vem do fato que o CTSS permitia que osistema em batch nativo, o FORTRAN Monitor System(FMS), fosse executado como um job em segundo planoem conjunto com os jobs que compartilham o tempo.

Page 12: Sistemas operacionais

26/02/2015

12

CTSS - Organização

• O CTSS é estruturado como conjunto demódulos que são ligados a um supervisorno momento do carregamento. Cada umadas principais funções do SO é fornecidapor um ou mais módulos. Essas funçõestambém incluem o interpretador decomandos e alguns programas queprocessam comandos do sistema.

CTSS – Efetuando boot

• O carregador para o CTSS usa um cartão perfuradocomo entrada, que contem o nome de um arquivo decontrole. Esse arquivo contem uma lista dos nomes dosarquivos dos módulos que devem ser carregados paraformar o supervisor. Ao manter vários arquivos decontrole, o sistema pode ser iniciado com qualquer dasvárias configurações simplesmente fornecendo umcartão de controle diferente em tempo de boot. Issofacilita o teste de novas implementações de um móduloqualquer e a reversão fácil para uma versão anterior.

Page 13: Sistemas operacionais

26/02/2015

13

Multics

• Na decada de 1960, existiam claramente sistemas computacionais multimilionários e exigiam operadores altamente qualificados. Uma linha de pensadores dizia que deveriamos enxergar esses recursos da mesma forma que fazemos com o sistema telefonico ou com a rede eletrica. Ou seja, por razões de eficiencia, o poder computacional deveria ser fornecido aos clientes por meio de concessionarias de computação.

• Foi nesse mundo que nasceu o Multics (Multiplexed information andcomputing service). Com base no CTSS, começaram o desenvolvimento de um novo SO que desse suporte a essa concessionaria de computação. Para esse SO era necessario algumas caracteristicas:

– Acesso remoto;

– Armazenamento confiável de arquivos;

– Mecanismos de proteção confiáveis;

– Modelos de uso flexivel tanto para grandes como para pequenos clientes.

Multics

• O multics foi desenvolvido em uma linguagem de alto nível, o PL/I.

• Para dar suporte a esse tipo de uso, foi desenvolvido um novomodelo de computador, o General Electric GE-645, contruidoespecialmente para o Multics. Após o Multics rodava no Honeywell6180.

• O trabalho de desenvolvimento do Multics começou em 1964 comuma colaboração entre MIT, a GE e a Bell Labs. A Bell Labs seretirou em 1969 e em 1970 a GE vendeu sua divisao decomputadores para a Honeywell. O desenvolvimento do Multics foicancelado em 1985 e o ultimo SO Multics foi desligado em 30 deoutubro de 2000.

• Muitos dos principais SO desenvolvidos desde então foraminfluenciados, de forma direta ou indireta, pelo Multics.

Page 14: Sistemas operacionais

26/02/2015

14

Multics – Organização

• A organização é descrita como um sistema de nível único. Essa terminologia não refere-se a um SO colocado em uma enorme caixa e fechada com fita. O Multics tem uma estrutura muito bem definida. O termo nivel único aqui se refere à idéia de que partes substanciais da funcionalidade do SO são fornecidas por software estruturado e que se comporta de forma muito semelhante a software de aplicações comuns.

• A fim de atender as questões de proteção que surgem ao se mover para fora a funcionalidade do SO, o Multics implementa um conjunto de anéis de proteção. Quanto mais perto um anel está do hardware (anel de numero menor), maior o privilégio do código nele contido. Apenas o anel 0 pode executar instruções privilegiadas, com aquelas necessárias para modificar o comportamento do gerenciamento de memória e para iniciar operações de E/S.

• Analisando esses anéis em conjunto, temos na prática, uma máquina virtual. A fronteira entre cada par de anéis define uma nova máquina virtual.

Multics – Chamada ao Sistema

• Com a perspectiva da maquina virtual em mente, não vemosdistinção no modo em que as chamadas ao sistemas sãosolicitadas em cada anel. Mas se o código de uma camada chama ocodigo de uma camada inferior, isso precisa ser feito por meio deuma porta de chamada (call gate), que é um mecanismo especialdo hardware de gerenciamento de memória.

• Quando uma função faz uma chamada por meio dessa porta, ela sótem permissão de chamar os pontos de entrada válidos nosegmento de destino, e o código chamado é executado no novoanel inferior. O efeito é a transferencia de controle para os pontosde entrada selecionados no codigo mais privilegiado, o que é, afinalde contas, que as chamadas ao sistema fazem.

Page 15: Sistemas operacionais

26/02/2015

15

RT-II

• Ao longo dos mais de 30 anos nos quais o PDP-11 foi fabricado e comercializado, primeiro pelaDigital Equipament Corporation (DEC) e depoispela Mentec, Inc., vários SO estiveramdisponiveis para ele. Um deles era o RT-11, umSO pequeno, monousuário, focado emaplicações de tempo real. Foi desenvolvido apartir da versão 1, lançada em 1973, até aversão 5.7, lançada em 1999.

RT-11 - Organização

• A essência da funcionalidade do SO no RT-11 éfornecida por uma coleção de códigosidentificados como monitor residente (RMON),monitor de teclado (KMON), vários tradutores dedispositivos e a rotina de serviço do usuário(USR)

• Um aspecto interessante do RT-11 é a suacapacidade de ser executado com algunsdesses componentes não residentes namemória.

Page 16: Sistemas operacionais

26/02/2015

16

UNIX (sexta edição)

• Projetistas da Bell, Ken Thompson e DennisRitche;

• Sistema Operacional para o Computador PDP-7;

• Thompson, incluiu no novo SO suas melhoresidéias que tinha em cima do Multics. Surgiu-seassim o UNIX.

• Em 1974, o UNIX tinha sido portado para oPDP-11, reescrito na recém-desenvolvidalinguagem C.

UNIX - Organização

• O UNIX sempre usou uma organizaçãomonolítica clássica. Por possuir a base em cimado PDP-11, o sistema não é muito grande e amodularidade disponível na linguagem C ésuficiente em si mesma para organizar o Kernel.Especificamente, cada componente funcionalprincipal está contido em um único arquivo decódigo-fonte. A criação e o escalonamento deprocessos ficam em um único arquivo-fonte. Oefeito é um sistema pequeno com uma estruturalimpa e simples.

Page 17: Sistemas operacionais

26/02/2015

17

UNIX – Chamada ao sistema

• As chamadas ao sistema não são tratadas exatamentedo mesmo modo que as chamadas das funçõescomuns. Na linguagem C, uma chamada ao sistema,como fork(), é, na verdade, uma chamada de funçãocomum, mas a função chamada é apenas uma funçãode biblioteca pequena. Essa função de biblioteca é ocódigo que realmente emite a chamada ao sistema. Elafaz isso executando uma instrução trap, que é umafamilia de instruções.

VMS

• Baseado em cima da arquitetura VAX.

• Com o lançamento do computador da DEC, o VAX de 32 bits, tendocomo efeito dessa mudança o aumento de espaço de memóriadiretamente endereçável de 64KB para 4GB. O novo SO visavaatender a todas as necessidades de todas as aplicações do VAXem contraste com os SO que por hora eram suportadas pelo PDP-11.

• Em 1992, a DEC lança uma nova arquitetura de 64bits projetadapara substituir o VAX, essa arquitetura é a Alpha. Com essa novaarquitetura o VMS recebeu o novo nome de OpenVMS.

• E Desde então o desenvolvimento continuou no OpenVMS mesmoapós a compra da DEC pela Compaq e subsequente fusão Compaqe a Hewlett-Packard.. Desde a fusão, o OpenVMS foi transferidopara o Intel Itanium.

Page 18: Sistemas operacionais

26/02/2015

18

VMS - Organização

• O VMS é altamente modular, bem semelhante ao CTSS.

• Escrita em partes em Bliss, C e Macro-32 (assembler).

• Nesses casos, a linguagem de montagem do VAX é tratada comose fosse uma linguagem de alto nível e processada por um tradutor(um compilador na verdade) que converte em linguagem demaquina do Alpha ou do Itanium.

• Um módulo base contido no arquivo SYS.EXE fornece ainfraestrutura na qual todos os outros módulos são montados.

• O SYS.EXE e todos os outros módulos que compõem o SO sãocarregados durante o processo de bootstrapping e inicialização.

VMS - Organização

• O VAX suporta os quatro modos de processamento aseguir, que o VMS usa para criar uma graduação emcamadas e proteção similar ao do Multics:– Kernel: a maioria das funções típicas de SO é executada em

modo kernel.

– Executivo: usado pelo sistema de gerenciamento de registros(RMS) e algumas outras chamadas ao sistema de alto nível.

– Supervisor: o interpretador de linha de comandos é executadono modo supervisor.

– Usuário: outros processos do usuário são executados no modousuario.

Page 19: Sistemas operacionais

26/02/2015

19

VMS - Organização

• O projeto do sistemas de arquivos do VMS mereceatenção especial. O suporte ao sistema de arquivos éfornecido pelos Ancillary Control Processes (ACPs).

VMS – Efetuando o boot

• O boot segue em multiplos estagios. O programa de bootstrap doprimeiro estágio é chamado de VMB. Sua responsabilidadeprincipal é localizar e carregar o programa SYSBOOT.EXE. Esseprograma carrega o SYS.EXE e vários outros módulos quefornecem um nível básico de funcionalidade do kernel. O sistemaagora pode executar o EXE$INIT, que faz o kernel ser executadonormalmente. Ele carrega os módulos restantes do kernel e inicia osistema de gerenciamento de memória. Seu ultimo passo é seconfigurar para retornar ao SCH$SCHED, que é o escalonador. Oefeito disso é o inicio do compartilhamento de tempo. Quando ocompartilhamento de tempo começa, o único processo disponível éo swapper. Uma de suas tarefas é a de iniciar o processo SYSINIT,que realiza o restante das inicializações em modo usuário.

Page 20: Sistemas operacionais

26/02/2015

20

VMS – Chamadas ao sistema

• As chamadas de função normais são enviadas para osvetores de transferencia de SYS.EXE, que é mapeadono espaço de memória do processo. Depois da entrada,o vetor de transferencia emite uma instrução de troca demodo para trocar o modo do processamento da mesmaforma que uma interrupção de software faz. O tratadorde interrupção do kernel para a instrução de troca demodo envia a solicitação para a rotina adequada deserviço do sistema. Isso permite que o programa deaplicação seja criado sem o uso de qualquer instruçãoespecial.

BSD

• Baseado no UNIX

• Possui distribuições gratuitas conhecidas:– FreeBSD, NetBSD, OpenBSD e

DragonflyBSD.

Page 21: Sistemas operacionais

26/02/2015

21

BSD - Organização

• Semelhante ao UNIX

• Apenas diferente na organização do código de origem é um efeito do suporte para CCI Power 6.

BSD – Chamadas ao sistema

• Usa a instrução chmk, que troca o modo do processadorpara o modo kernel.

Page 22: Sistemas operacionais

26/02/2015

22

Windows NT

• Linha de SO da Microsoft que teve a versão 3.5 lançada em 1993. Na evolução seguiu-se até a 2000 e releases do NT foram para no Windows XP lançado em 2001. O release mais recente do Windows chama-se Windows 7.

Windows NT - Organização

• Está estruturado como sistema monolítico com algumas camadas.

• É escrito predominantemente em C.

• A funcionalidade principal do SO está estruturada em três camadas.– A camada inferior se chama Hardware Abstraction Layer (HAL).

– A segunda camada contém código que a Microsoft chama de kernel e qualquerdriver de dispositivo carregado.

– A terceira camada é a chamada de executivo.

Page 23: Sistemas operacionais

26/02/2015

23

Tiny OS

• Foco em dispositivos muito pequenos.

• É estruturado de um modo incomum. O código da aplicação e o código principal do TinyOs são complilados juntos em uma única imagem colocada no dispositivo.

• Os componentes desenvolvidos para o TinyOS são escritos em nesC.

Xen

• A idéia por trás do projeto era fornecer uma coleção de servidores disponiveispublicamente, na qual qualquer pessoa pudesse executar seu código.

• O Xen não é em si um SO, embora tenha várias caracteristicas em comum com esse. Em alguns aspectos, ele é similar ao VM.