Você está na página 1de 55

Sistemas Operativos

Introdução
Prof. José Rogado
jose.rogado@ulusofona.pt

Universidade Lusófona

Lições de Sistemas Operativos 1.1


Programa da Cadeira
 Introdução
 Conceito de Sistema Operativo
 Funcionalidades e Mecanismos
 Serviços e Arquitectura do SO
 Serviços e Interfaces
 Excepções, APIs e Chamadas Sistema
 Arquitectura e Implementação
 Gestão de Processos
 Processos e Fluxos de Execução
 Conceito de Processo Ligeiro (thread)
 Escalonamento do CPU
 Sincronização de Processos
 Bloqueios (Deadlocks)
 Gestão de Memória Primária
 Memória Física
 Memória Virtual

Lições de Sistemas Operativos 1.2


Programa da Cadeira (cont.)

 Gestão de Memória de Armazenamento


 Sistemas Gestão de Ficheiros (SGF)
 Implementação de SGFs
 Estrutura da Memória de Armazenamento
 Subsistemas de Entradas e Saídas (E/S)
 Exemplos de Sistemas Operativos
 Os pontos acima referidos serão ilustrados através de
exemplos retirados dos sistemas Linux e Windows

Lições de Sistemas Operativos 1.3


Algumas Dicas …

 A Cadeira de Sistemas Operativos é importante num curso de


Eng.ª Informática
 Uma boa base em SO é uma grande vantagem para uma
sólida formação em Sistemas Informáticos em geral
 Todos os dispositivos precisam de um Sistema Operativo
 Cadeira em que é necessário estudar e utilizar frequentemente
capacidades de abstracção
 É muito importante acompanhar as Aulas Teóricas onde serão
apresentados os conceitos fundamentais dos SOs.

Indispensáveis para tirar partido das práticas!
 As aulas práticas vão concretizar os conceitos teóricos através de
exemplos ou simulações.
 A associação entre teóricas e práticas é importante perceber a
matéria!
 A assiduidade é fundamental para o sucesso na cadeira!!

Lições de Sistemas Operativos 1.4


Método de Avaliação
 Aulas Teóricas

A assiduidade beneficia a apreciação final
 Aulas Práticas Laboratório

A assiduidade às aulas práticas é essencial para a realização dos
trabalhos do Laboratório
 Não é possível fazer os trabalhos sem ir às aulas práticas
 Aprovação na Cadeira: nota final de 10 valores
 Prática 50%
 Trabalhos no laboratório e projecto com avaliação individual
 Teórica 50%
Mini Testes, Apresentações e Frequência Final

 As notas parcelares não são arredondadas
 Notas dos trabalhos, nota prática, nota teórica
 Arredondamento só é feito depois de calculada a média
 Notas inferiores a 8 são eliminatórias e implicam a realização de
exame na respectiva componente

Lições de Sistemas Operativos 1.5


Referências Bibliográficas
 As aulas seguem vários livros
 "Operating Systems: Internals and Design Principles", 9th ed 2017,
de W. Stallings, Ed. Prentice Hall, ISBN-13: 978-1118063330
 “Modern Operating Systems”, 4th Edition, 2014. de A: Tanenbaum,
Ed Ed. Prentice Hall, ISBN-13: 978-0133591620
 “Operating Systems Concepts” (9th Edition), de Abraham
Silberchatz, et. al., Ed. Wiley & Sons, 2012; ISBN: 9781118063330.
 Outras Referências Bibliográficas
 Sistemas Operativos, de J. Marques, P. Ferreira, etc., Ed. FCA,
2009, ISBN:978-972-722-575-0
 "Linux Kernel Development" (3rd Edition) de Robert Love, Ed.
Addison Wesley, 2010; ISBN: 0672329468
 Existem sebentas para os dois primeiros capítulos “Lições de Sistemas
Operativos”, à venda na livraria da ULHT (Ed. L)
 Os materiais das aulas teóricas serão colocados à medida no Netlab
 Consultar o site do Netlab: http://netlab.ulusofona.pt/so
 Slides das teóricas, Programa, Referências, Links, Dicas, …

Lições de Sistemas Operativos 1.6


Introdução

 Conceito de Sistema Operativo  Objectivos


 Funcionalidades  Definir conceitos
 Gestão de Processos  Rever conceitos básicos da
