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