sistemas operativos - laboratório de sistemas e...
TRANSCRIPT
1.1 Lições de Sistemas Operativos
Sistemas Operativos Introdução
Prof. José Rogado
Universidade Lusófona
1.2 Lições de Sistemas Operativos
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
1.3 Lições de Sistemas Operativos
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
1.4 Lições de Sistemas Operativos
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!!
1.5 Lições de Sistemas Operativos
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
1.6 Lições de Sistemas Operativos
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, …
1.7 Lições de Sistemas Operativos
Introdução
Conceito de Sistema Operativo
Funcionalidades
Gestão de Processos
Gestão de Memória
Gestão de Armazenamento
Protecção e Segurança
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
Objectivos
Definir conceitos
Rever conceitos básicos da
arquitectura de
computadores
Apresentar as principais
funcionalidades do SO
1.8 Lições de Sistemas Operativos
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
1.9 Lições de Sistemas Operativos
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)
1.10 Lições de Sistemas Operativos
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
1.11 Lições de Sistemas Operativos
Componentes de um SO
1.12 Lições de Sistemas Operativos
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.…
1.13 Lições de Sistemas Operativos
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
1.14 Lições de Sistemas Operativos
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
1.15 Lições de Sistemas Operativos
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
1.16 Lições de Sistemas Operativos
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
1.17 Lições de Sistemas Operativos
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, …)
1.18 Lições de Sistemas Operativos
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)
1.19 Lições de Sistemas Operativos
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
1.20 Lições de Sistemas Operativos
Algumas Noções de Hardware…
1.21 Lições de Sistemas Operativos
Uma enorme diversidade…
Mainframe
Server Personal Computer
Playstation
Mobile Phone
Smart Phone / PDA
Tablet PC
1.22 Lições de Sistemas Operativos
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
1.24 Lições de Sistemas Operativos
Componentes Lógicos de um Computador
1.25 Lições de Sistemas Operativos
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
1.26 Lições de Sistemas Operativos
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:
1.27 Lições de Sistemas Operativos
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.
1.28 Lições de Sistemas Operativos
Intel Pentium Read and Write Bus Cycles
1.29 Lições de Sistemas Operativos
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
1.30 Lições de Sistemas Operativos
Arquitectura de uma Motherboard
1.31 Lições de Sistemas Operativos
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)
1.32 Lições de Sistemas Operativos
Intel Pentium Status Flags
EFLAGS Register
1.33 Lições de Sistemas Operativos
Intel Pentium Segmentation Registers
1.34 Lições de Sistemas Operativos
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
1.35 Lições de Sistemas Operativos
Hierarquias de Armazenamento
Os sistemas de armazenamento estão organizados
hierarquicamente, por critérios de:
Velocidade
Custo
Volatilidade
1.36 Lições de Sistemas Operativos
Características Comparativas
As transferências de dados entre os vários níveis podem ser
automáticas ou explícitas
1.37 Lições de Sistemas Operativos
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..)
1.38 Lições de Sistemas Operativos
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
1.39 Lições de Sistemas Operativos
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
1.40 Lições de Sistemas Operativos
Funcionamento em Modo Batch
1.41 Lições de Sistemas Operativos
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
1.42 Lições de Sistemas Operativos
Funcionamento em Multitarefa
O CPU é alocado sucessivamente aos várias tarefas residentes
em memória, e pode interagir com vários utilizadores
1.43 Lições de Sistemas Operativos
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
1.44 Lições de Sistemas Operativos
Evolução dos Sistemas Operativos
Windows 10 (2015)
1.45 Lições de Sistemas Operativos
Evolução dos Sistemas Unix http://www.levenez.com/unix
1.46 Lições de Sistemas Operativos
Quem é quem…
Brian Kernighan
Dennis Ritchie
Ken Thomson
Bill Joy
Steve Jobs
Richard Stallman
Linus Torvalds
Bill Gates
1.47 Lições de Sistemas Operativos
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
1.48 Lições de Sistemas Operativos
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…
1.49 Lições de Sistemas Operativos
Arquitectura Multiprocessador
É constituído por vários processadores independentes
montados numa mesma motherboard
A lógica de controle é externa aos processadores
1.50 Lições de Sistemas Operativos
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
1.51 Lições de Sistemas Operativos
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
1.52 Lições de Sistemas Operativos
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)
1.53 Lições de Sistemas Operativos
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
1.54 Lições de Sistemas Operativos
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
1.56 Lições de Sistemas Operativos
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
1.57 Lições de Sistemas Operativos
Fim da Introdução