arquitectura de
 Gestão de Memória
computadores
 Gestão de Armazenamento
 Apresentar as principais
 Protecção e Segurança funcionalidades do SO
 Integração SO / Hardware
 Arquitectura de um Computador
 Funcionamento do Sistema Operativo
 Tipos de Sistemas Operativos
 Sistemas Distribuídos
 Sistemas Específicos
 Ambientes de Computação

Lições de Sistemas Operativos 1.7


O que é um Sistema Operativo?
 Um “programa” que actua como intermediário entre o utilizador
e o hardware do computador
 Na realidade, uma longa série de programas…
 Papel do SO:
 Tornar o computador utilizável
 Permitir a execução de programas de utilizadores
 Resolver problemas postos pelos utilizadores
 Utilizar o Hardware da forma mais eficiente possível.
 Optimizar processamento
 Optimizar acesso a recursos

Lições de Sistemas Operativos 1.8


Definição de Sistema Operativo (i)

 Não há uma definição única aceite universalmente


 “Tudo o que o fabricante envia no pacote quando é
encomendado um Sistema Operativo”
 Pode variar substancialmente
 O conjunto de programas que está sempre a correr no
computador :
 Núcleo (kernel) do Sistema Operativo
 Programas Sistema (que complementam o SO)
 Aplicações (utilizador)

Lições de Sistemas Operativos 1.9


Definição de Sistema Operativo (ii)

Do ponto de vista das funcionalidades:


 O SO é um alocador de recursos
 Gere todos os recursos do sistema
 Decide entre pedidos de acesso concorrentes a recursos para
garantir utilização eficiente e justa
 O SO é um programa de controle
 Controla a execução de programas prevenindo a ocorrências
de erros e uso impróprio do computador

Lições de Sistemas Operativos 1.10


Componentes de um SO

Lições de Sistemas Operativos 1.11


Ligação SO – Hardware
 Uma vez que o SO gere o Hardware do Computador
 O SO deve estar adaptado às características de cada
computador
 Por outro lado, o mesmo SO deve poder gerir diversos
computadores
 Deve haver uma separação clara das funcionalidades
dependentes do Hardware
 A esta característica dá-se o nome de Portabilidade
 Para compreender o funcionamento de um SO, é necessário
 Compreender a arquitectura de computadores
 Conhecer o funcionamento dos principais componentes
 Processador, memória, E/S, discos, periféricos, etc.…

Lições de Sistemas Operativos 1.12


Principais Conceitos
 O Sistema Operativo realiza a interface entre as aplicações dos
utilizadores e os recursos da máquina física (hardware)
 Cria um conjunto de conceitos (ou abstracções ) que permitem um
acesso facilitado aos recursos físicos
 Processo
 Permite a execução de programas, abstraindo o(s) CPU(s)
 Memória Lógica
 Cria um espaço de armazenamento contínuo e volátil onde
são armazenados os processos, abstraindo a memória física
 Sistema de Ficheiros
 Cria um espaço de armazenamento persistente organizado
hierarquicamente, abstraindo os vários tipos de discos
 Gestores de Periféricos
 Realizam a interacção com o exterior, realizando a gestão dos
dispositivos de I/O (Input/Output) ligados ao computador

Lições de Sistemas Operativos 1.13


Processos
 Um processo é um programa em execução. É uma unidade de
trabalho no seio do sistema.
 Um programa é uma entidade passiva, um processo uma
entidade activa
 Todos os processos activos têm pelo menos um Fluxo de
Execução
 Corresponde ao encadeamento sequencial das instruções do
programa pelo(s) CPU(s)
 Um Processo necessita de recursos para realizar a sua tarefa
 CPU, memória, E/S, ficheiros
 Dados iniciais
 A terminação de um Processo implica a reciclagem dos recursos
reutilizáveis
 Tipicamente, um sistema actual tem múltiplos processos, um ou
mais utilizadores, e um sistema operativo a correr
simultaneamente num ou vários CPUs
 Os CPUs são multiplexados pelos vários processos

Lições de Sistemas Operativos 1.14


Memória Lógica
 Permite a partilha da memória física disponível pelos vários
