Um sistema operativo é um sistema/programa base que é executado pelo sistema computacional.
- Controla diretamente o
hardware
- Providencia uma camada de abstração para que os restantes programas possam interagir com o
hardware
de forma indireta
Podem ser classificados em dois tipos:
- gráficos:
- utilizam um contexto de janelas num ambiente gráfico
- os elementos principais de interação são os ícones e os menus
- a principal ferramente de
input
da interação humana é o rato
- textuais (shell):
- baseado em comandos introduzidos através do teclado
- uma linguagem de scripting/comandos1
Os dois tipos não são mutualmente exclusivas.
- Windows: sistema operativo gráfico que pode lançar uma aplicação para ambiente textual
- Linux: sistema operativo textual que pode lançar ambiente gráfico
Os sistemas de operação podem ser vistos segundo duas perspectivas:
Extended Machines
Resource Manager
O sistema operativo fornece níveis de abstração (APIs) para que os programas possam aceder a partes físicas do sistema, criando uma "máquina virtual":
- Os programas e programadores têm uma visão virtual do computador, um modelo funcional
- Liberta os programadores de serem obrigados a saber os detalhes do hardware
- Acesso a componentes do sistema mediado através de
system calls
- Executa o core da sua função em root (com permissões de super user)
- Existem funções que só podem correr em super user
- Todas as chamadas ao sistema são interrupções
- Interface uniforme com o
hardware
- Permite as aplicações serem portáteis entre sistemas de computação estruturalmente diferentes
- O sistema operativo controla o espaço de endereçamento físico criando uma camada de abstração (memória virtual)
- Criar um ambiente interativo que sirva de interface máquina-utilizador
- Disponibilizar mecanismos para desenvolver, testar e validar programas
- Disponibilizar mecanismos que controlem e monitorizem a execução de programas, incluindo a sua intercomunicação e e sincronização
- Isolar os espaços de endereçamento de cada programa e gerir o espaço de cada um deles tendo em conta as limitações físicas da memória principal do sistema
- Organizar a memória secundária 2 em sistema de ficheiros
- Definir um modelo geral de acesso aos dispositivos de I/O, independentemente das suas características individuais
- Detetar situações de erros e estabelecer protocolos para lidar com essas situações
Sistema computacional composto por um conjunto de recursos:
- processador(es)
- memória
- principal
- secundária
- dispositivos de I/O e respetivos controladores
O sistema operativo é visto como um programa que gere todos estes recursos, efetuando uma gestão controlada e ordenada dos recursos pelos diferentes programas que tentam aceder a estes. O seu objetivo é maximizar a performance do sistema, tentando garantir a maior eficiência no uso dos recursos, que são multiplexados no tempo e no espaço.
Primórdios : Sistema Electromecânico
-
1ª Geração: 1945 - 1955
- Vacuum tubes
- electromechanical relays -No operating system -programed in system
- Program has full control of the machine
- Cartões perfurada (ENIAC)
-
2ª geração: Transistores individuais
-
4ª Geração (1980 - presente)
Technology Notes LSI/VLSI Standard Operation systems (MS-DOS, Macintosh, Windows, Unix) personal computers (microcomputers) Network operation systems network -
5ª Geração (1990 - presente)
Technology | Notes |
---|---|
Broadband, wireless | mobile operation systems (Symbian, iOS, Android) |
system on chip | cloud computing |
smartphone | ubiquitous computing |
- Processamento em série
- Batch Processing
- Single
- Multiprogrammed batch
- Time-sharing System
- Real-time system
- Network system
- Distributed System
- Propósito: Otimizar a utilização do processador
- Método de Otimização: Enquanto um programa está à espera pela conclusão de uma operação de I/O, outro programa usa o processador
- Propósito:
- Proporcionar uma interface
user-friendly
- Minimizar o tempo de resposta a pedidos externos
- Proporcionar uma interface
- Método:
- Vários utilizadores mas cada um no seu terminal
- Todos os terminais têm comunicação direta e em simultâneo com o sistema
- Usando multiprogramação, o uso do processador é multiplexado no tempo, sendo atribuído um time-quantum a cada utilizador
- No
macrotempo
é criada a ilusão ao utilizador que possui o sistema só para si
- Propósito: Monitorizar e (re)agir processo físicos
- Método: Variante do Sistema Interativo que permite import limites máximos aos tempos de resposta para diferentes classes de eventos externos
- Propósito: Obter vantagem com as interconexões de
hardware
existentes de sistemas computacionais para estabelecer um conjunto de serviços comuns a uma comunidade.
A máquina é mantêm a sua individualidade mas está dotada de um conjunto de primitivas que permite a comunicação com outras máquinas da mesma rede:
- partilha de ficheiros (ftp)
- acesso a sistemas de ficheiros remotos (NFS)
- Partilha de recursos (e.g. impressoras)
- Acesso a sistemas computacionais remotos:
- telnet
- remote login
- ssh
- servidores de email
- Acesso à internet e/ou Intranet
- Propósito: Criar uma rede de computadores para explorar as vantagens de usar sistemas multiprocessador, estabelecendo uma cada de abstração onde o utilizador vê a computação paralela distribuída por todos os computadores da rede como uma única entidade
- Metodologia: Tem de garantir uma completa transparência ao utilizador no acesso ao processador e outros recursos partilhados (e.g. memória, dados) e permitir:
- distribuição da carga de
jobs
(programas a executar) de forma dinâmica e estática - automaticamente aumentar a sua capacidade de processamento de forma dinâmica se
- um novo computador se ligar à rede
- forem incorporados novos processadores/computadores na rede
- a paralelização de operações
- implementação de mecanismos tolerantes a falhas
- distribuição da carga de
- Mainframe
- Servidor
- Multiprocessador
- Computador Pessoal
- Real time
- Handheld
- Sistemas Embutidos
- Nós de sensores
- Smart Card
- Habilidade de um computador executar simultaneamente um ou mais programas
- Necessita de possuir uma estrutura multicore
- Ou processadores com mais que um core
- Ou múltiplos processadores por máquina
- Ou uma estrutura distribuída
- Ou uma combinação das anteriores
Se um sistema suporta este tipo de arquitectura, suporta multiprocessamento
O multiprocessamento pode ser feito com diferentes arquitecturas:
- SMTP - symmetric processing (SMP)
- Computadores de uso pessoal
- Vários processadores
- A memória principal é partilhada por todos os processadores
- Cada core possui cache própria
- Tem de existir mecanismos de exclusão mútua para o hardware de suporte ao multiprocessamento
- Cada processador vê toda a memória (como memória virtual) apesar de ter o acesso limitado
- Planar Mesh
- Cada processador liga a 4 memória adjacentes
- Ilusão criada por um sistema computacional de "aparentemente" ser capaz de executar mais programas em simultâneo do que o seu número de processadores
- Os processador(es) devem ser atribuídos a diferentes programas de forma multiplexada no tempo
Se um sistema suporta este tipo de arquitectura suporta multiprogramação
Um sistema operativo deve:
- Implementar um ambiente gráfico para interagir com o utilizador
- Permitir mais do que um utilizador
- Tanto simultânea como separadamente
- Ter capacidade de ser
multitasking
, i.e., executar vários programas ao mesmo tempo - Implementar memória virtual
- Permitir o acesso, de forma transparente ao utilizador, a:
- sistemas de ficheiros locais e/ou remotos (i.e., na rede)
- dispositivos de I/O, independentemente da sua funcionalidade
- Permitir a ligação da máquina por rede a outras máquinas
- Conter um bom conjunto de
device drivers
- Permitir a ligação de dispositivos
plug and play
1
Por estas razões, um sistema operativo é complexo, com milhões de linhas de código. O design e implementação do seu kernel
pode seguir as seguintes filosofias:
- Monolithic
- Layered (por camada)
- Microkernels
- Client-Server Model
- Virtual Machines
- Exokernels
- A perspectiva mais utilizada
- Só existe um único programa a ser executado em
kernel mode
- Um único entry point
- Todos os pedidos ao sistema são feitos usando este
entry-point
- Todos os pedidos ao sistema são feitos usando este
- Comunicação com o sistema através de
syscall
2- Implementadas por um conjunto de rotinas
- Existe ainda outro conjunto de funções auxiliares para a system call
- Qualquer parte do sistema (aka
kernel
) pode "ver" qualquer outra parte do sistema- Vantagem: eficiência no acesso a informação e dados
- Desvantagem: Sistema difícil de testar e modificar
- Perspetiva modular
- O sistema operativo é constituído por um conjunto de camadas, com diferentes níveis hierárquicos
- A interação só é possível entre camadas adjacentes
- Uma função da camada mais superior não pode chamar uma função da camada mais abaixo
- Tem de chamar uma função da camada imediatamente abaixo que irá tratar de chamar funções das camadas mais abaixo (estilo
sofs
)
- Não é simples de projetar
- É preciso definir claramente que funcionalidades em que camada, o que pode ser difícil de decidir
- Fácil de testar e modificar, mas uma grande perda de eficiência
- A eficiência pode piorar se a divisão de funções não for bem feita
- Existe um
overhead
adicional causado pelo chamada de funções entre as várias camadas
- Facilita a divisão de funções entre o modo de utilizador e o modo de
kernel
Layer | Function |
---|---|
5 | Operador |
4 | Programas do Utilizador |
3 | Gestão de dispositivos de I/O |
2 | Comunicação Operator- Process |
1 | Memory and drum management |
0 | Alocação do processador e gestão do ambiente multiprogramado |
: Estrutura de um sistema operativo por camadas - Retirada do livro Modern Operating Systems, Andrew Tanenbaum & Herbert Bos
- Posso ter modularidade sem ser obrigado a usar camadas em níveis hierárquicos diferentes
- Defino um conjunto de módulos de "pequena dimensão", com funcionalidades bem definidas
- apenas o
microkernel
é executado emkernel space
, com permissões deroot
- todos os outros módulos são executados em
user space
e comunicam entre si usando os mecanismos de comunicação providenciados pelomicrokernel
- Os módulos que são executados em
user space
podem ser lançados no startup ou dinamicamente à medida que são precisos (dispositivosplug-and-play
1)
- apenas o
- O
microkernel
é responsável por:- Gestão de Processos
- Gestão da Memória
- Implementar sistemas simples de comunicação interprocess
- Escalonamento do Processador (Processor Scheduling)
- Tratar das interrupções
- Sistema robusto
- Manipulação de um filesystem é feita em
user space
. Se houver problemas a integridade do sistema físico não é afetada
- Manipulação de um filesystem é feita em
- Criam plataformas virtuais onde podem ser instalados
guess OSs
- Existem dois tipos de hypervisors
- Type-1 (
native hypervisor
): executa oguest OS
diretamente nohardware
da máquinahost
(máquina física onde a máquina virtual vai ser executada). Exemplos:- z/VM
- Xen
- Hyper-V
- VMware ESX
- Type-2 (
hosted supervisor
): executa oguest OS
indiretamente nohardware
da máquina, sendo a máquina virtual executada "em cima" do sistema operativo dohost
. Exemplos:- VirtualBox
- VMware Workstation
- Parallels
- Type-1 (
- Existem exemplos de
hypervisors
híbridos, que tanto podem ser executar oguest OS
indiretamente (por cima do sistema operativo) ou diretamente nohardware
da máquina:- KVM
- bhyve
- Implementação modular, baseada na relação cliente-servidor
- A comunicação é feita através de pedidos e respostas
- Para isso é usada
message-passing
- Pode estar presente um
microkernel
que manipula operações de baixo nível - Pode ser generalizado e usado em sistemas
multimachine
- Usa um
kernel
com funcionalidades reduzidas- Apenas providencia algumas abstrações de
hardware
- Apenas providencia algumas abstrações de
- Segue a filosofia de "Em vez de clonar a máquina virtual, divido-a"
- Os recursos são divididos em partições, em vez de clonados
- Os recursos são alocados às
virtual machines
e a sua utilização é controlada pelomicrokernel
- Permite a implementação de camadas de abstração personalizadas consoante as necessidades
- Eficiente: Poupa uma camada destinada a efetuar o mapeamento
Legenda:
trap
: interrupção por software (única instrução que muda o modo de execução)buffercache:
espaço do disco onde são mantidos todos os ficheiros em cache (aka abertos)- desmontar uma pen: forçar a escrita da buffer cache para a pen
Unix considera tudo como sendo ficheiros: - ou blocos (buffer cache) - ou bytes
open
, close
, fork
não são system calls. São funções de biblioteca que acedem às system call
(implementadas no kernel
). São um interface amigável para o utilizador ter acesso a estas funcionalidades.