Bacharelado em Ciência da Computação
Sistemas Operacionais
Prof. Diego Mello da Silva
Instituto Federal de Minas Gerais - Campus Formiga
28 de novembro de 2013
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
1 / 89
Sumário
1
Introdução
2
História dos Sistemas Operacionais
3
Fundamentos
4
Serviços do Sistema Operacional
5
Chamadas de Sistema
6
Estrutura dos Sistemas Operacionais
7
Máquinas Virtuais
8
Atividades Recomendadas
9
Referências Bibliográficas
[email protected] (IFMG)
Sistemas Operacionais
fig/logo-ifmg
28 de novembro de 2013
2 / 89
Introdução
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
3 / 89
Introdução
Sistema Computacional: hardware, S.O., aplicativos e usuários
Sistema Operacional: intermediário entre o usuário e o hardware
Sistema Operacional controla o hardware e coordena seu uso pelos aplicativos
de vários usuários
fig/logo-ifmg
Logo, fornece a base para os programas aplicativos executarem usando os
recursos do sistema
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
4 / 89
Visão Abstrata dos Componentes de um Sistema
Computacional
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
5 / 89
Exercícios (Para Casa)
1 Apenas com seus conhecimentos prévios de computação (ou seja, sem
consultar livros ou outras fontes), responda o que você entende por sistema
operacional e qual(is) é(são) o(s) serviço(s) que ele fornece em um sistema
computacional
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
6 / 89
Sistema Operacional na Visão do Usuário
Perspectiva varia de acordo com a interface usada
Computador Pessoal
Monitor, teclado, mouse, CPU
Único usuário monopolizando os recursos
Objetivo: maximizar o trabalho em execução
Facilidade de uso
Mainframe/minicomputador
Multiusuário: acesso via terminais
Usuário compartilham recursos da máquina e podem trocar
informações
Objetivo: maximizar o uso dos recursos
fig/logo-ifmg
Utilização eficiente de recursos (CPU, I/O, Memória, Disco)
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
7 / 89
Sistema Operacional na Visão do Usuário
Estações de trabalho / Servidores conectados em rede
Possuem recursos dedicados à disposição dos usuários
Podem compartilhar recursos (armazenamento, impressão,
processamento)
Compromisso entre usabilidade e utilização
Computadores Móveis
Unidades autônomas para usuários individuais
Conectividade via rede sem fio
Limitações de energia, velocidade e interface
Objetivo 1: Boa usabilidade individual
Objetivo 2: Desempenho em tempo de vida da bateria
Sistemas Embarcados
Interface limitada (indicadores numéricos, luzes)
fig/logo-ifmg
Sem intervenção do usuário
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
8 / 89
Sistema Operacional na Visão do Sistema
É o programa mais relacionado com o hardware
Neste contexto, o sistema operacional é um alocador de recursos
Quais recursos?
Tempo de CPU
Espaço de memória
Espaço de armazenamento
Dispositivos de I/O
Função do S.O. é atuar como gerenciador destes recursos
S.O. também é um programa de controle
Controle de dispositivos de I/O
Execução dos programas de usuário para evitar erros e uso
impróprio do computador
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
fig/logo-ifmg
9 / 89
História dos S.O.
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
10 / 89
Pré-História (1833-1849)
Máquina Analítica: projeto pioneiro de computador programável de
propósito geral
Dispositivo inteiramente mecânico, programável por cartões perfurados
Babbage (1791-1871) não chegou a finalizar a máquina em vida
Tecnologia da época não permitia a construção de rodas, engrenagens
e correias com precisão necessária
fig/logo-ifmg
Obviamente não possuía sistema operacional
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
11 / 89
Primeira Geração (1945-1955)
Surgimento dos computadores eletrônicos, alguns digitais
Usavam válvulas, eram lentos e ‘programados’ via cabos e painéis
Atanasoff-Berry, Mark, ENIAC (USA); Zuse (GER); Colossus (ENG)
Figura: Zuze Z3 (1941)
Figura: Mark-I (1944)
Figura: Colossus (1944)
Não existiam sistemas operacionais
fig/logo-ifmg
Mesmas pessoas projetavam, construiam, programavam e operavam
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
12 / 89
Primeira Geração (1945-1955)
Modo normal de operação:
(i) ‘Programador’ reservava tempo de máquina em uma planilha de papel
(ii) ‘Programador’ inseria o programa via painel de programação
(iii) ‘Programador’ aguardava horas de processamento, esperando que ele não
fosse interrompido por uma válvula queimada
Usado exclusivamente para cálculos numéricos (senos, cossenos, log)
≈1950: perfuradora de cartões permitiu escrever programas em cartões
e lê-los ao invés de usar os painéis
fig/logo-ifmg
Figura: (esq) leitor de cartão, (dir) perfuradora de cartão
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
13 / 89
Segunda Geração (1955-1965)
Surgimento dos transistores ⇒ computadores confiáveis
Computadores construídos e comercializados com expectativa de
funcionamento em tempo suficiente para executar trabalho útil
Mainframes eram instalados em salas especiais isoladas com
ar-condicionado, e eram operados por equipes profissionais
fig/logo-ifmg
Separação de papéis: projetistas, fabricantes, programadores e técnicos
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
14 / 89
Segunda Geração (1955-1965)
Processamento de tarefas: um programa ou conjunto de programas
Dinâmica de uso de um mainframe:
1 Programador escreve programa no papel (Fortran, assembly)
2 Programador perfura programa em cartões
3 Programador levava os cartões para a sala de entrada
4 Operador carregava cartões na leitora
5 Se precisasse de um compilador Fortran, operador deveria carregar o
maço de cartões correspondentes ao compilador
6 No fim da tarefa, operador ia até a impressora, retirava a saída e a levava
para a sala de saída
7 Programador pegava a saída impressa e conferia os resultados
Muito tempo do computador era desperdiçado nestas operações
fig/logo-ifmg
Alto custo ⇒ busca por maneiras de evitar desperdício de tempo
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
15 / 89
Segunda Geração (1955-1965)
Redução de custos com sistemas em lote (batch)
Lote de tarefas: quantidade acumulada de tarefas (jobs) que possuem
necessidades semelhantes (ex: mesmo montador, mesma biblioteca)
Entrada e Saída: computadores mais baratos, porém eficientes em
leitura de cartões, copiar fitas e imprimir saídas (ex: IBM 1401)
Processamento: computadores mais caros e poderosos (ex: IBM 7094)
fig/logo-ifmg
S.O. primitivo: programa que realizava leitura/execução de tarefas,
uma a uma, contidas no lote (monitor residente)
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
16 / 89
Segunda Geração (1955-1965)
Tarefa típica usava cartões de controle e cartões do programador
Computadores de segunda geração: cálculos científicos
Maioria programado em assembly ou Fortran
Sistemas Operacionais Típicos:
Fortran Monitor System (FMS)
fig/logo-ifmg
IBSYS (S.O. da IBM para o 7094)
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
17 / 89
Terceira Geração (1965-1980)
CIs: melhor custo/benefício que transistores individuais
IBM lança a família System/360, compatíveis em conjunto de instruções
Sistema operacional OS/360 deveria executar em qualquer modelo
sistemas pequenos, bons para I/O
sistemas grandes, para cálculos complexos
sistemas com poucos periféricos
ambientes comerciais
fig/logo-ifmg
ambientes científicos
Outros fabricantes adotaram o mesmo conceito
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
18 / 89
Terceira Geração (1965-1980)
S.O. de 3a. geração popularizaram três técnicas fundamentais
1 Multiprogramação: reduzir a ociosidade da CPU durante I/O
2 Spooling (simultaneous peripheral operation online)
capacidade de transferir tarefas do cartão para discos magnéticos
quando uma tarefa encerrava, o S.O. carregava uma nova a partir do disco
3 Timesharing
Vários usuários acessando mediante terminais
interatividade entre o S.O. e os usuários
fig/logo-ifmg
tarefas em background quando CPU estava ociosa
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
19 / 89
Terceira Geração (1966-1980)
Alguns dos principais S.O. desta geração
CTSS1 (1962): MIT, desenvolvido para um IBM 7096 modificado. Primeiro
S.O. de tempo compartilhado.
MULTICS2 (1964): Motivados pelo CTSS e baseado no conceito de
distribuição de energia elétrica, Bell Labs, General Eletric e MIT projetaram
um S.O. para um ‘computador utilitário’ com usuários compartilhando
tempo de processamento.
UNIX (1969): Ken Thompson & Dennis Ritchie, Bell Labs. Versão
simplificada do MULTICS para um PDP-7, escrito 100% em Assembly
BSD (1970 ≈ 1980): UNIX-Based, U.C. Berkeley
Leitura: ‘Introduction and Overview of the Multics System’ 3
1
2
3
fig/logo-ifmg
CTSS: Compatible Time Sharing System
MULTICS: Multiplexed Information and Computing Service
http://people.cs.umass.edu/~emery/classes/cmpsci691st/readings/OS/multics-overview.pdf
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
20 / 89
Quarta Geração (1980-Atuais)
Advento dos circuitos integrados de larga escala (LSI)
Era dos computadores pessoais
Intel lança o 8080 (1974), CPU 8 Bits de uso geral
Gary Kindall, consultor da Inter, escreve o CP/M (Control Program for
Microcomputers) baseado em disco para o 8080.
Gary Kindall funda a Digital Research para comercializar o CP/M, e domina o
mundo da microcomputação baseada em 8080, Z80 e outros
IBM projeta o IBM PC (1980) e procura Bill Gates para licenciar o interpretador
BASIC
A Microsoft compra o DOS da Seattle Computer Products e oferece o pacote
BASIC/DOS para a IBM
O MS-DOS domina o mercado de IBM PC e sucessores (IBM AT com Intel
fig/logo-ifmg
80286, 80386, 80486), e o CP/M perde espaço entre os PCs.
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
21 / 89
Quarta Geração (1980-Atuais)
MS-DOS e CP/M eram baseados em linha de comando
Figura: MS-DOS
Figura: CP/M
Xerox Alto (1973), do PARC: Graphical User Interface (GUI)
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
22 / 89
Quarta Geração (1980-Atuais)
Jobs incorpora a idéia de GUI no computador Lisa, da Apple, no Mac OS
Lisa falha comercialmente, mas Machintosh torna-se um sucesso de vendas
Figura: Apple Machintosh
Figura: Apple Lisa
Microsoft desenvolve o shell Windows para executar sobre o MS-DOS, inspirada
no sucesso do Machintosh
fig/logo-ifmg
Figura: Mac OS (1984)
[email protected] (IFMG)
Figura: Win 3.1 (1990)
Sistemas Operacionais
28 de novembro de 2013
23 / 89
Quarta Geração (1980-Atuais)
Microsoft lança Windows 95 (1995) como S.O. independente do MS-DOS.
Win95 e Win98 eram S.O. de 16 bits
Microsoft lança Windows NT, compativel com Win95 porém reescrito como 32
bits.
Sucedem o Windows NT o Windows Me, Windows 2000, Windows XP, Windows
7 e Windows 8.
Sucedem diversas versões do Mac OS, até 2001
Em 2001, Apple lança o OS X (Unix-Based): Cheetah (2001), Puma (2001),
Jaguar (2002), Panter (2003), Tiger (2005), Leopard (2007), Snow Leopard
(2009), Lion (2011), Montain Lion (2012), Mavericks (2013)
System V (1983): UNIX-Based, AT&T
POSIX (1985): IEEE 1003, padrão que define interface mínima de chamadas de
sistema suportada pela maioria dos UNIX
MINIX (1987): Tanembaum, objetivos educacionais
fig/logo-ifmg
Linux (1991): Linus Torvalds, inspirado no MINIX
SO Mobiles: Android, iOS, Windows CE, Windows Mobile, Symbiam
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
24 / 89
Exercícios (Para Casa)
1 Nesta última seção vimos um breve histórico sobre o surgimento e evolução dos
sistemas operacionais. Para fixar o conteúdo, faça uma breve pesquisa sobre 2
dos 5 itens a seguir, resumindo-os em papel. Indique a fonte.
(a) Tempo Compartilhado
(b) MULTICS
(c) Multiprogramação
(d) Fortran Monitor System
(e) Sistema em Lote
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
25 / 89
Fundamentos
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
26 / 89
Sistema de Computação Moderno
Uma ou mais CPUs
Controladores de dispositivos conectados à um barramento (disco, audio, vídeo)
Memória compartilhada, acessava via Controlador de Memória
fig/logo-ifmg
Memória pode ser acessada tanto pela CPU quando pelos controladores de
dispositivos
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
27 / 89
Classificação de Software e Elementos do S.O.
Kernel (Núcleo)
Ger.
Ger.
Ger.
Ger.
Arquivos
Memória
Processos
I/O
[email protected] (IFMG)
Shell
Utilitários
Interface usuário
Linha de Comando
GUI
Sistemas Operacionais
Formatar Disco
Desfrag. Disco
Comprimir arquivos
fig/logo-ifmg
28 de novembro de 2013
28 / 89
Bootstrapping (Inicialização)
Bootstrap: programa executado quando o computador é iniciado ou reiniciado
Programa simples, gravado em firmware na ROM/EEPROM do computador
2) Carrega o S.O.
1) Inicializa sistema
Registradores da CPU
Aloca memória para o kernel
Controladores de Dispositivos
Carrega kernel na memória
Memória
Transfere controle para S.O.
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
29 / 89
CPU e seus componentes
Componentes da CPU
Unidade Aritmética Lógica (ALU)
Registradores
Unidade de Controle
Registradores
Contador de Programa (PC)
Registrador de Instrução (IR)
Ponteiro de Pilha (SP)
Base da Pilha (PB)
Palavra de Status (PSW)
Acumuladores
Outros
fig/logo-ifmg
CPU busca instruções na memória e as executa, segundo o PC
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
30 / 89
Ciclo Instrução-Execução
Ciclo Instrução-Execução ou Ciclo de Von-Neuman
1) Busca instrução na memória e armazena no registrador de instrução
2) Instrução é decodificada
3) Operandos são buscados na memória e armazenados em registradores
4) Instrução é executada na ALU
5) Resultado é armazenado na memória
CPU apenas interpreta instruções em memória
Programas devem estar em memória para serem executados pela CPU
A CPU executa instruções sequencialmente
Mas pode transferir o fluxo de execução se ocorrer uma interrupção
Interrupções de hardware (através de sinais no barramento)
Interrupções de software (através de chamadas de sistema)
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
fig/logo-ifmg
31 / 89
Modo Usuário e Modo Núcleo
Maioria das CPUs opera em dois modos: núcleo e usuário
Modo em funcionamento é controlado por um bit da Palavra de Status (PSW)
Modo Núcleo (0)
Pode executar qualquer instrução de seu conjunto de instruções
Tem acesso à todo o hardware
É o modo que o Sistema Operacional executa
Modo Usuário (1)
Executa apenas um subconjunto de instruções
Acessa apenas um subconjunto de atributos do hardware
É o modo de execução de aplicações que rodam sobre o S.O.
Para usar serviços do sistema, é necessário fazer uma chamada de sistema
Chaveia o modo usuário para o modo núcleo
Transfere o controle para o Sistema Operacional
fig/logo-ifmg
Quando chamada se encerra, o controle retorna para o programa do usuário, na
próxima instrução após a chamada de sistema.
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
32 / 89
Modo Usuário e Modo Núcleo
Quando ocorre uma chamada de sistema, exceção ou interrupção, ocorre
chaveamento de modalidade
Modo dual é importante para a proteção do sistema contra usuários errantes
Instruções privilegiadas: instruções de máquina que podem causar erros
Hardware só executa instruções privilegiadas em modo Núcleo
Exemplos de instruções privilegiadas
Controle de I/O
fig/logo-ifmg
Gerenciamento de timer
Gerenciamento de interrupções
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
33 / 89
Interrupções
Vetor de interrupções: ponteiros para os manipuladores de interrupção
Quando uma interrupção ocorre
1)
2)
3)
4)
5)
CPU interrompe o processamento atual
O endereço de retorno é salvo na pilha
A execução é transferida para o endereço do manipulador da interrupção
A rotina que trata a interrupção é executada
Ao encerrar rotina, CPU retorna para o processamento interrompido
Interrupções possuem prioridade, e podem ser desativadas
Interrupções são muito empregadas em operações de I/O
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
34 / 89
Interrupções
(a) Inicializar dispositivo I/O e obter interrupção
1: Driver informa controlador de disco sobre escrita.
Controlador inicia dispositivo.
2: Controlador de disco termina de escrever bytes.
Gera interrupção para controlador de interrupções.
3: Se puder aceitar a interrupção, controlador de
interrupções avisa CPU
4: O controlador de interrupções coloca o número do
dispositivo no barramento para que a CPU possa
lê-lo
(b) Processamento de uma interrupção
1: Interrupção ocorre e é aceita pela CPU
2: Fluxo é transferido pelo manipulador de interrupção
3: Fluxo retorna para a próxima instrução na CPU
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
fig/logo-ifmg
35 / 89
Interrupções
Classe
Software
Timer
I/O
Hardware
Quando ocorre
Gerada por alguma condição que ocorre como resultado da execução de uma instrução, como por
exemplo, overflow aritmético, divisão por zero, tentativa de execução de instrução de máquina ilegal,
fazer referências fora do espaço de memória do
usuário
Gerado pelo temporizador interno do processador.
Usado para o sistema operacional realizar tarefas
regulares, como chaveamento de contexto
Gerado por um controlador de I/O para sinalizar
término normal de operação de entrada/saída ou
sinalizar uma variedade de erros
Gerado por falhas no hardware, tais como queda
de energia ou erro de paridade na memória
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
36 / 89
Sistemas com Único Processador
Maioria dos sistemas possui único processador de propósito geral
CPU principal executa processos do usuário
Porém, quase todos os sistemas possuem processadores de uso específico
Controladores de Disco
Controladores de teclado
São limitados e não executam processos do usuário, mas eliminam overheads
Exemplo: microprocessador do controlador de disco
Recebe sequência de solicitações da CPU
Implementa sua fila e scheduling
Neste caso, CPU não precisa lidar com o scheduling de disco
fig/logo-ifmg
Podem ainda serem componentes de baixo nível embutidos no harwdare
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
37 / 89
Sistemas Multiprocessados
Sistemas com 2 ou mais processadores compartilhando o barramento,
memória, relógio e periféricos
Vantagens:
1) Throughput (Vazão): mais trabalho executado em menor tempo
2) Economia de Escala: economia no compartilhamento de periféricos,
memória de massa e suprimento de energia
3) Confiabilidade: se carga é distribuída entre os processadores, a falha de
um deles torna o sistema mais lento, mas sem interrupção.
Sistemas multiprocessados são de dois tipos: assimétricos e simétricos
Assimétricos
Mestre: planeja e aloca trabalho para os escravos
Escravo: realizam tarefas específicas ou predefinidas
Simétricos
fig/logo-ifmg
Cada processador executa todas as tarefas do S.O.
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
38 / 89
Sistemas Multiprocessados
Sistemas Multiprocessados Multi-Core (dentro de um mesmo chip)
Em cada chip existem N minichips, cada qual com uma CPU completa
São mais eficientes do que vários chips de Núcleo único
Velocidade dentro do chip é maior do que entre chips
Consomem menos energia
Adequados para servidores Web de Banco de Dados
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
39 / 89
Processos
Conceito fundamental de todo Sistema Operacional
Programa: entidade passiva / Processo: entidade ativa
Cada processo tem seu próprio espaço de endereçamento
Instruções do executável
Dados do programa
Pilha
Cada processo tem recursos associados. Alguns:
Registradores: PC, SP, etc
Lista de arquivos abertos
Lista de processos relacionados
Células de memória usadas
Sinais de alarme
fig/logo-ifmg
Processo: container com todas as informações para executar um programa
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
40 / 89
Processos
Processos usam recursos para cumprir sua tarefa
Tempo de CPU
Memória
Arquivos
Dispositivos de I/O
Processos com uma única thread tem um ‘contador de programa’
Processos com várias threads tem um ‘contador de programa’ para cada thread
Sistema computacional tem processos do usuário e do sistema, executados
concorrentemente
Gerencia de processos do Sistema Operacional:
Scheduling de processos e threads
Criação e exclusão de processos de usuário e sistema
Suspensão e retomada de um processo
fig/logo-ifmg
Mecanismos de sincronização de processos
Mecanismos de comunicação entre processos
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
41 / 89
Processos
Processos em execução podem ser suspensos temporariamente
Logo, informações relativas ao processo devem ser guardadas para seu retorno
Processos são organizados na Tabela de Processos
Array (ou Lista) contendo estruturas, uma para cada processo
Processos tem estado
Processos podem criar mais processos filhos
fig/logo-ifmg
Processos que cooperam entre sí precisam se comunicar
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
42 / 89
Timer
Timer é um temporizador configurado para interromper o computador após um
período especificado
Tem por objetivo fazer com que o Sistema Operacional mantenha controle sobre
a CPU
Evita que o controle da CPU fique apenas em um processo usuário
Pode ser fixo ou variável (implementado com contadores que decrementam)
Quando o contador torna-se negativo, S.O. retoma o controle pois venceu o
tempo designado para o processo do usuário
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
43 / 89
Memória
Memória: array de palavras, cada qual com um endereço
Memória Principal: volátil, perde conteúdo quando energia é desligada
Memória Secundária: armazena grande quantidade de dados
permanentemente
Ideal: rápida, grande, barata. Nenhuma tecnologia atende a todos.
Sistema de memória Hierárquica: registradores > cache > memória principal >
disco eletrônico > disco magnético > disco óptico > fitas magnéticas
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
44 / 89
Cache
Dividida em linhas de cache, com 64 bytes cada
Linhas mais frequentes são mantidas em cache de alta velocidade
Quando um programa precisa ler palavra da memória,
1) Hardware da memória cache verifica se linha está em cache
2) Se houver data hit, requisição é atendida sem requisições à memória
principal
3) Se houver data miss, requisição adicional é enviada a memória principal,
com penalidade de tempo
Em geral, as CPUs tem cache em dois níveis: L1 e L2
Cache L1
Presente dentro da CPU, sem atrasos no acesso
Alimenta instruções decodificadas no ciclo instrução-execução
Cache L2
fig/logo-ifmg
Armazena alguns megabytes de dados
Acesso envolve atraso de 1 a 2 ciclos de clock
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
45 / 89
Disco
São fundamentais em um sistema computacional
Embora tenha um custo 2x mais barato que a RAM, o tempo de acesso
aleatório é 3x mais lento
Disco rígido é um dispositivo eletro-mecânico
Consiste em 1 ou mais pratos metálicos que rodam a 5.400, 7.200, 10.800 fig/logo-ifmg
rpm
Um braço mecânico move-se sobre os pratos pela lateral
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
46 / 89
Disco
Trilha: região circular onde os discos se posicionam
Cilindro: Junção de todas as trilhas de uma dada posição do braço
Setores: subsivisão de uma trilha
Normalmente, possuem 512 Bytes
Mover braço de um cilindro para o próximo: 1 ms
Mover braço até um cilindro qualquer: 5 a 10 ms
Na trilha correta, esperar até o setor desejado: 5 a 10 ms
Leitura/escrita: de 50 Mb/s a 160 MB/s
Nos Sistemas Operacionais, armazenam o sistema de arquivos
Chaveamento de contexto: usa disco como memória virtual
Unidade de Gerenciamento de Memória (MMU): Mapeia endereços da
RAM/Física
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
fig/logo-ifmg
47 / 89
Sistemas de Arquivos
Presente em todos os sistemas operacionais
S.O. oculta peculiaridades de disco e I/O do programador
Diretório: agrupamento de arquivos. Organizados hierarquicamente em árvores.
Sistema Operacional é responsável por:
Criar e apagar arquivos
Criar e apagar diretórios para organizar arquivos
fig/logo-ifmg
Mapear arquivos para memória secundária
Criar cópias de arquivos em mídias de armazenamento
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
48 / 89
Estrutura de I/O
Cada controlador controla um tipo específico de dispositivo
I/O pode ser feita de duas maneiras
I/O dirigido por interrupção
Direct Memory Access (DMA)
I/O dirigido por Interrupção: adequado para pequenas qtdades de dados
1) Controlador contém buffer local e registradores específicos
2) Driver de dispositivo: interface uniforme entre SO e dispositivo
3) Driver carrega registradores apropriados no controlador
4) Controlador examina registradores e toma uma ação
5) Controlador transfere dados do dispositivo para buffer local
6) No término da transferência, controlador informa driver através de
interrupção
fig/logo-ifmg
7) Driver retorna controle para o S.O., retornando dados ou ponteiro para os
dados (leitura) ou status (outras operações)
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
49 / 89
Estrutura de I/O
I/O por DMA: adequado para movimentação de dados em massa
1) Posicionam buffers, ponteiros e contadores associados ao dispositivo
2) Controlador tranfere um bloco inteiro de memória da memória para seu
próprio buffer, ou vice-versa, sem intervenção da CPU
3) Gera-se apenas um interrupção por bloco, para avisar ao driver que a
operação foi concluída
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
50 / 89
Exercícios (Para Casa)
1 Leia a seção 1.5 de [Tanembaum], subseções 1.5.1 a 1.5.4.
2 Faça um resumo sobre os principais itens lidos na seção 1.5 descritas no
Exercício 2, fazendo um paralelo entre o conteúdo destas seções e os slides
apresentados na seção de fundamentos.
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
51 / 89
Serviços do Sistema Operacional
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
52 / 89
Serviços do Sistema Operacional
S.O. fornece ambiente para execução de programas
Oferece serviços para programas e usuários destes programas
Tais serviços visam a conveniência do programador
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
53 / 89
Serviços do Sistema Operacional
1 Interface com o Usuário
Interface de linha de comando
Interface Batch: comandos e diretivas de controle em arquivos
Interface Gráfica de Usuário: janelas, menus, apontadores
2 Execução de Programas
Carregar programas em memória
Executar programas em memória
3 Operações de I/O
Programas em execução podem requerer I/O
Por motivo de proteção, não podem acessar dispositivos e I/O diretamente
S.O. deve oferecer um meio de executar operações de I/O
4 Alocação de Recursos
fig/logo-ifmg
S.O. determina melhor maneira de usar CPU, memória principal e arquivos
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
54 / 89
Serviços do Sistema Operacional
5 Manipulação do Sistema de Arquivos
Leitura e escrita de arquivos e diretórios
Gerenciamento de permissões para negar ou liberar acesso
6 Comunicação
Existem situações em que um processo troca informações com outro
processo
No mesmo computador ou entre processos executando em sistemas
diferentes, conectados em rede
S.O. implementam comunicação por meio de memória compartilhada ou
troca de mensagens
7 Detecção de Erros
Existem situações em que um processo troca informações com outro
processo
No mesmo computador ou entre processos executando em sistemas
diferentes, conectados em rede
fig/logo-ifmg
S.O. implementam comunicação por meio de memória compartilhada ou
troca de mensagens
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
55 / 89
Exercícios (Para Casa)
1 Pesquisar sobre os seguintes shells para Linux/Unix. Indique a fonte.
(a) Bash (bash)
(b) C Shell (csh)
(c) Bourne Shell (sh)
(d) Korn Shell (ksh)
(e) TC Shell (tcsh)
2 Dos shell listados acima, quais são disponíveis nas distribuições mais comuns
do Linux (Ubuntu, Fedora, Suse)?
3 Pesquisar sobre os seguintes shells gráficos para Linux/Unix. Indique a fonte.
(a) Gnome
(b) KDE
(c) Unity
fig/logo-ifmg
(d) XFCE
(e) X-Window
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
56 / 89
Exercícios (Para Casa)
4 Pesquise sobre os seguintes sistemas de arquivos. Indique a fonte.
(a) Família FAT (Fat 12, Fat 16 e Fat 32)
(b) NTSF
(c) ISO 9660
(d) devfs
(e) Família ext (ext, ext3 e ext4)
5 Pesquise algumas chamadas de sistema definidas no POSIX que sejam
relacionadas com:
(a) Data/hora
(b) Sistema de Arquivos
(c) Dados do usuário
(d) Processos
6 Pesquise sobre os seguintes recursos de comunicação entre processos
fig/logo-ifmg
(a) MPI (Message Passing Interface)
(b) RPC (Remote Procedure Call)
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
57 / 89
Chamadas de Sistema
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
58 / 89
Chamadas de Sistema
Chamadas de Sistema: interface para os serviços disponíveis pelo S.O.
São em geral disponíveis como rotinas escritas em C/C++ ou Assembly
API Application Programming Interface
API Windows (Para programas em Windows)
API Java (para programas em máquina virtual Java)
API POSIX (libc, para programas em Unix/Linux)
API POSIX: Chamadas descritas em <unistd.h>. Alguns exemplos:
ssize_t read(int fd, void *buf, size_t count);
int close(int fd);
pid_t fork(void);
ssize_t write(int fd, const void *buf, size_t count);
fig/logo-ifmg
API Win32: rotinas para GUI, além das chamadas de sistema do S.O.
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
59 / 89
Chamadas de Sistema
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
60 / 89
Chamadas de Sistema
strace (Linux): mostra as chamadas de sistema. Exemplo para comando ls
strace -e open -o saida.txt ls
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libacl.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libattr.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/proc/filesystems", O_RDONLY)
= 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
Chamadas de sistema no Linux estão descritas no manual (man), página 2.
man
man
man
man
2
2
2
2
write
mmap
close
open
fig/logo-ifmg
Detalhes sobre páginas do manual: man man
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
61 / 89
Exercício Prático (Linux)
Escreva o seguinte programa em C, compile-o
#include <stdio.h>
#include <stdlib.h>
void main()
{
FILE *pArq;
printf("\nHello World\n\n");
pArq = fopen("output.txt", "w");
fprintf(pArq, "123");
fclose(pArq);
}
Grave todas as chamadas de sistema quando execuntando-o no arquivo
diags.txt
Edite o arquivo diags.txt e identifique chamadas relacionadas com o
programa
fig/logo-ifmg
Escolha uma chamada de sistema desconhecida e busque-a no manual, pág. 2
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
62 / 89
Tipos de Chamadas de Sistema (Genérico)
1 Controle de Processos
end, abort
load, execute
create process, terminate process
get process attributes, set process attributes
wait for time
wait event, signal event
allocate memory, free memory
2 Gerenciamento de Arquivo
create file, delete file
open, close
fig/logo-ifmg
read, write, reposition
get file attributes, set file attributes
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
63 / 89
Tipos de Chamadas de Sistema (Genérico)
3 Gerenciamento de Dispositivos
request device, release device
read, write, reposition
get device attributes, set device attributes
logical attach device, detach device
4 Manipulação de Informações
get time, get date, set time, set date
get system data, set system data
5 Comunicações
create connection, delete connection
send messages, receive messages
fig/logo-ifmg
trasfer status information
attach remote devices, detach remote devices
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
64 / 89
Exemplos de Chamadas de Sistemas (Win/Linux)
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
65 / 89
Passo a Passo de uma Chamada de Sistema: read
1,2,3 Parâmetros da chamada read da API
são salvos na pilha
4 A rotina read da API é chamada
5 A rotina read coloca o código da
chamada de sistema em um
registrador
6 TRAP muda para o modo núcleo, e
inicia execução no kernel
7 Código do kernel verifica chamada e
despacha para a rotina correta,
indexada
8 Rotina que implementa a chamada de
sistema é executada
9 Rotina da chamada de sistema
encerra e retorna após instrução TRAP
10 Rotina retorna para o programa do
usuário, que fez a chamada original
fig/logo-ifmg
11 Programa do usuário limpa a pilha,
que cresce ‘para baixo’
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
66 / 89
Estrutura de S.O.
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
67 / 89
Estrutura de Sistemas Operacionais
Estrutura refere-se a forma como o S.O. é implementado internamente
Abordaremos alguns modelos de projeto, em alto nível
Lida com a forma em que os componentes do S.O. estão conectados e
moldados no Kernel
Projetos mais comuns:
Sistemas Monolíticos
Sistemas em Camadas
Sistemas Microkernel
Sistemas em Módulos
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
68 / 89
Estrutura de Sistemas Monolíticos
S.O. inteiro é executado como único programa em modo núcleo
S.O.: coleção de rotinadas ligadas em um binário executável
Serviços (chamadas de sistema) são executados guardando-se os parâmetros
em local definido
MS-DOS, Unix System V, BSD, Unix-like kernels, Linux
Estrutura básica de um S. O. Monolítico:
1 Programa principal invoca rotina do serviço requisitado
2 Conjunto de rotinas de serviço executam chamadas de sistema
3 Conjunto de rotinas utilitárias que auxiliam rotinas de serviço
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
69 / 89
Estrutura de Sistemas Monolíticos
Exemplo: MS-DOS - sem separação interfaces e funcionalidades
Aplicativos podem acessar rotinas básicas de I/O (tela, disco)
Sistema torna-se vulnerável
Projeto original para o 8088: hardware básico acessível
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
70 / 89
Estrutura de Sistemas Monolíticos
Exemplo: UNIX
Entre as chamadas de sistema e camada física está o kernel
Sistema de arquivo, escalonamento de CPU, gerenciamento de memória e
outras funcionalidades acessadas via chamada de sistema
Enorme quantidade de funcionalidades combinadas em um único nível
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
71 / 89
Estrutura de Sistemas em Camadas
S.O. é dividido em várias camadas ou níveis
Camada inferior (0): hardware; mais alta (N): interface com usuário
Camada: dados + operações que manipulam estes dados
Camada M: estruturas de dados e rotinas chamadas por camadas superiores
Cada camada é implementada com operações fornecidas pelas camadas
inferiores
Vantagem: facilita o projeto, implementação e depuração
fig/logo-ifmg
Desvantagem: tendem a ser menos eficientes (overhead)
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
72 / 89
Estrutura de Sistemas em Camadas
Exemplo: S.O. em lote THE (Technische Hogeschool Eindhoven), de Dijikstra
Implementado em um computador holandês Electrologica X8 (32K de 27 bits)
Camadas do THE:
Cada camada não se preocupa com os detalhes de como a inferior opera
Nível de abstração é mais alto nas camadas mais externas
fig/logo-ifmg
Exemplo: MULTICS, com anéis concêntricos (privilégios diferentes)
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
73 / 89
Estrutura de Sistemas em Microkernel
Mach Kernel: surgiu em meados de 80, no Carnegie Mellon University
Reestruturação do S.O.: componentes não essenciais removidos do kernel
Elementos removidos reimplementados como programas de sistema ou usuário
Tipicamente, microkernels provêem
gerenciamento mínimo de processos
gerenciamento mínimo de memória
facilidades de comunicação (message passing)
Comunicação entre programas cliente e serviços indiretamente via microkernel
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
74 / 89
Estrutura de Sistemas em Microkernel
Vantagem: é mais fácil estender o sistema operacional
Novos serviços são adicionados no espaço do usuário
Modificações mínimas no microkernel, apenas quando necessário
Vantagem: mais segurança/confiabilidade ao sistema computacional
Muitos serviços rodam como processos de usuário
Se um serviço falhar, o sistema não é comprometido como um todo
Sistemas operacionais famosos que usam esta abordagem:
QNX: S.O. tempo real para sistemas embarcados
fig/logo-ifmg
Kernel do Mac OS X (Darwin), parcialmente baseado no microkernel Mach
Windows NT: filosofia de microkernel, não idêntica ao microkernel Mach
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
75 / 89
Estrutura de Sistemas em Microkernel
Exemplo: MINIX 3, compatível com POSIX
Microkernel do MINIX é composto por:
3200 linhas C: processos, mensagens e 35 chamadas ao núcleo
800 linhas assembly: interrupções e chaveamento
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
76 / 89
Estrutura de Sistemas em Módulos
Usa a abordagem de utilizar módulos carregáveis no kernel
Como funciona?
Kernel fornece serviços fundamentais
Demais serviços são usados dinamicamente, com kernel em execução
É similar à camadas, mas módulos podem conversar entre sí
É similar ao microkernel, mas não tem overhead do message passing
É usada por implementações modernas do UNIX, como Solaris e Linux
(loadable kernel module), no e Mac OS X (kernel extension)
É também empregada no Windows (kernel-mode driver )
No Linux, em \ lib \ modules, com extensão ‘*.ko’. Para listar, usar lsmod
| more
Normalmente usada para sistemas de arquivos e device drivers
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
fig/logo-ifmg
77 / 89
Estrutura de Sistemas Híbridos
Mac OS X: Microkernel, monolítico e módulos
Mach: gerência de memória, RPC, IPC, thread scheduling
BSD: chamadas POSIX
I/O kit: implementação de device drivers e kernel extensions
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
78 / 89
Estrutura de Sistemas Híbridos
iOS
Cocoa Touch: Objective C para aplicações iOS
Media Services: áudio, vídeo, gráficos
Core Services: banco de dados e cloud computing
Core OS: Sistema operacional baseado no Mac OS X
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
79 / 89
Estrutura de Sistemas Híbridos
Android
Kernel Linux: monolítico, módulos
Linux: processos, memória e device drivers
Dalvik Virtual Machine: máquina virtual Java otimizada para Android
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
80 / 89
Máquinas Virtuais
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
81 / 89
Origens das Máquinas Virtuais
Conceito de máquina virtual: sistema VM da IBM (1972)
Monitor da Máquina Virtual: diretamente sobre hardware, com multiprogramação
VM370 dividia o mainframe em várias máquinas virtuais
Cada máquina virtual podia rodar seu próprio SO. Exemplo:
OS/360: processamento em lote (batch) e transações
CMS (Convertional Monitor System), interativo/timeshare/monousuário
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
82 / 89
Máquinas Virtuais
Algumas vantagens:
Capacidade de compartilhar o mesmo hardware
Processar vários ambientes de execução (SO) concorrentemente
Executar servidores sem que a falha de um afete os demais
‘Aluguel’ de máquinas virtuais para hospedagem Web4
Pesquisa e desenvolvimento de sistemas operacionais
Proteção (isolamento): hospedeiro e máquinas virtuais independentes
Administração e uso de recursos eficientes
Hipervisores Nível 1 e 2
fig/logo-ifmg
4
Por exemplo, Amazon Web Services (http://aws.amazon.com/)
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
83 / 89
VMware
VMware Workstation: máquina virtual roda em nível de usuário
Simula o Intel x86 e hardware compatível em VMs isoladas
Cada VM tem sua própria CPU, memória, drives de disco, interfaces de rede, etc
Disco virtual é apenas um arquivo dentro do sistema de arquivos do Host
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
84 / 89
Exercícios (Para Casa)
1 Faça uma pesquisa sobre a máquina virtual Java (JVM), explicando os seguinte
conceitos:
(a) Carregador de classes
(b) Interpretador Java
(c) Java Bytecodes
2 Faça uma pesquisa sobre o ambiente .NET e explique o que é
(a) Common Language Runtime
(b) Microsoft Intermediate Language
(c) Compilador Just-In-Time
3 Com base na sua pesquisa dos Exercícios 1 e 2, tire suas conclusões sobre as
tecnologias acima.
[email protected] (IFMG)
fig/logo-ifmg
Sistemas Operacionais
28 de novembro de 2013
85 / 89
Atividades Recomendadas
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
86 / 89
Leitura Recomendada
[Silberschatz]: Seções 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 2.1, 2.2, 2.3, 2.4, 2.7,
2.8, 2.11, 2.12
[Tanembaum]: Seções 1.1, 1.2, 1.3, 1.5, 1.6, 1.7, 1.12
[Oliveira e Carissimi]: Seções 1.1, 1.2, 1.3, 1.4, 1.5
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
87 / 89
Referências Bibliográficas
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
88 / 89
Referências Bibliográficas
SILBERSCHATZ, Abraham.
Fundamentos de sistemas operacionais. 8a ed.
Editora LTC, 2010. ISBN 9788521617471.
OLIVEIRA, R. S. ; CARISSIMI, A. Silva.
Sistemas Operacionais.
Editora Sagra-Luzzato. Porto Alegre, 2001.
TANEMBAUM, A. S.
Sistemas Operacionais Modernos. 3 ed.
Editora Pearson Prentice-Hall, 2009. ISBN 978-85-7605-237-1.
fig/logo-ifmg
[email protected] (IFMG)
Sistemas Operacionais
28 de novembro de 2013
89 / 89
Download

File