processos activos
 Responsável pela atribuição e salvaguarda das imagens dos
processos
 Todos os dados residentes em memória antes e depois do
processamento
 Todas as instruções residentes em memórias para execução
 Principais Actividades
 Atribuir ou libertar espaço memória à medida das necessidades
dos processos
 Manter a lista das zonas da memória correntemente utilizadas e
dos processos que as utilizam
 Decidir que processos (ou que partes de processo) devem ser
retirados ou carregados em memória
 Manter um limite de memória livre para realizar as tarefas
ligadas à própria gestão e ao sistema operativo

Lições de Sistemas Operativos 1.15


Armazenamento Permanente
 Permite armazenar dados que não cabem em memória ou que devem
ser mantidos durante períodos longos
 Memória secundária está geralmente em Disco Magnético
 Cada vez mais em suporte electrónico (SSD - Solid State Drive)
 A sua gestão é primordial para o desempenho do sistema
 A velocidade de execução de um computador está grandemente
dependente da performance dos seus discos e da eficiência dos
algoritmos de alocação
 Funcionalidades essenciais:
 Gestão do espaço livre
 Gestão da alocação
 Escalonamento dos acessos disco
 Outros tipos de memória de armazenamento não são tão críticos
 Memória terciária: inclui discos ópticos, drives externas, pens, etc…
 Mas a gestão também é importante e é geralmente realizada pelos
controladores do Sistema Operativo

Lições de Sistemas Operativos 1.16


Sistema de Gestão de Ficheiros
 O Sistema de Gestão de Ficheiros (SGF)
 Abstrai as propriedades físicas dos dispositivos de
armazenamento através da noção de ficheiro
 Os ficheiros são agrupados em directórios
 Implementa controle de acessos para determinar quem
pode aceder a quê e para fazer que operações
 Actividades do SGF incluem
 Gestão do espaço disponível para armazenamento
 Criar e apagar ficheiros e directórios
 Manipulação dos conteúdos (ler, escrever, modificar, …)
 Garantir a coerência da informação armazenada
 Optimização do desempenho (cache, ordenação, …)

Lições de Sistemas Operativos 1.17


Gestores de Periféricos
 Um dos objectivos do SO é abstrair as particularidades dos
dispositivos hardware que lhe estão ligados
 A gestão dos periféricos é realizada pelo subsistema de E/S é
responsável por:
 Fornecer a interface entre os processos e os controladores de
dispositivos
 Gerir o sincronismo entre as operações do periférico e as do
CPU
 Implementar os controladores de dispositivos (device drivers)
 Discos, Interface de rede
 Écrans, Teclados, Ratos
etc. 
 Gestão Memória associada às transferências de dados
 Buffering (armazenamento temporário de dados em trânsito)
 Caching (armazenar dados mais utilizados)
 Spooling (multiplexar fluxos de E/S de vários processso)

Lições de Sistemas Operativos 1.18


Protecção e Segurança
 Protecção – mecanismos para controlar o acesso de processos
e/ou utilizadores a recursos geridos pelo SO
 Segurança – defesa do sistema contra ataques internos e
externos
 Grande diversidade, incluindo: denial-of-service, worms, virus,
roubo de identidade, intromissão.
 Os sistemas distinguem os utilizadores para determinar quem
pode fazer o quê:
 Identidade de utilizador (user IDs, security IDs) inclui o nome e
um número associado, um por cada utilizador
 O User ID é depois associado com todos os ficheiros e
processos desse utilizador para permitir o controle de acessos
 O identificador de Grupo (group ID) que permite definir
conjuntos de utilizadores com direitos idênticos, é também
associado a cada processo e ficheiro
 O aumento temporário de privilégios permite aos utilizadores
mudarem de ID para realizar operações críticas

Lições de Sistemas Operativos 1.19


Algumas Noções de Hardware…

Lições de Sistemas Operativos 1.20


Uma enorme diversidade…

Smart Phone / PDA

Mobile Phone

Mainframe Tablet PC

Personal Computer
Server Playstation

Lições de Sistemas Operativos 1.21


Uma Arquitectura Genérica…
 Arquitectura Genérica composta por:
 Um ou mais CPUs e controladores de periféricos ligados através de
