2 - Organização do Sistema Operativo

Principais Elementos da Arquitectura de ... Programas de sistema fornecem funções básicas ... Executam no ambiente de um sistema operativo...

3 downloads 386 Views 545KB Size
2 - Organização do Sistema Operativo

Prof. Ricardo Silva

Sumário ●

Principais Elementos da Arquitectura de Sistemas Operativos



Núcleo



Chamadas ao sistema



Processos de sistema



Evolução da organização do núcleo



Sistemas de referência

S. Operativos e S. Distribuídos

Prof. Ricardo Silva

2

2.1 – Arquitectura do Sistema Operativo

Aplicações

Processos sistema

Biblioteca de chamadas ao sistema Barreira de Protecção Núcleo do Sistema Operativo

S. Operativos e S. Distribuídos

Prof. Ricardo Silva

3

2.1 – Organização do Sistema Operativo ●

Núcleo do SO –



Biblioteca de chamadas ao sistema –



O núcleo ou kernel corresponde aos programas que implementam as funcionalidades básicas do SO A interface programática que estabelece a ligação entre as aplicações e o SO

Processos de sistema –

Processos de sistema que executam fora do núcleo mas pertencem ao software de sistema

S. Operativos e S. Distribuídos

Prof. Ricardo Silva

4

2.2 – Núcleo ou Kernel ●

No núcleo residem a maioria dos mecanismos de base do SO –

Gestão de processos e sincronização



Gestão de memória



Gestão de I/O



Gestão de ficheiros



Comunicação entre processos

S. Operativos e S. Distribuídos

Prof. Ricardo Silva

5

Organização do Núcleo

Biblioteca de funções do sistema Gestão de Gestão de Gestão de Sistema de Comunicação processos memória periféricos ficheiros entre processos

Hardware

S. Operativos e S. Distribuídos

Prof. Ricardo Silva

6

Gestão de processos ●



Um processo inclui um contexto de execução (código, dados, PC, registos, recursos em uso, etc) que é necessário gerir. As maiores actividades do SO face aos processos: –

Criar e remover processos de utilizador e sistema



Suspensão e resumo de execução de processos



Sincronização de processos



Comunicação de processos



Gestão de deadlocks (quando dois processos ficam à espera, simultâneamente, que o outro liberte um recurso)

Gestão de memória ●



Cada byte da memória principal tem um endereço para que o seu conteúdo possa ser acedido pelo processador. As maiores actividades do SO face à memória: –

Saber quais as parte da memória que estão em uso e por quem



Decidir quais os processos que são colocados em memória quando esta fica disponível



Alocar e libertar espaço de memória quando necessário

Gestão de ficheiros ●





Os computadores podem guardar ficheiros em dispositivos de armazenamento secundário por períodos longos de tempo Cada dispositivo de armazenamento secundário tem as suas propriedades (velocidade, capacidade, velocidade de transferência de dados, tempo de acesso, etc) As maiores actividades do SO face à gestão de ficheiros –

Criar e remover ficheiros



Criar e remover directórios



Suportar primitivas de manipulação de ficheiros e directórios



Gerir o espaço disponível

Gestão sistema I/O ●



O sistema de I/O esconde as especificidades dos dispositivos de hardware ao utilizador ou programas Só o device driver conhece essas especificidades e permite a comunicação entre os dispositivos de hardware e os programas através do SO

Gestão de armazenamento secundário ●

Os sistemas têm vários níveis de armazenamento –





Primário, secundário e cache

Instruções e dados têm de estar no nível primário e cache para serem utilizados por um programa em execução As maiores actividades do SO face ao armazenamento secundário –

Gerir o espaço livre



Alocar espaço quando for necessário escrever ficheiros



Agendar os pedidos de acesso

Gestão de rede ●





Um sistema distribuído é um conjunto de processadores que não partilham memória, periféricos ou um relógio Os processadores comunicam através de linhas de comunicação chamadas redes Um SO de um sistema distribuído tem de se ocupar de –

Routing



Estabelecimento de conexões



Contenção (competição por recursos)



Segurança

Protecção do sistema ●



Se um computador tem vários utilizadores e permite a execução concorrente de múltiplos processos então, os processos têm de ser protegidos das acções de outros Têm de existir mecanismos que regulem o acesso de programas, processos ou utilizadores aos recursos disponibilizados pelo sistema

Sistema de interpretação de comandos ● ●



