Módulo 1
Módulo 1
Notas da Palestra
1
Inicialização do Computador
O programa bootstrap é carregado na inicialização ou reinicialização.
Normalmente armazenado em ROM ou EPROM, geralmente conhecido como firmware
Inicializa todos os aspectos do sistema
Carrega o núcleo do sistema operacional e começa a execução
2
Figura 1.3 Cronograma de Interrupções para um único processo realizando saída
Chamada de sistema – solicitação ao sistema operacional para permitir que o usuário aguarde a conclusão da I/O. Status do dispositivo
A tabela contém uma entrada para cada dispositivo de I/O indicando seu tipo, endereço e estado do sistema operacional.
índices na tabela de dispositivos de I/O para determinar o status do dispositivo e modificar a entrada da tabela para incluir a interrupção
3
Figura 1.4 Hierarquia de Dispositivos de Armazenamento
Cache
Princípio importante, realizado em muitos níveis em um computador (em hardware, sistema operacional,
software) Informações em uso copiadas de armazenamento mais lento para armazenamento mais rápido temporariamente
Armazenamento mais rápido (cache) verificado primeiro para determinar se a informação está lá
Se for, informações usadas diretamente do cache (rápido)
Se não, dados copiados para o cache e usados lá
Cache menor que o armazenamento sendo armazenado
Gerenciamento de cache é um problema de design importante
Tamanho do cache e política de substituição
4
Figura 1.5 Como um Computador Moderno Funciona Arquitetura de Multiprocessamento Simétrico
Sistemas Clusterizados
5
Quando precisa esperar (por I/O, por exemplo), o sistema operacional troca para outro trabalho.
O compartilhamento de tempo (multitarefa) é uma extensão lógica na qual a CPU alterna de tarefas com tanta frequência que os usuários
pode interagir com cada trabalho enquanto está em execução, criando computação interativa
O tempo de resposta deve ser < 1 segundo
Cada usuário tem pelo menos um programa executando na memória [processo
vários trabalhos prontos para serem executados ao mesmo tempo [agendamento de CPU
Se os processos não cabem na memória, a troca os move para dentro e para fora para serem executados.
A memória virtual permite a execução de processos que não estão completamente na memória.
Oferece a capacidade de distinguir quando o sistema está executando código do usuário ou código do kernel
Algumas instruções designadas como privilegiadas, somente executáveis em modo de kernel
A chamada de sistema muda o modo para o kernel, o retorno da chamada redefine-o para o usuário.
Transição do Modo de Usuário para o Modo de Kernel
Temporizador para evitar loop infinito / processo consumindo recursos
Defina o interrupção após um período específico
O sistema operacional decrementa o contador
Quando o contador zero gerar uma interrupção
Configurar antes do processo de agendamento para retomar o controle ou encerrar o programa que excede o tempo limite
6
Figura 1.8 Transição do modo usuário para o modo kernel
Gestão de Processos
Um processo é um programa em execução. É uma unidade de trabalho dentro do sistema. Programa é uma entidade passiva.
o processo é uma entidade ativa.
O processo precisa de recursos para cumprir sua tarefa
CPU, memória, I/O, arquivos
Dados de inicialização
A terminação do processo requer a recuperação de quaisquer recursos reutilizáveis
Um processo de thread única tem um contador de programa que especifica a localização da próxima instrução a ser executada.
O processo executa instruções sequencialmente, uma de cada vez, até a conclusão
Um processo multithreaded tem um contador de programa por thread
Normalmente, o sistema tem muitos processos, alguns de usuário, alguns do sistema operacional, executando concorrentemente em um ou
mais CPUs
Concorrência por multiplexação dos CPUs entre os processos / threads
Gerenciamento de Memória
Todos os dados na memória antes e depois do processamento
Todas as instruções na memória para serem executadas
A gestão de memória determina o que está na memória quando
Otimização da utilização da CPU e da resposta do computador aos usuários
7
Atividades de gerenciamento de memória
Mantendo o controle de quais partes da memória estão atualmente sendo usadas e por quem
Decidindo quais processos (ou partes deles) e dados mover para dentro e para fora da memória
Alocando e desalocando espaço de memória conforme necessário
Gerenciamento de Armazenamento
O sistema operacional fornece uma visão uniforme e lógica do armazenamento de informações.
Abstratos das propriedades físicas para unidades de armazenamento lógicas - arquivo
Cada meio é controlado por um dispositivo (ou seja, unidade de disco, unidade de fita)
As propriedades variáveis incluem velocidade de acesso, capacidade, taxa de transferência de dados, método de acesso (sequencial ou
aleatório)
Gerenciamento de Sistema de Arquivos
Normalmente, discos são usados para armazenar dados que não cabem na memória principal ou dados que devem ser mantidos por um
período longo de tempo
A gestão adequada é de importância central
Toda a velocidade da operação do computador depende do subsistema de disco e seus algoritmos
atividades de ARMAZENAMENTO EM MASSA
8
Figure 1.9 Performances ofVarious Levels of Storage
Subsistema de I/O
Um dos propósitos do sistema operacional é esconder as peculiaridades dos dispositivos de hardware do usuário.
Subsistema de I/O responsável por
Gerenciamento de memória de I/O, incluindo buffer (armazenamento de dados temporariamente enquanto estão sendo transferidos),
cache (armazenando partes dos dados em armazenamento mais rápido para desempenho), spooling (o sobreposição da saída de)
um trabalho com a entrada de outros trabalhos)
Interface geral de driver de dispositivo
Drivers para dispositivos de hardware específicos
9
Proteção e Segurança
Proteção – qualquer mecanismo para controlar o acesso de processos ou usuários a recursos definidos pelo SO
Segurança – defesa do sistema contra ataques internos e externos
Ampla gama, incluindo negação de serviço, worms, vírus, roubo de identidade, roubo de serviço
Os sistemas geralmente primeiro distinguem entre os usuários, para determinar quem pode fazer o quê
As identidades dos usuários (IDs de usuário, IDs de segurança) incluem nome e número associado, um por usuário
O ID do usuário então associado a todos os arquivos, processos desse usuário para determinar o controle de acesso
O identificador de grupo (ID do grupo) permite que um conjunto de usuários seja definido e gerenciado, e também associado.
com cada processo, arquivo
A elevação de privilégio permite que o usuário altere para um ID efetivo com mais direitos.
SISTEMAS DISTRIBUÍDOS
Ambientes de Computação
Computador tradicional
Desfoque ao longo do tempo
Ambiente de escritório
Computadores conectados a uma rede, terminais ligados a mainframes ou minicomputadores fornecendo processamento em lote
e compartilhamento de tempo
Use of operating systems like Windows 95, client-side, have evolved into Linux and Windows XP,
que podem ser clientes e servidores
11
ações apropriadas para garantir computação correta e consistente Faculdades de depuração podem melhorar significativamente
as habilidades do usuário e do programador para usar o sistema de forma eficiente
Outro conjunto de funções do sistema operacional existe para garantir o funcionamento eficiente do próprio sistema via
compartilhamento de recursos
Alocação de recursos - Quando múltiplos usuários ou múltiplos trabalhos estão em execução simultaneamente, os recursos devem ser
alocado para cada um deles
Muitos tipos de recursos - Alguns (como ciclos de CPU, memória principal e armazenamento de arquivos) podem ter especiais
código de alocação, outros (como dispositivos de E/S) podem ter código geral de solicitação e liberação
Contabilidade - Para acompanhar quais usuários utilizam quanto e que tipos de recursos computacionais.
Proteção e segurança - Os proprietários das informações armazenadas em um computador multiusuário ou em rede
o sistema pode querer controlar o uso dessa informação, processos concorrentes não devem interferir uns com os outros
outro
A proteção envolve garantir que todo o acesso aos recursos do sistema seja controlado.
A segurança do sistema contra invasores requer autenticação do usuário, se estende à defesa externa
Dispositivos de I/O de tentativas de acesso inválidas
Se um sistema deve ser protegido e seguro, precauções devem ser instituídas em todo ele. Uma corrente é apenas tão forte quanto...
forte como seu elo mais fraco.
12
A interface gráfica do Mac OS X
Chamadas de Sistema
13
Exemplo de API Padrão
Considere a função ReadFile() no
Win32 API—uma função para ler de um arquivo
A interface de chamada do sistema invoca a chamada de sistema pretendida no núcleo do sistema operacional e retorna o status da chamada de sistema
e quaisquer valores de retorno
O chamador não precisa saber nada sobre como a chamada do sistema é implementada.
Apenas precisa obedecer à API e entender o que o sistema operacional fará como resultado da chamada.
A maioria dos detalhes da interface do sistema operacional é oculta do programador pela API
Gerenciado pela biblioteca de suporte em tempo de execução (conjunto de funções incorporadas às bibliotecas incluídas com
compilador)API – Chamada de Sistema – Relação com o SO
Figura 2.2 O manuseio de uma aplicação de usuário invocando a chamada de sistema open()
14
Exemplo da Biblioteca Padrão C
15
Tipos de Chamadas de Sistema
Controle de processo
Gerenciamento de arquivos
Gerenciamento de dispositivos
Manutenção de informações
Comunicações
Proteção
16
Programas do Sistema
Os programas de sistema fornecem um ambiente conveniente para o desenvolvimento e execução de programas. Eles podem ser
dividido em:
Manipulação de arquivos
Informações de status
Modificação de arquivo
Suporte a linguagens de programação
Carregamento e execução do programa
Comunicações
Application programs
Most users’ view of the operation system is defined by system programs, not the actual system calls
Fornecer um ambiente conveniente para o desenvolvimento e execução de programas
Alguns deles são simplesmente interfaces de usuário para chamadas de sistema; outros são consideravelmente mais complexos
Gerenciamento de arquivos - Criar, deletar, copiar, renomear, imprimir, despejar, listar e manipular arquivos em geral
diretórios
Informação de status
Alguns pedem ao sistema informações - data, hora, quantidade de memória disponível, espaço em disco, número de usuários
Outros fornecem informações detalhadas sobre desempenho, registro e depuração
Normalmente, esses programas formatam e imprimem a saída no terminal ou em outros dispositivos de saída.
Alguns sistemas implementam um registro - usado para armazenar e recuperar informações de configuração
Modificação de arquivo
Editores de texto para criar e modificar arquivos
Comandos especiais para pesquisar conteúdos de arquivos ou realizar transformações do texto
Suporte a linguagens de programação - Compiladores, montadores, depuradores e interpretadores
às vezes fornecido
Carregamento e execução de programas - Carregadores absolutos, carregadores relocáveis, editores de ligação e sobreposição -
carregadores, sistemas de depuração para linguagens de alto nível e de máquina
Comunicações - Fornecer o mecanismo para criar conexões virtuais entre processos, usuários,
e sistemas de computador
Permitir que os usuários enviem mensagens para as telas uns dos outros, naveguem em páginas da web, enviem e-mail eletrônico
messages, log in remotely, transfer files from one machine to another
Projeto e Implementação de Sistemas Operacionais
Design e Implementação de OS não é "solucionável", mas algumas abordagens têm se mostrado bem-sucedidas
A estrutura interna de diferentes sistemas operacionais pode variar amplamente
Comece definindo metas e especificações
Afetado pela escolha de hardware, tipo de sistema
Usergoals andSystemgoals
User goals – operating system should be convenient to use, easy to learn, reliable, safe, and fast
Objetivos do sistema - o sistema operacional deve ser fácil de projetar, implementar e manter, bem como
flexível, confiável, sem erros e eficiente
Princípio importante para separar
Policy:What will be done?
Mecanismo: Como fazer isso?
Mecanismos determinam como fazer algo, políticas decidem o que será feito
A separação da política do mecanismo é um princípio muito importante, pois permite máxima flexibilidade.
se as decisões de política devem ser alteradas posteriormente
17
Estrutura do Sistema Operacional
Estrutura Simples
MS-DOS - escrito para fornecer a maior funcionalidade com o menor
espaço Não dividido em módulos
Embora o MS-DOS tenha alguma estrutura, suas interfaces e níveis de funcionalidade não estão bem separados.
Abordagem em Camadas
O sistema operacional é dividido em várias camadas (níveis), cada uma construída sobre camadas inferiores. O
a camada inferior (camada 0) é o hardware; a mais alta (camada N) é a interface do usuário.
Com modularidade, as camadas são selecionadas de forma que cada uma utiliza funções (operações) e serviços de apenas
camadas de nível inferior
18
UNIX
UNIX - limitado pela funcionalidade de hardware, o sistema operacional UNIX original tinha limitação de estrutura.
O sistema operacional UNIX consiste em duas partes separáveis
Programas de sistema
O núcleo
Consiste em tudo abaixo da interface de chamada de sistema e acima do hardware físico
Fornece o sistema de arquivos, agendamento de CPU, gerenciamento de memória e outros componentes do sistema operacional
funções; um grande número de funções para um nível
More secure
Detriments:
Sobrecarga de desempenho da comunicação do espaço do usuário para o espaço do kernel
19
Módulos
Máquinas Virtuais
Uma máquina virtual leva a abordagem em camadas à sua conclusão lógica. Ela trata o hardware e o
operating system kernel as though they were all hardware
Uma máquina virtual fornece uma interface idêntica ao hardware básico subjacente.
O sistema operacional host cria a ilusão de que um processo tem seu próprio processador e (virtual
memória) Cada convidado fornecido com uma cópia (virtual) do computador subjacente
20
"Formato de Máquina Virtual Aberta", formato padrão de máquinas virtuais, permite que uma VM funcione em muitas
diferentes plataformas de máquinas virtuais (host)
Paravirtualização
Apresenta ao convidado um sistema semelhante, mas não idêntico ao hardware
O convidado deve ser modificado para rodar em hardware paravirtualizado.
O convidado pode ser um SO, ou no caso de aplicativos Solaris 10 executando em contêineres
Solaris 10 com Dois Contêineres
Arquitetura VMware
22
Geração de Sistema Operacional
Sistemas operacionais são projetados para rodar em qualquer uma de uma classe de máquinas; o sistema deve ser configurado para
cada site de computador específico
O programa SYSGEN obtém informações sobre a configuração específica do hardware
inicialização do sistema – iniciando um computador ao carregar o kernel
Programa de inicialização - código armazenado em ROM que é capaz de localizar o kernel, carregá-lo na memória e iniciar.
sua execução
Inicialização do Sistema
O sistema operacional deve ser disponibilizado ao hardware para que o hardware possa iniciá-lo.
Pequeno trecho de código - carregador bootstrap, localiza o kernel, carrega-o na memória e o inicia
Às vezes, um processo de dois passos onde o bloco de inicialização em uma localização fixa carrega o carregador de bootstrap.
Quando a energia é inicializada no sistema, a execução começa em um local de memória fixo onde o firmware é usado para manter.
código de inicialização
Conceito de Processo
Um sistema operacional executa uma variedade de programas:
Sistema em lote – trabalhos
Sistemas de tempo compartilhado - programas ou tarefas do usuário
Process State
23
Figura 3.2 Diagrama do Estado do Processo
24
Filas de Agendamento de Processos
25
Agendadores
Escalonador de longo prazo (ou escalonador de trabalhos) – seleciona quais processos devem ser trazidos para o estado pronto
queue
Escalonador de curto prazo (ou escalonador de CPU) – seleciona qual processo deve ser executado a seguir e
aloca CPU
O escalonador de curto prazo é invocado com muita frequência (milissegundos) Þ (deve ser rápido)
O escalonador de longo prazo é invocado com pouca frequência (segundos, minutos) Þ (pode ser lento)
The long-term scheduler controls thedegree of multiprogramming
Os processos podem ser descritos como:
Processos vinculados a I/O – passam mais tempo fazendo I/O do que computações, muitos pequenos picos de CPU
Processos dependentes da CPU - passam mais tempo realizando cálculos; poucos e muito longos picos de CPU
Troca de contexto
Quando a CPU troca para outro processo, o sistema deve salvar o estado do processo antigo e carregar o
estado salvo para o novo processo via uma troca de contexto
O contexto de um processo representado no PCB O tempo de troca de contexto é sobrecarga; o
o sistema não realiza trabalho útil enquanto troca dependente do tempo com o hardware
apoio
Criação de Processo
O processo pai cria processos filhos, que, por sua vez, criam outros processos, formando uma árvore de
processos
Geralmente, o processo é identificado e gerenciado por meio de um identificador de processo (pid)
Compartilhamento de recursos
Os pais e os filhos compartilham todos os recursos
As crianças compartilham um subconjunto dos recursos dos pais
Pais e filhos não compartilham recursos
Execução
Pai e filhos executam concorrentemente
Os pais esperam até que as crianças terminem
Espaço de endereço
Cópia duplicada do pai
A criança tem um programa carregado nele
26
Exemplos de UNIX
a chamada do sistema fork cria um novo processo
chamada execsystem usada após um fork para substituir o espaço de memória do processo por um novo programa
int main()
{
pid_t pid;
/* criar outro processo */
pid = fork();
se (pid < 0) { /* ocorreu um erro */
fprintf(stderr, "Falha ao criar processo");
sair(-1);
}
senão se (pid == 0) { /* processo filho */
execlp("/bin/ls", "ls", NULL);
}
outro { /* processo pai */ }
/* o pai vai esperar o filho terminar */
esperar (NULL);
printf ("Filho Completo");
sair(0);
}
}
27
Figura 3.8 Uma árvore de processos em um Solaris típico
ProcessTermination
O processo executa a última instrução e solicita ao sistema operacional que a delete (saia)
Saída de dados do filho para o pai (via wait)
Os recursos do processo são desalocados pelo sistema operacional
O pai pode terminar a execução dos processos filhos (abortar)
A criança excedeu os recursos alocados
A tarefa atribuída à criança não é mais necessária
Se o pai estiver saindo, alguns sistemas operacionais não permitem que o filho continue se seu pai
termina Todos os filhos terminados -terminação em cascata
Comunicação Interprocessos
Os processos dentro de um sistema podem ser independentes ou cooperantes
O processo de cooperação pode afetar ou ser afetado por outros processos, incluindo o compartilhamento de dados.
Razões para cooperar com processos:
Compartilhamento de informações
Aceleração de computação
Modularidade
Conveniência
Processos cooperantes precisam de comunicação entre processos (IPC)
Dois modelos de IPC
Memória compartilhada
Troca de mensagens
Processos Cooperativos
Processo independente não pode afetar ou ser afetado pela execução de outro processo
Processos cooperantes podem afetar ou ser afetados pela execução de outro processo
Vantagens da cooperação entre processos
Compartilhamento de informações
Aceleração da computação
Modularidade
Conveniência
28
Problema Produtor-Consumidor
Paradigma para processos cooperantes, o processo produtor gera informações que são consumidas por um
processo de consumo
o buffer sem limites não impõe um limite prático ao tamanho do
o buffer de tamanho fixo assume que há um tamanho de buffer fixo
Buffer Limitado – Solução de Memória Compartilhada
Dados compartilhados
#define TAMANHO_DO_BUFFER 10
typedef struct {
...
}
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
A solução está correta, mas só pode usar elementos BUFFER_SIZE-1
Bounded-Buffer – Producer
enquanto (verdadeiro) {
Produzir um item
enquanto (((in = (in + 1) % TAMANHO DO BUFFER contagem) == out)
;/* não fazer nada -- sem buffers livres
*/ buffer[in] = item;
(in + 1) % TAMANHO DO BUFFER;
}
29
Direct Communication
Os processos devem se nomear explicitamente uns aos outros:
send(P,mensagem) – enviar uma mensagem para o processo P
receber(Q, mensagem) – receber uma mensagem do processo Q
Propriedades do link de comunicação Os links são estabelecidos
automaticamente
Um link está associado a exatamente um par de processos em comunicação.
Entre cada par, existe exatamente um link
O link pode ser unidirecional, mas geralmente é bidirecional
Comunicação Indireta
As mensagens são direcionadas e recebidas de caixas de correio (também referidas como portas)
Cada caixa de correio tem um ID único
Os processos só podem se comunicar se compartilharem um
Propriedades da caixa de correio do link de comunicação
Link estabelecido apenas se os processos compartilharem uma caixa de correio comum
Um link pode estar associado a muitos processos
Cada par de processos pode compartilhar vários links de comunicação
O link pode ser unidirecional ou bidirecional Operações
30
Carregando
Fila de mensagens anexada ao link; implementada de uma das três maneiras
1. Capacidade zero – 0 mensagens
31
Chamadas de Procedimento Local no Windows XP
32
Execução de RPC
Marshalling de Parâmetros
33