um BUS dando acesso à memória partilhada
 Acessos concorrentes dos CPUs e dos periféricos para obter ciclos de
acesso memória

Lições de Sistemas Operativos 1.22


Componentes Lógicos de um Computador

Lições de Sistemas Operativos 1.24


Níveis de Abstracção
 Um computador também pode ser visto como uma sucessão níveis
de abstracção (máquinas virtuais) cada uma com os seus conceitos,
objectos, linguagem de programação e mecanismos próprios
 Cada nível utiliza os serviços e interfaces do nível inferior, que são
cada vez mais próximos da estrutura interna do computador
 O sistema operativo controla alguns destes níveis

Operating System Control

Lições de Sistemas Operativos 1.25


Modelo de von Neumann
 O Modelo de Von Neumann define os módulos mínimos para que
possa existir processamento de informação
 Composto por 5 módulos:

Lições de Sistemas Operativos 1.26


O Modelo de ligação em BUS

 É o modelo mais comum nos sistemas correntes


 Uma evolução do modelo de von Neumann, o modelo em BUS
(Barramento) liga o CPU (ALU e controle) à memoria, e às
unidades de input/output.
 A comunicação entre os vários componentes é feita por um
canal de comunicação partilhado denominado BUS sistema,
composto por Bus de Dados, Bus de Endereços e de Controle.

Lições de Sistemas Operativos 1.27


Intel Pentium Read and Write Bus Cycles

Lições de Sistemas Operativos 1.28


Acesso Directo à Memoria
 Utilizado por dispositivos de I/O assíncrono de alto desempenho,
capazes de transmitir informação à velocidade de acesso da
memória
 Os controladores transferem blocos de dados dos periféricos para
a memória central sem intervenção do CPU
 Só é necessária uma interrupção por bloco em vez de uma
interrupção por byte

Lições de Sistemas Operativos 1.29


Arquitectura de uma Motherboard

Lições de Sistemas Operativos 1.30


Intel Pentium Internal Registers
 EAX - Accumulator for operands
and results data
 EBX - Pointer to data in the DS
segment
 ECX - Counter for string and loop
operations
 EDX - I/O pointer
 ESI - Source pointer for string
operations
 EDI - Destination pointer for string
operations
 EBP - Pointer to data on the stack
(in the SS segment)
 ESP - Stack pointer (in the SS
segment)

Lições de Sistemas Operativos 1.31


Intel Pentium Status Flags

EFLAGS Register

Lições de Sistemas Operativos 1.32


Intel Pentium Segmentation Registers

Lições de Sistemas Operativos 1.33


Estruturas de Armazenamento

 Memória principal – é a única área de armazenamento de massa a


que o CPU consegue aceder directamente
 Desempenho é crítico para a performance do sistema
 Geralmente volátil
 Memória secundária – extensão da memória principal que
providencia grandes capacidades de memória não volátil
 Constituída por discos magnéticos metal rígido ou superfícies de
vidro cobertas de material magnetizável.
 A superfície do disco está dividida em pistas, subdivididas em
sectores
 O controlador de disco realiza a interacção lógica entre o
periférico o CPU e a memória

Lições de Sistemas Operativos 1.34


Hierarquias de Armazenamento

 Os sistemas de armazenamento estão organizados


hierarquicamente, por critérios de:
 Velocidade
 Custo
 Volatilidade

Lições de Sistemas Operativos 1.35


Características Comparativas

 As transferências de dados entre os vários níveis podem ser


automáticas ou explícitas

Lições de Sistemas Operativos 1.36


Migração de Disco para Registo

 Os sistemas Multitarefa devem ter mecanismos para utilizarem


sempre os valores actualizados, estejam onde estiverem na
hierarquia de memória

 Os sistemas Multiprocessador devem utilizar mecanismos


hardware para garantir a coerência de caches para que todos os
CPUs tenham cópias actualizadas
 Nos Sistemas distribuídos as situações ainda são mais complexas
 Várias versões dos mesmos dados podem existir
 Caso dos Sistemas de Ficheiros Distribuídos (NFS, AFS, etc..)

Lições de Sistemas Operativos 1.37


Caching
 Caching – cópia temporária de informação para um sistema de
armazenamento mais rápido.
 A memória principal serve de cache para a memória