É um interface entre o SO e o utilizador O utilizador dá comandos que são executados pelo SO (convertendo-os em chamadas ao sistema) Não faz parte do kernel. Porquê? –

Se quiser modificar a aparência do interface não necessito modificar o modo de funcionamento do kernel



É possível que um comando malicioso possa tomar controlo de partes do kernel

Serviços do SO ●

Os seguintes serviços estão disponíveis pelo SO –

Execução de programas



Operações de I/O



Manipulação do sistema de ficheiros



Comunicação



Detecção de erros

Execução de programas ●



O propósito de um computador é permitir que um utilizador execute programas O SO providencia um ambiente transparente e conveniente aos utilizadores –





Não têm de se preocupar com alocação de memória ou multitasking

Executar programas envolve alocar e libertar memória, gerir tempo de processador, etc. Estas funções não podem ser atribuídas aos programas de utilizadores Os programas de utilizador necessitam da ajuda do SO para executarem

Operações de I/O ●





Todos os programas requerem um input e devolvem um output O SO esconde os detalhes do hardware dos dispositivos de I/O Para maior eficiência e protecção os utilizadores não podem controlar os dispositivos de I/O

Manipulação do sistema de ficheiros ●





Um programa pode receber como input um ficheiro ou retornar um ficheiro como output Os programas não têm de perceber a forma como é feita a gestão de espaço em disco ou o agendamento de operações de leitura/escrita A velocidade das operações de I/O depende da gestão feita pelo SO

Comunicação ●



Os processos podem ter de comunicar com outros processos através de redes de comunicação O SO gere o processo de comunicação –



Estabelecimento de ligação, transmissão de dados, detecção de erros de transmissão, segurança, etc

Este processo também envolve a comunicação com hardware específico

Detecção de erros ●





Os erros fazem parte da normal operação do sistema mas podem causar uma falha fatal Para evitar esta situação, o SO monitoriza constantemente o sistema para detectar erros. Isto permite que os erros não se propaguem e se tornem fatais É um processo muito crítico e por isso não são permitidos processos de utilizador que interfiram com este serviço

Chamadas ao sistema e processos de sistema ●







Chamadas ao sistema (system calls) providenciam uma interface entre um processo e o SO Permitem que um processo de utilizador peça um serviço ao SO que ele, por si só, não tem permissão para executar O SO recebe o pedido, entra em modo de kernel para executar o pedido e retorna o resultado ao processo Programas de sistema fornecem funções básicas (editores, compiladores, shells, etc)

Processos ●

Um processo é um programa em execução



Um processo inclui –

O valor do registo PC (program counter)



O conteúdo dos registo do CPU



O valor das variáveis



O stack de processo (subrotinas, endereços de retorno, valores temporários, etc)



Dados do processo

Contexto de um processo ●

Consiste em tudo necessário para resumir a execução do processo –

Código do programa



Dados estáticos do programa



Dados dinâmicos do programa



Stack de processo



Valores dos registos



Valor registo PC (program counter)



Valor registo PSW (program status)



Recursos do SO em uso

Estados de um processo ● ●







New state – o processo é criado Running state – está a ser executado pelo CPU Blocked (ou Waiting) state – está à espera de algum evento Ready state – está à espera do seu tempo de processador Terminated state – terminou a execução

Operações de processos ●



Criação de processos –

Inicialização do sistema



Chamada ao sistema que pede a criação de um processo por outro processo



Um pedido de utilizador



Batch job

Término de processos –

Terminaram a execução



Erro de execução – ex. Aceder a um ficheiro inexistente



Erro fatal – ex. Divisão por zero



Morto por outro processo

2.2.1 – Suporte de Hardware de execução do núcleo ●

Um dos princípios básicos de segurança de um SO é garantir o isolamento da execução dos processos do núcleo –

Nenhum processo de utilizador pode aceder ao espaço de memória de processos de núcleo ●





É garantido através de espaços de endereçamento disjuntos, impostos por Hardware

Existem dois modos de execução na CPU ●

Modo núcleo



Modo utilizador

A comutação entre modos de execução é conseguida por interrupções e excepções

2.2.1 – Suporte de Hardware de execução do núcleo ●



Excepção –

Provocada por um acontecimento não expectável



Ex: divisão por zero; tentativa de aceder a um endereço proibido

Interrupção –

Provocada pela execução de uma instrução de programa



Ex: esperar por input

2.3 – Chamadas Sistema ●