secundária.
 O processador dispõe de um cache de instruções que contém
réplicas do conteúdo memória.
 Os sistemas informáticos utilizam técnicas de caching
intensivamente para optimização de performance.
 Hardware, OS, Aplicações
 O primeiro acesso é realizado ao cache para verificar se a
informação pretendida se encontra armazenada
 Se lá está (cache hit), a cópia é usada
 Se não está (cache miss), é copiada para lá e actualizada
 O Cache é sempre menor do que a memória que representa,
sendo críticos para o desempenho:
 A gestão optimizada do cache
 O tamanho do cache e a política de actualização

Lições de Sistemas Operativos 1.38


Características dos Sistemas Operativos - 1
 As características podem variar radicalmente entre diferentes
sistemas
 Algumas são comuns a uma grande maioria
 Funcionamento em Modo Batch

Inicialmente os SO só permitiam correr um processo (ou job) de
cada vez
 Os jobs eram colocados numa fila de espera
 Esperavam pela fim da execução dos precedentes até serem
executados
 Várias versões de Batch Processing
 Filas de espera armazenadas em disco magnético
 Criação de duas partições de execução
 Foreground para jobs curtos
 Background para jobs mais longos

Lições de Sistemas Operativos 1.39


Funcionamento em Modo Batch

Lições de Sistemas Operativos 1.40


Características dos Sistemas Operativos - 2
 Multitarefa: o CPU comuta de tarefa periodicamente

Quando uma tarefa espera por E/S
 Quando expira um intervalo de tempo preestabelecido
 Evolução necessária para assegurar eficiência

O CPU não pode é atribuído sequencialmente a uma única
tarefa durante toda a sua duração
 Operações de E/S podem obrigar a “longas” esperas
 Multiprogramação organiza as tarefas (código e dados) para que o
CPU tenha sempre algo para executar
 Um subconjunto da totalidade das tarefas é mantido em
memória
 Uma tarefa é seleccionada e activada através de um
escalonador de processos (process scheduler)
 Quando a tarefa é obrigada a esperar por um recurso (I/O por
exemplo), o SO comuta para uma outra tarefa que esteja pronta

Lições de Sistemas Operativos 1.41


Funcionamento em Multitarefa

 O CPU é alocado sucessivamente aos várias tarefas residentes


em memória, e pode interagir com vários utilizadores

Lições de Sistemas Operativos 1.42


Características dos Sistemas Operativos - 3
 Multiutilizador: utilização de um sistema multitarefa em que o computador
gere vários utilizadores
 É assim criada a noção de que cada utilizador pode interagir com a tarefa
que está a correr, permitindo computação interactiva
 Tempo de Resposta deve ser < 1 segundo
 Cada utilizador pode ter pelo menos um programa a correr em memória
  Processo
 Se várias tarefas estão prontas para correr ao mesmo tempo
  Escalonamento CPU
 Outras evoluções funcionais
 Se todos os processos não couberem em memória, são movidos para
memória secundária
  Swapping
 É também possível executar processos que não caibam completamente
na memória
  Memória Virtual

Lições de Sistemas Operativos 1.43


Evolução dos Sistemas Operativos

Windows 10 (2015)

Lições de Sistemas Operativos 1.44


Evolução dos Sistemas Unix
http://www.levenez.com/unix

Lições de Sistemas Operativos 1.45


Quem é quem…

Ken Thomson Richard Stallman

Bill Joy

Dennis Ritchie Steve Jobs

Bill Gates

Brian Kernighan Linus Torvalds

Lições de Sistemas Operativos 1.46


Ambientes de Computação
Computador tradicional:
 Conceito cada vez mais difuso
 Novos dispositivos de computação aparecem constantemente
 Ambiente Empresarial
 PCs ligados em rede, servidores apicacionais, e ainda mainframes
em batch e/ou timesharing
 Portais empresariais internos dando acesso às aplicações e dados
através de computadores pessoais ligados em rede e dispositivos
móveis através de interfaces de tipo Web
 Ambiente doméstico
 Começaram por ser sistemas isolados, tendo ganho conectividade
através da generalização do generalização da “banda larga”
 Agora ligados por routers wireless, agregando PCs, PDA e
consolas de jogos
 Ambientes Móveis
 Enorme expansão, mudando o modelo global de computação