Todas as operações do SO têm de ser executadas através da invocação de chamadas de sistema fornecidas pelo SO É uma forma de as aplicações invocarem funções que só executam em modo de núcleo As chamadas de sistema frequentemente utilizam uma instrução especial que faz com que a CPU transfira o controle para o modo de núcleo –

Quando a chamada de sistema é invocada, o programa que a invocou é interrompido, e a informação necessária para continuar a sua execução é salva



O processador inicia a execução do código de maior privilégio



Quando a chamada termina, o controle retorna para o programa, o estado previamente salvo é restaurado, e o programa continua a sua execução

2.4 – Processos Sistema ●

O núcleo é uma estrutura muito complexa –

Tudo o que é acessório deve ser executado fora do modo de núcleo para aumentar a segurança e a performance



Só os processos mais importantes para a gestão do SO devem executar em modo de núcleo



Os processos (essenciais) de núcleo são criados durante o bootstrap





Em UNIX, processos deamon



Em Windows, processos system

A tendência da evolução dos SO é de colocar cada vez menos processos a executar em modo de núcleo

2.5 – Evolução da Organização do Núcleo ●

Núcleos monolíticos



Micro núcleos



Núcleos Hibridos



Máquinas virtuais

2.5.1 – Núcleos Monolíticos ●





É uma arquitectura de núcleo onde todo o núcleo é executado no espaço de núcleo no modo de supervisão. Funções do SO estruturados em módulos –

Alguns SO's permitem a adição ou remoção de módulos ser ser necessário efectuar o reboot à máquina (+ escaláveis).



Permitem que um módulo só seja incluído quando necessário, minimizando o consumo de recursos do SO.



Apesar de da estruturação em módulos, a ocorrência de um erro num módulo pode comprometer a execução de outros módulos.

Exemplos: Unix, Linux, DOS, MAC OS < 8.6, OpenVMS

2.5.1 – Núcleos Monolíticos

Barreira de protecção

2.5.2 – Micronúcleo ou microkernel ●









Tudo o que é não essencial executa em modo de utilizador na forma de servidores. Apenas as funções mais básicas do SO executam em modo supervisor (comunicação entre processos, gestão de memória virtual e gestão de processos) A abordagem de chamadas ao sistema através de servidores tende a oferecer uma performance pior que a oferecida pelos núcleos monolíticos. São os SO's mais seguros e evoluídos usados para funções críticas (ex: Controlo de centrais nucleares) SO's de micro núcleo: Hurd, Minix, Mach, QNX

2.5.2 – Micro núcleo

2.5.3 – Núcleos híbridos ●







Consiste numa arquitectura que tenta produzir um microkernel através de uma abordagem monolítica Muitos serviços do SO executam em modo de kernel Não se obtêm benefícios claros, muitos autores consideram mesmo que é apenas uma forma de marketing. SO's de núcleos híbridos: Beos, BSD, NT kernel (usado em Windows NT 3.1, Windows NT 3.5, Windows NT 4.0, Windows 2000, Windows Server 2003, Windows XP, Windows Vista, Windows Server 2008, Windows 7)

2.5.3 – Núcleos híbridos

Comparação Geral

2.5.4 – Máquinas Virtuais ●





Uma máquina virtual é uma componente de software capaz de executar aplicações, fazendo-as crer que de facto executam sobre uma máquina real. A máquina virtual faz uso dos recursos da máquina real e usa técnicas de virtualização que permitem “enganar” a aplicação. Existem linguagens de programação que compilam os programas para serem executados por uma máquina virtual. –

Java



.NET

JAVA vs .NET

2.5.4 – Máquinas virtuais ●

Outra abordagem consiste na emulação por software do Hardware. –

Máquinas virtuais Tipo 1 ●

Executam directamente sobre o Hardware –



IBM z/VM

Máquinas virtuais Tipo 2 ●

Executam no ambiente de um sistema operativo – – – – –

Xen VMWare VirtualPC Virtualbox DOSBox

2.5.4 – Máquinas virtuais ●

Vantagens –

Robustez / Segurança ● ●



Flexibilidade ● ● ●



As vulnerabilidades do SO apenas comprometem a MV Depuração e análise do desempenho Execução simultânea de vários SO's Independencia do Hardware da máquina hospedeira Agregação da MV num único ficheiro

Eficiência / Produtividade ● ●

Aproveitamento mais eficiente do Hardware Possibilidade de efectuar load balancing

2.6 – Sistemas de Referência

Trabalho prático 1 Documento explicativo da evolução histórica dos SO's Unix e Windows