Lições de Sistemas Operativos 1.47


Sistemas Móveis
 Smart Phones, Tablets
 Cada vez mais alternativas aos PCs
 Registam enorme evolução no que respeita as características do
hardware
 Processadores multicore / Memória / Sensores
 Ecrãs interactivos de alta resolução
 Os sistemas operativos para estes dispositivos sofrem grande
evolução
 Gestão da interactividade
 Integração dos sensores
 Os sistemas operativos podem também ser adaptados para
funcionar em ambientes de funcionalidades reduzidas
 Sistemas Embebidos
 Arduino, Raspberry PI, etc…

Lições de Sistemas Operativos 1.48


Arquitectura Multiprocessador

 É constituído por vários processadores independentes


montados numa mesma motherboard
 A lógica de controle é externa aos processadores

Lições de Sistemas Operativos 1.49


Arquitectura Multi-Core

 Cada processador contém vários “cores” (núcleos de execução)


que têm caches próprios (o I9 X-Series já tem 12 cores…)
 A lógica de controle é interna aos processadores
 Podem ser montados vários processadores Multi-core numa
mesma motherboard

Lições de Sistemas Operativos 1.50


Cluster Computing

 Colaboração de processadores (nós) em rede


 Possivelmente partilhando uma área de storage em rede
 SAN: Storage Area Network
 Fornecem serviços de elevado desempenho e disponibilidade
 Existem vários modelos de clusters consoante a uniformidade ou não dos nós de
processamento
 Cluster Simétrico: todos os nós são idênticos
 Cluster Assimétrico: os nós podem apresentar diferenças quer a nível de hardware,
quer no papel que desempenham
 Alguns dos nós podem ter um papel preponderante relativamente aos outros: nós de
controlo e de execução
 Actualmente a arquitectura em cluster é uma das bases mais utilizada na computação de
alto desempenho
 As aplicações têm de ser escritas para tirar partido do paralelismo

Lições de Sistemas Operativos 1.51


Modelo Cliente Servidor
 Base da Computação em Rede

Os servidores executam os
pedidos gerados pelos clientes
 Modelo de serviço em três camadas
permite separar as funcionalidades de
processamento das de
armazenamento
 Terminais simples substituídos por
PCs com Browsers
 Servidores de Processamento
executam a lógica aplicacional
para a realização de serviços
(servidores aplicacionais)
 Servidores de Dados fornecem
serviços de armazenamento e
leitura de dados (bases de dados,
etc)

Lições de Sistemas Operativos 1.52


Peer-to-Peer

 Modelo de Sistema Distribuído descentralizado


 Evolução do Modelo Cliente Servidor
 P2P não distingue entre Clientes e Servidores
 Todos os participantes são considerados “Peers” (pares)
 Cada par pode ser cliente, servidor ou ambos
 Cada nó deve aderir à rede P2P
 Regista o serviço que oferece junto de um servidor central
de procura na rede
 Envia um pedido de serviço em broadcast e responde a
pedidos de serviço através de um protocolo de descoberta
 Exemplos: Gnutella, Torrent, Bitcoin

Lições de Sistemas Operativos 1.53


Web Computing

 A Web tornou-se ubíqua


 Está praticamente em toda a parte
 Há cada vez há mais dispositivos com acesso Web
 Os PCs já não são os dispositivos mais utilizados
 Utilização crescente de Smartphones, Tablets, etc…
 A componente Servidor está em vias de desmaterialização
 A utilização de Sistemas Operativos é cada vez mais feita
recorrendo a tecnologia de virtualização
 Sistemas podem ser clientes ou servidores
 Aparecimento do conceito de Cloud Computing

Lições de Sistemas Operativos 1.54


Referências

 Referências do Site do Laboratório


 netlab.ulusofona.pt
 Comparação de vários Sistemas Operativos
 www.osdata.com
 Historial do Sistema Unix
 www.levenez.com/unix
 Breve bibliografia de Ken Thomson
 www.linfo.org/thompson.html
 Informação sobre processadores Intel
 https://www.intel.com/buy/us/en/catalog/components/all

Lições de Sistemas Operativos 1.56


Fim da Introdução

Lições de Sistemas Operativos 1.57

Você também pode gostar